Jupyter Notebook 中大矩阵 (47605 x 73875) 上的余弦相似度内存错误

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

我正在 Jupyter Notebook 中使用 python 开发推荐系统,需要使用

sklearn.metrics.pairwise.cosine_similarity
计算大型计数矩阵的余弦相似度。但是,由于矩阵大小,我遇到了内存错误。

矩阵形状:(47605, 73875) 错误:无法为 25.7 GiB 分配 形状为 (46628, 73881) 且数据类型为 int64 的数组系统规格:8GB 内存、512 SSD

我正在寻找有关替代方法的建议,以有效计算我的设置中如此大的矩阵的余弦相似度。理想情况下,解决方案可以处理计算而不会遇到内存错误。

有人遇到过类似的问题或有什么建议吗?

python jupyter-notebook recommendation-engine cosine-similarity
1个回答
0
投票

我不确定您尝试过什么,但我可以提供一些我几年前使用过的代码。我用它来比较节目的描述以找到相似的节目。

这部分我清理了文本并使用了自定义函数

filter_words
filter_words
所做的只是去掉停用词之类的东西。

cleaned_description_list = []
for des in anime_description:
    cleaned_description_list.append(filter_words(des))


#vectorize and tokenize
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(cleaned_description_list)

然后在我获取用户短语并运行余弦相似度之后。

#Get filtered user description
user_description = filter_words(user_description)

#This vectorizes the users entry
Y = vectorizer.transform([user_description])

#Get similarity
similarities = [cosine_similarity(Y[0],X[i])[0][0] for i in range(len(cleaned_description_list))]
thresh = max(similarities) * 0.25

如果有可能的话,尝试将数据分成几块。

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