【发布时间】:2016-06-06 19:44:59
【问题描述】:
我正在尝试按照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]]
每行是一个字母,列是我的类。 不应该只有一行吗?
【问题讨论】:
-
'Hello'可能被解释为像 ['H','e','l','l','o'] 这样的数组/列表。如果你使用predict_proba(['Hello'])会发生什么? -
解决了!谢谢!
-
很好,很高兴我能帮上忙。我只是把它写成一个答案,这样这个问题就有一个被接受的答案。
标签: python machine-learning nlp scikit-learn