首页 文章

Scikit学习 - 分类

提问于
浏览
-1

有没有直接的方法来查看每个类的顶级功能?基于tfidf?

我正在使用KNeighbors classifer,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矢量并使用它来跟踪分类器 .

1 回答

  • 0

    像之前的评论建议的那样,一个更具体的问题会得到更好的答案,但我会一直使用这个包,所以我会尽力帮助 .

    I.确定sklearn中分类类别的主要功能实际上取决于您使用的单个工具 . 例如,许多集合方法(如 RandomForestClassifierGradientBoostingClassifer )都带有 .feature_importances_ 属性,该属性将根据其重要性对每个要素进行评分 . 相比之下,大多数线性模型(如 LogisticRegressionRidgeClassifier )都具有正则化惩罚,这会对系数的大小产生不利影响,这意味着系数大小在某种程度上反映了特征的重要性(尽管您需要记住各个特征的数字尺度) )可以使用模型类的 .coef_ 属性访问 .

    总之,几乎所有sklearn模型都有一些提取特征重要性的方法,但方法因模型而异 . 幸运的是,sklearn文档非常棒,所以我会阅读您的特定模型以确定您的最佳方法 . 此外,除了特定于型号的API之外,请务必阅读与您的问题类型相关联的User Guide .

    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 DataFrame将仅包含错误分类的记录 .

    希望这可以帮助!

相关问题