我不知道为什么在我的代码没有工作的时候,我确信它没关系
我试图使用简单的StratifiedShuffleSplit
,但它不起作用
代码:
from sklearn.model_selection import StratifiedShuffleSplit
print(data_x.shape)`
(100,1)
print(data_y.shape)
(100,28)
考虑我的data_y是多y标签
stratified_split = StratifiedShuffleSplit(n_splits=2, test_size=0.33)
for train_index, test_index in stratified_split.split(data_x, data_y):
x_train, x_test = data_x[train_index], data_x[test_index]
y_train, y_test = data_y[train_index], data_y[test_index]
我明白了
错误:
ValueError:y中填充最少的类只有1个成员,这个成员太少了。任何类的最小组数不能少于2.`
有人可以帮助我吗?
python3.6 - anaconda
答案 0 :(得分:0)
很显然,在将数据划分为训练和测试样本时,您犯了一个错误。
您可以通过设置StratifiedShuffleSplit()
的参数来解决此问题,
为n_splits=classnum, test_size=testRatio,train_size=1-testRatio, random_state=0
。
或者,您可以事先仔细尝试对训练和测试样本进行拆分,然后将其提供给StratifiedShuffleSplit()
。
答案 1 :(得分:0)
选中data.column_name.value_counts()
,它将告诉您number of samples for a category
。但是正如错误所说,您只有一个观察类别。并且如果category
只有一个观察值,则应删除该观察值。保留一个不会有所作为,也不会为此category
添加更多数据。