大工20春《数据挖掘》课程大作业满分答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
网络教育学院
《数据挖掘》课程大作业
题目:
姓名:
学习中心:
第一大题:讲述自己在完成大作业过程中遇到的困难,解决问题的思路,以及相关感想,或者对这个项目的认识,或者对Python与数据挖掘的认识等等,300-500字。
《数据挖掘》这门课程是一门实用性非常强的课程,数据挖掘是大数据这门前沿技术的基础,拥有广阔的前景,在信息化时代具有非常重要的意义。数据挖掘的研究领域非常广泛,主要包括数据库系统、基于知识的系统、人工智能、机器学习、知识获取、统计学、空间数据库和数据可视化等领域。学习过程中,我也遇到了不少困难,例如基础差,对于Python基础不牢,尤其是在进行这次课程作业时,显得力不从心;个别算法也学习的不够透彻。在接下来的学习中,我仍然要加强理论知识的学习,并且在学习的同时联系实际,在日常工作中注意运用《数据挖掘》所学到的知识,不断加深巩固,不断发现问题,解决问题。另外,对于自己掌握不牢的知识要勤复习,多练习,使自己早日成为一名合格的计算机毕业生。
第二大题:完成下面一项大作业题目。
2020春《数据挖掘》课程大作业
注意:从以下5个题目中任选其一作答。
题目一:Knn算法原理以及python实现
要求:文档用使用word撰写即可。
主要内容必须包括:
(1)算法介绍。
(2)算法流程。
(3)python实现算法以及预测。
(4)整个word文件名为 [姓名奥鹏卡号学习中心](如
戴卫东101410013979浙江台州奥鹏学习中心[1]VIP )作业提交:
大作业上交时文件名写法为:[姓名奥鹏卡号学习中心](如:戴卫东101410013979浙江台州奥鹏学习中心[1]VIP)
以附件形式上交离线作业(附件的大小限制在10M以内),选择已完成的作业(注意命名),点提交即可。如下图所示。
。
注意事项:
独立完成作业,不准抄袭其他人或者请人代做,如有雷同作业,成绩以零分计!
(一)Knn算法介绍
KNN算法,又叫K最邻近分类算法,是数据挖掘分类技术中最简单的方法之一。所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表。
KNN算法概括来说,就是已知一个样本空间里的部分样本分成几个类,然后,给定一个待分类的数据,通过计算找出与自己最接近的K个样本,由这K个样本投票决定待分类数据归为哪一类。kNN算法在类别决策时,只与极少量的相邻样本有关。由于kNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,kNN方法较其他方法更为适合。
(二)Knn算法流程
如果一个样本在特征空间中的 k 个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。通常 K 的取值比较小,不会超过20。
1、计算测试数据与各个训练数据之间的距离
2、按照升序(从小到大)对距离(欧氏距离)进行排序
3、选取距离最小的前k个点
4、确定前k个点所在类别出现的频率
5、返回前k个点中出现频率最高的类别作为测试数据的分类(三)python实现Knn算法以及预测
1、代码实现
# -*- coding: utf-8 -*-"""
使用python程序模拟KNN算法
Created on Sat Jun 22 18:38:22 2019
@author: zhen"""import numpy as npimport collections as cs
data = np.array([
[203,1],[126,1],[89,1],[70,1],[196,2],[211,2],[221,2],[311,3],[27 1,3]
])
feature = data[:,0] # 特征
print(feature)
label = data[:,-1] # 结果分类
print(label)
predictPoint = 200 # 预测数据
print("预测输入特征为:" + str(predictPoint))
distance = list(map(lambda x : abs(predictPoint - x), feature)) # 各点到预测点的距离print(distance)
sortIndex = np.argsort(distance) # 排序,返回排序后各数据的原始下标
print(sortIndex)
sortLabel = label[sortIndex] # 根据下标重新进行排序
print(sortLabel)
# k = 3 # 设置k值大小为3
for k in range(1,label.size+1):
result = cs.Counter(sortLabel[0:k]).most_common(1)[0][0] # 根据k值计算前k个数据中出现次数最多的分类,即为预测的分类
print("当k=" + str(k) + "时预测分类为:" + str(result))
2、结果
[203 126 89 70 196 211 221 311 271]
[1 1 1 1 2 2 2 3 3]
预测输入特征为:200
[3, 74, 111, 130, 4, 11, 21, 111, 71]
[0 4 5 6 8 1 2 7 3]
[1 2 2 2 3 1 1 3 1]
当k=1时预测分类为:1
当k=2时预测分类为:1
当k=3时预测分类为:2