日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

kfold参数_kinfolk中文版(selection.KFold)

發布時間:2023/12/24 综合教程 32 生活家
生活随笔 收集整理的這篇文章主要介紹了 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)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。