是否有一种直接的方法来查看每个类的顶级功能?基于tfidf?
我正在使用KNeighbors分类器,SVC线性,多项式NB。
其次,我一直在寻找一种方法来查看未正确分类的文件?我可以查看混淆矩阵,但我想查看具体的文档,看看是什么特征导致了错误分类。
classifier = SVC(kernel='linear')
counts = tfidf_vectorizer.fit_transform(data['text'].values).toarray()
targets = data['class'].values
classifier.fit(counts, targets)
counts = tfidf_vectorizer.fit_transform(test['text'].values).toarray()
predictions = classifier.predict(counts)
编辑:我添加了代码片段,其中我只创建了一个tfidf矢量器,并使用它来训练分类器。
就像前面的评论所建议的那样,一个更具体的问题会得到更好的答案,但我一直在使用这个包,所以我会尽力提供帮助。
I。确定sklearn中分类类的顶级功能实际上取决于您使用的单个工具。例如,许多集成方法(如RandomForestClassifier
和GradientBoostingClassifer
)都带有.feature_importances_
属性,该属性将根据每个特征的重要性对其进行评分。相反,大多数线性模型(如LogisticRegression
或RidgeClassifier
)都有一个正则化惩罚,它会对系数的大小进行惩罚,这意味着系数的大小在某种程度上反映了特征的重要性(尽管你需要记住单个特征的数字尺度),可以使用模型类的.coef_
属性来访问。
总之,几乎所有的sklearn模型都有一些提取特征重要性的方法,但不同模型的方法不同。幸运的是,sklearn文档非常棒,所以我会阅读您的特定模型,以确定您的最佳方法。此外,除了特定于模型的API之外,请确保阅读与您的问题类型相关的用户指南。
II。没有现成的sklearn方法来提供错误分类的记录,但如果您使用pandas DataFrame(您应该使用它)来为模型提供信息,那么只需几行代码就可以完成。
import pandas as pd
from sklearn.linear_model import RandomForestClassifier
df = pd.DataFrame(data)
x = df[[<list of feature columns>]]
y = df[<target column>]
mod = RandomForestClassifier()
mod.fit(x.values, y.values)
df['predict'] = mod.predict(x.values)
incorrect = df[df['predict']!=df[<target column>]]
生成的incorrect
数据帧将只包含错误分类的记录。
希望这能有所帮助!