2017-09-22 12 views
0

誰かが私は、このエラーコードを抱えている理由を理解するために私を助けることができる:とValueError:n_componentsは< n_featuresでなければなりません。 > = 0scipyのダウンロードは木星

import pandas as pd 
from scipy.sparse import csr_matrix 
users = pd.read_table(open('ml-1m/users.dat', encoding = "ISO-8859-1"), sep=':', header=None, names=['user_id', 'gender', 'age', 'occupation', 'zip']) 
ratings = pd.read_table(open('ml-1m/ratings.dat', encoding = "ISO-8859-1"), sep=':', header=None, names=['user_id', 'movie_id', 'rating', 'timestamp']) 
movies = pd.read_table(open('ml-1m/movies.dat', encoding = "ISO-8859-1"), sep=':', header=None, names=['movie_id', 'title', 'genres']) 
MovieLens = pd.merge(pd.merge(ratings, users), movies) 

ratings_mtx_df = MovieLens.pivot_table(values='rating', index='user_id', columns='title', fill_value=0) 
movie_index = ratings_mtx_df.columns 

from sklearn.decomposition import TruncatedSVD 
recom = TruncatedSVD(n_components=10, random_state=101) 
R = recom.fit_transform(ratings_mtx_df.values.T) 

ValueError        Traceback (most recent call last) 
<ipython-input-8-0bd6c9bda95a> in <module>() 
     1 from sklearn.decomposition import TruncatedSVD 
     2 recom = TruncatedSVD(n_components=10, random_state=101) 
----> 3 R = recom.fit_transform(ratings_mtx_df.values.T) 

C:\Users\renau\Anaconda3\lib\site-packages\sklearn\decomposition\truncated_svd.py in fit_transform(self, X, y) 
    168    if k >= n_features: 
    169     raise ValueError("n_components must be < n_features;" 
--> 170         " got %d >= %d" % (k, n_features)) 
    171    U, Sigma, VT = randomized_svd(X, self.n_components, 
    172           n_iter=self.n_iter, 

ValueError: n_components must be < n_features; got 10 >= 0 
+0

問題は 'transform'コールへの入力の形状です。これは、データフレームから派生した配列です。形状/サイズを確認してください。なぜタイトルの 'csr'ですか?あなたは疎な行列を作成していません。 – hpaulj

+0

hpaulj、もう少し詳しく教えていただけますか?申し訳ありませんが、私はそれを得ることはありません...あなたが意味するこのパート:ユーザー= pd.read_table(オープン( 'ML-1メートル/ users.dat'、エンコーディング= "ISO-8859-1")、9月には、=」に焦点を当て –

+0

'ratings_mtx_df.values' – hpaulj

答えて

0

10を得たあなたは10次元にデータを分割しようとしているが、TruncatedSVDのドキュメントごとに、あなたのratings_mtx_dfデータ内の特徴(列)の数がより大きいことが必要です抽出するディメンション/コンポーネントの数。 n_components=3(データに少なくとも3つの機能が含まれていることが前提)を試してみてください。

また、あなたが.T引数で、横にあなたの入力データを投入している:なぜfit_transformメソッドのISNを説明するかもしれない観測値(行)のための機能(列)を切り替えるになることがあり

R = recom.fit_transform(ratings_mtx_df.values.T) 

働いていない。

+0

私はPythonで初心者と理解してくださいませんが...私はいくつかの練習で病気の図にそれを推測しています。..月に病気ポスト!あなたの助けをありがとう –

関連する問題