一、交叉验证
交叉验证的基本思想是把在某种意义下将原始数据(dataset)进行分组,一部分做为训练集(train set),另一部分做为验证集(validation set or test set),首先用训练集对分类器进行训练,再利用验证集来测试训练得到的模型(model),以此来做为评价分类器的性能指标。–来自百科
二、K折交叉验证
KFold()方法
KFold()
: KFold 将所有的样例划分为 k 个组,称为折叠 (fold) ,每组数据都具有相同的大小。每一次分割会将其中的 K-1 组作为训练数据,剩下的一组用作测试数据,一共会分割K次。
可以通过这张图只管的体现出来。(这是四折交叉验证,即K取4)
代码示例如下:
import numpy as np
from sklearn.model_selection import KFold
X=np.array([[1,2],[3,4],[5,6],[7,8],[9,10],[11,12]])
y=np.array([1,2,3,4,5,6])
kf=KFold(n_splits=4) # 定义分成几个组
#for循环中的train_index与test_index是索引而并非我们的训练数据
for train_index,test_index in kf.split(X):
print("Train Index:",train_index,",Test Index:",test_index)
X_train,X_test=X[train_index],X[test_index]
y_train,y_test=y[train_index],y[test_index]
StratifiedKFold()方法
StratifiedKFold
: 是KFold()的变种,采用分层分组的形式(有点类似分层抽样), 使每个分组中各类别的比例 同整体数据中各类别的比例尽可能的相同。(它相对于KFold()方法更完善)
代码示例如下:
import numpy as np
from sklearn.model_selection import StratifiedKFold
X=np.array([[1,2],[3,4],[5,6],[7,8],[9,10],[11,12]])
y=np.array([1,1,1,2,2,2])
skf=StratifiedKFold(n_splits=4)
#for循环中的train_index与test_index是索引而并非我们的训练数据
for train_index,test_index in skf.split(X,y):
print("Train Index:",train_index,",Test Index:",test_index)
X_train,X_test=X[train_index],X[test_index]
y_train,y_test=y[train_index],y[test_index]
【机器学习100天目录】
【机器学习第3天:预测汽车的燃油效率】
【机器学习第4天:预测1立方米混凝土抗压强度】
【机器学习第5天:逻辑回归】
【机器学习第6天:乳腺癌肿瘤预测】
如有错误欢迎指教,有问题的可以加入QQ群(1149530473)向我提问,关注微信公众号(明天依旧可好)和我同步学习。