欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > sklearn中的交叉驗證的實現(Cross-Validation)

sklearn中的交叉驗證的實現(Cross-Validation)

熱門標簽:400電話辦理費用收費 申請辦個400電話號碼 深圳網絡外呼系統代理商 柳州正規電銷機器人收費 騰訊地圖標注有什么版本 高德地圖標注字母 鎮江人工外呼系統供應商 千呼ai電話機器人免費 外呼系統前面有錄音播放嗎

sklearn是利用python進行機器學習中一個非常全面和好用的第三方庫,用過的都說好。今天主要記錄一下sklearn中關于交叉驗證的各種用法,主要是對sklearn官方文檔 Cross-validation: evaluating estimator performance進行講解,英文水平好的建議讀官方文檔,里面的知識點很詳細。

先導入需要的庫及數據集

In [1]: import numpy as np

In [2]: from sklearn.model_selection import train_test_split

In [3]: from sklearn.datasets import load_iris

In [4]: from sklearn import svm

In [5]: iris = load_iris()

In [6]: iris.data.shape, iris.target.shape
Out[6]: ((150, 4), (150,))

1.train_test_split

對數據集進行快速打亂(分為訓練集和測試集)

這里相當于對數據集進行了shuffle后按照給定的test_size 進行數據集劃分。

In [7]: X_train, X_test, y_train, y_test = train_test_split(
  ...:     iris.data, iris.target, test_size=.4, random_state=0)
  #這里是按照6:4對訓練集測試集進行劃分

In [8]: X_train.shape, y_train.shape
Out[8]: ((90, 4), (90,))

In [9]: X_test.shape, y_test.shape
Out[9]: ((60, 4), (60,))

In [10]: iris.data[:5]
Out[10]: 
array([[ 5.1, 3.5, 1.4, 0.2],
    [ 4.9, 3. , 1.4, 0.2],
    [ 4.7, 3.2, 1.3, 0.2],
    [ 4.6, 3.1, 1.5, 0.2],
    [ 5. , 3.6, 1.4, 0.2]])

In [11]: X_train[:5]
Out[11]: 
array([[ 6. , 3.4, 4.5, 1.6],
    [ 4.8, 3.1, 1.6, 0.2],
    [ 5.8, 2.7, 5.1, 1.9],
    [ 5.6, 2.7, 4.2, 1.3],
    [ 5.6, 2.9, 3.6, 1.3]])

In [12]: clf = svm.SVC(kernel='linear', C=1).fit(X_train, y_train)

In [13]: clf.score(X_test, y_test)
Out[13]: 0.96666666666666667

2.cross_val_score

對數據集進行指定次數的交叉驗證并為每次驗證效果評測

其中,score 默認是以 scoring='f1_macro'進行評測的,余外針對分類或回歸還有:


這需要from sklearn import metrics ,通過在cross_val_score 指定參數來設定評測標準;
cv 指定為int 類型時,默認使用KFoldStratifiedKFold 進行數據集打亂,下面會對KFoldStratifiedKFold 進行介紹。

In [15]: from sklearn.model_selection import cross_val_score

In [16]: clf = svm.SVC(kernel='linear', C=1)

In [17]: scores = cross_val_score(clf, iris.data, iris.target, cv=5)

In [18]: scores
Out[18]: array([ 0.96666667, 1.    , 0.96666667, 0.96666667, 1.    ])

In [19]: scores.mean()
Out[19]: 0.98000000000000009

除使用默認交叉驗證方式外,可以對交叉驗證方式進行指定,如驗證次數,訓練集測試集劃分比例等

In [20]: from sklearn.model_selection import ShuffleSplit

In [21]: n_samples = iris.data.shape[0]

In [22]: cv = ShuffleSplit(n_splits=3, test_size=.3, random_state=0)

In [23]: cross_val_score(clf, iris.data, iris.target, cv=cv)
Out[23]: array([ 0.97777778, 0.97777778, 1.    ])

cross_val_score 中同樣可使用pipeline 進行流水線操作

In [24]: from sklearn import preprocessing

In [25]: from sklearn.pipeline import make_pipeline

In [26]: clf = make_pipeline(preprocessing.StandardScaler(), svm.SVC(C=1))

In [27]: cross_val_score(clf, iris.data, iris.target, cv=cv)
Out[27]: array([ 0.97777778, 0.93333333, 0.95555556])

3.cross_val_predict

cross_val_predictcross_val_score 很相像,不過不同于返回的是評測效果,cross_val_predict 返回的是estimator 的分類結果(或回歸值),這個對于后期模型的改善很重要,可以通過該預測輸出對比實際目標值,準確定位到預測出錯的地方,為我們參數優化及問題排查十分的重要。

In [28]: from sklearn.model_selection import cross_val_predict

In [29]: from sklearn import metrics

In [30]: predicted = cross_val_predict(clf, iris.data, iris.target, cv=10)

In [31]: predicted
Out[31]: 
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1,
    1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2,
    2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2,
    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])

In [32]: metrics.accuracy_score(iris.target, predicted)
Out[32]: 0.96666666666666667

4.KFold

K折交叉驗證,這是將數據集分成K份的官方給定方案,所謂K折就是將數據集通過K次分割,使得所有數據既在訓練集出現過,又在測試集出現過,當然,每次分割中不會有重疊。相當于無放回抽樣。

In [33]: from sklearn.model_selection import KFold

In [34]: X = ['a','b','c','d']

In [35]: kf = KFold(n_splits=2)

In [36]: for train, test in kf.split(X):
  ...:   print train, test
  ...:   print np.array(X)[train], np.array(X)[test]
  ...:   print '\n'
  ...:   
[2 3] [0 1]
['c' 'd'] ['a' 'b']


[0 1] [2 3]
['a' 'b'] ['c' 'd']

5.LeaveOneOut

LeaveOneOut 其實就是KFold 的一個特例,因為使用次數比較多,因此獨立的定義出來,完全可以通過KFold 實現。

In [37]: from sklearn.model_selection import LeaveOneOut

In [38]: X = [1,2,3,4]

In [39]: loo = LeaveOneOut()

In [41]: for train, test in loo.split(X):
  ...:   print train, test
  ...:   
[1 2 3] [0]
[0 2 3] [1]
[0 1 3] [2]
[0 1 2] [3]


#使用KFold實現LeaveOneOtut
In [42]: kf = KFold(n_splits=len(X))

In [43]: for train, test in kf.split(X):
  ...:   print train, test
  ...:   
[1 2 3] [0]
[0 2 3] [1]
[0 1 3] [2]
[0 1 2] [3]

6.LeavePOut

這個也是KFold 的一個特例,用KFold 實現起來稍麻煩些,跟LeaveOneOut 也很像。

In [44]: from sklearn.model_selection import LeavePOut

In [45]: X = np.ones(4)

In [46]: lpo = LeavePOut(p=2)

In [47]: for train, test in lpo.split(X):
  ...:   print train, test
  ...:   
[2 3] [0 1]
[1 3] [0 2]
[1 2] [0 3]
[0 3] [1 2]
[0 2] [1 3]
[0 1] [2 3]

7.ShuffleSplit

ShuffleSplit 咋一看用法跟LeavePOut 很像,其實兩者完全不一樣,LeavePOut 是使得數據集經過數次分割后,所有的測試集出現的元素的集合即是完整的數據集,即無放回的抽樣,而ShuffleSplit 則是有放回的抽樣,只能說經過一個足夠大的抽樣次數后,保證測試集出現了完成的數據集的倍數。

In [48]: from sklearn.model_selection import ShuffleSplit

In [49]: X = np.arange(5)

In [50]: ss = ShuffleSplit(n_splits=3, test_size=.25, random_state=0)

In [51]: for train_index, test_index in ss.split(X):
  ...:   print train_index, test_index
  ...:   
[1 3 4] [2 0]
[1 4 3] [0 2]
[4 0 2] [1 3]

8.StratifiedKFold

這個就比較好玩了,通過指定分組,對測試集進行無放回抽樣。

In [52]: from sklearn.model_selection import StratifiedKFold

In [53]: X = np.ones(10)

In [54]: y = [0,0,0,0,1,1,1,1,1,1]

In [55]: skf = StratifiedKFold(n_splits=3)

In [56]: for train, test in skf.split(X,y):
  ...:   print train, test
  ...:   
[2 3 6 7 8 9] [0 1 4 5]
[0 1 3 4 5 8 9] [2 6 7]
[0 1 2 4 5 6 7] [3 8 9]

9.GroupKFold

這個跟StratifiedKFold 比較像,不過測試集是按照一定分組進行打亂的,即先分堆,然后把這些堆打亂,每個堆里的順序還是固定不變的。

In [57]: from sklearn.model_selection import GroupKFold

In [58]: X = [.1, .2, 2.2, 2.4, 2.3, 4.55, 5.8, 8.8, 9, 10]

In [59]: y = ['a','b','b','b','c','c','c','d','d','d']

In [60]: groups = [1,1,1,2,2,2,3,3,3,3]

In [61]: gkf = GroupKFold(n_splits=3)

In [62]: for train, test in gkf.split(X,y,groups=groups):
  ...:   print train, test
  ...:   
[0 1 2 3 4 5] [6 7 8 9]
[0 1 2 6 7 8 9] [3 4 5]
[3 4 5 6 7 8 9] [0 1 2]

10.LeaveOneGroupOut

這個是在GroupKFold 上的基礎上混亂度又減小了,按照給定的分組方式將測試集分割下來。

In [63]: from sklearn.model_selection import LeaveOneGroupOut

In [64]: X = [1, 5, 10, 50, 60, 70, 80]

In [65]: y = [0, 1, 1, 2, 2, 2, 2]

In [66]: groups = [1, 1, 2, 2, 3, 3, 3]

In [67]: logo = LeaveOneGroupOut()

In [68]: for train, test in logo.split(X, y, groups=groups):
  ...:   print train, test
  ...:   
[2 3 4 5 6] [0 1]
[0 1 4 5 6] [2 3]
[0 1 2 3] [4 5 6]

11.LeavePGroupsOut

這個沒啥可說的,跟上面那個一樣,只是一個是單組,一個是多組

from sklearn.model_selection import LeavePGroupsOut

X = np.arange(6)

y = [1, 1, 1, 2, 2, 2]

groups = [1, 1, 2, 2, 3, 3]

lpgo = LeavePGroupsOut(n_groups=2)

for train, test in lpgo.split(X, y, groups=groups):
  print train, test
  
[4 5] [0 1 2 3]
[2 3] [0 1 4 5]
[0 1] [2 3 4 5]

12.GroupShuffleSplit

這個是有放回抽樣

In [75]: from sklearn.model_selection import GroupShuffleSplit

In [76]: X = [.1, .2, 2.2, 2.4, 2.3, 4.55, 5.8, .001]

In [77]: y = ['a', 'b','b', 'b', 'c','c', 'c', 'a']

In [78]: groups = [1,1,2,2,3,3,4,4]

In [79]: gss = GroupShuffleSplit(n_splits=4, test_size=.5, random_state=0)

In [80]: for train, test in gss.split(X, y, groups=groups):
  ...:   print train, test
  ...:   
[0 1 2 3] [4 5 6 7]
[2 3 6 7] [0 1 4 5]
[2 3 4 5] [0 1 6 7]
[4 5 6 7] [0 1 2 3]

13.TimeSeriesSplit

針對時間序列的處理,防止未來數據的使用,分割時是將數據進行從前到后切割(這個說法其實不太恰當,因為切割是延續性的。。)

In [81]: from sklearn.model_selection import TimeSeriesSplit

In [82]: X = np.array([[1,2],[3,4],[1,2],[3,4],[1,2],[3,4]])

In [83]: tscv = TimeSeriesSplit(n_splits=3)

In [84]: for train, test in tscv.split(X):
  ...:   print train, test
  ...:   
[0 1 2] [3]
[0 1 2 3] [4]
[0 1 2 3 4] [5]

這個repo 用來記錄一些python技巧、書籍、學習鏈接等,歡迎star github地址

您可能感興趣的文章:
  • sklearn和keras的數據切分與交叉驗證的實例詳解
  • 使用sklearn的cross_val_score進行交叉驗證實例
  • Python sklearn KFold 生成交叉驗證數據集的方法

標簽:大慶 哈爾濱 郴州 烏蘭察布 平頂山 合肥 烏蘭察布 海南

巨人網絡通訊聲明:本文標題《sklearn中的交叉驗證的實現(Cross-Validation)》,本文關鍵詞  sklearn,中的,交叉,驗證,的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《sklearn中的交叉驗證的實現(Cross-Validation)》相關的同類信息!
  • 本頁收集關于sklearn中的交叉驗證的實現(Cross-Validation)的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    成人aaaa免费全部观看| 欧美在线视频不卡| 欧美本精品男人aⅴ天堂| 午夜久久久久久电影| 日韩精品xxx| 欧美日韩在线亚洲一区蜜芽| 亚洲综合区在线| 91麻豆国产香蕉久久精品| 丝袜 亚洲 另类 欧美 重口| 久久精品欧美日韩精品 | 三叶草欧洲码在线| 91精品国产综合久久久久久漫画| 亚洲大型综合色站| 91传媒理伦片在线观看| 717成人午夜免费福利电影| 亚洲大尺度视频在线观看| 中文字幕乱码一区| 欧美xxxx在线观看| 久久99久久久久| 免费看91的网站| 国产日韩成人精品| 成人免费视频一区| 欧美影视一区二区三区| 亚洲国产成人tv| 网站免费在线观看| 2024国产精品| 懂色中文一区二区在线播放| 一本色道亚洲精品aⅴ| 艳妇臀荡乳欲伦亚洲一区| 久久久午夜精品福利内容| 精品日韩欧美在线| 国产一区二区福利| 色综合视频一区二区三区高清| 亚洲精品一二三四区| 国产精九九网站漫画| 91精品国产综合久久福利软件| 捆绑调教一区二区三区| 国产又粗又猛又爽又黄的视频四季 | 成人h动漫精品| 欧美日韩亚洲国产综合| 日韩av一二三| 国精产品久拍自产在线网站| 亚洲三级在线播放| 中国xxxx性xxxx产国| 久久综合视频网| 不卡电影一区二区三区| 欧美日韩不卡一区二区| 九九热在线视频观看这里只有精品| 免费成人深夜夜行网站| 亚洲一区二区视频在线观看| 国产美女喷水视频| 国产精品久线观看视频| 国产伦精品一区二区三区精品| 久久久91精品国产一区二区精品| 成人黄色在线视频| 制服丝袜亚洲网站| 国产一区二区三区免费播放| 欧美综合一区二区| 久久国产生活片100| 黑人巨大精品一区二区在线| 亚洲成av人在线观看| 亚洲色图100p| 亚洲国产一区二区在线播放| 成人免费视频入口| 亚洲国产精品久久艾草纯爱| 性色国产成人久久久精品| 亚洲成人黄色小说| 亚洲人做受高潮| 天天免费综合色| 色综合久久综合网| 麻豆精品在线视频| 欧美性色欧美a在线播放| 韩国av一区二区三区| 欧美挠脚心视频网站| 国产麻豆91精品| 欧美乱妇一区二区三区不卡视频| 国产盗摄一区二区三区| 欧美日韩一区二区三区不卡| 国产精品18久久久久| 3d成人动漫网站| 99国产精品一区| 久久久久久久综合| 人妻av一区二区| 亚洲色图.com| 美女视频久久久| 美国毛片一区二区三区| 欧美性极品少妇| 国产成人午夜精品影院观看视频| 4438x成人网最大色成网站| 成人av午夜影院| 久久精品夜夜夜夜久久| 久久精品女同亚洲女同13| 亚洲桃色在线一区| 精品国产国产综合精品| 毛片不卡一区二区| 91精品免费观看| 在线观看你懂的视频| 国产精品久99| 亚洲色图欧美色| 久久99久久久欧美国产| 日韩欧美一二区| 亚洲欧美日韩色| 亚洲夂夂婷婷色拍ww47 | 国产精品传媒入口麻豆| 极品蜜桃臀肥臀-x88av| 日韩不卡一二三区| 欧美麻豆精品久久久久久| 亚洲精品无码久久久久久久| 国产精品麻豆99久久久久久| 99精品全国免费观看| 免费观看在线色综合| 欧美一级黄色大片| 一级黄色免费视频| 亚洲永久精品大片| 91官网在线观看| 波多野结衣中文一区| 中文字幕精品一区二区精品绿巨人| 亚洲av成人无码久久精品| 奇米影视在线99精品| 日韩欧美在线网站| 999精品免费视频| 日韩中文字幕一区二区三区| 欧美情侣在线播放| 久久久久99人妻一区二区三区| 1024亚洲合集| 色婷婷精品久久二区二区蜜臀av | 国产一区二区久久| 久久精品日产第一区二区三区高清版| 精品无码国产污污污免费网站| 美女在线视频一区| 欧美xxxxxxxx| 色哟哟精品观看| 黑人精品欧美一区二区蜜桃| 久久综合国产精品| 久久精品色妇熟妇丰满人妻| 国产精品99久久久久久似苏梦涵 | 在线观看中文字幕不卡| 99久久婷婷国产综合精品| 1000部国产精品成人观看| 色呦呦网站一区| 亚洲av午夜精品一区二区三区| 亚洲午夜精品久久久久久久久| 欧美日韩国产大片| 国产亚洲色婷婷久久99精品91| 日韩电影在线观看一区| 精品国产一区a| www.99re6| 91一区二区在线| 亚洲国产cao| 日韩视频在线永久播放| 国产精品美女高潮无套 | 欧美videos中文字幕| 俄罗斯毛片基地| 9久草视频在线视频精品| 深夜视频在线观看| 日韩精品视频网| 久久综合丝袜日本网| 成人涩涩小片视频日本| 伊人久久久久久久久| 日韩高清在线电影| 国产午夜精品一区二区| 91久久精品午夜一区二区| 理论片大全免费理伦片| 美脚の诱脚舐め脚责91 | 亚洲综合成人在线视频| 日韩一区二区免费在线电影 | 久久久精品日韩欧美| 亚洲天堂黄色片| 亚洲成年人在线观看| 毛片av中文字幕一区二区| 国产精品久久久久久久蜜臀| 欧美色网一区二区| 中文字幕在线看高清电影| 风流少妇一区二区| 亚洲国产日韩a在线播放| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 日韩一区二区在线免费观看| 无码人中文字幕| 无码国产精品久久一区免费| 韩国三级电影一区二区| 亚洲人吸女人奶水| 日韩一级大片在线| avtt天堂在线| 最近中文字幕无免费| 成人激情开心网| 日韩av中文字幕一区二区三区| 国产精品国产三级国产有无不卡| 欧美精品视频www在线观看| 欧美88888| 欧亚乱熟女一区二区在线| 成人性生交大片免费看中文网站| 日韩电影一区二区三区四区| 国产精品久久久久三级| 欧美一区二区三区免费在线看| 蜜臀久久精品久久久用户群体| www.久久av| 91欧美激情一区二区三区成人| 久久99久久精品欧美| 性做久久久久久| 自拍偷拍国产精品|