Я пробовал свою модель на наборе данных с использованием KNN-классификатора, мне хотелось бы знать, какая из них наиболее важна в модели, и в наибольшей степени способствуют предсказанию.Как получить самую полезную функцию в классификаторе Knn Sklearn
ответ
Чтобы получить качественное представление, в котором функция имеет большее влияние на классификацию можно выполнять n_feats
классификации, используя одну функцию, в то время (n_feats
обозначает особенность размерности вектора), например:
import numpy as np
from sklearn import datasets
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import cross_val_score
iris = datasets.load_iris()
clf = KNeighborsClassifier()
y = iris.target
n_feats = iris.data.shape[1]
print('Feature Accuracy')
for i in range(n_feats):
X = iris.data[:, i].reshape(-1, 1)
scores = cross_val_score(clf, X, y)
print('%d %g' % (i, scores.mean()))
Выход:
Feature Accuracy
0 0.692402
1 0.518382
2 0.95384
3 0.95384
Эти результаты свидетельствуют о том, что классификация преобладают черты 2 и 3.
Вы могли бы следовать альтернативный подход, заменив X = iris.data[:, i].reshape(-1, 1)
в коде выше по:
X_head = np.atleast_2d(iris.data[:, 0:i])
X_tail = np.atleast_2d(iris.data[:, i+1:])
X = np.hstack((X_head, X_tail))
В этом случае вы выполняете n_samples
классификации, а также. Разница заключается в том, что вектор признаков, используемый в классификации i, состоит из всех функций, но i-й.
Пример запуска:
Feature Accuracy
0 0.973856
1 0.96732
2 0.946895
3 0.959967
Это ясно вытекает из этих результатов, что классификатор дает худшую точность, когда вы избавитесь от второго признака, что согласуется с результатами, полученными с помощью первого подхода.