【Python】AIモデルを作ろう!試しに、株価の予測をやってみよう!

初心者

#python #プログラミング #初心者

コメント

  1. @IT-mh8kz より:

    import pandas as pd
    import numpy as np
    import yfinance as yf
    import matplotlib.pyplot as plt

    # 株価データを取得(例:トヨタ自動車 7203.T)
    ticker = “7203.T”
    df = yf.download(ticker, start=”2023-01-01″, end=”2024-01-01″)

    # 必要なカラムを選択
    df = df[[‘Close’]]
    df[‘Returns’] = df[‘Close’].pct_change() # 日次リターン
    df.dropna(inplace=True) # 欠損値を削除

    # データの可視化
    df[‘Close’].plot(figsize=(10, 5), title=”Toyota Stock Price”)
    plt.show()

    # 移動平均を特徴量に追加
    df[‘SMA_5’] = df[‘Close’].rolling(window=5).mean() # 5日移動平均
    df[‘SMA_10’] = df[‘Close’].rolling(window=10).mean() # 10日移動平均
    df[‘SMA_20’] = df[‘Close’].rolling(window=20).mean() # 20日移動平均

    # 過去のデータを特徴量に
    df[‘Lag_1’] = df[‘Close’].shift(1)
    df[‘Lag_2’] = df[‘Close’].shift(2)

    df.dropna(inplace=True) # 欠損値を削除

    from sklearn.model_selection import train_test_split
    from sklearn.ensemble import RandomForestClassifier
    from sklearn.metrics import accuracy_score

    # 目的変数(翌日が上昇なら1, 下降なら0)
    df[‘Target’] = (df[‘Close’].shift(-1) > df[‘Close’]).astype(int)

    # 特徴量と目的変数を選択
    features = [‘SMA_5’, ‘SMA_10’, ‘SMA_20’, ‘Lag_1’, ‘Lag_2’]
    X = df[features]
    y = df[‘Target’]

    # 訓練データとテストデータに分割
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, shuffle=False)

    # モデルの学習
    model = RandomForestClassifier(n_estimators=100, random_state=42)
    model.fit(X_train, y_train)

    # 予測と評価
    y_pred = model.predict(X_test)
    accuracy = accuracy_score(y_test, y_pred)

    print(f”予測精度: {accuracy:.2f}”)

    import pandas as pd
    import numpy as np
    import yfinance as yf
    import matplotlib.pyplot as plt

    # 株価データを取得(例:トヨタ自動車 7203.T)
    ticker = “7203.T”
    df = yf.download(ticker, start=”2023-01-01″, end=”2024-01-01″)

    # 必要なカラムを選択
    df = df[[‘Close’]]
    df[‘Returns’] = df[‘Close’].pct_change() # 日次リターン
    df.dropna(inplace=True) # 欠損値を削除

    # データの可視化
    df[‘Close’].plot(figsize=(10, 5), title=”Toyota Stock Price”)
    plt.show()

    # 移動平均を特徴量に追加
    df[‘SMA_5’] = df[‘Close’].rolling(window=5).mean() # 5日移動平均
    df[‘SMA_10’] = df[‘Close’].rolling(window=10).mean() # 10日移動平均
    df[‘SMA_20’] = df[‘Close’].rolling(window=20).mean() # 20日移動平均

    # 過去のデータを特徴量に
    df[‘Lag_1’] = df[‘Close’].shift(1)
    df[‘Lag_2’] = df[‘Close’].shift(2)

    df.dropna(inplace=True) # 欠損値を削除

    from sklearn.model_selection import train_test_split
    from sklearn.ensemble import RandomForestClassifier
    from sklearn.metrics import accuracy_score

    # 目的変数(翌日が上昇なら1, 下降なら0)
    df[‘Target’] = (df[‘Close’].shift(-1) > df[‘Close’]).astype(int)

    # 特徴量と目的変数を選択
    features = [‘SMA_5’, ‘SMA_10’, ‘SMA_20’, ‘Lag_1’, ‘Lag_2’]
    X = df[features]
    y = df[‘Target’]

    # 訓練データとテストデータに分割
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, shuffle=False)

    # モデルの学習
    model = RandomForestClassifier(n_estimators=100, random_state=42)
    model.fit(X_train, y_train)

    # 予測と評価
    y_pred = model.predict(X_test)
    accuracy = accuracy_score(y_test, y_pred)

    print(f”予測精度: {accuracy:.2f}”)

タイトルとURLをコピーしました