真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

使用sklearn的cross_val_score進(jìn)行交叉驗(yàn)證實(shí)例-創(chuàng)新互聯(lián)

在構(gòu)建模型時(shí),調(diào)參是極為重要的一個(gè)步驟,因?yàn)橹挥羞x擇最佳的參數(shù)才能構(gòu)建一個(gè)最優(yōu)的模型。但是應(yīng)該如何確定參數(shù)的值呢?所以這里記錄一下選擇參數(shù)的方法,以便后期復(fù)習(xí)以及分享。

專注于為中小企業(yè)提供網(wǎng)站建設(shè)、成都網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)盤錦免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了1000+企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

(除了貝葉斯優(yōu)化等方法)其它簡(jiǎn)單的驗(yàn)證有兩種方法:

1、通過經(jīng)常使用某個(gè)模型的經(jīng)驗(yàn)和高超的數(shù)學(xué)知識(shí)。

2、通過交叉驗(yàn)證的方法,逐個(gè)來驗(yàn)證。

很顯然我是屬于后者所以我需要在這里記錄一下

sklearn 的 cross_val_score:

我使用是cross_val_score方法,在sklearn中可以使用這個(gè)方法。交叉驗(yàn)證的原理不好表述下面隨手畫了一個(gè)圖:

使用sklearn的cross_val_score進(jìn)行交叉驗(yàn)證實(shí)例

(我都沒見過這么丑的圖)簡(jiǎn)單說下,比如上面,我們將數(shù)據(jù)集分為10折,做一次交叉驗(yàn)證,實(shí)際上它是計(jì)算了十次,將每一折都當(dāng)做一次測(cè)試集,其余九折當(dāng)做訓(xùn)練集,這樣循環(huán)十次。通過傳入的模型,訓(xùn)練十次,最后將十次結(jié)果求平均值。將每個(gè)數(shù)據(jù)集都算一次

交叉驗(yàn)證優(yōu)點(diǎn):

1:交叉驗(yàn)證用于評(píng)估模型的預(yù)測(cè)性能,尤其是訓(xùn)練好的模型在新數(shù)據(jù)上的表現(xiàn),可以在一定程度上減小過擬合。

2:還可以從有限的數(shù)據(jù)中獲取盡可能多的有效信息。

我們?nèi)绾卫盟鼇磉x擇參數(shù)呢?

我們可以給它加上循環(huán),通過循環(huán)不斷的改變參數(shù),再利用交叉驗(yàn)證來評(píng)估不同參數(shù)模型的能力。最終選擇能力最優(yōu)的模型。

下面通過一個(gè)簡(jiǎn)單的實(shí)例來說明:(iris鳶尾花)

from sklearn import datasets #自帶數(shù)據(jù)集
from sklearn.model_selection import train_test_split,cross_val_score #劃分?jǐn)?shù)據(jù) 交叉驗(yàn)證
from sklearn.neighbors import KNeighborsClassifier #一個(gè)簡(jiǎn)單的模型,只有K一個(gè)參數(shù),類似K-means
import matplotlib.pyplot as plt
iris = datasets.load_iris() #加載sklearn自帶的數(shù)據(jù)集
X = iris.data #這是數(shù)據(jù)
y = iris.target #這是每個(gè)數(shù)據(jù)所對(duì)應(yīng)的標(biāo)簽
train_X,test_X,train_y,test_y = train_test_split(X,y,test_size=1/3,random_state=3) #這里劃分?jǐn)?shù)據(jù)以1/3的來劃分 訓(xùn)練集訓(xùn)練結(jié)果 測(cè)試集測(cè)試結(jié)果
k_range = range(1,31)
cv_scores = [] #用來放每個(gè)模型的結(jié)果值
for n in k_range:
 knn = KNeighborsClassifier(n) #knn模型,這里一個(gè)超參數(shù)可以做預(yù)測(cè),當(dāng)多個(gè)超參數(shù)時(shí)需要使用另一種方法GridSearchCV
 scores = cross_val_score(knn,train_X,train_y,cv=10,scoring='accuracy') #cv:選擇每次測(cè)試折數(shù) accuracy:評(píng)價(jià)指標(biāo)是準(zhǔn)確度,可以省略使用默認(rèn)值,具體使用參考下面。
 cv_scores.append(scores.mean())
plt.plot(k_range,cv_scores)
plt.xlabel('K')
plt.ylabel('Accuracy') #通過圖像選擇最好的參數(shù)
plt.show()
best_knn = KNeighborsClassifier(n_neighbors=3) # 選擇最優(yōu)的K=3傳入模型
best_knn.fit(train_X,train_y) #訓(xùn)練模型
print(best_knn.score(test_X,test_y)) #看看評(píng)分

本文名稱:使用sklearn的cross_val_score進(jìn)行交叉驗(yàn)證實(shí)例-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)路徑:http://weahome.cn/article/dgoiij.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部