Python实现将数据集分成训练集与测试集
1. 数据为csv格式
- 从UCI网址下载 Iris.data文件,直接改后缀名为.csv即可
- 安装pandas命令: pip install pandas
import pandas as pd
import numpy as np
def getTrainSet(self):
dataSet = pd.read_csv('Iris.csv')
dataSetNP = np.array(dataSet) #将数据由dataframe类型转换为数组类型
np.random.shuffle(dataSetNP) #将数组随机打乱
trainData = dataSetNP[:120, :dataSetNP.shape[1] - 1] #生成训练集,前120行
labels = dataSetNP[:120, dataSetNP.shape[1] - 1] #训练集样本对应的标签
testData = dataSetNP[120:, :dataSetNP.shape[1] - 1] #测试集
testlabels = dataSetNP[120:, dataSetNP.shape[1] - 1] #测试集样本对应的标签
return trainData, labels, testData, testlabels
其中
np.random.shuffle(dataSetNP) #将数组随机打乱
Iris的原始数据集是按类标签排好序的,直接按前120行做训练集,后30行做测试集是不太妥当的,因此可以选择先将数据集对应的数组按行打乱
或生成不规则的测试集
testData = dataSetNP[0:150:5, :dataSetNP.shape[1] - 1] #测试集
testlabels = dataSetNP[0:150:5, dataSetNP.shape[1] - 1] #测试集样本对应的标签