在Python中,SVM有现成的包sklean可以调用,我们直接使用就好了。
例如我们有这样的一些数据:
经过训练,我们可以画出决策边界:
SVC下面可以选择一下几种核函数,使用的最多的径向基(rbf)核函数是默认的:
rbf(默认)
linear
poly
sigmoid
precomputed
或者也可以自定义核函数。
需要注意的是,高斯核函数公式为:
但是在 sklean 中径向基(rbf)核函数计算的公式为:
当然我们可以将 gamma 看作:
下面是简单的代码实现:
from sklearn import svm
# 训练svm
clf_RBF = svm.SVC()
clf_RBF.set_params(kernel='rbf', C=1.0, gamma=50)
clf_RBF.fit(X,y)
print "预测精准度:%s" % clf_RBF.score(Xval,yval)
print "预测:%s" % clf_RBF.predict(Xval)
下面是参考的链接文档:
http://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html
正如Andrew Ng所说,使用svm进行训练,相比神经网络来说,确实训练速度要快很多。
不过只有当特征数量 n 很小, 训练集数据量 m 中等的时候,才建议使用高斯核函数来训练SVM,例如 n 的范围是 ( 1,1000 ) , m 的范围是 ( 10,10000 ) 。
如果特征数量 n 远远大于训练样本集 m,或者特征数量 n 很小,而训练样本集 m 很大,都不宜使用高斯核函数。
更多代码,请点击阅读原文查看。
文章转载自公众号:止一之路
网友评论