我有一个数据集,其中有一些列为object类型,其他列为int或float。我知道我需要将对象列转换为伪变量,但我还有一些表示二进制数据的int和float列(已经为0和1)。 sklearn是否会将这些列解释为分类列?我不希望将它们视为连续变量。
答案 0 :(得分:0)
OneHotEncoder
未处理,因为这些列是类别类型。因此,所有馈送到OneHotEncoder
的列都将转换为伪变量。
您可以参考示例here。
如果您已经有二进制变量,则没有必要为其创建两个虚拟变量。
您可以使用make_column_transformer
来指定需要一种热编码的列。
示例:
>>> import pandas as pd
>>> X = pd.DataFrame([['Male', 0], ['Female', 1], ['Female', 0]], columns=['gender', 'groups'])
>>> from sklearn.compose import make_column_transformer
>>> ct = make_column_transformer((OneHotEncoder(),[0])) #, remainder='passthrough'
>>> ct.fit_transform(X)
array([[0., 1.],
[1., 0.],
[1., 0.]])