91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python實現K折交叉驗證出現的問題以及KFold和StratifiedKFold的區別是什么

發布時間:2021-12-04 09:09:42 來源:億速云 閱讀:202 作者:柒染 欄目:云計算

本篇文章給大家分享的是有關python實現K折交叉驗證出現的問題以及KFold和StratifiedKFold的區別是什么,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

訓練集和測試集的劃分方法很大程度上影響最終的模型與參數的值。一般情況將K折交叉驗證用于模型調優,找到使得模型泛化性能最優的超參值,同時可以測試當前模型算法的性能
python實現K折交叉驗證出現的問題以及KFold和StratifiedKFold的區別是什么
k值大時,在每次迭代過程中將會有更多的數據用于模型訓練,能夠得到最小偏差,同時算法時間延長。
k值小時,降低模型在不同的數據塊上進行重復擬合的性能評估的計算成本,在平均性能的基礎上獲得模型的準確評估。

二折實現代碼

通常用以下模塊實現

from sklearn.model_selection import KFold,StratifiedKFold

StratifiedKFold參數說明:

class sklearn.model_selection.StratifiedKFold(n_splits=’warn’, shuffle=False, random_state=None)n_splits:表示幾折(折疊的數量)shuffle== True:選擇是否在分割成批次之前對數據的每個分層進行打亂。   供5次2折使用,這樣每次的數據是進行打亂的,否則,每次取得的數據是相同的random_state:控制隨機狀態,隨機數生成器使用的種子

兩注意點:
1.kf.split(x)返回的是數據集的索引,需要x[train_index]才能提取數據
2.shuffle=True時,shuffle(洗牌的意思),每次run代碼是,隨機取得的索引是不同的。反之,所以不變。

import numpy as npfrom sklearn.model_selection import KFold,StratifiedKFold
x = np.array([[1, 1], [2, 2], [3, 3], [4, 4],[5,5],[6,6]])kf = KFold(n_splits=2,shuffle=True)for train_index, test_index in kf.split(x):print('train_index:', train_index)print("train_data:",x[train_index])print('test_index', test_index)print("--------二折時,測試集變成了訓練集分割線--------")train_index: [1 2 3]train_data: [[2 2]
 [3 3]
 [4 4]]test_index [0 4 5]--------二折時,測試集變成了訓練集分割線--------train_index: [0 4 5]train_data: [[1 1]
 [5 5]
 [6 6]]test_index [1 2 3]--------二折時,測試集變成了訓練集分割線--------

KFold和StratifiedKFold的區別

Stratified是分層采樣的意思,確保訓練集,測試集中各類別樣本的比例與原始數據集中相同。
下面這個例子6個數據對應6個標簽,我們分成三折,則每次訓練時,4個數據為train,2個數據為test。

StratifiedKFold能保證樣本的比例與原始數據集中相同,即不會出現train_index=[0,1,2,3] train_label=[1,1,1,0]
test_index=[4,5] test_label=[0,0]-----數據分布偏頗現象

import numpy as npfrom sklearn.model_selection import KFold,StratifiedKFold

x = np.array([[1, 1], [2, 2], [3, 3], [4, 4],[5,5],[6,6]])y=np.array([1,1,1,0,0,0])kf = StratifiedKFold(n_splits=3,shuffle=True)for train_index, test_index in kf.split(x,y):print('train_index:', train_index)print('test_index', test_index)print("--------二折時,測試集成了訓練集分割線--------")train_index: [0 1 4 5]test_index [2 3]--------二折時,測試集成了訓練集分割線--------train_index: [0 2 3 5]test_index [1 4]--------二折時,測試集成了訓練集分割線--------train_index: [1 2 3 4]test_index [0 5]--------二折時,測試集成了訓練集分割線--------

random_state(隨機狀態)

為什么需要用到這樣一個參數random_state(隨機狀態)?

1、在構建模型時:
forest = RandomForestClassifier(n_estimators=100, random_state=0)forest.fit(X_train, y_train)2、在生成數據集時:
X, y = make_moons(n_samples=100, noise=0.25, random_state=3)3、在拆分數據集為訓練集、測試集時:
X_train, X_test, y_train, y_test = train_test_split(cancer.data, cancer.target, stratify=cancer.target, random_state=42)

如果不設置random_state的話,則每次構建的模型是不同的。
每次生成的數據集是不同的,每次拆分出的訓練集、測試集是不同的,所以根據需求而定。

以上就是python實現K折交叉驗證出現的問題以及KFold和StratifiedKFold的區別是什么,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

河南省| 呈贡县| 太保市| 黑龙江省| 洛南县| 黑水县| 阳朔县| 五华县| 罗田县| 永清县| 桑植县| 东兰县| 阿拉尔市| 宜君县| 天镇县| 田林县| 阳西县| 绥德县| 津南区| 江西省| 曲阳县| 蛟河市| 吉林市| 浮梁县| 托克逊县| 永仁县| 贵定县| 西宁市| 定边县| 黄平县| 衢州市| 卢湾区| 武强县| 虞城县| 上林县| 盐亭县| 祥云县| 怀来县| 衡南县| 通州区| 隆林|