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')