Kaggle / Titanic - Machine Learning from Disaster / 写経 / First Submitまで
環境
Jupyter Notebook / Local
やったこと
カテゴリカルデータの変換
df_train.replace({'Sex': {'male': 0, 'female': 1}}, inplace=True) df_test.replace({'Sex': {'male': 0, 'female': 1}}, inplace=True)
カテゴリカルのドロップ(※文字列の数値化とかでモデル最適化へ繋げること可能)
category_list = ['Name', 'Ticket', 'Cabin', 'Embarked'] df_train_dropped = df_train.drop(category_list, axis=1, inplace=False) df_train_dropped.head()
決定木モデルの作成と学習、評価
from sklearn.tree import DecisionTreeClassifier x = df_train_dropped[['Pclass', 'Sex', 'SibSp', 'Parch', 'Fare']].values t = df_train_dropped['Survived'].values tree = DecisionTreeClassifier() result = tree.fit(x, t) tree.score(x, t) 0.9225589225589226
学習したモデルによる予測
x_test = df_test_dropped[['Pclass', 'Sex', 'SibSp', 'Parch', 'Fare']].values pred = tree.predict(x_test)
結果の提出
submit_csv = pd.concat([df_test['PassengerId'], pd.Series(pred)], axis=1) submit_csv.columns = ['PassengerId', 'Survived'] submit_csv.to_csv('sbmition.csv', index=False)
KaggleでのSubmitとLeadersboard
所感
写経メインでやってきたけど、途中からは”プロセス”について自分で検索してerror出しながら修正しながら提出に持ち込みました。
順位はsubmitした時点で12,326 / 14,060ということで下位22.3%に沈んでおりましてブロンズメダルどころか低迷と言って良いと思いますが、やり遂げたことは嬉しいです(富士ヒルでメダルには届かなかったけど完走した、みたいな)。
- お題の確認
- ルールの確認
- データのロード
- データのクレンジング
- 機械学習に用いるためのデータ整形
- モデルの選択
- モデルの学習
- モデルの評価
- 提出用フォーマットへのデータ整形と出力
と、一通り学ぶことができました。
モデルの最適化に向けては、
- null値に対する平均値での置き換えを他の統計量で代替
- ドロップしたカテゴリカルデータの活用
- 決定木以外のモデルの選択
あたり、色々できそうです。
何より、面白いです!