matlab自带的分类器的测试和分类
来源:互联网 发布:什么是软件质量 编辑:程序博客网 时间:2024/06/01 15:55
代码如下:
clcclear allclose alldata = load('data.txt');% 为了svmtrain能使用'showplot',true,此处使用数据的前2维。data = data(:, 1:2); % 由于svmtrain只能处理二分类问题,因而此处使用前100个数据。data = data(1:100, :);label = [ones(50, 1); zeros(50, 1)];trainData = data(1:40, :); % 每组前40个用于训练trainData = [trainData; data(51:90, :)]; % 每组前40个用于训练testData = data(41:50, :); % 每组后10个用于测试testData = [testData; data(91:100, :)]; % 每组后10个用于测试trainLabel = label(1:40, :); % 每组前40个用于训练trainLabel = [trainLabel; label(51:90, :)]; % 每组前40个用于训练testLabel = label(41:50, :); % 每组后10个用于测试testLabel = [testLabel; label(91:100, :)]; % 每组后10个用于测试% 将距离和类别传入svm中,trainLabel为标签,即类别,trainData为特征svmModel = svmtrain(trainData, trainLabel,'kernel_function','linear','showplot',true);predict_label = svmclassify(svmModel,testData,'showplot',true); fprintf('使用svmclassify,正确率:%f\n' ,sum(predict_label==testLabel)/size(testLabel,1));%% 以下两种方式均使用linear核,其他的核还不清楚怎么算testScale = [];for c = 1:size(testData, 2) testScale = [testScale, svmModel.ScaleData.scaleFactor(c) * (testData(:,c) + svmModel.ScaleData.shift(c))];end% 方式1:使用矩阵形式predictValMat = (svmModel.SupportVectors * testScale')' * svmModel.Alpha + svmModel.Bias; % 测试样本个数*1的列矩阵predictValMat1 = ones(size(predictValMat));predictValMat1(predictValMat>0) = 0;fprintf('使用矩阵形式,正确率:%f\n' ,sum(predictValMat1==testLabel)/size(testLabel,1));% 方式2:一个一个计算[m,n]=size(testScale);predict_label2=zeros(m,1); for k = 1:size(testScale, 1) % svmModel.SupportVectors为 支持向量个数*特征维数 的矩阵 % testScale(k, :)为 1*特征维数 的行向量。 % svmModel.SupportVectors * testScale(k, :)'为 支持向量个数*1 的列矩阵 % (svmModel.SupportVectors * testScale(k, :)')' * svmModel.Alpha 即为 sum(w*x) % predictVal为 sum(w*x)+b predictVal = (svmModel.SupportVectors * testScale(k, :)')' * svmModel.Alpha + svmModel.Bias; if predictVal>0 predict_label2(k) = 0; else predict_label2(k) = 1; endendfprintf('一个一个计算,正确率:%f\n' ,sum(predict_label2==testLabel)/size(testLabel,1));
分类结果:
svmtrain后的结果(包含了svmclassify的结果),其中蓝色圈出来的点为分错的点。
实际上,如果4个特征都使用的话,对上面的程序,正确率为100%。
ps:测试数据为参考网址中给出的数据。
鹫尾花数据集共分为3类花(前50个样本为一类,中间50个样本为一类,后50个样本为一类。由于matlab的svmtrain只能处理二分类问题,因而程序中使用了前100个数据。其中,每组前40个用作训练,后10个用作测试。因而,训练样本80个,测试样本20个。除此之外,为了在调用svmtrain时能显示分类结果,该函数参数'showplot'设置为true。
data.txt如下:
5.1 3.5 1.4 0.24.9 3.0 1.4 0.24.7 3.2 1.3 0.24.6 3.1 1.5 0.25.0 3.6 1.4 0.25.4 3.9 1.7 0.44.6 3.4 1.4 0.35.0 3.4 1.5 0.24.4 2.9 1.4 0.24.9 3.1 1.5 0.15.4 3.7 1.5 0.24.8 3.4 1.6 0.24.8 3.0 1.4 0.14.3 3.0 1.1 0.15.8 4.0 1.2 0.25.7 4.4 1.5 0.45.4 3.9 1.3 0.45.1 3.5 1.4 0.35.7 3.8 1.7 0.35.1 3.8 1.5 0.35.4 3.4 1.7 0.25.1 3.7 1.5 0.44.6 3.6 1.0 0.25.1 3.3 1.7 0.54.8 3.4 1.9 0.25.0 3.0 1.6 0.25.0 3.4 1.6 0.45.2 3.5 1.5 0.25.2 3.4 1.4 0.24.7 3.2 1.6 0.24.8 3.1 1.6 0.25.4 3.4 1.5 0.45.2 4.1 1.5 0.15.5 4.2 1.4 0.24.9 3.1 1.5 0.15.0 3.2 1.2 0.25.5 3.5 1.3 0.24.9 3.1 1.5 0.14.4 3.0 1.3 0.25.1 3.4 1.5 0.25.0 3.5 1.3 0.34.5 2.3 1.3 0.34.4 3.2 1.3 0.25.0 3.5 1.6 0.65.1 3.8 1.9 0.44.8 3.0 1.4 0.35.1 3.8 1.6 0.24.6 3.2 1.4 0.25.3 3.7 1.5 0.25.0 3.3 1.4 0.27.0 3.2 4.7 1.46.4 3.2 4.5 1.56.9 3.1 4.9 1.55.5 2.3 4.0 1.36.5 2.8 4.6 1.55.7 2.8 4.5 1.36.3 3.3 4.7 1.64.9 2.4 3.3 1.06.6 2.9 4.6 1.35.2 2.7 3.9 1.45.0 2.0 3.5 1.05.9 3.0 4.2 1.56.0 2.2 4.0 1.06.1 2.9 4.7 1.45.6 2.9 3.6 1.36.7 3.1 4.4 1.45.6 3.0 4.5 1.55.8 2.7 4.1 1.06.2 2.2 4.5 1.55.6 2.5 3.9 1.15.9 3.2 4.8 1.86.1 2.8 4.0 1.36.3 2.5 4.9 1.56.1 2.8 4.7 1.26.4 2.9 4.3 1.36.6 3.0 4.4 1.46.8 2.8 4.8 1.46.7 3.0 5.0 1.76.0 2.9 4.5 1.55.7 2.6 3.5 1.05.5 2.4 3.8 1.15.5 2.4 3.7 1.05.8 2.7 3.9 1.26.0 2.7 5.1 1.65.4 3.0 4.5 1.56.0 3.4 4.5 1.66.7 3.1 4.7 1.56.3 2.3 4.4 1.35.6 3.0 4.1 1.35.5 2.5 4.0 1.35.5 2.6 4.4 1.26.1 3.0 4.6 1.45.8 2.6 4.0 1.25.0 2.3 3.3 1.05.6 2.7 4.2 1.35.7 3.0 4.2 1.25.7 2.9 4.2 1.36.2 2.9 4.3 1.35.1 2.5 3.0 1.15.7 2.8 4.1 1.36.3 3.3 6.0 2.55.8 2.7 5.1 1.97.1 3.0 5.9 2.16.3 2.9 5.6 1.86.5 3.0 5.8 2.27.6 3.0 6.6 2.14.9 2.5 4.5 1.77.3 2.9 6.3 1.86.7 2.5 5.8 1.87.2 3.6 6.1 2.56.5 3.2 5.1 2.06.4 2.7 5.3 1.96.8 3.0 5.5 2.15.7 2.5 5.0 2.05.8 2.8 5.1 2.46.4 3.2 5.3 2.36.5 3.0 5.5 1.87.7 3.8 6.7 2.27.7 2.6 6.9 2.36.0 2.2 5.0 1.56.9 3.2 5.7 2.35.6 2.8 4.9 2.07.7 2.8 6.7 2.06.3 2.7 4.9 1.86.7 3.3 5.7 2.17.2 3.2 6.0 1.86.2 2.8 4.8 1.86.1 3.0 4.9 1.86.4 2.8 5.6 2.17.2 3.0 5.8 1.67.4 2.8 6.1 1.97.9 3.8 6.4 2.06.4 2.8 5.6 2.26.3 2.8 5.1 1.56.1 2.6 5.6 1.47.7 3.0 6.1 2.36.3 3.4 5.6 2.46.4 3.1 5.5 1.86.0 3.0 4.8 1.86.9 3.1 5.4 2.16.7 3.1 5.6 2.46.9 3.1 5.1 2.35.8 2.7 5.1 1.96.8 3.2 5.9 2.36.7 3.3 5.7 2.56.7 3.0 5.2 2.36.3 2.5 5.0 1.96.5 3.0 5.2 2.06.2 3.4 5.4 2.35.9 3.0 5.1 1.8
阅读全文
0 0
- matlab自带的分类器的测试和分类
- matlab中自带的分类器
- matlab自带的分类器的使用实例
- matlab自带各种分类器的使用示例
- matlab自带各种分类器的使用示例
- Matlab自带的分类学习工具箱(SVM、决策树、Knn等分类器)
- ENVI自带的非监督分类测试情况
- matlab自带的分类器对人脸、鼻子、嘴进行检测
- 利用OpenCV自带的haartraining程序训练分类器并测试
- 用OpenCV自带的haar training程序训练分类器并测试
- mahout自带的例子 -------------------------分类
- matlab 自带分类器(2012b以上)
- 目标检测之训练opencv自带的分类器
- 利用OpenCV自带的traincascade程序训练分类器
- 一个自带简易数据集的模拟线性分类器matlab代码——实验训练
- 如何利用OpenCV自带的haar training程序训练分类器分类
- 用caffe自带的训练好的模型测试图片的分类结果,实现啦啦啦
- 模式识别中Fisher分类器的Matlab实现及测试
- tbd和dylib
- 又快又稳地安装mxnet-cu8.0
- 了解目前火热的AI行业
- 设置:查看历史记录的时间
- jquery查找父元素、子元素(个人经验总结)--zsl代修改
- matlab自带的分类器的测试和分类
- servicegroup的mc实现
- RxJava1.0+Retrofit结合使用
- 欢迎使用CSDN-markdown编辑器
- java日期工具类2
- 软件调试笔记42
- 利用用户的行为数据
- 词频分析
- centos6.5卸载自带jdk