分类编码之前还是之后的标准化



我正在研究一种回归算法,在这种情况下k-NearestNeighbors来预测产品的特定价格。

所以我有一个训练集,它只有一个分类特征,有4个可能的值。我使用了一对k分类编码方案来处理它,这意味着现在我的Pandas DataFrame中又有3列,根据当前值的不同,列数为0/1。

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

我应该在分类编码之前或之后进行标准化(均值和单位方差为零的高斯分布)和标准化吗

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

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

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

但考虑到你写的关于分类的文章。如果用值来表示,我想里面有某种排名。也许,您可以使用原始列而不是热编码列。只是思想。

您通常希望标准化所有功能,以便在编码后完成(假设您希望从一开始就进行标准化,考虑到有些机器学习算法不需要标准化功能即可正常工作)。

因此,是否标准化数据有50/50的投票权。我建议,考虑到改善收益方面的积极影响,无论多么小,也没有不利影响,在拆分和训练估计器之前,都应该进行标准化

相关内容

最新更新