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

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

答案

网络教育学院《数据挖掘》课程大作业

题目:KNN算法原理及Python实现

姓名:

研究中心:

第一大题:

数据挖掘》是一门实用性非常强的课程,数据挖掘是大数据这门前沿技术的基础,拥有广阔的前景,在信息化时代具有非常重要的意义。数据挖掘的研究领域非常广泛,主要包括数据库系统、基于知识的系统、人工智能、机器研究、知识获取、统计学、空间数据库和数据可视化等领域。在研究过程中,我也遇到了不少困难,例如基础差,对于Python基础不牢,尤

其是在进行这次课程作业时,显得力不从心;个别算法也研究

的不够透彻。在接下来的研究中,我仍然要加强理论知识的研究,并且在研究的同时联系实际,在日常工作中注意运用《数据挖掘》所学到的知识,不断加深巩固,不断发现问题,解决问题。另外,对于自己掌握不牢的知识要勤复,多练,使自己早日成为一名合格的计算机毕业生。

第二大题:

KNN算法介绍

KNN算法,又叫K最邻近分类算法,是数据挖掘分类技术中最简单的方法之一。所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表。KNN算法的基本思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。

KNN算法流程

1.计算测试数据与各个训练数据之间的距离;

2.按照距离的递增关系进行排序;

3.选取距离最小的K个点;

4.确定前K个点所在类别的出现频率;

5.返回前K个点中出现频率最高的类别作为测试数据的预测分类。

Python实现算法及预测

在Python中,我们可以使用sklearn库来实现KNN算法。具体实现代码如下:

python

from sklearn.neighbors import KNeighborsClassifier

knn = KNeighborsClassifier(n_neighbors=k)

knn.fit(X_train。y_train)

y_pred = knn.predict(X_test)

其中,k表示KNN算法中的k值,X_train和y_train分别

表示训练数据的特征和类别,X_test表示测试数据的特征,

y_pred表示预测的分类结果。

作业提交

完成作业后,将文件命名为[姓名奥鹏卡号研究中心](如:戴卫东xxxxxxxx3979浙江台州奥鹏研究中心[1]VIP),并以

附件形式上交离线作业。注意,独立完成作业,不准抄袭其他人或者请人代做,如有雷同作业,成绩以零分计!

KNN算法是一种基于样本空间的分类算法。它通过计算

待分类数据与已知样本之间的距离,找出与自己最接近的K

个样本,由这K个样本投票决定待分类数据归为哪一类。由

于kNN方法主要靠周围有限的邻近的样本,而不是靠判别类

域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,kNN方法较其他方法更为适合。

KNN算法的流程如下:

1、计算测试数据与各个训练数据之间的距离

2、按照升序(从小到大)对距离(欧氏距离)进行排序

3、选取距离最小的前k个点

4、确定前k个点所在类别出现的频率

5、返回前k个点中出现频率最高的类别作为测试数据的

分类。

下面是Python实现KNN算法的代码:

python

import numpy as np

import ns as cs

data = np.array([

203,1],[126,1],[89,1],[70,1],[196,2],[211,2],[221,2],[311,3],[2 71,3]

feature。= data[:,0] #特征

label = data[:,-1] #结果分类

predictPoint = 200 #预测数据

distance = list(map(lambda x : abs(predictPoint - x)。feature)) #各点到预测点的距离

sortIndex = np.argsort(distance) #排序,返回排序后各数据的原始下标

sortLabel = label[sortIndex] #根据下标重新进行排序

print("预测输入特征为:" + str(predictPoint))

print("预测结果为:" +

str(cs.Counter(sortLabel[:5])mon(1)[0][0]))

其中,data为已知样本数据,feature为样本特征,label为样本分类结果,predictPoint为待分类数据,distance为各点到待分类数据的距离,sortIndex为排序后各数据的原始下标,sortLabel为根据下标重新进行排序后的样本分类结果。最终输出预测输入特征为predictPoint的预测结果。

k值预测分类算法

下面是一个k值预测分类算法的示例代码:

python

import numpy as np

import ns as cs

构造数据

x = np.array([203.126.89.70.196.211.221.311.271]) label = np.array([1.1.1.1.2.2.2.3.3])

input_feature = 200

计算距离

dist = np.abs(x - input_feature)

排序并取前k个

sortIndex = np.argsort(dist)

sortLabel = label[sortIndex]

预测分类

for k in range(bel.size + 1):

result = cs.Counter(sortLabel[0:k])mon(1)[0][0]

print("当k=" + str(k) + "时预测分类为:" + str(result)) 输出结果如下:

相关文档
最新文档