繁体   English   中英

Scikit多级分类指标,分类报告

[英]Scikit multi-class classification metrics, classification report

我正在使用scikit学习0.15.2来解决多类别问题。 在下面的示例中,我得到了很多DeprecationWarnings: scikit 0.14多标签指标,直到我开始使用MultiLabelBinarizer:

“DeprecationWarning:直接支持序列序列多标记表示将不可用于0.17版本。使用sklearn.preprocessing.MultiLabelBinarizer转换为标签指示符表示。”

但是,我无法找到一种方法来获得分类报告(精确,召回,f-measure),因为我之前可能如下所示: scikit 0.14多标签指标

我尝试使用inverse_transform,如下所示,这给了一个classification_report,但也再次给出了警告,从0.17开始,这段代码就会破坏。

如何获得多类分类问题的度量?

示例代码:

import numpy as np
from sklearn.multiclass import OneVsRestClassifier
from sklearn.preprocessing import MultiLabelBinarizer
from sklearn.svm import LinearSVC
from sklearn.metrics import classification_report

# Some simple data:

X_train = np.array([[0,0,0], [0,0,1], [0,1,0], [1,0,0], [1,1,1]])
y_train = [[1], [1], [1,2], [2], [2]]

# Use MultiLabelBinarizer and train a multi-class classifier:

mlb = MultiLabelBinarizer(sparse_output=True)
y_train_mlb = mlb.fit_transform(y_train)

clf = OneVsRestClassifier(LinearSVC())
clf.fit(X_train, y_train_mlb)

# classification_report, here I did not find a way to use y_train_mlb, 
# I am getting a lot of DeprecationWarnings

predictions_test = mlb.inverse_transform(clf.predict(X_train))
print classification_report(y_train, predictions_test)

# Predict new example:

print mlb.inverse_transform(clf.predict(np.array([0,1,0])))

您似乎必须使用二进制化标签运行分类报告:

print classification_report(y_train_mlb, clf.predict(X_train))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM