Как исправить ошибку MemoryError в Python - PullRequest
0 голосов
/ 29 сентября 2019

Я пытаюсь построить ограниченную машину Больцмана (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

...