我想知道是否有任何方法可以在one-hot编码后将我的分类列转换为来自另一列的值,而不是其中一个类别中的二进制"1“?
我的数据帧如下所示:
ID Location Amount Quantity
1 TEXAS 12342 1
2 CALIFORNIA 23423 4在标签和one-hot编码之后,我得到了这个:
ID Location_TEXAS Location_CALIFORNIA Amount Quantity
1 1 0 12342 1
2 0 1 23423 4是否可以将数量放在编码列中而不是二进制值中?
期望的结果:
ID Location_TEXAS Location_CALIFORNIA Amount Quantity
1 12342 0 12342 1
2 0 23423 23423 4在此之后,我可以完全删除Amount列。
这是我用于标签编码和one-hot编码的代码:
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()如果可能的话,请让我知道。任何帮助都将不胜感激。
发布于 2019-07-24 06:44:24
这将违背一次性编码状态变量的目的。OHE的思想是,对于每个观察值,只有一个编码特征对每个观察值是“热”的。
此外,这将使您的状态和数量特征线性不可分,这将不允许模型独立于位置的权重而改变数量的权重。如果没有明确的理由这样做,我会说这不是一个好主意。
https://stackoverflow.com/questions/57173033
复制相似问题