LoginSignup
0
1

【Python】回帰分析を始めてみる

Last updated at Posted at 2023-05-30

はじめに

回帰分析をpython で手軽にそれっぽく行う方法を調べた結果を紹介します。

回帰分析

目的変数 $y$ を説明変数$x$ で $y=ax+b$ と説明してやろう、ということで頑張ります。^^)

scikit-learn を使う

この業界のマナーなのかもしれませんが、学習データについて入力 x と出力 y の組み合わせがあったとして、

  • 学習: x, y に合うようモデルパラメータを推定するには、model.fit(x,y)
  • 予測: x に対応する y の予測するには model.predict(x)

とすれば良いです。何と分かり易い設計なのだろう。素晴らしい。

simple01.py
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.datasets import make_regression

rng = np.random.RandomState(0)
X, y = make_regression(n_samples=20, n_features=1, random_state=0,
                      noise=4.0, bias=100.0)

print(f'x: {type(X)} shape: {X.shape}')
print(f'y: {type(y)} shape: {y.shape}')

model = LinearRegression(fit_intercept=True, 
                         copy_X=True,
                         n_jobs=1,
                        positive=False)

model.fit(X, y)
y_train_pred = model.predict(X)

これでモデルに係数と切片が保存されています。それぞれ model.coef_, model.intercept_ で参照できます。詳しくは仕様で attributes を確認しよう。

おまけ?として、決定係数は model.score(X,y)でえられるようです。

下記でプロットしたらこうなりました。

import matplotlib.pyplot as plt

fig, ax = plt.subplots(figsize=(8,5))
ax.plot(X, model.coef_ * X + model.intercept_, label=f'model (R2={model.score(X,y)})')
ax.plot(X, y, 'k.', label='data')
ax.plot(X, y_train_pred, 'ro', label='prediction')
ax.grid(True)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.legend()
plt.show()
plt.savefig('simple01.png')

simple01.png

とりあえず下記に保存しました。
https://github.com/torupati/study_regression

まとめ

とりあえず回帰分析ならこれでできそうな気がした。仕事、うまくいくかなぁ。疲れた。。。
(2023/05/29)

  • 下記を参考にさせていただきました。多謝。

0
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1