当一个网站或系统用户量大之后,都会有猜你喜欢货自动推,那么它如何为您推荐的呢?好了,阅读这篇文章后,您将能够知道专有技术。更好的是,您将能够自己构建推荐系统。
作为网络创建者,每个python开发人员都必须了解一些 事情,例如pandas和numpy库。本文中使用的初学者程序甚至无法与行业标准相提并论。因此,它仅用作系统介绍。我们假设读者具有Python的先前经验。
一、什么是推荐系统?
推荐系统是一种基本计算,旨在通过检测数据集中的相关性为客户提供最相关的信息。该算法评估元素,并向用户显示接近其偏好的高度项目。
淘宝和京东是此类推荐系统的最佳示例。每当您在淘宝上选择商品时,它就会自动开始向您显示您可能想要的其他商品。京东及其为您推荐电影的选项也是如此。
有三种构建推荐系统的方法:
1、基于人气的推荐人系统
2、基于内容的推荐人系统
3、基于相似度的推荐人系统
二、代码编写
在此基本推荐器系统中,我们使用的是movielens。这是一个基于相似度的推荐系统。如果愿意,可以使用PyCharm或Skit-Learn,了解 为什么pycharm对每个python程序员都变得重要。因此,进入第一步,导入numPy和pandas是我们的首要任务。
import pandas as pd import numpy as np import warnings warnings.filterwarnings('ignore')随后,我们在数据集中使用pandas read_csv()实用程序。数据集与选项卡分开,因此 sep 参数在 t中传递 。然后,我们转到名称参数。
df = pd.read_csv('u.data', sep='\t', names=['user_id','item_id','rating','titmestamp'])让我们搜索数据头以查看我们所关注的数据。
df.head()如果我们能看到电影的标题而不是仅仅处理ID,那将很容易。加载电影标题并合并数据集;
movie_titles = pd.read_csv('Movie_Titles') movie_titles.head()由于item_id的列都是相同的,因此可以将这些数据集合并到此部分中。
df = pd.merge(df, movie_titles, on='item_id') df.head()让我们看一下每一列的表示形式:
我们可以使用description或info命令获得对数据集的简短描述。
df.describe()我们可以说平均分数是3.52,最高分数是5。
ratings = pd.DataFrame(df.groupby('title')['rating'].mean()) ratings.head()
ratings['number_of_ratings'] = df.groupby('title')['rating'].count() ratings.head()
import matplotlib.pyplot as plt %matplotlib inline ratings['rating'].hist(bins=50)
ratings['number_of_ratings'].hist(bins=60)从上面的直方图可以明显看出,几部电影的收视率非常低。收视率最高的电影是最著名的电影。
import seaborn as sns sns.jointplot(x='rating', y='number_of_ratings', data=ratings)
movie_matrix = df.pivot_table(index='user_id', columns='title', values='rating') movie_matrix.head()
ratings.sort_values('number_of_ratings', ascending=False).head(10)
AFO_user_rating = movie_matrix['Air Force One (1997)'] contact_user_rating = movie_matrix['Contact (1997)'] AFO_user_rating.head() contact_user_rating.head()
similar_to_air_force_one=movie_matrix.corrwith(AFO_user_rating)
similar_to_air_force_one.head()
similar_to_contact = movie_matrix.corrwith(contact_user_rating)
similar_to_contact.head()
corr_contact = pd.DataFrame(similar_to_contact, columns=['Correlation']) corr_contact.dropna(inplace=True) corr_contact.head() corr_AFO = pd.DataFrame(similar_to_air_force_one, columns=['correlation']) corr_AFO.dropna(inplace=True) corr_AFO.head()
corr_AFO = corr_AFO.join(ratings['number_of_ratings']) corr_contact = corr_contact.join(ratings['number_of_ratings']) corr_AFO .head() corr_contact.head()
corr_AFO[corr_AFO['number_of_ratings']>100].sort_values(by='correlation', ascending=False).head(10)
三、结论
当然,这是构建推荐程序的一种非常简单的方法,而且还远远没有达到行业标准。但是,您仍然可以自行找到类似的真实电影推荐。多么酷啊!
可以将其用作基础学习教程,并且现在可以 使用python构建简单的神经网络 。如果您发现难以使用Python,则可以随时学习 Java编程。
网友评论0