如何在scikit-learn中提取MultinomialNB Pipeline训练模型中的单词特征?

箱子
# Note: The runnable code example is at the end of this question ####
# Assume X_train contains cleaned sentence text as input data. Y_train are class labels. 
# parameters stores the parameter to be tried by GridSearchCV

text_clf_Pipline_MultinomialNB = Pipeline([('vect', CountVectorizer()),
                                           ('tfidf', TfidfTransformer()),
                                           ('clf', MultinomialNB()),                     
                                          ])
gs_clf = GridSearchCV(text_clf_Pipline_MultinomialNB, parameters, n_jobs=-1)   
gs_classifier = gs_clf.fit(X_train, y_train)

现在,我可以根据sklearn.naive_bayes.MultinomialNB文档从gs_classifier中获取feature_log_prob_ 这是一个例子。

我的问题是如何使单词对应每个对数概率?CountVectorizer()和TfidfTransformer()都进行了功能选择。GridSearchCV对象在哪里存储所选单词/ ngram特征?如何使他们回到概率?

我检查了gs_classifier的成员,但未找到所选功能。谢谢。

以下是一个可运行的示例:

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.grid_search import GridSearchCV
from sklearn.pipeline import Pipeline
from sklearn.naive_bayes import MultinomialNB
from inspect import getmembers

X_train = ['qwe rtyuiop', 'asd fghj kl', 'zx cv bnm', 'qw erty ui op', 'as df ghj kl', 'zxc vb nm', 'qwe rt yu iop', 'asdfg hj kl', 'zx cvb nm',
          'qwe rt yui op', 'asd fghj kl', 'zx cvb nm', 'qwer tyui op', 'asd fg hjk l', 'zx cv b nm', 'qw ert yu iop', 'as df gh jkl', 'zx cvb nm',
           'qwe rty uiop', 'asd fghj kl', 'zx cvbnm', 'qw erty ui op', 'as df ghj kl', 'zxc vb nm', 'qwe rtyu iop', 'as dfg hj kl', 'zx cvb nm',
          'qwe rt yui op', 'asd fg hj kl', 'zx cvb nm', 'qwer tyuiop', 'asd fghjk l', 'zx cv b nm', 'qw ert yu iop', 'as df gh jkl', 'zx cvb nm']    

y_train = ['1', '2', '3', '1', '1', '3', '1', '2', '3',
          '1', '2', '3', '1', '4', '1', '2', '2', '4', 
          '1', '2', '3', '1', '1', '3', '1', '2', '3',
          '1', '2', '3', '1', '4', '1', '2', '2', '4']    


parameters = {  
                'clf__alpha': (1e-1, 1e-2),
                 'vect__ngram_range': [(1,2),(1,3)],
                 'vect__max_df': (0.9, 0.98)
            }

text_clf_Pipline_MultinomialNB = Pipeline([('vect', CountVectorizer()),
                                           ('tfidf', TfidfTransformer()),
                                           ('clf', MultinomialNB()),                     
                                          ])
gs_clf = GridSearchCV(text_clf_Pipline_MultinomialNB, parameters, n_jobs=-1)   

gs_classifier = gs_clf.fit(X_train, y_train)

nbclf = getmembers(gs_classifier.best_estimator_)[2][1]['named_steps']['clf']
nbclf.feature_log_prob_ 

那么问题是:如何在训练模型中获得与对数概率相对应的单词特征列表?同样,例如,_log_prob_输出中的哪个概率对应于类别“ 1”的单词“ qwe”?


得到答案后进行编辑:Andreas的答案有效:

gs_classifier.best_estimator_.named_steps['vect'].get_feature_names() 

与此类似,还有一种更好的方法可以索引到GridSearchCV中以获得训练有素的分类器

nbclf = gs_classifier.best_estimator_.named_steps['clf']
安德烈亚斯·穆勒(Andreas Mueller)

为什么需要getmembers获取与相对应的特征名称feature_log_prob_

gs_classifier.best_estimator_.named_steps['vect'].get_feature_names()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Scikit-learn:如何从文本中提取特征?

来自分类Dev

如何使用预训练模型的第一层来提取Keras模型中的特征(功能性API)

来自分类Dev

Scikit Learn-使用CountVectorizer从字符串定界符中提取单词标记

来自分类Dev

如何在scikit-learn中预测时间序列?

来自分类Dev

如何在scikit-learn中理解DecisionTreeClassifier的输出?

来自分类Dev

如何在scikit-learn的DecisionTreeRegressor中获取节点的MSE?

来自分类Dev

如何在scikit Learn,Python中处理名义数据?

来自分类Dev

如何在深度学习模型中训练不同尺度的特征

来自分类Dev

如何使用scikit-learn训练XOR模型?

来自分类Dev

如何在疏忽中提取特定的单词

来自分类Dev

如何在scikit-learn的TransformedTargetRegressor管道中从训练有素的估计器访问属性?

来自分类Dev

如何在python中提取列表中的单词

来自分类Dev

如何在scikit-learn的`pipeline'中使用自定义功能选择功能

来自分类Dev

如何在Scikit python中提高逻辑回归的模型准确性?

来自分类Dev

如何在scikit-learn中对管道中的转换参数进行网格搜索

来自分类Dev

如何在scikit-learn中的LogisticRegressionCV中实现不同的计分功能?

来自分类Dev

如何在scikit-learn中根据自己的数据创建sklearn.datasets.base.Bunch对象?

来自分类Dev

如何在Scikit-Learn中绘制PR曲线超过10倍的交叉验证

来自分类Dev

如何在scikit-learn中缩放大规模数据?

来自分类Dev

您如何在Python的scikit-learn中访问树深度?

来自分类Dev

如何在scikit-learn中显示每次迭代的成本函数?

来自分类Dev

如何在Python scikit-learn中从随机森林中的每棵树输出回归预测?

来自分类Dev

如何在scikit-learn或Neuraxle中并行运行2条管道?

来自分类Dev

如何在scikit-learn中缩放大规模数据?

来自分类Dev

scikit-learn-如何在LinearSVC中强制选择至少一个标签

来自分类Dev

如何从单词中提取数字

来自分类Dev

如何在单独的文件中提取FactoryGirl特征

来自分类Dev

如何使用scikit-learn加载先前保存的模型并使用新的训练数据扩展模型

来自分类Dev

如何使用scikit-learn加载先前保存的模型并使用新的训练数据扩展模型

Related 相关文章

  1. 1

    Scikit-learn:如何从文本中提取特征?

  2. 2

    如何使用预训练模型的第一层来提取Keras模型中的特征(功能性API)

  3. 3

    Scikit Learn-使用CountVectorizer从字符串定界符中提取单词标记

  4. 4

    如何在scikit-learn中预测时间序列?

  5. 5

    如何在scikit-learn中理解DecisionTreeClassifier的输出?

  6. 6

    如何在scikit-learn的DecisionTreeRegressor中获取节点的MSE?

  7. 7

    如何在scikit Learn,Python中处理名义数据?

  8. 8

    如何在深度学习模型中训练不同尺度的特征

  9. 9

    如何使用scikit-learn训练XOR模型?

  10. 10

    如何在疏忽中提取特定的单词

  11. 11

    如何在scikit-learn的TransformedTargetRegressor管道中从训练有素的估计器访问属性?

  12. 12

    如何在python中提取列表中的单词

  13. 13

    如何在scikit-learn的`pipeline'中使用自定义功能选择功能

  14. 14

    如何在Scikit python中提高逻辑回归的模型准确性?

  15. 15

    如何在scikit-learn中对管道中的转换参数进行网格搜索

  16. 16

    如何在scikit-learn中的LogisticRegressionCV中实现不同的计分功能?

  17. 17

    如何在scikit-learn中根据自己的数据创建sklearn.datasets.base.Bunch对象?

  18. 18

    如何在Scikit-Learn中绘制PR曲线超过10倍的交叉验证

  19. 19

    如何在scikit-learn中缩放大规模数据?

  20. 20

    您如何在Python的scikit-learn中访问树深度?

  21. 21

    如何在scikit-learn中显示每次迭代的成本函数?

  22. 22

    如何在Python scikit-learn中从随机森林中的每棵树输出回归预测?

  23. 23

    如何在scikit-learn或Neuraxle中并行运行2条管道?

  24. 24

    如何在scikit-learn中缩放大规模数据?

  25. 25

    scikit-learn-如何在LinearSVC中强制选择至少一个标签

  26. 26

    如何从单词中提取数字

  27. 27

    如何在单独的文件中提取FactoryGirl特征

  28. 28

    如何使用scikit-learn加载先前保存的模型并使用新的训练数据扩展模型

  29. 29

    如何使用scikit-learn加载先前保存的模型并使用新的训练数据扩展模型

热门标签

归档