作者:Nature
出品:AI机器思维
“从数据处理基础扎实练习是数据分析与数据挖掘的第一步”
做一道好菜需要食材,好的食材需要经过优质的萃取提炼。食材的提炼过程包括选型、运输保鲜、加工清洗、按要求切菜等才能按菜谱进行真正的做出一道口感美味的菜。大数据时代数据分析与数据挖掘关键的一步在处理食材,这里的各类数据就是我们的食材,选择优质的数据,经过深加工清洗,去伪纯真这个过程需要耗费很长时间,也需要更多的实践经验。根据多年经验,要想运用好数据,首先要研究学习对各种类型的数据进行处理(如各类数据库数据、EXCEL数据、TXT数据、DAT数据等等)。无论用那种语言做数据分析与数据挖掘,首先得有数据食材,对于数据分析与数据挖掘工具只是帮助我们更好的做出一道好菜,正如开车,那种车都能到达目的地,技术不同效率不同,安全系数也不同。
数据分析与数据挖掘的工具目前主流的是SAS、python、R等。这些数据分析挖掘工具能对海量的数据进行处理分析与挖掘。业界中用到的数据量都超过GB级别,研究数据处理,学好数据处理是万里长征第一步,也是学习数据分析与数据挖掘的核心。练习基本功需要耐心和毅力,也需要学习方式。
建议学习方式如下:
○对各类数据每一种类型的数据处理根据案例学习并总结数据处理经验。
○对数据处理生成能够被数据分析与数据挖掘工具的数据集进行二次加工处理,需要理解业务衍生业务数据指标,这是一个深加工的过程。根据数据分析和数据挖掘目标找几个案例真正落实,多加练习。
○数据分析与数据挖掘的过程就是运用工具中已经内置好的数据分析工具以及函数包的过程,这个过程只是占了整个数据分析与数据挖掘的百分之三十的工作量,大部分时间都是在做数据处理的清洗工作。
○数据分析报告可以研习案例写作,数据挖掘结果分析根据研习的案例学习。数据分析与数据挖掘真正上手的方式就是加大案例学习与实践,跟着案例手把手练习,才能真正掌握数据分析与数据挖掘的真谛。
案例如下面是零售客户数据,文件名buy.txt,目前存放在我的个人文件夹:
E:/testdata/buy.txt
数据说明:数据中每列为面包、牛奶、奶酪、苹果和香蕉
对此类数据研究客户交叉销售,根据客户购买行为判断客户在买其中一种食物时会购买那类食物,这样把客户可能购买概率最高的放在货架上相同的位置。因此处理数据是核心环节:
下面是python3.7版本下数据处理程序,数据文件以”|”分割,处理数据时程序指明了分隔符。这里的x=np.loadtxt(dataset_filename,delimiter='|')语句中delimiter=’|’指明了数据以|分割,默认是以空格,如果以空格就需要这个参数了。
代码语言:javascript复制importtnumpyas np
dataset_filename="E:/testdata/buy.txt"
x=np.loadtxt(dataset_filename,delimiter='|')
print(x[:6])
查看数据处理的数据如下:
输出结果从横向和纵向看都可以,横着看,每次只看一行。第一行(0, 0, 0, 1,1)表示 第一条交易数据所包含的商品。竖着看,每一列代表一种商品。在我们这个例子中,这五种商品分别是面包、牛奶、奶酪、苹果和香蕉。从第一条交易数据中,我们可以看到顾客购买了苹果和香蕉,但是没有买面包、牛奶和奶酪。每个特征只有两个可能的值,1或0,表示是否购买了某种商品,而不是购买商品的数量。1 表示顾客至少买了该商品,0表示顾客没有买该种商品。
我们要找出“如果顾客购买了商品X,那么他们可能愿意购买商品Y”这样 的规则。简单粗暴的做法是,找出数据集中所有同时购买的两件商品。找出规则后,还需要判断其优劣,我们挑好的规则用。规则的优劣有多种衡量方法,常用的是支持度(support)和置信度(confidence)。 支持度指数据集中规则应验的次数,统计起来很简单。有时候,还需要对支持度进行规范化,即再除以规则有效前提下的总数量。我们这里只是简单统计规则应验的次数。
支持度衡量的是给定规则应验的比例,而置信度衡量的则是规则准确率如何,即符合给定条件(即规则的“如果”语句所表示的前提条件)的所有规则里,跟当前规则结论一致的比例有多大。计算方法为首先统计当前规则的出现次数,再用它来除以条件(“如果”语句)相同的规则数量。 接下来,通过一个例子来说明支持度和置信度的计算方法,我们看一下怎么求“如果顾客购买了苹果,他们也会购买香蕉”这条规则的支持度和置信度。如下面的代码所示,通过判断交易数据中sample[3]的值,就能知道一个顾客是否买了苹果。 这里,sample表示一条交易信息,也就是数据集里的一行数据。
代码语言:javascript复制num_apple_purchases=0
for sample in x:
if sample[3]==1:
num_apple_purchases =1
print("{0}people bought apples".format(num_apple_purchases))
下面是程序执行后统计购买苹果的结果:
同理,检测sample[4]的值是否为1,就能确定顾客有没有买香蕉。现在可以计算题目给定规则在数据集中的出现次数,从而计算置信度和支持度。 我们需要统计数据集中所有规则的相关数据。首先分别为规则应验和规则无效这两种情况创 建字典。字典的键是由条件和结论组成的元组,元组元素为特征在特征列表中的索引值,不要用 实际特征名,比如“如果顾客购买了苹果,他们也会买香蕉”就用(3, 4)表示。如果某个个体的条件和结论均与给定规则相符,就表示给定规则对该个体适用,否则如果通过给定条件推出的结论与给定规则的结论不符,则表示给定规则对该个体无效。 为了计算所有规则的置信度和支持度,首先创建几个字典,用来存放计算结果。这里使用defaultdict,好处是如果查找的键不存在,返回一个默认值。
附件:以空格分隔数据案例,整个程序源代码,数据可以自己多创造几条,如需要数据文件请留言,跟着案例学习可以更好的体验应用价值,提供学习兴趣:
运行结果如下:
从排序结果来看,“顾客买苹果,也会买奶酪”和“顾客买奶酪,也会买香蕉”,这两条规 则的支持度和置信度都很高。超市可以根据这些规则来调整商品摆放位置。例如如果苹果促销,就在旁边摆上奶酪。但是香蕉和奶酪同时搞促销就没有多大意义了,因为我们发现购买奶酪的顾客中,接近66%的人即使不搞促销也会买香蕉——即使搞促销,也不会给销量带来多大提升。 从上面这个例子就能看出从海量的数据中进行数据挖掘的洞察力有多强大,帮助我们发现数据背后的信息提升决策依据,指导经营提升营收。人们可以用数据挖掘技术探索数据集中各变量之间的关系,寻找商业价值,商品组合价值,营销价值等。
学好数据挖掘,数据处理是关键,其他就是引用统计学的方法以及机器学习的算法等!