我想知道是否有任何方法可以在单次热编码之后转换我的分类列,使其具有另一列的值,而不是存在的其中一个分类中的二进制“ 1”?
我的数据框如下所示:
ID Location Amount Quantity
1 TEXAS 12342 1
2 CALIFORNIA 23423 4
经过标签和一键编码后,我得到了:
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
之后,我可以完全删除“金额”列。
这是我用于标签编码和一键编码的代码:
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()
如果可以的话,请告诉我。任何帮助,将不胜感激。
最佳答案
这将无法对状态变量进行一次热编码。 OHE的想法是,对于每个观察,每个编码特征中只有一个是“热”的。
此外,这会使状态和数量特征在线性上不可分割,这将使模型无法独立于位置的权重来改变数量的权重。如果没有非常具体的原因,我会说这不是一个好主意。
关于python - 在一次热编码期间/之后,是否可以使用另一列的值代替二进制标志?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57173033/