Поиск главных характеристик с помощью классификатора SGD и GridsearchCV - PullRequest
0 голосов
/ 04 октября 2018
# Implementing Linear_SGD classifier
clf = linear_model.SGDClassifier(max_iter=1000)
Cs = [0.0001,0.001, 0.01, 0.1, 1, 10]
tuned_parameters = [{'alpha': Cs}]
model = GridSearchCV(clf, tuned_parameters, scoring = 'accuracy', cv=2)
model.fit(x_train, Y_train)

как найти наиболее важные функции из приведенного ниже кода, поскольку он показывает ошибку feature_count _.

здесь мой векторизатор - BOW, а классификатор - SGDclassifier с потерей шарнира

def important_features(vectorizer,classifier,n=20):
    class_labels = classifier.classes_
    feature_names =vectorizer.get_feature_names()
    topn_class1 = sorted(zip(classifier.feature_count_[0], 
    feature_names),reverse=True)[:n]
    topn_class2 = sorted(zip(classifier.feature_count_[1], 
    feature_names),reverse=True)[:n]
    print("Important words in negative reviews")

Я пытался использовать приведенный выше код, но он показывает ошибку как

AttributeError                            Traceback (most recent call last)
<ipython-input-77-093048fb461e> in <module>()
----> 1 important_features(Timesort_X_vec,model)

<ipython-input-75-10b9d6ee3f81> in important_features(vectorizer, 
classifier, n)
  2     class_labels = classifier.classes_
  3     feature_names =vectorizer.get_feature_names()
   ----> 4     topn_class1 = sorted(zip(classifier.feature_count_[0], 
feature_names),reverse=True)[:n]
  5     topn_class2 = sorted(zip(classifier.feature_count_[1], 
feature_names),reverse=True)[:n]
  6     print("Important words in negative reviews")

 AttributeError: 'GridSearchCV' object has no attribute 'feature_count_'.

Поскольку я новичок в программировании, пожалуйста, помогите мне с вашими ответами.спасибо

1 Ответ

0 голосов
/ 04 октября 2018

Причина вашей ошибки в том, что используемый вами SGDClassifier не имеет атрибута feature_count_ (проверьте доступные атрибуты в документах ):

from sklearn.linear_model import SGDClassifier  

X = [[0., 0.], [1., 1.]]
y = [0, 1]
clf = SGDClassifier(loss="hinge", penalty="l2", max_iter=5)
clf.fit(X, y) 

clf.feature_count_
[...]
AttributeError: 'SGDClassifier' object has no attribute 'feature_count_'

ПервоначальноЯ думал, что проблема была в том, что вы использовали объект GridSearchCV, но это не так, поскольку строка class_labels = classifier.classes_ внутри вашей функции не вызывает никаких ошибок;и хотя из документации кажется, что SGDClassifier даже не имеет атрибута classes_, на практике оказывается, что он действительно имеет:

clf.classes_
# array([0, 1])

Единственные классификаторы в scikit-learn, которые я знаю, включаютАтрибутами feature_count_ являются BernoulliNB , MultinomialNB и ComplementNB , все из семейства Наивных Байесов, хотя я не совсем уверен, что его можно использовать по назначениюиспользовать его здесь ...

...