matlab自带knnclssify小实验

本文介绍如何使用Matlab的模式识别工具箱中的KNN算法进行分类任务。通过加载训练数据、测试数据及标签,并指定使用余弦距离和随机分类规则来实现分类。文章还提供了完整的测试代码。

话说matlab的模式识别工具箱非常强大,对于一般应用来说基本不用自己编程,这就给科研带来了极大的便利。

之后估计会利用这个工具箱里的许多分类方法,比如KNN、BP、SVM等等;

现在就利用knn来进行分类。

For the object of samplify, I only choose 3 classes while 2 samples for each class ,there are 18 features in every sample .

准备条件:已经把特征数据和样本标号保存为文件。

测试代码为:

[plain] view plain copy
  1. train_data=load('sample_feature.txt');
  2. train_label=load('train_label.txt');
  3. test_data=load('features.txt');
  4. k=knnclassify(test_data,train_data,train_label,3,'cosine','random');
train_data保存的是训练样本特征,要求是最能代表本类别的,不一定多,当然不能太少;

train_label保存的是样本标号,如0,1,2等等,随便设置,只有能区分就行,具体格式可以为:

[plain] view plain copy
  1. 112233

test_data测试文件保存的是测试数据的特征;

关键函数介绍:


knnclassify是利用最近邻进行分类的分类器;

函数调用形式:

1.CLASS = KNNCLASSIFY(SAMPLE,TRAINING,GROUP)

标号和训练数据必须有相同的行数;训练数据和测试数据必须有相同的列;函数对于无效值或者空值会作为丢失值或者忽略这一行。

2.CLASS = KNNCLASSIFY(SAMPLE,TRAINING,GROUP,K)

此函数允许你设置距离矩阵形式,如:

'euclidean' 欧氏距离,默认的

'cityblock' 绝对差的和

'cosine' 角度距离

'correlation'相关距离

'Hamming' 汉明距离

3.CLASS =KNNCLASSIFY(SAMPLE,TRAINING,GROUP,K,DISTANCE,RULE)

本函数允许你选择如何对样本进行分类,如你可以选择:

'nearest' 最近的K个的最多数

'random' 随机的最多数

'consensus'投票法,默认的

而我选择的函数形式是:

k=knnclassify(test_data,train_data,train_label,3,'cosine','random');

大家可以对照看看选择合适的,多试试。

嗯,很简单,就这样就可以得到最后的分类类别了。

对了,还要把最后的分类类别进行保存,之前的一篇已经提到如何保存了,最终代码:

[plain] view plain copy
  1. train_data=load('sample_feature.txt');
  2. train_label=load('train_label.txt');
  3. test_data=load('features.txt');
  4. k=knnclassify(test_data,train_data,train_label,3,'cosine','random');
  5. dlmwrite('a.txt',b,'delimiter','','newline','pc');
ok,就这么多了,下次继续写, 微笑


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值