这是一个使用knn把特征向量进行分类的demo。

Knn算法的思想简单说就是:看输入的sample点周围的k个点都属于哪个类,哪个类的点最多,就把sample归为哪个类。也就是说,训练集是一些已经被手动打好标签的数据,knn会根据你打好的标签来挖掘同类对象的相似点,从而推算sample的标签。

Knn算法的准确度受k影响较大,可能需要写个循环试一下选出针对不同数据集的最优的k。

至于如何拿到特征向量,可以参考之前的博文。

代码:

#-*- coding: utf-8 -*-
__author__ = 'Rossie'
from numpy import *
import operator'''构造数据'''
def createDataSet():characters=array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])labels=['A','A','B','B']return characters,labels'''从文件中读取数据,将文本记录转换为矩阵,提取其中特征和类标'''
def file2matrix(filename):fr=open(filename)arrayOLines=fr.readlines()numberOfLines=len(arrayOLines)    #得到文件行数returnMat=zeros((numberOfLines,3))   #创建以零填充的numberOfLines*3的NumPy矩阵classLabelVector=[]index=0for line in arrayOLines:       #解析文件数据到列表line=line.strip()listFromLine=line.split('\t')returnMat[index, :]=listFromLine[0:3]classLabelVector.append(listFromLine[-1])index+=1return returnMat,classLabelVector   #返回特征矩阵和类标集合'''归一化数字特征值到0-1范围'''
'''输入为特征值矩阵'''
def 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, minValsdef classify(sample,dataSet,labels,k):dataSetSize=dataSet.shape[0]   #数据集行数即数据集记录数'''距离计算'''diffMat=tile(sample,(dataSetSize,1))-dataSet     #样本与原先所有样本的差值矩阵sqDiffMat=diffMat**2   #差值矩阵平方sqDistances=sqDiffMat.sum(axis=1)    #计算每一行上元素的和distances=sqDistances**0.5  #开方sortedDistIndicies=distances.argsort()   #按distances中元素进行升序排序后得到的对应下标的列表'''选择距离最小的k个点'''classCount={}for i in range(k):voteIlabel=labels[sortedDistIndicies[i]]classCount[voteIlabel]=classCount.get(voteIlabel,0)+1'''从大到小排序'''sortedClassCount=sorted(classCount.items(),key=operator.itemgetter(1),reverse=True)return sortedClassCount[0][0]'''针对约会网站数据的测试代码'''
def datingClassTest():hoRatio=0.20     #测试样例数据比例datingDataMat,datingLabels=file2matrix('datingTestSet1.txt')normMat, ranges, minVals=autoNorm(datingDataMat)m =normMat.shape[0]numTestVecs=int(m*hoRatio)errorCount=0.0k=4for i in range(numTestVecs):classifierResult=classify(normMat[i, : ],normMat[numTestVecs:m, : ],datingLabels[numTestVecs:m],k)print("The classifier came back with: %s, thereal answer is: %s" %(classifierResult, datingLabels[i]))if(classifierResult!= datingLabels [i] ) :errorCount += 1.0print("the total error rate is: %f" % (errorCount/float(numTestVecs)))def main():sample=[0,0]#简单样本测试sampleText = [39948,6.830795,1.213342]#文本中向量样本测试k=3group,labels=createDataSet()label1=classify(sample,group,labels,k)#简单样本的分类结果fileN = "datingTestSet.txt"matrix,label = file2matrix(fileN)label2 =classify(sampleText,matrix,label,k)#文本样本的分类结果print("ClassifiedLabel of the simple sample:"+label1)print("Classified Label of the textsample:"+label2)if __name__=='__main__':main()#datingClassTest()

【深度学习笔记】使用knn实现特征向量分类相关推荐

  1. 一文让你完全弄懂逻辑回归和分类问题实战《繁凡的深度学习笔记》第 3 章 分类问题与信息论基础(上)(DL笔记整理系列)

    好吧,只好拆分为上下两篇发布了>_< 终于肝出来了,今天就是除夕夜了,祝大家新快乐!^q^ <繁凡的深度学习笔记>第 3 章 分类问题与信息论基础 (上)(逻辑回归.Softm ...

  2. 深度学习笔记(13) Softmax分类

    深度学习笔记(13) Softmax分类 1. Softmax 回归 2. 练一个Softmax分类器 1. Softmax 回归 有一种logistic回归的一般形式,叫做 Softmax回归 能在 ...

  3. 一文让你完全弄懂回归问题、激活函数、梯度下降和神经元模型实战《繁凡的深度学习笔记》第 2 章 回归问题与神经元模型(DL笔记整理系列)

    <繁凡的深度学习笔记>第 2 章 回归问题与神经元模型(DL笔记整理系列) 3043331995@qq.com https://fanfansann.blog.csdn.net/ http ...

  4. 深度学习笔记(18) 迁移学习

    深度学习笔记(18) 迁移学习 1. 迁移学习理念 2. 图像识别的迁移学习 3. 语音识别的迁移学习 4. 使用迁移学习的场合 1. 迁移学习理念 深度学习中最强大的理念之一就是: 神经网络可以从一 ...

  5. 深度学习笔记(17) 误差分析(二)

    深度学习笔记(17) 误差分析(二) 1. 使用来自不同分布的数据进行误差分析 2. 数据分布不匹配时的偏差与方差 3. 处理数据不匹配问题 1. 使用来自不同分布的数据进行误差分析 越来越多的团队都 ...

  6. 深度学习笔记(16) 误差分析(一)

    深度学习笔记(16) 误差分析(一) 1. 进行误差分析 2. 清除标注错误的数据 1. 进行误差分析 假设正在调试猫分类器 然后在开发集取得了90%准确率,相当于10%错误 这离希望的目标还有很远 ...

  7. 深度学习笔记(14) 评估指标

    深度学习笔记(14) 评估指标 1. 正交化 2. 单一数字评估指标 3. 满足和优化指标 4. 改变开发/测试集和指标 1. 正交化 搭建建立机器学习系统的挑战之一是,可以尝试和改变的东西太多太多了 ...

  8. 阅读笔记3:基于深度学习的运动想象脑电信号分类算法研究

    1.论文信息 题目:基于深度学习的运动想象脑电信号分类算法研究 作者佟歌 单位:哈尔滨工程大学控制科学与工程 发表时间:201803 2.笔记 2.1 脑电信号采集及预处理 2.1.1脑电信号分析方法 ...

  9. HALCON 21.11:深度学习笔记---分类(10)

    HALCON 21.11:深度学习笔记---分类(10) HALCON 21.11.0.0中,实现了深度学习方法. 本章介绍了如何在训练和推理阶段使用基于深度学习的分类. 基于深度学习的分类是一种对一 ...

  10. HALCON 20.11:深度学习笔记(10)---分类

    HALCON 20.11:深度学习笔记(10)---分类 HALCON 20.11.0.0中,实现了深度学习方法. 本章解释了如何在训练和推理阶段使用基于深度学习的分类. 基于深度学习的分类是一种对一 ...

最新文章

  1. H264码流中SPS PPS
  2. linux下kerberos教程
  3. 中国大陆穷光蛋排行榜---转
  4. iphone开发如何测试?
  5. java中类加载机制、类加载过程和类加载器层次
  6. django form choice
  7. Mybatis入门 使用注解
  8. 清北学堂培训2019.4.4
  9. 【word】为什么word分两栏的最后一页左边一栏没写完跑到右边去了
  10. zepto在整个屏幕中左滑动右滑动
  11. spring定时器详解
  12. python数据透视表怎么存下来_大数据分析如何利用Python创建数据透视表?
  13. 云计算是继互联网计算机后在信息时代,云计算本质是什么?
  14. RuntimeError: Trying to backward through the graph a second time (or directly access saved variable
  15. 高级系统架构师培训笔记
  16. matlab设计误码率,通信原理课程设计报告 数字传输系统误码率测试器的matlab实现及性能分析...
  17. 登陆邮箱的方法有哪些?解析mail163邮箱如何误删恢复?
  18. python计算圆周率近似值_怎样利用python来计算出圆周率π-百度经验
  19. 在3dmax中导入的动画摄像机巡游与主摄像机之间的切换
  20. 对实际电流源中内阻变化的简单分析

热门文章

  1. c++ 调用python2类获取返回值
  2. [Caffe]:关于Eltwise layer
  3. openCV图像矩阵Mat和二维数组的互相转换
  4. 萤石云 服务器错误 10017
  5. 二叉查找树python实现
  6. c++OpenCV操作mp4
  7. 影子系统、沙箱、虚拟机之间的区别
  8. python sendkeys用法_使用python中的sendkeys上载文件将打开一个文件选择器弹出窗口...
  9. java怎么进行静态引用_java – 如何解决“无法对非静态字段或方法进行静态引用”?...
  10. android屏幕适配的目的,Android 不同分辨率下屏幕适配的实战方案与经验总结