CountVectorizer对象无toarray属性 推文向量化转DataFrame报错如何解决?
CountVectorizer 无
toarray属性报错解决方案 错误根因
CountVectorizer类的实例本身不具备toarray方法,只有调用其fit_transform()/transform()方法后返回的词频稀疏矩阵,才支持调用toarray()转为密集矩阵,再进一步转为DataFrame。
错误写法示例
from sklearn.feature_extraction.text import CountVectorizer import pandas as pd # 示例推文列表 tweet_list = ["推文内容1", "测试推文内容2", "待向量化推文3"] # 错误操作:直接对CountVectorizer实例调用toarray vec = CountVectorizer() vec.fit(tweet_list) # 下方代码会触发 'CountVectorizer' object has no attribute 'toarray' 报错 array_data = vec.toarray() df = pd.DataFrame(array_data)
正确实现代码
from sklearn.feature_extraction.text import CountVectorizer import pandas as pd tweet_list = ["推文内容1", "测试推文内容2", "待向量化推文3"] vec = CountVectorizer() # 先调用fit_transform得到词频稀疏矩阵,再转密集矩阵 tf_sparse = vec.fit_transform(tweet_list) tf_dense = tf_sparse.toarray() # 转DataFrame时可传入词汇作为列名,提升可读性 tweet_df = pd.DataFrame(tf_dense, columns=vec.get_feature_names_out())
注意事项
- 若已完成模型拟合,仅需要转换新的推文数据,调用
vec.transform(new_tweet_list).toarray()即可 - 当词汇量较大时,
toarray()会占用大量内存,若后续使用的分类器支持稀疏矩阵输入(如sklearn内置的逻辑回归、支持向量机等),可直接传入fit_transform返回的稀疏矩阵,无需转换为密集矩阵
内容的提问来源于stack exchange,提问作者bo_
相关产品推荐
相关产品推荐

