6

我正在使用 scikit learn 0.15.2 解决多类分类问题。在我开始使用 MultiLabelBinarizer 之前,我在遵循以下示例时收到了很多 DeprecationWarnings,如下所示:scikit 0.14 多标签指标:

“DeprecationWarning:从 0.17 版开始,将无法直接支持序列多标签表示。使用 sklearn.preprocessing.MultiLabelBinarizer 转换为标签指示表示。”

但是,我找不到一种方法来让分类报告(精确度、召回率、f-measure)与它一起工作,因为我以前可能如此处所示:scikit 0.14 multi label metrics

我尝试使用 inverse_transform 如下,这给出了一个分类报告,但也再次给出了警告,从 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])))
4

1 回答 1

6

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

print classification_report(y_train_mlb, clf.predict(X_train))
于 2015-06-12T07:07:12.787 回答