我已经对多类分类进行了标签二值化,它工作正常:
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
接下来,我想做一个逆过程来从变量中获取y_test
y_test_binarize
。
是否有任何预定义的方法?
您还可以使用 LabelBinarizer,它将 label_binarize 函数包装在一个类中,并提供转换为二进制数据以及将它们inverse_transform到原始类的方法。
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])
希望这有帮助。如有任何问题,请随时询问。
一个简单的方法是计算二值化数据和类的矩阵乘积:
>>> classes = [0,1,2,3,4]
>>> y_test_binarize.dot(classes)
array([1, 3, 4, 2, 0])
使用 numpy 的 argmax 函数:
np.argmax(y_test_binarized, axis=1)