我有30,000个按情绪分类的短语。
我要使用Naive Bayes。
这里的比例(情绪 - >短语数量)。
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
所以,我必须将我的数据集拆分为train / test来执行我的模型等,对吗?
在执行分层时,我应该保留类别的比例吗?
我的意思是,如果我选择30%的测试样本,我应该保持每种情绪的30%而不是整个数据集的30%吗?
我想是的,但我希望有更有经验的意见。
你会怎么做?这里的任何人都知道更好的方法,而不是执行python循环,测试哪种情绪,计算30%,放入字典等?
是否有任何Pandas技巧按类别特征进行分层,保持比例?
答案 0 :(得分:1)
在执行分层时,我应该保留类别的比例吗?
你对术语似乎有些困惑; 分层(或stratified sampling)的定义正是为了维持比例,否则就是简单的随机抽样。
如果我选择30%的测试样本,我应该保持每种情绪的30%而不是整个数据集的30%吗?
他们并不矛盾,是吗?如果您保留每个类别的30%,您最终会得到30%的初始设置吗?
是否有任何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)