機器學習:scipy和sklearn中普通最小二乘法與多項式迴歸的使用對

 

相關內容鏈接:html

 機器學習:Python中如何使用最小二乘法(如下簡稱文一)python

 機器學習:形如拋物線的散點圖在python和R中的非線性迴歸擬合方法(如下簡稱文二)數組

     有些內容已經在上面兩篇博文中提到了,因此就不重複了。這裏主要講的是sklearn包與scipy包中相關函數的區別。而且多項式迴歸和普通最小二乘法聯繫比較緊密,因此也放到此處講了。機器學習

1.普通最小二乘法函數

   1)文一中的數據採用sklearn包的函數擬合    學習

from sklearn import linear_model
import numpy as np
import matplotlib.pyplot as plt

##樣本數據(Xi,Yi),須要轉換成數組(列表)形式
Xi=np.array([6.19,2.51,7.29,7.01,5.7,2.66,3.98,2.5,9.1,4.2]).reshape(-1,1)
Yi=np.array([5.25,2.83,6.41,6.71,5.1,4.23,5.05,1.98,10.5,6.3]).reshape(-1,1)

##設置模型
model = linear_model.LinearRegression()
##訓練數據
model.fit(Xi, Yi)
##用訓練得出的模型預測數據
y_plot = model.predict(Xi)
##打印線性方程的權重
print(model.coef_) ## 0.90045842
##繪圖
plt.scatter(Xi, Yi, color='red',label="樣本數據",linewidth=2)
plt.plot(Xi, y_plot, color='green',label="擬合直線",linewidth=2)
plt.legend(loc='lower right')
plt.show()

   2)結果圖spa

     

            (當前代碼圖)                                                   (文一圖片)code

    3)分析說明htm

          從結果看,兩種方式的擬合結果類似。可是這裏只有一個可知參數:0.90045842,並且擬合的線性方程具體形式未知。文一的方式能夠本身設置線性方程形式,而且全部參數均可以求的結果。blog

 

2.多項式迴歸

      多項式迴歸實際上是對普通最小二乘法的一個擴展,即當標準的直線方程(一元一次方程)沒法知足擬合要求的時候,能夠擴展到多元屢次方程,例如文二中的例子就簡單的擴展了一下:一元二次方程。

      下面要說的sklearn包中多項式迴歸的使用方式其實和文二中的方式同樣:指定一個基函數,可是我查看了官網的大部分例子,發現只能使用sklearn包中的線性迴歸函數,沒法像文二同樣自定義基函數

      下面是使用例子:

from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import make_pipeline
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import Ridge

##樣本數據(Xi,Yi),須要轉換成數組(列表)形式
Xi=np.array([1,2,3,4,5,6]).reshape(-1,1)
#Yi=np.array([9,18,31,48,69,94])
Yi=np.array([9.1,18.3,32,47,69.5,94.8]).reshape(-1,1)
##這裏指定使用嶺迴歸做爲基函數
model = make_pipeline(PolynomialFeatures(2), Ridge())
model.fit(Xi, Yi)
##根據模型預測結果
y_plot = model.predict(Xi)

##繪圖
plt.scatter(Xi, Yi, color='red',label="樣本數據",linewidth=2)
plt.plot(Xi, y_plot, color='green',label="擬合直線",linewidth=2)
plt.legend(loc='lower right')
plt.show()

       

               (本例結果圖)                                                              (文二圖)

 

     在本例中徹底得不到關於參數的任何信息。

 

3.總結

    1.多項式迴歸是線性模型的一個擴展 

    2.scipy包中關於最小二乘法或者多項式迴歸的使用方式比較方便靈活

相關文章
相關標籤/搜索