3

我的数据集包含 8 列,每列有 1482531 行我尝试通过
在 python 中使用 linear_kernel 进行余弦相似性来制作基于内容的 rcomondation 系统,但半小时后,由于数据集大,直到我出现错误记忆,并且如果这是他们解决此问题的解决方案

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)
4

1 回答 1

0

如果你的系统有足够的计算能力,你可以试试下面的方法。将数据分成块并将其写入 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
于 2019-03-19T21:23:31.523 回答