大工20春《数据挖掘》课程大作业满分答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档