首页 > 编程知识 正文

简述svm算法的原理,支持向量机的基本思想

时间:2023-05-05 18:03:40 阅读:39091 作者:4271

一、原理:以一个二分类为例(y=-1,1 ) :希望支撑向量之间的距离尽可能远。

你可以看到上面三种方法的效果:

分类效果H1无法完成分类H2robost性差(在新数据集中鲁棒性差) H3最稳健1.SVM与其他分类器不同。

其他分类器将所有样本视为类似的作用,支持向量机仅重视几个支持向量

利用凸优化原理:

3 .维数超过样本样本数可以

SVM支持高维分类

4 .培训多个label原理:

例如,如果有1、2、3个类别,则可以训练3个SVM模型

二、当两个类看起来不一定是可时分的时,高维数据或线性不可分割数据使用核函数被高维映射,并且直观地理解如下:

三、代码示例1.简单示例

fromsklearnimportsvmx=[ 0,0 ]、[ 1,1 ]、[ 3,3 ]、[ 4,4 ] y=[ 0,1,1,1 ] clf=SVM.SVC (#结构模型clf.)

# SVM可视化importnumpyasnpimportmatplotlib.pyplotaspltfromsklearnimportsvmfromsklearn.datasetsimportmake _ blobs # we create 40 sk 如果设置y=make_blobs(n_samples=40,centers=2,random_state=6) random_state=6,则相同的随机数据print (NP.cate ) 1 ) )、axis=1) ) )。don ' tregularizeforillustrationpurposesclf=SVM.SVC (kernel=' linear ',C=1000 获得s=30个设置点的大小# plotthedecisionfunctionax=PLT.GCA (#当前坐标轴xlim=ax.get_xlim ) #并获得x轴最小、最大值print ) xlim ylim #计算各点到超平面的距离,有助于评价该模型的好坏。 xx=NP.linspace(xlim[0],xlim[1],30 ) YY=NP.Linspace(ylim[0],ylim[1],30 ) YY,xx=NP.meshgrid xx ) #将展开矩阵从最大值到最小值平均分割30得到两个30*30的矩阵#NP )的列不变# ravel多维矩阵称为一维向量xy=NP.vstack([xx.ravel )、YY.ravel () ) 2z=clf.decision _ function (xy ).reshape ) xx.shape ) z:30*30#decision此处为距超平面的距离# plotdecisionboundaryandmand 可以理解为matplotlib.puplot.contour用于绘制等高线#在此,以与超平面的距离绘制等高线,三个等级的等高线ax.contour(xx、YY、z levels=[-1,0,1 ],AAL ) '-- ' ] # plotsupportvectorsax.scatter (clf.) () ) ) ) 652 clf.support _ vectors _ [ :]

importnumpyasnpimportpandasaspdfromsklearn.model _ selectionimporttrain _ test _ split data=PD.read _ CSV (d 336536500 PDM bbsv SVM.CSV'(print(data.columns ) x=data[[ 'Alcohol ',' Malic acid ',' Ash 'Flavanoids ',' Nonflavanoid phenols ' od 280/od 315 of diluted wines ' proline ' ] y=data [ ' label ' ] x _ train,x_test,y_train,y _ test=train _ train test_size=0.1 ) froms klearn.svmimportsvcfromsklearn.model _ selectionimportgridsearchcvsvc=SVC (#网格搜索, 寻找最佳参数#具有多种核函数的paramgrid=DICT(kernel=['linear '、' poly '、' rbf '、' sigmoid'] )三折交叉校验gridsearched return_train_score=True ) grid=gridsearchcv.fit(x_train, y_train(print )最高得分为: ) % grid.best _ score _ (print )最高参数为: ) ) forkeyingrid.best_Params_ . (best _ model=grid.best _ estimator _ print (best _ model.predict (x _ test ) ) ) )索引x_test

1 .函数: np.concatenate、

2 .网格搜索

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。