机器学习--支持向量机 (SVM)算法的原理及优缺点
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了机器学习--支持向量机 (SVM)算法的原理及优缺点,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2455字,纯文字阅读大概需要4分钟。
内容图文
![机器学习--支持向量机 (SVM)算法的原理及优缺点](/upload/InfoBanner/zyjiaocheng/679/1718df67533444f9a7eb0255c618992e.jpg)
一、支持向量机 (SVM)算法的原理
支持向量机(Support Vector Machine,常简称为SVM)是一种监督式学习的方法,可广泛地应用于统计分类以及回归分析。它是将向量映射到一个更高维的空间里,在这个空间里建立有一个最大间隔超平面。在分开数据的超平面的两边建有两个互相平行的超平面,分隔超平面使两个平行超平面的距离最大化。假定平行超平面间的距离或差距越大,分类器的总误差越小。
对于线性可分的支持向量机求解问题实际上可转化为一个带约束条件的最优化求解问题:
推理过程:
结果:
对于线性不可分的支持向量机求解问题实际上可转化为一个带约束条件的soft-margin最优化求解问题:
二、代码实现
import numpy as np import matplotlib.pyplot as plt from sklearn import datasets from sklearn.preprocessing import StandardScaler from sklearn.svm import LinearSVC iris = datasets.load_iris() X = iris.data y = iris.target X = X[y<2,:2] y = y[y<2] plt.scatter(X[y==0,0], X[y==0,1], color='red') plt.scatter(X[y==1,0], X[y==1,1], color='blue') standardScaler = StandardScaler() standardScaler.fit(X) X_standard = standardScaler.transform(X) svc = LinearSVC(C=1e9) svc.fit(X_standard, y) def plot_svc_decision_boundary(model, axis): x0, x1 = np.meshgrid( np.linspace(axis[0], axis[1], int((axis[1]-axis[0])*100)).reshape(-1, 1), np.linspace(axis[2], axis[3], int((axis[3]-axis[2])*100)).reshape(-1, 1), ) X_new = np.c_[x0.ravel(), x1.ravel()] y_predict = model.predict(X_new) zz = y_predict.reshape(x0.shape) from matplotlib.colors import ListedColormap custom_cmap = ListedColormap(['#EF9A9A','#FFF59D','#90CAF9']) plt.contourf(x0, x1, zz, linewidth=5, cmap=custom_cmap) w = model.coef_[0] b = model.intercept_[0] # w0*x0 + w1*x1 + b = 0 # => x1 = -w0/w1 * x0 - b/w1 plot_x = np.linspace(axis[0], axis[1], 200) up_y = -w[0]/w[1] * plot_x - b/w[1] + 1/w[1] down_y = -w[0]/w[1] * plot_x - b/w[1] - 1/w[1] up_index = (up_y >= axis[2]) & (up_y <= axis[3]) down_index = (down_y >= axis[2]) & (down_y <= axis[3]) plt.plot(plot_x[up_index], up_y[up_index], color='black') plt.plot(plot_x[down_index], down_y[down_index], color='black') plot_svc_decision_boundary(svc, axis=[-3, 3, -3, 3]) plt.scatter(X_standard[y==0,0], X_standard[y==0,1]) plt.scatter(X_standard[y==1,0], X_standard[y==1,1])
输出结果:
内容总结
以上是互联网集市为您收集整理的机器学习--支持向量机 (SVM)算法的原理及优缺点全部内容,希望文章能够帮你解决机器学习--支持向量机 (SVM)算法的原理及优缺点所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。