始める無料で始める

XGBoost:学習と予測

最初の XGBoost モデルを作成してみましょう!動画で Sergey が示したように、xgboost ライブラリは scikit-learn 互換の API を持つため、すでにおなじみの scikit-learn の .fit() / .predict() パラダイムを使って XGBoost モデルを構築できます。

ここでは解約(churn)データを扱います。このデータセットは、架空のライドシェアアプリにおける、複数の架空の都市でのユーザーの最初の1か月間の行動と、サインアップから5か月後にそのサービスを利用したかどうかを含む架空データです。すでに churn_data という DataFrame に読み込まれているので、シェルで確認してみてください!

目的は、最初の1か月のデータから、5か月後にそのアプリのユーザーが引き続きサービスを利用しているかどうかを予測することです。これは典型的な解約予測の設定です。このために、データを学習用とテスト用に分割し、学習用データで小さな xgboost モデルを学習させ、テスト用データに対する正解率(accuracy)を計算して性能を評価します。

pandasnumpy はそれぞれ pdnp としてインポート済みで、sklearn.model_selection から train_test_split もインポートされています。さらに、特徴量と目的変数の配列はそれぞれ Xy として作成済みです。

この演習はコースの一部です

XGBoost で学ぶ極限の勾配ブースティング

コースを見る

演習の手順

  • xgboostxgb としてインポートします。
  • データの 20% をテストに使うように学習用・テスト用セットを作成します。random_state123 を使用します。
  • xgb.XGBClassifier() を使って xg_cl という XGBoostClassifier をインスタンス化します。n_estimators10objective'binary:logistic' に指定します。これらの意味は後のレッスンで学ぶので、今は気にしなくて大丈夫です。
  • .fit() メソッドを使って、xg_cl を学習用データ(X_train, y_train)に当てはめます。
  • .predict() メソッドでテスト用データ(X_test)のラベルを予測し、正解率を出力するために "Submit Answer" を押します。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Import xgboost
____

# Create arrays for the features and the target: X, y
X, y = churn_data.iloc[:,:-1], churn_data.iloc[:,-1]

# Create the training and test sets
X_train, X_test, y_train, y_test= ____(____, ____, test_size=____, random_state=123)

# Instantiate the XGBClassifier: xg_cl
xg_cl = ____.____(____='____', ____=____, seed=123)

# Fit the classifier to the training set
____

# Predict the labels of the test set: preds
preds = ____

# Compute the accuracy: accuracy
accuracy = float(np.sum(preds==y_test))/y_test.shape[0]
print("accuracy: %f" % (accuracy))
コードを編集して実行