bugfix> pandas > 投稿

この本を読み進めると、scikit-learnでこのビットが表示されます。

housing["income_cat"] = pd.cut(housing["median_income"], bins=[0.,1.5,3.0,4.5,6.,np.inf], labels=[1,2,3,4,5])
split =StratifiedShuffleSplit(n_splits=1, test_size=0.2, randomstate=42)
for train_index, test_index in split.split(housing, housing["income_cat"])
    stat_train_set = housing.loc[train_index]
    stat_test_set = housing.loc[test_index]

最初の行は、住宅データフレームに列を追加し、収入を分類するビン1〜5を添付していることがわかります。

1: 0-<1.5
2: 1.5-<3.0
3: 3.0-<4.5
4: 4.5-<6
5: >6

2行目が分割する関数を返すことを理解しています。

私が理解していないのは、関数が2つのインデックスのどちらが20%であるかをどのように知っているかです。 2番目のインデックスは常に関数がtest_sizeパラメーターを適用するインデックスですか?

回答 1 件
  • splitメソッドがイテレータを生成し、このイテレータがインデックスのタプルを生成することを知っておく必要があるだけです。このタプルの最初の要素はトレインインデックスで、2番目の要素はテストインデックスです。この背後に魔法はありません。

    メソッドのソースコードを確認したい場合は、ここで見つけることができます。特にメソッドの終わりを見てください _iter_indices 。そこにあなたが見る yield このタプルを生成するステートメント。

あなたの答え