【问题标题】:Should I keep the proportion of categories when executing an stratification?执行分层时我应该保持类别的比例吗?
【发布时间】:2018-05-23 14:34:52
【问题描述】:

我有 30,000 个按情绪分类的短语。

我将使用朴素贝叶斯。

这是比例(情绪 -> 短语的数量)。

anger           98
boredom        157
empty          659
enthusiasm     522
fun           1088
happiness     2986
hate          1187
love          2068
neutral       6340
relief        1021
sadness       4828
surprise      1613
worry         7433

所以,我必须将我的数据集拆分为训练/测试来执行我的模型等,对吗?

执行分层时是否应该保持类别的比例?

我的意思是,如果我为测试样本选择 30%,我应该保留每种情绪的 30%,而不是整个数据集的 30%?

我想是的,但我想有一个更有经验的意见。

你会怎么做呢?这里的任何人都知道这样做的更好方法,而不是执行 python 循环、测试哪种情绪、计算 30%、放入字典等?

有没有什么 Pandas 技巧可以按类别特征进行分层,保持比例?

【问题讨论】:

    标签: pandas machine-learning scikit-learn nltk naivebayes


    【解决方案1】:

    执行分层时是否应该保持类别的比例?

    您似乎对术语有些困惑; 分层(或stratified sampling)的定义就是保持比例,否则就是简单的随机抽样。

    如果我为测试样本选择 30%,我应该保留每种情绪的 30%,而不是整个数据集的 30%?

    它们并不矛盾,是吗?如果您保留每个类别的 30%,您最终不会得到初始设置的 30% 吗?

    有没有什么 Pandas 技巧可以按类别特征进行分层,保持比例?

    不知道 pandas,但 scikit-learn(我猜你接下来会使用它)model_selection.train_test_split 包含这样一个 stratify 选项:

    from sklearn.model_selection import train_test_split
    X_train, X_test, y_train, y_test = train_test_split(X, y,
                                                        stratify=y, 
                                                        test_size=0.3)
    

    【讨论】:

    • 非常感谢您的解释!
    猜你喜欢
    • 1970-01-01
    • 2011-01-11
    • 2017-02-16
    • 1970-01-01
    • 2013-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多