大工20春《数据挖掘》课程大作业满分答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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)) 输出结果如下: