scikit-learn - 设置 KNN 的特征权重

标签 scikit-learn knn

我正在研究 sklearn 的 KNN 实现。虽然我的输入数据有大约 20 个特征,但我相信其中一些特征比其他特征更重要。有没有办法:

  1. 在“训练”KNN 学习器时设置每个特征的特征权重。
  2. 了解经过或不经过预处理数据的最佳权重值。

在相关说明中,我知道 KNN 通常不需要训练,但由于 sklearn 使用 KDTree 实现它,因此必须从训练数据生成树。然而,这听起来像是将 KNN 问题变成了二叉树问题。是这样吗?

谢谢。

最佳答案

kNN 只是基于距离函数。当你说“特征二比其他特征更重要”时,通常意味着特征二的差异值得其他坐标的 10 倍差异。实现此目的的简单方法是将坐标 #2 乘以其权重。因此,您将坐标乘以各自的权重而不是原始坐标放入树中。

如果您的特征是坐标的组合,您可能需要在应用权重之前对坐标应用适当的矩阵变换,请参阅 PCA(主成分分析)。 PCA 可能会帮助您解决问题 2。

关于scikit-learn - 设置 KNN 的特征权重,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19892499/

相关文章:

python - 使用 Joblib 从 BytesIO 加载模型

python - sklearn 中的 2D KDE 带宽与 scipy 中的带宽之间的关系

pandas - 使用 sklearn 或 pandas 进行一次热编码后,如何在混合数据集(数值 + 分类)上应用 KNN

python - 在 Julia 中加速 kNN 函数

python - 如何从 1,000,000 行和 20,000 个特征中获取最近邻矩阵?

python - 尝试使用 BayesSearchCV 调整 MLPClassifier hidden_​​layer_sizes 时出错

python - 如何优雅地将 Sklearn GridsearchCV 最佳参数传递给另一个模型?

python-3.x - Scikit learn/python 中自然文本的有效分类

machine-learning - k-NN以及关于k值和决策边界的一些问题

python - Knn 分类器的 Scikit learn 中出现“不支持多类多输出”错误