MIA------KNN

2024-06-18 18:18
文章标签 knn ------ mia

本文主要是介绍MIA------KNN,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

#encoding:utf-8
'''
Created on 2015年4月28日@author: zju
'''from numpy import *
import operator
def createDataSet():group = array([[1.0, 1.1], [1.0, 1.0], [0, 0], [0, 0.1]])labels = ['A', 'A', 'B', 'B']return group, labels
#inX: 用于分类的输入向量
#dataSet: 训练样本集
#labels: 标签向量
#k: 表示用于选择最近邻居的数目
#labels的元素数目和矩阵dataSet的行数相同
def classify0(inX, dataSet, labels, k):#dataSet矩阵的行数dataSetSize = dataSet.shape[0]#扩充inX为dataSet行一列的矩阵,才可以与训练数据矩阵dataSet作减法操作diffMat = tile(inX, (dataSetSize, 1)) - dataSet#矩阵diffMat中的每个元素的平方运算后的矩阵为sqDiffMatsqDiffMat = diffMat ** 2#矩阵sqDiffMat每一行的元素之和,运算之后的矩阵为sqDistancessqDistances = sqDiffMat.sum(axis = 1)#矩阵sqDistances中的每个元素的0.5次方,运算之后的矩阵为distancesdistances = sqDistances ** 0.5#到此,欧式距离计算完毕!#选取样本数据集中前k个最相似的数据sortedDistIndices = distances.argsort()classCount = {}for i in range(k):voteIlabel = labels[sortedDistIndices[i]]#get(key,default)classCount[voteIlabel] = classCount.get(voteIlabel, 0) + 1#最后,选在k个最相似数据中出现次数最多的分类,作为新数据的分类#使用operator模块的itemgetter方法,按照第二个元素的次序对元祖进行排序#此处的排序为逆序,即从大到小,最后返回发生频率最高的元素标签sortedClassCount = sorted(classCount.iteritems(),key = operator.itemgetter(1), reverse = True)return sortedClassCount[0][0]
#file2matrix和readFile完全相同的代码,但是前者不能运行,神奇!!!
def file2matrix(filename):fr = open(filename)arrayOfLines = fr.readline()numberOfLines = len(arrayOfLines)returnMat = zeros((numberOfLines, 3))classLabelVector = []index = 0for line in arrayOfLines:line = line.strip()listFromLine = line.split('\t')returnMat[index,:] = listFromLine[0:3]classLabelVector.append(int(listFromLine[-1]))index += 1return returnMat, classLabelVectordef readFile(filename, col):fr = open(filename)array = fr.readlines() #以文件中的每行为一个元素,形成一个list列表num = len(array)returnMat = zeros((num, col))#初始化元素为0的,行号数个列表,其中每个元素仍是列表,元素数是3,在此表示矩阵index = 0 classLabelVector = []for line in array:line = line.strip()#去掉一行后的回车符号linelist = line.split('\t')#将一行根据分割符,划分成多个元素的列表returnMat[index,:] = linelist[0:col]#向矩阵赋值,注意这种赋值方式比较笨拙classLabelVector.append(int(linelist[-1]))index +=1return returnMat,classLabelVectordef autoNorm(dataSet):minVals = dataSet.min(0)maxVals = dataSet.max(0)ranges = maxVals - minValsnormDataSet = zeros(shape(dataSet))m = dataSet.shape[0]normDataSet = dataSet - tile(minVals, (m, 1))normDataSet = normDataSet / tile(ranges, (m, 1))return normDataSet, ranges, minVals  def datingClassTest(k):hoRatio = 0.10filename = 'D:/XX/book/data/datingTestSet.txt'datingDataMat, datingLabels = readFile(filename, 3)normDataSet, ranges, minVals = autoNorm(datingDataMat) m = normDataSet.shape[0]numTestVals = int(m * hoRatio)errorCount = 0for i in range(numTestVals):testLabels = classify0(normDataSet[i,:], normDataSet[numTestVals:m,:], datingLabels[numTestVals:m], k)if testLabels != datingLabels[i]:errorCount += 1print 'The total error rate is: %f' % (errorCount / float(numTestVals))def classifyPerson():resultList = ['not at all', 'in small doses', 'in large doses'] percentTats = float(raw_input(\"percentage of time spent playing videl games?"))ffMiles = float(raw_input(\"frequent filter miles earned per year?"))iceCream = float(raw_input("liters of ice cream consumed per year?"))datingDataMat, datingLabels = readFile('D:/XX/book/data/datingTestSet.txt', 3)normMat, ranges, minVals = autoNorm(datingDataMat)inArr = array([ffMiles, percentTats, iceCream])classifierResult = classify0((inArr-\minVals)/ranges, normMat, datingLabels, 3)print "You will probably like this person: ", \resultList[classifierResult - 1]

调用classifyPerson()

结果如下:



这篇关于MIA------KNN的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1072749

相关文章

安卓玩机工具------小米工具箱扩展工具 小米机型功能拓展

小米工具箱扩展版                     小米工具箱扩展版 iO_Box_Mi_Ext是由@晨钟酱开发的一款适用于小米(MIUI)、多亲(2、2Pro)、多看(多看电纸书)的多功能工具箱。该工具所有功能均可以免root实现,使用前,请打开开发者选项中的“USB调试”  功能特点 【小米工具箱】 1:冻结MIUI全家桶,隐藏状态栏图标,修改下拉通知栏图块数量;冻结

机器学习--KNN算法

knn算法针对有监督学习,分为2种:聚类和回归 第1种:聚类 #导包(聚类)from sklearn.neighbors import KNeighborsClassifier#构建数据x = [[3],[6],[8]]y=[3,7,6]#实例化模型knn=KNeighborsClassifier(n_neighbors=1)#训练knn.fit(x,y)#预测print(

redis 实现单位时间内错误记录 时间到key值就被清除------最近脑子不好使觉得还是写个博客试试

直接在客户端操作的, 所以需要redis的简单命令  去对比JAVA客户端jedis的命令就行   添加---set     格式 set  key  value  EX time(秒)   如果这个time不添加的话 ,那默认就是 永久 获取--get    格式 get key  ---查看剩余时间    格式 TTL key ---实现key实现自增: inrc key

【数据结构】LinkedList ------ java实现

知识框架图:   LinkedList是一种常用的数据结构。底层是一个双向链表。每个节点包含数据以及指向前一个节点和后一个节点的引用。    一:LinkedList的使用    1.1 LinkedList的构造方法 方法 解释LinkedList() 无参构造public LinkedList(Collection<? extends E> c) 使用其他集合容器中

Linux程序设计读书笔记------入门

第一章 入门   1:什么是Unix Unix是Open Group管理的一个商标,它指的是遵循特定规范的计算机操作系统 2:什么是Linux Linux是一个可以自由发布的类Unix内核实现,他是一个操作系统的底层核心 3:Linux应用程序表现为两种特殊类型的文件:可执行文件和脚本文件 4:Linux文本编辑器:Vim,Emacs等 5:库文件   1:静态库:.a   2

NLP从零开始------文本中阶处理之序列到序列模型(完整版)

1. 序列到序列模型简介         序列到序列( sequence to sequence, seq2seq) 是指输入和输出各为一个序列(如一句话) 的任务。本节将输入序列称作源序列,输出序列称作目标序列。序列到序列有非常多的重要应用, 其中最有名的是机器翻译( machine translation), 机器翻译模型的输入是待翻译语言(源语言) 的文本,输出则是翻译后的语言(目标语言)

KNN-机器学习实战系列(一)

开门见山,本文单说KNN: 作为机器学习实战书籍介绍的第一个算法,有一些值得说道的地方: 1:什么是KNN? 机器学习的一些基本知识和概念不加叙述了,直接给出KNN的白话定义:给定M个样本,每个样本均有N个数字衡量的属性,而每个样本均带有自身的标签: 这里,为什么需要数字化定义属性呢?这方便了我们衡量指标的计算,我们可以使用距离这一可用数学表达式实现的概念,来阐述何谓近邻。 而KNN,英

小白入门LLM大模型最牛X教程------上交《动手学大模型应用开发》!

本项目是一个面向小白开发者的大模型应用开发教程,旨在结合个人知识库助手项目,通过一个课程完成大模型开发的重点入门,涵盖了大模型应用开发的方方面面,主要包括: 教程一共有七章内容: 《动手学大模型》是上海交大 更新的系列编程实践教程。从已经跟新的内容来看,侧重安全垂直方向。命名是向他们的学长李沐的《动手学深度学习》课程致敬。 感受下大纲、课件和教程风格: 微调与部署 提示学习与思维

【HDU】5021 Revenge of kNN II 树状数组

传送门:【HDU】5021 Revenge of kNN II 题目分析:【HDU】4995 Revenge of kNN的升级版,这次取消的K<=10的限制。 但是依旧可以做! 首先我们将点按照横坐标从小到大排序,然后对于每次查询,我们先二分距离mid,然后再二分查找在X-mid,X+mid里面有多少数,如果小于K则抬升下界,如果大于K+1则降低上界,如果等于K则直接更新,还有就是正

机器学习项目——基于机器学习(决策树 随机森林 朴素贝叶斯 SVM KNN XGBoost)的帕金森脑电特征识别研究(代码/报告材料)

完整的论文代码见文章末尾 以下为核心内容和部分结果 问题背景 帕金森病(Parkinson’s Disease, PD)是一种常见的神经退行性疾病,其主要特征是中枢神经系统的多巴胺能神经元逐渐丧失,导致患者出现运动障碍、震颤、僵硬等症状。然而,除运动症状外,帕金森病患者还常常伴有一系列非运动症状,其中睡眠障碍是最为显著的非运动症状之一。 脑电图(Electroencephalogram, E