python - 如何解决 c = cov(x, y, rowvar) RuntimeWarning:python 3.8 中切片错误的自由度 <= 0?
问题描述
我正在按照教程从以下链接在 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_rating.corrwith(forrest_gump_ratings)
有人可以帮我解决这个问题吗?
解决方案
我认为问题是不可能计算corrwith
阿甘正传和电影 X 之间的 Pearson 相关性(默认相关方法),除非至少有 2 个用户同时评价了阿甘正传和电影 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)
推荐阅读
- android-studio - Android studio 点击按钮显示消息
- javascript - 处理下拉列表选项中可用的标签
- c# - 无法在具有正确文件名和扩展名的 devops rest api 中下载 attachemet
- c# - 如何仅更新 c#.net 数据库中同名的最高 id
- vue.js - 如何从 Azure AD 获取名字等信息并在 .net 核心中使用?
- javascript - 在 JS 中使用用户表单输入
- ckeditor4.x - 如何在ckeditor 4中设置默认值?
- android - 为什么 Integer.tostring 会抛出这个空指针异常?
- unity3d - Unity 3D - 烘焙光太暗
- vue.js - 如何在 Vue 组件(没有 Webpack)中使用非 Vue 自定义 Web 组件?