学习笔记:使用python将数据集划分成测试集和训练集

遇到一个划分数据集的问题,所以手动仿照sklearn库的划分函数写了一个函数。

环境:Windows 7,PyCharm,Python 3.6,numpy1.14.2+mkl

调用sklearn库的划分函数如下

其中train_data为训练输入的数据,train_target为数据类别,test_size为测试集占数据集的比例,random_state为随机数种子

from sklearn.model_selection import train_test_split
x_train,x_test, y_train, y_test = train_test_split(train_data,train_target,test_size=0.3, random_state=0)

第一条语句是导入sklearn库中的train_test_split函数的语句,第二条是划分语句。

除numpy外不调任何函数库的手写版

#将数据集按比例随机分为训练集和测试集
def trainTestSplit(trainingSet, trainingLabels, train_size):
    totalNum = int(len(trainingSet))
    trainIndex = list(range(totalNum))#存放训练集的下标
    testIndex = []  #用于存放测试集的下标
    x_test = []     #存放测试集输入
    y_test= []      #存放测试集输出
    x_train = []    #存放训练集输入
    y_train = []    #存放训练集输出
    trainNum = int(totalNum * train_size) #划分训练集的样本数
    for i in range(trainNum):
        randomIndex = int(random.uniform(0,len(trainIndex)))
        x_test.append(trainingSet[randomIndex])
        y_test.append(trainingLabels[randomIndex])
        del(trainIndex[randomIndex])#删除已经放入测试集的下标
    for i in range(totalNum-trainNum):
        x_train.append(trainingSet[trainIndex[i]])
        y_train.append(trainingLabels[trainIndex[i]])
    #column_stack将两个矩阵进行组合连接
    train = column_stack([x_train, y_train])
    test = column_stack([x_test, y_test])
    #将分类好的数据集分开保存,分隔符为,
    savetxt('train.txt', train, delimiter=',')
    savetxt('test.txt', test, delimiter=',')
    return x_train, x_test, y_train, y_test

这几天才刚学的Python,写的代码可能有很多不足的地方。比如,测试集和训练集中,没有考虑样本标签的比例等等

所以,能调库还是调库吧......

参考博客 https://blog.csdn.net/xidianliutingting/article/details/53463033?locationNum=6&fps=1

               https://blog.csdn.net/u010801439/article/details/79555857

猜你喜欢

转载自blog.csdn.net/folk_/article/details/80208557