[Data Mining] kNN implementaion in Matlab

Matlab提供了一个机器学习的工具箱,里面提供了一个封装类用于kNN分类器。

这里以matlab2015a的documentation的为准。

Description

knn是一种基于最近邻的分类器,distance metric和邻域k需要被指定。使用训练数据训练kNN模型,使用predict方法对一个新的观测量进行预测。


Construction

mdl = fitcknn(X,y) 创建一个kNN分类器。
mdl = fitcknn(X,y,Name,Name,Value)


Input

X表示Predictor value,X的每一行表示一个observation,X的每一列表示一个variable。
Y表示Classification value,数据类型可以是字符或是数字向量,Y的每一列表示的是X对应行的分类结果。
还有其他的一些设置可以通过Name和Value的值进行设定。


Example

以“图片配诗”为例,我们先根据古诗词中出现的的高频词,如”绿树“、”青草“、”流水“、”明月“、”青天“等名词,从网上爬取相应的图片。对每一张图片分割成super_pixels,相应类别区域的super pixel使用最简单的rgb颜色直方图统计作为特征X(predictor、features 或 attributes),特征的维度即使256*3,类别Y就使用各类的英文单词。

mdl = fitcknn(X,Y);
%Examine the Quality of a KNN classifier
rloss = resubLoss(mdl);
cvmdl = crossval(mdl);

ClassificationKNN
PredictorNames: {1x768 cell}
ResponseName: ‘Y’
ClassNames: {‘moon’ ‘river’ ‘sky’ ‘tree’}
ScoreTransform: ‘none’
NumObservations: 9303
Distance: ‘euclidean’
NumNeighbors: 5

这里的特征都是归一化的特征(即使没有归一化,在fitcknn中也会被归一化)。


这里补充下拟合问题中的loss function的概念。对于所有的线性方法 y=f(θTx) ,我们首先确定 f ,然后找到参数θ最大化后验概率或最小化loss function。
对于分类问题来说,如果分类正确则有 yf=yθTx>0 yf=yθTx<0 如果分类错误的话。
1. 0/1 loss, minθ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值