- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在两个文件之间进行评分。两者具有相同的数据,但标签不同。训练数据中的标签是正确的,而测试数据中的标签不一定正确......我想知道准确性、召回率和 f 分数。
import pandas
import numpy as np
import pandas as pd
from sklearn import metrics
from sklearn import cross_validation
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import precision_recall_fscore_support as score
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics import precision_score, recall_score, confusion_matrix, classification_report, accuracy_score, f1_score
df_train = pd.read_csv('train.csv', sep = ',')
df_test = pd.read_csv('teste.csv', sep = ',')
vec_train = TfidfVectorizer()
X_train = vec_train.fit_transform(df_train['text'])
y_train = df_train['label']
vec_test = TfidfVectorizer()
X_test = vec_test.fit_transform(df_train['text'])
y_test = df_test['label']
clf = LogisticRegression(penalty='l2', multi_class = 'multinomial',solver ='newton-cg')
y_pred = clf.predict(X_test)
print ("Accuracy on training set:")
print (clf.score(X_train, y_train))
print ("Accuracy on testing set:")
print (clf.score(X_test, y_test))
print ("Classification Report:")
print (metrics.classification_report(y_test, y_pred))
一个愚蠢的数据示例:
TRAIN
text,label
dogs are cool,animal
flowers are beautifil,plants
pen is mine,objet
beyonce is an artist,person
TEST
text,label
dogs are cool,objet
flowers are beautifil,plants
pen is mine,person
beyonce is an artist,animal
错误:
Traceback (most recent call last):
File "accuracy.py", line 30, in y_pred = clf.predict(X_test)
File "/usr/lib/python3/dist-packages/sklearn/linear_model/base.py", line 324, in predict scores = self.decision_function(X)
File "/usr/lib/python3/dist-packages/sklearn/linear_model/base.py", line 298, in decision_function "yet" % {'name': type(self).name}) sklearn.exceptions.NotFittedError: This LogisticRegression instance is not fitted yet
我只是想计算测试的准确性
最佳答案
您正在测试数据上拟合新的 TfidfVectorizer
。这会给出错误的结果。您应该使用与训练数据相同的对象。
这样做:
vec_train = TfidfVectorizer()
X_train = vec_train.fit_transform(df_train['text'])
X_test = vec_train.transform(df_test['text'])
之后,正如 @MohammedKashif 所说,您需要首先训练您的 LogisticRegression 模型,然后在测试中进行预测。
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
之后您就可以使用评分代码而不会出现任何错误。
关于python - 两个文件之间的Classification_report,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52261948/
我正在使用 Sklean 的 classification_report 来总结我的训练和测试时期。 sklearn.metrics.classification_report 我在每个时期都会得到这
我想知道是否有可能在 sklearn (scikit) 的 classification_report 逗号后获得更多数字。 atm 它看起来像这样: precision re
这是sklearn中classification_report的一个简单例子 from sklearn.metrics import classification_report y_true = [0
我一直在尝试以字典的形式获取分类报告。所以根据 scikit-learn 0.20 文档,我这样做: from sklearn import metrics rep = metrics.classif
我正在 Scikit-Learn 中进行多类文本分类。该数据集正在使用具有数百个标签的多项朴素贝叶斯分类器进行训练。这是 Scikit Learn 脚本的摘录,用于拟合 MNB 模型 from __f
我正在尝试运行 sklearn.metrics.classification_report,我的数据位于 Pandas 数据框中。数据框 df_joined 看起来像这样,有 100 行: Times
有时在使用 sklearn.metrics.classification_report 时我们会得到以下错误 TypeError: object of type 'int' has no len()
我是一名优秀的程序员,十分优秀!