Я пытаюсь построить ограниченную машину Больцмана (RBM), используя набор данных MovieLens 20M (https://grouplens.org/datasets/movielens/).
), когда я пытался создать обучающий набор, в котором строки - это идентификаторы пользователя, а столбцы - это фильм.идентификаторы (значения - рейтинги), я столкнулся с проблемой MemoryError, которая, по-видимому, говорит о том, что память исчерпана. Я пытался использовать генератор вместо использования списка напрямую, ошибка MemoryError все еще возникала.
Есть ли у нас в Python методы для решения проблемы нехватки памяти?
Я пытался использовать генератор, но проблема не решена.
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
dataset = pd.read_csv('ml-20m/ratings.csv', header=0)
dataset = np.array(dataset, dtype = 'int')
training_set, test_set = train_test_split(dataset, test_size=0.2)
number_of_users = int(max(dataset[:, 0]))
number_of_movies = int(max(dataset[:, 1]))
def convert_generator(data):
counter = 1
while counter <= number_of_users:
movies_rated_by_user = data[:, 1][data[:, 0] == counter]
ratings_made_by_user = data[:, 2][data[:, 0] == counter]
ratings_of_all_movies = np.zeros(number_of_movies)
ratings_of_all_movies[movies_rated_by_user - 1] = ratings_made_by_user
yield list(ratings_of_all_movies)
counter += 1
traing_set = list(convert_generator(training_set))
test_set = list(convert_generator(test_set))
Ожидаемый результат - список списков.. Сообщение об ошибке MemoryError