戦コンからDSへの転身なるか?

Dev, DS的な勉強と実践の継続の記録

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値に対する平均値での置き換えを他の統計量で代替
  • ドロップしたカテゴリカルデータの活用
  • 決定木以外のモデルの選択

あたり、色々できそうです。

何より、面白いです!