gpt4 book ai didi

python - 当分类器从测试文件进行预测时,为什么会有额外的标签?

转载 作者:行者123 更新时间:2023-11-30 08:55:24 25 4
gpt4 key购买 nike

在之前的post中我询问了有关文本分类的问题,我想更好地了解正在发生的事情以及 scikit-learn 是如何工作的,假设 train.txt

Pošto je EULEX obećao da će obaviti istragu o prošlosedmičnom izbijanju nasilja na sjeveru Kosova, taj incident predstavlja još jedan ispit kapaciteta misije da doprinese jačanju vladavine prava.
De todas as provações que teve de suplantar ao longo da vida, qual foi a mais difícil? O início. Qualquer começo apresenta dificuldades que parecem intransponíveis. Mas tive sempre a minha mãe do meu lado. Foi ela quem me ajudou a encontrar forças para enfrentar as situações mais decepcionantes, negativas, as que me punham mesmo furiosa.
Al parecer, Andrea Guasch pone que una relación a distancia es muy difícil de llevar como excusa. Algo con lo que, por lo visto, Alex Lequio no está nada de acuerdo. ¿O es que más bien ya ha conseguido la fama que andaba buscando?
Vo väčšine golfových rezortov ide o veľký komplex niekoľkých ihrísk blízko pri sebe spojených s hotelmi a ďalšími možnosťami trávenia voľného času – nie vždy sú manželky či deti nadšenými golfistami, a tak potrebujú iný druh vyžitia. Zaujímavé kombinácie ponúkajú aj rakúske, švajčiarske či talianske Alpy, kde sa dá v zime lyžovať a v lete hrať golf pod vysokými alpskými končiarmi.

test.txt

Por ello, ha insistido en que Europa tiene que darle un toque de atención porque Portugal esta incumpliendo la directiva del establecimiento del peaje
Estima-se que o mercado homossexual só na Cidade do México movimente cerca de oito mil milhões de dólares, aproximadamente seis mil milhões de euros

我有这个小脚本可以执行语言识别:

# -- coding: utf-8 --
import codecs
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB

train = []

#We set the classes
tags = ['bos','pt','es','slov']

word_vectorizer = CountVectorizer(analyzer='word')


#vectorize the train and the test files
trainset = word_vectorizer.fit_transform(
codecs.open('/Users/user/Desktop/train.txt','r','utf8'))

testset = word_vectorizer.transform(
codecs.open('/Users/user/Desktop/test.txt','r','utf8'))

# We train the algorithm:
mnb = MultinomialNB()
mnb.fit(trainset, tags)
res = mnb.predict(testset)

print res

这是输出:['es' 'pt' 'bos']。输出的问题在于,显然在分类输出中添加了一个实际上错误的类(即 bos)。我想问题在于我如何标记 traintest 文件,所以我如何标记这两个文件以获得正确的结果?是:['es' 'pt']

现在我明白这两个文件都需要矢量化,但我不明白这里发生了什么:

mnb = MultinomialNB()
mnb.fit(trainset, tags)
res = mnb.predict(testset)

有人可以深入地向我解释一下脚本的上述部分发生了什么吗?

最佳答案

您的 test.txt 中有一个空行导致额外的输入

此行逐行读取 test.txt 并将每一行更改为特征向量:

testset = word_vectorizer.transform(
codecs.open('/Users/user/Desktop/test.txt','r','utf8'))

额外的空行会导致额外的向量被最可能的标签标记。在训练数据 train.txt 中,所有标签都是同等可能的,因此空行将采用第一个标签。

关于python - 当分类器从测试文件进行预测时,为什么会有额外的标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26943405/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com