kfold参数_kinfolk中文版(selection.KFold)
最近使用到了skearn做數據集的處理,記錄一下這兩個個比較重要的函數:KFold與StratifiedKFold,作用是在機器學習中進行交叉驗證來使用
這兩個函數都是sklearn模塊中的,在應用之前應該導入:
from sklearn.model_selection import StratifiedKFold,KFold
兩者的區別:StratifiedKFold函數采用分層劃分的方法(分層隨機抽樣思想),驗證集中不同類別占比與原始樣本的比例保持一致,故StratifiedKFold在做劃分的時候需要傳入標簽特征。
下面分別對這兩個函數進行舉例子說明:
1、KFold函數
參數說明:
n_splits: 默認為3,表示將數據劃分為多少份,即k折交叉驗證中的k;
shuffle: 默認為False,表示是否需要打亂順序,這個參數在很多的函數中都會涉及,如果設置為True,則會先打亂順序再做劃分,如果為False,會直接按照順序做劃分;
random_state: 默認為None,表示隨機數的種子,只有當shuffle設置為True的時候才會生效。
代碼:
import numpy as np
from sklearn.model_selection import KFold,StratifiedKFold
X = np.array([[1, 2], [3, 4], [1, 2], [3, 4],[5,9],[1,5],[3,9],[5,8],[1,1],[1,4]])
y = np.array([0, 1, 1, 1, 0, 0, 1, 0, 0, 0])
print('X:',X)
print('y:',y)
seed = 7
np.random.seed(seed)
kf = KFold(n_splits=3, shuffle=False)
print(kf)
#做split時只需傳入數據,不需要傳入標簽
for train_index, test_index in kf.split(X):
print("TRAIN:", train_index, "TEST:", test_index)
X_train, X_test = X[train_index], X[test_index]
y_train, y_test = y[train_index], y[test_index]
結果輸出:
X: [[1 2]
[3 4]
[1 2]
[3 4]
[5 9]
[1 5]
[3 9]
[5 8]
[1 1]
[1 4]]
y: [0 1 1 1 0 0 1 0 0 0]
KFold(n_splits=3, random_state=None, shuffle=False)
TRAIN: [4 5 6 7 8 9] TEST: [0 1 2 3]
TRAIN: [0 1 2 3 7 8 9] TEST: [4 5 6]
TRAIN: [0 1 2 3 4 5 6] TEST: [7 8 9]
輸出說明:
大家注意到,輸出中每個Train和Test都對應三個結果,是因為我們在調用函數是,參數n_splits=3,即交叉驗證三次。其中的數字只是對應索引,并不是真正的數據,比如第一行TEST: [0 1 2 3]代表著:測試集選取了X[0,1,2,3]即對應:
[1 2]
[3 4]
[1 2]
[3 4]
其他同理。
1、StratifiedKFold函數
StratifiedKFold函數的參數與KFold相同。
import numpy as np
from sklearn.model_selection import KFold,StratifiedKFold
X = np.array([[1, 2], [3, 4], [1, 2], [3, 4],[5,9],[1,5],[3,9],[5,8],[1,1],[1,4]])
y = np.array([0, 1, 1, 1, 0, 0, 1, 0, 0, 0])
print('X:',X)
print('y:',y)
skf = StratifiedKFold(n_splits=4)
print(skf)
#做劃分是需要同時傳入數據集和標簽
for train_index, test_index in skf.split(X, y):
print('TRAIN:', train_index, "TEST:", test_index)
X_train, X_test = X[train_index], X[test_index]
y_train, y_test = y[train_index], y[test_index]
結果輸出:
X: [[1 2]
[3 4]
[1 2]
[3 4]
[5 9]
[1 5]
[3 9]
[5 8]
[1 1]
[1 4]]
y: [0 1 1 1 0 0 1 0 0 0]
StratifiedKFold(n_splits=4, random_state=None, shuffle=False)
TRAIN: [2 3 5 6 7 8 9] TEST: [0 1 4]
TRAIN: [0 1 3 4 6 8 9] TEST: [2 5 7]
TRAIN: [0 1 2 4 5 6 7 9] TEST: [3 8]
TRAIN: [0 1 2 3 4 5 7 8] TEST: [6 9]
參考文章:https://zhuanlan.zhihu.com/p/150446294
總結
以上是生活随笔為你收集整理的kfold参数_kinfolk中文版(selection.KFold)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java怎么输入字符_java怎么输入一
- 下一篇: dnf哈林轻甲搭配首饰(DNF装备搭配计