機械学習アルゴリズム戦闘 (scikit-learn バージョン) --- 線形回帰

目次

記事の目的:

1.ライブラリをインポートする 

2. データセットのインポート

3. トレーニング データのスケーリング/正規化

4、回帰モデルを作成して当てはめる

5、パラメータを表示

6、予測する

7. 視覚化 

[scikit-learn](https://scikit-learn.org/stable/index.html) と呼ばれる、オープンソースの商用利用可能な機械学習ツールキットがあります。このツールキットには、このコースで使用する多くのアルゴリズムの実装が含まれています。 

記事の目的:

scikit-learnを使用して勾配降下法を使用した線形回帰を実装する

線形回帰モデル SGDRegressor を使用した予測 - プログラマーが求めた

1.ライブラリをインポートする 

import numpy as np
#设计array对象中数据的精度
np.set_printoptions(precision=2)
#导入线性模型,LinearRegression,还有梯度下降函数SGDRegressor
from sklearn.linear_model import LinearRegression, SGDRegressor
#导入数据预处理库,使用正则化函数
from sklearn.preprocessing import StandardScaler
#导入数据集
from lab_utils_multi import  load_house_data
import matplotlib.pyplot as plt
dlblue = '#0096ff'; dlorange = '#FF9300'; dldarkred='#C00000'; dlmagenta='#FF40FF'; dlpurple='#7030A0'; 
plt.style.use('./deeplearning.mplstyle')

Scikit-learn には勾配降下回帰モデル [ sklearn.linear_model.SGDRegressor ](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.SGDRegressor.html#examples-using-sklearn-linear-model)があります。 -sgdregressor)。以前の勾配降下法の実装と同様に、このモデルは正規化された入力で最もよく機能します。[ sklearn.preprocessing.StandardScaler] (https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.StandardScaler.html#sklearn.preprocessing.StandardScaler) は、Z スコア正規化を実行します。ここでは「標準スコア」と呼びます。  

2. データセットのインポート

X_train, y_train = load_house_data()
X_features = ['size(sqft)','bedrooms','floors','age']

3. トレーニング データのスケーリング/正規化

scaler = StandardScaler()
X_norm = scaler.fit_transform(X_train)
print(f"Peak to Peak range by column in Raw        X:{np.ptp(X_train,axis=0)}")   
print(f"Peak to Peak range by column in Normalized X:{np.ptp(X_norm,axis=0)}")

print(np.ptp(x, axis=0)) # 極値(最大値と最小値の差)を求める

print(f'')_Joey9898 のブログの使用法 - CSDN ブログ

4、回帰モデルを作成して当てはめる

sgdr = SGDRegressor(max_iter=1000)
sgdr.fit(X_norm, y_train)
print(sgdr)
print(f"number of iterations completed: {sgdr.n_iter_}, number of weight updates: {sgdr.t_}")

5、パラメータを表示

 
これらのパラメーターは *正規化された* 入力データに相対的なものであることに注意してください。適合パラメータは、以前の資料のこのデータで見つかったパラメータに非常に近いです。

b_norm = sgdr.intercept_
w_norm = sgdr.coef_
print(f"model parameters:                   w: {w_norm}, b:{b_norm}")
print(f"model parameters from previous lab: w: [110.56 -21.27 -32.71 -37.97], b: 363.16")

6、予測する

# make a prediction using sgdr.predict()
y_pred_sgd = sgdr.predict(X_norm)
# make a prediction using w,b. 
y_pred = np.dot(X_norm, w_norm) + b_norm  
print(f"prediction using np.dot() and sgdr.predict match: {(y_pred == y_pred_sgd).all()}")

print(f"Prediction on training set:\n{y_pred[:4]}" )
print(f"Target values \n{y_train[:4]}")

7. 視覚化 

# plot predictions and targets vs original features    
fig,ax=plt.subplots(1,4,figsize=(12,3),sharey=True)
for i in range(len(ax)):
    ax[i].scatter(X_train[:,i],y_train, label = 'target')
    ax[i].set_xlabel(X_features[i])
    ax[i].scatter(X_train[:,i],y_pred,color=dlorange, label = 'predict')
ax[0].set_ylabel("Price"); ax[0].legend();
fig.suptitle("target versus prediction using z-score normalized model")
plt.show()

 

Python scikit-learn、回帰(予測)、線形回帰、係数を解く正規方程式法LinearRegression、係数を解く勾配降下法SGDRegressor。モデルの保存と読み込み joblib_houyanhua1 のブログ - CSDN ブログ

おすすめ

転載: blog.csdn.net/m0_63309778/article/details/130608865