Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何用两个值对一列进行热编码?_Python_Scikit Learn_One Hot Encoding - Fatal编程技术网

Python 如何用两个值对一列进行热编码?

Python 如何用两个值对一列进行热编码?,python,scikit-learn,one-hot-encoding,Python,Scikit Learn,One Hot Encoding,如果我用3个可能的值对一列进行热编码,如下所示: from sklearn import preprocessing lb = preprocessing.LabelBinarizer() lb.fit([0, 1, 2]) lb.classes_ lb.transform([1, 0]) lb.fit([0, 1]) lb.classes_ lb.transform([1, 0]) 然后我得到: array([[0, 1, 0], [1, 0, 0]]) 这正是我想要的。3

如果我用3个可能的值对一列进行热编码,如下所示:

from sklearn import preprocessing
lb = preprocessing.LabelBinarizer()
lb.fit([0, 1, 2])
lb.classes_
lb.transform([1, 0])
lb.fit([0, 1])
lb.classes_
lb.transform([1, 0])
然后我得到:

array([[0, 1, 0],
       [1, 0, 0]])
这正是我想要的。3列=每个可能值对应1列

但是,如果我有两个可能的值,比如:

from sklearn import preprocessing
lb = preprocessing.LabelBinarizer()
lb.fit([0, 1, 2])
lb.classes_
lb.transform([1, 0])
lb.fit([0, 1])
lb.classes_
lb.transform([1, 0])
我得到:

array([[1],
       [0]])
它只有一列,即使我有两个可能的值。在这种情况下,我想结束的是:

array([[0, 1],
       [1, 0]])
在这种情况下,如何获得2列结果?

您可以使用。例如:

In [37]: oh = preprocessing.OneHotEncoder(sparse=False)

In [38]: oh.fit([[0], [1]])
Out[38]:
OneHotEncoder(categorical_features='all', dtype=<type 'float'>,
       handle_unknown='error', n_values=2, sparse=False)

In [39]: oh.transform([[1], [0]])
Out[39]:
array([[ 0.,  1.],
       [ 1.,  0.]])
[37]中的
oh=preprocessing.onehotcoder(稀疏=False)
在[38]:oh.fit([0],[1]])
出[38]:
OneHotEncoder(分类功能='all',数据类型=,
handle_unknown='error',n_值=2,稀疏=False)
在[39]:oh.transform([[1],[0]])中
出[39]:
数组([[0,1.],
[ 1.,  0.]])

看起来像是熊猫。在我的情况下,获取傻瓜是最简单的解决方案:

pd.get_dummies([1, 0])

好的,这看起来是一个解决方案。但是,如何将Pandas数据帧的一列输入fit函数?使用LabelBinarizer非常简单,但是OneHotEncoder似乎没有直接获取Pandas列。使用Pandas,您可以使用
获取虚拟对象
。Eg
df=pd.DataFrame(data={'a':[0,1,0]})
pd.get_假人(df['a'])