我试图使用sklearn.preprocessing.LabelBinarizer()
来创建一个只有两列标签的热编码,也就是说,我只想对两组对象进行分类。在本例中,当我使用fit(range(0,2))
时,它只返回一个一维数组,而不是2x1。这很好,但是当我想在Tensorflow
中使用它们时,形状实际上应该是(2,1)以保持维度的一致性。请告诉我怎么解决它。在
代码如下:
from sklearn import preprocessing
lb = preprocessing.LabelBinarizer()
lb.fit(range(0, 3))
调用lb.transform([1, 0])
,结果是:
而当我们将3改为2时,即lb.fit(range(0, 2))
,结果是
[[1]
[0]]
而不是
[[0 1]
[1 0]]
这将在与n
维数组一致工作的算法中产生问题。有办法解决这个问题吗?在
正如已经说过的,这不是方法的问题。根据documentation:二进制目标转换为列向量。在维数为2的情况下,可以从列向量结果生成所需的数组。
一种直接而简单的方法是:
labelBinarizer()
根据documentation的目的是如果您的数据只有两种类型的标签,那么您可以直接将其提供给二进制分类器。因此,一个列足以以一种Vs Rest的方式捕获两个类。
二进制目标转换为列向量
如果您的目的只是创建一个热编码,请使用以下方法。
^{pr2}$希望这能澄清您的问题:为什么Sklearn
labelBinarizer()
没有将2类数据转换为两列输出。相关问题 更多 >
编程相关推荐