基于Apriori算法的电影推荐(3)
时间:2023-06-15 21:19 来源:毕业论文 作者:毕业论文 点击:次
2。2 Apriori算法流程 Apriori算法是亲和性分析的一部分,专门用于查找数据集中的频繁项集。基本流程是从前一步找到的频繁项集中找到新的备选集合,接着检测备选集合的频繁程度是否够高,然后算法像下面这样进行迭代[1]。 (1) 把各项目放到只包含自己的项集中,生成最初的频繁项集,使用达到最小支持度的项目。 (2) 查找现有频繁项集的超集,发现新的频繁项集,并用其生成新的备选项集。 (3) 测试新生成的备选项集的频繁程度,如果不够频繁,则舍弃。如果没有新的频繁项集,就跳到最后一步。 (4) 存储新发现的频繁项集,跳到步骤(2)。 (5) 返回发现的所有频繁项集。论文网 整个过程表示如下: 3实例计算 3。1获取数据集 首先我们需要获取数据集。数据集下载地址为http://grouplens。org/datasets/movielens/[2]。这些数据集美国明尼苏达大学的Grouplens研究团队公开了一系列用于测试推荐算法的数据集。其中,就包括10万、100万和1000万条电影评分数据。本次将使用包含100万条数据的MovieLens数据集,下载数据集后解压到我的Data文件夹,启动IPython Notebook笔记本,输入以下代码: import os //使用pandas加载数据 import pandas as pd //数据集读取方法 data_folder = os。path。join(os。path。expanduser("~"), "Data","ml-100k") ratings_filename = os。path。join(data_folder, "u。data") 确保ratings_filename指向解压后得到的文件夹中的u。data文件。 3。2用pandas 加载数据文献综述 MovieLens数据集非常规整,但是有几点跟pandas。read_csv方法的默认设置有出入,所以要调整参数设置。第一个问题是数据集每行的几个数据之间用制表符而不是逗号分隔。其次,没有表头,这表示数据集的第一行就是数据部分,我们需要手动为各列添加名称。加载数据集时,把分隔符设置为制表符,告诉pandas不要把第一行作为表头(header=None),设置好各列的名称[1]。代码如下: all_ratings = pd。read_csv(ratings_filename, delimiter="\t", header=None, names = ["UserID", "MovieID", "Rating", "Datetime"]) 然后我们可以用下面的代码解析时间戳数据,转化一下时间格式。 all_ratings["Datetime"] = pd。to_datetime(all_ratings['Datetime'],unit='s') (责任编辑:qin) |