載入資料
data = genfromtxt(r"\delivery.csv"
, delimiter=
',')
觀察一下資料
x_data為特徵值,y_data為標籤值
所以應該設定3個引數θ0,θ1,θ2
lr = 0.0001
# 引數
theta0 = 0
theta1 = 0
theta2 = 0
# 最大迭代次數
epochs = 1000
接下來與一元線性回歸一樣,用最小二乘和梯度下降求解引數
:# 計算總資料量
m =float
(len
(x_data)
)for i in
range
(epochs)
: theta0_grad =
0 theta1_grad =
0 theta2_grad =
0# 計算梯度的總和再求平均
for j in
range(0
,len
(x_data)):
theta0_grad +=-(
1/m)
*(y_data[j]
-(theta1 * x_data[j,0]
+ theta2*x_data[j,1]
+ theta0)
) theta1_grad +=-(
1/ m)
* x_data[j,0]
*(y_data[j]
-(theta1 * x_data[j,0]
+ theta2 * x_data[j,1]
+ theta0)
) theta2_grad +=-(
1/ m)
* x_data[j,1]
*(y_data[j]
-(theta1 * x_data[j,0]
+ theta2 * x_data[j,1]
+ theta0)
)#更新b和k
theta0 = theta0 -
(lr*theta0_grad)
theta1 = theta1 -
(lr*theta1_grad)
theta2 = theta2 -
(lr*theta2_grad)
return theta0, theta1, theta2
theta0, theta1, theta2 = gradient_descent_runner(x_data, y_data, theta0, theta1, theta2, lr, epochs)
畫圖
ax = plt.figure(
).add_subplot(
111, projection=
'3d'
)ax.scatter(x_data[:,
0], x_data[:,
1], y_data, c=
'r', marker=
'o', s=
100)
# 點為紅色三角形
x0 = x_data[:,
0]x1 = x_data[:,
1]# 生成網路矩陣
x0, x1 = np.meshgrid(x0, x1)
z = theta0 + x0 * theta1 + theta2
# 畫3d圖
ax.plot_su***ce(x0, x1, z)
# 設定座標軸
載入資料、切分資料與普通方法無異
建立模型
model = linear_model.linearregression(
)model.fit(x_data, y_data)
列印出相關資訊
# 係數
print
('coefficients:'
, model.coef_)
# 截距
print
('intercept:'
, model.intercept_)
對模型進行測試
畫圖,包括生成網格圖、3d圖,可以更好地觀察擬合效果
ax = plt.figure(
).add_subplot(
111, projection =
'3d'
)ax.scatter(x_data[:,
0], x_data[:,
1], y_data, c=
'r', marker=
'o', s=
100)
x0 = x_data[:,
0]x1 = x_data[:,
1]# 生成網路矩陣
x0, x1 = np.meshgrid(x0, x1)
z = model.intercept_ + x0 * model.coef_[0]
+ x1 * model.coef_[1]
# 畫3d圖
ax.plot_su***ce(x0, x1, z)
# 設定座標軸
梯度下降法 sklearn多元線性回歸
是我跟著網課學習自己敲得,資料來源delivery.csv我將會放在我的資源裡,大家有興趣可以試試 import numpy as np from numpy import genfromtxt from sklearn import linear model import matplotlib.p...
線性回歸與梯度下降法
原文 最近在看斯坦福的 機器學習 的公開課,這個課程是2009年的,有點老了,不過講的還是很好的,廓清了一些我以前關於機器學習懵懂的地方。我的一位老師曾經說過 什麼叫理解?理解就是你能把同乙個事情用自己的語言表達出來,並且能讓別人聽得懂。本著這樣的原則,同時也為了證明自己是 理解 的,於是決定打算在...
20191008 線性回歸 梯度下降法
不斷的迭代,還是波士頓房價 獲取資料 資料清洗預處理 劃分資料集 特徵工程 預估器流程 coef intercept 模型評估 from sklearn.datasets import load boston from sklearn.model selection import train tes...