机器学习基础-一元线性回归-01
生活随笔
收集整理的這篇文章主要介紹了
机器学习基础-一元线性回归-01
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
回歸分析 Regression
一元線性回歸
? 回歸分析(regression analysis)用來建立方程模擬兩
個或者多個變量之間如何關聯
? 被預測的變量叫做:因變量(dependent variable),
輸出(output)
? 被用來進行預測的變量叫做: 自變量(independent
variable), 輸入(input)
? 一元線性回歸包含一個自變量和一個因變量
? 以上兩個變量的關系用一條直線來模擬
? 如果包含兩個以上的自變量,則稱作多元回歸分析
(multiple regression)
代價函數Cost Function
梯度下降法Gradient Descent
梯度下降法-一元線性回歸代碼
import numpy as np import matplotlib.pyplot as plt # 載入數據 data = np.genfromtxt("data.csv", delimiter=",") x_data = data[:,0] y_data = data[:,1] plt.scatter(x_data,y_data) plt.show() # 學習率learning rate lr = 0.0001 # 截距 b = 0 # 斜率 k = 0 # 最大迭代次數 epochs = 50# 最小二乘法 def compute_error(b, k, x_data, y_data):totalError = 0for i in range(0, len(x_data)):totalError += (y_data[i] - (k * x_data[i] + b)) ** 2return totalError / float(len(x_data)) / 2.0def gradient_descent_runner(x_data, y_data, b, k, lr, epochs):# 計算總數據量m = float(len(x_data))# 循環epochs次for i in range(epochs):b_grad = 0k_grad = 0# 計算梯度的總和再求平均for j in range(0, len(x_data)):b_grad += (1/m) * (((k * x_data[j]) + b) - y_data[j])k_grad += (1/m) * x_data[j] * (((k * x_data[j]) + b) - y_data[j])# 更新b和kb = b - (lr * b_grad)k = k - (lr * k_grad)# 每迭代5次,輸出一次圖像if i % 5==0:print("epochs:",i)plt.plot(x_data, y_data, 'b.')plt.plot(x_data, k*x_data + b, 'r')plt.show()return b, k print("Starting b = {0}, k = {1}, error = {2}".format(b, k, compute_error(b, k, x_data, y_data))) print("Running...") b, k = gradient_descent_runner(x_data, y_data, b, k, lr, epochs) print("After {0} iterations b = {1}, k = {2}, error = {3}".format(epochs, b, k, compute_error(b, k, x_data, y_data)))# 畫圖 # plt.plot(x_data, y_data, 'b.') # plt.plot(x_data, k*x_data + b, 'r') # plt.show()
sklearn-一元線性回歸代碼
from sklearn.linear_model import LinearRegression import numpy as np import matplotlib.pyplot as plt # 載入數據 data = np.genfromtxt("data.csv", delimiter=",") x_data = data[:,0] y_data = data[:,1] plt.scatter(x_data,y_data) plt.show() print(x_data.shape) x_data = data[:,0,np.newaxis] y_data = data[:,1,np.newaxis] # 創建并擬合模型 model = LinearRegression() model.fit(x_data, y_data) # 畫圖 plt.plot(x_data, y_data, 'b.') plt.plot(x_data, model.predict(x_data), 'r') plt.show()總結
以上是生活随笔為你收集整理的机器学习基础-一元线性回归-01的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PyTorch基础-猫狗分类实战-10
- 下一篇: 机器学习基础-多元线性回归-02