sklearn中實現隨機梯度下降法(多元線性回歸)


sklearn中實現隨機梯度下降法

隨機梯度下降法是一種根據模擬退火的原理對損失函數進行最小化的一種計算方式,在sklearn中主要用於多元線性回歸算法中,是一種比較高效的最優化方法,其中的梯度下降系數(即學習率eta)隨着遍歷過程的進行在不斷地減小。另外,在運用隨機梯度下降法之前需要利用sklearn的StandardScaler將數據進行標准化


#sklearn中實現隨機梯度下降多元線性回歸

#1-1導入相應的數據模塊
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(666)

#1-2導入相應的基礎訓練數據集

x=np.random.random(size=1000)
y=x*3.0+4+np.random.normal(size=1000)
x=x.reshape(-1,1)
from sklearn import datasets
d=datasets.load_boston()
x=d.data[d.target<50]
y=d.target[d.target<50]
from sklearn.model_selection import train_test_split
x_train1,x_test1,y_train1,y_test1=train_test_split(x,y,random_state=1)
#1-3進行數據的標准化
from sklearn.preprocessing import StandardScaler
stand1=StandardScaler()
stand1.fit(x_train1)
x_train_standard=stand1.transform(x_train1)
x_test_standard=stand1.transform(x_test1)
#1-4導入隨機梯度下降法的多元線性回歸算法進行數據的訓練和預測
from sklearn.linear_model import SGDRegressor
sgd1=SGDRegressor()
sgd1.fit(x_train_standard,y_train1)
print(sgd1.coef_)
print(sgd1.intercept_)
print(sgd1.score(x_test_standard,y_test1))
sgd2=SGDRegressor()
sgd2.fit(x_train1,y_train1)
print(sgd2.coef_)
print(sgd2.intercept_)
print(sgd2.score(x_test1,y_test1))

注解:對於多元回歸的隨機梯度下降法需要對數據進行向量化和標准化


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM