sklearnを使って単線形回帰をやってみた
前回はstatsmodelを使った単線形回帰をしましたが、今回は別のモジュール(sklearn)を使って同じことをやってみようと思います。
ライブラリのインポート
In [2]:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()
from sklearn.linear_model import LinearRegression
データの読み込み
In [3]:
# データの読み込み
data = pd.read_csv('mibile_company_stock_price_2020-10-01_2021-09-30.csv')
data.head()
Out[3]:
回帰の作成
従属変数と独立変数の宣言
In [4]:
# 独立変数の宣言
x = data['NTT']
# sklearnに入れるデータの形状は2D arrayである必要があるため、変換
x = x.values.reshape(-1,1)
# 従属変数の宣言
y = data['KDDI']
回帰
In [5]:
# クラスからオブジェクトを作成します
reg = LinearRegression()
In [6]:
# 回帰モデル作成
reg.fit(x,y)
Out[6]:
決定係数
In [7]:
reg.score(x,y)
Out[7]:
係数
In [8]:
# 係数を出力します
reg.coef_
Out[8]:
切片
In [9]:
# 切片を出力します
reg.intercept_
Out[9]:
予測
In [11]:
# データフレームを作成します
new_data = pd.DataFrame(data=[2600,2800],columns=['KDDI'])
new_data['Predicted_NTT'] = reg.predict(new_data)
new_data
Out[13]:
In [15]:
# データを散布図として表示します
plt.scatter(x,y)
# 変数を使った回帰式
yhat = reg.coef_*x + reg.intercept_
# 変数を使わない回帰式
#yhat = 0.0017*x + 0.275
# 回帰直線の表示
fig = plt.plot(x,yhat, lw=4, c='orange', label ='regression line')
# 軸に名前を付けます
plt.xlabel('KDDI', fontsize = 20)
plt.ylabel('NTT', fontsize = 20)
plt.show()
ディスカッション
コメント一覧
まだ、コメントがありません