2017-02-07 3 views

ответ

3

Чтобы получить качественное представление, в котором функция имеет большее влияние на классификацию можно выполнять 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 

Это ясно вытекает из этих результатов, что классификатор дает худшую точность, когда вы избавитесь от второго признака, что согласуется с результатами, полученными с помощью первого подхода.

Смежные вопросы