python sklearnを使用して回帰分析を行う

python sklearnを使用して回帰分析を行う

pythonで、sklearnを使用して回帰分析を行うサンプルコードを記述してます。pythonのバージョンは3.10.0を使用してます。

環境

  • OS windows11 home
  • python 3.10.0

sklearn・numpy・matplotlibインストール

以下をインストールされていない方は必要なので、pipでインストールしておきます。

pip install numpy
pip install sklearn
pip install matplotlib

回帰分析を行う

まずは、sklearnを使用して傾きと切片を計算して回帰直線を引いたグラフを作成してみます。

import matplotlib.pyplot as plt
import numpy as np
from sklearn.linear_model import LinearRegression
 
x = np.array([100, 200, 300, 700, 900, 1100, 1200, 1500])
y = np.array([300, 450, 550, 800, 1100, 2000, 2400, 3100])

# クラスからオブジェクトを作成
reg = LinearRegression()

# 2次元配列な必要があるので変換しておく[[100],[200]...]
X = x.reshape((len(x), 1))

# モデルにフィットさせる
reg.fit(X,y)

print('傾き=',reg.coef_,'切片=',reg.intercept_)

# グラフ描画
def f():
    
    z = reg.coef_ * x + reg.intercept_
 
    plt.scatter(x, y)
    plt.plot(x, z, color='green')
 
    plt.xlim(0, 2000) # x軸の表示範囲
    plt.ylim(0, 3500) # y軸の表示範囲
    plt.xlabel("x", fontsize=10) # x軸のラベル
    plt.ylabel("y", fontsize=10) # y軸のラベル
    plt.grid(True) # 目盛線の表示
    plt.tick_params(labelsize = 8) # 目盛線のサイズ
    
    plt.show()
 
f()

実行結果

予測値も、以下のようにして求めることが可能です。

# 予測値
print('150の予測値=',reg.predict([[150]]))

実行結果

150の予測値= [183.15217391]