始める無料で始める

データ分割

モデルを正しく評価するには、データを学習用とテスト用に分割します。学習用データにはモデルの学習に使うデータが、テスト用データにはモデルの評価に使うデータが入ります。この分割はランダムに行いますが、ターゲットの発生率が低い場合は層化(stratify)して、学習用とテスト用でターゲットの割合が等しくなるようにする必要があります。

この演習では、層化してデータを分割し、学習用とテスト用でターゲット発生率が等しいことを確認します。train_test_split メソッドはすでにインポート済みで、Xy の DataFrame がワークスペースに用意されています。

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

Pythonで学ぶ予測分析入門

コースを見る

演習の手順

  • train_test_split メソッドを使って、これらの DataFrame を層化して分割してください。学習用とテスト用のサイズを同じにし、ターゲット発生率も等しくなるようにします。
  • 学習用データのターゲット発生率を計算してください。これは、学習用データに含まれるターゲット数を学習用データの観測数で割った値です。
  • テスト用データのターゲット発生率を計算してください。

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

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

# Load the partitioning module
from sklearn.model_selection import train_test_split

# Create DataFrames with variables and target
X = basetable.drop("target", 1)
y = basetable["target"]

# Carry out 50-50 partititioning with stratification
X_train, X_test, y_train, y_test = ____(X, y, test_size = ____, stratify = ____)

# Create the final train and test basetables
train = pd.concat([X_train, y_train], axis=1)
test = pd.concat([X_test, y_test], axis=1)

# Check whether train and test have same percentage targets
print(round(sum(train[____])/len(____), 2))
print(round(sum(test[____])/len(____), 2))
コードを編集して実行