一愉耙、模型評估
混淆矩陣Confusion Matrix
在機器學習領域贮尉,混淆矩陣(confusion matrix),又稱為可能性表格或是錯誤矩陣劲阎。它是一種特定的矩陣用來呈現(xiàn)算法性能的可視化效果绘盟,通常是監(jiān)督學習(非監(jiān)督學習,通常用匹配矩陣:matching matrix)。其每一列代表預測值龄毡,每一行代表的是實際的類別吠卷。這個名字來源于它可以非常容易的表明多個類別是否有混淆(也就是一個class被預測成另一個class)。
Example
假設有一個用來對貓(cats)沦零、狗(dogs)祭隔、兔子(rabbits)進行分類的系統(tǒng),混淆矩陣就是為了進一步分析性能而對該算法測試結(jié)果做出的總結(jié)路操。假設總共有 27只動物:7只貓疾渴, 8條狗, 12只兔子屯仗。結(jié)果的混淆矩陣如下圖:
這個混淆矩陣中搞坝,實際有 7只貓,但是系統(tǒng)將其中2只預測成了狗魁袜;對于 8條狗桩撮,其中有 2條被預測成了兔子,3條被預測成了貓峰弹。從混淆矩陣中我們可以看出系統(tǒng)對于區(qū)分貓和狗存在一些問題店量,但是區(qū)分兔子和其他動物的效果還是不錯的。所有正確的預測結(jié)果都在對角線上鞠呈,所以從混淆矩陣中可以很方便直觀的看出哪里有錯誤融师,因為他們呈現(xiàn)在對角線外面。
Table of confusion
在預測分析中蚁吝,混淆表格(有時候也稱為混淆矩陣)旱爆,是由false positives,false negatives灭将,true positives和true negatives組成的兩行兩列的表格疼鸟。它允許我們做出更多的分析,而不僅僅是局限在正確率(準確率庙曙,下面會講空镜,ACC)。
假定一個實驗有 P個positive實例捌朴,在某些條件下有 N 個negative實例吴攒。那么上面這四個輸出可以用下面的偶然性表格(或混淆矩陣)來表示:
這個表中呈現(xiàn)了所有衡量模式性能的方法,PPV砂蔽,F(xiàn)DR洼怔,F(xiàn)OR,NPV左驾,TPR镣隶,F(xiàn)PR极谊,F(xiàn)NR,TNR以及Accuracy安岂,都是用我們上面的false positives轻猖,false negatives,true positives和true negatives來進行計算的域那。
而其中咙边,F(xiàn)alse Positive被稱為1類錯誤,而False Negative被稱為2類錯誤次员。
除去對角線分類正確的點不說败许,F(xiàn)alse Positive是說本身這個事物是正確的,但是卻判斷為錯誤的淑蔚,F(xiàn)alse Negative是說本身這個事物是錯誤的市殷,但卻判斷為正確的。我們針對不同的場景束倍,重視False Negative或者False Positive的程度不同被丧,比如我們現(xiàn)在已診斷病人的場景為例
False Negative是明明生病了,卻診斷為健康的绪妹,F(xiàn)alse Positive是明明是健康的,卻判斷為生病的柿究,哪一個比重多影響嚴重呢邮旷?很明顯,F(xiàn)alse Negative比重大影響更重蝇摸。所以就出現(xiàn)了很多除了acc以外衡量模型的方法婶肩。這中間比較最重要的就是精確率precision和召回率recall。
下一個最先引出的內(nèi)容就是Accuracy
準確率accuracy
可以從上面那個圖很清楚的看到貌夕,
ACC = (所有True Positive + 所有 True Negative)/ 所有點
accuracy = (TP + TN) / (TP + FP + TN + FN)
就是準確率嫌术。換句話說欠痴,就是所有被分類正確的點在所有點中的概率。
肯定很好奇,已經(jīng)有了ACC為什么還有那么多其他的判斷標準弛矛,其實,ACC有很多場景是不適合使用的权谁。
準確率對于分類器的性能分析來說敦跌,并不是一個很好地衡量指標,因為如果數(shù)據(jù)集不平衡(每一類的數(shù)據(jù)樣本數(shù)量相差太大)慧库,很可能會出現(xiàn)誤導性的結(jié)果跷跪。例如,如果在一個數(shù)據(jù)集中有95只貓齐板,但是只有5條狗吵瞻,那么某些分類器很可能偏向于將所有的樣本預測成貓葛菇。整體準確率為95%,但是實際上該分類器對貓的識別率是100%橡羞,而對狗的識別率是0%眯停。那么這個模型也是一個很不好的模型,并沒有真正的正確分類尉姨。
所以又通過混淆矩陣引出了另外的衡量模型的方法:
精確率precision
精確率precision總是和準確率Accuracy一同出現(xiàn)庵朝,但其實表達的并不是一樣的含義
精確率是針對我們預測結(jié)果而言的,它表示的是預測為正的樣本中有多少是真正的正樣本又厉。那么預測為正就有兩種可能了九府,一種就是把正類預測為正類(TP),另一種就是把負類預測為正類(FP)覆致,也就是TPR侄旬。
召回率recall
召回率是針對我們原來的樣本而言的,它表示的是樣本中的正例有多少被預測正確了煌妈。那也有兩種可能儡羔,一種是把原來的正類預測成正類(TP),另一種就是把原來的正類預測為負類(FN)璧诵,也就上面那個總圖對應的PPV汰蜘。
那么用圖示來看下上面兩個的區(qū)別
精確率和召回率又被稱為查準率和查全率,
查準率=檢索出的相關信息量 / 檢索出的信息總量
查全率=檢索出的相關信息量 / 系統(tǒng)中的相關信息總量
F1 score
有時候我們用召回率之宿,有時候又要用精確率確實比較迷惑族操,所以這時,就引入了F1分數(shù)比被,F(xiàn)1分數(shù)公式如下:
F1 Score:F1 Score = 2*P*R/P+R
色难,其中P和R分別為 precision 和
recall
F1的由來主要是因為調(diào)和平均數(shù),調(diào)和平均數(shù)(英語:Harmonic mean)等缀,是求一組數(shù)值的平均數(shù)的方法中的一種枷莉,調(diào)和平均數(shù)永遠小于一般的算數(shù)平均數(shù),所以調(diào)和平均數(shù)尺迂,更接近小一點的那個值笤妙,套入F1公式的話,就是更接近精確率和召回率更小一點的那個值枪狂。
F-beta Score
首先鏈接是F1的鏈接哈危喉,下面有F-beta Score的公式。
這個beta可以理解為偏向某個方向的天平州疾,從下圖可以看出如果beta越小辜限,那么越重視精確率,如果beta越大严蓖,則說明越重視召回率薄嫡。
接收者操作特征曲線ROC curve
ROC空間將偽陽性率(FPR)定義為 X 軸氧急,真陽性率(TPR)定義為 Y 軸。
- TPR:在所有實際為陽性的樣本中毫深,被正確地判斷為陽性之比率吩坝。
TPR = TP / (TP + FN) - FPR:在所有實際為陰性的樣本中,被錯誤地判斷為陽性之比率哑蔫。
FPR = FP / (FP + TN)
給定一個二元分類模型和它的閾值钉寝,就能從所有樣本的(陽性/陰性)真實值和預測值計算出一個 (X=FPR, Y=TPR) 座標點。
從 (0, 0) 到 (1,1) 的對角線將ROC空間劃分為左上/右下兩個區(qū)域闸迷,在這條線的以上的點代表了一個好的分類結(jié)果(勝過隨機分類)嵌纲,而在這條線以下的點代表了差的分類結(jié)果(劣于隨機分類)。
ROC空間里的單點腥沽,是給定分類模型且給定閾值后得出的逮走。但同一個二元分類模型的閾值可能設定為高或低,每種閾值的設定會得出不同的FPR和TPR今阳。
- 將同一模型每個閾值 的 (FPR, TPR) 座標都畫在ROC空間里师溅,就成為特定模型的ROC曲線。
如下圖盾舌,人體的血液蛋白濃度是呈正態(tài)分布的連續(xù)變數(shù)墓臭,病人的分布是紅色,平均值為A g/dL妖谴,健康人的分布是藍色起便,平均值是C g/dL。健康檢查會測量血液樣本中的某種蛋白質(zhì)濃度窖维,達到某個值(閾值,threshold)以上診斷為有疾病征兆妙痹。研究者可以調(diào)整閾值的高低(將左上圖的B垂直線往左或右移動)铸史,便會得出不同的偽陽性率與真陽性率,總之即得出不同的預測準確率怯伊。
1. 由于每個不同的分類器(診斷工具琳轿、偵測工具)有各自的測量標準和測量值的單位(標示為:“健康人-病人分布圖”的橫軸),所以不同分類器的“健康人-病人分布圖”都長得不一樣耿芹。
2. 比較不同分類器時崭篡,ROC曲線的實際形狀,便視兩個實際分布的重疊范圍而定吧秕,沒有規(guī)律可循琉闪。
3. 但在同一個分類器之內(nèi),閾值的不同設定對ROC曲線的影響砸彬,仍有一些規(guī)律可循:
當閾值設定為最高時颠毙,亦即所有樣本都被預測為陰性斯入,沒有樣本被預測為陽性,此時在偽陽性率 FPR = FP / ( FP + TN ) 算式中的 FP = 0蛀蜜,所以 FPR = 0%刻两。同時在真陽性率(TPR)算式中, TPR = TP / ( TP + FN ) 算式中的 TP = 0滴某,所以 TPR = 0%
當閾值設定為最高時磅摹,必得出ROC座標系左下角的點 (0, 0)。
當閾值設定為最低時霎奢,亦即所有樣本都被預測為陽性户誓,沒有樣本被預測為陰性,此時在偽陽性率FPR = FP / ( FP + TN ) 算式中的 TN = 0椰憋,所以 FPR = 100%厅克。同時在真陽性率 TPR = TP / ( TP + FN ) 算式中的 FN = 0,所以 TPR=100%
當閾值設定為最低時橙依,必得出ROC座標系右上角的點 (1, 1)证舟。-
因為TP、FP窗骑、TN女责、FN都是累積次數(shù),TN和FN隨著閾值調(diào)低而減少(或持平)创译,TP和FP隨著閾值調(diào)低而增加(或持平)抵知,所以FPR和TPR皆必隨著閾值調(diào)低而增加(或持平)。
隨著閾值調(diào)低软族,ROC點 往右上(或右/或上)移動刷喜,或不動;但絕不會往左下(或左/或下)移動立砸。
以上就是ROC空間和ROC曲線掖疮,但是針對ROC曲線還有一個很重要的性質(zhì),那就是曲線下面積(AUC)颗祝,AUC的意義是: 因為是在1x1的方格里求面積浊闪,AUC必在0~1之間。
假設閾值以上是陽性螺戳,以下是陰性搁宾;
若隨機抽取一個陽性樣本和一個陰性樣本,分類器正確判斷陽性樣本的值高于陰性樣本之機率 = AUC倔幼。
-
簡單說:AUC值越大的分類器盖腿,正確率越高。
下面來看下數(shù)據(jù)分步和AUC的關系凤藏,可以明顯看出奸忽,如果不是很好分出的數(shù)據(jù)堕伪,他的auc大概在0.5左右,而如果能完美分類的模型栗菜,他的auc為1.
上面的評估指標都是評估分類模型的欠雌,現(xiàn)在讓我們來學評估回歸模型的指標
平均絕對誤差(Mean absolute error MAE)
其實顧名思義了,直接看圖看公式吧
很容易對不對疙筹,誤差的絕對值的總和求平均富俄。
機器學習中我們一般用sklearn的mean_absolute_error函數(shù)來算結(jié)果。
但因為我們是用的絕對值做計算而咆,這種情況我們不能去求導來做梯度下降(梯度下降通過求導的負數(shù)來得出我們的線段的斜率和偏移該怎么變化霍比,或者說是變化方向),那么就引入了下一個誤差方式來方便求導暴备,那就是:
均方誤差Mean squared error MSE
同樣悠瞬,也基本是看到就知道大概意思了,那么我們直接看公式
很明顯對不對涯捻,點和線段的偏差的平方求和來求平均
同樣我們常用sklearn的mean_squared_error 函數(shù)來實現(xiàn)這個功能
決定系數(shù)R2 score
另外一個非常重要的判定分數(shù)是R2 score浅妆,又叫Coefficient of determination,R2 score在回歸問題評估上非常常見,R2 score是通過將我們的模型和最簡單的模型相比得出的障癌,
具體計算如下:
上圖可以看出凌外,決定系數(shù)越接近1,這個模型評估也好涛浙。
同樣用sklearn的r2_score函數(shù)計算康辑。
二、模型選擇
方差轿亮,偏差疮薇,過擬合和欠擬合
首先要選擇模型,自然要知道什么樣的模型是不好的我注,針對模型來說惦辛,我們有兩種比較不好的模型,一種是過擬合的模型仓手,另一種是欠擬合的模型,而這兩種不好的模型其實反應的是方差和偏差玻淑,這里有非常好的資料可以進行學習嗽冒。
那么我們從頭細細道來:
當我們討論預測模型時,預測誤差可以分解為我們關心的兩個主要子部分內(nèi)容:由于“偏差”引起的誤差和由于“方差”引起的誤差补履。在模型最小化偏差和方差的能力之間存在權(quán)衡添坊。了解這兩種類型的錯誤可以幫助我們診斷模型結(jié)果并避免過擬合或欠擬合。
1箫锤、偏差和方差Bias and Variance
了解不同的誤差源如何導致偏差和方差有助于我們改進數(shù)據(jù)擬合過程贬蛙,從而產(chǎn)生更準確的模型雨女。我們以三種方式定義偏差和方差:概念上,圖形上和數(shù)學上阳准。
概念上:
(1)由偏差引起的誤差:由于偏差引起的誤差被視為我們模型的預期(或平均)預測與我們正確值之間的差異氛堕。當然,你只有一個模型野蝇,所以談論預期或平均預測值可能看起來有點奇怪讼稚。但是,假設您可以多次重復整個模型構(gòu)建過程:每次收集新數(shù)據(jù)并運行新分析創(chuàng)建新模型绕沈。由于基礎數(shù)據(jù)集中的隨機性锐想,所得到的模型將具有一系列預測。偏差衡量這些模型的預測與正確值的距離乍狐。
(2)由方差引起的誤差:由于方差引起的誤差被視為給定數(shù)據(jù)點的模型預測的可變性赠摇。再次,假設您可以多次重復整個模型構(gòu)建過程浅蚪。方差是給定點的預測在模型的不同實現(xiàn)之間變化的程度藕帜。
圖形上:
這個靶子目標的中心是一個完美預測正確值的模型。靶子上的點請理解為每一次模型評估后實現(xiàn)掘鄙,可以看到命中點與模型中心的偏差耘戚,最左上的很明顯,偏差和方差都很小的情況下操漠,模型評估幾乎都正中紅心收津,這是一個良好模型的體現(xiàn),而高方差的情況浊伙,點雖然靠近中心撞秋,但有些像四周分散,這就是過擬合的表現(xiàn)嚣鄙,就像一個人比較極端偏執(zhí)吻贿,眼光比較狹隘,極端擬合了一些狀態(tài)哑子,沒有大局觀舅列,而高偏差呢,能看到我們的點并沒有像中心靠攏卧蜓,而是有些偏斜帐要,這就是欠擬合的表現(xiàn),就像一個人想面面俱到的做事情弥奸,比較圓滑榨惠,放任某些錯誤的邏輯繼續(xù)走偏。
從第二張模型復雜度圖(后面講)也能看到,我們variance方差和bias的存在基本是互斥的赠橙,高方差的話偏差就低耽装,高偏差的話方差就低,就像我們的過擬合的狀態(tài)一樣期揪,而我們就是要找到最低的那個error掉奄,盡量去找那個“完美”模型。
我們也可以看下面這個例子横侦,來理解:
2挥萌、模型復雜度圖表
模型復雜性圖比較訓練誤差training errors和交叉驗證誤差cross-validation errors ,以便測量某個模型對給與的數(shù)據(jù)集是否過擬合或者欠擬合枉侧。就像這個圖中所示引瀑,比如第一個使用的是一階線性回歸,對于訓練數(shù)據(jù)有3個錯分類的點榨馁,對于測試數(shù)據(jù)有3個錯分類的點憨栽,這就勾出了曲線的第一個節(jié)點,以此類推翼虫,這樣的一個整體的圖屑柔,就是模型復雜度圖了
以這個圖來看,degree=2是最好的模型珍剑,在這之后的模型測試數(shù)據(jù)判斷失誤開始增多掸宛,圖形趨近于過擬合
K折交叉驗證
首先,什么是Cross-validation交叉驗證招拙?它也叫循環(huán)估計唧瘾,是一種統(tǒng)計學上將數(shù)據(jù)樣本切割成較小子集的實用方法。于是可以先在一個子集上做分析别凤, 而其它子集則用來做后續(xù)對此分析的確認及驗證饰序。 一開始的子集被稱為訓練集。而其它的子集則被稱為驗證集或測試集规哪。交叉驗證的目標是在訓練階段定義一組用于“測試”模型的數(shù)據(jù)集求豫,以便減少像過擬合的問題,得到該模型將如何衍生到一個獨立的數(shù)據(jù)集的提示诉稍。
那么同樣k折交叉驗證就是將訓練集分割成K個子樣本蝠嘉,一個單獨的子樣本被保留作為驗證模型的數(shù)據(jù),其他K-1個樣本用來訓練杯巨。交叉驗證重復K次是晨,每個子樣本驗證一次,平均K次的結(jié)果或者使用其它結(jié)合方式舔箭,最終得到一個單一估測。這個方法的優(yōu)勢在于,同時重復運用隨機產(chǎn)生的子樣本進行訓練和驗證层扶,每次的結(jié)果驗證一次箫章,10次交叉驗證是最常用的。
使用sklearn的方法如下
學習曲線
學習曲線镜会,是表示通過增長學習經(jīng)驗來觀察學習能力變化的一個圖表檬寂,這是原本的學習曲線的含義。
舉個栗子:
那么在機器學習中戳表,學習曲線的y軸表示的是錯誤error或者是acc正確率桶至,而原來表示經(jīng)驗的x軸可能是用于學習的訓練樣本的數(shù)量或用于優(yōu)化系統(tǒng)模型參數(shù)的迭代次數(shù)等等。
可以用以下代碼生成學習曲線:
train_sizes, train_scores, test_scores = learning_curve(
estimator, X, y, cv=None, n_jobs=1, train_sizes=np.linspace(.1, 1.0, num_trainings))
- estimator匾旭,是我們針對數(shù)據(jù)使用的實際分類器镣屹,例如 LogisticRegression() 或 GradientBoostingClassifier()。
- X 和 y 是我們的數(shù)據(jù)价涝,分別表示特征和標簽女蜈。
- train_sizes 是用來在曲線上繪制每個點的數(shù)據(jù)大小。
- train_scores 是針對每組數(shù)據(jù)進行訓練后的算法訓練得分色瘩。
- test_scores 是針對每組數(shù)據(jù)進行訓練后的算法測試得分伪窖。
網(wǎng)格搜索
首先要了解一個概念,超參數(shù)居兆,可能會覺得很奇怪覆山,經(jīng)常聽到參數(shù),超參數(shù)什么泥栖?原文-參數(shù)與超參數(shù)的不同
模型參數(shù)是模型內(nèi)部的配置變量簇宽,可以用數(shù)據(jù)估計模型參數(shù)的值;模型超參數(shù)是模型外部的配置聊倔,必須手動設置參數(shù)的值晦毙。
具體來說,首先耙蔑,我們來看一下“參數(shù)”是什么见妒?
參數(shù)作為模型從歷史訓練數(shù)據(jù)中學到的一部分,是機器學習算法的關鍵 甸陌。
統(tǒng)計學中的“參數(shù)”:
在統(tǒng)計學中须揣,你可以假設一個變量的分布,比如高斯分布钱豁。高斯分布的兩個參數(shù)分別是平均值(μ)和標準差(sigma)耻卡。這在機器學習中是有效的,其中這些參數(shù)可以用數(shù)據(jù)估計得到并用作預測模型的一部分牲尺。
編程中的“參數(shù)”:
編程中可以將參數(shù)傳遞給函數(shù)卵酪。在這種情況下幌蚊,參數(shù)是一個函數(shù)參數(shù),可以有一個值范圍溃卡。在機器學習中溢豆,您正在使用的具體模型就是函數(shù),需要參數(shù)才能對新數(shù)據(jù)進行預測瘸羡。
參數(shù)和模型有什么關系漩仙?
根據(jù)經(jīng)典的機器學習文獻,可以將模型看作假設犹赖,而參數(shù)是根據(jù)特定的數(shù)據(jù)集對假設進行的具體調(diào)整队他。
模型是否具有固定或可變數(shù)量的參數(shù),決定了模型是“參數(shù)”模型或“非參”模型峻村。
什么是模型參數(shù)麸折?
簡單來說,模型參數(shù)就是模型內(nèi)部的配置變量雀哨,可以用數(shù)據(jù)估計它的值磕谅。
具體來講,模型參數(shù)有以下特征:
- 進行模型預測時需要模型參數(shù)雾棺。
- 模型參數(shù)值可以定義模型功能膊夹。
- 模型參數(shù)用數(shù)據(jù)估計或數(shù)據(jù)學習得到。
- 模型參數(shù)一般不由實踐者手動設置捌浩。
- 模型參數(shù)通常作為學習模型的一部分保存放刨。
通常使用優(yōu)化算法估計模型參數(shù),優(yōu)化算法是對參數(shù)的可能值進行的一種有效搜索尸饺。
模型參數(shù)的一些例子包括:
- 人造神經(jīng)網(wǎng)絡中的權(quán)重进统。
- 支持向量機中的支持向量。
- 線性回歸或邏輯回歸中的系數(shù)浪听。
什么是模型超參數(shù)螟碎?
模型超參數(shù)是模型外部的配置,其值不能從數(shù)據(jù)估計得到迹栓。
具體特征有:
- 模型超參數(shù)常應用于估計模型參數(shù)的過程中掉分。
- 模型超參數(shù)通常由實踐者直接指定。
- 模型超參數(shù)通晨艘粒可以使用啟發(fā)式方法來設置酥郭。
- 模型超參數(shù)通常根據(jù)給定的預測建模問題而調(diào)整。
怎樣得到它的最優(yōu)值: 對于給定的問題愿吹,我們無法知道模型超參數(shù)的最優(yōu)值不从。但我們可以使用經(jīng)驗法則來探尋其最優(yōu)值,或復制用于其他問題的值犁跪,也可以通過反復試驗的方法椿息。
模型超參數(shù)的一些例子包括:
- 訓練神經(jīng)網(wǎng)絡的學習速率歹袁。
- 支持向量機的C和sigma超參數(shù)。
- k鄰域中的k寝优。
兩者聯(lián)系:
當針對特定問題調(diào)整機器學習算法時宇攻,例如在使用網(wǎng)格搜索或隨機搜索時,你將調(diào)整模型或命令的超參數(shù)倡勇,以發(fā)現(xiàn)一個可以使模型預測最熟練的模型參數(shù)。許多模型中重要的參數(shù)無法直接從數(shù)據(jù)中估計得到嘉涌。例如妻熊,在K近鄰分類模型中...這種類型的模型參數(shù)被稱為調(diào)整參數(shù),因為沒有可用的分析公式來為其計算一個合適的值仑最。
第64-65頁扔役,應用預測建模,2013
兩者區(qū)分:
模型超參數(shù)通常被稱為模型參數(shù)警医,這種叫法很容易讓人產(chǎn)生誤解亿胸。解決這個問題的一個很好的經(jīng)驗法則如下:如果你必須手動指定一個“模型參數(shù)”,那么它可能就是一個模型超參數(shù)预皇。
那么介紹完了超參數(shù)我們來真正進入網(wǎng)格搜索侈玄,這里有一篇講解的很好的文章,可以進行學習:
網(wǎng)格搜索算法與K折交叉驗證
大致介紹來說吟温,Grid Search是一種調(diào)參手段序仙,是通過窮舉法來找到自己所探索的參數(shù)中,最好的那一套參數(shù)鲁豪,一般結(jié)合交叉驗證來用潘悼。舉例的話上面那個鏈接里寫的就很好了,這里就不說了爬橡。
最后治唤,如何在sklearn中進行使用呢?
在 sklearn 中的網(wǎng)格搜索非常簡單糙申。 我們將用一個例子來說明一下宾添。 假設我們想要訓練支持向量機,并且我們想在以下參數(shù)之間做出決定:
kernel:poly或rbf郭宝。
C:0.1,1 或 10辞槐。
( 注:這些參數(shù)對于你來說,現(xiàn)在可以簡單了解一下粘室,我們將在該納米學位接下來的監(jiān)督學習部分中詳細了解它們榄檬。
具體步驟如下所示:
1. 導入 GridSearchCV
from sklearn.model_selection import GridSearchCV
2.選擇參數(shù):
現(xiàn)在我們來選擇我們想要選擇的參數(shù),并形成一個字典衔统。 在這本字典中鹿榜,鍵 (keys) 將是參數(shù)的名稱海雪,值 (values) 將是每個參數(shù)可能值的列表。
parameters = {'kernel':['poly', 'rbf'],'C':[0.1, 1, 10]}
3.創(chuàng)建一個評分機制 (scorer)
我們需要確認將使用什么指標來為每個候選模型評分舱殿。 這里奥裸,我們將使用 F1 分數(shù)。
from sklearn.metrics import make_scorer
from sklearn.metrics import f1_score
scorer = make_scorer(f1_score)
4. 使用參數(shù) (parameter) 和評分機制 (scorer) 創(chuàng)建一個 GridSearch 對象沪袭。 使用此對象與數(shù)據(jù)保持一致 (fit the data) 湾宙。
# Create the object.
grid_obj = GridSearchCV(clf, parameters, scoring=scorer)
# Fit the data
grid_fit = grid_obj.fit(X, y)
5. 獲得最佳估算器 (estimator)
best_clf = grid_fit.best_estimator_
現(xiàn)在你可以使用這一估算器best_clf來做出預測。