【问题标题】:How to evaluate the KNN classifier for each pair of variables?如何评估每对变量的 KNN 分类器?
【发布时间】:2020-12-22 19:32:13
【问题描述】:

我使用permutatation_importance 来查找最重要的值

from sklearn.neighbors import KNeighborsClassifier
import numpy as np
from sklearn.inspection import permutation_importance


columns=['progresion', 'tipo']

X = df_cat.drop(columns, axis = 1)
y = df_cat['progresion']

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state = 42)

knn = KNeighborsClassifier()

knn.fit(X_train,y_train)

results = permutation_importance(knn, X, y, scoring='accuracy')

importance = results.importances_mean

for i,v in enumerate(importance):
   print('Feature: %0d, Score: %.5f' % (i,v))

但我想做的是评估每对变量的 KNN 分类器,以找出哪对变量更相关,从而获得更好的模型性能。

【问题讨论】:

    标签: python validation knn


    【解决方案1】:

    kNN 对每个自变量(特征)的偏好相同。这使得使用 kNN 隔离特征或为其分配不同的权重变得非常困难。

    此外,由于 kNN 是一种非参数算法(它不会基于数据做出任何假设),与朴素贝叶斯不同,您无法基于特征获得任何有意义的概率输出。

    在这种情况下,我建议看一下基于决策树的算法,例如随机森林,它们本质上具有 feature_importance_ 作为 scikit-learn 中的内置类。这将使您在实施模型后了解每个功能的重要性。

    这里有一个很好的例子: https://scikit-learn.org/stable/auto_examples/ensemble/plot_forest_importances.html

    这里还有 RF 特性_重要性_部分: Random Forest feature_importances_

    如果您真的想违背传统观念并使用 kNN 算法识别特征重要性,一种选择可以是构建具有不同特征的模型,然后比较整体准确度。

    我知道这可能会或可能不会直接解决您的问题。但这是我此刻想到的。说不定还会有其他角度和我不同的答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-15
      • 1970-01-01
      • 2017-06-10
      • 2016-08-22
      • 2017-01-17
      • 2018-10-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多