Python中标签二值化的逆过程

use*_*177 3 python scikit-learn

我已经为多类分类执行了标签二值化,并且工作正常:

y_test
1
3
4
2
0

from sklearn.preprocessing import label_binarize

y_test_binarize = label_binarize(y_test, classes=[0, 1, 2, 3, 4])
y_test_binarize

0   1   0   0   0
0   0   0   1   0
0   0   0   0   1
0   0   1   0   0
1   0   0   0   0
Run Code Online (Sandbox Code Playgroud)

接下来,我想做一个逆过程来y_testy_test_binarize变量中获取。

有没有预定义的方法?

Viv*_*mar 8

您还可以使用LabelBinarizer,它将 label_binarize 函数包装在一个类中,并提供转换为二进制数据的方法以及将它们反向转换为原始类的方法。

y_test = [1, 3, 4, 2, 0]

from sklearn import preprocessing
lb = preprocessing.LabelBinarizer()

y_test_binarize = lb.fit_transform(y_test)
#Output: y_test_binarize
array([[0   1   0   0   0],
       [0   0   0   1   0],
       [0   0   0   0   1],
       [0   0   1   0   0],
       [1   0   0   0   0]])

y_test_original = lb.inverse_transform(y_test_binarize)
#Output: y_test_original
array([1, 3, 4, 2, 0])
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。如果有任何问题,请随时询问。


cht*_*mon 2

一种简单的方法是计算二值化数据和类别的矩阵乘积:

>>> classes = [0,1,2,3,4]
>>> y_test_binarize.dot(classes)
array([1, 3, 4, 2, 0])
Run Code Online (Sandbox Code Playgroud)