Python 使用SGD分类器查找顶级特征&;GridsearchCV

Python 使用SGD分类器查找顶级特征&;GridsearchCV,python,machine-learning,scikit-learn,grid-search,Python,Machine Learning,Scikit Learn,Grid Search,如何从下面的代码中找到最重要的功能,因为它显示的是错误功能\u count\u 这里我的矢量器是BOW,分类器是带铰链损失的sgdclassizer # 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 = GridSearc

如何从下面的代码中找到最重要的功能,因为它显示的是错误功能\u count\u

这里我的矢量器是BOW,分类器是带铰链损失的sgdclassizer

# 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)
我尝试了上面的代码,但它显示错误为

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回溯(最近一次调用)
在()
---->1个重要功能(Timesort\u X\u vec,型号)
在重要功能中(矢量器、,
分类器,n)
2类标签=分类器.class_
3功能名称=矢量器。获取功能名称()
---->4 topn_class1=已排序(zip(分类器.特征\u计数)[0],
特征(名称),反向=True)[:n]
5 topn_class2=已排序(zip(分类器.特征\u计数)[1],
特征(名称),反向=True)[:n]
6打印(“负面评论中的重要词语”)
AttributeError:'GridSearchCV'对象没有属性'feature\u count'。

由于我是编程新手,请帮我解答你的问题。谢谢

您出错的原因是您正在使用的SGDClassizer没有
功能\u计数
属性(请检查中的可用属性):

起初我认为问题在于您使用的是GridSearchCV对象,但事实并非如此,因为函数中的行
class\u labels=classifier.class\u
不会引发任何错误;尽管从文档中可以看出,SGDClassizer甚至没有
classes\uuu
属性,但实际上它确实有:

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_'
据我所知,scikit中唯一包含
feature\u count\uu
属性的分类器是,而且,所有的Naive Bayes系列,尽管我不太确定它是否可以像您打算在这里使用的那样使用

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_'
clf.classes_
# array([0, 1])