iT邦幫忙

2022 iThome 鐵人賽

DAY 10
0
AI & Data

人類學習機器學習的學習筆記 with Python系列 第 10

Day10 線性迴歸Linear Regression(5)--Python建立線性迴歸模型

  • 分享至 

  • xImage
  •  

載入套件

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.linear_model import LinearRegression
sns.set() #設定繪圖模板

生成模擬資料

先由簡單線性迴歸模型的資料模擬開始,利用y = ax + b的方式生成資料,以下為散佈在斜率為2,截距為3的直線上,加上隨機生成的數值產生的模擬資料。

rng = np.random.RandomState(3)  #設定種子,在rng下生成資料就不用重複設定
x = 10 * rng.rand(50)           #rand() 生成0~1之間的隨機數
y = 3 + 2 * x + rng.randn(50)   #randn()生成常態分佈的隨機數

繪製資料的散佈圖(Scatter Plot)

plt.scatter(x, y)               #畫出x與y的散佈圖
plt.show()

https://ithelp.ithome.com.tw/upload/images/20220916/20151276g2kaQYuXaI.png

以Scikit-Learn的LinearRegression建立模型

model = LinearRegression(fit_intercept = True)

model.fit(x[:, np.newaxis], y)             #將x的資料轉換為一個column,建立模型

xfit = np.linspace(0, 10, 1000)            #生成1000個0~10的等差數列
yfit = model.predict(xfit[:, np.newaxis])  #以建立好的模型生成相對應的預測值

plt.scatter(x, y)
plt.plot(xfit, yfit, color = "red")        #畫出建立好的迴歸直線
plt.show()

https://ithelp.ithome.com.tw/upload/images/20220916/20151276am587vpV4A.png

模型參數:

print("Slope:", round(model.coef_[0], 3))
print("Intercept:", round(model.intercept_, 3))

https://ithelp.ithome.com.tw/upload/images/20220916/20151276C842BDEfD2.png
因一開始生成資料時假設資料為線性的,因此得到的結果與我們設定的截距與斜率非常接近。

多元線性迴歸模型(與簡單線性迴歸模型的語法相似)

rng = np.random.RandomState(1)
X = 10 * rng.rand(10, 3)          #生成10x3的X
y = 0.5 + np.dot(X, [1.5, -2, 1]) #np.dot()執行矩陣乘法

model = LinearRegression(fit_intercept = True)
model.fit(X, y)

print(round(model.intercept_, 2))
print(model.coef_)

上一篇
Day9 線性迴歸Linear Regression(4)--幾個常見的潛在問題
下一篇
Day11 K-近鄰演算法(K Nearest Neighbors, KNN)--模型介紹
系列文
人類學習機器學習的學習筆記 with Python30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言