區域性加權回歸的權重計算公式
高斯核函式作為權重矩陣
下面是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值時,如果採用的是傳統的 線性回歸模型,那麼 ...