如何使用libsvm进行分类

 我来答
personhandz
2016-04-10 · TA获得超过4032个赞
知道小有建树答主
回答量:443
采纳率:0%
帮助的人:389万
展开全部
其实使用libsvm进行分类很简单,只需要有属性矩阵和标签,然后就可以建立分类模型(model),然后利用得到的这个model进行分类预测了。
  一、属性矩阵和标签:
  一个班级里面有两个男生(男生1、男生2),两个女生(女生1、女生2),其中

  男生1 身高:176cm 体重:70kg;
男生2 身高:180cm 体重:80kg;
女生1 身高:161cm 体重:45kg;
女生2 身高:163cm 体重:47kg;
  如果将男生定义为1,女生定义为-1,并将上面的数据放入矩阵data中,即
  data = [176 70;

  180 80;

  161 45;

  163 47];
  复制代码
  在label中存入男女生类别标签(1、-1),即
  label = [1;1;-1;-1];
  复制代码
  这样上面的data矩阵就是一个属性矩阵,行数4代表有4个样本,列数2表示属性有两个,label就是标签(1、-1表示有两个类别:男生、女生)。
  二、有了上面的属性矩阵data,和标签label就可以利用libsvm建立分类模型了,简要代码如下:
  model = svmtrain(label,data);
  复制代码
  有了model就可以做分类预测,比如此时该班级又转来一个新学生,其
身高190cm,体重85kg
想通过上面这些信息就给出其标签(想知道其是男【1】还是女【-1】)
比如 令 testdata = [190 85]; 由于其标签不知道,假设其标签为-1(也可以假设为1)
  即
testdatalabel = -1;
然后利用libsvm来预测这个新来的学生是男生还是女生,代码如下:
  [predictlabel,accuracy] = svmpredict(testdatalabel,testdata,model)
  复制代码
  下面整体运行一下上面这段的背景数据和代码:
  data = [176 70;

  180 80;

  161 45;

  163 47];

  label = [1;1;-1;-1];
  model = svmtrain(label,data);
  testdata = [190 85];

  testdatalabel = -1;
  [predictlabel,accuracy] = svmpredict(testdatalabel,testdata,model);

  predictlabel
  复制代码
  运行结果如下:
  Accuracy = 0% (0/1) (classification)

  predictlabel =

  
  
  
  
Storm代理
2023-07-25 广告
StormProxies是一家国内优质海外HTTP代理商,拥有一个庞大的IP资源池,覆盖200多个地区,IP数量大且匿名度高。其优点还包括超高并发、稳定高效、技术服务等特点,同时提供HTTP、HTTPS以及SOCKS5协议支持。此外,Sto... 点击进入详情页
本回答由Storm代理提供
敏敏的自媒体
2016-04-10 · 知道合伙人互联网行家
敏敏的自媒体
知道合伙人互联网行家
采纳数:16780 获赞数:25042
世赫工业核心工程师

向TA提问 私信TA
展开全部
载Libsvm、Python和Gnuplot。我用的版本分别是:Libsvm(2.8.1),Python(2.4),Gnuplot(3.7.3)。注意:Gnuplot一定要用3.7.3版,3.7.1版的有bug. 修改训练和测试数据的格式(可以自己用perl编个小程序)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式