如何以特定的 class 顺序 label_binarize 多 class

How to label_binarize Multiclass in a specific class order

我有一个真实标签列表:

yTrue = ['class2','classC','class3','class3','classA','classB','class2']

和可能的列表 类(不同,按自定义顺序):

orderedClasses = ['classA','class2','classB','class3','classC']

我想在 One-Vs-The-Rest 中为所有可能的列表编码 类。

期望的输出:

[[0,1,0,0,0],[0,0,0,0,1],[0,0,0,1,0],[0,0,0,1,0],[1,0,0,0,0],[0,0,1,0,0],[0,1,0,0,0]]

我尝试使用 sklearn.preprocessing.label_binarize (doc),但问题是它无法维持我对 类:

的自定义订单
[[0,0,1,0,0],[0,0,0,0,1],[1,0,0,0,0],[1,0,0,0,0],[0,0,0,1,0],[0,1,0,0,0],[0,0,1,0,0]]

寻找一种 Pythonic 的高效方法来获得所需的输出

只需将orderedClasses作为classes参数传递

In [15]: label_binarize(yTrue, orderedClasses)
Out[15]:
array([[0, 1, 0, 0, 0],
       [0, 0, 0, 0, 1],
       [0, 0, 0, 1, 0],
       [0, 0, 0, 1, 0],
       [1, 0, 0, 0, 0],
       [0, 0, 1, 0, 0],
       [0, 1, 0, 0, 0]])