我正在尝试使用 scikit learn 模块进行文本分类。它是一个包含许多独特单词的数据集。从以下示例中可以看出其性质,
train_counts = count_vect.fit_transform(data)
train_counts.shape
print len(range(len(data)-1))
clf = MultinomialNB(alpha=1).fit(train_counts, range(len(data)) )
docs_new = ['Modern Warfare 2', 'Modern Warfare 3', 'Modern Warfare 1', 'Modern Warfare 4', 'Modern Warfare', 'Mahjong Kakutou Club', 'Mass Effect 2']
new_counts = count_vect.transform(docs_new)
predicted = clf.predict(new_counts)
for doc, category in zip(docs_new, predicted):
print '%r => %s' % (doc, target_names[category])
输出看起来像这样。
763
'Modern Warfare 2' => Call of Duty: Modern Warfare 3
'Modern Warfare 3' => Call of Duty: Modern Warfare 3
'Modern Warfare 1' => Call of Duty: Modern Warfare 3
'Modern Warfare 4' => Call of Duty: Modern Warfare 3
'Modern Warfare' => Call of Duty: Modern Warfare 3
'Mahjong Kakutou Club' => Mahjong Kakutou Club
'Mass Effect 2' => Mass Effect 2
这是一个多项式示例,但我得到与伯努利示例相同的结果。我尝试使用 0 到 1000000 的 alpha 值。谁能向我解释为什么会这样?
编辑:我应该说清楚,存在以下课程使命召唤:现代战争,使命召唤:现代战争2 ......大多数其他游戏,所有游戏站游戏的列表均来自维基百科。
此外,完整版本,例如使命召唤:现代战争 2 作为测试字符串会产生相同的结果
我最初使用的是 NLTK 分类器,但由于某种原因,它没有放置太多有价值的词,例如“Kakutou”,而这些词在任何其他示例中都不存在。(显然 Scikit 有)它没有像 scikit 分类器那样的数字问题。
这里的任何指导或信息都将非常有价值。
谢谢
编辑:数据集来自这里http://en.wikipedia.org/wiki/List_of_PlayStation_3_games它的第一列,每个示例都有一个标签和相同的内容