机器学习好伙伴之scikit-learn的使用——训练集与测试集的划分
从今天开始就要学习scikit-learn的使用了,要加油噢。
什么是训练集与测试集
全部数据进行数据拆分后可以得到训练集与测试集。
训练集:代表用于训练模型的子集。
测试集:代表用于测试训练后模型的子集。
其分开的意义相当于将作业与考试分开,作业相当于训练集,考试相当于测试集,平时状态下,学生用作业进行训练,利用考试进行打分。
其分开比例常常为:
训练/测试 = 7/3。
划分常用函数train_test_split()
利用如下函数,可以载入相关模块:
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
)
其中常用参数为:
1、train_data:进行划分的样本的特征集合
2、train_target:进行划分的样本的标签集合
3、test_size:在0-1之间时,表示测试样本占比;是整数的话,就代表测试样本的数量。
4、random_state:随机数的种子。
随机数种子指的是该组随机数的编号,在需要重复试验的时候,保证得到一组一样的随机数。
假设random_state = 1,其他参数一样的情况下,随机数组是一样的。
但填0或不填,每次都不一样。
随机数的产生取决于种子:
种子不同,产生不同的随机数;
种子相同,即使实例不同也产生相同的随机数。
应用示例
实现代码为:
import numpy as np
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
# 用于获取iris花的分类样本
iris = datasets.load_iris()
# 取得特征
iris_X = iris.data
# 取得标签
iris_Y = iris.target
# 进行数据集划分
X_train, X_test, y_train, y_test = train_test_split(iris_X, iris_Y, test_size=0.3)
# 利用K聚类算法进行分类
knn = KNeighborsClassifier()
knn.fit(X_train, y_train)
print(y_test)
print(knn.predict(X_test))
实验结果为:
[0 2 1 1 1 1 1 1 1 2 0 1 1 2 0 1 2 0 0 2 2 2 1 2 1 2 2 1 1 0 2 2 1 2 1 2 0
2 0 1 0 0 1 2 0]
[0 2 1 1 1 1 1 1 2 2 0 2 1 2 0 1 2 0 0 2 2 2 1 2 1 2 2 1 1 0 2 2 2 2 1 2 0
2 0 1 0 0 1 2 0]
由此可见具有一定的准确度。