当前位置:   article > 正文

交叉验证 StratifiedKFold

交叉验证 StratifiedKFold

StratifiedKFold函数采用分层划分的方法(分层随机抽样思想),验证集中不同类别占比与原始样本的比例保持一致,故StratifiedKFold在做划分的时候需要传入标签特征。

1、KFold函数

KFold函数共有三个参数:

n_splits:默认为3,表示将数据划分为多少份,即k折交叉验证中的k;

shuffle:默认为False,表示是否需要打乱顺序,这个参数在很多的函数中都会涉及,如果设置为True,则会先打乱顺序再做划分,如果为False,会直接按照顺序做划分;

random_state:默认为None,表示随机数的种子,只有当shuffle设置为True的时候才会生效。

  1. import numpy as np
  2. from sklearn.model_selection import KFold,StratifiedKFold
  3. X = np.array([[1, 2], [3, 4], [1, 2], [3, 4],[5,9],[1,5],[3,9],[5,8],[1,1],[1,4]])
  4. y = np.array([0, 1, 1, 1, 0, 0, 1, 0, 0, 0])
  5. print('X:',X)
  6. print('y:',y)
  7. kf = KFold(n_splits=2 ,random_state=2020)
  8. print(kf)
  9. #做split时只需传入数据,不需要传入标签
  10. for train_index, test_index in kf.split(X):
  11. print("TRAIN:", train_index, "TEST:", test_index)
  12. X_train, X_test = X[train_index], X[test_index]
  13. y_train, y_test = y[train_index], y[test_index]

输出结果为:

KFold结果

2、StratifiedKFold

StratifiedKFold函数的参数与KFold相同。

  1. import numpy as np
  2. from sklearn.model_selection import KFold,StratifiedKFold
  3. X = np.array([[1, 2], [3, 4], [1, 2], [3, 4],[5,9],[1,5],[3,9],[5,8],[1,1],[1,4]])
  4. y = np.array([0, 1, 1, 1, 0, 0, 1, 0, 0, 0])
  5. print('X:',X)
  6. print('y:',y)
  7. skf = StratifiedKFold(n_splits=2,random_state=2020, shuffle=False)
  8. print(skf)
  9. #做划分是需要同时传入数据集和标签
  10. for train_index, test_index in skf.split(X, y):
  11. print('TRAIN:', train_index, "TEST:", test_index)
  12. X_train, X_test = X[train_index], X[test_index]
  13. y_train, y_test = y[train_index], y[test_index]

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
  

闽ICP备14008679号