数据分析实战45讲
陈旸
清华大学计算机博士
立即订阅
17157 人已学习
课程目录
已完结 48 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 你为什么需要数据分析能力?
免费
第一模块:数据分析基础篇 (16讲)
01丨数据分析全景图及修炼指南
02丨学习数据挖掘的最佳路径是什么?
03丨Python基础语法:开始你的Python之旅
04丨Python科学计算:用NumPy快速处理数据
05丨Python科学计算:Pandas
06 | 学数据分析要掌握哪些基本概念?
07 | 用户画像:标签化就是数据的抽象能力
08 | 数据采集:如何自动化采集数据?
09丨数据采集:如何用八爪鱼采集微博上的“D&G”评论
10丨Python爬虫:如何自动化下载王祖贤海报?
11 | 数据科学家80%时间都花费在了这些清洗任务上?
免费
12 | 数据集成:这些大号一共20亿粉丝?
13 | 数据变换:考试成绩要求正态分布合理么?
14丨数据可视化:掌握数据领域的万金油技能
15丨一次学会Python数据可视化的10种技能
16丨数据分析基础篇答疑
第二模块:数据分析算法篇 (20讲)
17 丨决策树(上):要不要去打篮球?决策树来告诉你
18丨决策树(中):CART,一棵是回归树,另一棵是分类树
19丨决策树(下):泰坦尼克乘客生存预测
20丨朴素贝叶斯分类(上):如何让机器判断男女?
21丨朴素贝叶斯分类(下):如何对文档进行分类?
22丨SVM(上):如何用一根棍子将蓝红两色球分开?
23丨SVM(下):如何进行乳腺癌检测?
24丨KNN(上):如何根据打斗和接吻次数来划分电影类型?
25丨KNN(下):如何对手写数字进行识别?
26丨K-Means(上):如何给20支亚洲球队做聚类?
27丨K-Means(下):如何使用K-Means对图像进行分割?
28丨EM聚类(上):如何将一份菜等分给两个人?
29丨EM聚类(下):用EM算法对王者荣耀英雄进行划分
30丨关联规则挖掘(上):如何用Apriori发现用户购物规则?
31丨关联规则挖掘(下):导演如何选择演员?
32丨PageRank(上):搞懂Google的PageRank算法
33丨PageRank(下):分析希拉里邮件中的人物关系
34丨AdaBoost(上):如何使用AdaBoost提升分类器性能?
35丨AdaBoost(下):如何使用AdaBoost对房价进行预测?
36丨数据分析算法篇答疑
第三模块:数据分析实战篇 (7讲)
37丨数据采集实战:如何自动化运营微博?
38丨数据可视化实战:如何给毛不易的歌曲做词云展示?
39丨数据挖掘实战(1):信用卡违约率分析
40丨数据挖掘实战(2):信用卡诈骗分析
41丨数据挖掘实战(3):如何对比特币走势进行预测?
42丨当我们谈深度学习的时候,我们都在谈什么?
43丨深度学习(下):如何用Keras搭建深度学习网络做手写数字识别?
第四模块:数据分析工作篇 (2讲)
44丨如何培养你的数据分析思维?
45丨求职简历中没有相关项目经验,怎么办?
加餐 (1讲)
加餐丨在社交网络上刷粉刷量,技术上是如何实现的?
结束语 (1讲)
结束语丨当大家都在讲知识和工具的时候,我更希望你重视思维和实战
数据分析实战45讲
登录|注册

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

陈旸 2019-02-22
上次我给你讲了关联规则挖掘的原理。关联规则挖掘在生活中有很多使用场景,不仅是商品的捆绑销售,甚至在挑选演员决策上,你也能通过关联规则挖掘看出来某个导演选择演员的倾向。
今天我来带你用 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/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《数据分析实战45讲》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(20)

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

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

    2019-02-22
    5
  • mickey
    最小支持度为0.1:
    { 1: {('倪大红',): 2, ('刘德华',): 2, ('姜文',): 2, ('巩俐',): 5, ('李雪健',): 2, ('章子怡',): 3, ('葛优',): 2, ('郭涛',): 2, ('陈道明',): 2},
       2: {('倪大红', '巩俐'): 2, ('巩俐', '郭涛'): 2}}
    [{倪大红} -> {巩俐}, {郭涛} -> {巩俐}]

    最小支持度为0.05:
    太多了。。。。

    结论:不管男一号选谁,女一号必须是巩俐。
    2019-03-05
    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}}
    [{ 刘佩琦 } -> { 巩俐 }, { 傅彪 } -> { 李雪健 }, { 郭涛 } -> { 巩俐 }, { 张继钢 } -> { 陈维亚 }, { 陈维亚 } -> { 张继钢 }, { 杨凤良 } -> { 巩俐 }]
    2019-02-22
    2
  • 选的张艺谋爬取数据,开始的时候设置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}}
    [{傅彪} -> {李雪健}, {刘佩琦} -> {巩俐}, {赵本山} -> {孙红雷}, {杨凤良} -> {巩俐}, {郭涛} -> {巩俐}]
    2019-04-20
    1
  • 听妈妈的话
    我觉得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}}
    [{傅彪} -> {李雪健}, {刘佩琦} -> {巩俐}, {郭涛} -> {巩俐}, {董立范} -> {牛犇}, {牛犇} -> {董立范}]
    2019-03-23
    1
  • mickey
    安装工具包报错,请问怎样解决?
    E:\DevelopTool\Python\Python27\Scripts>pip install efficient-apriori
    DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won't be maintained after that date. A future versio
    ill drop support for Python 2.7.
    Collecting efficient-apriori
      Using cached https://files.pythonhosted.org/packages/d2/7b/71c12582b2e1b561e76cf52239bcece4ced6aac9c93974b7fdede5f407e7/efficient_apriori-0.4.5.tar.gz
        Complete output from command python setup.py egg_info:
        Traceback (most recent call last):
          File "<string>", line 1, in <module>
          File "c:\users\wujian\appdata\local\temp\pip-install-p5k8a3\efficient-apriori\setup.py", line 15, in <module>
            from efficient_apriori import __version__
          File "c:\users\wujian\appdata\local\temp\pip-install-p5k8a3\efficient-apriori\efficient_apriori\__init__.py", line 9, in <module>
            from efficient_apriori.apriori import apriori
          File "c:\users\wujian\appdata\local\temp\pip-install-p5k8a3\efficient-apriori\efficient_apriori\apriori.py", line 12
            def apriori(transactions: typing.List[tuple], min_support: float=0.5,
                                    ^
        SyntaxError: invalid syntax

        ----------------------------------------
    Command "python setup.py egg_info" failed with error code 1 in c:\users\wujian\appdata\local\temp\pip-install-p5k8a3\efficient-apriori\
    2019-03-01
    1
  • JingZ
    # 关联规则挖掘
    出现错误 selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH. 参考https://blog.csdn.net/liaoningxinmin/article/details/82686185 按正常的套路Mac下载了Chromedriver,将解压好的文件放入/usr/local/bin目录中,由于mac的很多目录都是隐藏的,所以我们按快捷键command+shift+g就可以打开这个目录,接着将解压好的驱动放入此目录即可

    min_support=0.1
    频繁项集: {1: {('倪大红',): 3, ('孙红雷',): 3, ('巩俐',): 9, ('李保田',): 3, ('李雪健',): 4, ('章子怡',): 3, ('葛优',): 3}}
    关联规则: []

    min_support=0.05
    频繁项集: {1: {('倪大红',): 3, ('傅彪',): 2, ('刘佩琦',): 2, ('刘德华',): 2, ('姜文',): 2, ('孙红雷',): 3, ('巩俐',): 9, ('李保田',): 3, ('李雪健',): 4, ('杨凤良',): 2, ('牛犇',): 2, ('章子怡',): 3, ('葛优',): 3, ('赵本山',): 2, ('郭涛',): 2, ('闫妮',): 2, ('陈道明',): 2}, 2: {('倪大红', '巩俐'): 2, ('傅彪', '李雪健'): 2, ('刘佩琦', '巩俐'): 2, ('孙红雷', '赵本山'): 2, ('巩俐', '李保田'): 2, ('巩俐', '杨凤良'): 2, ('巩俐', '葛优'): 2, ('巩俐', '郭涛'): 2, ('李保田', '李雪健'): 2}}
    关联规则: [{傅彪} -> {李雪健}, {刘佩琦} -> {巩俐}, {赵本山} -> {孙红雷}, {杨凤良} -> {巩俐}, {郭涛} -> {巩俐}]
    2019-02-28
    1
  • 王彬成
    1)最小支持度设置为0.1
    {1: {('倪大红',): 3, ('孙红雷',): 3, ('巩俐',): 9, ('李保田',): 3, ('李雪健',): 4, ('章子怡',): 3, ('葛优',): 3}}
    []
    2)最小支持度设置为0.05
    {1: {('倪大红',): 3, ('傅彪',): 2, ('刘佩琦',): 2, ('刘德华',): 2, ('姜文',): 2, ('孙红雷',): 3, ('巩俐',): 9, ('李保田',): 3, ('李雪健',): 4, ('杨凤良',): 2, ('牛犇',): 2, ('章子怡',): 3, ('葛优',): 3, ('赵本山',): 2, ('郭涛',): 2, ('闫妮',): 2, ('陈道明',): 2}, 2: {('倪大红', '巩俐'): 2, ('傅彪', '李雪健'): 2, ('刘佩琦', '巩俐'): 2, ('孙红雷', '赵本山'): 2, ('巩俐', '李保田'): 2, ('巩俐', '杨凤良'): 2, ('巩俐', '葛优'): 2, ('巩俐', '郭涛'): 2, ('李保田', '李雪健'): 2}}
    [{傅彪} -> {李雪健}, {刘佩琦} -> {巩俐}, {赵本山} -> {孙红雷}, {杨凤良} -> {巩俐}, {郭涛} -> {巩俐}]
    2019-02-24
    1
  • third
    对于Xpath的query的删除,来找到需要查找的内容,表示艰难。

    自己总结的是,
    1.保留div[1]
    2.删除名字比较长的class
    3.保留//
    4.注意看右边的结果

    不知道该怎么删,有什么技巧吗?

    编辑回复: 我的技巧就是不断的尝试,另外XPath是有自己规则的,99%的情况下都是以//开头,因为想要匹配所有的元素,然后找一些关键的特征来进行匹配,比如class='item-root'的节点,或者id='root'都是很好的特征。通过观察id或class,可以自己编写XPath,这样写的XPath会更短。总之,都是要不断的尝试,才能找到自己想要找的内容。寻找XPath的过程就是一个找规律的过程。

    2019-02-22
    1
  • 白夜
    最小支持度可以设置的小,而如果最小支持度小,置信度就要设置的相对大一点,不然即使提升度高,也有可能是巧合。这个参数跟数据量以及项的数量有关。
    理解对吗?


    # -*- coding: utf-8 -*-
    from efficient_apriori import apriori
    import csv
    import pprint
    director = u'张艺谋'
    file_name = './'+director+'.csv'
    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())
         data.append(name_new[1:])
    # 挖掘频繁项集和关联规则
    itemsets, rules = apriori(data, min_support=0.05, min_confidence=0.5)
    #data 是我们要提供的数据集,它是一个 list 数组类型。min_support 参数为最小支持度,在 efficient-apriori 工具包中用 0 到 1 的数值代表百分比,比如 0.5 代表最小支持度为 50%。min_confidence 是最小置信度,数值也代表百分比,比如 1 代表 100%。
    pprint.pprint(itemsets)
    print(rules)

    编辑回复: 一般来说最小置信度都会大一些,比如1.0, 0.9或者0.8。最小支持度和数据集大小和特点有关,可以尝试一些数值来观察结果,比如0.1, 0.5

    2019-02-22
    1
  • 一 青(๑• . •๑)ゝ
    老师,FP-growth 在python有集成吗,,想用fp-growth试试

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

    2019-10-25
  • FeiFei Jin
    张艺谋的电影太发散,并不像宁浩,量少。并且也只集中在那么几个演员身上。

    作者回复: 对 不同导演的数据集差别很大

    2019-08-27
  • 周志翔
    为什么min_support只有设置成0.3才能得到老师的结果:
    {1: {('徐峥',): 5, ('黄渤',): 6}, 2: {('徐峥', '黄渤'): 5}}
    [{徐峥} -> {黄渤}]
    如果是0.5,只有{1: {('黄渤',): 6}}
    2019-07-16
  • 大次狼
    你好,想请问一个问题,用Efficient-Apriori 运行后的记过,除了支持度和执行度以外,他的返回结果还包括lift和conviction,其中lift指的是p(x,y)/(p(x) * p(y)),x和y同时发生的概率除以x发生的概率再除以y发生的概率,这个值lift的值代表的含义是什么?还有conviction值得是P(not Y) / P(not Y | X)代表的又是什么含义?谢谢
    2019-06-11
  • 普罗米修斯
    如果要使用FP-Growth这个算法,是直接使用FP-Growth这个包吗?
    2019-04-11
  • 滨滨
    支持度:购买ABC这一商品组合,在所有商品组合中的出现概率

    置信度:购买A商品的条件下,购买B商品的概率

    提升度:购买A商品又购买B商品的概率,与所有购买了B商品的概率之比。也就是购买A商品对购买B商品的可能性提升能力。

    提升度>1,说明相互促进
    等于1,没影响,
    <1,相互排斥
    2019-04-06
  • 陈奇
    看了几遍,终于算是看懂了
    2019-03-28
  • reverse
    极客时间数据分析实战45讲的详细笔记(包含markdown、图片、思维导图、代码) https://github.com/xiaomiwujiecao/DataAnalysisInAction
    2019-03-12
  • 老师能推荐几本有关 概率论、统计学、运筹学的书嘛 ,感觉大学的课本比较枯燥
    2019-03-11
  • mickey
    Efficient-Apriori
    An efficient pure Python implementation of the Apriori algorithm.Works with Python 3.6 and 3.7.

    efficient-apriori在2.7下不能用,只能用于3.6和3.7。老师应该告知一下环境有所变化。
    2019-03-02
收起评论
20
返回
顶部