機械学習を用いてドラゴンクエスト12の発売日を予測

ちょっとしたプログラミングの遊びをしてみたくて、機械学習を使ってドラゴンクエスト12の発売日を予測してみることにしました。

これはあくまで一種の遊びなので、本当に次のドラクエが発売される日を正確に予測できるわけではないのでご了承ください。

まずは過去のドラクエの発売日をリストアップします。ここでは、メインシリーズの日本での発売日を考慮に入れています。

import pandas as pd
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures

# ドラクエの発売日
release_dates = pd.to_datetime([
    '1986-05-27', '1987-01-26', '1988-02-10', '1990-02-11',
    '1992-09-27', '1995-12-09', '2000-08-26', '2004-11-27',
    '2009-07-11', '2012-08-02', '2017-07-29'
])

次に、これらの発売日をUNIXタイム(1970年1月1日からの経過秒数)に変換します。これにより、日付を数値データとして扱うことができます。

# UNIXタイムに変換
release_dates_unix = release_dates.astype(np.int64) // 10**9

さて、予測モデルの選択ですが、今回は多項式回帰を使用します。多項式回帰は、特徴量の非線形組み合わせを考慮することで、単純な線形回帰よりも複雑なデータパターンを捉えることが可能です。

# 2次の多項式特徴を生成
poly = PolynomialFeatures(degree=2)

# データのインデックス(0から始まる連続した整数)を2次の多項式に変換
indices = np.array(range(len(release_dates_unix))).reshape(-1, 1)
indices_poly = poly.fit_transform(indices)

# 線形回帰モデルを作成
model_poly = LinearRegression()

# モデルを多項式特徴に適合
model_poly.fit(indices_poly, release_dates_unix)

最後に、この多項式回帰モデルを使って次回のドラクエの発売日を予測します。

# 次の発売日のインデックスを多項式に変換
next_index_poly = poly.transform(np.array([[len(release_dates_unix)]]))

# 次の発売日を予測
next_timestamp_poly = model_poly.predict(next_index_poly)

# UNIXタイムスタンプを日付に変換
next_date_poly = pd.to_datetime(next_timestamp_poly[0], unit='s')

print('次のドラゴンクエストの発売日予測(多項式回帰): ', next_date_poly.date())

以上でコードは完成です!これにより多項式回帰モデルによる次回のドラクエ発売日の予測が得られます。

ではプログラムを起動します。結果は!

$ 次のドラゴンクエストの発売日予測(多項式回帰):  2024-01-25

2024年01月25日(木)とのことでした。ちょっとあやしいですが、なんとか予測できました。

これはあくまで予測であり、実際の発売日がこの通りになるとは限りません。ゲームの発売日は開発進行状況や市場状況、その他様々な要素によって決まります。しかし、データ分析という視点から見れば、過去の発売日のパターンから未来の発売日を予測するという試み自体が非常に興味深いですね。

ここまで、お読みくださりありがとうございました!