見出し画像

銀市場価格の線形回帰

pythonで直近1ヶ月の銀価格CSVファイルを読み込み線形回帰予測する

#silver.csv
月日,"店頭小売価格"
8.17,119.24
8.16,119.35
8.15,119.46
8.14,119.24
8.1,118.58
8.09,118.58
8.08,119.9
8.07,121.66
8.04,122.21
8.03,123.31
8.02,126.06
8.01,127.27
7.31,124.08
7.28,121.55
7.27,126.39


import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib


# CSVファイルを読み込む
data = pd.read_csv('silver.csv', encoding='utf-8')

# 日付と価格データを取得
dates = data['月日'].values
prices = data['店頭小売価格'].values

# 日付データを数値に変換
numeric_dates = np.arange(len(dates))

# 線形回帰モデルを計算
coefficients = np.polyfit(numeric_dates, prices, 1)
linear_fit = np.polyval(coefficients, numeric_dates)

# グラフをプロット
plt.figure(figsize=(10, 6))
plt.scatter(numeric_dates, prices, color='blue', label='実際の価格')
plt.plot(numeric_dates, linear_fit, color='red', linewidth=2, label='予測価格')
plt.xlabel('日付')
plt.ylabel('価格')
plt.title('銀の価格の線形回帰予測(NumPy)')

# 日付を月と日に分割して表示
plt.xticks(numeric_dates, dates, rotation=45)

plt.legend()
plt.tight_layout()
plt.show()


  1. import numpy as np:NumPyライブラリをインポートします。

  2. numeric_dates = np.arange(len(dates)):日付データを数値に変換します。np.arangeを使用して日付データの長さに対応する数値の配列を作成します。

  3. coefficients = np.polyfit(numeric_dates, prices, 1)np.polyfit関数を使用して線形回帰モデルの係数を計算します。引数1は線形の次数を指定しています。

  4. linear_fit = np.polyval(coefficients, numeric_dates):計算された線形回帰モデルの係数を用いて、予測価格を計算します。

  5. グラフのプロット部分は先前と同様です。

このコードは、NumPyを使用して線形回帰モデルを計算し、実際の価格と予測価格をグラフでプロットします。
以下が出力結果で最近は下降トレンドなのが分かります。


この記事が気に入ったらサポートをしてみませんか?