sklearn快速入门教程:(三)机器学习的通用模式及实现方法
一、從線性回歸總結機器學習的通用模式
從上篇博客我們詳細講述了線性回歸的實現方式。線性回歸的調用方式實際上是sklearn的典型方式,在掌握這個方法之后我們繼續進一步深入,探索其它的模型的使用。
回顧線性回歸的理論,它實際上還可以寫成一個更為抽象的形式:
y=f(w;x)y = f(w;x) y=f(w;x)
事實上,所有機器學習本質上就是在想辦法利用樣本數據去擬合一個形如上式的函數關系。對于線性回歸,上述函數是一個線性函數,而其它非線性模型則是擬合一個非線性函數。比如logistic回歸則是一個logistic函數,而多層感知機則是多個激活函數的復合函數,SVM則是多個核函數的線性組合等等。
但從抽象的層面而言,我們關心的其實只有兩個問題:模型如何擬合和如何預測。
從上篇博客中我們已經看到,在調用線性回歸時,我們只需要找到它具體對應的class,然后再分別調用fit和predict兩個函數即可完成擬合(訓練)和預測的步驟。而事實上,在sklearn中絕大多數模型都是用這樣的方式封裝的,因此在掌握了線性回歸的基礎上,要學會這些方法就非常容易了。
比如我們用同樣的數據,來實現一個支持向量機(SVM)。
import numpy as np from sklearn.svm import SVR X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]]) # y = 1 * x_0 + 2 * x_1 + 3 y = np.dot(X, np.array([1, 2])) + 3model = SVR() model.fit(X,y) model.predict(X)上述代碼第7-9行的調用和線性回歸是一模一樣的。
當然,如果運行這段代碼就會發現,它的精度還不如線性回歸,這里主要的問題在于我們對模型的超參數還沒有進行調整。在絕大多數的非線性模型中(包括一些特殊的線性模型,比如ridge regression),還有一部分參數是無法通過訓練直接獲取的,通常的做法是直接預先設定,反復調整使模型達到一個最優的狀態,這一過程也就是我們常聽到的“調參“。那么基于此,我們的非線性模型的通用模式其實就應該表示為:
y=f(h,w;x)y = f(h,w;x) y=f(h,w;x)
這里面 hhh 表示我們的超參數(一個或多個),www 是可以通過訓練算出的參數。以SVR為例,它的超參數實際上包括:
- 核函數及其參數
- 懲罰系數
這里我們常用高斯核作為它的核函數,同時將核參數設為1,懲罰系數設為100。
model = SVR(kernel='rbf',gamma= 1, C = 100) model.fit(X,y) model.predict(X) # 運行結果 array([ 6.1 , 7.93810802, 9.06189198, 10.9 ])真實的輸出是y=[6,8,9,11],那么可以看到這樣模型的精度就有了明顯的提升。如果我們事先知道模型的超參數,那么可以很容易得出較好的預測結果。但如果不知道的話,就需要進行調參。當然調參的方式有很多種,后面的教程我們再詳細討論。
二、符合上述通用模式的常用模型
這里我們只簡單小結一下部分的模型,具體的內容可以根據實際需要繼續查詢官方文檔即可。
| 線性模型 | LinearModels | https://scikit-learn.org/stable/modules/linear_model.html |
| 神經網絡 | trtneural_network | https://scikit-learn.org/stable/modules/classes.html#module-sklearn.neural_network |
| 支持向量機 | SVM | https://scikit-learn.org/stable/modules/svm.html |
| 高斯過程 | gaussian_process | https://scikit-learn.org/stable/modules/gaussian_process.html |
| 決策樹 | tree | https://scikit-learn.org/stable/modules/tree.html |
| 隨機森林 | ensemble.RandomForestRegressor | https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestRegressor.html#sklearn.ensemble.RandomForestRegressor |
下篇教程我們再繼續講參數調優的具體方法。
- sklearn快速入門教程:(一)準備工作
- klearn快速入門教程:(二)線性回歸
- sklearn快速入門教程:(四)模型自動調參
- sklearn快速入門教程:(五)集成學習
總結
以上是生活随笔為你收集整理的sklearn快速入门教程:(三)机器学习的通用模式及实现方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sklearn快速入门教程:(二)线性回
- 下一篇: sklearn快速入门教程:(四)模型自