【问题标题】:memory error in library linear_kernel to make cosine_similarities库 linear_kernel 中的内存错误导致 cosine_similarities
【发布时间】:2023-03-24 16:30:02
【问题描述】:

我的数据集包含 8 列,每列 1482531 行 我尝试通过
制作基于内容的推荐系统 在python中使用linear_kernel进行余弦相似度 但半小时后直到我错误记忆 这是因为数据集很大吗,如果这是他们解决这个问题的解决方案

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import linear_kernel
from sklearn.model_selection import train_test_split

dataset = pd.read_csv('C:/data2/train.tsv',sep='\t', low_memory=False)

tf = TfidfVectorizer(analyzer='word', ngram_range=(1, 3), min_df=0, stop_words='english')

dataset['item_description'] = dataset['item_description'].fillna('')

tfidf_matrix.shape
((1482535, 13831759))

cosine_similarities = linear_kernel(tfidf_matrix, tfidf_matrix)

【问题讨论】:

  • 你找到解决办法了吗?
  • 有什么解决办法吗?

标签: python-3.x python-2.7 content-based-retrieval


【解决方案1】:

如果你的系统有足够的计算能力,你可以试试下面的方法。将数据分成块并将其写入 csv 文件(或 db),然后使用该文件进行预测。如果您有 1,00,000 条记录(例如),这是一个小示例。

import csv
with open('cosine_data_test.csv','a') as f:
    writer = csv.writer(f)
    i=0
    while i!=tfidf_matrix.shape[0]:
        if i%100000!=0:
            #Iterating over 10,000 multiples(10 chunks)
            cosine_sim = linear_kernel(tfidf_matrix[i:i+1000], tfidf_matrix)
            print("{} completed".format(i+1000))
            writer.writerows(cosine_sim)
            i= i + 10000

【讨论】:

    猜你喜欢
    • 2020-02-01
    • 2017-03-14
    • 1970-01-01
    • 2015-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-05
    相关资源
    最近更新 更多