精华内容
下载资源
问答
  • k近邻分类器
    千次阅读
    2020-04-26 11:38:27
    #k近邻分类器的简单例子
    from sklearn.neighbors import KNeighborsClassifier
    #创建一组数据x和它对应的标签y:
    x = [[0], [1], [2], [3]]
    y = [0,0,1,1]
    #参数n_neighors设置为3,即使用最近的3个邻居作为分类的依据,其他参数保持默认值,并将创建好的实例赋值给neigh
    neigh = KNeighborsClassifier(n_neighbors=3)
    #调用fit()函数,将训练数据X和标签y送入分类器进行
    neigh.fit(x,y)
    #调用predict()函数,对未知分类样本【1.1】分类,可以
    #直接并将需要分类的数据构造为数组形式作为参数传入,得到分类标签作为返回值
    print(neigh.predict([[1.1]]))
    
    更多相关内容
  • K近邻分类器实现代码 ,正确率高达百分之99.8
  • K 近邻分类器(最近邻分类器)

    千次阅读 2021-11-09 15:46:31
    K 近邻K-Nearest Neighbor, KNN)是一种监督学习算法。KNN是通过测量不同特征值之间的距离进行分类。 二 KNN原理 它的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某...

    一 KNN概述

    K 近邻(K-Nearest Neighbor, KNN)是一种监督学习算法。KNN是通过测量不同特征值之间的距离进行分类。

    二 KNN原理

    它的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别,其中K通常是不大于20的整数。KNN算法中,所选择的邻居都是已经正确分类的对象。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。

    举例说明一下,如下图,绿色圆要被决定赋予哪个类,是红色三角形还是蓝色四方形?如果K=3,由于红色三角形所占比例为2/3,绿色圆将被赋予红色三角形那个类,如果K=5,由于蓝色四方形比例为3/5,因此绿色圆被赋予蓝色四方形类。

     

    由此也说明了KNN算法的结果很大程度取决于K的选择。

         在KNN中,通过计算对象间距离来作为各个对象之间的非相似性指标,避免了对象之间的匹配问题,在这里距离一般使用欧氏距离或曼哈顿距离:

    三 KNN优点 

    1、健壮性强

    2、概念清晰

    3、适用非线性

    4、非高斯数据

    四 KNN算法描述

    就是在训练集中数据和标签已知的情况下,输入测试数据,将测试数据的特征与训练集中对应的特征进行相互比较,找到训练集中与之最为相似的前K个数据,则该测试数据对应的类别就是K个数据中出现次数最多的那个分类,其算法的描述为:

    1)计算测试数据与各个训练数据之间的距离;

    2)按照距离的递增关系进行排序;

    3)选取距离最小的K个点;

    4)确定前K个点所在类别的出现频率;

    5)返回前K个点中出现频率最高的类别作为测试数据的预测分类。

    五 KNNpython代码实现

    举例:

       举个简单的例子,我们可以使用k-近邻算法分类一个电影是爱情片还是动作片。

    已知:爱情片(1,101),爱情片(5,89)

               动作片(108,5),动作片(115,8)

     判断(101,20)属于什么类别的电影?

    python3的代码实现:

    import numpy as np
    import operator
    
    """
    函数说明:创建数据集
    
    Parameters:
        无
    Returns:
        group - 数据集
        labels - 分类标签
    
    """
    def createDataSet():
        #四组二维特征
        group = np.array([[1,101],[5,89],[108,5],[115,8]])
        #四组特征的标签
        labels = ['爱情片','爱情片','动作片','动作片']
        return group, labels
    
    """
    函数说明:kNN算法,分类器
    
    Parameters:
        inX - 用于分类的数据(测试集)
        dataSet - 用于训练的数据(训练集)
        labes - 分类标签
        k - kNN算法参数,选择距离最小的k个点
    Returns:
        sortedClassCount[0][0] - 分类结果
    
    
    """
    def classify0(inX, dataSet, labels, k):
        #numpy函数shape[0]返回dataSet的行数
        dataSetSize = dataSet.shape[0]
        #在列向量方向上重复inX共1次(横向),行向量方向上重复inX共dataSetSize次(纵向)
        diffMat = np.tile(inX, (dataSetSize, 1)) - dataSet
        #二维特征相减后平方
        sqDiffMat = diffMat**2
        #sum()所有元素相加,sum(0)列相加,sum(1)行相加
        sqDistances = sqDiffMat.sum(axis=1)
        #开方,计算出距离
        distances = sqDistances**0.5
        #返回distances中元素从小到大排序后的索引值
        sortedDistIndices = distances.argsort()
        #定一个记录类别次数的字典
        classCount = {}
        for i in range(k):
            #取出前k个元素的类别
            voteIlabel = labels[sortedDistIndices[i]]
            #dict.get(key,default=None),字典的get()方法,返回指定键的值,如果值不在字典中返回默认值。
            #计算类别次数
            classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1
        #python3中用items()替换python2中的iteritems()
        #key=operator.itemgetter(1)根据字典的值进行排序
        #key=operator.itemgetter(0)根据字典的键进行排序
        #reverse降序排序字典
        sortedClassCount = sorted(classCount.items(),key=operator.itemgetter(1),reverse=True)
        #返回次数最多的类别,即所要分类的类别
        return sortedClassCount[0][0]
    
    if __name__ == '__main__':
        #创建数据集
        group, labels = createDataSet()
        #测试集
        test = [101,20]
        #kNN分类
        test_class = classify0(test, group, labels, 3)
        #打印分类结果
        print(test_class)
    

    输出结果:

     

    展开全文
  • K近邻分类器 matlab

    2013-04-20 14:27:48
    K近邻分类器 matlab实现 很适合初学者
  • 为改善维数灾难对K近邻分类器的影响,提出一种基于遗传算法(GA)的多扰动的K近邻融合算法,简称GA-MKNNC算法。目标扰动将所识别的问题划分成多个子分类问题进行单独识别。针对不同子分类问题,数据扰动选取相关的...
  • 采用k近邻分类器对mnist数据集进行十分类。且里面包含mnist数据集。代码采用matlab编写,可以直接运行。
  • K近邻分类器所需要使用的随机数据集的实现代码
  • python 简单k近邻分类器的实现

    (1)问题:

    在此使用k近邻算法实现一个简单分类器。

    其中model.xls表样式如下表1所示:

    表1:model.xls数据表

    分析:①数据存放在model.xls中,需要利用panda数据,对数据进行切片为指标和结果。

    ②切片后的数据类型为dataframe类型,需要转换为列表才能对数据进行处理。

    ③利用sklearn.neighbors的KNeighborsClassifier实现一个简单的k近邻分类器。

    ④利用该k近邻分类器对原指标数据进行预测。

    ⑤计算出分类器的准确率。

    代码如下:

    import pandas as pd #导入数据分析库Pandas
    from sklearn.neighbors import KNeighborsClassifier #导入k近邻分类器KNeighborsClassifier
    
    inputfile = 'model.xls' #输入数据路径,需要使用Excel格式;
    
    data = pd.read_excel(inputfile, header=None) #读入数据
    
    #切出指标数据片,并转换为列表
    datas_frame_index = data.iloc[1:292,0:3] 
    datas_list_index = datas_frame_index.values.tolist()
    # print(datas_list_index)
    
    #切出结果数据片,并转换为列表
    datas_frame_result = data.iloc[1:292,3]
    datas_list_result= datas_frame_result.values.tolist()
    # print(datas_list_result)
    
    x=datas_list_index #指标
    y=datas_list_result #结果
     
    neigh=KNeighborsClassifier(n_neighbors=5)  #最近的五个点是哪类则归为哪类
    neigh.fit(x,y) #放入原因和结果,构造k近邻分类器
     
    predict_array =neigh.predict(datas_list_index)  #对原指标数据进行预测
    # print(predict_array)
    # print(type(predict_array))
    
    #计算分类器准确率
    count = 0
    for i in range(291):
    #     print(predict_array[i])
        if predict_array[i]==datas_list_result[i]:
            count = count + 1
    rate_correct = count/291*100
    print(f'分类器准确率为{rate_correct}%')

    其中datas_list_index如下图1所示,datas_list_result如下图2所示:

     图1 datas_list_index

      图2 datas_list_result

    运行结果截图,如下图3所示:

     图3 运行结果

    展开全文
  • 在讲解K近邻分类器之前,我们先来看一下最近邻分类器(Nearest Neighbor Classifier),它也是K = 1时的K近邻分类器。 目录最近邻分类器 最近邻分类器 最近邻分类器是在最小距离分类的基础上进行扩展的,将训练集中...

    在讲解K近邻分类器之前,我们先来看一下最近邻分类器(Nearest Neighbor Classifier),它也是K = 1时的K近邻分类器。

    最近邻分类器

    定义

    最近邻分类器是在最小距离分类的基础上进行扩展的,将训练集中的每一个样本作为判断依据,寻找距离待分类样本中最近的训练集中的样本,以此依据进行分类。

    在这里插入图片描述
    如上图所示,我们的训练集代表了二维平面上的点,而不同的颜色代表了不同的类别(标签).

    存在问题

    噪声(图像噪声是指存在于图像数据中的不必要的或多余的干扰信息。)我们从上面的图中可以看出,绿色的区域内还有一个黄色区域,此时这个区域应该是绿色,因为黄色的点很有可能是噪声,但我们使用最近邻算法就有可能出现上面的问题。

    K近邻分类器(KNN)

    定义

    与最近邻分类器类不同的是,k近邻分类器是几个测试的样本共同抉择属于哪一个样本,如下所示,当k = 1(也就是最近邻分类器),3,5时的分类器抉择结果。

    在这里插入图片描述
    为了帮助大家更好地理解,我们引入下面一个示例:
    在这里插入图片描述
    k近邻算法例子。测试样本(绿色圆形)应归入要么是第一类的蓝色方形或是第二类的红色三角形。如果k=3(实线圆圈)它被分配给第二类,因为有2个三角形和只有1个正方形在内侧圆圈之内。如果k=5(虚线圆圈)它被分配到第一类(3个正方形与2个三角形在外侧圆圈之内)。

    距离测量

    现在有一个问题,那就是我们如何比较相对近邻距离值,下面给出两种方法

    在这里插入图片描述
    对于这两种方法,大家可以参考下面的博文:欧氏距离,曼哈顿距离,余弦距离,汉明距离

    L1距离:它上面的点的横坐标的绝对值与纵坐标的绝对值之和总是相等,也就是到原点在坐标轴度量上是相等的。
    L2距离:它上面的每一个点的坐标到原点的距离都相等。

    大家有兴趣的可以在斯坦福大学的实验平台上调试数据进行试验
    附:cs231n-demo实验

    参数选择

    我们通过试验,可以找出最优值k。当然,在CS231n当中,我们也看到了一种新的方法,在有限数据集的情况之下进行的实验:K折交叉验证
    在这里插入图片描述
    从实验的结果,大约在k = 7时,我们能得到最优的解。

    存在问题

    (1)Distance Matrix
    我们假定使用L1距离,则计算过程如下:
    在这里插入图片描述
    但是计算标尺与邻近特定距离标尺之间的关系并不会给我们带来什么太有用的讯,如下,
    在这里插入图片描述

    Boxed,Shifted,Tinted与Original不同,但是 K-Nearest Neighbor 结果出来的确实一样的。
    (2)计算时间过长。

    源代码

    import pickle
    import os
    import numpy as np
    
    n = 2
    
    
    def unpickle_as_array(filename):
        with open(filename, 'rb') as f:
            dic = pickle.load(f, encoding='latin1')
            dic_data = dic['data']
            dic_labels = dic['labels']
            dic_data = np.array(dic_data).astype('int')
            dic_labels = np.array(dic_labels).astype('int')
            return dic_data, dic_labels
    
    
    def load_batches(root, n):
        train_data = []
        train_labels = []
        for i in range(1, n + 1, 1):
            f = os.path.join(root, 'data_batch_%d' % i)
            data, labels = unpickle_as_array(f)
            train_data.append(data)
            train_labels.append(labels)
        train_data_r = np.concatenate(train_data)
        train_labels_r = np.concatenate(train_labels)
        del train_data, train_labels
        test_data, test_labels = unpickle_as_array(os.path.join(root, 'test_batch'))
        return train_data_r, train_labels_r, test_data, test_labels
    
    
    def knn_classification(train_d, test_d, train_l, k):
        count = 0
        result = np.zeros(10000)
        for i in range(10000):
            d_value = test_d[i] - train_d
            distance = np.sum(np.abs(d_value), axis=1)
            dis_sort = np.argsort(distance)
            vote_label = np.zeros(10)
            for j in range(k):
                vote_label[train_l[dis_sort[j]]] += 1
            result[i] = np.argmax(vote_label)
            print('the %dth image\'s label:  %d' % (count, result[i]))
            count = count + 1
        return result
    
    
    train_data, train_labels, test_data, test_labels = load_batches('D:/data/cifar-10-python/cifar-10-batches-py', n)
    result = knn_classification(train_data, test_data, train_labels, 3)
    print('the algorithm\'s accuracy: %f' % (np.mean(result == test_labels)))
    

    CIFAR的下载:https://www.cs.toronto.edu/~kriz/cifar.html
    大家进入官网后,可以选择CIFAR-10 python进行下载,然后修改

    train_data, train_labels, test_data, test_labels = load_batches('D:/data/cifar-10-python/cifar-10-batches-py', n)
    

    中的路径。
    大家也可以参考我的GitHub:-cifar-10-KNN

    展开全文
  • 改进样本加权K近邻分类器用于垃圾网页检测.pdf
  • KNN(K近邻分类器)Python3实现

    千次阅读 2018-06-06 17:18:04
    K近邻分类器(KNN) KNN:通过计算待分类数据点与已有数据集中的所有数据点的距离。取距离最小的前K个点,根据少数服从多数的原则,将这个数据点划分为出现次数最多的那个类别。 例如:图中的X点,通过计算...
  • Matlab中常用的分类器有随机森林分类器、支持向量机(SVM)、K近邻分类器、朴素贝叶斯、集成学习方法和鉴别分析分类器等。各分类器的相关Matlab函数使用方法如下: 首先对以下介绍中所用到的一些变量做统一的说明:...
  • 读取20类新闻文本的数据细节# 从sklearn.datasets里导入新闻数据抓取fetch_20newsgroup from sklearn.datasets import fetch_20newsgroups # 与之前预存的数据不同,fetch_20newsgroup需要即时从互联网下载数据 ...
  • 图片分类-K近邻分类器

    千次阅读 2017-06-20 14:00:15
    其实,我们更常用的是k近邻分类器。这个思想非常简单。代替寻找训练集中最近的图片,我们会寻找k个最相近的图片,并且让他们再测试图片上投票。特别的,再k=1的时候,我们已经涵盖了最近邻分类器。只管来说,更高的k...
  • python-k近邻分类器-KNN

    2019-06-30 13:14:19
    K近邻分类器,通过计算待分类数据点,与已有数据集点的所有数据点的距离。取距离最小的前K个点,根据“少数服从多数”的原则,将这个数据点划分为出现次数最多的那个类别。 sklean库s,可以使用sklean.neighbors....
  • K近邻分类器(KNN)手写数字(MNIST)识别

    千次阅读 2017-01-21 19:46:48
    KNN(K-Nearest-Neighbor) 是分类算法中比较简单的一个算法。算法思想非常简单:对于一个未知类别的样例,我们在很多已知类别的样本中找出跟它最相近的K个样本,赋予该样例这K个样本中占多数的类别。 在这里我将用...
  • KNN,属于监督学习的一种方法。 KNN是用于分类和回归的非参数统计方法,直接点说就是数据统计 ...分类阶段,k是用户定义的常数,被预测的没有类别的标签向量(测试点)将被归类为最接近该点的k个样本点中
  • k近邻统计分类器对于大家做科研室很有帮助
  • k近邻算法分类

    2018-05-31 19:06:36
    vs2010+opencv2.4.9环境下,通过knn算法对0-9数字进行分类
  • 最简单的分类器是近邻分类器。近邻算法搜索训练集,寻找与用作测试的新个体最相似的观测记录。讲到这里,弄清楚训练集和测试集这两个概念很重要。如果确实只有一个数据集,也没关系,重要的是不要使用同一份数据同时...
  • 1.k-近邻分类器 k-近邻算法是一种最简单的数据挖掘算法,在平时使用中也很常见。k-近邻中的近邻指的是距离待预测数据的数据点,而k-近邻就指的是取前k近的数据点,例如3-近邻算法就是找到3个离待预测数据作为最近邻...
  • K近邻无参数估计和K近邻分类器

    千次阅读 2018-10-20 19:51:24
    然后基于K近邻的原理,简单介绍K近邻分类器 前文讲过,与Parzen窗方法不同的是,K近邻估计要求每个空间窗口含有相同数目的个样本数据。 根据第x个空间的相对大小,来衡量该空间中心的概率密度,有   因此只...
  • 本程序实现了对三类高斯分布样本利用K近邻方法进行分类,并统计其错误率。
  • k近邻算法分类器

    2012-05-19 14:40:31
    k近邻算法分类器 语言 matlab 小而简单 供初学者使用
  • 一种基于相似度判据的K近邻分类器的车牌字符识别方法..............
  • 用python实现k-近邻分类,包括约会网站配对效果和手写体识别。
  • K近邻分类器——kNN

    2020-04-17 11:57:20
    K近邻分类器 kNN原理:    对于一个给定的训练集,我们知道训练样本中的每组数据特征及其分类标签。然后输入没有标签的新数据,将新数据的每个特征与训练集中的每个特征进行比较,选取特征最相似(最近邻:k=1)...
  • K近邻算法是一种基本分类与回归方法。分类时,对新的实例,根据其k个最近邻的训练实例的类别,通过多数表决的方式进行预测。因此,K近邻法不具有显式的学习过程。 文章目录K近邻算法(K-nearest neighbor)一、k值的...
  • Tensorflow实现K近邻分类器 1、K近邻分类模型基本原理 首先,存在一个样本数据集合,也称作训练样本集,井且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系。输人没有标签的新数据...
  • 1)区分K-means:无监督聚类,KNN:(有监督分类) 2)KNN的本质,k值选取,距离计算,优缺点,要了解

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,680
精华内容 6,272
关键字:

k近邻分类器

友情链接: testbatis2.zip