以下のコードについて質問がります。
python
1import numpy as np 2from sklearn.model_selection import KFold 3 4x = np.array([[1, 2], [3, 4], [1, 2], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4]]) 5y = np.array([1, 1, 1, 0, 0, 0, 0, 1, 1, 1]) 6 7kf = KFold(n_splits=4) 8for train_idx, test_idx in kf.split(x, y): #★★★ 9 print("train_idx:", train_idx, "test_idx:", test_idx)
このコードの「★★★」ように、 kf.splitの引数に、(x)と(y)の配列を入れていますが、このyは必要なのでしょうか。StratifiedKFoldについても同様で、目的変数であるyについてはxとセットですから、xのインデックスを選んだら、必ずyもそれに対応したインデックスになっているはずです。実際、公式ドキュメントは引数yはデフォルトでnoneになっていますし、手元のコードも、
python
1for train_idx, test_idx in kf.split(x): #★★★ 2 print("train_idx:", train_idx, "test_idx:", test_idx)
これで正しく動いているように見えます。
しかし、引数に説明変数と目的変数の両方をいれているサンプルコードが多くあります。
参考書でも、本によって片方だけだったり両方だったりするので、混乱しています。
なぜ、説明変数だけで分割してはいけない場合があるのでしょう。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/02 06:14