我想知道在进行独热编码后,是否有办法将我的分类列转换为使用另一列的值,而不是在某个类别中显示二进制的“1”?
我的数据框如下所示:
ID Location Amount Quantity1 TEXAS 12342 12 CALIFORNIA 23423 4
在标签编码和独热编码后,我得到的是:
ID Location_TEXAS Location_CALIFORNIA Amount Quantity1 1 0 12342 12 0 1 23423 4
是否有可能在编码列中使用Amount的值而不是二进制值?
期望的结果是:
ID Location_TEXAS Location_CALIFORNIA Amount Quantity1 12342 0 12342 12 0 23423 23423 4
之后,我可以完全删除Amount列。
这是我用于标签编码和独热编码的代码:
from sklearn.preprocessing import LabelEncoder, OneHotEncoder labelencoder_X = LabelEncoder() X[:, 0] = labelencoder_X.fit_transform(X[:, 0]) onehotencoder = OneHotEncoder(categorical_features = [0]) X = onehotencoder.fit_transform(X).toarray()
请告诉我这是否可行。任何帮助将不胜感激。
回答:
这样做会违背独热编码州变量的目的。独热编码的理念是,对于每个观测值,每个编码特征中只有一个是“热”的。
此外,这会使你的州和金额特征线性不可分,从而无法让模型独立于位置权重来调整金额的权重。除非有非常具体的理由这样做,否则我认为这不是一个好主意。