2016-11-14 4 views
3

私は、この形式のCSVファイルを持っている:私はMOVIEIDとしてuseridと列と行を持つ疎行列を構築したいscipyで格付けcsr_matrixを作成するには?

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

を。 カラム['user']にユーザID、カラム['movie']にムービーIDがあり、カラム['ratings']に次のような格付けを持つ「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']))) 

"TypeError例外:無効な形状を"

答えて

1
scipy.sparse.csr_matrix([column['rating'],column['user'],column['movie']]) 
01を助けてください

1xnの次元リストと2xn次元のリストからなるタプルがありましたが、これは動作しません。

P .:データを読むためには、Pandas :-)(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((列['評価']、列['user']、列['movie'])))この関数を使用する前に、列['rating']と列['movie']を配列に変換する必要がありました。 – Alice

関連する問題