【发布时间】:2019-03-26 14:10:23
【问题描述】:
我正在尝试使用 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]),结果为:
[[0 1 0]
[1 0 0]]
而当我们将 3 更改为 2 时,即lb.fit(range(0, 2)),结果将是
[[1]
[0]]
而不是
[[0 1]
[1 0]]
这将在与具有n 维度的数组一致的算法中产生问题。有什么办法可以解决这个问题吗?
【问题讨论】:
-
你能解释一下你调用哪个方法来得到结果吗?
lb.fit()不返回任何内容, -
很抱歉没有包含它。这是代码:
print(lb.transform([1, 0])) -
首先,这不是方法的问题。根据文档:
Binary targets transform to a column vector(scikit-learn.org/stable/modules/generated/…) 您可以从列向量结果构建您想要的数组,如果维度为 2。如果不清楚,我会尝试写一个答案。 -
谢谢,我也不会把它称为方法的问题,但是,对我来说,更好的实现将允许开发人员控制输出类型以使其保持一致。正如您所强调的那样,我必须编写另一个自定义方法以防万一
n=2例如。
标签: python scikit-learn