《大工20秋《数据挖掘》大作业题目及要求.docx》由会员分享,可在线阅读,更多相关《大工20秋《数据挖掘》大作业题目及要求.docx(5页珍藏版)》请在三一办公上搜索。
1、大国理2大学网络教育学院数据挖掘课程大作业题目:Krm算法原理以及PythOn实现第一大题:讲述自己在完成大作业过程中遇到的困难,解决问题的思路,以及相关感想,或者对这个项目的认识,或者对PythoIl与数据挖掘的认识等等,300500字。数据挖掘是计算机专业一门重要的专业课。本课程是大数据背景下现代统计数据分析不可缺少的重要工具。通过本课程的学习,培养学生的数据分析技能,熟悉和掌握大数据信息提取与结果分析,培养适应社会数据分析岗位需求的专业人才。课程的重点教学内容为:网络爬虫与数据抽取、数据分析与挖掘算法关联规则、数据分析与挖掘算法分类与预测、数据分析与挖掘算法一聚类等。课程任务主要是让学生
2、在学习期间掌握数据挖掘理论以及如何用数据挖掘来解决实际问题,了解某个数据挖掘解决方案对特定问题是否切实可行,学生能够借助软件工具进行具体数据的挖掘分析。本课程为计算机相关专业的基础课程,其内容涵盖了数据挖掘的相关知识。课程在阐述Python理论知识基础上,增加了数据分析和处理等知识内容,从而使学生加深对数据挖掘的理解。课程安排内容难易适中,学生可以通过实际项目加深对数据挖掘系统结构的整体流程了解。第二大题:完成下面一项大作业题目。2020秋数据挖掘课程大作业注意:从以下5个题目中任选其一作答。题目一:Knn算法原理以及Python实现要求:文档用使用WOrd撰写即可。主要内容必须包括:(1)算
3、法介绍。(2)算法流程。(3) PythOn实现算法以及预测。(4)整个Word文件名为姓名奥鹏卡号学习中心(如戴卫东101410013979浙江台州奥鹏学习中心1VlP)答:一、knn算法介绍L介绍邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表。kNN算法的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。该方法在确定分类决策上只依据最邻近的一个或者几个样本的
4、类别来决定待分样本所属的类别。kNN方法在类别决策时,只与极少量的相邻样本有关。由于kNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,kNN方法较其他方法更为适合。2 .核心概括主要的思想是计算待分类样本与训练样本之间的差异性,并将差异按照由小到大排序,选出前面K个差异最小的类别,并统计在K个中类别出现次数最多的类别为最相似的类,最终将待分类样本分到最相似的训练样本的类中。与投票(Vote)的机制类似。二、kirn算法流程L准备数据,对数据进行预处理3 .选用合适的数据结构存储训练数据和测试元组4 .设定参数,如k5 .
5、维护一个大小为k的的按距离由大到小的优先级队列,用于存储最近邻训练元组。随机从训练元组中选取k个元组作为初始的最近邻元组,分别计算测试元组到这k个元组的距离,将训练元组标号和距离存入优先级队列6 .遍历训练元组集,计算当前训练元组与测试元组的距离,将所得距离L与优先级队列中的最大距离LmaX7 .进行比较。若L=Lmax,则舍弃该元组,遍历下一个元组。若LLmax,删除优先级队列中最大距离的元组,将当前训练元组存入优先级队列。8 .遍历完毕,计算优先级队列中k个元组的多数类,并将其作为测试元组的类别。9 .测试元组集测试完毕后计算误差率,继续设定不同的k值重新进行训练,最后取误差率最小的k值。
6、三、代码实现使用python程序模拟KNN算法CreatedonSatJun2218:38:222019author:zhenimportnumpyasnpimportcollectionsascsdata二np.array(203,1,126,1,89,1,70,1,196,2,211,2,221,2,311,3,271,3Dfeature=data:,0#特征print(feature)label-data:,-1#结果分类print(label)PredictPoint=200#预测数据Print(预测输入特征为:+str(predictPoint)distance-list(map(l
7、ambdax:abs(predictPoint-x),feature)#各点到预测点的距离print(distance)sortindex=np.argsort(distance)#排序,返回排序后各数据的原始下标print(sortindex)SortLabel=labelsortindex#根据下标重新进行排序print(sortLabel)#k=3#设置k值大小为3forkinranged,label,size+l):result=cs.Counter(sortLabelO:k).most_common(l)00#根据k值计算前k个数据中出现次数最多的分类,即为预测的分类Print(当k
8、=+str(k)+时预测分类为:+str(result)四、结果2031268970196211221311271111122233预测输入特征为:2003,74,111,130,4,11,21,111,71045681273122231131当k=l时预测分类为:1当k=2时预测分类为:1当k=3时预测分类为:2当k=4时预测分类为:2当k=5时预测分类为:2当k=6时预测分类为:2当k=7时预测分类为:1当k=8时预测分类为:1当k=9时预测分类为:1总结L根据训练数据和结果可知,当k较小时【比如本次当k=l,若训练数据存在异常数据时容易出现预测错误的情况,因此一般K值都不能太小!2 .当k值较大时,某个分类的训练数据越多,预测成此分类的可能性越大,因此,训练数据要先根据分类进行再平衡!3 .一般k值的选择与分类数量有关,分类数量越大,k一般也越大,一般为取值为:type2type之间!4 .一般k值的选择和训练数据的大小有关,可以取值为训练数据的平方根左右为宜!