如何从加载的Multinomial NB模型中获取训练数据的TF-IDF稀疏矩阵?
获取训练数据经TfidfTransformer处理后的稀疏矩阵
要从加载后的Pipeline模型clf中得到训练数据Train_X_NB经过TfidfTransformer处理后的稀疏矩阵,有两种直接可行的方法:
方法一:利用Pipeline切片调用transform
Pipeline支持按步骤切片,取到TfidfTransformer在内的所有预处理步骤(排除最后一个分类器步骤),直接对原始训练数据执行转换:
# 需确保能获取原始训练数据Train_X_NB tfidf_matrix = clf[:-1].transform(Train_X_NB)
这里clf[:-1]代表提取Pipeline中除最后一个MultinomialNB分类器外的所有预处理流程,调用transform后就能输出经过CountVectorizer和TfidfTransformer处理后的稀疏矩阵。
方法二:逐个调用步骤的transform
通过named_steps属性可以直接访问Pipeline里的每个组件,依次执行转换操作:
# 先通过CountVectorizer转换原始训练数据 count_matrix = clf.named_steps['vect'].transform(Train_X_NB) # 再用TfidfTransformer处理得到目标稀疏矩阵 tfidf_matrix = clf.named_steps['tfidf'].transform(count_matrix)
注意:两种方法都需要你能获取到原始训练数据Train_X_NB,因为Pipeline仅保存各步骤的模型参数,不会存储训练数据的转换结果。
内容的提问来源于stack exchange,提问作者Sija
相关产品推荐
相关产品推荐

