機器學習 區域性加權線性回歸及Python實現

2021-10-01 09:39:12 字數 2357 閱讀 2901

區域性加權回歸的權重計算公式

高斯核函式作為權重矩陣

下面是python**:

# 區域性加權回歸 lwlr (完整版)

import numpy as np

import os

os.chdir(

'...\\machinelearning\\regression'

)firstline =

open

('ex0.txt'

).readline(

).strip(

).split(

'\t'

)# 讀取第一行

numfeat =

len(firstline)-1

# 特徵的數量

# 建立資料

datamat =

labelmat =

fr =

open

('ex0.txt'

)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

]))# 計算某個樣本點的**值

deflwlr

(testpoint,datamat,labelmat,k=

1.0)

:# k為高斯核函式的引數

xmat = np.mat(datamat)

ymat = np.mat(labelmat)

.t m = np.shape(xmat)[0

]# m=200

weights = np.mat(np.eye(m)

)# 初始化權重矩陣

for j in

range

(m):

diffmat = testpoint - xmat[j,:]

weights[j, j]

= np.exp(diffmat*diffmat.t /(-

2.0*k**2)

)# 對testpoint樣本計算出權重矩陣 200*200 且只有對角元素有值

xtx = xmat.t *

(weights * xmat)

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

:print

('矩陣不可逆'

)return

ws=xtx.i*

(xmat.t*

(weights*ymat)

)# 計算ws的估計值 2*1矩陣

return testpoint*ws # testpoint樣本點的**值yhat

# 計算整個樣本的**值

deflwlrtest

(testarr,datamat,labelmat,k=

1.0)

:# testarr為待測試的矩陣,例子中即為datamat

m = np.shape(testarr)[0

]# 待測矩陣的行數 datamat共200行

yhat=np.zeros(m)

# 初始化**值 1*m數值為0的矩陣

for i in

range

(m):

yhat[i]

=lwlr(testarr[i]

,datamat,labelmat,k)

return yhat # ndarray

# 實際操作

# 採用第乙個樣本,k分別取1.0,0.001,計算該樣本的**值

lwlr(datamat[0]

,datamat,labelmat,

1.0)

# 返回matrix([[3.12204471]])

lwlr(datamat[0]

,datamat,labelmat,

0.001

)# 返回matrix([[3.20175729]])

# 得到整個樣本的**值 1*200 ndarray

yhat=lwlrtest(datamat,datamat,labelmat,

0.003

)# 第乙個引數意思是待測試矩陣,第二個引數意思是樣本資料

機器學習 區域性加權線性回歸

一 問題引入 我們現實生活中的很多資料不一定都能用線性模型描述。依然是房價問題,很明顯直線非但不能很好的擬合所有資料點,而且誤差非常大,但是一條類似二次函式的曲線卻能擬合地很好。為了解決非線性模型建立線性模型的問題,我們 乙個點的值時,選擇與這個點相近的點而不是所有的點做線性回歸。基於這個思想,便產...

機器學習 區域性加權線性回歸

線性回歸的乙個問題時又可能出現欠擬合現象,為了解決這個問題,我們可以採用乙個方法是區域性加權線性回歸 locally weighted linner regression 簡稱lwlr。該演算法的思想就是給帶 點附近的每乙個點賦予一定的權值,然後按照簡單線性回歸求解w的方法求解,與knn一樣,這種演...

區域性加權線性回歸

簡單來說,這個過程其實是在先擬合出一條曲線,然後再用這個曲線去 需要 的點。但是如果這個曲線擬合得不好 或者說樣本資料含有大量噪音 那麼這個 結果就會很差。區域性加權線性回歸 對於乙個資料集合 x0,y0 x1,y1 xm,ym 我們 它在x點時對應的y值時,如果採用的是傳統的 線性回歸模型,那麼 ...