我是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。有没有一种方法可以对数据进行分块,以及如何将其应用到当前结构中?预先感谢。
这是因为您正在使用数据中的所有唯一词来创建TfidfVectorizer
矩阵的形状为No. of documents * No. of unique words
,系统当前的内存可能不支持该大小,为避免出现内存错误,您可以使用max_features
]中提到的docs参数来限制矩阵大小。
通常使用5000
或10000
的大小,但是您可以尝试不同的值并查看适合您的值。