[Data Mining] kNN implementaion in Matlab
2015-11-03 23:03
741 查看
Matlab提供了一个机器学习的工具箱,里面提供了一个封装类用于kNN分类器。
这里以matlab2015a的documentation的为准。
mdl = fitcknn(X,y,Name,Name,Value)
Y表示Classification value,数据类型可以是字符或是数字向量,Y的每一列表示的是X对应行的分类结果。
还有其他的一些设置可以通过Name和Value的值进行设定。
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
这里以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
相关文章推荐
- 用C/C++读取MATLAB中mat文件中的Cell数据
- Matlab2014a(64-bit)安装libsvm3.12
- matlab中double、im2double、mat2gray区别
- matlab问题
- 2.描述性统计的matlab 实现
- matlab练习程序(奇异值分解压缩图像)
- 加速matlab运行的三重境界
- matlab 位操作
- matlab读取视频VideoReader类
- 项目代码matlab
- matlab double axes, 两个坐标轴 papa的儿子,儿子的papa
- Matlab 三维图像绘制(1)——纹理贴图、球体
- libsvm在matlab和Python上的探索
- MATLAB实现坐标系变换动画演示
- 新版Matlab中函数aviread报错问题
- c# 调用 matlab
- 在win7下如何以兼容模式运行matlab
- 遗传算法的matlab实现
- MATLAB函数汇总
- 关于Matlab中avi视频的读取问题