kateli1991

如何用scikit-learn对标记的二元图进行矢量化?



我正在自学如何使用scikitlearn,我决定用我自己的语料库开始second task。我手工得到了一些大图,比如说:

training_data = [[('this', 'is'), ('is', 'a'),('a', 'text'), 'POS'],
[('and', 'one'), ('one', 'more'), 'NEG']
[('and', 'other'), ('one', 'more'), 'NEU']]

我想用一种可以很好地填充到scikitlearn提供的分类算法(svc、multnomialnaivebayes等)中的格式将它们矢量化。这就是我所尝试的:

^{pr2}$

我也可以像对待其他类型的向量一样来处理这个问题?。另一个问题是我得到了这个:

raise ValueError("Vocabulary wasn't fitted or is empty!")
ValueError: Vocabulary wasn't fitted or is empty!

那么,我如何向化像training_data这样的双元组。我也读过关于dictvectorizer和{a3}的文章,你们认为用它们来完成这个任务会更好吗?在


已被浏览了8564次
6 日,21 小时 之前提问
1 个回答
fefe Tyson

应该是这样的:

>>> training_data = [[('this', 'is'), ('is', 'a'),('a', 'text'), 'POS'],
                 [('and', 'one'), ('one', 'more'), 'NEG'],
                 [('and', 'other'), ('one', 'more'), 'NEU']]
>>> count_vect = CountVectorizer(preprocessor=lambda x:x,
                                 tokenizer=lambda x:x)
>>> X = count_vect.fit_transform(doc[:-1] for doc in training_data)

>>> print count_vect.vocabulary_
{('and', 'one'): 1, ('a', 'text'): 0, ('is', 'a'): 3, ('and', 'other'): 2, ('this', 'is'): 5, ('one', 'more'): 4}
>>> print X.toarray()
[[1 0 0 1 0 1]
 [0 1 0 0 1 0]
 [0 0 1 0 1 0]]

然后将标签放入目标变量:

^{pr2}$

现在可以训练模型:

model = SVC()
model.fit(X, y)
评论 - 2020年7月29日 15:42

最新Python问答

推荐Python问答