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

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结果截图如下:

转载请注明作者:小刘

时间: 2024-08-05 04:06:29

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

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

knn算法(k-Nearest Neighbor algorithm).是一种经典的分类算法. 注意,不是聚类算法.所以这样的分类算法必定包含了训练过程. 然而和一般性的分类算法不同,knn算法是一种懒惰算法.它并不是 像其它的分类算法先通过训练建立分类模型.,而是一种被动的分类 过程.它是边測试边训练建立分类模型. 算法的一般描写叙述步骤例如以下: 1.首先计算每一个測试样本点到其它每一个点的距离. 这个距离能够是欧氏距离,余弦距离等. 2. 然后取出距离小于设定的距离阈值的点. 这些点即为依

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

KNN最近邻算法原理 KNN英文全称K-nearst neighbor,中文名称为K近邻算法,它是由Cover和Hart在1968年提出来的 KNN算法原理: 1. 计算已知类别数据集中的点与当前点之间的距离: 2. 按照距离递增次序排序: 3. 选择与当前距离最小的k个点: 4. 确定前k个点所在类别的出现概率 5. 返回前k个点出现频率最高的类别作为当前点的预测分类 如果数据集中序号1-12为已知的电影分类,分为喜剧片.动作片.爱情片三个种类,使用的特征值分别为搞笑镜头.打斗镜头.拥抱镜头的

机器学习算法---kNN算法

kNN-------k-邻近算法 1.kNN是non-parametric分类器,既不做分布式假设,直接从数据估计概率密度: 2.kNN不适用于高维数据 优点: 1.无需估计参数,无需训练: 2.特别适合于多分类问题(对象具有多个标签). 缺点: 1.当样本容量不平衡是,输入有个新样本,该样本的K个邻值中大容量样本占多数,对分类不利: 2.计算量过大,需要计算待分类文本到每个样本的距离. 改进办法: 1.实现对样本属性进行适当删减,删除对结果影响较小的属性: 2.对距离加权,采取和样本距离小的待

Python实现KNN算法

Python实现KNN算法 KNN算法的实际用处很多,主要用于分类阶段,是一个基础的分类算法.KNN主要基于距离的计算,一般可以在原始的欧氏空间中计算样本之间的距离.改进版本有:先特征提取到一个更加鉴别的空间中,然后计算距离:或者先使用metric learning度量学习的技术来获得一个鉴别的度量空间,然后计算样本间的马氏距离. 不管怎么说,KNN在很多算法的分类阶段都可以用到,我们这里用python实现KNN. 1. sklearn自带的KNN fromsklearn.neighborsim

KNN算法在保险业精准营销中的应用

版权所有,可以转载,禁止修改.转载请注明作者以及原文链接. 一.KNN算法概述 KNN是Machine Learning领域一个简单又实用的算法,与之前讨论过的算法主要存在两点不同: 它是一种非参方法.即不必像线性回归.逻辑回归等算法一样有固定格式的模型,也不需要去拟合参数. 它既可用于分类,又可应用于回归. KNN的基本思想有点类似“物以类聚,人以群分”,打个通俗的比方就是“如果你要了解一个人,可以从他最亲近的几个朋友去推测他是什么样的人”. 在分类领域,对于一个未知点,选取K个距离(可以是欧

机器学习第5周--炼数成金-----线性分类器,Knn算法,朴素贝叶斯分类器,文本挖掘

分类:分类的意义 传统意义下的分类:生物物种预测:天气预报决策:yes or no分类的传统模型分类(判别分析)与聚类有什么差别?有监督学习,无监督学习,半监督学习 常见分类模型与算法 线性判别法距离判别法贝叶斯分类器决策树支持向量机(SVM)神经网络 文本挖掘典型场景 网页自动分类垃圾邮件判断评论自动分析通过用户访问内容判别用户喜好 网页自动分类 自动化门户系统(百度新闻,谷歌新闻等)搜索引擎根据用户标签类型推送不同类别的搜索结果 距离判别法 原理:计算待测点与各类的距离,取最短者为其所属分类

学习OpenCV——KNN算法

转自:http://blog.csdn.net/lyflower/article/details/1728642 文本分类中KNN算法,该方法的思路非常简单直观:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别.该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别. KNN方法虽然从原理上也依赖于极限定理,但在类别决策时,只与极少量的相邻样本有关.因此,采用这种方法可以较好地避免样本的不平衡问题.另外,由于

数据挖掘中分类算法小结

数据挖掘中分类算法小结 数据仓库,数据库或者其它信息库中隐藏着许多可以为商业.科研等活动的决策提供所需要的知识.分类与预测是两种数据分析形式,它们可以用来抽取能够描述重要数据集合或预测未来数据趋势的模型.分类方法(Classification)用于预测数据对象的离散类别(Categorical Label);预测方法(Prediction )用于预测数据对象的连续取值. 分类技术在很多领域都有应用,例如可以通过客户分类构造一个分类模型来对银行贷款进行风险评估;当前的市场营销中很重要的一个特点是强

Python/matlab实现KNN算法

Python 算法伪码: 对未知类别属性的数据集中的每个点依次执行以下操作: 1)计算已知类别数据集中的点与当前点之间的距离: 2)按照距离递增次序排序: 3)选取与当前点距离最小的k个点: 4)确定前k个点所在类别的出现频率: 5)返回前k个点出现频率最高的类别作为当前点的预测分类. 欧氏距离计算: (1)二维平面上两点xA(x1,y1)与xB(x2,y2)间的欧氏距离: (2)三维空间两点xA(x1,y1,z1)与xB(x2,y2,z2)间的欧氏距离: (3)两个n维向量xA(x11,x12