実行例は「saka.mokumoku」の「Google Colabotry」環境に保存してある
「アップル」の株価を「回帰問題」を使って予測する
(その1)は行番号1〜19までを解説する
株価の値は「date」当日のもので、いつも同じ値になるとは限らない
#
# 1.データの読み込み
#
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
#
%matplotlib inline
#
# 2.株価データの取得
#
!pip install pandas_datareader
#
import pandas_datareader.data as dr
#
stock = dr.DataReader('AAPL',"stooq")
print(stock.head())
#
# 3.翌日の高値のフィールドを追加
#
stock['Next_High'] = stock['High'].shift(1)
print(stock.head())
#
print(stock.isnull().sum())
#
stock = stock.dropna()
print(stock.head())
print(stock.shape)
#
# 4.検証、目的変数と説明変数に分割する
#
data_columns = ['Open','High','Low','Close','Volume']
#
test_rows = 500
#
target = stock['Next_High']
data = stock[data_columns]
#
target_train = target[test_rows:]
target_test = target[:test_rows]
data_train = data[test_rows:]
data_test = data[:test_rows]
#
print(data.shape)
print(target.shape)
print(data_train.shape)
print(target_train.shape)
print(data_test.shape)
print(target_test.shape)
#
# 5.線形回帰を使って予測する
#
from sklearn.linear_model import LinearRegression
#
model = LinearRegression()
#
model.fit(data_train,target_train)
#
target_predict = model.predict(data_test)
#
result = pd.DataFrame(target_test)
#
result['predict'] = target_predict
#
sns.lineplot(data=result)
#
sns.lineplot(data=result[:30])
以下はサンプルコードと解説
1.データの読み込み
#
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
必要なライブラリを読込む
ライブラリ内のモジュールを読み込むこともできる
読み込んだら処理しやすいように「as」を使って名前を付与する
同一名になる場合は互いに異なる名前を付与する
各ライブラリの説明
pandas・・・データの確認や抽出に適したライブラリ
numpy・・・行列計算用ライブラリー
matplotlib.pyplot・・・グラフ描画ライブラリーのpyplot部分
seaborn・・・見た目の優れたグラフ描画ライブラリー
#
%matplotlib inline
グラフ 表示の設定
%はインタラクティブサポートを有効化するためのコマンド
「inline」とはその場(環境や状態)で表示する意味
(注)グラフが書けない実行環境だとこの行はエラーになる
2.株価データの取得
#
!pip install pandas_datareader
#
import pandas_datareader.data as dr
pandas_datareader(Web上に公開されている株価データ)のインストール
ライブラリーの読み込み
(注)インストールできない環境だとこの行はエラーになる
#
stock = dr.DataReader('AAPL',"stooq")
print(stock.head())
データ提供元「stooq」の中から「APPLE」の株価を取得し表示する
項目の説明
open・・・始値
high・・・高値
low・・・・安値
close・・・終値
volume・・取引量
以下はprint出力例
Open High Low Close Volume
Date
2024-05-01 169.580 172.705 169.1100 169.30 50383147.0
2024-04-30 173.330 174.990 170.0000 170.33 65934776.0
2024-04-29 173.370 176.030 173.1000 173.50 68169419.0
2024-04-26 169.880 171.340 169.1800 169.30 44838354.0
2024-04-25 169.525 170.610 168.1511 169.89 50558329.0