python - Scikit SGDClassifier 使用字母而不是单词作为特征

标签 python machine-learning nlp scikit-learn

我正在尝试使用 this 之后的 SGDClassifier 对短语进行分类教程

我的管道如下所示:

p_clf = Pipeline([('vect', CountVectorizer(analyzer='word', ngram_range=(1, 2),
                                  token_pattern=r'\b\w+\b', min_df=1)),
                  ('tfidf', TfidfTransformer()),
                  ('clf', SGDClassifier(loss='log', penalty='l2',
                                        alpha=1e-3, n_iter=5, random_state=42)), ])

尽管我得到了正确的分类,但我不明白为什么它将字母视为特征而不是整个单词。在此示例中,当我调用 predict_proba('Hello') 时,我得到:

[[ 0.15889614  0.23752053  0.4353584   0.16822494]
 [ 0.15889614  0.23752053  0.4353584   0.16822494]
 [ 0.15889614  0.23752053  0.4353584   0.16822494]
 [ 0.15889614  0.23752053  0.4353584   0.16822494]
 [ 0.11579265  0.19786962  0.36811551  0.31822223]]

每一行都是一个字母,每一列都是我的类(class)。 不是应该只有一行吗?

最佳答案

在您的情况下 'Hello' 被解释为字符数组,例如 ['H','e','l','l','o']. (请记住,predict_proba 需要一个数组或稀疏矩阵作为输入。)这可以通过将字符串放入列表中来解决:

predict_proba(['Hello'])

关于python - Scikit SGDClassifier 使用字母而不是单词作为特征,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35603508/

相关文章:

algorithm - 指定执行自动学习的算法

python - 如何访问pytorch分类模型的预测? (伯特)

nlp - 如何在 Stanford CoreNLP 中获取短语标签?

python - 在 python 中将随机字符串转换为日期会引发组名 'm' 的重新定义

tensorflow - 如何微调现有的 Tensorflow 对象检测模型以识别其他类?

python - 在 matplotlib 图形窗口中禁用窗口最大化

python - 为数组中的 nan 和 inf 值创建掩码

Python,检查数组元素是否都相同

python - 如何在不使用估计器的情况下为训练的 Tensorflow 模型编写服务输入函数?

python - PyQt5 - 传递的引用为 None