如何通过删除此错误生成分类报告?

时间:2018-04-23 19:43:55

标签: python-3.x scikit-learn

我希望从语料库 [pos,neg] 的语料库生成 movie_reviews 的分类报告。但发现错误

代码:

movie_train_clf = Pipeline([('vect',CountVectorizer(stop_words='english')),('tfidf',TfidfTransformer()),('clas',BernoulliNB(fit_prior=True))])

movie_train_clas = movie_train_clf.fit(movie_train.data ,movie_train.target)

 predict = movie_train_clas.predict(movie_train.data)
 np.mean(predict==movie_train.target)

现在我使用分类报告

from sklearn.metrics import classification_report
print(classification_report(predict, movie_train_clas,target_names==target_names))

错误:

TypeError: iteration over a 0-d array.

请帮我正确的语法。

1 个答案:

答案 0 :(得分:1)

您的代码中存在多个错误:

1)class Order(models.Model): invoice_file = models.FileField(upload_to=file_prefix('inv_')) purchase_order_file = models.FileField(upload_to=file_prefix('po_')) payment_file = models.FileField(upload_to=file_prefix('pmt_')) 中的参数顺序错误。根据{{​​3}}:

classification_report

第一个参数是真实标签,第二个参数是预测标签。

2)您正在使用classification_report(y_true, y_pred, ... 代替真正的标签。根据您的代码,movie_train_clasmovie_train_clas的返回值,因此它是movie_train_clf.fit()本身。 movie_train_clf会自行返回,因此您无法使用它代替地面实况标签。

3)当@AmiTavory发现时,当前错误是由于用于代替赋值fit()的比较运算符(==)。对(=)的正确调用应该是:

classification_report