关注+星标,听说他有点东西

全文共1811字,阅读全文需14分钟

写在前面的话

大家好,我是小一

本节实战是我们大话系列的第4个实战项目,也是本系列的第11篇原创文章

还记得前面写Python高阶系列的时候也一口气写了10篇原创,那10篇文章用了不到两个星期,丝毫不带犹豫的。

那会写文章都是在下班之后才开始,并且还抽空在牛客网刷完了所有的SQL题,在力扣上也刷了不少算法题,现在想来也不明白当时哪来的时间。

如果非要形容一下那段时间的话,那只能一个词来形容:时间刺客

有空再聊其他的,我们先来看今天的实战项目

实战之前你还需了解这些

我们知道针对样本有线性SVM和非线性SVM

同样的在sklearn 中提供的这两种的实现,分别是:LinearSVC和SVC

SVC?不应该是SVM吗?

SVC:Support Vector Classification 用作处理分类问题

那是不是意味着还可以处理回归问题?

是的,没错。但我们常用SVM来做分类问题,处理回归问题会用到LinearSVR和SVR(R代表Regression)

SVC和LinearSVC

LinearSVC是线性分类器,用于处理线性分类的数据,且只能使用线性核函数

SVC是非线性分类器,即可以使用线性核函数进行线性划分,也可以使用高维核函数进行非线性划分

SVM的使用

在sklearn 中,同样还是一句话调用SVM

from sklearn import svm

如何创建SVM分类器呢?

主要说一下SVC的创建,因为它的参数比较重要

model = svm.SVC(kernel='rbf', C=1.0, gamma=0.001)

分别解释一下三个重要参数:

  • kernel代表核函数的选择,有四种选择,默认rbf(即高斯核函数)

  • 参数C代表目标函数的惩罚系数,默认情况下为 1.0

  • 参数gamma代表核函数的系数,默认为样本特征数的倒数

其中kernel代表的四种核函数分别是:

  • linear:线性核函数,在数据线性可分的情况下使用的

  • poly:多项式核函数,可以将数据从低维空间映射到高维空间

  • rbf:高斯核函数,同样可以将样本映射到高维空间,但所需的参数较少,通常性能不错

  • sigmoid:sigmoid核函数,常用在神经网络的映射中

SVM的使用就介绍这么多,来实战测试一下

实战项目

1. 数据集

SVM的经典数据集:乳腺癌诊断

医疗人员采集了患者乳腺肿块经过细针穿刺 (FNA) 后的数字化图像,并且对这些数字图像进行了特征提取,这些特征可以描述图像中的细胞核呈现。通过这些特征可以将肿瘤分成良性和恶性

本次数据一共569条、32个字段,先来看一下具体数据字段吧

字段含义

其中mean结尾的代表平均值、se结尾的代表标准差、worst结尾代表最坏值(这里具体指肿瘤的特征最大值)

所有其实主要有10个特征字段,一个id字段,一个预测类别字段

我们的目的是通过给出的特征字段来预测肿瘤是良性还是恶性

准备好了吗?3,2,1 开始

2. 数据EDA

EDA:Exploratory Data Analysis探索性数据分析

先来看数据分布情况

数据整体分布情况

一共569条、32个字段。32个字段中1个object类型,一个int型id,剩下的都是float 类型。

另外:数据中不存在缺失值

大胆猜测一下,object类型可能是类别型数据,即最终的预测类型,需要进行处理,先记下

再来看连续型数据的统计数据:

连续型数据

好像也没啥问题(其实因为这个数据本身比较规整)

那直接开始特征工程吧

3. 特征工程

首先就是将类别数据连续化

再来观察每一个特征的三个指标:均值、标准差和最大值。

优先选择均值,最能体现该指特征的整体情况

现在还有十个特征,我们通过热力图来看一下特征之间的关系

# 热力图查看特征之间的关系
sns.heatmap(df_data[df_data_X.columns].corr(), linewidths=0.1, vmax=1.0, square=True,cmap=sns.color_palette('RdBu', n_colors=256),linecolor='white', annot=True)
plt.title('the feature of corr')
plt.show()

热力图是这样的:

注意红框圈出的部分

我们发现radius_mean、perimeter_mean和area_mean这三个特征强相关,那我们只保留一个就行了,这里保留热力图里面得分最高的perimeter_mean

最后一步,因为是连续数值,最好对其进行标准化

标准化之后的数据是这样的:

数据标准化

4. 训练模型

上面已经做好了特征工程,我们直接塞进模型看看效果怎么样

因为并不知道数据样本到底是否线性可分,所有我们都来试一下两种算法

先来看看LinearSVC 的效果

LinearSVC

效果很好,简直好的不行

这个准确率就不要纠结了,后面真正做实际案例的时候再纠结准确率吧

ok,还有SVC的效果

因为SVC需要设置参数,直接通过网格搜索让机器自己找到最优参数

网格搜索确定最优参数并训练

效果更好,小一我一时都惊呆了

可以看出,最终模型还是选择rbf高斯核函数,果然实至名归

写在后面的话

需要源代码的同学后台回复SVM

本节项目主要是介绍了SVM在skearn中的相关参数,实战项目中主要通过数据EDA+特征工程完成了数据方面的工作,然后通过交叉验证+网格搜索确定了最优模型和最优参数

算法学起来确实很吃力,不过一个算法+一个项目的学,应该会比单纯推算法有意思些,也会有成就感些。

我是小一,第一步的一,我们下节见!

即使是刺客,也会留下影子

大话系列 | SVM(下)—时间刺客带你做项目相关推荐

  1. SVM(下)—时间刺客带你做项目

    公众号后台回复"图书",了解更多号主新书内容 作者:小一 来源:小一的学习笔记 写在前面的话 大家好,我是小一 本节实战是我们大话系列的第4个实战项目,也是本系列的第11篇原创文章 ...

  2. Java程序员用下班时间给学弟做了一个在线考试系统

    文章目录 前言 一.框架介绍 1.1.Spring 1.2.SpringMVC 1.3.MyBatis 1.4.SSM整合 二.开发环境 三.系统功能 3.1 考试界面登陆 3.2 选择试题 3.3 ...

  3. QT技巧系列(5)按时间顺序列出目录下所有的文件名

                                   QT技巧系列(5)按时间顺序列出目录下所有的文件名 包含文件 #include <qstringlistmodel.h> #i ...

  4. 大话系列|决策树—相亲?怎么说?

    ↑关注+星标,听说他有点东西 全文共3123字,阅读全文需16分钟 情景一:留学归来韩梅梅 都说女大十八变,确实不假,用在韩梅梅身上更甚贴近. 韩梅梅:留学归来,金融硕士,名企上班,不过她最近却遇到了 ...

  5. 【MIUI9_7.12.05】小米6 sagit 高通骁龙835 基于安卓N(Android 7.1)时间刺客修改精简优化版本

    小米6 sagit 高通骁龙835 基于安卓N(Android 7.1) MIUI9 时间刺客修改精简优化版本 搞机条款:(温馨提醒,不看者默认代表同意!) (1)本人任何刷机包均自带Supersu_ ...

  6. 大话系列 | 贝叶斯(上)—下雨天吃什么?

    ↑关注+星标,听说他有点东西 全文共3038字,阅读全文需11分钟 写在前面的话 前面用了三篇内容讲了决策树算法,也算是浅入浅出了,对于入门来说还是足够的 大话系列 | 决策树(上篇)-理论 大话系列 ...

  7. openresty开发系列20--lua的时间操作

    openresty开发系列20--lua的时间操作 在 Lua 中,函数 time.date 和 difftime 提供了所有的日期和时间功能. 在 OpenResty 的世界里,不推荐使用这里的标准 ...

  8. Java EXCEL 表格导入导出(带下拉选-带VLOOKUP函数封装)

    Java EXCEL 表格导入导出(带下拉选-带VLOOKUP函数封装) 对于excel Java POI 使用 目前简单导出导入功能网上很多,但是对于有下拉选,样式等缺点却是最大硬伤,故此封装一个通 ...

  9. 大话系列 | 逻辑回归的入门与优化

    ↑关注+星标,听说他有点东西 全文共2307字,阅读全文需8分钟 写在前面的的话 大家好,我是小一 这是大话系列的第8节算法,也是本系列的第16篇原创文章. 阅读本文请先了解线性回归的算法推导与优化: ...

最新文章

  1. 小学计算机课教学设计,小学信息技术教学设计三篇
  2. POJ 1523 SPF (割点 点双连通分量)
  3. es6 prototype 属性和__proto__属性
  4. 程序员相亲,因一双运动鞋惨被拒绝
  5. 基于python的web应用(二)
  6. 二维码生成器如何制作圆形二维码
  7. bootmgr快速修复win7_【win7共享软件下载】win7共享软件(局域网共享)下载 v7.2.8 免费版...
  8. 分享一个完全免费的高质量 PPT 模板下载网站
  9. Failed to obtain JDBC Connection;
  10. 2015三十本好书推荐及理由
  11. elasticjob已下线_elasticJob 源码解析之自诊断恢复
  12. Vue3+Vite+TS后台项目 ~ 10.商品管理
  13. ⭐️Python实用小工具之制作酷炫二维码(有界面、附源码)⭐️
  14. python程序运行时间的几种分析方法
  15. 专访王博,国内资深游戏3D角色美术大神
  16. Wireshark的基本使用
  17. 【RTX51 Tiny入门】01_RTX51 Full Tiny简介
  18. access日期如何增加年数_ACCESS支持的时间日期函数
  19. 改变elementui卡片crad样式_修改ElementUI样式的几种方式
  20. solidity开发智能合约

热门文章

  1. linux系统最小化快捷键,Linux下Gnome桌面环境的快捷键汇总
  2. 获取对象到顶部的offsetTop值
  3. 提高mysql吞吐量_【调优】从吞吐量角度提升数据库整体性能
  4. 买路由要买带“WIFI6”认证的吗?看完本篇评测就知道了
  5. 001 物理机、虚拟机、有线网卡、无线网卡组局域网
  6. 马云成功的九大秘籍与经典语录[收藏]
  7. Concurrent Mark and Sweep
  8. 关于用java编写生成word文档,动态添加数据到word文档的一些心得
  9. 如何看穿数据可视化的谎言?
  10. windows服务器日志分析之查看日志