對於之前在分類問題中有邏輯回歸,而對於這個線性回歸以前一般是先講述,將線性回歸的結果通過函式對映到(0,1)區間,再以0.5作為區分形成分類問題。
具體的計算方法,在以前的blogs提到過,參考:
下面就直接實戰
跟之前一樣,第一步匯入資料。
def loaddataset(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 standregres(xarr,yarr):
xmat = mat(xarr); ymat = mat(yarr).t
xtx = xmat.t*xmat
if linalg.det(xtx) == 0.0:
print "this matrix is singular, cannot do inverse"
return
ws = xtx.i * (xmat.t*ymat)
return ws
這邊先計算了xtx的行列式,考慮其是否可逆。對於ws的計算化簡一下就是上面的式子,這邊x跟θ都是向量可以互換。linalg是numpy中提供的線性代數的庫
執行:
>>> import regression
>>> xarr,yarr = regression.loaddataset('ex0.txt')
>>> ws = regression.standregres(xarr,yarr)
>>> ws
matrix([[ 3.00774324],
[ 1.69532264]])
這樣我們的擬合函式就計算出來了.
線性回歸有乙個問題就是可能出現欠擬合的問題,如果資料欠擬合的話,那就不能取得很好的**效果,所以引入一些偏差,從而降低**的均方誤差。
區域性加權也就是給每個點賦予一定的權重,離**點靠近的點權重大一些,採用高斯核。
具體**如下:
def lwlr(testpoint,xarr,yarr,k=1.0):
xmat = mat(xarr); ymat = mat(yarr).t
m = shape(xmat)[0]
weights = mat(eye((m)))
for j in range(m): #next 2 lines create weights matrix
diffmat = testpoint - xmat[j,:] #
weights[j,j] = exp(diffmat*diffmat.t/(-2.0*k**2))
xtx = xmat.t * (weights * xmat)
if linalg.det(xtx) == 0.0:
print "this matrix is singular, cannot do inverse"
return
ws = xtx.i * (xmat.t * (weights * ymat))
return testpoint * ws
線性回歸比較容易,在深度學習入門的時候就是線性回歸,書的後續的幾個例子挺好的,後續介紹。 機器學習(2) 回歸演算法 回歸分析
在統計學中,回歸分析 regression analysis 指的是確定兩種或兩種以上變數間相互依賴的定量關係的一種統計分析方法。回歸分析按照涉及的變數的多少,分為一元回歸和多元回歸分析 按照因變數的多少,可分為 簡單回歸 分析和多重回歸分析 按照 自變數和 因變數之間的關係型別,可分為 線性回歸 ...
《機器學習實戰》學習筆記 10 回歸 嶺回歸
機器學習實戰 學習筆記 10 回歸 嶺回歸 縮減方法可以去除不重要的引數 備註 同樣,為使用嶺回歸和縮減技術,首先需要對特徵做標準化處理,標準化使得每維度下的特徵有相同的重要性,具體 所有特徵減去各自的均值並除以方差 機器學習實戰 回歸 from numpy import def loaddatas...
《機器學習實戰》學習筆記 12 回歸 樹回歸
機器學習實戰 學習筆記 12 回歸 樹回歸 分類與回歸樹 classification and regression trees,cart 是由四人幫leo breiman,jerome friedman,richard olshen與charles stone於1984年提出,既可用於分類也可用於...