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の機種名を引っ付けていきます。
次回は、第一弾と第二弾を整理し、ほぼ完成形を目指します。