推荐系统之电影推荐(1)

构建一个 基于项目相似度的推荐系统,使用到Movielens数据集,中的较小的数据集(MovieLens 100K Dataset),其中用到的是u.data文件。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')

其中涉及warning模块的使用

和exception异常要求用户立刻进行处理不同,warning通常用于提示用户一些错误或者过时的用法

如:scrapy源码中用到了继承了Warning类创建了一个提醒对象ScrapyDeprecationWarning,用于提醒过时的用户操作,在新版本可能会直接去除支持。

用户感知warnings

  • python参数控制warning输出

 python3 -W all example.py

 python3 -W error example.py

 python3 -W ignore example.py

  • python脚本控制

import warnings

warnings.simplefilter('ignore')

warnings.simplefilter('always')

warnings.simplefilter('error')

开发输出warnings

import warnings

warnings.warn('warning message', OwnDeprecationWarning)

查看数据

df=pd.read_csv('E:\\1_download\\ml-100k\\u.data', sep='\t', names=['user_id', 'item_id', 'rating', 'timestamp'])
print(df.head())
print(df.describe())
   user_id  item_id  rating  timestamp
0      196      242       3  881250949
1      186      302       3  891717742
2       22      377       1  878887116
3      244       51       2  880606923
4      166      346       1  886397596
            user_id        item_id         rating     timestamp
count  100000.00000  100000.000000  100000.000000  1.000000e+05
mean      462.48475     425.530130       3.529860  8.835289e+08
std       266.61442     330.798356       1.125674  5.343856e+06
min         1.00000       1.000000       1.000000  8.747247e+08
25%       254.00000     175.000000       3.000000  8.794487e+08
50%       447.00000     322.000000       4.000000  8.828269e+08
75%       682.00000     631.000000       4.000000  8.882600e+08
max       943.00000    1682.000000       5.000000  8.932866e+08

获取每一个电影(item_id)的平均分和评价的数目

ratings=pd.DataFrame(df.groupby('item_id')['rating'].mean())
ratings.rename(columns={'rating':'average_rating'},inplace=True)
ratings['number_of_ratings']=df.groupby('item_id')['rating'].count()
# print(ratings.columns.values.tolist())
print(ratings.head())
         average_rating  number_of_ratings
item_id                                   
1              3.878319                452
2              3.206107                131
3              3.033333                 90
4              3.550239                209
5              3.302326                 86

作图,使更清晰的表示数据分布

plt.hist(ratings['average_rating'],bins=50)
plt.show()
plt.hist(ratings['number_of_ratings'],bins=50)
#bins规定柱状图中柱的数量
plt.show()

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(python3)