朱庇的西皮

2024-05-02 02:38:07 发布

您现在位置:Python中文网/ 问答频道 /正文

有人能帮我弄清楚为什么会有这样的错误代码:ValueError:n\u组件必须是<;n\u features;got 10>;=0

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

Tags: fromimportiddftablecomponentsuserspd
1条回答
网友
1楼 · 发布于 2024-05-02 02:38:07

您正试图将数据拆分为10个维度,但是根据TruncatedSVD的文档,您的ratings_mtx_df数据中的特性(列)数量需要大于要提取的维度/组件数量。试试n_components=3(假设您的数据中至少有3个特性),看看这是否更好。你知道吗

此外,您还将输入数据转向侧面,其中.T参数位于:

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

这可能导致为观察值(行)切换特性(列),这可能解释了fit_transform方法不起作用的原因。你知道吗

相关问题 更多 >