層化サンプリング
volunteer データセットの category_desc 列にあるクラスラベルの分布が偏っていることがわかりました。category_desc を予測するモデルを学習させたい場合、データ全体を代表するサンプルでモデルを学習する必要があります。層化サンプリングは、そのための有効な方法です!
この演習はコースの一部です
Pythonで学ぶMachine Learningの前処理
演習の手順
- 目的変数
category_desc以外のすべての列を使って、特徴量の DataFrameXを作成します。 category_desc列からラベルの DataFrameyを作成します。Xとyを学習用とテスト用に分割し、両方の集合でラベルのクラス分布が同じになるようにします。.value_counts()を使って、y_trainのラベルと件数を表示します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Create a DataFrame with all columns except category_desc
X = volunteer.____(____, axis=____)
# Create a category_desc labels dataset
y = ____[[____]]
# Use stratified sampling to split up the dataset according to the y dataset
X_train, X_test, y_train, y_test = ____(____, ____, ____, random_state=42)
# Print the category_desc counts from y_train
print(____[____].____)