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


 

相關內容連接:

 機器學習: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)結果圖

     

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

    3)分析說明

          從結果看,兩種方式的擬合結果相似。但是這里只有一個可知參數:0.90045842,而且擬合的線性方程具體形式未知。文一的方式可以自己設置線性方程形式,並且所有參數都可以求的結果。

 

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包中關於最小二乘法或者多項式回歸的使用方式比較方便靈活

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM