Python- 簡單的線性回歸模型


在Python中使用線性回歸算法

Scikit-Learn 涵蓋了主流的機器學習算法,我們先介紹常用的幾個庫:

  • lienar_model:線性模型算法庫,包括Logistic回歸算法等;
  • neighbors:最鄰近算法庫;
  • naive-bayes:朴素貝葉斯算法庫;
  • tree:決策樹算法;
  • svm:支持向量機算法;
  • neural_network:神經網絡算法。

如下,簡單解釋線性回歸算法。其數學表達式如下:

\[\boldsymbol{\hat y} = \boldsymbol{W} \boldsymbol{x} \]

# 導入所需庫
import numpy as np
from matplotlib import pyplot as plt
# 模擬數據集
x= np.linspace(-10, 10, 20)
segma= np.random.randn(20)
y= 3* x+ segma
# 數據圖
plt.scatter(x, y)
plt.show()

在這里插入圖片描述

同時,此處對線性回歸算法進行簡單的解釋。

# 從Scikit-Learn庫導入線性回歸算法
from sklearn import linear_model
# x訓練線性回歸模型
model= linear_model.LinearRegression()
model.fit(X, y)
# 進行預測
model.predit(x_)

如果此時直接將我們上面的得到的x,y傳入模型,代碼會提示數據維度錯誤,這是因為Scikit-Learn中線性回歸算法中的fit()方法需要傳入x和y兩組矩陣,即:

\[x: [[樣本1],...,[樣本n]] \]

\[y: [[樣本1],...,[樣本n]] \]

下面,我們可以利用的Python的List將序列變成矩陣。

X= [[i] for i in x]
y= [[i] for i in y]
from sklearn import linear_model
model= linear_model.LinearRegression()
model.fit(X, y)
LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)

這樣,我們就得到了算法所需的正確數據格式。但是,為了檢驗訓練的結果,我們還需要一組測試用的x_。

x_= [[1], [2]]
y_= model.predict(x_)
y_
array([[2.8780171 ],
       [5.90230701]])

我們可以通過display函數通過model.intercept_和model.coef_查看截距和\(\boldsymbol{W}\).

display(model.intercept_)  #截距
display(model.coef_)  #線性模型的系數
array([-0.1462728])



array([[3.02428991]])

我們還可以可視化模型的擬合效果。

y__= model.predict(X)
plt.scatter(x, y__)
plt.plot(X, y__, 'g-')
plt.show()

在這里插入圖片描述

以上便是一次完整的簡單的線性回歸過程。

下面,我們討論線性回歸算法的優缺點:

優缺點 描述
優點 簡單,容易理解和實現,可解釋性強
缺點 表達復雜模型時不理想,且對非線性問題表現不好
應用場景 金融、氣象等


免責聲明!

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



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