Python 如何用两个值对一列进行热编码?
如果我用3个可能的值对一列进行热编码,如下所示: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
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,您可以使用
获取虚拟对象
。Egdf=pd.DataFrame(data={'a':[0,1,0]})
和pd.get_假人(df['a'])