%% Matlab神经网络43个案例分析
% 初识SVM分类与回归
% by 李洋(faruto)
% http://www.matlabsky.com
% Email:faruto@163.com
% http://weibo.com/faruto
% http://blog.sina.com.cn/faruto
% 2013.01.01
%% A Little Clean Work
tic;
clear;
clc;
close all;
format compact;
%% 使用Libsvm进行分类的小例子
%{
一个班级里面有两个男生(男生1、男生2),两个女生(女生1、女生2),其中
男生1 身高:176cm 体重:70kg;
男生2 身高:180cm 体重:80kg;
女生1 身高:161cm 体重:45kg;
女生2 身高:163cm 体重:47kg;
如果我们将男生定义为1,女生定义为-1,并将上面的数据放入矩阵data中,
并在label中存入男女生类别标签(1、-1)
%}
data = [176 70;
180 80;
161 45;
163 47];
label = [1;1;-1;-1];
%{
这样上面的data矩阵就是一个属性矩阵,行数4代表有4个样本,列数2表示属性有两个,
label就是标签(1、-1表示有两个类别:男生、女生)。
%}
% 利用libsvm建立分类模型
model = svmtrain(label,data);
%{
此时该班级又转来一个新学生,其
身高190cm,体重85kg
我们想给出其标签(想知道其是男[1]还是女[-1])
由于其标签我们不知道,我们假设其标签为-1(也可以假设为1)
%}
testdata = [190 85];
testdatalabel = -1;
[predictlabel,accuracy] = svmpredict(testdatalabel,testdata,model);
predictlabel
if 1 == predictlabel
disp('==该生为男生');
end
if -1 == predictlabel
disp('==该生为女生');
end
% % 下面再使用libsvm工具箱本身带的测试数据heart_scale来进行一下测试
% 首先载入数据
load heart_scale;
data = heart_scale_inst;
label = heart_scale_label;
% 选取前200个数据作为训练集合,后70个数据作为测试集合
ind = 200;
traindata = data(1:ind,:);
trainlabel = label(1:ind,:);
testdata = data(ind+1:end,:);
testlabel = label(ind+1:end,:);
% 利用训练集合建立分类模型
model = svmtrain(trainlabel,traindata,'-s 0 -t 2 -c 1.2 -g 2.8');
% 利用建立的模型看其在训练集合上的分类效果
[ptrain,acctrain] = svmpredict(trainlabel,traindata,model);
% 预测测试集合标签
[ptest,acctest] = svmpredict(testlabel,testdata,model);
%% 使用Libsvm进行回归的小例子
% 生成待回归的数据
x = (-1:0.1:1)';
y = -x.^2;
% 建模回归模型
model = svmtrain(y,x,'-s 3 -t 2 -c 2.2 -g 2.8 -p 0.01');
% 利用建立的模型看其在训练集合上的回归效果
[py,mse] = svmpredict(y,x,model);
scrsz = get(0,'ScreenSize');
figure('Position',[scrsz(3)*1/4 scrsz(4)*1/6 scrsz(3)*4/5 scrsz(4)]*3/4);
plot(x,y,'o');
hold on;
plot(x,py,'r*');
legend('原始数据','回归数据');
grid on;
% 进行预测
testx = 1.1;
display('真实数据')
testy = -testx.^2
[ptesty,tmse] = svmpredict(testy,testx,model);
display('预测数据');
ptesty
%% Record Time
toc;
初识SVM分类与回归.zip
需积分: 0 11 浏览量
更新于2022-11-10
收藏 19KB ZIP 举报
标题中的“初识SVM分类与回归”表明我们将探讨的支持向量机(Support Vector Machine,简称SVM)在分类和回归任务中的应用。SVM是一种强大的监督学习算法,广泛用于机器学习领域,尤其是在二分类问题上表现优秀,同时也可以通过扩展处理多分类和回归问题。
描述中的“初识”意味着我们将从基础开始,了解SVM的基本概念和工作原理。SVM的核心思想是找到一个最优超平面,使得不同类别的样本点距离这个超平面最远。这个超平面可以用直线、超平面或非线性决策边界来表示,取决于数据的分布。
标签“py”暗示我们将使用Python编程语言来实现SVM。Python是数据科学和机器学习领域常用的编程语言,拥有丰富的库和工具,如Scikit-learn,它提供了SVM的实现。
在压缩包中,“Chapter_ClassifyRegressUsingLibsvm.m”可能是一个使用MATLAB编写的代码示例,展示了如何利用libsvm库进行分类和回归。libsvm是陈书维教授开发的一个开源库,专门用于支持向量机的训练和预测。MATLAB代码可能会涵盖数据预处理、模型训练、参数调优和结果评估等步骤。
“heart_scale.mat”可能是MATLAB的数据集,其中包含了用于示例的心脏病数据。这种类型的数据通常包括多个特征和一个二元目标变量,适合用SVM进行二分类任务。通过分析这个数据集,我们可以学习如何将SVM应用于实际问题。
至于“html”文件,可能是教程或者解释性文档,详细介绍了SVM的概念、算法以及如何在Python或MATLAB中使用libsvm库。这些文档可能涵盖了理论部分,如最大间隔、核函数(如线性核、多项式核、高斯核/RBF)、软间隔、以及交叉验证等关键概念,同时也包含实践部分,如加载数据、构建模型、可视化决策边界和评估性能。
这个压缩包提供了一个从理论到实践的SVM学习资源,包括使用Python和MATLAB的示例,以及一个心脏病数据集。通过学习,你可以掌握SVM的基础知识,理解其背后的数学原理,以及如何在实际项目中应用SVM进行分类和回归任务。同时,还会了解到如何利用libsvm库来优化和调整模型,提高预测性能。
然哥爱编程
- 粉丝: 5w+
- 资源: 95
最新资源
- [影音娱乐]彩森视频网络电台DQUS版_dqus.rar
- [影音娱乐]泉城JSP播客系统_video.rar
- 华为网络工程师HCIP培训PPT
- [影音娱乐]去秀吧视频秀 jsp学习版_goshow8com.rar
- springboot-大学生校园线上招聘系统.zip
- BBS论坛系统(jsp+sql).rar
- [整站程序]8优技巧网_8ujq.rar
- [整站程序]EasyJF官网全站源码_easyjfcom_src.rar
- CD销售管理系统JSP+SQL(源代码+论文+英文文献).rar
- BBS论坛系统(jsp+sql)130224.rar
- ERP管理系统(jsp+servlet).rar
- ERP管理系统(jsp+servlet)130305.rar
- springboot-基于云平台的信息安全攻防实训平台.zip
- FLVCode.rar
- GlobalEC_Enterprise_SQL_1.1.rar
- Java聊天室程序(java)130226.rar