當前位置:
首頁 > 新聞 > 手把手教你可視化交叉驗證代碼,提高模型預測能力

手把手教你可視化交叉驗證代碼,提高模型預測能力

選自KDNuggets

機器之心編譯

參與:劉曉坤、路雪


本文介紹了如何使用K折交叉驗證提高模型預測能力,並對代碼進行了可視化。

我們試著利用代碼可視化來提高模型預測能力。

比如說,你正在編寫一個漂亮清晰的機器學習代碼(例如線性回歸)。你的代碼還不錯,首先按照往常一樣用 train_test_split 這樣的函數將數據集分成「訓練集和測試集」兩個部分,並加入一些隨機因素。你的預測可能稍微欠擬合或過擬合,如下圖所示。

手把手教你可視化交叉驗證代碼,提高模型預測能力

圖:欠擬合和過擬合情況下的預測結果

這些結果沒有變化。這個時候我們能做什麼呢?

正如題目所建議的,在學習了線性回歸之後,下一件有趣的事情就是交叉驗證了,因為它可以使用 K 折策略(K-Fold strategy)提高模型的預測能力。那 K 折究竟是什麼呢?下面我們將用代碼對此進行解釋。

完整的代碼如下:

手把手教你可視化交叉驗證代碼,提高模型預測能力

圖:交叉驗證的可視化

代碼解析:

以上代碼可分為 4 個步驟。

1. 載入並分割目標數據集。

手把手教你可視化交叉驗證代碼,提高模型預測能力

圖:載入數據集

將該數據集中的目標複製到 y 變數中。如果想看到數據集,請將 print 行的注釋符「#」刪除。

2. 模型選擇

手把手教你可視化交叉驗證代碼,提高模型預測能力

圖:模型選擇(LinearRegression())

為簡化過程,我們將選擇使用線性回歸。如果想了解更多,請查看文章《Linear Regression: The Easier Way》。

3. 交叉驗證

手把手教你可視化交叉驗證代碼,提高模型預測能力

圖:在 sklearn 中進行交叉驗證

這是 sklearn 中的流程,也是一個函數:

cross_val_predict(model, data, target, cv)

其中,

  • model 是我們選來要進行交叉驗證的模型。

  • data 是數據。

  • target 是數據的目標值。

  • cv(可選項)是數據摺疊的總次數(K 折)。

在這個流程中,我們不像往常一樣將數據集分成訓練集和測試集兩部分,如下圖所示。

手把手教你可視化交叉驗證代碼,提高模型預測能力

圖:訓練集(藍色)和測試集(紅色)

我們將數據集平均分成 K 個部分(K 折或者 cv)。為了提高預測精度並實現更好地泛化,我們會在較大的數據集中進行模型訓練,在較小的數據集上測試。這裡,我們把 cv 設置成 6。

手把手教你可視化交叉驗證代碼,提高模型預測能力

圖:6 個相同的部分

現在,模型分割的第一次迭代如下圖所示,其中紅色的是測試集,藍色的是訓練集。

手把手教你可視化交叉驗證代碼,提高模型預測能力

圖:交叉驗證的第一次迭代

第二次迭代如下圖所示:

手把手教你可視化交叉驗證代碼,提高模型預測能力

圖:交叉驗證的第二次迭代

以此類推,直到最後一次迭代,如下圖所示:

手把手教你可視化交叉驗證代碼,提高模型預測能力

圖:交叉驗證的第六次迭代

4. 使用 Matplotlib 進行數據可視化

手把手教你可視化交叉驗證代碼,提高模型預測能力

圖:使用 Matplotlib 進行可視化

為了將結果可視化,我們導入了 matplotlib 庫,然後創建一個 subplot(子圖)。

創建採用黑色(即 (0,0,0))邊框的散點。

使用 ax.plot 計算兩個軸的最大最小值,k-- 代表線型,lw=4 代表寬度。然後,給 x 軸和 y 軸加上標籤。最後,用 plt.show() 展示圖像。

結果如下:

手把手教你可視化交叉驗證代碼,提高模型預測能力

圖:預測結果

這張圖展示了使用線性回歸模型對 Boston 數據集進行 K 折交叉驗證的結果。

我知道其實還有很多種交叉驗證方法,但 K 折交叉驗證是一個很好、很簡單的起點。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

這位被阿里挖來的亞馬遜最高級別華人科學家,聊了聊AI給新零售帶來的想像空間
這3個85後技術男,代表了中國科技圈的新生力量
伯克利提出強化學習新方法,可讓智能體同時學習多個解決方案
人工智慧如何幫你找到好歌:探秘Spotify神奇的每周歌單

TAG:機器之心 |