我在scikit-learn的train_test_split()
函數中的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」也測試子集?從我如何期望train_test_split()
與stratify
工作應該返回類似:
[[1, 0, 0, 0, 0, 0], [0, 1]]
出現這種情況與random_state
一些值,同時與其他價值是否能夠正常工作;但每次我不得不分析數據時,我都無法搜索它的「正確」價值。
我有python 2.7和scikit-learn 0.18。
如果您嘗試使用'stratify = np.unique(a)',該怎麼辦? – MMF
不幸的是,它不起作用,因爲傳遞給'stratify'的列表必須與要拆分的列表長度相同。 – Hantaa
在文檔中沒有地方聲明即使在一個非常小的子集中也會有所有的類。如果您將唯一的1添加到您的列表中,那麼您將在測試分組中獲得1級。我認爲它應該和你的火車組合中的第一類一樣。例如,如果您刪除'stratify',那麼您將得到列表的尾部,而不是使用混洗類的列表。 – sergzach