簡體   English   中英

兩個文件之間的分類報告

[英]Classification_report between two files

我正在嘗試在兩個文件之間進行評分。 兩者具有相同的數據,但標簽不同。 來自火車數據的標簽是正確的,而來自測試數據的標簽則不一定...我想知道准確性,召回率和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

錯誤:

追溯(最近一次通話):

y_pred = clf.predict(X_test)中的文件“ accuracy.py”,第30行

文件“ /usr/lib/python3/dist-packages/sklearn/linear_model/base.py”,第324行,預測得分= self.decision_function(X)

文件“ /usr/lib/python3/dist-packages/sklearn/linear_model/base.py”,行298,在決策函數“尚未”%{'name':type(self)中。 名稱 })sklearn.exceptions.NotFittedError:此LogisticRegression實例尚未安裝

我只是想計算測試的准確性

你必須使用第一訓練分類對象X_train使用在預測函數之前X_test 像這樣

clf = LogisticRegression(penalty='l2', multi_class = 'multinomial',solver ='newton-cg')

#Then train the classifier over training data
clf.fit(X_train, y_train)

#Then use predict function to make predictions
y_pred = clf.predict(X_test)

您正在測試數據上安裝新的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)

之后,您可以使用評分代碼而不會出現任何錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM