В моем коде я в настоящее время итерации и создании трех списков:Ошибки в построении разреженной матрицы Python scipy.sparse
данные, строки, столбец
построить разреженную матрицу (она представляет собой рейтинговую матрицу с пользователем u с рейтингом i с рейтингом от 1 до 5), я получил странные ошибки в оцененных рейтингах при проверке моей разреженной матрицы впоследствии: некоторые значения больше 5, что невозможно (я проверил файл и нет рейтинга больше чем 5, я также проверил значения в списке данных, и нет значения больше 5, поэтому ошибка, вероятно, возникает при построении матрицы с использованием sparse.coo_matrix(),
Смотрите мой код ниже:
from scipy import sparse
import numpy as np
row = []
column = []
data= []
with open(filename, 'r') as f:
for line in f:
if not line[0].isdigit():
continue
line = line.strip()
elem = line.split(',')
userid = int(elem[0].strip())
businessid = int(elem[1].strip())
rating = float(elem[2].strip())
row.append(userid)
column.append(businessid)
data.append(rating)
#data = np.array(data)
"""checking if any rating in the file is greater than 5,
and there is not"""
for rating in data:
if rating > 5:
print rating
total = sparse.coo_matrix((data, (row, column)),dtype=float).tocsr()
""" Here I'm checking to see if
there is any rating over than 5 in the sparse matrix
and there is!"""
row = total.nonzero()[0]
column = total.nonzero()[1]
for u in range(len(row)):
indr = row[u]
indc = column[u]
if total[indr, indc] > 5:
print '---'
print total[indr, indc]
print indr
print indc
А вот начало моего файла:
user,item,rating
480,0,5
16890,0,2
5768,0,4
319,1,1
4470,1,4
7555,1,5
8768,1,5
У вас есть представление о том, почему я получаю эту ошибку при построении матрицы?
Большое спасибо!
разреженных матриц были разработаны для задач линейной алгебры. Эта функция суммирования очень удобна при построении моделей конечных элементов. Матовая матрица MATLAB делает то же самое. – hpaulj