之後陸續寫一些機器學習演算法
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...