分类算法——K-邻近

K-邻近分类方法通过计算待分类目标和训练样例之间的距离,选取与待分类目标距离最近的K个训练样例,根据K个选取样例中占多数的类别来确定待分类样例。距离类型有很多,大致有欧式距离,曼哈顿距离,切比雪夫距离,闽科夫斯基距离,标准化欧式距离,马氏距离,夹角余弦,汉明距离,相关系数,信息熵等。

KNN算法的具体步骤:

1、计算待分类目标与每个训练样例之间的距离dist;

2、对dist进行排序,选择前K个训练样例作为K-最邻近样例;

3、统计K个训练样例中每个类别出现的频次;

4、选择出现频次最大的类别作为待分类目标的类别。

依据上述流程,给出实现代码:

from numpy import *
import operator
def knn(x,transet,labels,k,type = 0):
    ‘‘‘
    k-近邻算法
    :param x:待分类特征
    :param transet: 已知特征
    :param labels: 特征标签
    :param k:
    :param type:
        距离类型:0:欧式,1:曼哈顿,2:切比雪夫,3:闽科夫斯基,4:标准化欧式,5:马氏,6:夹角余弦
                  7:汉明距离,8:杰卡德,9:相关系数,11:信息熵
    :return:
    ‘‘‘
    distances = zeros_like(labels)
    if type == 0:
        tranSize = shape(transet)
        diffMat = tile(x,(tranSize[0],1)) - transet
        distances = ((diffMat**2).sum(axis=1))**0.5
    #TODO:根据不同的类型计算距离
    sortedIndex = distances.argsort()
    classCount = {}
    for i in labels[sortedIndex[:k]]:
        classCount[i] = classCount.get(i,0) + 1
    sortedClassCount = sorted(classCount.items(),key=operator.itemgetter(1),reverse=True)
    return sortedClassCount;

KNN算法的优点:理论简单,实现简单。

KNN算法的缺点:1)对K值的选取依赖大,不同的K值选取可能产生不同的结果。可以通过实验选取分类误差最小的K值。2)由于需要计算特征的距离,所以需要特征进行量化和标准化。

时间: 2024-10-05 17:33:03

分类算法——K-邻近的相关文章

机器学习(四) 机器学习(四) 分类算法--K近邻算法 KNN (下)

六.网格搜索与 K 邻近算法中更多的超参数 七.数据归一化 Feature Scaling 解决方案:将所有的数据映射到同一尺度 八.scikit-learn 中的 Scaler preprocessing.py import numpy as np class StandardScaler: def __init__(self): self.mean_ = None self.scale_ = None def fit(self, X): """根据训练数据集X获得数据的均

分类算法——k最近邻算法(Python实现)(文末附工程源代码)

kNN算法原理 k最近邻(k-Nearest Neighbor)算法是比较简单的机器学习算法.它采用测量不同特征值之间的距离方法进行分类,思想很简单:如果一个样本在特征空间中的k个最近邻(最相似)的样本中大多数属于某一个类别,则该样本也属于这个类别. kNN算法的步骤 第一阶段:确定k值(指最近的邻居的个数),一般是一个奇数 第二阶段:确定距离度量公式.文本分类一般使用夹角余弦,得出待分类数据点和所有已知类别的样本点,从中选择距离最近的k个样本: 第三阶段:统计这k个样本点钟各个类别的数量 kN

最基础的分类算法-k近邻算法 kNN简介及Jupyter基础实现及Python实现

k-Nearest Neighbors简介 对于该图来说,x轴对应的是肿瘤的大小,y轴对应的是时间,蓝色样本表示恶性肿瘤,红色样本表示良性肿瘤,我们先假设k=3,这个k先不考虑怎么得到,先假设这个k是通过程序员经验得到. 假设此时来了一个新的样本绿色,我们需要预测该样本的数据是良性还是恶性肿瘤.我们从训练样本中选择k=3个离新绿色样本最近的样本,以选取的样本点自己的结果进行投票,如图投票结果为蓝色:红色=3:0,所以预测绿色样本可能也是恶性肿瘤. 再比如 此时来了一个新样本,我们选取离该样本最近

机器学习---K最近邻(k-Nearest Neighbour,KNN)分类算法

K最近邻(k-Nearest Neighbour,KNN)分类算法 1.K最近邻(k-Nearest Neighbour,KNN) K最近邻(k-Nearest Neighbour,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一.该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别.用官方的话来说,所谓K近邻算法,即是给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的K个实

后端程序员之路 12、K最近邻(k-Nearest Neighbour,KNN)分类算法

K最近邻(k-Nearest Neighbour,KNN)分类算法,是最简单的机器学习算法之一.由于KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为适合.该算法的功能有:从目标区域抽样计算欧式或马氏距离:在交叉验证后的RMSE基础上选择启发式最优的K邻域:计算多元k-最近邻居的距离倒数加权平均. 机器学习(一)——K-近邻(KNN)算法 - oYabea - 博客园http://www.cnblo

《机器学习实战》学习笔记一K邻近算法

 一. K邻近算法思想:存在一个样本数据集合,称为训练样本集,并且每个数据都存在标签,即我们知道样本集中每一数据(这里的数据是一组数据,可以是n维向量)与所属分类的对应关系.输入没有标签的新数据后,将新数据的每个特征(向量的每个元素)与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相似的的分类标签.由于样本集可以很大,我们选取前k个最相似数据,然后统计k个数据中出现频率最高的标签为新数据的标签. K邻近算法的一般流程: (1)收集数据:可以是本地数据,也可以从网页抓取. (2)准备数

k邻近算法

3.1k邻近算法 给定一个训练数据集,对于新的输入实例,在训练数据集中找到该实例最近的K 的实例,这k个实例的多数属于某个类,酒吧该输入实例分为这个类. 算法3.1 输入:训练数据集 其中xi为实例的特征向量,yi为实例的类别, 输出:实例x的类y (1)根据给定的距离度量,在训练集T中找出与x最邻近的k个点,涵盖这个K个点的x的邻域记做Nk(x): (2)在Nk(x)中根据分类决策规则(如多数表决决定x的类别y): I为指示函数,当yi=cj时,I为1,否则I为0. k邻近算法的特殊情况是k=

KNN邻近分类算法

K邻近(k-Nearest Neighbor,KNN)分类算法是最简单的机器学习算法了.它采用测量不同特征值之间的距离方法进行分类.它的思想很简单:计算一个点A与其他所有点之间的距离,取出与该点最近的k个点,然后统计这k个点里面所属分类比例最大的,则点A属于该分类. 下面用一个例子来说明一下: 电影名称 打斗次数 接吻次数 电影类型 California Man 3 104 Romance He’s Not Really into Dudes 2 100 Romance Beautiful Wo

数学建模:2.监督学习--分类分析- KNN最邻近分类算法

1.分类分析 分类(Classification)指的是从数据中选出已经分好类的训练集,在该训练集上运用数据挖掘分类的技术,建立分类模型,对于没有分类的数据进行分类的分析方法. 分类问题的应用场景:分类问题是用于将事物打上一个标签,通常结果为离散值.例如判断一副图片上的动物是一只猫还是一只狗,分类通常是建立在回归之上. 本文主要讲基本的分类方法 ----- KNN最邻近分类算法  KNN最邻近分类算法 ,简称KNN,最简单的机器学习算法之一. 核心逻辑:在距离空间里,如果一个样本的最接近的K个邻

K近邻分类算法实现 in Python

K近邻(KNN):分类算法 * KNN是non-parametric分类器(不做分布形式的假设,直接从数据估计概率密度),是memory-based learning. * KNN不适用于高维数据(curse of dimension) * Machine Learning的Python库很多,比如mlpy(更多packages),这里实现只是为了掌握方法 * MATLAB 中的调用,见<MATLAB分类器大全(svm,knn,随机森林等)> * KNN算法复杂度高(可用KD树优化,C中可以用