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

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

Kaggle / Titanic - Machine Learning from Disaster / 写経 / Gold Medalistから学ぶ Day 6(Final)

環境

Jupyter Notebook / Local

やったこと

今日で複数の機械学習モデルによるモデリングと評価が終わり、Gold MedalistのMr. MANAV SEHGALによるプロセスを一通りやったことになりました。モデリングと評価の部分についてまとめます。

モデリング(Random Forestを例に)

rf = RandomForestClassifier() # モデルのインスタンスをつくり
rf.fit(X_train, Y_train) # 学習データでインスタンスに学習をさせ
Y_pred = rf.predict(X_test) # テストデータによる予測結果を吐き出し
acc_rf = round(rf.score(X_train, Y_train) * 100, 2) # 学習による精度(スコア:%化)を吐き出し
acc_rf # スコアを出力

この構文で全部やれる。

あとはインスタンス名と呼び出すクラスをモデルごとに変えるだけ。

モデルの比較出力

models = pd.DataFrame({
    'Model' : ['Support Vector Machine', 'KNN', 'Logistic Regression', 
               'Random Forest', 'Naive Bayes', 'Perceptron', 
               'Stochastic Gradient Decent', 'Linear SVC', 'Decision Tree'],
    'Score' : [acc_svc, acc_knn, acc_log, acc_rf, acc_gaussian, 
               acc_perceptron, acc_sgd, acc_linear_svc, acc_tree]})

models.sort_values(by='Score', ascending=False)

モデルごとのスコアを出した変数にラベルをつけて、スコア順でリスト一覧表示。

これだけです。

所感

ETLとかクレンジングとかデータの前処理に比べればモデリングはあっけない。特徴量の仮説出しなども含めて前処理が90%くらいの工数という感覚値です。

これでスコアが0.77033で9,037 / 13,846ですから全体の65.3%, 後ろから1/3です。

道のりは遠い…。