如何实现机器学习SVM算法,针对这个问题,本文详细介绍了相应的分析和解决方法,希望能帮助更多想要解决这个问题的小伙伴找到更简单更容易的方法。
支持向量机(SVM)是一种基于统计学习理论的分类算法,适用于处理高维数据集。
这里有几个我认为相当不错的:
支持向量机的流行介绍(理解SVM的三个层次):http://blog.csdn.net/v_july_v/article/details/7624837
这篇文章很详细,从简单到深入。
还有一个简单通俗的版本:教你手工实现SVM算法:http://blog.csdn.net/alvine008/article/details/9097105.
SVN的原理很复杂,但想法很简单。总之,就是通过某种核函数,为高维空间中的数据找到一个最优超平面,这种核函数可以将两种数据分开。
对于不同的数据集,不同核函数的分类效果可能完全不同。有几个可选的内核函数:
线性函数:K(x,y)=x*y形式的线性函数;
多项式函数:k (x,y)=[(x,y) 1] d形式的多项式函数;
径向基函数:指数函数,如k (x,y)=exp(-| x-y | 2/D2);
Sigmoid函数:就是上一篇文章提到的Sigmoid函数。
让我们利用几个数据集,直接给出Python代码,看看运行效果:
测试1:身高体重数据
操作结果如下:
可以看出,对于这个数据集,三次多项式核函数的SVM是最好的。
00-1010最后,我们测试一个数据分类的边界为圆形的情况:一类在圆形内部,一类在原型外部。看看这种非线性数据SVM表现如何:
测试数据生成代码如下:
测试结果如下:
SVC(C=1.0,cache_size=200,class_weight=None,coef0=0.0,度数=3,gamma=0.0,内核='linear ',max_iter=-1,概率=False,random_state=None,
收缩=真,公差=0.001,详细=假)
0.65
SVC(C=1.0,cache_size=200,class_weight=None,coef0=0.0,度数=3,gamma=0.0,内核='poly ',max_iter=-1,概率=False,random_state=None,
收缩=真,公差=0.001,详细=假)
0.675
SVC(C=1.0,cache_size=200,class_weight=None,coef0=0.0,degree=3,gamma=0.0,kernel='rbf ',max_iter=-1,概率=False,random_state=None,
收缩=真,公差=0.001,详细=假)
0.9625
SVC(C=1.0,cache_size=200,class_weight=None,coef0=0.0,度数=3,gamma=0.0,内核='sigmoid ',max_iter=-1,概率=False,random_state=None,
收缩=真,公差=0.001,详细=假)
0.65
可以看出,对于这种边界,径向基函数的SVM得到了近乎完美的分类结果。
这里分享了关于如何实现机器学习SVM算法的问题的答案。希望
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/94360.html