Classification_report между двумя файлами - PullRequest
0 голосов
/ 10 сентября 2018

Я пытаюсь сделать оценку между двумя файлами. Оба имеют одинаковые данные, но не одну и ту же метку. Метки из данных поезда являются исправленными, а метки из данных испытаний не обязательно ... и я хотел бы знать точность, отзыв и 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 (последний вызов был последним):

Файл "precision.py", строка 30, в y_pred = clf.predict (X_test)

Файл "/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, в решении_функции "still"% {'name': type (self). name }) sklearn.exceptions.NotFittedError: Этот экземпляр LogisticRegression еще не установлен

Я просто хотел вычислить точность теста

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Вы устанавливаете новый 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)

После этого вы можете использовать код оценки без каких-либо ошибок.

0 голосов
/ 10 сентября 2018

Вы должны сначала обучить свой объект классификатора, используя 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...