matlab SVM有监督学习
来源:互联网 发布:淘宝客服不理人怎么办 编辑:程序博客网 时间:2024/06/05 20:18
SVM
在机器学习领域,支持向量机SVM(Support Vector Machine)是一个有监督的学习模型,通常用来进行模式识别、分类、以及回归分析。
SVM 百度百科
简单应用实例及matlab代码
*参考 :
1. http://blog.sina.com.cn/s/blog_71152aa70101tl62.html
2. http://www.cnblogs.com/darkknightzh/p/5554551.html
* 说明. matlab 版本: matlab_R2015a
**数据集: http://pan.baidu.com/s/1eRTNhXw,将参考1中数据集重新命名便于直接导入。
–icesongqiang
clear all;clc;%% 数据集已经整理,直接loadload ('bedroom.mat') % bedroomload ('forest.mat') % forestload ('labelset.mat') % labelsetdataset = [bedroom; forest];%%%% 训练集和测试集获取% 取bedroom,forest的前5行作为训练集train_set = [dataset(1:5, :); dataset(11:15, :)];% 相应的训练集的标签train_set_label = [labelset(1:5); labelset(11:15)];% 将第一类的6-10,第二类的16-20,做为测试集test_set = [dataset(6:10, :); dataset(16:20, :)];% 相应的测试集的标签test_set_label = [labelset(6:10); labelset(16:20)];%%%% 数据预处理,将训练集和测试集归一化到[0,1]区间[mtrain, ntrain] = size(train_set);[mtest, ntest] = size(test_set);test_dataset = [train_set; test_set];% mapminmax为matlab自带的归一化函数[dataset_scale, ps] = mapminmax(test_dataset', 0, 1)dataset_scale = dataset_scale';train_set = dataset_scale((1:mtrain), :);test_set = dataset_scale((mtrain+1):(mtrain+mtest), :);%%%% SVM网络训练model = svmtrain(train_set, train_set_label,'kernel_function','linear','showplot',true);%% SVM网络预测[predict_label] = svmclassify(model, test_set, 'showplot', true);%% 结果分析% 测试集的实际分类和预测分类图figure;hold on;plot(test_set_label,'o');plot(predict_label,'r*');xlabel('测试集样本','FontSize',12);ylabel('类别标签','FontSize',12);legend('实际测试集分类','预测测试集分类');title('测试集的实际分类和预测分类图','FontSize',12);grid on;
一些说明
- 最开始使用 参考1中
model = svmtrain(train_set_label, train_set, '-s 2 -c 1 -g 0.07');
- 1
- 1
会报出错误,个人感觉也应该是训练集参数在第一位,于是参考2中的
svmModel = svmtrain(trainData, trainLabel,'kernel_function','linear','showplot',true);
符合
SVMSTRUCT = svmtrain(TRAINING, Y, 'PARAM1',val1, 'PARAM2',val2, ...)
形式;
2. 参考1中
[predict_label] = svmpredict(test_set_labels, test_set, model);
没有svmpredict()函数,使用参考2中
predict_label = svmclassify(svmModel,testData,'showplot',true);
通过。
续
搞清楚了,原来上面是使用的matlab自带的SVM库,而参考1使用的libSVM,libSVM与matlab自带的SVM的区别参考3:
*参考3:
http://blog.sina.com.cn/s/blog_64b046c701018c8n.html
复制原文如下:
1 MATLAB自带的svm实现函数仅有的模型是C-SVC(C-support vector classification); 而libsvm工具箱有C-SVC(C-support vector classification),nu-SVC(nu-support vector classification),one-class SVM(distribution estimation),epsilon-SVR(epsilon-support vector regression),nu-SVR(nu-support vector regression)等多种模型可供使用。
2 MATLAB自带的svm实现函数仅支持分类问题,不支持回归问题;而libsvm不仅支持分类问题,亦支持回归问题。
3 MATLAB自带的svm实现函数仅支持二分类问题,多分类问题需按照多分类的相应算法编程实现;而libsvm采用1v1算法支持多分类。
4 MATLAB自带的svm实现函数采用RBF核函数时无法调节核函数的参数gamma,貌似仅能用默认的;而libsvm可以进行该参数的调节。
5 libsvm中的二次规划问题的解决算法是SMO;而MATLAB自带的svm实现函数中二次规划问题的解法有三种可以选择:经典二次方法;SMO;最小二乘。(这个是我目前发现的MATLAB自带的svm实现函数唯一的优点~)
而 libSVM的安装可以参考其他,不做其他深入了解。
- matlab SVM有监督学习
- matlab SVM有监督学习
- SVM算法(一)(有监督学习)
- SVM算法(二)(有监督学习)
- SVM算法(三)(有监督学习)
- SVM算法(四)(有监督学习)
- 机器学习-->监督学习-->SVM
- 有监督学习流程图
- 支持向量机SVM(Support Vector Machine)是一个有监督的学习模型
- 有监督学习&无监督学习
- 有监督学习VS无监督学习
- 有监督学习和无监督学习
- SVM(MATLAB) 学习总结
- SVM(MATLAB) 学习总结
- 01--有监督的学习
- 有监督回归:稀疏学习
- 有监督学习 和 无监督学习 的具体含义
- 有监督学习、无监督学习、参数估计、非参数估计
- Http、TCP/IP协议与Socket之间的区别
- 课程设计:源程序编译
- Linux命令行与shell脚本(15)--sed使用
- delphi popupmenu下的tag值获取
- 【Oracle】内连接、外连接、(+)的使用
- matlab SVM有监督学习
- MySQL操作mysqldump命令详解
- Java代理设计模式
- 仿今日头条进行点击弹出输入框输入法弹起。按返回键输入框和输入法同时消失。并且监听输入法随输入框消失而消失
- 关于输入挂
- Spring IOC与AOP的理解
- 青蛙跳台阶问题,常见面试算法题,斐波那契数列(Fibonacci Sequence)
- ubantu系统安装备份完全实录
- apache kafka中server.properties配置文件参数说明