如何用scikit-learn的CountVectorizer从决策树索引识别特征词?
正确获取决策树特征索引对应词汇的方法
- 从训练完成的Pipeline中取出CountVectorizer实例:
假设你的Pipeline定义为pipeline = Pipeline([('vect', CountVectorizer()), ('tfidf', TfidfTransformer()), ('clf', DecisionTreeClassifier())]),执行以下代码获取对应组件:vect = pipeline.named_steps['vect'] - 构建索引到词汇的反向映射字典:
vect.vocabulary_的结构是{词汇: 索引},直接取keys无法对应索引位置,必须反转键值对:index_to_word = {idx: word for word, idx in vect.vocabulary_.items()} - 查询索引对应的词汇:
用决策树节点中的索引7,直接查反向字典即可得到目标词:print(index_to_word[7])
错误原因说明
vect.vocabulary_.keys()返回的词汇集合是无序的,遍历keys得到的元素顺序和索引没有对应关系,因此直接按位置取词会得到错误结果,必须通过反向映射才能准确关联索引与词汇。
内容的提问来源于stack exchange,提问作者code_to_joy
相关产品推荐
相关产品推荐

