将 tf-idf 值添加为矩阵中的列
Posted
技术标签:
【中文标题】将 tf-idf 值添加为矩阵中的列【英文标题】:Add tf-idf values as columns in a matrix 【发布时间】:2018-12-01 18:23:16 【问题描述】:from sklearn.feature_extraction.text import TfidfVectorizer
item = list(df['item1']) + list(df['item2'])
tfidf = TfidfVectorizer()
tfidf_sp = tfidf.fit_transform(item)
for i in len(list(df['item1'])):
new_list =[]
new_list.append(tfidf.idf_)
df['updated_item'] = list(new_list)
我试图将 tfidf 分数添加为特征。方法对吗?
item1 的形状为 (400k),与 item2 的形状相同。 tfidf_sp 的形状为 (800k, 100k)。
【问题讨论】:
你不应该使用tfidf_sp
作为你的特征吗?另外,您是否已经完成了训练测试拆分?
如果我对 item1 使用 new_list.append(tfidf_sp[0:400k]) 并且对 item2 使用相同。我的内核一直在死机。
为什么不直接df['updated_item'] = tfidf.fit_transform(item)
?
for i in tqdm(list(df['item1'])): new_list =[] new_list.append(tfidf.idf_) df['updated_item'] = list(new_list) 我想同时查看进度并逐个更新
你能告诉我我犯了什么错误吗?
【参考方案1】:
import pandas as pd
pd.DataFrame(tfidf_sp, columns = tfidf.get_feature_names())
这将为您提供一个矩阵,其中列作为 tfidf 词汇表,每一行包含与每个项目对应的 tfidf 值。
希望这会有所帮助。
编辑:
尝试将得到的term-document矩阵转化为数组,如下:
tfidf_sp = tfidf.fit_transform(item).toarray()
这将解决 Pandas 错误。
【讨论】:
这给出了一个错误 pandas DataFrame Constructor not proper called以上是关于将 tf-idf 值添加为矩阵中的列的主要内容,如果未能解决你的问题,请参考以下文章