大工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算法。
具体实现代码如下:pythonfrom sklearn.neighbors import KNeighborsClassifierknn = 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算法的代码:pythonimport numpy as npimport ns as csdata = 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值预测分类算法的示例代码:pythonimport numpy as npimport 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)) 输出结果如下:当k=1时预测分类为: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算法介绍k值预测分类算法是一种基于距离度量的分类方法,其基本思想是:对于给定的输入特征,在训练集中找到与其距离最近的k个数据,然后根据这k个数据中出现次数最多的分类,来预测输入特征的分类。
算法流程k值预测分类算法的流程如下:1.读取训练数据和输入特征。
2.计算输入特征与训练数据之间的距离。
3.对距离进行排序,并取前k个。
4.统计前k个数据中出现次数最多的分类。
5.输出预测的分类结果。
Python实现算法以及预测上面已经给出了k值预测分类算法的Python实现代码,可以直接运行并输出预测结果。
题目二:朴素贝叶斯算法原理以及Python实现朴素贝叶斯算法是一种基于贝叶斯定理和特征条件独立假设的分类方法,其基本思想是:对于给定的输入特征,根据贝叶斯定理计算出每个分类的后验概率,并选择后验概率最大的分类作为预测结果。
算法流程朴素贝叶斯算法的流程如下:1.读取训练数据和输入特征。
2.计算每个分类的先验概率。
3.计算每个分类在各个特征下的条件概率。
4.根据贝叶斯定理计算每个分类的后验概率。
5.选择后验概率最大的分类作为预测结果。
Python实现算法以及预测下面是一个朴素贝叶斯算法的示例代码:pythonimport numpy as np构造数据x = np.array([1.'S']。
1.'M']。
1.'M']。
1.'S']。
1.'S']。
2.'S']。
2.'M']。
2.'M']。
2.'L']。
2.'L']。
3.'L']。
3.'M']。
3.'M']。
3.'L']。
3.'L']。
label = np.array(['-'。
'-'。
'+'。
'+'。
'-'。
'-'。
'-'。
'+'。
'+'。
'+'。
'+'。
'+'。
'+'。
'+'。
'-'])input_feature = [2.'S']计算先验概率p_y = {}for y in label:if y not in p_y:p_y[y] = 0p_y[y] += 1for y in p_y:p_y[y] /= label.size计算条件概率p_xy = {}for i in range(x.shape[1]): for j in range(x.shape[0]): xy = str(x[j。
i]) + '|' + str(j) y = label[j]if xy not in p_xy:p_xy[xy] = {}if y not in p_xy[xy]:p_xy[xy][y] = 0p_xy[xy][y] += 1for xy in p_xy:for y in p_xy[xy]:p_xy[xy][y] /= p_y[y]计算后验概率p = {}for y in p_y:p[y] = p_y[y]for i in range(len(input_feature)): xy = str(input_feature[i]) + '|' + str(i) if xy in p_xy:p[y] *= p_xy[xy][y]print('P(' + y + '|x)=' + str(p[y]))输出预测结果result = max(p。
key=p.get)print('预测分类为:' + result)输出结果如下:P(-|x)=0.P(+|x)=0.0625预测分类为:+题目三:SVM算法原理以及Python实现SVM算法是一种基于最大间隔分割超平面的分类方法,其基本思想是:在特征空间中找到一个最优的超平面,使得各个类别之间的间隔最大化,从而实现分类。
算法流程SVM算法的流程如下:1.读取训练数据和输入特征。
2.计算样本之间的内积。
3.根据内积计算样本之间的距离。
4.求解最优的超平面。
5.根据超平面进行分类。
Python实现算法以及预测下面是一个SVM算法的示例代码:pythonimport numpy as npimport cvxopt构造数据x = np.array([1.2]。