機器學習 嶺回歸及Python實現

2021-10-01 09:39:12 字數 2418 閱讀 1352

嶺回歸計算公式

下面是python**

# 嶺回歸

import numpy as np

import os

os.chdir(

'...\\machinelearning\\regression'

)# 設定路徑

# 建立資料集

defloaddataset

(filename)

: firstline =

open

(filename)

.readline(

).strip(

).split(

'\t'

)# 讀取第一行

numfeat =

len(firstline)-1

# 特徵的數量

datamat =

labelmat =

fr =

open

(filename)

for line in fr.readlines():

linearr=

# datamat的一行

curline=line.strip(

).split(

'\t'

)# curline是乙個list ['1.000000', '0.067732', '3.176513']

for i in

range

(numfeat)

:float

(curline[i]))

# linearr ['0.067732', '3.176513']

float

(curline[-1

]))return datamat,labelmat

# 呼叫函式,匯入資料

xarr,yarr=loaddataset(

'abalone.txt'

)# xarr[0:2]

# 返回前兩行資料 [[1.0, 0.067732], [1.0, 0.42781]]

# 給定lambda下嶺回歸權重求解

defridgeregres

(xmat,ymat,lam=

0.2)

:# 傳入的引數為矩陣

n=np.shape(xmat)[1

]# 特徵數量為2

denom = xmat.t*xmat+ np.eye(n)

*lam

if np.linalg.det(denom)==0

:print

('矩陣不可逆'

)return

ws=denom.i*

(xmat.t*ymat)

return ws # 2*1的權重

# 主要函式ridgetest:用處是lambda的選擇

# 返回numtestpts個不同的lambda值下的權重矩陣

defridgetest

(xarr,yarr,numtestpts=30)

: xmat=np.mat(xarr)

ymat=np.mat(yarr)

.t n = np.shape(xmat)[1

]# xmat的列數為2

# 嶺回歸需要採用標準化處理

ymean= np.mean(ymat,0)

# 引數0表示壓縮行,對矩陣的列求平均值

ymat=ymat-ymean # 得到ymat

xmean=np.mean(xmat,0)

xvar=np.var(xmat,0)

xmat=

(xmat-xmean)

/xvar # 得到xmat

wmat=np.zeros(

(numtestpts,n)

)# 初始化權重矩陣30*2

for i in

range

(numtestpts)

:# i從0-29

ws=ridgeregres(xmat,ymat,np.exp(i-10)

)# lam指數級變化從exp(-10)到exp(19)

wmat[i,:]

=ws.t

return wmat

# 應用

ridgeweights = ridgetest(xarr,yarr,30)

# 求出權重矩陣

# 畫圖

import matplotlib.pyplot as plt

fig = plt.figure(

)ax=fig.add_subplot(

111)

ax.plot(ridgeweights)

plt.show(

)

機器學習 嶺回歸和LASSO回歸

1.用矩陣表示多元線性回歸 y bx a q b y bx t y bx 達到最小時的b值。也即是殘差平方和最小時。b bi 的值。可以證明b的最小二乘估計 xtx 1xty 其中 xtx 1為廣義逆。1.出現多重共線性2.當n 嶺回歸 ridge regression 先對資料做標準化 b k x...

機器學習 監督學習 (回歸)嶺回歸

1 嶺回歸 標準方程法 import numpy as np from numpy import genfromtxt import matplotlib.pyplot as plt 讀入資料 data genfromtxt r longley.csv delimiter 切分資料 x data d...

機器學習 softmax回歸 python實現

恢復內容開始 softmax regression 可以看做是 lr 演算法在多分類上的推廣,即類標籤 y 的取值大於或者等於 2。假設資料樣本集為 left y right left x y right left x y right left x y right right 對於 sr 演算法,其...