数据挖掘(第2版) 习题答案汇总 第1-9章 绪论 - 互联网数据挖掘_第1页
数据挖掘(第2版) 习题答案汇总 第1-9章 绪论 - 互联网数据挖掘_第2页
数据挖掘(第2版) 习题答案汇总 第1-9章 绪论 - 互联网数据挖掘_第3页
数据挖掘(第2版) 习题答案汇总 第1-9章 绪论 - 互联网数据挖掘_第4页
数据挖掘(第2版) 习题答案汇总 第1-9章 绪论 - 互联网数据挖掘_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章习题1.什么是数据挖掘?数据挖掘(DataMining,DM),是指从大量的、有噪声的、不完全的、模糊和随机的数据中,提取出隐含在其中的、人们事先不知道的、具有潜在利用价值的信息和知识的过程。这个定义包括几层含义:数据源必须是真实的、大量的、含噪声的;发现的是用户感兴趣的知识;发现的知识要可接受、可理解、可运用;并不要求发现放之四海皆准的知识,仅支持特定的发现问题;所提取到的知识的表示形式可以是概念、规律、规则与模式等。2.数据挖掘、统计学和机器学习之间的关系是什么?数据挖掘是一个交叉学科,涉及数据库、人工智能、统计学、机器学习、模式识别、高性能计算、知识工程、神经网络、信息检索、信息的可视化等众多领域,其中数据库、机器学习、统计学对数据挖掘的影响最大,数据库为数据挖掘提供数据管理和存储技术,机器学习和统计学为数据挖掘提供数据分析技术。数据挖掘所采用的算法,一部分是机器学习的理论和方法,如神经网络、决策树等;另一部分是基于统计学习理论,如支持向量机、分类回归树和关联分析等。3.什么是物联网、云计算?并说明它们和大数据的关系。物联网是“物物相连”的互联网,通过射频识别(RFID)、传感器、二维码等技术,将物品与互联网连接起来,实现物品的智能化识别、定位和管理。云计算一般来说就是从网络资源按需获取所需要的服务内容就是云计算,其中提供资源的网络被称为“云”,是基于互联网的相关服务的增加、使用和交付模式,并且可以随时扩展和获取。云计算对海量大数据的处理能力已经成为很多企业的核心运算机构。物联网、云计算和大数据三者互为基础,物联网产生大数据,大数据需要云计算进行高效存储,大数据通过云计算的形式,将物联网产生的数据筛选、处理分析,提取出有用的信息,从而实现人机物高效融合。物联网在将物品和互联网连接起来,进行信息交换和通信,以实现智能化识别、定位、跟踪、监控和管理的过程中,产生的大量数据,云计算解决万物互联带来的巨大数据量,所以三者互为基础,又相互促进。如果不那么严格的说,它们三者可以看做一个整体,相互发展、相互促进。4.查阅资料,说明在大数据背景下,数据挖掘面临哪些挑战?挑战一:数据来源错综复杂现如今,几乎任何规模企业,每时每刻也都在产生大量的数据,但这些数据如何归集、提炼始终是一个困扰。此外,数据采集的前提是数据采集要准确,还有采集效率是否受到网络带宽限制。大数据时代,我们需要更加全面的数据来提高分析预测的准确度,因此我们就需要更多便捷、廉价、自动的数据生产工具。除了我们在网上使用的浏览器有意或者无意记载着个人的信息数据之外,手机、智能手表、智能手环等各种可穿戴设备也在无时无刻地产生着数据;就连我们家里的路由器、电视机、空调、冰箱、饮水机、净化器等也开始越来越智能并且具备了联网功能,这些家用电器在更好地服务我们的同时,也在产生着大量的数据。挑战二:数据挖掘分析模型建立步入大数据时代,人们纷纷在谈论大数据,似乎这已经演化为新的潮流趋势。我们试图用数据去解决问题、改善福利,并且促成新的经济繁荣。然而,关于大数据分析,人们鼓吹其神奇价值的喧嚣声浪很高,却鲜见其实际运用得法的模式和方法。造成这种窘境的原因主要有以下两点:一是对于大数据分析的价值逻辑尚缺乏足够深刻的洞察;其次便是大数据分析中的某些重大要件或技术还不成熟。大数据时代下数据的海量增长以及缺乏这种大数据分析逻辑以及大数据技术的待发展,正是大数据时代下我们面临的挑战。挑战三:数据开放与隐私的权衡数据应用的前提是数据开放,这已经是共识。有专业人士指出,中国人口居世界首位,但2010年中国新存储的数据为250PB,仅为日本的60%和北美的7%。目前我国一些部门和机构拥有大量数据但宁愿自己不用也不愿提供给有关部门共享,导致信息不完整或重复投资。开放与隐私如何平衡,亦是一大难题。任何技术都是双刃剑,大数据也不例外。如何在推动数据全面开放、应用和共享的同时有效地保护公民、企业隐私,逐步加强隐私立法,将是大数据时代的一个重大挑战。5.什么是数据仓库?数据仓库与数据库有何不同?数据仓库是一个面向主题的、集成的、非易失的、随着时间变化的,用于支持管理人员决策的数据集合,数据仓库包含粒度化的企业数据,在不同的粒度级别上对数据进行聚合,这样,数据仓库中就存在最细节的原始数据、轻度聚合数据、高度聚合数据。数据库和数据仓库的区别:1)数据是面向事务处理的,数据是由日常的业务产生的,常更新;数据仓库是面向主题的,数据来源于数据库或文件,经过一定的规则转换得到,用来分析的。2)数据库一般是用来存储当前交易数据,数据仓库存储一般存储的是历史数据。3)数据库的设计一般是符合三范式的,有最大的精确度和最小的冗余度,有利于数据的插入;数据仓库的设计一般是星型的,有利于查询。6.数据挖掘有哪些常用的工具?数据挖掘工具可分为商用工具和开源工具。商用工具主要由商用的开发商提供,通过市场销售,并提供相关的服务。商用工具不仅提供易用的可视化界面,还集成数据处理、建模、评估等一整套功能,并支持常用的数据挖掘算法。与开源工具相比,商用工具功能更强大,软件性能更成熟和稳定。主流的商用工具有SASEnterpriseMiner、Clementine、IntelligentMiner等,这些工具在各行业的数据统计和数据挖掘工作中得到了广泛的应用。开源工具,意为向公众开放源代码的软件工具,其最大的优势在于免费。研制开源软件的技术人员相信软件应该是开放的,让任何有能力的人参与并共同完善软件,能集思广益,并使得软件更新速度更快。开源数据挖掘工具包括:R、Python、WEKA、Mahout、SparkMLlib等。它们在数据挖掘方面同样具有自己的特点和优势。相对于商业工具,开源工具更容易学习和掌握,缺乏数理统计知识的人员也能使用。在数据挖掘之前为什么要对原始数据进行预处理?答案仅供参考:数据如果能满足其应用要求,那么它肯定是高质量的。数据质量涉及许多因素,包括准确性、完整性、一致性、时效性、可信性和可解释性原始业务数据来自多个数据库或数据仓库,它们的结构和规则可能是不同的,这将导致原始数据非常的杂乱、不可用,即使在同一个数据库中,也可能存在重复的和不完整的数据信息,为了使这些数据能够符合数据挖掘的要求,提高效率和得到清晰的结果,必须进行数据的预处理。为数据挖掘算法提供完整、干净、准确、有针对性的数据,减少算法的计算量,提高挖掘效率和准确程度。简述数据清洗的基本内容。答案仅供参考:数据清洗阶段的主要任务就是通过填写缺失值,光滑噪声数据、删除离群点和解决属性的不一致性等手段来清洗数据。数据清洗阶段的主要任务就是通过填写缺失值,光滑噪声数据、删除离群点和解决属性的不一致性等手段来清洗数据。简述数据预处理的方法和内容。答案仅供参考:数据预处里包括以下四个阶段:(1)数据清洗:包括填充空缺值,识别孤立点,去掉噪声和无关数据。(2)数据集成:将多个数据源中的数据结合起来存放在一个一致的数据存储中。需要注意不同数据源的数据匹配问题、数值冲突问题和冗余问题等。(3)数据变换:将原始数据转换成为适合数据挖掘的形式。包括对数据的汇总、聚集、概化、规范化,还可能需要进行属性的重构。(4)数据归约:缩小数据的取值范围,使其更适合于数据挖掘算法的需要,并且能够得到和原始数据相同的分析结果。简述数据空缺值的处理方法。答案仅供参考:处理缺失值的方法有三种:(1)忽略元组:也就是将含有缺失属性值的对象(元组,记录)直接删除,从而得到一个完备的信息表。(2)数据补齐:使用一定的值对缺失属性进行填充补齐,从而使信息表完备化。数据补齐的具体实行方法较多:人工填写、特殊值填充、平均值填充、使用最有可能的值填充。(3)不处理:有很多数据挖掘方法在属性值缺失方面具有良好的鲁棒性,直接在包含空值的数据上进行数据挖掘。这类方法包括贝叶斯网络和人工神经网络等。数据约简的方法有哪些?答案仅供参考:数据约简的策略主要包括维规约和数量规约。维规约减少所考虑的随机变量或属性的个数,主要方法有小波变换、主成分分析和属性子集选择,通过这些方法可以把原始数据变换或投影到较小的空间,其中不相关、弱相关或冗余的属性或维被检测或删除。数量规约是用替代的、较小的数据表示形式换原始数据。这些技术可以是参数或者非参数的。对于参数方法而言,使用模型估计数据,使得一般只需要存放模型参数而不是实际数据(离群点需存放)。非参数方法包括:直方图、聚类、抽样和数据立方体聚类。什么是数据规范化?规范化的常用方法有哪些?写出对应的变换公式。答案仅供参考:数据规范化又称标准化(standardization),通过将属性的取值范围进行统一,避免不同的属性在数据分析的过程中具有不平等的地位。常用方法有:最小-最大规范化、z-score规范化、按小数定标规范化、独热编码处理标称属性数据。【示例2-10】种的数据[3、22、8、22、9、11、32、93、12],试用等宽分箱法完成数据平滑。解答:使用等宽(宽度为10)分箱发进行平滑。原始数据3、22、8、22、9、11、32、93、12排序后3、8、9、11、12、22、22、32、93等宽分箱3、8、9、11、1222、22、3299均值平滑8.8325.3399均值平滑后8.83、8.83、8.83、8.83、8.83、25.33、25.33、25.33、99中值平滑92299中值平滑后9、9、9、9、9、22、22、22、99边界值平滑3、9、9、12、1222、22、3299边界值平滑后3、9、9、12、12、22、22、32、99下列数据是对鸢尾花进行频率统计后的部分数据,在此基础上,用ChiMerge方法完成数据离散化。sepal_length0类1类2类和4.310014.430034.510014.640044.720024.850054.941165820105.181095.231045.31015.451065.525075.605165.725185.813375.90213参考答案:步骤:第一步:初始化根据要离散的属性对实例进行排序:每个实例属于一个区间。上表中已按照sepal_length列排序。第二步:合并区间,又包括两步骤:计算每一对相邻区间的卡方值卡方的计算公式:参数说明:m=2,每次比较两个相邻区间,2个区间比较k=类别的数量Aij=第i区间第j类的实例数量Ri=第i区间的实例数量将卡方值最小的一对区间合并预先设定一个卡方的阈值,在阈值之下的区间都合并,阈值之上的区间保持分区间。卡方阈值的确定:先选择显著性水平,再由公式得到对应的卡方值。得到卡方值需要指定自由度,自由度比类别数量小1。例如,有3类,自由度为2,则90%置信度(10%显著性水平)下,卡方的值为4.6。阈值的意义在于,类别和属性独立时,有90%的可能性,计算得到的卡方值会小于4.6,这样,大于阈值的卡方值就说明属性和类不是相互独立的,不能合并。如果阈值选的大,区间合并就会进行很多次,离散后的区间数量少、区间大。用户可以不考虑卡方阈值,此时,用户可以考虑这两个参数:最小区间数,最大区间数。用户指定区间数量的上限和下限,最多几个区间,最少几个区间。下面举例说明期望值和卡方值的计算方法。:区间类别1类别2类别3i行的总数[4.3,4.5]1001[4.6,4.9]0123j列的总数1124区间类别1类别2类别3[4.3,4.5]1*1/4=0.251*1/4=0.251*2/4=0.5[4.6,4.9]1*3/4=0.751*3/4=0.752*3/4=1.5根据以上两个表来计算某两个区间的chi值:chi=(1-0.25)^2/0.25+(0-0.25)^2/0.25+(0-0.5)^2/0.5+(0-0.75)^2/0.75+(1-0.25)^2/0.25+(2-1.5)^2/1.5参考代码:importsklearn.datasetsasirisdataimportnumpyasnpclassChiMerge:def__init__(self,data,min_section_num):self.min_section_num=min_section_numself.dat=data@staticmethoddefmerge_section(index_list,observe_list):"""合并区间:paramobserve_list:原来的区间集合:paramindex_list:要合并的位置:return:新的区间集合"""#print(observe_list)number=int(len(index_list)/2)foriinrange(number):first_section=observe_list[index_list[2*i]]#要合并的第一部分second_section=observe_list[index_list[2*i+1]]#要合并的第二部分new_section=[]#合并后的区间min_value=float(first_section[0].split("-")[0])max_value=float(second_section[0].split("-")[1])first_class=first_section[1]+second_section[1]second_class=first_section[2]+second_section[2]third_class=first_section[3]+second_section[3]new_section.append(str(min_value)+"-"+str(max_value))new_section.append(first_class)new_section.append(second_class)new_section.append(third_class)#print(new_section)observe_list[index_list[2*i]]=new_sectionobserve_list[index_list[2*i+1]]="no"foriinrange(number):observe_list.remove("no")returnobserve_list#foriinrange@staticmethoddefcomp_chi(observe_list):"""根据observe列表计算每个区间的卡方:paramobserve_list:排好的observe列表:return:最小chi所在的索引列表"""min_chi=float('inf')#记录最小的chi#print(min_chi)index_list=[]foriinrange(int(len(observe_list)/2)):chi=0a1=observe_list[2*i][1]#第一个区间的信息b1=observe_list[2*i][2]c1=observe_list[2*i][3]d1=observe_list[2*i+1][1]#第二个区间的信息e1=observe_list[2*i+1][2]f1=observe_list[2*i+1][3]n=a1+b1+c1+d1+e1+f1a2=(a1+b1+c1)*(a1+d1)/nb2=(a1+b1+c1)*(b1+e1)/nc2=(a1+b1+c1)*(c1+f1)/nd2=(a2+b2+c2)*(a1+d1)/ne2=(a2+b2+c2)*(b1+e1)/nf2=(a2+b2+c2)*(c1+f1)/nifa2!=0:chi+=(a1-a2)**2/a2ifb2!=0:chi+=(b1-b2)**2/b2ifc2!=0:chi+=(c1-c2)**2/c2ifd2!=0:chi+=(d1-d2)**2/d2ife2!=0:chi+=(e1-e2)**2/e2iff2!=0:chi+=(f1-f2)**2/f2ifchi<min_chi:index_list.clear()index_list.append(2*i)index_list.append(2*i+1)min_chi=chicontinueifchi==min_chi:index_list.append(2*i)index_list.append(2*i+1)#print(min_chi)#print(index_list)returnindex_list@staticmethoddefinit_observe(sort_data):#sort_data为按属性排好的数据,格式为list套list"""对observe列表进行初始化:paramsort_data::return:"""observe_list=[]foriinrange(len(sort_data)):#每个sort_data[i]代表每个区间max_value=0#存放每个区间的最大值和最小值min_value=0section_name=str(sort_data[i][0]).split("-")iflen(section_name)>1:min_value=float(section_name[0])max_value=float(section_name[1])else:min_value=max_value=float(section_name[0])first_class=0second_class=0third_class=0ifmin_value<=sort_data[i][0]<=max_value:ifsort_data[i][1]==0:first_class+=1ifsort_data[i][1]==1:second_class+=1ifsort_data[i][1]==2:third_class+=1section_list=[str(min_value)+"-"+str(max_value),first_class,second_class,third_class]observe_list.append(section_list)#print(observe_list)returnobserve_list@staticmethoddefcomp_observe(sort_data):#sort_data为按属性排好的数据,格式为list套list"""计算observe列表(除了初始化之外):paramsort_data::return:"""observe_list=[]foriinrange(len(sort_data)):#每个sort_data[i]代表每个区间max_value=0#存放每个区间的最大值和最小值min_value=0section_name=str(sort_data[i][0]).split("-")iflen(section_name)>1:min_value=float(section_name[0])max_value=float(section_name[1])else:min_value=max_value=float(section_name[0])first_class=0second_class=0third_class=0forjinrange(len(sort_data)):ifmin_value<=sort_data[j][0]<=max_value:ifsort_data[j][1]==0:first_class+=1ifsort_data[j][1]==1:second_class+=1ifsort_data[j][1]==2:third_class+=1section_list=[str(min_value)+"-"+str(max_value),first_class,second_class,third_class]print(section_list)defchi_merge(self):#dat为原始全部数据(包括类别)#min_section_num=6#属性最终划分成几个区间foriinrange(self.dat.shape[1]-1):#对每个属性进行离散化now_section_num=self.dat.shape[0]#初始区间数为样本数量now_data=self.dat[:,[i,-1]]#当前要进行离散化的属性数据以及所属类别sort_data=now_data[now_data[:,0].argsort()].tolist()#按当前属性从小到大排序,格式:[属性值,类别]#print(sort_data)observe_list=self.init_observe(sort_data)#得到初始化的observe列表whilenow_section_num>self.min_section_num:#print(observe_list)index_list=p_chi(observe_list)observe_list=self.merge_section(index_list,observe_list)#更新区间集合print(observe_list)now_section_num-=len(index_list)/2计算数据对象X=(3,5,2,7)和Y=(6,8,2,3)之间的欧几里得距离、曼哈顿距离以及闵可夫斯基距离,其中闵可夫斯距离中p值取为3。解答:(公式可参考书中章节)欧几里得距离为5.83曼哈顿距离为13闵可夫斯基距离为4.90第三章分类课后习题答案1.数据分类一般分为哪两个阶段?请阐述。常用的评估分类方法准确率的技术有哪些?请阐述。答:数据分类过程有两阶段:(1)学习阶段,构建分类模型。(2)分类阶段,使用模型预测给定数据的类标号。第一阶段,建立描述预先定义的数据类或概念集的分类器。分类算法通过分析或从训练集“学习”来构造分类器。训练集由数据库元组和与它们相关联的类标号组成。构成训练集的元组称为训练元组。第二阶段,使用模型进行分类。首先评估分类器的预测准确率。使用由检验元组和与它们相关联的类标号组成的检验集。它们独立于训练元组,即不用它们构造分类器。分类器在给定检验集上的准确率是分类器正确分类的检验元组所占的百分比。如果认为分类器的准确率是可以接受的,那么就可以用它对类标号未知的数据元组进行分类。常用的评估分类方法准确率的技术有准确率、召回率、精度等。(1)准确率(Accuracy):准确率是最常用的评估分类模型性能的指标之一,表示模型预测正确的样本数量占总样本数量的比例。计算公式为:准确率=(TP+TN)/(TP+TN+FP+FN)。(2)召回率(Recall):召回率是指实际为正例的样本中被模型正确预测为正例的比例。召回率关注的是模型预测的覆盖率,适用于对假反例有较高敏感性的问题。计算公式为:召回率=TP/(TP+FN)。(3)精度(Precision):精确率是指模型预测为正例的样本中实际为正例的比例。精确率关注的是模型预测的准确性,适用于对假正例有较高敏感性的问题。计算公式为:精确率=TP/(TP+FP)。这些评估分类方法可以帮助评估模型的准确性、精确性、覆盖率等性能指标,选择合适的指标取决于具体的问题和需求。在选择适合的评估方法时,需要根据具体问题的特点和重要性来决定。例如,如果分类模型应用在医学诊断领域,可能更关注召回率,因为将病人错误地判断为健康可能会带来更大的风险;而在广告点击预测等领域,可能更关注准确率,因为准确地预测用户是否会点击广告对于广告推送效果的优化至关重要。2.什么是决策树?决策树的最佳用途是什么?决策树分为哪两种树?决策树中一般包含哪几种结点?请阐述决策树构建的基本步骤。一棵决策树的生成过程主要分为哪3个部分?请阐述决策树优缺点。答:决策树(DecisionTree)是一种类似于流程图的树结构,其中每个内部节点(非树叶节点)表示在属性上的测试,每个分支表示该测试上的一个输出,而每个树叶节点存放一个类标号,树的最顶层节点是根节点。决策树在特征选择、解释性、处理非线性关系、混合型数据、可扩展性、高效性、探索性分析和特征工程等方面具有优势,因此其最佳用途包括数据探索和解释、非线性问题建模、特征选择和工程等。决策树分为以下两种主要类型:(1)分类树(ClassificationTree):用于解决分类问题,将输入样本分配到不同的预定义类别中。(2)回归树(RegressionTree):用于解决回归问题,通过树结构对输入样本进行连续数值的预测。决策树中一般包含以下几种结点:(1)根结点(RootNode):没有入边,但有两条或多条出边,代表整个决策树的起点,包含最重要的划分特征。(2)子结点(ChildNode):恰有一条入边和两条或多条出边,表示对划分特征的一次判断或决策。(3)叶结点(LeafNode):恰有一条入边,但没有出边,代表树的终止节点,表示最终的分类或回归结果。一棵决策树的生成过程主要分为以下三个部分:(1)特征选择:选择划分特征,将数据集分成更加纯净(或更好预测)的子集。常用的特征选择算法有ID3、C4.5和CART等。(2)结点分裂:根据选择的划分特征和相应的分裂条件,将当前节点的数据集划分成多个子集。(3)停止条件:根据事先设定的停止条件,确定是否终止树的生成。常见的停止条件包括达到最大深度、子集样本数小于阈值、划分增益低于阈值等。决策树具有可解释性强、特征选择能力强、处理非线性关系能力强等优点。然而,决策树容易过拟合、不稳定性高、忽略特征间相关性和局部最优问题等缺点需要注意。在实际应用中,可以根据具体问题的特点和需求综合考虑这些优缺点,选择合适的算法来降低决策树的过拟合风险,如剪枝技术(Pruning)和集成方法(如随机森林)等。3.ID3算法生成决策树的过程?请阐述ID3算法的优缺点。C4.5有哪两种基本剪枝策略?请分别阐述它们的思路。C4.5算法建树过程?请阐述C4.5算法的优缺点。请阐述CART算法建树过程。请阐述CART算法的优缺点。答:ID3(IterativeDichotomiser3)算法是一种用于生成决策树的经典算法,其生成决策树的过程如下:(1)选择最佳划分特征:根据信息增益(InformationGain)准则,计算每个特征的信息增益值。信息增益度量了特征对于分类结果的贡献程度,选择信息增益最大的特征作为当前节点的划分特征。(2)根据划分特征生成子节点:将当前节点的数据集按照划分特征的不同取值分割成多个子集,每个子集对应一个子节点。(3)递归构建子节点:对每个子节点,重复步骤1和步骤2,递归地构建子节点,直到满足停止条件(如达到最大深度、样本数小于阈值等)。(4)构建叶节点:当满足停止条件时,将当前节点标记为叶节点,并将该节点分配到最多的类别(对于分类问题)或计算该节点数据集的平均值(对于回归问题)作为叶节点的输出结果。ID3算法建树过程简单且易懂。但是ID3存在多值偏向问题,在选择分裂属性时,会优先选择取值较多的属性,而在某一些情况下,这些属性并不是最优属性;对于连续型属性,传统的ID3算法不能直接进行处理;其次,属性间的关联性不强,但它正是ID3算法可以在Hadoop平台上并行化的前提;再者,ID3算法对噪声数据很敏感;最后,结果会随着训练集规模的不同而不同。C4.5算法是ID3算法的扩展,引入了两种基本的剪枝策略,分别是预剪枝(Pre-Pruning)和后剪枝(Post-Pruning)。(1)预剪枝(Pre-Pruning):在决策树构建过程中,在每次节点分裂前先进行评估,根据预定义的条件决定是否停止分裂。预剪枝的思路是通过提前停止分裂来防止过拟合。它在考虑是否分裂之前,根据验证集或交叉验证的性能来估计当前节点分裂后的泛化性能。如果分裂后的性能没有显著提升或下降,那么就停止分裂,将当前节点设为叶节点。(2)后剪枝(Post-Pruning):在决策树构建完成后,通过自下而上的方式对节点进行评估,根据验证集或交叉验证的性能来判断是否剪枝。后剪枝的思路是首先构建完整的决策树,然后自底向上地考虑剪枝。对每个节点,将其替换为叶节点,并计算剪枝后整体模型的性能变化。如果剪枝后的性能提升或变化不显著,那么就剪枝,将该节点替换为叶节点。C4.5算法的建树过程如下:(1)特征选择:使用信息增益比(GainRatio)作为特征选择的准则,计算每个特征的信息增益比。信息增益比考虑了特征取值的多样性,对具有较多取值的特征进行惩罚,避免选择偏好取值较多的特征。(2)结点分裂:根据选择的划分特征和相应的分裂条件,将当前节点的数据集划分成多个子集。(3)递归构建子节点:对每个子节点,重复步骤1和步骤2,递归地构建子节点,直到满足停止条件(如达到最大深度、样本数小于阈值等)。(4)后剪枝:对构建好的决策树进行后剪枝处理,将部分节点替换为叶节点,以提高模型的泛化能力。C4.5算法具有特征选择能力强、处理连续型特征、剪枝策略好、可解释性强等优点。然而,C4.5算法对缺失值敏感、计算开销大和可能产生过长的决策树等是其缺点。CART(ClassificationandRegressionTrees)算法是一种用于构建分类和回归树的算法,其建树过程具体如下:(1)特征选择:对于分类问题,CART算法使用基尼系数(GiniIndex)作为特征选择的准则,计算每个特征的基尼系数。基尼系数衡量了样本在特征上的不纯度,选择基尼系数最小的特征作为当前节点的划分特征。对于回归问题,CART算法使用平方误差(MeanSquaredError)作为特征选择的准则,计算每个特征的平方误差。(2)结点分裂:根据选择的划分特征和相应的分裂条件,将当前节点的数据集划分成多个子集。(3)递归构建子节点:对每个子节点,重复步骤1和步骤2,递归地构建子节点,直到满足停止条件(如达到最大深度、样本数小于阈值等)。(4)停止条件:CART算法可以设置一些停止条件来控制决策树的生长,例如达到最大深度、样本数小于阈值等。CART算法具有处理分类和回归问题、特征选择能力强、预测效果好和对缺失值鲁棒等优点。然而,CART算法可能产生过拟合、对连续型特征不友好、结果不稳定、对样本不平衡敏感和非参数性等是其缺点。4.请阐述朴素贝叶斯分类的优缺点。整个朴素贝叶斯分类一般分为哪三个阶段?请阐述。贝叶斯分析中的三要素是指哪三要素?贝叶斯决策主要包含哪四个部分?答:朴素贝叶斯分类具有算法简单快速、对小样本数据有效、可解释性强和对高维数据有效等优点。然而,朴素贝叶斯分类算法基于强假设(特征之间相互独立),可能无法捕捉特征之间的复杂关系,因此在某些情况下性能可能不如其他更复杂的分类算法。此外,朴素贝叶斯分类算法对数据的先验分布敏感,对于错误的先验假设可能导致较差的分类结果。朴素贝叶斯分类一般分为以下三个阶段:(1)训练阶段:在这个阶段,使用已标记的训练数据集来计算每个类别的先验概率以及每个特征在每个类别下的条件概率。(2)预测阶段:在这个阶段,对于一个未标记的测试样本,计算该样本属于每个类别的后验概率,然后选择具有最高后验概率的类别作为预测结果。(3)评估阶段:在这个阶段,使用预测结果与真实标签进行比较,计算分类器的性能指标,如准确率、精确率、召回率等。贝叶斯分析中的三要素指的是:(1)先验概率(PriorProbability):在没有任何证据的情况下,根据以往的经验或领域知识得出的概率,用来表示每个类别的先验概率。(2)条件概率(ConditionalProbability):在给定某个特征条件下,每个类别的概率。在朴素贝叶斯算法中,假设各个特征之间相互独立,通过计算每个特征在每个类别下的条件概率来表示。(3)后验概率(PosteriorProbability):在给定特征的条件下,每个类别的概率。根据贝叶斯定理,通过先验概率和条件概率计算得出。贝叶斯决策主要包含以下四个部分:(1)决策准则(DecisionCriterion):根据不同的应用场景和目标,选择合适的决策准则,如最大后验概率准则、最小错误率准则等。(2)损失函数(LossFunction):定义了不同分类决策的损失或代价,用于衡量分类错误带来的损失。根据具体情况,可以选择不同的损失函数。(3)决策规则(DecisionRule):基于决策准则和损失函数,确定最优的决策规则。例如,选择使总体损失最小化的决策规则。(4)判别函数(DiscriminantFunction):根据给定的特征向量,计算每个类别的后验概率或判别得分,然后根据决策规则进行决策。判别函数可以是贝叶斯公式的直接应用,也可以是其他形式的函数。5.什么叫核函数?常用的核函数主要有以下几种?对偶问题与原始问题之间存在着哪些关系?请阐述对偶理论。常用的损失函数有哪些?答:核函数(KernelFunction)是一种用于支持向量机(SVM)和其他基于核方法的机器学习算法中的重要工具。它是一个定义在输入空间中的函数,通过将输入数据映射到高维特征空间,从而在低维空间中进行非线性分类或回归。常用的核函数主要有线性核函数、多项式核函数、高斯核函数、指数型径向基核函数、Sigmoid核函数、傅立叶(Fourier)核函数等。对偶问题与原始问题之间存在以下关系:在优化问题中,原始问题是指直接解决我们所关心的问题,而对偶问题则是通过对原始问题进行转化而得到的另一个等价问题。对于某些优化问题,通过求解对偶问题可以更方便地得到最优解。对于支持向量机(SVM)算法,原始问题是通过最小化目标函数来求解分离超平面,而对偶问题则是通过对原始问题应用拉格朗日对偶性转化而得到的。对偶问题可以通过拉格朗日乘子法求解,它的解与原始问题的解是等价的。通过求解对偶问题,可以得到支持向量机算法中的支持向量以及对应的拉格朗日乘子,进而进行分类或回归。对偶理论是指通过对原始问题进行转化得到对偶问题,并探究二者之间的关系和等价性。对偶理论的核心是拉格朗日对偶性,它提供了一种从原始问题转化为对偶问题的方法,使得我们可以通过求解对偶问题来获得原始问题的最优解。对偶理论在优化问题中具有重要的理论和应用价值。常用的损失函数包括绝对值损失、不灵敏损失函数、logistic损失函数等。不同的损失函数适用于不同的问题和算法,选择合适的损失函数可以更好地衡量模型的性能并进行优化。在实际应用中,根据具体问题的特点和需求选择合适的损失函数是非常重要的。6.请阐述支持向量机的主要思想。支持向量机的理论有哪几个要点?请阐述支持向量机(SVM)主要有哪几种情况?请阐述支持向量机的优点。答:支持向量机(SupportVectorMachine,SVM)是一种常用的监督学习算法,其主要思想是通过寻找最优超平面来进行分类或回归。其核心理论基础是结构风险最小化原理。支持向量机的理论要点包括:(1)最大间隔:支持向量机的目标是找到一个能够将不同类别的样本分隔开的最优超平面,使得两个类别的样本之间的间隔最大化。这个最大间隔的超平面被称为最优超平面。(2)支持向量:在最优超平面的构建过程中,只有少数关键的样本点被称为支持向量,它们决定了最优超平面的位置和形状。支持向量是离最优超平面最近的样本点,其位置对分类决策起关键作用。(3)核函数:支持向量机可以通过核函数将输入空间映射到高维特征空间,从而实现在低维空间中的非线性分类或回归。核函数的使用能够避免直接计算高维特征空间的复杂性。支持向量机主要有以下几种情况:(1)二分类问题:支持向量机最经典的应用是二分类问题,通过找到一个最优超平面来将两个不同类别的样本分隔开。(2)多分类问题:支持向量机可以通过一对多(One-vs-Rest)或一对一(One-vs-One)的策略来解决多分类问题。(3)回归问题:支持向量机也可以用于回归问题,通过寻找一个回归超平面来拟合数据点。支持向量机的优点包括适用性广泛、鲁棒性强、泛化能力强、可解释性强、仅依赖于支持向量、可调节的核函数、避免局部极小值等。习题:1.调查某市出租车使用年限和该年支出维修费用(万元),得到数据如下:使用年限23456维修费用2.2使用年限23456维修费用2.23.85.56.57.0 n n(xix)(yi(xix)(yiy)bi1n(xix)2i1aybx 房屋面积(㎡)151080135105销售价格(万元)24.821.618.429.222(2)由(1)中结论预测第10年所支出的维修费用.( )2.以下是某地搜集到的新2i1aybx 房屋面积(㎡)151080135105销售价格(万元)24.821.618.429.222(1)画出数据对应的散点图;(2)求线性回归方程,并在散点图中加上回归直线;(3)据(2)的结果估计当房屋面积为150m2时的销售价格.(4)求第2个点的残差。y习题解答:y1. datas=np.array([[2,2.2],[3,3.8],[4,5.5],[5,6.5],[6,7.0]],dtype=np.float32)plt.scatter(datas[:,0],datas[:8,1],c='green',s=70,alpha=0.8)plt.xlabel("使用年限")plt.ylabel("维修费用(万元)")lr=linear_model.LinearRegression()lr.fit(datas[:,0].reshape(-1,1),datas[:,1].reshape(-1,1))print(lr.coef_,ercept_)x=np.arange(1,7)y=lr.coef_[0][0]*x+ercept_[0]plt.plot(x,y)plt.show()print("预测第十年:",lr.coef_[0][0]*10+ercept_[0])结果如下:y=1.2299998x+0.08000088y习题解答:y2. datas=np.array([[115,24.8],[110,21.6],[80,18.4],[135,29.2],[105,22]],dtype=np.float32)plt.scatter(datas[:,0],datas[:8,1],c='green',s=70,alpha=0.8)plt.xlabel("面积(平方米)")plt.ylabel("销售价格(万元)")lr=linear_model.LinearRegression()lr.fit(datas[:,0].reshape(-1,1),datas[:,1].reshape(-1,1))print(lr.coef_,ercept_)x=np.arange(70,150)y=lr.coef_[0][0]*x+ercept_[0]plt.plot(x,y)plt.show()print("预测150平方米房屋价格:",lr.coef_[0][0]*150+ercept_[0])结果如下:y=0.19617835x+1.8165607感谢聆听1.简述聚类分析的基本思想和基本步骤?聚类分析是一种无监督学习方法,其基本思想是将数据集中的样本划分为若干个互相类似的簇(cluster),使得同一簇内的样本相似度较高,而不同簇之间的样本相似度较低。聚类分析的目标是发现数据中的内在结构和模式,将相似的样本归为一类,从而实现数据的分类和分组。聚类分析的基本步骤如下:①数据准备:收集需要进行聚类分析的数据,并进行预处理。这包括数据清洗、缺失值处理、特征选择和标准化等操作,以确保数据的质量和一致性。②选择聚类算法:根据问题的需求和数据的性质,选择适当的聚类算法。常见的聚类算法包括K均值聚类、层次聚类、密度聚类和谱聚类等。③特征向量表示:将数据样本转换为合适的特征向量表示。根据数据的属性类型,选择适当的特征提取方法,如数值型数据可以直接使用原始特征,而文本数据可以通过向量化方法如词袋模型或TF-IDF等进行表示。④聚类模型构建:使用选择的聚类算法构建聚类模型。根据算法的要求,确定聚类的簇数或其他参数。⑤聚类结果评估:评估聚类的质量和效果。常用的评估指标包括簇内相似度和簇间差异度等。还可以使用可视化方法对聚类结果进行分析和展示。⑥结果解释和应用:根据聚类结果进行进一步的分析和解释。可以根据不同簇的特点和共性,提取出有用的知识和信息,支持决策或应用领域的问题解决。需要注意的是,聚类分析是一种迭代的过程,需要根据实际情况对算法和参数进行调整和优化,以获得更好的聚类结果。同时,聚类结果的解释和应用也需要结合领域知识和问题背景进行综合考虑。一个好的聚类算法应该具备哪些特性?一个好的聚类算法通常应具备以下特性:①可伸缩性(Scalability):算法能够有效地处理大规模数据集,并具有较低的时间和空间复杂度。它应该能够处理高维数据,并在面对大量样本时也能保持良好的性能。②鲁棒性(Robustness):算法对噪声和异常值具有较好的鲁棒性。它能够忽略异常值的干扰,将其归类为合适的簇,而不会对整个聚类结果产生过大的影响。③可解释性(Interpretability):算法产生的聚类结果应该易于理解和解释。它应该能够提供对簇的特征和属性的解释,帮助用户理解数据中的模式和结构。④灵活性(Flexibility):算法应该具有一定的灵活性,能够适应不同类型的数据和问题。它应该能够处理数值型数据、文本数据、图像数据等不同形式的数据,并且可以适应不同的聚类结构和分布。⑤高效性(Efficiency):算法的执行时间应该尽可能短,并且具有高效的收敛性。它应该能够在合理的时间内生成聚类结果,以便及时应用于实际问题。⑥自动化(Automation):算法应该能够自动进行特征提取、参数选择和聚类过程,减少用户的主观干预和人工操作。⑦不受初始化影响(Insensitivitytoinitialization):算法应该对初始参数的选择不敏感,即不同的初始化应该得到相似的聚类结果。这有助于算法的稳定性和可靠性。⑧可扩展性(Extensibility):算法应该易于扩展和扩展,以满足不同的需求和应用场景。它应该能够支持新的数据类型、新的距离度量和新的聚类模型。需要注意的是,不同的聚类算法可能在不同的特性上有所侧重,因此在选择聚类算法时需要根据具体问题和数据特点进行综合考虑。3.简述划分聚类方法的主要思想。划分聚类方法是聚类分析中的一种常见方法,其主要思想是通过迭代的方式将数据集划分为不同的簇,使得同一簇内的样本相似度较高,不同簇之间的样本相似度较低。划分聚类方法的主要思想可以概括为以下步骤:①初始化:首先选择初始的簇中心或随机划分簇,确定要划分的簇数。通常情况下,初始簇中心可以根据数据分布进行选择,或者随机选择数据点作为初始簇中心。②分配样本:将每个样本分配给最近的簇中心,计算样本与簇中心之间的距离或相似度。常见的距离度量方法包括欧氏距离、曼哈顿距离、余弦相似度等。③更新簇中心:根据已分配样本的情况,更新每个簇的中心位置。通常采用计算簇内样本的平均值或中心点作为新的簇中心。④重新分配样本:根据新的簇中心,重新分配每个样本到最近的簇中心。⑤迭代更新:重复进行步骤3和步骤4,直到达到停止条件。停止条件可以是达到最大迭代次数、簇中心不再变化或目标函数收敛等。⑥输出聚类结果:最终得到划分后的簇和每个样本所属的簇标签。4.简述凝聚的层次聚类方法的主要思路。凝聚的层次聚类方法是聚类分析中的一种常见方法,其主要思路是通过逐步合并最相似的样本或簇来构建聚类的层次结构。凝聚的层次聚类方法的主要思路可以概括为以下步骤:①初始化:将每个样本视为一个簇,形成初始的单个样本簇集合。②计算相似度:计算每对样本或簇之间的相似度或距离。常用的相似度度量方法包括欧氏距离、曼哈顿距离、相关系数等。③合并最相似的簇:从相似度矩阵中选择相似度最高的两个簇,将它们合并为一个新的簇。合并的准则可以是最小距离、最大距离、平均距离等。④更新相似度矩阵:根据合并的簇,更新相似度矩阵,以反映新的簇之间的相似度。⑤重复步骤3和步骤4,直到满足停止条件。停止条件可以是达到指定的簇数、相似度小于阈值或其他预定义条件。⑥输出聚类结果:最终得到层次聚类的结果,形成聚类树状结构(树状图或树状图谱),可根据需要选择合适的切割方法来确定最终的聚类划分。凝聚的层次聚类方法将样本或簇逐步合并,形成不同层次的聚类结构。在聚类树状结构中,上层的簇表示更大范围的聚类,而下层的簇表示更具体的聚类。可以通过树状结构的切割来获得不同数量的聚类。切割时可以根据相似度阈值、簇的距离或其他准则进行选择。5.说出划分聚类与层次聚类的主要特点。划分聚类和层次聚类是聚类分析中两种常见的方法,它们具有不同的特点和适用场景。划分聚类的主要特点:①固定簇数:划分聚类需要事先指定簇的数量,即确定要将数据划分为多少个簇。②迭代优化:划分聚类方法通常使用迭代的方式来优化聚类结果,通过不断更新簇中心和重新分配样本来达到最优或局部最优。③效率较高:相比层次聚类,划分聚类方法通常具有较高的计算效率,尤其适用于大规模数据集。④聚类结果较为稳定:由于划分聚类的随机性较高,多次运行划分聚类算法可以得到不同的初始条件下的聚类结果,但相同初始条件下通常可以得到相似的结果。⑤需要预先设定簇数:划分聚类方法对于确定簇的数量较为敏感,不同的簇数设定可能会导致不同的聚类结果。层次聚类的主要特点:①无需预先设定簇数:层次聚类方法不需要预先设定簇的数量,它会根据数据的内在结构自动构建层次聚类结构。②提供层次结构:层次聚类方法可以提供全局的聚类结构,通过聚类树状结构可以看到不同层次的聚类结果,有助于发现嵌套关系和子簇的结构。③计算复杂度较高:层次聚类方法通常具有较高的计算复杂度,特别是当数据集规模较大时,计算和存储开销较大。④不受簇数设定限制:由于层次聚类方法不需要预先设定簇数,因此可以根据需要通过树状结构进行切割,得到不同数量的聚类结果。⑤鲁棒性较强:层次聚类方法对于噪声和异常值具有一定的鲁棒性,因为它通过逐步合并相似的样本或簇来构建聚类结构。需要根据具体的问题和数据特点选择适合的聚类方法,划分聚类适用于对簇数有明确要求且效率较高的情况,而层次聚类适用于无需预先设定簇数且需要全局结构信息的场景。6.在一维点集1,4,9,16,25,36,49,64,81上执行层次聚类算法,假定簇表示为其质心(平均),每一步质心最近的两个簇相合并。importnumpyasnp

#数据集

data=np.array([1,4,9,16,25,36,49,64,81])

#初始化每个数据点为一个簇

clusters=[[point]forpointindata]

#层次聚类算法

whilelen(clusters)>1:

#计算每个簇的质心

centroids=[np.mean(cluster)forclusterinclusters]

#计算簇与簇之间的距离

distances=np.abs(np.subtract.outer(centroids,centroids))

#找到距离最近的两个簇

min_distance=np.min(distances[np.nonzero(distances)])

cluster1,cluster2=np.where(distances==min_distance)

#合并簇

merged_cluster=clusters[cluster1[0]]+clusters[cluster2[0]]

#更新簇列表

ifcluster1[0]<cluster2[0]:

clusters.pop(cluster2[0])

clusters.pop(cluster1[0])

else:

clusters.pop(cluster1[0])

clusters.pop(cluster2[0])

#添加合并后的簇

clusters.append(merged_cluster)

#输出所有的聚类结果

forclusterinclusters:

print(cluster)输出结果:[9,1,4,16,25,36,49,64,81]7.importnumpyasnp

importmatplotlib.pyplotasplt

fromscipy.spatial.distanceimportcdist

#设置字体

plt.rcParams['font.family']='SimHei'

#身高和体重数据

data=np.array([[160,49],[159,46],[160,41],[169,49],[162,50],[165,48],[165,52],[154,43],[160,45],[160,44],[157,43],[163,50],[161,51],[158,45],[159,48],[161,48]])

#最短距离法聚类函数

defsingle_linkage_clustering(data,k):

n=data.shape[0]

clusters=[[i]foriinrange(n)]#初始化每个样本为一个簇

whilelen(clusters)>k:

#计算距离矩阵

distances=cdist(data,data)

np.fill_diagonal(distances,np.inf)#将对角线元素设置为无穷大,避免自身距离为最小距离

min_distance=np.min(distances)#找到最小距离

#找到最小距离对应的簇

cluster1,cluster2=np.unravel_index(np.argmin(distances),distances.shape)

merged_cluster=clusters[cluster1]+clusters[cluster2]#合并簇

#更新簇列表和数据

clusters[cluster1]=merged_cluster

clusters.pop(cluster2)

data=np.delete(data,cluster2,axis=0)

returnclusters

#最长距离法聚类函数

defcomplete_linkage_clustering(data,k):

n=data.shape[0]

clusters=[[i]foriinrange(n)]#初始化每个样本为一个簇

whilelen(clusters)>k:

#计算距离矩阵

distances=cdist(data,data)

np.fill_diagonal(distances,-np.inf)#将对角线元素设置为负无穷,避免自身距离为最大距离

max_distance=np.max(distances)#找到最大距离

#找到最大距离对应的簇

cluster1,cluster2=np.unravel_index(np.argmax(distances),distances.shape)

merged_cluster=clusters[cluster1]+clusters[cluster2]#合并簇

#更新簇列表和数据

clusters[cluster1]=merged_cluster

clusters.pop(cluster2)

data=np.delete(data,cluster2,axis=0)

returnclusters

#调用最短距离法聚类函数

k=3#聚类数

clusters_single=single_linkage_clustering(data,k)

print("最短距离法聚类结果:")

forclusterinclusters_single:

print([i+1foriincluster])

#绘制最短距离法聚类图

plt.scatter(data[:,1],data[:,0])

forclusterinclusters_single:

cluster_data=data[cluster]

plt.scatter(cluster_data[:,1],cluster_data[:,0])

plt.xlabel("体重(kg)")

plt.ylabel("身高(cm)")

plt.title("最短距离法聚类图")

plt.show()

#调用最长距离法聚类函数

clusters_complete=complete_linkage_clustering(data,k)

print("最长距离法聚类结果:")

forclusterinclusters_complete:

print([i+1foriincluster])

#绘制最长距离法聚类图

plt.scatter(data[:,1],data[:,0])

forclusterinclusters_complete:

cluster_data=data[cluster]

plt.scatter(cluster_data[:,1],cluster_data[:,0])

plt.xlabel("体重(kg)")

plt.ylabel("身高(cm)")

plt.title("最长距离法聚类图")

plt.show()运行结果:最短距离法聚类结果:[1,15,16,5,12,13,2,9,10,14][3,8,11][4,6,7]最长距离法聚类结果:[1,3,7,4,8,11,13,12,5,6,10,14,9,2][15][16]8.importnumpyasnp

fromscipy.spatial.distanceimportcdist

#样本数据集

data=np.array([[2,10],[2,5],[8,4],[5,8],[7,5],[6,4],[1,2],[4,9]])

#初始簇

clusters=[[0],[1],[2],[3],[4],[5],[6],[7]]

#计算质心

centroids=np.array([np.mean(data[cluster],axis=0)forclusterinclusters])

#AGNES算法

whilelen(clusters)>3:

#计算簇与簇之间的距离

distances=cdist(centroids,centroids)

np.fill_diagonal(distances,np.inf)#将对角线元素设置为无穷大,避免自身距离为最小距离

#找到距离最近的两个簇

cluster1,cluster2=np.unravel_index(np.argmin(distances),distances.shape)

merged_cluster=clusters[cluster1]+clusters[cluster2]#合并簇

#更新簇列表和质心

clusters[cluster1]=merged_cluster

clusters.pop(cluster2)

centroids=np.array([np.mean(data[cluster],axis=0)forclusterinclusters])

#输出最终的簇

forclusterinclusters:

print([i+1foriincluster])运行结果:[1,4,8][2,7][3,5,6]第六章关联规则习题1.给出一个小例子表明强关联规则中的项实际上可能是负相关的。答案:一个关联规则同时满足最小支持度和最小置信度,我们称之为强关联规则。但是,强关联规则中的项有时存在负相关关系。如下例所示:假设最小支持度为40%,最小置信度为60%。A->B是一个强关联规则,因为其满足最小支持度65/150=43.3%且满足最小置信度65/100=61.9%。然而,A和B之间的提升度为lift(A->B)=0.433/(0.700×0.667)=0.928<1,故A和B之间的出现是负相关的。2.讨论题略,3.考虑下面的频繁3项集的集合:{1,2,3}、{1,2,4}、{1,2,5}、{1,3,4}、{1,3,5}、{2,3,4}、{2,3,5}、{3,4,5},假定数据集中只有5个项,列出Apriori算法的候选产生过程得到的所有候选4项集,以及剪枝后剩下的所有候选4项集。答案:所有候选4项集为:{1,2,3,4},{1,2,3,5},{1,2,4,5},{1,3,4,5},{1,2,3,5},{2,3,4,5}。剪枝后剩下的所有候选4项集为:{1,2,3,4},{1,2,3,5},{1,3,4,5},{1,2,3,5},{2,3,4,5}。其中侯选4项集{1,2,4,5}被剪枝的原因是,其子集{2,4,5}不是频繁3项集。4.下表为某超市事务数据,其中hotdog表示含热狗的事务,hotdog表示不包含热狗的事务,hamburger表示包含汉堡包的事务,hamburger表示不包含汉堡包的事务。假设最小支持度阈值minsup=20%,最小置信度阈值mincon=70%,试问热狗和汉堡包的关联性如何?答案:由于支持度为2000/5000=40%,置信度为2000/3000=66.7%。因此,该关联规则不是强关联规则。同时,提升度lift(hotdog->hamburgers)=0.4/(0.5*0.6)=1.33>

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论