python:【第2弾】機械にパチスロ大当たり回数を予測させる

前回で実装したプログラムをいくつか、修正、追加していきます。

現状のコード

import pandas as pd
import category_encoders as ce
from sklearn.ensemble import RandomForestRegressor

train = pd.read_csv("C:/Users/user/Desktop/pachidata/train.csv")
train["jackpot"] = train["BB回数"] + train["RB回数"]
train["year"] = train["日付"].apply(lambda x : x.split("/")[0])
train["month"] = train["日付"].apply(lambda x : x.split("/")[1])
train["day"] = train["日付"].apply(lambda x : x.split("/")[2])

#カラムの指定
columns = ["機種名", "貸玉"]

#数値化したい文字列を指定
change_columns = ce.OrdinalEncoder(cols=columns,handle_unknown='impute')

#数値化した文字列に変換
train_rev = change_columns.fit_transform(train)
train_rev.head()
x_train = train_rev[["台番号", "貸玉", "機種名", "year", "month", "day"]]
y_train = train_rev["jackpot"]
model = RandomForestRegressor()

#説明変数と目的変数を設定し、学習
model.fit(x_train, y_train)
pred = model.predict(x_train)
train_rev["pred"] = pred
train_rev["GAP"] = train_rev["jackpot"]- train_rev["pred"]
train_rev.head(100)

■機種名の付与

機種名と貸玉は数値表現にしてしまっているので、dfで持っている機種名,貸玉に再度置き換え。

df_rev["機種名"] = df["機種名"]

df_rev["貸玉"] = df["貸玉"]

■trainデータの追加

pd.concat([データ1, データ2])

concatを使用して、データを追加します。

train = pd.read_csv("C:/Users/user/Desktop/pachidata/train.csv")
train_new = pd.read_csv("C:/Users/user/Desktop/pachidata/元データ/data.csv")

train = pd.concat([train, train_new])

■各機種の大当たり平均を算出

pachi_model = train.groupby("機種名").mean()

■カラム名の変更

pachi_model_rev = pachi_model_rev.rename(columns={"jackpot":"②jackpot_mean"})

■予測数値と平均の組み合わせ

def_rev2 = pd.merch(df, pachi_model_rev, on="機種名")

dfを軸に機種名をキーにして、pachi_model_revの機種名を引っ付けていきます。


次回は、第一弾と第二弾を整理し、ほぼ完成形を目指します。

いいなと思ったら応援しよう!