【机器学习实战】支持向量机


SVM(Support Vector Machine)指的是支持向量机。在机器学习领域,是一个有监督的学习模型,通常用来进行模式识别、分类以及回归分析。下面用鸢尾花数据集利用svm进行分类。

试玉要绕三日满,辩才需待七年期。(白居易)


SVM算法

from sklearn import svm # svm
import numpy as np
from sklearn import model_selection  # 模型选择
import matplotlib.pyplot as plt
import matplotlib as mpl
from matplotlib import colors
mpl.rcParams['font.sans-serif'] = [u'SimHei']
mpl.rcParams['axes.unicode_minus'] = False

# 转换类别函数
def iris_type(s):
    class_label = {b'Iris-setosa': 0, b'Iris-versicolor': 1, b'Iris-virginica': 2}
    return class_label[s]

# 导入txt文件(逗号分割,并做数据转换)
filepath = 'iris.txt'
data = np.loadtxt(filepath, dtype=float, delimiter=',', converters={4: iris_type})
# print(data)

# 训练和测试集
X, y = np.split(data, (4,),axis=1)
x = X[:, 0:2]  # 取前两列
x_train, x_test, y_train, y_test = model_selection.train_test_split(x, y, random_state=1, test_size=0.3) # 测试集占30%

# 建模
# classifier=svm.SVC(kernel='linear',gamma=0.1,decision_function_shape='ovo',C=0.1) # 线性核函数,C越大分类效果越好
classifier = svm.SVC(kernel='rbf', gamma=0.1, decision_function_shape='ovo', C=0.8) # 高斯核,gamma越大,分类效果越好;'ovo'时,二分类;'ovr'时,为多分类
classifier.fit(x_train, y_train.ravel())

# 预测
print("训练准确率:", classifier.score(x_train, y_train))
y_hat = classifier.predict(x_train) # 训练预测值
print("测试准确率:", classifier.score(x_test, y_test))
y_hat = classifier.predict(x_test) #测试预测值

训练准确率: 0.8380952380952381
测试准确率: 0.7777777777777778

### 可视化(建立网格)
x1_min, x1_max = x[:, 0].min(), x[:, 0].max()  # 第1列范围值
x2_min, x2_max = x[:, 1].min(), x[:, 1].max()  # 第2列范围值
x1, x2 = np.mgrid[x1_min:x1_max:200j, x2_min:x2_max:200j]  # 网格采样点x1,x2(均200x200)
grid_test = np.stack((x1.flat, x2.flat), axis=1)  # 分成多个测试点(40000x2)
grid_hat = classifier.predict(grid_test)  # 对分的每一小份进行预测(40000x1)
grid_hat = grid_hat.reshape(x1.shape)  # 转换为200x200

# 绘图1
cm_light = mpl.colors.ListedColormap(['#A0FFA0', '#FFA0A0', '#A0A0FF']) #绿红蓝颜色;若用'g', 'r', 'b'颜色较深
plt.pcolormesh(x1, x2, grid_hat, cmap=cm_light)  # 显示区域颜色
plt.plot(x[:, 0], x[:, 1], 'o', color='blue')
plt.scatter(x_test[:, 0], x_test[:, 1], s=120, facecolors='red', zorder=10)  # 圈中测试集样本(标记红点)
plt.xlabel(u'花萼长度', fontsize=13)
plt.ylabel(u'花萼宽度', fontsize=13)
plt.xlim(x1_min, x1_max)
plt.ylim(x2_min, x2_max)
plt.title(u'SVM分类', fontsize=15)

y_train_hat = classifier.predict(x_train)
y_train_1d = y_train.reshape((-1))
comp = zip(y_train_1d, y_train_hat)  # 实际与预测训练结果整合
# print(list(comp))

y_test_hat = classifier.predict(x_test)
y_test_1d = y_test.reshape((-1))
comp = zip(y_test_1d, y_test_hat) # 实际与预测测试结果整合
# print(list(comp))

# 绘图2
plt.figure()
x=np.arange(x_test.shape[0])
plt.scatter(x, y_test_1d,marker='o',color='b',s=50) # 拟合图
plt.scatter(x, y_test_hat,marker='+',color='r',s=50)
plt.legend(labels=['estimate','real'], loc='upper right')
plt.title(u'SVM预测', fontsize=15)
plt.show()

在这里插入图片描述
图为对训练样本进行分类(标红为测试样本)。
在这里插入图片描述
图为对测试样本进行预测。

但利用SVM做回归的方法是没有意义的,因为它将标签处理为0,1,2已经不具有真实数据的属性,可考虑SVR来做回归。

说明:本文是从相关博文的分享总结与补充而来,如有疑问,还望各位同仁与前辈指正。

附作者相关研究:
Python:
Python实现线性回归、逻辑回归、KNN、SVM、朴素贝叶斯、决策树、K-Means7种机器学习算法的经典案例——亲测可用,链接
https://download.csdn.net/download/qq_35778860/20715889
Python实现飞机大战的完整代码——亲测可用,链接
https://download.csdn.net/download/qq_35778860/57165535
Python爬虫获取豆瓣网评分Top200的电影——亲测可用,链接
https://download.csdn.net/download/qq_35778860/56379309
Python根据下拉选项绘制雷达图和柱形图(异常预控平台)——亲测可用,链接
https://download.csdn.net/download/qq_35778860/20715210
Python根据下拉选项绘制雷达图和柱形图(异常预控平台)——亲测可用,链接
https://download.csdn.net/download/qq_35778860/20715210
python实现雷达图——亲测可用,链接
https://download.csdn.net/download/qq_35778860/20695215
基于python的北京房屋出租数据可视化分析与3D展示——亲测可用,链接
https://download.csdn.net/download/qq_35778860/20675051
基于Python设计的web接口聊天机器人
https://download.csdn.net/download/qq_35778860/66662593
用Python进行自然语言处理(中文).rar
https://download.csdn.net/download/qq_35778860/63652414
《机器学习实战》全书python代码——很全很完整
https://download.csdn.net/download/qq_35778860/62203534
Python3实现十大排序算法
https://download.csdn.net/download/qq_35778860/61630851
C#
成绩管理系统(C/S结构的应用系统,含access数据库)——C#实现
https://download.csdn.net/download/qq_35778860/66967387
C#实现学生信息管理系统(包括增删改查功能)——亲测可用
https://download.csdn.net/download/qq_35778860/61620149
Matlab
极限学习机ELM+OSELM+KELM+半监督SSELM+USELM的matlab程序(附完整代码)
https://download.csdn.net/download/qq_35778860/56378533
P+近邻KNN+LS最小二乘算法的matlab代码——亲测可用(含实例)
https://download.csdn.net/download/qq_35778860/56378309
基于matlab的卷积神经网络实现手写数字识别
https://download.csdn.net/download/qq_35778860/66667747
基于MATLAB的人工蜂群算法
https://download.csdn.net/download/qq_35778860/66665944
利用MATLABsilulink搭建有源电力滤波器仿真.zip
https://download.csdn.net/download/qq_35778860/63659150
动态规划MATLAB程序.zip
https://download.csdn.net/download/qq_35778860/63658838
基于matlab的模式识别基础实例源代码.zip
https://download.csdn.net/download/qq_35778860/63658486
Matlab_动态窗口法实现机器人在障碍环境下的模拟避碰仿真.zip
https://download.csdn.net/download/qq_35778860/63658232
bp神经网络整定pid参数matlab应用程序.rar
https://download.csdn.net/download/qq_35778860/63656174
利用深度学习的matlab程序编码仿真实现图像分割.zip
https://download.csdn.net/download/qq_35778860/63655267
Java
基于java的信息管理系统
https://download.csdn.net/download/qq_35778860/66658535
Java swing学生成绩系统(源码+数据库脚本).rar
https://download.csdn.net/download/qq_35778860/63653951
Jsp
jsp学生信息管理系统(源码+数据库脚本).zip
https://download.csdn.net/download/qq_35778860/63653655
SCN
随机配置网络SCN实现的matlab代码——亲测可用
https://download.csdn.net/download/qq_35778860/61636684
BLS
宽度学习BLS的matlab代码+Mnist数据集
https://download.csdn.net/download/qq_35778860/61635045
Mysql
Mysql增删改查代码操作,很全很完整——亲测可用
https://download.csdn.net/download/qq_35778860/61626574
C
基于单片机的交通灯控制系统设计(含代码,原理图)——C语言实现
https://download.csdn.net/download/qq_35778860/60383113
基于单片机的温度控制系统设计代码(含代码,原理图)——C语言实现
https://download.csdn.net/download/qq_35778860/60379923
郭天祥51单片机书中400例程——亲测可用
https://download.csdn.net/download/qq_35778860/58014293
其他
微信转盘抽奖小程序源码.rar
https://download.csdn.net/download/qq_35778860/63652890

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 机器学习实战Python基于支持向量机(SVM)是一种强大的分类器算法。SVM是一种监督学习方法,可以用于解决二分类和多分类问题。 SVM的基本思想是找到一个最佳的超平面,将数据分割成不同的类别。超平面被定义为在n维空间中具有n-1维的子空间。这个子空间可以将不同类别的数据点分开,并且尽可能地最大化边界。这就意味着SVM在分类时尽量避免误分类,并且对于新的未知数据具有较好的泛化能力。 在Python中,我们可以使用scikit-learn库中的SVM实现机器学习任务。首先,我们需要导入必要的库和数据集。然后,我们可以对数据集进行预处理,如特征缩放和数据划分。接下来,我们可以创建一个SVM分类器,并使用训练数据进行模型的训练。训练完成后,我们可以使用测试数据进行预测,并评估模型的性能。 SVM还有一些重要的参数需要调节,如C和gamma。C表示惩罚项的权重,用于控制分类器的错误率和边界的平衡。较大的C值会减小错误率,但可能导致边界过拟合。gamma表示径向基函数核的参数,影响分类器的决策边界的灵活性。较大的gamma值会导致边界更加精确地拟合训练数据,但可能导致过拟合。 总的来说,机器学习实战Python基于支持向量机(SVM)是一个强大的分类器算法,可以用于解决二分类和多分类问题。在实际应用中,我们需要注意调节参数,使得分类器具有良好的泛化能力。 ### 回答2: 机器学习实战是一本非常实用的书籍,其中详细介绍了如何使用Python编程语言基于支持向量机(SVM)进行机器学习实践。 支持向量机是一种强大的监督学习算法,可以用于解决分类和回归问题。该算法通过寻找一个最优的超平面来分割样本空间,使得不同类别的样本尽可能远离超平面。实际上,SVM通过最大化支持向量与超平面的距离,来确保分类的准确性和泛化能力。 在书籍中,作者通过经典的例子和详细的代码示例,展示了如何应用Python编程语言和scikit-learn库来构建和训练SVM模型。读者将学会如何准备数据集,进行特征选择和数据预处理,选择合适的SVM参数以及评估模型的性能。 此外,书中还强调了交叉验证、网格搜索和模型调优等重要概念。这些概念是整个机器学习过程中不可或缺的一部分,能够帮助我们提高模型的准确性和可靠性。 机器学习实战还提供了丰富的示例和应用,涵盖了多个领域,如文本分类、手写数字识别和人脸识别等。通过这些实例,读者可以深入理解SVM在实际问题中的应用。 总而言之,机器学习实战是一本非常实用的书籍,提供了丰富的例子和代码,使读者能够快速上手并应用SVM算法解决实际问题。无论是对于初学者还是有一定机器学习经验的人来说,这本书都是一本值得推荐的学习资料。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

youthlost

您的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值