繁体   English   中英

Scikit 学习分类

[英]Scikit learn-Classification

有没有一种直接的方法可以查看每个类的主要功能? 基于tfidf?

我正在使用 KNeighbors 分类器、SVC-Linear、MultinomialNB。

其次,我一直在寻找一种查看未正确分类的文档的方法? 我可以查看混淆矩阵,但我想查看特定文档以查看导致错误分类的特征。

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 中确定分类类的顶级特征实际上取决于您使用的单个工具。 例如,许多集成方法(如RandomForestClassifierGradientBoostingClassifer )都带有.feature_importances_属性,该属性将根据每个特征的重要性对其进行评分。 相比之下,大多数线性模型(如LogisticRegressionRidgeClassifier )都有一个正则化惩罚,它会惩罚系数的大小,这意味着系数大小在某种程度上反映了特征的重要性(尽管您需要记住各个特征的数字尺度) 可以使用模型类的.coef_属性访问。

总之,几乎所有 sklearn 模型都有一些提取特征重要性的方法,但方法因模型而异。 幸运的是 sklearn 文档很棒,所以我会阅读您的特定模型以确定您的最佳方法。 此外,除了特定于模型的 API 外,请确保阅读与您的问题类型相关的用户指南

二、 没有开箱即用的 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 DataFrame 将只包含错误分类的记录。

希望这可以帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM