我希望从语料库 [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.
请帮我正确的语法。
答案 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_clas
是movie_train_clas
的返回值,因此它是movie_train_clf.fit()
本身。 movie_train_clf
会自行返回,因此您无法使用它代替地面实况标签。
3)当@AmiTavory发现时,当前错误是由于用于代替赋值fit()
的比较运算符(==)
。对(=)
的正确调用应该是:
classification_report