我的数据集包含8列,每个列的1482531行我尝试通过
来制作基于内容的rcomondation系统使用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)
如果您的系统具有足够的计算能力,则可以尝试以下方法。将数据分为块,然后将其写入CSV文件(或DB(,然后将该文件使用该文件进行预测。如果您有100,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