【问题标题】:Error using StratifiedShuffleSplit python使用 StratifiedShuffleSplit python 时出错
【发布时间】:2018-07-28 02:57:18
【问题描述】:

我不知道为什么在我的代码不起作用之后,我确定之前没问题

我正在尝试使用简单的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 - 蟒蛇

【问题讨论】:

标签: python python-3.x shuffle


【解决方案1】:

显然,您在将数据划分为训练和测试样本时犯了一个错误。

你可以通过设置StratifiedShuffleSplit()的参数在一定程度上解决这个问题, 作为n_splits=classnum, test_size=testRatio,train_size=1-testRatio, random_state=0

或者,您可以事先仔细尝试拆分,训练和测试样本,然后将其提供给StratifiedShuffleSplit()

【讨论】:

    【解决方案2】:

    检查data.column_name.value_counts() 它会告诉你number of samples for a category。但正如错误所说,你对一个类别只有一次观察。如果只有一个category 的观察结果,您应该删除该观察结果。保留一个不会有所作为,也不会为 category 添加更多数据。

    【讨论】:

      猜你喜欢
      • 2020-12-07
      • 2014-10-14
      • 2017-10-30
      • 1970-01-01
      • 2012-09-23
      • 2011-01-05
      • 2020-04-27
      • 2017-11-21
      • 2018-09-04
      相关资源
      最近更新 更多