分类编码之前或之后的标准化?

Standardization before or after categorical encoding?

我正在研究回归算法,在本例中是 k-NearestNeighbors 来预测产品的特定价格。

所以我有一个训练集,它只有一个分类特征和 4 个可能的值。我已经使用一对一的分类编码方案来处理它,这意味着现在我的 Pandas DataFrame 中还有 3 列,其中 0/1 取决于存在的值。

DataFrame 中的其他功能主要是距离,如纬度 - 位置和价格的经度,均为数字。

我应该在分类编码之前或之后标准化(具有零均值和单位方差的高斯分布)和归一化吗?

我认为在编码后进行归一化可能是有益的,这样在测量邻居之间的距离时,每个特征对估计器和其他每个特征一样重要,但我不是真的。

您通常希望对所有特征进行标准化,以便在编码后完成(假设您希望首先进行标准化,考虑到有些机器学习算法不需要对特征进行标准化好好工作)。

之后。试想一下,您的列中没有数字变量,而是字符串。你不能标准化字符串 - 对吧? :)

但是考虑到你写的关于类别的内容。如果它们用值来表示,我想里面会有某种排名。也许,您可以使用原始列而不是单热编码。只是想法。

好像是个悬而未决的问题,虽然晚了还是想回答一下。我也不确定向量之间的相似性会受到多大影响,但根据我的实践经验,您应该首先对特征进行编码,然后对其进行缩放。我用 scikit learn preprocessing.StandardScaler() 尝试了相反的方法,如果你的特征向量的长度不同,它就不起作用:scaler.fit(X_train) 产生 ValueError: setting an array element with a sequence. 从你的描述中我可以看出你的数据具有固定数量的特征,但我认为出于泛化的目的(也许您将来会有新特征?),最好假设每个数据实例都具有唯一的特征向量长度。例如,我使用 Keras text_to_word_sequence 将我的文本文档转换为单词索引(这给了我不同的向量长度),然后我将它们转换为单热向量,然后将它们标准化。实际上,我没有看到标准化有很大的改进。我认为您还应该重新考虑要标准化哪些功能,因为假人可能不需要标准化。 Here 分类属性似乎不需要任何标准化或规范化。 K 最近邻是基于距离的,因此它会受到这些预处理技术的影响。我建议尝试标准化或规范化,并检查不同的模型如何对您的数据集和任务做出反应。

所以对是否标准化数据有 50/50 的投票。 我建议,考虑到无论多小都对改进收益有积极影响,并且没有不利影响,应该在拆分和训练估计器之前进行标准化