支持向量机的题库.docxVIP

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
支持向量机(SVM)介绍目标本文档尝试解答如下问题:如何使用OpenCV函数?CvSVM::train?训练一个SVM分类器,以及用?CvSVM::predict?测试训练结果。什么是支持向量机(SVM)?支持向量机 (SVM) 是一个类分类器,正式的定义是一个能够将不同类样本在样本空间分隔的超平面。换句话说,给定一些标记(label)好的训练样本 (监督式学习), SVM算法输出一个最优化的分隔超平面。如何来界定一个超平面是不是最优的呢? 考虑如下问题:假设给定一些分属于两类的2维点,这些点可以通过直线分割,我们要找到一条最优的分割线.Note?在这个示例中,我们考虑卡迪尔平面内的点与线,而不是高维的向量与超平面。这一简化是为了让我们以更加直觉的方式建立起对SVM概念的理解,但是其基本的原理同样适用于更高维的样本分类情形。在上面的图中,你可以直觉的观察到有多种可能的直线可以将样本分开。那是不是某条直线比其他的更加合适呢? 我们可以凭直觉来定义一条评价直线好坏的标准:距离样本太近的直线不是最优的,因为这样的直线对噪声敏感度高,泛化性较差。因此我们的目标是找到一条直线,离所有点的距离最远。由此, SVM算法的实质是找出一个能够将某个值最大化的超平面,这个值就是超平面离所有训练样本的最小距离。这个最小距离用SVM术语来说叫做?间隔(margin)。概括一下,最优分割超平面?最大化?训练数据的间隔。如何计算最优超平面?下面的公式定义了超平面的表达式:?叫做?权重向量?,??叫做?偏置(bias)?。See also?关于超平面的更加详细的说明可以参考T. Hastie, R. Tibshirani和 J. H. Friedman的书籍?Elements of Statistical Learning?, section 4.5 (SeperatingHyperplanes)。最优超平面可以有无数种表达方式,即通过任意的缩放??和??。习惯上我们使用以下方式来表达最优超平面式中??表示离超平面最近的那些点。这些点被称为?支持向量**。该超平面也称为 **canonical 超平面.通过几何学的知识,我们知道点??到超平面??的距离为:特别的,对于 canonical 超平面, 表达式中的分子为1,因此支持向量到canonical 超平面的距离是刚才我们介绍了间隔(margin),这里表示为?, 它的取值是最近距离的2倍:最后最大化??转化为在附加限制条件下最小化函数??。限制条件隐含超平面将所有训练样本??正确分类的条件,式中??表示样本的类别标记。这是一个拉格朗日优化问题,可以通过拉格朗日乘数法得到最优超平面的权重向量??和偏置??。源码 1 2 3 4 5 6 7 8 91011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768#include opencv2/core/core.hpp#include opencv2/highgui/highgui.hpp#include opencv2/ml/ml.hppusingnamespace cv;int main(){// Data for visual representationint width =512, height =512; Mat image = Mat::zeros(height, width, CV_8UC3);// Set up training datafloat labels[4] = {1.0, -1.0, -1.0, -1.0}; Mat labelsMat(3, 1, CV_32FC1, labels);floattrainingData[4][2] = { {501, 10}, {255, 10}, {501, 255}, {10, 501} }; Mat trainingDataMat(3, 2, CV_32FC1, trainingData);// Set up SVMs parametersCvSVMParamsparams;params.svm_type=CvSVM::C_SVC;params.kernel_type=CvSVM::LINEAR;params.term_crit=cvTermCriteria(CV_TERMCRIT_ITER, 100, 1e-6);// Train the SVMCvSVM SVM;SVM.train(trainingDataMat, labelsMat, Mat(), Mat(), params); Vec3

文档评论(0)

1112111 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档