这个错误对 StratifiedShuffleSplit 意味着啥?

Posted

技术标签:

【中文标题】这个错误对 StratifiedShuffleSplit 意味着啥?【英文标题】:What does this error mean with StratifiedShuffleSplit?这个错误对 StratifiedShuffleSplit 意味着什么? 【发布时间】:2018-09-04 02:35:03 【问题描述】:

总的来说,我对数据科学完全陌生,希望有人能解释为什么这不起作用:

我正在使用来自以下 url 的广告数据集:“http://www-bcf.usc.edu/~gareth/ISL/Advertising.csv”,它有 3 个特征列(“TV”、“Radio”、“Newspaper”)和 1 个标签列(“sales”)。我的完整数据集命名为data

接下来,我尝试使用sklearn的StratifiedShuffleSplit函数将数据分为训练集和测试集。

from sklearn.model_selection import StratifiedShuffleSplit

split = StratifiedShuffleSplit(n_splits=1, random_state=0) # can use test_size=0.8
for train_index, test_index in split.split(data.drop("sales", axis=1), data["sales"]): # Generate indices to split data into training and test set.
    strat_train_set = data.loc[train_index]
    strat_test_set = data.loc[test_index]

我知道了ValueError: The least populated class in y has only 1 member, which is too few. The minimum number of groups for any class cannot be less than 2.

在具有 14 个特征列和 1 个标签列的另一个数据集上使用相同的代码可以适当地分隔数据。为什么它在这里不起作用?谢谢。

【问题讨论】:

scikit-learn.org/stable/modules/generated/… @Aditya。啊,是的,错误的问题链接。更恰当的案例和解释is here. @Aditya。但正如我在这个问题中看到的目标是“销售”,所以它是一个回归问题,因此我的 original link 对于这种情况是正确的。 【参考方案1】:

我认为问题在于您的 data_y 是二维矩阵。

但正如我在sklearn.model_selection.StratifiedShuffleSplit doc 中看到的,它应该是1D 向量。尝试将data_y的每一行编码为整数(会被解释为一个类),并在使用split之后。

或者您的 y 可能是一个回归变量(连续数值数据)。(Vivek 的链接)

【讨论】:

以上是关于这个错误对 StratifiedShuffleSplit 意味着啥?的主要内容,如果未能解决你的问题,请参考以下文章

为啥这个 Haskell 代码使用fundeps 进行类型检查,但对类型族产生不可触碰的错误?

如何对这个从管道可观察到的错误捕获的 Angular 打字稿 Http 错误拦截器进行单元测试?

我正在通过 python 对 azure 进行身份验证以列出我所有的虚拟机,但我收到了这个错误

那位帮我看下这个句子对不对?为啥?

对核心数据模型进行微小更改后的链接器错误

findBugs 这个报的是啥错误