線性回歸和區域性加權線性回歸

2021-07-15 10:36:42 字數 1954 閱讀 6815

#coding=utf-8

import ccsql

from numpy import *

def load_data(filename):

#讀取資料

numfeat = len(open(filename).readline().split('\t')) - 1

datamat = ; labelmat =

fr = open(filename)

for line in fr.readlines():

linearr =

curline = line.strip().split('\t')

for i in range(numfeat):

return datamat,labelmat

def standard_regres(data,label):

'''標準線性回歸'''

#基於最小二乘法

x=mat(data);y=mat(label).t

xtx=x.t*x

#計算這個因為回歸係數方程w=[(x.tx)^-1]*x.t*y

#要保證xtx不是奇異矩陣

if linalg.det(xtx)==0.0:

#判斷xtx是否是奇異矩陣

#linalg.det()計算行列式的值

print 'this matrix is singular, cannot do inverse'

return

regression_weights=xtx.i*(x.t*y)

#回歸係數求得的是2*1矩陣

#因為樣本資料每一行是1*2 ,例如:[1.000000 0.73833]

#其中前面的1是偏移量,所給的資料中每一行的第乙個值都是1.

return regression_weights

def lwlr(test_point,x,y,k=1.0):

'''區域性加權線性回歸'''

x=mat(x);y=mat(y).t

m=shape(x)[0]

weights=mat(eye((m)))

# m階單位矩陣

for j in range(m):

diff_mat=test_point-x[j,:]

#矩陣差

weights[j,j]=exp(diff_mat*diff_mat.t/(-2.0*k**2))

#計算對應點權重。高斯核w(i,i)=exp[|x(i)-x|/(-2k^2)]

# k決定了對附近的點賦予多大的權重

# 換個說法 k 應該是乙個區域性範圍,也就是『區域性加權』中的區域性的範圍

# k足夠小回歸曲線就應該接近於折線

xtx=x.t*(weights*x)

if linalg.det(xtx)==0.0:

#計算行列式的值

print 'this matrrix is singular,cannot do inverse'

return

regression_weights=xtx.i*(x.t*(weights*y))

estimate=test_point*regression_weights

#估值就等於測試點乘以回歸係數

return estimate

#import matplotlib.pyplot as plt

#fig=plt.figure()

#ax=fig.add_subplot(111)

#x=mat(x);y=mat(y)

#ax.scatter(x[:,1].flatten().a[0],y.t[:,0].flatten().a[0])

#x0=x[:,1].argsort(0)

#x1=x[x0][:,0,:]

#ax.plot(x1[:,1],yh[x0],'red')

#plt.show()

區域性加權線性回歸

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

區域性加權線性回歸

區域性加權線性回歸是機器學習裡的一種經典的方法,彌補了普通線性回歸模型欠擬合或者過擬合的問題。機器學習裡分為無監督學習和有監督學習,線性回歸裡是屬於有監督的學習。普通的線性回歸屬於引數學習演算法 parametric learning algorithm 而區域性加權線性回歸屬於非引數學習演算法 n...

區域性加權線性回歸

區域性加權回歸 locally weighted linear regression,lwr 是一種非引數學習方法 在 新樣本值時候每次都會重新訓練資料得到新的引數值,也就是說每次 新樣本都會依賴訓練資料集合,所以每次得到的引數值是不確定的。注 引數學習方 在訓練完成所有資料後得到一系列訓練引數,然...