線性回歸即是我們希望能通過學習來得到乙個各屬性線性組合的函式,函式的各項係數表明了該屬性對於最後結果的重要性,可以用以下公式表達:yˆ
(ω,x
)=ω1
x1+ω
2x2+
...+
ωpxp
+b線性回歸試圖讓各個點到回歸直線上的距離和最小,即最小化均方誤差。可用以下公式描述
minω∥x
ω−y∥
22
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
from sklearn import datasets, linear_model
# 從datasets匯入資料
diabetes = datasets.load_diabetes()
diabetes.data.shape
(442, 10)
# 我們只去其中第三列資料使用
diabetes_x = diabetes.data[:, np.newaxis, 2]
diabetes_x.shape
(442, 1)
# 檢視前十個資料
diabetes_x[:10]
array([[ 0.06169621],
[-0.05147406],
[ 0.04445121],
[-0.01159501],
[-0.03638469],
[-0.04069594],
[-0.04716281],
[-0.00189471],
[ 0.06169621],
[ 0.03906215]])
# 將資料簡單分為訓練集和測試集,訓練集422個資料,測試集20個資料
diabetes_x_train = diabetes_x[:-20]
diabetes_x_test = diabetes_x[-20:]
# 將目標集合分為訓練集和測試集
diabetes_y_train = diabetes.target[:-20]
diabetes_y_test = diabetes.target[-20:]
建立乙個線性回歸模型例項
regr = linear_model.linearregression()
通過訓練集來訓練模型
regr.fit(diabetes_x_train, diabetes_y_train)
linearregression(copy_x=true, fit_intercept=true, n_jobs=1, normalize=false)
檢視回歸係數
print('coefficients:\t', regr.coef_)
print('intercept:\t',regr.intercept_)
coefficients: [ 938.23786125]
intercept: 152.918861826
也就是說,回歸之後得到的直線模型是 y=
938.24x+
152.92
統計學上把資料點與它在回歸直線上相應位置的差異稱為殘差,把每個殘差平方之後加起來 稱為殘差平方和,它表示隨機誤差的效應,下面來檢視一下殘差平方和。
rss = np.mean((regr.predict(diabetes_x_test) - diabetes_y_test)**2)
print('rss value:\t%.2f' %rss)
rss value: 2548.07
檢視r2
值
print("variance score: %.2f" % regr.score(diabetes_x_test, diabetes_y_test))
variance score: 0.47
繪製回歸圖
Scikit learn 學習心得(線性回歸)
一開始學習線性回歸的時候,是在matlab裡寫的,現在學習用python來做。scikit learn 的線性回歸怎麼用呢?開始參考的是這個 官方參考為 其實很簡單,主要有如下幾步 1,各種import import matplotlib.pyplot as plt import numpy as ...
通過scikit learn進行線性回歸嘗試
線性模型是在機器學習中最先接觸到的數學模型,通過對多組數值對進行擬合,從而最終得出自變數與因變數之間的線性關係。本片之中並不對線性模型進行闡述而是主要通過python的類庫scikit learn進行線性回歸的相關嘗試。1.資料來源匯入 我們在使用scikit learn的時候可以選擇類庫內部自帶的...
scikit learn 回歸分析 多元回歸
般線性回歸中,使用的假設函式是一元一次方程,也就是二維平面上的一條直線。但是很多時候可能會遇到直線方程無法很好的擬合資料的情況,這個時候可以嘗試使用多項式回歸。多項式回歸中,加入了特徵的更高次方 例如平方項或立方項 也相當於增加了模型的自由度,用來捕獲資料中非線性的變化。新增高階項的時候,也增加了模...