数据分析实战 45 讲
陈旸
清华大学计算机博士
123928 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 49 讲
第二模块:数据分析算法篇 (20讲)
第四模块:数据分析工作篇 (2讲)
数据分析实战 45 讲
15
15
1.0x
00:00/00:00
登录|注册

31丨关联规则挖掘(下):导演如何选择演员?

代码示例
数据集准备
代码示例
代码示例
数据采集流程
efficient-apriori
思考题
数据挖掘前的准备
工具包使用
支持度、置信度和提升度
理解频繁项集和关联规则
导演选择演员
超市购物例子
Python爬虫
工具包选择
使用方法
挑选演员决策
商品捆绑销售
总结
实战项目
数据集准备
Apriori算法
应用场景
原理
关联规则挖掘

该思维导图由 AI 生成,仅供参考

上次我给你讲了关联规则挖掘的原理。关联规则挖掘在生活中有很多使用场景,不仅是商品的捆绑销售,甚至在挑选演员决策上,你也能通过关联规则挖掘看出来某个导演选择演员的倾向。
今天我来带你用 Apriori 算法做一个项目实战。你需要掌握的是以下几点:
熟悉上节课讲到的几个重要概念:支持度、置信度和提升度;
熟悉与掌握 Apriori 工具包的使用;
在实际问题中,灵活运用。包括数据集的准备等。

如何使用 Apriori 工具包

Apriori 虽然是十大算法之一,不过在 sklearn 工具包中并没有它,也没有 FP-Growth 算法。这里教你个方法,来选择 Python 中可以使用的工具包,你可以通过https://pypi.org/ 搜索工具包。
这个网站提供的工具包都是 Python 语言的,你能找到 8 个 Python 语言的 Apriori 工具包,具体选择哪个呢?建议你使用第二个工具包,即 efficient-apriori。后面我会讲到为什么推荐这个工具包。
首先你需要通过 pip install efficient-apriori 安装这个工具包。
然后看下如何使用它,核心的代码就是这一行:
itemsets, rules = apriori(data, min_support, min_confidence)
其中 data 是我们要提供的数据集,它是一个 list 数组类型。min_support 参数为最小支持度,在 efficient-apriori 工具包中用 0 到 1 的数值代表百分比,比如 0.5 代表最小支持度为 50%。min_confidence 是最小置信度,数值也代表百分比,比如 1 代表 100%。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

这篇文章介绍了关联规则挖掘在实际应用中的技术特点,并详细讲解了如何使用Apriori算法进行项目实战。文章首先介绍了Apriori算法的使用方法,并推荐了efficient-apriori工具包,并给出了具体的代码示例。接着,文章讲解了如何通过Python爬虫从豆瓣电影网站采集导演选择演员的数据集,并给出了完整的抓取代码。通过这些内容,读者可以快速了解关联规则挖掘的原理和实际应用,以及如何使用Python工具包和爬虫技术进行数据采集和分析。在实际运用中,读者还需要灵活处理数据挖掘前的准备过程,也就是获取某个导演的电影数据集。最后,文章提出了两道思考题,鼓励读者在评论区分享答案,并邀请读者将文章分享给朋友或同事。整体而言,本文内容丰富,技术性强,适合对关联规则挖掘感兴趣的读者阅读学习。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《数据分析实战 45 讲》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(31)

  • 最新
  • 精选
  • mickey
    最小支持度为0.1: { 1: {('倪大红',): 2, ('刘德华',): 2, ('姜文',): 2, ('巩俐',): 5, ('李雪健',): 2, ('章子怡',): 3, ('葛优',): 2, ('郭涛',): 2, ('陈道明',): 2}, 2: {('倪大红', '巩俐'): 2, ('巩俐', '郭涛'): 2}} [{倪大红} -> {巩俐}, {郭涛} -> {巩俐}] 最小支持度为0.05: 太多了。。。。 结论:不管男一号选谁,女一号必须是巩俐。

    作者回复: 哈哈

    2019-03-05
    2
    13
  • third
    个人的直觉感觉,这个应该跟数据集的大小和特点有关。

    编辑回复: 对 和数据集特点有关系,不过数据集大的情况下,不好观察特征。我们可以通过设置最小值支持度和最小置信度来观察关联规则的结果。 一般来说最小支持度常见的取值有0.5,0.1, 0.05。最小置信度常见的取值有1.0, 0.9, 0.8。可以通过尝试一些取值,然后观察关联结果的方式来调整最小值尺度和最小置信度的取值。

    2019-02-22
    11
  • 选的张艺谋爬取数据,开始的时候设置min_support = 0.5 没有分析出项集,还以为是数据有错,结果发现是支持度设的太高来,没有达到条件的。好尴尬~ #第二步:用Apriori算法进行关联分析 #数据加载 director = '张艺谋' #写CSV文件 path = '/Users/apple/Desktop/GitHubProject/Read mark/数据分析/geekTime/data/' file_name = path + director +'.csv' print(file_name) lists = csv.reader(open(file_name, 'r', encoding='utf-8-sig')) data =[] for names in lists: name_new = [] for name in names: name_new.append(name.strip()) if len(name_new[1:]) >0: data.append(name_new[1:]) print('data--',data) #挖掘频繁项集合关联规则 items,rules = apriori(data,min_support=0.05,min_confidence=1) print(items) print(rules) 输出结果: {1: {('倪大红',): 3, ('傅彪',): 2, ('刘佩琦',): 2, ('刘德华',): 2, ('姜文',): 2, ('孙红雷',): 3, ('巩俐',): 9, ('李保田',): 3, ('李曼',): 2, ('李雪健',): 5, ('杨凤良',): 2, ('牛犇',): 2, ('章子怡',): 3, ('葛优',): 3, ('赵本山',): 2, ('郭涛',): 2, ('闫妮',): 2, ('陈道明',): 2}, 2: {('倪大红', '巩俐'): 2, ('傅彪', '李雪健'): 2, ('刘佩琦', '巩俐'): 2, ('孙红雷', '赵本山'): 2, ('巩俐', '李保田'): 2, ('巩俐', '杨凤良'): 2, ('巩俐', '葛优'): 2, ('巩俐', '郭涛'): 2, ('李保田', '李雪健'): 2}} [{傅彪} -> {李雪健}, {刘佩琦} -> {巩俐}, {赵本山} -> {孙红雷}, {杨凤良} -> {巩俐}, {郭涛} -> {巩俐}]

    作者回复: Good Job 滢

    2019-04-20
    2
    7
  • 一 青(๑• . •๑)ゝ
    老师,FP-growth 在python有集成吗,,想用fp-growth试试

    作者回复: 有一个工具包 import fptools as fp 你可以试试

    2019-10-25
    5
  • Geeky_Ben
    请问一下各位大神,为什么我这个代码只把每一页的第一个电影的资料下载下来。我反复核对了很多次,跟导师的一样... 苦恼~~@@ from efficient_apriori import apriori from lxml import etree import time from selenium import webdriver from webdriver_manager.chrome import ChromeDriverManager import csv driver = webdriver.Chrome(ChromeDriverManager().install()) director = u'宁浩' file_name = './' + director + '.csv' base_url = 'https://movie.douban.com/subject_search?search_text='+director+'&cat=1002&start=' out = open(file_name,'w',newline = '',encoding='utf-8-sig') csv_write = csv.writer(out,dialect='excel') flags = [] def download(request_url): driver.get(request_url) time.sleep(1) html = driver.find_element_by_xpath("//*").get_attribute("outerHTML") html = etree.HTML(html) movie_lists = html.xpath("/html/body/div[@id='wrapper']/div[@id='root']/div[1]//div[@class='item-root']/div[@class='detail']/div[@class='title']/a[@class='title-text']") name_lists = html.xpath("/html/body/div[@id='wrapper']/div[@id='root']/div[1]//div[@class='item-root']/div[@class='detail']/div[@class='meta abstract_2']") num = len(movie_lists) if num > 15: movie_lists = movie_lists[1:] name_lists = name_lists[1:] for (movie,name_list) in zip(movie_lists,name_lists): if name_list.text is None: continue print(name_list.text) names = name_list.text.split('/') if names[0].strip() == director and movie.text not in flags: names[0] = movie.text flags.append(movie.text) csv_write.writerow(names) print('OK') print(num) if num >= 14: return True else: return False start = 0 while start <10000: request_url = base_url + str(start) flag = download(request_url) if flag: start = start + 15 else: break out.close() print('Finished')

    作者回复: if num >= 14: return True else: return False 这部分代码需要在for循环外面。当for循环中有return时,一旦return运行,则for循环会被终止。

    2020-07-03
    2
  • JustDoDT
    Python3.6 遇到如下错误及解决方案: 运行时报错: ModuleNotFoundError: No module named 'dataclasses' 是因为efficient_apriori 依赖 dataclasses 安装 dataclasses 即可 pip install dataclasses

    作者回复: 感谢JustDoIt同学的分享,相似报错的同学可以看看

    2020-04-08
    2
  • 普罗米修斯
    如果要使用FP-Growth这个算法,是直接使用FP-Growth这个包吗?

    作者回复: import fptools as fp 这个也可以

    2019-04-11
    2
  • 老师能推荐几本有关 概率论、统计学、运筹学的书嘛 ,感觉大学的课本比较枯燥

    作者回复: 看来你还是对统计学感兴趣,可以看下《统计数据会说谎》 这本不错,哈哈

    2019-03-11
    2
  • third
    感觉:1,张艺谋喜欢用那些组合的人 2.某些组合出现的匹配率 最小支持度为0.1,{1: {(' 巩俐 ',): 9, (' 李雪健 ',): 5}} 最小支持度为0.05,{1: {(' 葛优 ',): 3, (' 巩俐 ',): 9, (' 姜文 ',): 2, (' 郭涛 ',): 2, (' 李雪健 ',): 5, (' 陈维亚 ',): 2, (' 张继钢 ',): 2, (' 刘德华 ',): 2, (' 倪大红 ',): 3, (' 傅彪 ',): 2, (' 牛犇 ',): 2, (' 孙红雷 ',): 2, (' 闫妮 ',): 2, (' 陈道明 ',): 2, (' 赵本山 ',): 2, (' 杨凤良 ',): 2, (' 章子怡 ',): 3, (' 李保田 ',): 3, (' 刘佩琦 ',): 2}, 2: {(' 巩俐 ', ' 李保田 '): 2, (' 巩俐 ', ' 刘佩琦 '): 2, (' 葛优 ', ' 巩俐 '): 2, (' 李雪健 ', ' 傅彪 '): 2, (' 李雪健 ', ' 李保田 '): 2, (' 巩俐 ', ' 郭涛 '): 2, (' 陈维亚 ', ' 张继钢 '): 2, (' 巩俐 ', ' 杨凤良 '): 2, (' 巩俐 ', ' 倪大红 '): 2}} [{ 刘佩琦 } -> { 巩俐 }, { 傅彪 } -> { 李雪健 }, { 郭涛 } -> { 巩俐 }, { 张继钢 } -> { 陈维亚 }, { 陈维亚 } -> { 张继钢 }, { 杨凤良 } -> { 巩俐 }]

    作者回复: Good Job

    2019-02-22
    2
  • 听妈妈的话
    我觉得mtime网上的电影信息更加全面,就从上面爬取的信息 最小支持度为0.1: {1: {('倪大红',): 3, ('孙红雷',): 3, ('巩俐',): 9, ('李保田',): 4, ('李雪健',): 4, ('章子怡',): 3, ('葛优',): 3, ('赵本山',): 3}, 2: {('巩俐', '李保田'): 3}} [] 最小支持度为0.05: {1: {('丁嘉丽',): 2, ('倪大红',): 3, ('傅彪',): 2, ('刘佩琦',): 2, ('刘德华',): 2, ('姜文',): 2, ('孙红雷',): 3, ('巩俐',): 9, ('张艺谋',): 2, ('李保田',): 4, ('李雪健',): 4, ('牛犇',): 2, ('窦骁',): 2, ('章子怡',): 3, ('葛优',): 3, ('董立范',): 2, ('赵本山',): 3, ('郑恺',): 2, ('郭涛',): 2, ('闫妮',): 2, ('陈道明',): 2, ('齐达内·苏阿内',): 2}, 2: {('倪大红', '巩俐'): 2, ('傅彪', '李雪健'): 2, ('刘佩琦', '巩俐'): 2, ('孙红雷', '赵本山'): 2, ('巩俐', '李保田'): 3, ('巩俐', '葛优'): 2, ('巩俐', '郭涛'): 2, ('李保田', '李雪健'): 2, ('李雪健', '赵本山'): 2, ('牛犇', '董立范'): 2}} [{傅彪} -> {李雪健}, {刘佩琦} -> {巩俐}, {郭涛} -> {巩俐}, {董立范} -> {牛犇}, {牛犇} -> {董立范}]

    作者回复: Good Sharing

    2019-03-23
    1
收起评论
显示
设置
留言
31
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部