knaka Tech-Blog

AI, IoT, DIYエレクトロニクス, データサイエンスについて投稿予定です。

予測問題、kaggle: PUBG Finish Placement Prediction

index:

概要

kaggleチャレンジで、 PUBG Finish Placement Prediction
予測問題

コンペ

https://www.kaggle.com/c/pubg-finish-placement-prediction


ケームの、勝率的な値の、予測らしいですね

環境

python 3.5
scikit-learn
numpy
matplotlib


テストは、kaggle kernel など使用。

学習データ

kaggle の上記ページから、
学習データ等を、コピーします。



目的変数:
winPlacePerc


説明変数:
 ゲームの戦闘に関するデータ、

matchTypeは、カテゴリ変数らしく。
ダミー変数で、数値化しました。

=> 学習データは、440万件程で、多めで
 メモリ的に厳しかったので、kernel で結果を出力しました。

前処理

・欠損値は、削除
・上記のダミー変数の、変換
 など

・ 今回は、重回帰分析で、機械学習の処理しました。

#
def conv_dammy_mat(df):
    head_mat = "matchType"
    for item in df.columns:
        df=  df.rename(columns={ item : head_mat +"_"+ item} )
    return df
#
def conv_xdata(df):
    df =df.drop("Id", axis=1)
    df =df.drop("groupId", axis=1)
    df =df.drop("matchId", axis=1)
    df =df.drop("matchType", axis=1)
    return df

# 学習データ
global_start_time = time.time()

train = pd.read_csv("train-tmp.csv") # Reading data
test  = pd.read_csv("test-tmp.csv") # Reading data
# 
train = train[: 10000]
test  = test[: 10000]
#train_sub = train[: 10000]
#train_sub.to_csv('train-tmp.csv', index=False)

train.dropna(inplace=True)
#print( train.isnull().sum() )
print( train.isnull().any() )
train.info()
#quit()

# conv, dummy val
train_mat = pd.get_dummies(train["matchType"]) 
#train= train[: 10000]
train_mat =conv_dammy_mat(train_mat )
print(train.shape )
print(train_mat.shape )

#
test_mat = pd.get_dummies(test["matchType"]) 
#train= train[: 10000]
test_mat =conv_dammy_mat(test_mat )
print(test.shape )
print(test_mat.shape )

#quit()
#print( len(train_mat.columns ))
#print( len(test_mat.columns ))
#quit()
#merge
train_mat["Id"] = train["Id"]
train_all= pd.merge( train , train_mat )
test_mat["Id"] = test["Id"]
test_all= pd.merge( test , test_mat )
#quit()
#
y_train =train_all['winPlacePerc']
y_data = y_train
#train_all.info()
x_train =train_all
x_train =conv_xdata(x_train )
x_train =x_train.drop("winPlacePerc", axis=1)

x_test = test_all
x_test = conv_xdata(test_all )
#
print(x_train.shape ,y_train.shape )
print(x_test.shape  )

結果の提出

スコアは、0.0891 ほど。
ランキング順位は表示されず。でした

f:id:knaka0209:20190122183317p:plain

参考コード

github.com