我想知道是否有任何方法可以在单次热编码之后转换我的分类列,使其具有另一列的值,而不是存在的其中一个分类中的二进制“ 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/

10-11 22:48
查看更多