У меня есть CSV-файл, содержащий оценки пользователей для 56 124 элементов (столбцов) для примерно 3000 пользователей (строк).Рейтинг - это целое число меньше 128. У меня есть эта функция:
def sparse_to_npz(file, npz):
print("Reading " + file + " ...")
data_items = pd.read_csv(file)
# Create a new dataframe without the user ids.
data_items = data_items.drop('u', 1)
# As a first step we normalize the user vectors to unit vectors.
# magnitude = sqrt(x2 + y2 + z2 + ...)
magnitude = np.sqrt(np.square(data_items).sum(axis=1))
# unitvector = (x / magnitude, y / magnitude, z / magnitude, ...)
data_items = data_items.divide(magnitude, axis='index')
del magnitude
print("Saving to " + npz)
data_sparse = sparse.csr_matrix(data_items)
del data_items
sparse.save_npz(npz, data_sparse)
#np.save("columns", data_items.columns.values)
, которой передаются два файла: входной CSV-файл (разреженный, каждый пользователь со всеми оценками элементов) и должен выводить файл npz для сохранения.объем памяти.После того, как файл прочитан с использованием панд и сохранен в data_items
, нам нужно вычислить величину и поделить на нее data_items
, а затем сохранить файл npz.Проблема в том, что я получаю ошибку на этапе вычисления mag.используя np.sqrt(np.square(...
на машине с 12 ГБ памяти.Как я могу заставить это работать?