python数据分析

python数据分析(8)——挖掘建模(3)关联规则 1, 常用关联规则算法 2, Apriori算法 2,1 关联规则和频繁项集 2

本文包含相关资料包-----> 点击直达获取<-------

python数据分析(8)——挖掘建模(3)关联规则

1. 常用关联规则算法

2. Apriori算法

2.1 关联规则和频繁项集

2.1.1 关联规则的一般形式

2.1.2 最小支持度和最小置信度

最小支持度是用户或专家定义的衡量支持度的一个阈值,表示项目集在统计意义上的最低重要性;最小置信度是用户或专家定义的衡量置信度的一个阈值,表示关联规则的可靠性。同时满足最小支持度阈值和最小置信度阈值的规则称作强规则。

2.1.3 项集

项集是项的集合。项集的出现频率是所有包含项集的事务计数,又称作绝对支持度或支持度计数。如果项集I的相对支持度满足预定义的最小支持度阈值,则I是频繁项集。

2.1.4 支持度计数

```python

- - coding: utf-8 - -

from future import print_function import pandas as pd

自定义连接函数,用于实现L_{k-1}到C_k的连接

def connect_string(x, ms): x = list(map(lambda i:sorted(i.split(ms)), x)) l = len(x[0]) r = [] for i in range(len(x)): for j in range(i,len(x)): if x[i][:l-1] == x[j][:l-1] and x[i][l-1] != x[j][l-1]: r.append(x[i][:l-1]+sorted([x[j][l-1],x[i][l-1]])) return r

寻找关联规则的函数

def find_rule(d, support, confidence, ms = u'--'): result = pd.DataFrame(index=['support', 'confidence']) #定义输出结果

support_series = 1.0*d.sum()/len(d) #支持度序列 column = list(support_series[support_series > support].index) #初步根据支持度筛选 k = 0

while len(column) > 1: k = k+1 print(u'\n正在进行第%s次搜索...' %k) column = connect_string(column, ms) print(u'数目:%s...' %len(column)) sf = lambda i: d[i].prod(axis=1, numeric_only = True) #新一批支持度的计算函数

#创建连接数据,这一步耗时、耗内存最严重。当数据集较大时,可以考虑并行运算优化。
d_2 = pd.DataFrame(list(map(sf,column)), index = [ms.join(i) for i in column]).T

support_series_2 = 1.0*d_2[[ms.join(i) for i in column]].sum()/len(d) #计算连接后的支持度
column = list(support_series_2[support_series_2 > support].index) #新一轮支持度筛选
support_series = support_series.append(support_series_2)
column2 = []

for i in column: #遍历可能的推理,如{A,B,C}究竟是A+B-->C还是B+C-->A还是C+A-->B?
  i = i.split(ms)
  for j in range(len(i)):
    column2.append(i[:j]+i[j+1:]+i[j:j+1])

cofidence_series = pd.Series(index=[ms.join(i) for i in column2]) #定义置信度序列

for i in column2: #计算置信度序列
  cofidence_series[ms.join(i)] = support_series[ms.join(sorted(i))]/support_series[ms.join(i[:len(i)-1])]

for i in cofidence_series[cofidence_series > confidence].index: #置信度筛选
  result[i] = 0.0
  result[i]['confidence'] = cofidence_series[i]
  result[i]['support'] = support_series[ms.join(sorted(i.split(ms)))]

result = result.T.sort_values(['confidence','support'], ascending = False) #结果整理,输出 print(u'\n结果为:') print(result)

return result ```

参考文献

  • 网站运营分析系统设计与实现(电子科技大学·蒋黎)
  • 分布式多数据源电商数据融合分析系统(北京邮电大学·张骏)
  • 数据分析流程编排系统设计与实现(大连理工大学·闫欣)
  • 基于Django的模型参数分析系统的设计与实现(南京大学·府洁)
  • 网络流量统计分析系统(吉林大学·石景龙)
  • 基于业务插件化的电商大数据采集系统(浙江工业大学·李天琦)
  • 基于轻量级J2EE的证券数据分析系统研究与设计(浙江大学·唐业祎)
  • 基于图数据库的上市公司知识图谱构建与智能问答系统研究(首都经济贸易大学·王雨宁)
  • 数据统计分析应用软件的研究与实现(西安工程大学·贺艳琴)
  • 基于Web使用挖掘的在线报名推荐系统的研究与实现(电子科技大学·王玥)
  • 标准化报表的数据分析在电信财务收入系统中的应用(电子科技大学·金鑫)
  • 生物农药智能推荐系统的设计与实现(电子科技大学·彭亚飞)
  • 电子商务网站的数据分析系统研究与开发(北方工业大学·韩杰)
  • 基于Hadoop的电商数据分析系统的设计与实现(广西师范大学·孙明铎)
  • 基于轻量级J2EE的证券数据分析系统研究与设计(浙江大学·唐业祎)

本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:源码码头 ,原文地址:https://bishedaima.com/yuanma/35399.html

相关推荐

发表回复

登录后才能评论