Как найти график важности функции или значения переменной для KNNClassifier () - PullRequest
0 голосов
/ 23 марта 2019

Я работаю над набором числовых данных, используя KNN Classifier пакета sklearn.

После того, как прогноз завершен, 4 важные переменные должны быть отображены на гистограмме.

ВотРешение, которое я пробовал, но выдает ошибку, что feature_importances не является атрибутом KNNClassifier:

neigh = KNeighborsClassifier(n_neighbors=3)
neigh.fit(X_train, y_train)
y_pred = neigh.predict(X_test)

(pd.Series(neigh.feature_importances_, index=X_test.columns)
   .nlargest(4)
   .plot(kind='barh'))

Теперь для отображения графика важности переменных для дерева решений: аргумент, переданный pd.series ()classifier.feature_importances_

Для SVM, линейного дискриминантного анализа, аргумент, переданный pd.series (), является classifier.coef_ [0].

Однако я не могу найти подходящий аргумент для KNNклассификатор.

1 Ответ

1 голос
/ 23 марта 2019

Важность функции не определена для алгоритма классификации KNN.Здесь нет простого способа вычислить функции, отвечающие за классификацию.Что вы можете сделать, это использовать классификатор случайных лесов, который имеет атрибут feature_importances_.Даже в этом случае, однако, атрибут feature_importances_ сообщает вам самые важные функции для всей модели, а не для конкретного образца, на котором вы прогнозируете.

Если вы настроены на использование KNN, то лучший способ оценить важность функции - это взять выборку для прогнозирования и вычислить расстояние от каждого из ближайших соседей для каждой функции (вызовите эти neighb_dist).Затем выполните те же вычисления для нескольких случайных точек (назовите их rand_dist) вместо ближайших соседей.Затем для каждой функции берется соотношение neighb_dist / rand_dist, и чем оно меньше, тем важнее эта функция.

...