在簡單的線性回歸演算法基礎上,若x代表的不是乙個單一的數值,而是乙個向量,下面給出張ppt圖
如圖所示,在多元線性回歸演算法中,x已成了乙個向量,自然y的表示式已經不再是之前簡單的一元二次方程,而我們所需要求得的**誤差也如下所示:
同簡單線性回歸一樣,只不過就是一維運算換成了向量運算。為了使得損失函式最小,接下來,我們來簡化下**值y
為了匹配成矩陣相乘的形式,從上圖我們可以看出的是,我們新增加了x0這個引數,代表i樣本第0個特徵恒為1,從而得到了最簡的**值y的表示式。
換成矩陣的形式,就如下:
接著我們把上述的表示式代換到求誤差的公式中,可得如下式子:
我們根據之前的最小二乘法類似的原理,對矩陣求導,可得到θ的表示式:
這個θ的求解,有個問題就是時間複雜度高,但不需要對資料做歸一化的處理,接下來分析下:
其中θ分為兩部分,第一部分成為截距,第二部分為係數,係數部分每乙個θ值對應原來樣本中的乙個特徵,這個係數從某種程度上來講,可以用於描述我們這些特徵對於最終樣本相應貢獻的程度是怎樣的,θ0與特徵無關只代表偏移。
import numpy as np
from .metrics import r2_score
class
linearregression:
def__init__
(self):
"""初始化linear regression模型"""
self.coef_ = none
self.intercept_ = none
self._theta = none
deffit_normal
(self, x_train, y_train):
"""根據訓練資料集x_train, y_train訓練linear regression模型"""
assert x_train.shape[0] == y_train.shape[0], \
"the size of x_train must be equal to the size of y_train"
x_b = np.hstack([np.ones((len(x_train), 1)), x_train])
self._theta = np.linalg.inv(x_b.t.dot(x_b)).dot(x_b.t).dot(y_train)
self.intercept_ = self._theta[0]
self.coef_ = self._theta[1:]
return self
defpredict
(self, x_predict):
"""給定待**資料集x_predict,返回表示x_predict的結果向量"""
assert self.intercept_ is
notnone
and self.coef_ is
notnone, \
"must fit before predict!"
assert x_predict.shape[1] == len(self.coef_), \
"the feature number of x_predict must be equal to x_train"
x_b = np.hstack([np.ones((len(x_predict), 1)), x_predict])
return x_b.dot(self._theta)
defscore
(self, x_test, y_test):
"""根據測試資料集 x_test 和 y_test 確定當前模型的準確度"""
y_predict = self.predict(x_test)
return r2_score(y_test, y_predict)
def__repr__
(self):
return
"linearregression()"
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
boston = datasets.load_boston()
x = boston.data
y = boston.target
x = x[y<50.0]
y = y[y<50.0]
from sklearn.linear_model import linearregression
lin_reg = linearregression()
lin_reg.fit(x_traiin, y_train)
lin_reg.coef_
lin_reg.intercept_
線性回歸演算法是典型的分類演算法,很多分類演算法中,線性回歸是基礎,線性回歸具有強解釋性,對資料有假設線性關係,且只能解決回歸問題。 多元線性回歸
多元線性回歸的基本原理和基本計算過程與一元線性回歸相同,但由於自變數個數多,計算相當麻煩,一般在實際中應用時都要借助統計軟體。介紹多元線性回歸的一些基本問題。但由於各個自變數的單位可能不一樣,比如說乙個消費水平的關係式中,工資水平 受教育程度 職業 地區 家庭負擔等等因素都會影響到消費水平,而這些影...
多元線性回歸
from numpy import genfromtxt 用來讀取資料轉化為矩陣 from sklearn import linear model 含有回歸的模型 datapath r c users qaq desktop delivery dummy.csv 路徑 deliverydata ge...
多元線性回歸
比如有乙個住房 的資料集,可能會有多個不同的模型用於擬合,選擇之一像是這種二次模型 0 1x 2x2,因為直線並不能很好的擬合這些資料。但是現在如果用二次函式去考慮,可能會想到二次函式在最高點之後會下降,但是 並不會下降,並不合理,那我們可以用 0 1x 2x2 3x3這樣的三次模型。如果像這樣選擇...