您的位置:首页 > 编程语言 > MATLAB

[Data Mining] kNN implementaion in Matlab

2015-11-03 23:03 741 查看
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)y=f(\theta^Tx),我们首先确定ff,然后找到参数θ\theta最大化后验概率或最小化loss function。

对于分类问题来说,如果分类正确则有y⋅f=y⋅θTx>0y\cdot f=y\cdot\theta^Tx\gt0,y⋅f=y⋅θTx<0y\cdot f=y\cdot\theta^Tx\lt0 如果分类错误的话。

1. 0/1 loss,minθ\min_\theta
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: