我们在进行机器学习的时候,有时得到的数据都是按顺序排列的。比如:
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
2 2]
利用留出法讲数据分成训练集和验证集,你会发现留出验证集标签都是[2],不利于学习。
下面是两种打乱数据的方法:
permutation传入参数要打乱数组的长度,返回原数组索引的乱序,不改变原数组顺序。
二、利用sklearn的train_test_split
fromsklearnimportdatasets
fromsklearn.model_selection \
importtrain_test_split
iris=datasets.load_iris()
X_train, X_test, y_train, y_test=\
train_test_split(
iris['data'],
iris['target'],
test_size=0.4,
random_state=)
第一个参数:所要划分的样本特征集
第二个参数: 所要划分的样本结果
第三个参数: 样本占比,如果是整数的话就是样本的数量。默认0.25,即75%训练数据,25%测试数据。
第四个参数:随机数生成器的种子,相同种子生成的函数结果相同。
领取专属 10元无门槛券
私享最新 技术干货