话说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 .
准备条件:已经把特征数据和样本标号保存为文件。
测试代码为:
train_label保存的是样本标号,如0,1,2等等,随便设置,只有能区分就行,具体格式可以为:
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');
大家可以对照看看选择合适的,多试试。
嗯,很简单,就这样就可以得到最后的分类类别了。
对了,还要把最后的分类类别进行保存,之前的一篇已经提到如何保存了,最终代码: