python實現線性回歸

2021-10-19 06:19:12 字數 2181 閱讀 8419

本文不涉及線性回歸的具體原理,只通過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...