[英]I can't obtain the cosine similarity of my tf-idf matrix because Google Colaboratory gives me a memory RAM error
有人可以帮我吗? 几天来,我一直在尝试解决与 Google Colaboratory 工作区有关的问题、可用 RAM 中的错误以及通过余弦相似度和其他不同的 TF-IDF 矩阵的相似标点符号的演算指标。 我无法修复它,这对我来说真的很重要,因为它是我必须为我的 TFG 编写的一段代码,这是一个基于内容的推荐系统,它通过使用为您提供 10 部最相似的电影电影的描述(这就是为什么我必须使用 TD-IDF 矩阵,将 BBDD 中任何电影的文本或“文档”转换为我的机器学习算法可以理解的数字格式)。
首先,我加载了 .csv 文件,我们可以在其中找到包含所有电影描述的电影,这些电影包含在 pandas DataFrame 的“概述”列中(为简单起见,我让您使用代码):
import pandas as pd
metadata = pd.read_csv("movies_metadata.csv", low_memory = False)
metadata.loc[:, ["original_title","overview"]].head()
然后,我想在“概述”中获得该电影描述的 TF-IDF 矩阵。 为此,我实现了这段代码:
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import linear_kernel
tfidf = TfidfVectorizer(stop_words = "English")
metadata["overview"] = metadata["overview"].fillna("")
tfidf_matrix = tfidf.fit_transform(metadata["overview"])
tfidf_matrix.shape
如您所见,得到了矩阵(一个稀疏矩阵),而且是一个巨大的矩阵! 它的维度是 45466 行和 75827 列。 我认为我的问题的原因就是这个。
当我想计算电影之间的对余弦相似度标点符号时,我应该得到一个(45466,45466)矩阵; 但是,当我运行以下代码时,Google Colaboratory 给了我一个错误,上面写着“您的会话失败,因为您已经使用了所有可用的 RAM 内存”:
from sklearn.metrics.pairwise import linear_kernel
cosine_sim = linear_kernel(tfidf_matrix, tfidf_matrix)
我不知道如何解决它......但我知道的是,我真的需要获得电影之间的余弦相似度以供我学习。
在我一直用于学习此机器学习主题的数据营教程中, 在此处输入链接描述
你可以看到他们毫无问题地获得了 cosine_sim 矩阵......为什么对我来说不能一样?
我一直在尝试使用其他代码行,例如:
from sklearn.metrics.pairwise import pairwise_distances as pd
cosine_sim = pd(tfidf_matrix, tfidf_matrix, metric = "cosine")
甚至,我尝试使用在 Internet 上找到的代码来扩大 Google Colab 的 RAM:
a = []
while(1):
a.append('1')
但它并不正确。 我希望任何人都可以给我一个解决方案...
非常感谢您的关注,给您带来的不便深表歉意!
虽然为时已晚,但可能对其他人有所帮助,因为我昨天在这里着陆。
问题这是因为内存问题,它需要大约 15gb+ 内存,而系统中没有,为什么在
DataCamp
教程中一切顺利,他们可能使用云/他们已经升级了系统。 在正常系统中可能会出现此问题。
解决方案按照相同的教程减少数据的大小,只需添加此行以获得
Top N Rows
并进行实验。 此解决方案用于学习和理解概念。 否则,您必须升级系统或遵循任何其他技术。 在读取csv
后添加以下代码行
N = 300 #you can add any number of rows here that works with your system's memory.
metadata = metadata.head(N)
就这样。 您将不会再看到内存错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.