我有一个基础真值标签列表:
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]]
寻找一个python的和有效的方法来获得所需的输出
直接传递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]])