使用scikit linear_kernel进行TF-IDF计算时结果太大

问题描述 投票:1回答:1

我是python的新手,目前正在尝试开发基于内容的推荐系统。我正在读取一个约有60,000行的csv文件,并使用TfidfVectorizer.fit_transform使其具有矩阵大小(63098,9081),然后应用linear_kernel使其崩溃,并返回错误RuntimeError:结果的nnz太大。

tf = TfidfVectorizer(analyzer='word', ngram_range=(1, 3), min_df=100, stop_words='english')
tfidf_matrix = tf.fit_transform(ds['description'])
result = linear_kernel(tfidf_matrix, tfidf_matrix)

日志显示假定的结果将为20gb。有没有一种方法可以对数据进行分块,以及如何将其应用到当前结构中?预先感谢。

python scikit-learn data-science tf-idf recommendation-engine
1个回答
0
投票

这是因为您正在使用数据中的所有唯一词来创建TfidfVectorizer矩阵的形状为No. of documents * No. of unique words,系统当前的内存可能不支持该大小,为避免出现内存错误,您可以使用max_features]中提到的docs参数来限制矩阵大小。

通常使用500010000的大小,但是您可以尝试不同的值并查看适合您的值。

© www.soinside.com 2019 - 2024. All rights reserved.