2016-11-14 3 views
3

나는이 형식으로 CSV 파일이 있습니다scipy에서 등급 csr_matrix를 만드는 방법은 무엇입니까?

userId movieId rating timestamp 
1  31  2.5 1260759144 
2  10  4  835355493 
3  1197 5  1298932770 
4  10  4  949810645 

내가 movieID로 userId를 같은 행과 열이있는 희소 행렬을 구성합니다. 열 [ 'user']에 사용자 ID, 열 [ 'movie']에 영화 ID, 열 [ '등급']에 다음과 같은 등급이있는 "column"이라는 사전으로 모든 데이터를 저장했습니다.

f = open('ratings.csv','rb') 
reader = csv.reader(f) 
headers = ['user','movie','rating','timestamp'] 
column = {} 
for h in headers: 
    column[h] = [] 
for row in reader: 
    for h, v in zip(headers, row): 
     column[h].append(float(v)) 

으로 나는 희소 행렬 함수를 호출 할 때 : 나는 "형식 오류 : 유효하지 않은 모양"을 얻을

mat = scipy.sparse.csr_matrix((column['rating'],(column['user'],column['movie']))) 

답변

1
scipy.sparse.csr_matrix([column['rating'],column['user'],column['movie']]) 
01 도와주세요

1xn 차원 목록과 작동하지 않는 2xn 차원 목록으로 구성된 튜플이 있습니다.

추신 : 데이터를 읽으려면 팬더 :-) (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html)를 시도해야합니다. 최소 예제 :

import pandas as pd 

# Setup a dataframe from the CSV and make it sparse 
df = pd.read_csv('ratings.csv') 
df = df.to_sparse(fill_value=0) 
print(df.head()) 
+0

이렇게하면 행, 영화 및 [행, 열] 등급에 대한 스파 스 매트릭스를 만들지 않습니다? [행, 열]에서 사용자를 행, 영화, 열 및 등급으로 평가하는 스파 스 매트릭스를 어떻게 만들 수 있습니까? – shane

+0

원본 명령 "mat = scipy.sparse.csr_matrix ((column [ 'user'], column [ 'movie'])))은 해당 열 [ 'user'] 함수를 사용하기 전에 column [ 'rating'] 및 column [ 'movie']을 배열로 변환해야했습니다. – Alice