美文网首页
关联分析(一)

关联分析(一)

作者: 还闹不闹 | 来源:发表于2020-06-28 16:05 被阅读0次

    参考:利用mlxtend进行数据关联分析

    #!/usr/bin/python
    # coding=utf-8
    import numpy as np
    import pandas as pd
    import pandas as pd
    from mlxtend.preprocessing import TransactionEncoder
    from mlxtend.frequent_patterns import apriori
    from mlxtend.frequent_patterns import association_rules
    # 画图支持中文显示
    from pylab import *
    mpl.rcParams['font.sans-serif'] = ['SimHei']
    # 负号
    plt.rcParams['axes.unicode_minus'] = False
    
    # 显示所有列
    pd.set_option('display.max_columns', None)
    # 显示所有行
    pd.set_option('display.max_rows', None)
    # 设置value的显示长度为10000,默认为50
    pd.set_option('display.width',10000)
    pd.set_option('display.unicode.ambiguous_as_wide', True)
    pd.set_option('display.unicode.east_asian_width', True)
    #
    np.set_printoptions(linewidth=1000)
    
    #测试数据
    records = [['牛奶', '洋葱', '猪肉', '鸡蛋', '洋葱', '酸奶'],
               ['洋葱', '豆角', '酸奶', '鸡蛋', '苹果'],
               ['牛奶', '苹果', '豆角', '鸡蛋'],
               ['牛奶', '玉米', '胡萝卜', '豆角', '酸奶'],
               ['玉米', '洋葱', '豆角', '冰激凌', '鸡蛋']]
    Encoder = TransactionEncoder()
    encoded_data = Encoder.fit_transform(records)
    df = pd.DataFrame(encoded_data, columns=Encoder.columns_)
    print(df)
    
    # 频繁项集
    frequent_items = apriori(df, min_support=0.05, use_colnames=True, max_len=4).sort_values(by='support', ascending=False)
    # min_support:给定的最小支持度
    # use_colnames:默认False,则返回的物品组会用编号显示,为True的话直接显示物品名称。
    # max_len=None:最大物品组合数,默认是None,不做限制。
    print('frequent_itemsets 为频繁项集:(Support列为支持度,即 项集发生频率/总订单量)\n', frequent_items)
    
    # 关联规则
    rules = association_rules(frequent_items, metric='lift', min_threshold=0.8) # metric:默认是confidence
    print('rules为最终关联规则结果表:(antecedants前项集,consequents后项集,support支持度,confidence置信度,lift提升度。)\n', rules)
    
    print('-----------------------------------------------------------------------------------------------------------------------')
    
    # 结果检视
    # ass_rule = rules.sort_values(by='leverage', ascending=False, inplace=True)
    # print(ass_rule)
    
    # 选取(置信度confidence≥0.8)&(提升度lift≥2)的规则,按lift降序排序
    ass_rule = rules[ (rules['lift'] >= 2) & (rules['confidence'] >= 0.8) ].sort_values("lift",ascending = False)
    print(ass_rule)
    
    # 数据编码
    
       冰激凌   洋葱   牛奶   猪肉   玉米  胡萝卜   苹果   豆角   酸奶   鸡蛋
    0   False   True   True   True  False   False  False  False   True   True
    1   False   True  False  False  False   False   True   True   True   True
    2   False  False   True  False  False   False   True   True  False   True
    3   False  False   True  False   True    True  False   True   True  False
    4    True   True  False  False   True   False  False   True  False   True
    
    frequent_itemsets 为频繁项集:(Support列为支持度,即 项集发生频率/总订单量)
          support                    itemsets
    7        0.8                      (豆角)
    9        0.8                      (鸡蛋)
    1        0.6                      (洋葱)
    2        0.6                      (牛奶)
    40       0.6                (豆角, 鸡蛋)
    8        0.6                      (酸奶)
    20       0.6                (洋葱, 鸡蛋)
    31       0.4                (豆角, 玉米)
    39       0.4                (豆角, 酸奶)
    41       0.4                (酸奶, 鸡蛋)
    80       0.4          (豆角, 鸡蛋, 苹果)
    27       0.4                (鸡蛋, 牛奶)
    26       0.4                (酸奶, 牛奶)
    25       0.4                (豆角, 牛奶)
    19       0.4                (洋葱, 酸奶)
    38       0.4                (鸡蛋, 苹果)
    18       0.4                (洋葱, 豆角)
    36       0.4                (豆角, 苹果)
    60       0.4          (洋葱, 酸奶, 鸡蛋)
    4        0.4                      (玉米)
    59       0.4          (洋葱, 鸡蛋, 豆角)
    6        0.4                      (苹果)
    70       0.2          (豆角, 酸奶, 牛奶)
    79       0.2          (豆角, 酸奶, 苹果)
    78       0.2        (胡萝卜, 酸奶, 豆角)
    77       0.2          (豆角, 鸡蛋, 玉米)
    76       0.2          (豆角, 酸奶, 玉米)
    71       0.2          (豆角, 鸡蛋, 牛奶)
    66       0.2        (胡萝卜, 豆角, 牛奶)
    67       0.2        (胡萝卜, 酸奶, 牛奶)
    75       0.2        (胡萝卜, 酸奶, 玉米)
    74       0.2        (胡萝卜, 豆角, 玉米)
    73       0.2          (猪肉, 酸奶, 鸡蛋)
    72       0.2          (酸奶, 牛奶, 鸡蛋)
    68       0.2          (豆角, 苹果, 牛奶)
    69       0.2          (鸡蛋, 牛奶, 苹果)
    65       0.2          (玉米, 酸奶, 牛奶)
    0        0.2                    (冰激凌)
    81       0.2          (苹果, 酸奶, 鸡蛋)
    82       0.2          (豆角, 酸奶, 鸡蛋)
    102      0.2  (胡萝卜, 酸奶, 豆角, 玉米)
    101      0.2    (豆角, 鸡蛋, 牛奶, 苹果)
    100      0.2  (胡萝卜, 酸奶, 豆角, 牛奶)
    99       0.2    (玉米, 豆角, 酸奶, 牛奶)
    98       0.2  (玉米, 胡萝卜, 酸奶, 牛奶)
    97       0.2  (玉米, 胡萝卜, 豆角, 牛奶)
    96       0.2    (猪肉, 酸奶, 牛奶, 鸡蛋)
    95       0.2    (洋葱, 酸奶, 豆角, 鸡蛋)
    94       0.2    (洋葱, 酸奶, 鸡蛋, 苹果)
    93       0.2    (洋葱, 鸡蛋, 豆角, 苹果)
    92       0.2    (洋葱, 酸奶, 豆角, 苹果)
    91       0.2    (洋葱, 鸡蛋, 豆角, 玉米)
    90       0.2    (洋葱, 酸奶, 猪肉, 鸡蛋)
    89       0.2    (洋葱, 酸奶, 牛奶, 鸡蛋)
    88       0.2    (洋葱, 鸡蛋, 猪肉, 牛奶)
    87       0.2    (洋葱, 酸奶, 猪肉, 牛奶)
    86       0.2  (豆角, 鸡蛋, 玉米, 冰激凌)
    63       0.2        (玉米, 胡萝卜, 牛奶)
    85       0.2  (洋葱, 鸡蛋, 豆角, 冰激凌)
    84       0.2  (洋葱, 鸡蛋, 玉米, 冰激凌)
    83       0.2  (洋葱, 豆角, 玉米, 冰激凌)
    64       0.2          (玉米, 豆角, 牛奶)
    52       0.2          (洋葱, 鸡蛋, 猪肉)
    62       0.2          (猪肉, 鸡蛋, 牛奶)
    33       0.2                (鸡蛋, 玉米)
    30       0.2              (胡萝卜, 玉米)
    29       0.2                (猪肉, 鸡蛋)
    28       0.2                (猪肉, 酸奶)
    24       0.2                (苹果, 牛奶)
    23       0.2              (胡萝卜, 牛奶)
    22       0.2                (玉米, 牛奶)
    21       0.2                (猪肉, 牛奶)
    17       0.2                (洋葱, 苹果)
    16       0.2                (洋葱, 玉米)
    15       0.2                (洋葱, 猪肉)
    14       0.2                (洋葱, 牛奶)
    13       0.2              (鸡蛋, 冰激凌)
    12       0.2              (豆角, 冰激凌)
    11       0.2              (玉米, 冰激凌)
    10       0.2              (洋葱, 冰激凌)
    5        0.2                    (胡萝卜)
    3        0.2                      (猪肉)
    32       0.2                (酸奶, 玉米)
    34       0.2              (胡萝卜, 豆角)
    61       0.2          (猪肉, 酸奶, 牛奶)
    35       0.2              (胡萝卜, 酸奶)
    58       0.2          (洋葱, 酸奶, 豆角)
    57       0.2          (洋葱, 苹果, 鸡蛋)
    56       0.2          (洋葱, 酸奶, 苹果)
    55       0.2          (洋葱, 苹果, 豆角)
    54       0.2          (洋葱, 鸡蛋, 玉米)
    53       0.2          (洋葱, 豆角, 玉米)
    51       0.2          (洋葱, 酸奶, 猪肉)
    50       0.2          (洋葱, 鸡蛋, 牛奶)
    49       0.2          (洋葱, 酸奶, 牛奶)
    48       0.2          (洋葱, 猪肉, 牛奶)
    47       0.2        (豆角, 鸡蛋, 冰激凌)
    46       0.2        (鸡蛋, 玉米, 冰激凌)
    45       0.2        (豆角, 玉米, 冰激凌)
    44       0.2        (洋葱, 鸡蛋, 冰激凌)
    43       0.2        (洋葱, 豆角, 冰激凌)
    42       0.2        (洋葱, 玉米, 冰激凌)
    37       0.2                (酸奶, 苹果)
    103      0.2    (苹果, 豆角, 酸奶, 鸡蛋)
    
    关联规则表.png

    相关文章

      网友评论

          本文标题:关联分析(一)

          本文链接:https://www.haomeiwen.com/subject/modwfktx.html