如何评估每对变量的KNN分类器?

2024-09-29 19:19:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我用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分类器,以找到哪对变量更相关,从而实现更好的模型性能


Tags: columnsfromtestimportdftrainsklearnresults
1条回答
网友
1楼 · 发布于 2024-09-29 19:19:03

kNN赞成每个独立变量(特征)相同。这使得使用kNN分离特征或为其分配不同权重变得非常困难

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

在这种情况下,我建议大家看一看基于决策树的算法,比如随机森林,它作为scikit learn中的一个内置类,固有地具有一个特性“重要性”。这将使您在实现模型后了解每个特性的重要性

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

此外,此处的射频功能u重要性uu部分: Random Forest feature_importances_

如果你真的想违背传统的智慧,使用kNN算法来识别特征的重要性,一个选择是用不同的特征构建模型,然后比较整体精度

我知道这可能会也可能不会直接解决你的问题。但这正是我现在想到的。也许会有其他不同角度的答案

相关问题 更多 >

    热门问题