gpt4 book ai didi

python - 如何解决 c = cov(x, y, rowvar) RuntimeWarning : Degrees of freedom <= 0 for slice error in python 3. 8?

转载 作者:太空宇宙 更新时间:2023-11-03 21:12:36 25 4
gpt4 key购买 nike

我正在按照以下链接的教程在 python 中构建推荐系统。我使用 python 3.8 来构建它。

https://stackabuse.com/creating-a-simple-recommender-system-in-python-using-pandas/

import numpy as np
np.seterr(divide='ignore', invalid='ignore')
import pandas as pd
pd.set_option('display.max_rows', 500)
pd.set_option('display.max_columns', 500)
pd.set_option('display.width', 1000)

ratings_data = pd.read_csv("E:/Python/ml-latest-small//ratings.csv")
ratings_data.head()

movie_names = pd.read_csv("E:/Python/ml-latest-small//movies.csv")
movie_names.head()

movie_data = pd.merge(ratings_data, movie_names, on='movieId')
movie_data.head()


movie_data.groupby('title')['rating'].mean().head()

movie_data.groupby('title')['rating'].mean().sort_values(ascending=False).head()

movie_data.groupby('title')['rating'].count().sort_values(ascending=False).head()

ratings_mean_count = pd.DataFrame(movie_data.groupby('title')['rating'].mean())
ratings_mean_count['rating_counts'] = pd.DataFrame(movie_data.groupby('title')['rating'].count())
ratings_mean_count.head()

user_movie_rating = movie_data.pivot_table(index='userId', columns='title', values='rating')
user_movie_rating.head()

forrest_gump_ratings = user_movie_rating['Forrest Gump (1994)']
forrest_gump_ratings.head()

movies_like_forest_gump = user_movie_rating.corrwith(forrest_gump_ratings)

corr_forrest_gump = pd.DataFrame(movies_like_forest_gump, columns=['Correlation'])
corr_forrest_gump.dropna(inplace=True)
corr_forrest_gump.head()

由于这一行,我收到以下错误。

movies_like_forest_gump = user_movie_空间.corrwith(forrest_gump_空间)

enter image description here

有人可以帮我解决这个问题吗?

最佳答案

我认为问题是不可能计算《阿甘正传》和电影 X 之间的 Pearson 相关性(corrwith 的默认相关方法),除非至少有 2 个用户对《阿甘正传》和电影 X 都进行了评分阿甘正传和电影 X。您会收到警告,因为数据很可能不满足所有电影的条件。

实际上,您可以对评分矩阵进行一些过滤:

  • 删除尚未评价《阿甘正传》的用户。

    user_movie_rating = user_movie_rating[user_movie_rating.get('Forrest Gump (1994)').notnull()]
  • 删除评分不低于 2 的电影。此后,所有电影都会有至少 2 个来自也对《阿甘正传》进行过评分的用户的评分,因为在上一步之后,每个人都对《阿甘正传》进行了评分。

    user_movie_rating = user_movie_rating.dropna(axis='columns', thresh=2)

关于python - 如何解决 c = cov(x, y, rowvar) RuntimeWarning : Degrees of freedom <= 0 for slice error in python 3. 8?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54961616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com