sklearnデータセット分割関数[StratifiedShuffleSplit,split]


  • sklearn.model_selection.StratifiedShuffleSplit(n_splits=10、test_size='default'、train_size=None、random_state=None)は、データセットをいくつかのデータセット/テストセットに分割します.
  • split(X,y)はyの値に従ってデータセットを訓練セットまたはテストセットに分け、訓練セットとテストセットの各種類のy値が占める割合が元のデータセットと同じであることを保証する.

  • 一つの場面を考慮すると、住宅データ集中は地域収入が住宅価格の中で重要な役割を果たしていると考えられ、分離したい訓練集とテスト集中の各種収入が占める割合は元のデータ集中が占める割合と同じである.コード実装:
        from sklearn.model_selection import StratifiedShuffleSplit
        split = StratifiedShuffleSplit(n_splits=1, test_size=0.2, random_state=42)
        for train_index, test_index in split.split(housing, housing["income_cat"]):
            strat_train_set = housing.loc[train_index]
            strat_test_set = housing.loc[test_index]
    

    例を通して説明すると、housing["income_cat"]=[1,1,1,1,1,2,2,22,2,2,2,2,2,2]、すなわち4つの1、10つの2、1が占める割合は1/3、2が占める割合は2/3であると仮定する.split.split(housing, housing["income_cat"])を経過するとstrat_train_set["income_cat"]とstrat_test_set["income_cat"]の1と2の割合は同じで、それぞれ1/2、2/3である.つまりstrat_train_set["income_cat"]には4つの1,8つの2があります.そしてstrat_test_set["income_cat"]に1個1,2個2