株価予測(その1)

実行例は「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