python實現線性回歸

2021-10-08 06:20:25 字數 3588 閱讀 4890

之後陸續寫一些機器學習演算法

import numpy as np

import matplotlib.pyplot as plt

# 定義函式

defmodel

(a, b, x)

:return a * x + b

defcost_function

(a, b, x, y)

: n =

5# 代表樣本的數目

return

0.5/ n *

(np.square(y - a * x - b)).

sum(

)def

optimize

(a, b, x, y)

: n =

5 alpha =1e-

1# 步長

y_hat = model(a, b, x)

da =

1/ n *((

(y_hat - y)

* x)

.sum()

) db =

1/ n *

((y_hat - y)

.sum()

) a = a - alpha * da

b = b - alpha * db

return a, b

# 讀入資料 設定初始值

x =[

13854

,12213

,11009

,10655

,9503

]# 程式設計師工資,順序為北京,上海,杭州,深圳,廣州

x = np.reshape(x,(5

,1))

/10000.0

y =[

21332

,20162

,19138

,18621

,18016

]# 演算法工程師,順序和上面一致

y = np.reshape(y,(5

,1))

/10000.0

a =0

b =0

# 訓練模型的主要步驟

defiterate

(a, b, x, y, times)

:for i in

range

(times)

: a, b = optimize(a, b, x, y)

y_hat = model(a, b, x)

cost = cost_function(a, b, x, y)

print

(a, b, cost)

plt.scatter(x, y)

plt.plot(x, y_hat)

return a, b

# 測試

a, b = iterate(a, b, x, y,

10000

)plt.show(

)# 模型評價 ssr/sst

y_hat = model(a, b, x)

y_bar = y.mean(

)sst = np.square(y - y_bar)

.sum()

ssr = np.square(y_hat - y_bar)

.sum()

sse = np.square(y_hat - y)

.sum()

r = ssr / sst

print

(r)

import numpy as np

from sklearn.linear_model import linearregression

import matplotlib.pyplot as plt

x =[

13854

,12213

,11009

,10655

,9503

]x = np.reshape(x,(5

,1))

/10000.0

y =[

21332

,20162

,19138

,18621

,18016

]y = np.reshape(y,(5

,1))

/10000.0

# 呼叫庫中模型

lr = linearre## 標題gression()

# 訓練模型

lr.fit(x, y)

y_hat = lr.predict(x)

# 畫圖

plt.scatter(x, y)

plt.plot(x, y_hat)

plt.show(

)# 輸出模型評價

print

(lr.score(x, y)

)

import numpy as np

import matplotlib.pyplot as plt

defmodel

(a, b, x)

:return a * x + b

x =[

13854

,12213

,11009

,10655

,9503

]y =

[21332

,20162

,19138

,18621

,18016

]# 將資料轉換成對應的矩陣形式

x = np.reshape(x,(5

,1))

y = np.reshape(y,(5

,1))

x1 =

y1 =

for i in

range

(len

(x))

:list

(x[i]))

for i in

range

(len

(y))

:list

(y[i]))

print

(x1)

print

(y1)

plt.plot(x1, y,

'ks'

)for i in

range

(len

(x1)):

x1[i]

.insert(0,

1)x = np.mat(x1)

y = np.mat(y1)

# 代入公式進行計算

end =

(x.t * x)

.i * x.t * y

print

(end)

end = end.geta(

).tolist(

)x2 =

[13854

,12213

,11009

,10655

,9503

]x2 = np.reshape(x2,(5

,1))

y_hat = model(end[1]

, end[0]

, x2)

plt.plot(x2, y_hat)

plt.show(

)

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...