K-邻近算法(kNN)python3.X

原创 2016年08月28日 16:17:44

k-邻近算法(kNN)学习笔记

  • 机器学习主要任务
    在机器学习(Machine Learning)的主要任务就是实现数据的分类,通过给算法输入大量已分类的数据作为算法训练集,使机器能够找到特征与目标变量之间的关系,对未知特征的数据做出正确的判断,这就是分类。机器学习的另外一个重要的任务就是回归,用来预测数值型数据。

  • kNN(K-邻近算法)概念
    k-邻近算法是给算法一个训练样本集,每个样本集都给出了明确的特征和明确的标签。然后输入需要分类的数据,利用算法计算出该数据和样本集各个点之间的距离,取前k个距离最近的点,这就是k-邻近算法的k的含义。最后选择k个最相似数据中出现最多的类型作为新数据的数据类型,这样就是实现了数据分类。

  • k-邻近算法
    在输入训练样本集后,输入需要分类的数据,计算得到该数据与样本集各个点的距离集合,然后对这些数据进行排序。然后选取前k个距离数据(也就是和训练样本集最相似的K个点),得到其中类型出现最多的类型,得到该新数据的分类。代码如下:

    1. 数据输入
      该程序利用 readlines() 读取文本文件,里面包含了训练样本集的特征(程序有3个特征值)和目标类型,然后分别存储在两个列表中。
def file2matrix(filename):
    fr=open(filename)
    arrayOLines=fr.readlines() #读取文件
    numberOfLines=len(arrayOLines)
    retuanMat=zeros((numberOfLines,3))#存储特征数据
    classLabelVector=[]
    index =0
    for line in arrayOLines:
        line =line.strip()
        listFromLine=line.split('\t')
        retuanMat[index,:]=listFromLine[0:3]
        classLabelVector.append(listFromLine[3])#存储类型数据
        index+=1
    return retuanMat,classLabelVector

2.k-邻近主程序
先计算预测点和训练数据点的全部距离,然后进行排序,选取最相近的前k个点。

def classify0 (inX, dataSet, labels, k):
    dataSetSize=dataSet.shape[0]
    diffMat=tile(inX, (dataSetSize,1))-dataSet
    sqDiffMat=diffMat**2
    sqDistance=sqDiffMat.sum(axis=1)
    distances=sqDistance**0.5
    sortedDistIndicies=distances.argsort()
    #以上算法为计算距离算法和排序算法
    classCount={}
    for i in range(k):
        voteIlabel=labels[sortedDistIndicies[i]]
 #选择距离最短的k个点classCount[voteIlabel]=classCount.get(voteIlabel,0)+1
sortedClassCount=sorted(classCount.items(),key=operator.itemgetter(1),reverse=True)
    return sortedClassCount[0][0]

3.读取文件的yield用法
在函数中含有yield的函数叫做生成器。如下例子:

def count(n):
    print("_1")
    while n>0:
        print("_2")
        yield n
        n-=1
        print("_3")

>>>count(5)#yield生成函数序列,返回一个“generator”类型
<generator object count at 0x04D5FF58>
>>>c=count(5)
>>>c.__next__()#生成器函数只有在调用__next()__方法的时候才开始执行函数里面的语句
_1
_2
5
>>>c.__next__()
_3
_2
4

上面例子在python3.4中全部编译通过,yield生成函数在next()方法下开始执行,遇到yield时停止运行,下次调用next()方法时从yield开始继续执行。

  • 调用readlines()读取数据是一次读取整个文件,如果内存太小那么电脑就会卡顿的很厉害,所以就需要考虑利用上面的yield生成器来读取数据。可以用以下代码实现:
def open_txt(filename)
    with open(filename,'r+') as f:
    line=f.readline()
    while line:
            yield line.strip()
            line=f.readline()

KNN(K最邻近)算法

“KNN(K最邻近)算法”——数据分析、数据挖掘   (2012-12-01 20:06:16) 转载▼ 标签:  knn   最邻近算法   文...
  • u014261987
  • u014261987
  • 2014年11月18日 14:50
  • 1874

机器学习实战之——KNN k-邻近算法

主要内容 l  K-邻近分类算法——>使用距离测量的方法对物品分类 l  从文本文件中解析和导入数据 l  使用Matplotlib创建扩散图 l  归一化数值   1.    算法概述 这个算法非常...
  • u014006007
  • u014006007
  • 2016年07月11日 17:45
  • 1196

4.1 最邻近规则分类(K-Nearest Neighbor)KNN算法

1968年提出的分类算法 输入基于示例的学习(instance-based learning),懒惰学习(lazy learning) 例子: 算法详述步骤: ...
  • zxllll8898
  • zxllll8898
  • 2016年11月29日 20:19
  • 415

监督学习_最近邻算法(KNN, k-近邻算法)

在模式识别领域中,最近邻居法(KNN算法,又译K-近邻算法)是将在特征空间中最接近的训练样本进行分类的方法。 最近邻居法采用向量空间模型来分类,概念为相同类别的案例,彼此的相似度高,而可以借由计算与...
  • yaling521
  • yaling521
  • 2015年01月28日 16:34
  • 1431

K-邻近算法(KNN)

分类解决离散问题,回归解决连续问题 导引: 如何进行电影分类 众所周知,电影可以按照题材分类,然而题材本身是如何定义的?由谁来判定某部电影属于哪 个题材?也就是说同一题材的电影具有哪些公...
  • qq_33259548
  • qq_33259548
  • 2017年06月25日 20:09
  • 86

机器学习 - K-近邻算法(KNN)

基于实例的学习方法中,K-近邻算法算是最基本的了。K-近邻算法嘉定所有实例对应与n维空间中的点,一个实例的最近邻是根据标准欧氏距离定义的。例如把x表示为一个特征向量:< a1(x), a2(x), a...
  • chenfs1992
  • chenfs1992
  • 2016年03月13日 00:38
  • 809

《机器学习实战》k最近邻算法(K-Nearest Neighbor,Python实现)

一、什么是看KNN算法? 二、KNN算法的一般流程 三、KNN算法的Python代码实现 一:什么是看KNN算法?         kNN算法全称是k-最近邻算法(K-Nearest Neighb...
  • Gamer_gyt
  • Gamer_gyt
  • 2015年08月11日 12:35
  • 9516

【机器学习】k-近邻算法(kNN) 学习笔记

【机器学习】k-近邻算法(kNN) 学习笔记标签(空格分隔): 机器学习kNN简介kNN算法是做分类问题的。思想如下:KNN算法的思想总结一下:就是在训练集中数据和标签已知的情况下,输入测试数据,将测...
  • fuxuemingzhu
  • fuxuemingzhu
  • 2017年04月03日 19:31
  • 404

K-Nearest Neighbor(KNN) 最邻近分类算法及Python实现方式

K-Nearest Neighbor 最邻近分类算法: 简称KNN,最简单的机器学习算法之一,核心思想俗称“随大流”。是一种分类算法,基于实例的学习(instance-based learning)...
  • jerry81333
  • jerry81333
  • 2016年11月12日 05:40
  • 1862

《机器学习实战》学习笔记:k-近邻算法的两个应用场景

之前学习了k-近邻算法的实现后,参考《机器学习实战》中的例子进行了k-近邻算法的测验,主要测试了针对约会网站和手写识别系统的数据分类,这两个测试使用的是《机器学习实战》提供的数据集。...
  • liyuefeilong
  • liyuefeilong
  • 2015年09月01日 23:05
  • 4784
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:K-邻近算法(kNN)python3.X
举报原因:
原因补充:

(最多只允许输入30个字)