使用scikit-learn和自己的语料库理解accuracy_score?

假设我已经使用scikit-learn的SVC进行了一些文本分类工作。首先,我对语料库进行了向量化,将数据分为测试集和训练集,然后我将标签设置到训练集中。现在我想获得分类的准确率。

文档中,我读到了以下内容:

>>> import numpy as np>>> from sklearn.metrics import accuracy_score>>> y_pred = [0, 2, 1, 3]>>> y_true = [0, 1, 2, 3]>>> accuracy_score(y_true, y_pred)0.5>>> accuracy_score(y_true, y_pred, normalize=False)2

问题是我不理解y_pred = [0, 2, 1, 3]y_true = [0, 1, 2, 3]是什么意思,以及如何在对自己的语料库的测试集进行分类后“获取”或获得这些值。能有人帮我解决这个问题吗?

举个例子来说明如下:

训练数据:

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.

测试数据:

Por ello, ha insistido en que Europa tiene que darle un toque de atención porque Portugal esta incumpliendo la directiva del establecimiento del peajeEstima-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 eurosimport codecs, re, timefrom itertools import chainfrom sklearn.feature_extraction.text import CountVectorizerfrom sklearn.naive_bayes import MultinomialNBtrainfile = 'train.txt'testfile = 'test.txt'# Vectorizing data.train = []word_vectorizer = CountVectorizer(analyzer='word')trainset = word_vectorizer.fit_transform(codecs.open(trainfile,'r','utf8'))tags = ['bs','pt','es','sr']# Training NBmnb = MultinomialNB()mnb.fit(trainset, tags)# Tagging the documentscodecs.open(testfile,'r','utf8')testset = word_vectorizer.transform(codecs.open(testfile,'r','utf8'))results = mnb.predict(testset)print results

回答:

希望这对你有帮助。你问到:

问题是我不理解y_pred = [0, 2, 1, 3]y_true = [0, 1, 2, 3]是什么意思,以及如何在对自己的语料库的测试集进行分类后“获取”或获得这些值。能有人帮我解决这个问题吗?

回答: 如你所知,分类器的作用是将数据分类到不同的类别。在上面的例子中,假设的数据有四个不同的类别,分别用标签0、1、2和3表示。所以,如果我们的数据是关于对单色图像进行颜色分类的,标签可能代表蓝色、红色、黄色和绿色。另一个问题是,上面的例子显示数据中只有四个样本。例如,他们只有四张图片,y_true显示它们的真实标签(我们称之为groundtruth)。y_pred显示分类器的预测。现在,如果我们比较这两个列表,如果两者完全相同,我们的准确率就是100%,然而,在这种情况下,你会看到有两个预测的标签与它们的groundtruth不匹配。

现在,在你的示例代码中,你写了:

tags = ['SPAM','HAM','another_class']

这就像我上面解释的那样,首先,这意味着你的数据包含三个不同的类别;其次,这表明你的数据仅包含三个样本(这可能不是你真正想要的)。因此,这个列表的长度应该等于你的训练数据中的样本数量。如果你有进一步的问题,请告诉我。

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注