knn算法(k-Nearest Neighbor algorithm).是一种经典的分类算法.注意,不是聚类算法.所以这种分类算法

必然包括了训练过程.

然而和一般性的分类算法不同,knn算法是一种懒惰算法.它并非像其他的分类算法先通过训练建立分类模型.,而

是一种被动的分类过程.它是边测试边训练建立分类模型.

算法的一般描述过程如下:

1.首先计算每个测试样本点到其他每个点的距离.这个距离可以是欧氏距离,余弦距离等.

2.然后取出距离小于设定的距离阈值的点.这些点即为根据阈值环绕在测试样本最邻近的点.

3.选出这些邻近点中比例最大的点簇的类.那么就将概测试点归入此类.

注意:knn算法的开销很大,因为要计算每个样本点到其他所有点的距离.

   knn算法的距离一般要根据实际样本点的情况来选取.

knn算法的距离阈值要根据样本的分散集中程度来选取.经验一般选取样本点集合的均方差.

下面是一个matlab中运用knn函数分类的例子.

 clc;
clear; load 'Train_Data.mat' %载入训练数据 load 'Train_Label.mat' %载入训练分类标签 test_data=[43;
42;
192;
193]; %测试数据 %knnclassify为matlab提供的knn分类函数.
%参数test_data是待分类的测试数据
%Train_Data是用于knn分类器训练的数据
%Train_Label是训练的分类标签
%3,即为knn的k值.意思是取某个待分类测试样本点周围三个样本点
%'cosine'---为距离度量,这里采用余弦距离
%'random'---为分类规则.如何对k个临近点进行分类.
% 'k'--即为对测试数据的knn分类结果的类标签 k=knnclassify(test_data,Train_Data',Train_Label',3,'euclidean','random');

Train_Data.mat截图如下:

Train_Label.mat截图如下:

k结果截图如下:

数据挖掘之分类算法---knn算法(有matlab例子)的更多相关文章

  1. 【数据挖掘】分类之kNN(转载)

    [数据挖掘]分类之kNN 1.算法简介 kNN的思想很简单:计算待分类的数据点与训练集所有样本点,取距离最近的k个样本:统计这k个样本的类别数量:根据多数表决方案,取数量最多的那一类作为待测样本的类别 ...

  2. 数据挖掘之分类算法---knn算法(有matlab样例)

    knn算法(k-Nearest Neighbor algorithm).是一种经典的分类算法. 注意,不是聚类算法.所以这样的分类算法必定包含了训练过程. 然而和一般性的分类算法不同,knn算法是一种 ...

  3. knn原理及借助电影分类实现knn算法

    KNN最近邻算法原理 KNN英文全称K-nearst neighbor,中文名称为K近邻算法,它是由Cover和Hart在1968年提出来的 KNN算法原理: 1. 计算已知类别数据集中的点与当前点之 ...

  4. 【Machine Learning】KNN算法虹膜图片识别

    K-近邻算法虹膜图片识别实战 作者:白宁超 2017年1月3日18:26:33 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...

  5. python最近邻分类器KNN算法

    1. KNN算法 邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一.所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最 ...

  6. 机器学习笔记--KNN算法2-实战部分

    本文申明:本系列的所有实验数据都是来自[美]Peter Harrington 写的<Machine Learning in Action>这本书,侵删. 一案例导入:玛利亚小姐最近寂寞了, ...

  7. 机器学习笔记--KNN算法1

    前言 Hello ,everyone. 我是小花.大四毕业,留在学校有点事情,就在这里和大家吹吹我们的狐朋狗友算法---KNN算法,为什么叫狐朋狗友算法呢,在这里我先卖个关子,且听我慢慢道来. 一 K ...

  8. 学习OpenCV——KNN算法

    转自:http://blog.csdn.net/lyflower/article/details/1728642 文本分类中KNN算法,该方法的思路非常简单直观:如果一个样本在特征空间中的k个最相似( ...

  9. KNN算法简单应用

    这里是写给小白看的,大牛路过勿喷. 1 KNN算法简介 KNN(K-Nearest Neighbor)工作原理:存在一个样本数据集合,也称为训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集 ...

随机推荐

  1. 括号匹配问题(C++、堆栈)

    原文地址:http://www.cppblog.com/GUO/archive/2010/09/12/126483.html /* 括号匹配问题,比较经典,利用堆栈来实现(摘自internet) 1. ...

  2. UESTC_Islands 2015 UESTC Training for Data Structures<Problem J>

    J - Islands Time Limit: 30000/10000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Su ...

  3. UVA 246 - 10-20-30 (模拟+STL)

    UVA 246 - 10-20-30 题目链接 题意:给52张的扑克堆,先从左往右发7张牌,之后连续不断从左往右发7张牌,假设有牌堆形成了下面3种情况(按顺序推断): 1.头两张+尾一张和为10或20 ...

  4. Unity之极光推送

    Android应用中大多数应用使用了推送,游戏中当然也可以使用推送!下面在Unity3D做个测试!(下面是客套话,大家可以忽略) 1.1 什么是推送技术? 推送技术,又名反向AJAX,指的是一种基于I ...

  5. angular在ie8下的一个bug

    昨天拿项目在ie8下测试,发现不少bug,其中有一个bug让我很不解,报了一个thead开头的bug,因为已经切回到linux下了,我就不报具体是什么bug了,鼓捣了半天,发现引用angular的应用 ...

  6. c#语句:分支

    六.分支:(一)if (表达式){}说明:1.表达式,就是用来返回bool形的表达式.2.if的小括号后面千万不要加分号 (二)if(表达式){}else{} 例:1.输入年龄,大于等于18显示成年, ...

  7. C#关于ref的用法(多个实参值的传递)

    按照C#默认的按值调用参数的传递机制,不能刻编写出一个方法来实现两个int类型的值交换,因为一个方法只能对应一个返回值,如何实现将两个交换的值传递回去,这里我将用到的是ref修饰符. 使用ref的单值 ...

  8. 追加addclass和removeclass

    //addclass             Base.prototype.addclass=function(classname){                 for(var i=0;i< ...

  9. eclipse使用Git插件

    折腾了会Git,记录一下下. 1.安装Git  Help-->Install New Software  点击Add,Name随意,Location为http://download.eclips ...

  10. Java三大特征之封装(一)

    封装从字面上来理解就是包装的意思,专业点就是信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保 ...