本文不涉及線性回歸的具體原理,只通過python**實現演算法,並且沒有用到機器學習庫,根據演算法流程一步一步實現。
# 載入資料
defloaddata
(filename)
:file
=open
(filename)
num =
len(
file
.readline(
).split(
'\t'))
-1# 特徵的個數
x =# 資料
y =# 標籤
# 遍歷每一條資料
for i in
file
.readlines():
xi =
# 第i條資料
xif = i.strip(
).split(
'\t'
)# 第j個特徵或標籤
for j in
range
(num)
:float
(xif[j]))
float
(xif[-1
]))return x, y
# 計算直線係數
defregress
(x, y)
: x = np.mat(x)
y = np.mat(y)
.t xtx = x.t * x
# 如果是奇異矩陣
if np.linalg.det(xtx)
==0.0
:return
w = xtx.i *
(x.t * y)
return w
# 繪圖
defshow
(x, y, w)
: x = np.mat(x)
y = np.mat(y)
fig = plt.figure(
) ax = fig.add_subplot(
111)
# 散點圖
ax.scatter(x[:,
1].flatten(
).a[0]
, y.t[:,
0].flatten(
).a[0]
) x2 = x.copy(
) x2.sort(0)
# 排序
y_hat = x2 * w # **值
ax.plot(x2[:,
1], y_hat)
# 直線圖
plt.show(
)
# 區域性加權線性回歸
deflwlr
(p, x, y, k=
0.01):
x = np.mat(x)
y = np.mat(y)
.t num = np.shape(x)[0
]# 資料個數
weights = np.mat(np.eye(
(num)))
# 權重矩陣
for j in
range
(num)
:
diff = p - x[j,:]
weights[j,j]
= np.exp(diff * diff.t /(-
2.0* k**2)
) xtx = x.t *
(weights * x)
if np.linalg.det(xtx)
==0.0
:return
ws = xtx.i *
(x.t *
(weights * y)
)return p * ws
# 嶺回歸
defridgeregress
(x, y, lam=
0.2)
: xtx = x.t * x
denom = xtx + eye(np.shape(x)[1
])* lam
if np.linalg.det(denom)
==0.0
:return
w = denom.i *
(x.t * y)
return w
python實現線性回歸
定義 線性回歸在假設特徵滿足線性關係,根據給定的訓練資料訓練乙個模型,並用此模型進行 文中只介紹了簡單的概念,不涉及公式的證明等。從最簡單的一元線性關係介紹,假設有一組資料型態為 y theta x,其中 x y 我們根據 x,y 模擬出近似的 theta 引數值,進而得到 y theta x 模型...
python實現線性回歸
線性回歸模型是最簡單的機器學習模型,基礎可以從線性回歸模型開始入手,慢慢地過渡到非線性回歸以及神經網路模型。1.概念 2.線性回歸 簡單回歸 乙個自變數輸入,y x是一對一的關係,對映到幾何上來說就是二維座標系的直線方程,可表示為y 多元回歸 多個自變數,改變維度的大小。即 3.最小二乘法 通過向量...
python實現線性回歸
線性回歸模型是機器學習中最基礎的演算法,同時也在工業上得到很大應用。編碼實現該方法,可以對其有個透徹理解。回歸模型 目標函式 對目標函式求偏導 更新引數 樣本矩陣表示 python 實現 import numpy as np class linear object def init self sel...