我正在尝试在训练数据中拟合 OneVsAll 分类输出,输出行加起来为 1。
一种可能的方法是读取所有行并找出哪一列具有最高值并准备训练数据。
例如:y = [[0.2,0.8,0],[0,1,0],[0,0.3,0.7]] 可以简化为 y = [b ,b,c] ,将 a,b,c 分别视为列 0,1,2 的对应类。
scikit-learn 中是否有一个函数可以帮助实现这种转换?
请您参考如下方法:
这段代码做你想做的:
import numpy as np
import string
y = np.array([[0.2,0.8,0],[0,1,0],[0,0.3,0.7]])
def transform(y,labels):
f = np.vectorize(lambda i : string.letters[i])
y = f(y.argmax(axis=1))
return y
y = transform(y,'abc')
编辑:使用 alko 的评论,我让用户为转换函数提供标签变得更通用。
