[英]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.