machine-learning - 分类编码之前还是之后标准化?

标签 machine-learning scikit-learn linear-regression sklearn-pandas one-hot-encoding

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

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

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

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

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

最佳答案

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

关于machine-learning - 分类编码之前还是之后标准化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47272033/

相关文章:

amazon-web-services - 我正在尝试创建 AWS Sagemaker Pipeline。客户端错误: An error occurred (ValidationException) when calling the CreatePipeline operation:

scikit-learn - 支持向量回归的程度 - RBF Kernel

r - 使用角色作为线性模型的对象(R)

r - 带有 2 个断点的断棒(或分段)回归

python - 如何使用 scikit-learn 获得优势比和其他相关特征

python - 我不断收到线性回归过程的错误 :"ValueError: Expected 2D array, got 1D array instead:"

python - ValueError : Error when checking target: expected model_2 to have shape (None, 252, 252, 1) 但得到形状为 (300, 128, 128, 3) 的数组

machine-learning - 寻找神经网络近似的函数

python - csv 数据库的 Keras 索引越界错误

machine-learning - 验证聚类算法的输出