Python每日一記21 交叉驗證

2021-09-13 09:07:14 字數 1863 閱讀 9172

還記的前期我們對機器學習的資料集的劃分都是利用train_test_split()將資料劃分為訓練集和測試集,而且各自的比例是我們指定的,但是這樣具有的人為性可能導致模型的泛化能力不佳。

交叉驗證就是為了解決這個問題:

1、簡單交叉驗證(k折交叉驗證):其將資料集劃分為幾個部分(注意不是隨即劃分,而是依次劃分),再進行建模和測試。如我們制定資料集劃分為3個子集,分為1,2,3;然後對1和2建模,再在3上進行測試,得分取平均值;再對1,3建模,在2上測試,以此類推。這樣得到的結果更具普遍性和隨機性,模型的泛化能力就更佳。需要的函式是cross_val_score

form sklearn.model_selection import cross_val_score

form sklearn.datasets import load_iris

form sklearn.liner_model import logisticregression

data=load_iris()

logr=logisticregression()

score=cross_val_score(logr,data[『data』],data[『target』],cv=3)

print(score)

列印得分後,我們會得到三個得分,取平均值即可.

以上cross_val_score()中,cv指定子集個數。

需要記住的是,交叉驗證不是構建可應用於新資料的模型的方法,其不會返回乙個模型。在呼叫cross_val_score時,內部會構建多個模型,但交叉驗證的目的知識評估給定演算法在特定資料集上訓練後的泛化能力,也就是說,沒有**的方法。當我們進行了交叉驗證並且得分還ok的情況下,不需要對資料集劃分成測試集和訓練集,直接再次進行建模即可,建模後的資料就可以用於新資料集的**。

下面再介紹其他交叉驗證的方法

2、分層交叉驗證

簡單交叉驗證的最大缺點就是,對於類別型標籤,假如資料標籤是【0,0,0,0,1,1,1,1,2,2,2,2】,分成三類的交叉驗證會這樣分【0,0,0,0】、【1,1,1,1】、【2、2、2、2】,那麼這樣的得分就會是0,這根本沒什麼意義。這就意味著,簡單交叉驗證方法失效了。

分層交叉驗證能很好的解決這個問題,劃分資料使得每個資料集中類別的比例與源資料集類別的比例一致。

當然我們不用過於擔心,因為cross_val_score預設對分類變數使用分層k交叉驗證,而對於回歸模型預設使用簡單k交叉驗證。

之前的簡單交叉也可以這樣表示:

form sklearn.model_selection import k_fold

form sklearn.model_selection import cross_val_score

form sklearn.datasets import load_iris

form sklearn.liner_model import logisticregression

data=load_iris()

logr=logisticregression()

kf=k_fold(n_splits=5)

score=cross_val_score(logr,data[『data』],data[『target』],cv=kf)

print(score)

如果我們先要更加隨即的交叉驗證,那麼可以kf=k_fold(n_splits=5,shuffle=true,random_state=1)

這樣劃分資料集前,會打亂資料,避免出現簡單交叉驗證的錯誤。

3、其餘的交叉驗證還有留一法交叉驗證、打亂劃分交叉驗證、分組交叉驗證、各位可以自行去檢視資料。

總之對於回歸資料,簡單交叉驗證即可,對於分類資料,分層交叉驗證或其他方法即可,推薦使用分層交叉驗證或者簡單交叉驗證引數設定為shuffle=true。

2013 4 22每日一記

在沒有把乙個完整的東西弄明白之前,都叫做每日一記吧。關於小波,它是由傅利葉變換得來的,乙個向量或者叫作函式或者訊號,在時域上區域性發生改變,其整個頻譜都將改變,同樣將頻域上的區域性發生改變,則整個時域上的訊號也將發生改變,所以傅利葉對於奇異點和訊號區域性的處理非常困難。所以有了視窗傅利葉變換,視窗傅...

每日一記 2017 12 4

蘋果市場營銷 市場洞察 市場選擇 市場定位 產品 價值 渠道 宣傳 顧客經營。1 需求源自 食 色 仇恨 好奇 娛樂 自我 家庭 民權 地位 榮譽 社交 聲望 權威,存在感十四種原欲。土豪金讓旁人秒懂你買了新iphone 5s。2 中外男女老少通吃情感,耐克喚醒一代人拼搏精神,蘋果讓一代人看見獨一無...

每日一記 2019 7 17

記錄每天自己的新的感受體會亦或者是題目中的坑。概述1.暑假集訓第七天。今天中午差點遲到。都到2點20了才醒 驚悚 2.早上背了複習了前面六天的new word snew words newwor ds。背了23個新單詞。3.今天把分塊看了下。把分塊入門一二三四ac了。然後見了一些其他的線段樹模型。題...