スロットで台を選ぶときに、なんとなくで台を選んでいませんか?
選ぶ際に出そうな台、設定が良さそうな台ががわかると良いなと思ったことはありませんか?抽選で良番を引いたのに低設定の台に座ってしまったという経験あると思います。
今回はAIの技術を用いて、スロットの大当たり回数を予測してみようと思います。
どのように設定を入れているかはわかりませんが、長期で見た時に人の癖や店の癖などが見えてくるかもしれません。
どんな結果になるかやっていきましょう!
時系列データの予測
時系列データの予測とは、過去のデータを基に未来のイベントや値を予測する手法です。
たとえば、スロットの大当たり回数を予測する場合、過去の当たりパターンを分析して、将来の当たりやすさを推定します。
この分析には統計的モデルや機械学習技術が用いられ、トレンドや周期性などのパターンを特定して未来のデータを予測します。
時系列予測は、販売予測、株価予測、天気予報など、様々な分野で応用されており、適切な予測によってより効果的な意思決定を支援します。
データ収集
今回データ収集には「台データオンライン」というサイトを使用します。
近所の行きつけの店舗のデータが掲載されているか確認してみてください。
収集方法
台データオンラインはスクレイピングなどのスクリプトを使ってのデータ収集を禁止しているので、取得する際は注意してください。
対象の店舗のページにアクセスし、取得したい台のデータを表示してください。
上記のページが表示されると思います。自動での取得が禁止されているので地道に手作業でデータを作成していきます。
※コピペも禁止されています、、、
以下のようにExcelやスプレッドシートにデータを記入していきます。
※日付は表に記載されていないので自分で入力してください
過去1週間分のデータが見れるので、日々データを蓄積していってください。
データの収集が大変なので、複数店舗・複数台の予測は難しいかもしれません。今一番好きな台で試してみるのが良いでしょう!
※HTMLの知識がある人は、HTMLのTableのソースを取得してコピペできる状態にして貼り付けるなどを試してみてください
データの出力
このままでは予測には使えないので、csv形式に変換して出力してください。
スプレッドシートであれば、ファイル>ダウンロード>カンマ区切りの形式(.csv)で出力することが出来ます。
csvファイルは次に説明するソースコードと同じ階層に置いてください。
大当たり回数を予測する
データが準備できたら、予測するコードを作成していきます。
開発環境はVS Codeです。ない人はインストールしてください。
ソースコード
コードの仕組みとしては、”明日“の”ART回数“を予測するようになっています。
明日:最後のデータの次の日のこと
ART回数:BB回数やRB回数の方が重要な台であれば、コード内の表記を変更してください
import pandas as pd
from statsmodels.tsa.arima.model import ARIMA
# データの読み込み
data = pd.read_csv('slot.csv')
data['date'] = pd.to_datetime(data['日付'])
# 日付のインデックスに頻度を設定
data = data.set_index('date')
data.index = pd.DatetimeIndex(data.index).to_period('D') # 日次データの場合 'D'
# 予測結果を格納するためのリスト
forecasts = []
#data = data[data['台番号'] == 800]
# 台番号ごとにモデルを訓練し、予測を実行
for machine_id in data['台番号'].unique():
machine_data = data[data['台番号'] == machine_id]
if len(machine_data) > 0:
try:
model = ARIMA(machine_data['ART回数'], order=(2,1,2))
model_fit = model.fit()
forecast = model_fit.forecast(steps=2)
# 台番号と予測値をリストに追加
forecasts.append({'台番号': machine_id, '明日のART回数の予測値': forecast[0]})
except:
print(f"台番号 {machine_id} のモデル訓練中にエラーが発生")
# 予測結果のDataFrameを作成
forecast_df = pd.DataFrame(forecasts)
# BB回数の予測値で降順にソート
forecast_df = forecast_df.sort_values(by='明日のART回数の予測値', ascending=False)
# 結果の表示
print(forecast_df)
pandasとstatsmodelsがインストールされていない場合は次のコマンドをターミナルから実行しインストールしてください。
pip install pandas
pip install statsmodels
実行する
ターミナルからmain.pyが存在する階層で次のコマンドを実行すれば予測が開始します。
python main.py
実行するとターミナルに予測結果が出力されます。
まとめ
データ集めは大変ですが、予測のコード自体はとても簡単ですね。
台データオンラインの情報がどこまで正確なのか、時系列データもどのくらい集めれば良いのかわからないので、予測結果については使えるものかどうかは未知数です。
1か月分くらい集めてみて、体感ですが、上位3台の中に1台は当たりがありそう?くらいな感じです。
絶対勝てる!というような予測結果ではないですが、台選びの一つの要素にはなるかなと思います。
予測結果と実績の比較はサイトで確認できるので自身で精度を確かめてから使ってみてください。
コメント
台データオンラインのスクレイピングが禁止なのは利用規約を見て判断したのですか?
無知なので利用規約を見てもスクレイピングが禁止されているかわかりませんでした。
お忙しいところお手数をおかけしますが、ご回答のほどよろしくお願いいたします。
台データオンラインの会員規約に以下のように記載があったのでスクレイピングはやめました。
「本サイトは第三者からの不正なアクセスによるデータ収集を禁止します。」
「10.本サイトのコンピュータプログラム及びデータベース等を複製、変更、、、」
このコード本当に動きますか?
何度やってもできませんが・・・
KeyError: ‘明日の差枚の予測値’と出ます。
私の方では動かすことが出来ます。
「明日の差枚の予測値」という言葉やキーを使っていないので、おそらくオリジナルの修正が加えられていると思います。
変更する際にどこか設定を間違えているのではないでしょうか?
ご確認いただけますと幸いです。
返信ありがとうございます。
私の場合、差枚をターゲットにしたかったので ”差枚”に変更してコードを書きました。
何とか動くことができました。
Pythonデビューでしたので丸2日かかりましたが(笑)