Loading...
機械学習を用いて衆議院の解散日を予測

機械学習を用いて衆議院の解散日を予測

ニュースで衆議院の解散はいつ?みたいなことを取り上げていたので、機械学習を使って衆議院の解散の日を予測してみることにしました。

2023-09-183分で読める

これはあくまで一種の遊びであり、正確な予測を目指したものではありません。

データ準備

まずは、平成以降の衆議院の解散日をリストアップします。

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

# 平成以降の衆議院解散日
release_dates = pd.to_datetime([
    '1990-01-24',
    '1993-06-18',
    '1996-09-27',
    '2000-06-02',
    '2003-10-10',
    '2005-08-08',
    '2009-07-21',
    '2012-11-16',
    '2014-11-21',
    '2017-09-28',
    '2021-10-14',
])

--

次に、これらの解散日を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())

実行結果

予測の結果は以下の通りです。

次の衆議院解散予測(多項式回帰):  2023-12-30

--

2023年12月30日(土)と予測されましたが、年末年始で確率は低そうですね。ただし、データ分析の観点から、過去のパターンを用いて未来を予測するという試み自体が面白いです。

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

PR
この記事が役に立ったら: