train_test_split()
scikit-learnの機能のうち、stratify
パラメータに問題があります。これは私のデータにランダムに表示されるのと同じ問題を持つダミーの例です。sklearnのtrain_test_splitの "Stratify"パラメータが正しく機能していませんか?
from sklearn.model_selection import train_test_split
a = [1, 0, 0, 0, 0, 0, 0, 1]
train_test_split(a, stratify=a, random_state=42)
返す:
[[1, 0, 0, 0, 0, 1], [0, 0]]
それは、テストサブセットにも「1」を選択するべきではないでしょうか。私はstratify
とtrain_test_split()
が動作することを期待する方法から、それはのようなものを返す必要があります。他の値と、それが正しく動作しながら、これは、random_state
のいくつかの値で発生
[[1, 0, 0, 0, 0, 0], [0, 1]]
を。データを分析する必要があるたびに「正しい」値を検索することはできません。
私はpython 2.7とscikit-learn 0.18を持っています。
'stratify = np.unique(a)'を試してみたらどうなりますか? – MMF
残念ながら、 'stratify'に渡されたリストは、分割されるリストと同じ長さでなければならないので、うまくいきません。 – Hantaa
非常に小さなサブセットでもすべてのクラスが存在すると宣言されているドキュメントの場所はありません。リストに唯一1を追加すると、テスト分割でクラス1が取得されます。私はそれがあなたの列車の分割と同じクラス1の部分であるべきだと思います。たとえば、 'stratify'を削除すると、シャッフルされたクラスを持つリストではなく、リストの末尾が表示されます。 – sergzach