機器學習演算法之線性回歸

2021-08-14 19:44:19 字數 3664 閱讀 1812

有監督學習 => 學習樣本為 :d=

(xi,

yi)n

i=1 輸出/**的結果yi為連續值變數

需要學習對映ƒ :

χ →

y

假定輸入x和輸出y之間有線性相關關係

對於給定的x,**其輸出y^

=f(x

)=wt

x+b(可以利用最小二乘法對w和b進行估計)

根據自變數個數可以將線性回歸主要分為兩種:一元線性回歸和多元線性回歸。

一元線性回歸只有乙個自變數,而多元線性回歸有多個自變數。擬合多元線性回歸的時候,可以利用多項式回歸或曲線回歸。

使用sklearn自帶的房價資料庫上使用線性回歸,多項式回歸

from sklearn import datasets

boston = datasets.load_boston() # 載入房價資料

x = boston.data

y = boston.target

print (x

.shape)

print (y

.shape)

輸出:

from sklearn.model_selection import train_test_split

x_train, x_test, y_train, y_test = train_test_split(x, y ,test_size = 1/3.,random_state = 8)

from sklearn.linear_model import linearregression

from sklearn.model_selection import cross_val_score

# 線性回歸

lr = linearregression(normalize=true,n_jobs=2)

scores = cross_val_score(lr,x_train,y_train,cv=10,scoring='neg_mean_squared_error') #計算均方誤差

print (scores.mean())

lr.fit(x_train,y_train)

lr.score(x_test,y_test)

輸出:

lr_featurizer = polynomialfeatures(degree=k) # 用於產生多項式 degree:最高次項的次數

print ('-----%d-----' % k)

x_pf_train = lr_featurizer.fit_transform(x_train)

x_pf_test = lr_featurizer.transform(x_test)

pf_scores = cross_val_score(lr,x_pf_train,y_train,cv=10,scoring='neg_mean_squared_error')

print (pf_scores.mean())

lr.fit(x_pf_train,y_train)

print (lr.score(x_pf_test,y_test))

print (lr.score(x_pf_train,y_train))

輸出:

從上面的結果可以看出,當k=1時,為線性回歸;

當k=2時,效果比線性回歸好一點;

當k=3時,出現過擬合

lasson回歸

# 正則化解決k=3的過擬合現象

lr_featurizer = polynomialfeatures(degree=3) # 用於產生多項式 degree:最高次項的次數

x_pf_train = lr_featurizer.fit_transform(x_train)

x_pf_test = lr_featurizer.transform(x_test)

# lasso回歸:(也叫線性回歸的l1正則化)

from sklearn.linear_model import lasso

for a in [i/10000

for i in range(0,6)]:

print ('----%f-----'% a)

lasso = lasso(alpha=a,normalize=true)

pf_scores = cross_val_score(lasso,x_pf_train,y_train,cv=10,scoring='neg_mean_squared_error')

print (pf_scores.mean())

lasso.fit(x_pf_train,y_train)

print (lasso.score(x_pf_test,y_test))

print (lasso.score(x_pf_train,y_train))

輸出:

從上面的結果可以看出,lasson正則化處理後,模型的評價會提高很多

嶺回歸

# 正則化解決k=3的過擬合現象

lr_featurizer = polynomialfeatures(degree=3) # 用於產生多項式 degree:最高次項的次數

x_pf_train = lr_featurizer.fit_transform(x_train)

x_pf_test = lr_featurizer.transform(x_test)

from sklearn.linear_model import ridge

# 嶺回歸

for a in [0,0.005]:

print ('----%f-----'% a)

ridge = ridge(alpha=a,normalize=true)

pf_scores = cross_val_score(ridge,x_pf_train,y_train,cv=10,scoring='neg_mean_squared_error')

print (pf_scores.mean())

ridge.fit(x_pf_train,y_train)

print (ridge.score(x_pf_test,y_test))

print (ridge.score(x_pf_train,y_train))

輸出:

從上面的結果可以看出,對比alpha=0 和 alpha = 0.0005的情況,發現ridge正則化處理後,模型的評價會提高很多。

Python機器學習演算法之線性回歸

1.假設銀行貸款,工資和年齡決定了你的貸款額度。這時候我們就需要找到工資,年齡和額度之間的關聯。2.在x,y,z軸中我們要找到乙個擬合面,使得x,y,z的值盡可能的在擬合面上。x1表示工資,x2表示年齡。1表示工資的引數,2表示年齡的引數,0 表示偏執項。3.由上面公式可以得出 4.誤差定義 真實值...

機器學習之線性回歸

訓練樣例 x y 輸入變數 特徵 x ps n 1行,1 列 輸出變數 目標變數 y訓練樣例總數 m 特徵維度 n第 i 個訓練樣例 x i y i 所有訓練樣例的輸入變數組成的矩陣 x ps m行,n 1 列,每行是 x i t 所有訓練樣例的輸出變數組成的矩陣 y ps m行,1 列 下表是某地...

機器學習之線性回歸

線性回歸就是用線性方程去擬合一組資料,x 的最高端是1,用方程可以表示為 h x 0 1x1 n xn我們令 x0 1則上式可以改寫為 h x i 0n ixi tx 既然是擬合的模型,則肯定會存在不符合該模型的點,第 i 個點的真實值與模型 的值之間的差稱為誤差 e h x i y i 假設總共有...