日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

[云炬python3玩转机器学习] 6-4 在线性回归模型中使用梯度下降法

發布時間:2025/3/15 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [云炬python3玩转机器学习] 6-4 在线性回归模型中使用梯度下降法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在線性回歸模型中使用梯度下降法

In?[1]:

import numpy as np import matplotlib.pyplot as plt import datetime;print ('Run by CYJ,',datetime.datetime.now()) Run by CYJ, 2022-01-26 12:10:39.645986

In?[2]:

np.random.seed(666) x = 2 * np.random.random(size=100) y = x * 3. + 4. + np.random.normal(size=100)

In?[3]:

X = x.reshape(-1, 1)

In?[4]:

X[:20]

Out[4]:

array([[1.40087424],[1.68837329],[1.35302867],[1.45571611],[1.90291591],[0.02540639],[0.8271754 ],[0.09762559],[0.19985712],[1.01613261],[0.40049508],[1.48830834],[0.38578401],[1.4016895 ],[0.58645621],[1.54895891],[0.01021768],[0.22571531],[0.22190734],[0.49533646]])

In?[5]:

y[:20]

Out[5]:

array([8.91412688, 8.89446981, 8.85921604, 9.04490343, 8.75831915,4.01914255, 6.84103696, 4.81582242, 3.68561238, 6.46344854,4.61756153, 8.45774339, 3.21438541, 7.98486624, 4.18885101,8.46060979, 4.29706975, 4.06803046, 3.58490782, 7.0558176 ])

In?[6]:

plt.scatter(x, y) plt.show()

使用梯度下降法訓練

In?[7]:

def J(theta, X_b, y):try:return np.sum((y - X_b.dot(theta))**2) / len(X_b)except:return float('inf')

In?[8]:

def dJ(theta, X_b, y):res = np.empty(len(theta))res[0] = np.sum(X_b.dot(theta) - y)for i in range(1, len(theta)):res[i] = (X_b.dot(theta) - y).dot(X_b[:,i])return res * 2 / len(X_b)

In?[9]:

def gradient_descent(X_b, y, initial_theta, eta, n_iters = 1e4, epsilon=1e-8):theta = initial_thetacur_iter = 0while cur_iter < n_iters:gradient = dJ(theta, X_b, y)last_theta = thetatheta = theta - eta * gradientif(abs(J(theta, X_b, y) - J(last_theta, X_b, y)) < epsilon):breakcur_iter += 1return theta

In?[10]:

X_b = np.hstack([np.ones((len(x), 1)), x.reshape(-1,1)]) initial_theta = np.zeros(X_b.shape[1]) eta = 0.01theta = gradient_descent(X_b, y, initial_theta, eta)

In?[11]:

theta

Out[11]:

array([4.02145786, 3.00706277])

封裝我們的線性回歸算法

In?[12]:

from playML.LinearRegression import LinearRegressionlin_reg = LinearRegression() lin_reg.fit_gd(X, y)

Out[12]:

LinearRegression()

In?[13]:

lin_reg.coef_

Out[13]:

array([3.00706277])

In?[14]:

lin_reg.intercept_

Out[14]:

4.021457858204859

In?[?]:

?

總結

以上是生活随笔為你收集整理的[云炬python3玩转机器学习] 6-4 在线性回归模型中使用梯度下降法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。