如何在计算机上使用SklearnClassifier

2024-05-19 05:06:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些由它们的双元组表示的列表,以及它们各自出现的次数。这些大字来自于由所有独特的大字组成的词汇。我想用SklearnClassifier(SVC)来解决这个问题

到目前为止我所做的代码:

 train_ngrams = [(train_filtered_tweets[i], train_filtered_tweets[i + 1]) for
 i in range(len(train_filtered_tweets) - 1)]
 print "Tweets from train set as bigrams", Counter(train_ngrams)

 classif = SklearnClassifier(BernoulliNB()).train(train_ngrams)
 classify = SklearnClassifier(SVC(), sparse=False).train(Counter(train_ngrams))
 print classify

但我得到了一个错误:

^{pr2}$

我想这是因为我的训练图不是特征向量,但我不知道如何去做。在


Tags: 代码列表forcountertrain次数词汇tweets
1条回答
网友
1楼 · 发布于 2024-05-19 05:06:49

您的培训数据还需要特定的目标标签。考虑一下这个来自nltk website的示例:

>>> from nltk.classify import SklearnClassifier
>>> from sklearn.naive_bayes import BernoulliNB
>>> from sklearn.svm import SVC
>>> train_data = [({"a": 4, "b": 1, "c": 0}, "ham"),
...               ({"a": 5, "b": 2, "c": 1}, "ham"),
...               ({"a": 0, "b": 3, "c": 4}, "spam"),
...               ({"a": 5, "b": 1, "c": 1}, "ham"),
...               ({"a": 1, "b": 4, "c": 3}, "spam")]
>>> classif = SklearnClassifier(BernoulliNB()).train(train_data)
>>> test_data = [{"a": 3, "b": 2, "c": 1},
...              {"a": 0, "b": 3, "c": 7}]
>>> classif.classify_many(test_data)
['ham', 'spam']
>>> classif = SklearnClassifier(SVC(), sparse=False).train(train_data)
>>> classif.classify_many(test_data)
['ham', 'spam']

如您所见,目标标签是hamspam。此外,您似乎在使用Counter对象,而API正在查找元组列表,其中包含每个元组中单词计数的字典以及标签。我不知道你为你的tweet语料库创建了什么目标标签,但是我可以告诉你如何为你的语料库生成双语法频率词典,假设你的语料库是iterable,其中每个元素都是tweet。在

^{pr2}$

现在你所要做的就是找出你的标签是什么,然后生成最终的培训数据,这些数据与给定文档中的结构保持一致。在

相关问题 更多 >

    热门问题