当前位置: 首页 > news >正文

头歌——机器学习——支持向量机案例

第1关:基于支持向量机模型的应用案例

任务描述

本关任务:编写一个基于支持向量机模型的应用案例。

相关知识

在本应用案例中,我们借助一个具体的实际问题,来完整地实现基于支持向量机模型的开发应用。在此训练中,我们会介绍如何加载数据集、训练集与测试集的划分,以及如何利用sklearn构建支持向量机模型。

SVM应用案例之数据加载

Iris数据集是机器学习任务中常用的分类实验数据集,由Fisher在1936收集整理。 Iris中文名是安德森鸢尾花卉数据集,英文全称是Anderson’s Iris data set,是一类多重变量分析的数据集。Iris一共包含150个样本,分为3类,每类50个数据,每个数据包含4个属性。可通过花萼长度,花萼宽度,花瓣长度,花瓣宽度4个属性预测鸢尾花卉属于(Setosa,Versicolour,Virginica)三个种类中的哪一类。

样本局部截图:

,

我们可以通过以下方法从sklearn库加载该数据集。

  • dataset = load_iris()
SVM应用案例之数据划分

我们通常使用 train_test_split() 函数来随机划分样本数据为训练集和测试集,这样做的好处是随机客观的划分数据,减少人为因素。

其中该函数中包含的参数为:

train_data:待划分样本数据

train_target:待划分样本数据的结果(标签)

test_size:测试数据占样本数据的比例,若整数则样本数量

random_state:设置随机数种子,保证每次都是同一个随机数。若为0或不填,则每次得到数据都不一样 具体实现如下:

  • x_train,x_test,y_train,y_test = train_test_split(data_x,data_y,test_size=0.3)
SVM核心算法实现

sklearn库是机器学习领域当中最知名的 python 模块之一。他包含了很多种机器学习的内容,如分类,回归,数据处理,模型选择等等,用途广泛且非常方便,其中就包括了支持向量机模型,我们可以轻松地调用sklearn库中封装好的svm函数实现操作,具体操作如下:

  • from sklearn import svm;//调用sklearn库中的svm函数
  • clf = svm.SVC();//调用svm函数中的SVC核心算法
SVM应用案例之评价指标

在分类任务中,常有的评价指标如下图所示。

,

针对二分类问题,即将实例分成正类(positive)或负类(negative),在实际分类中会出现以下四种情况: (1)若一个实例是正类,并且被预测为正类,即为真正类(True Positive TP) (2)若一个实例是正类,但是被预测为负类,即为假负类(False Negative FN) (3)若一个实例是负类,但是被预测为正类,即为假正类(False Positive FP) (4)若一个实例是负类,并且被预测为负类,即为真负类(True Negative TN)

我们常用准确率来衡量分类器正确的样本与总样本数之间的关系。 具体公式为  Accuracy =TP+TN+FP+FNTP+TN​

在本次应用案例中,我们通过比较预测值与真实值来统计预测正确的数目,具体实现如下:

  • cnt = 0 //初始化为零
  • for i in range(len(y_test)): //通过循环来遍历寻找预测正确的数目
  • if y_predict[i] == y_test[i]:
  • cnt +=1
  • print(cnt/len(y_predict)) //由预测正确的数目除以总数目得到准确率accuracy。

第1关任务——代码题

from sklearn import svm # 加载sklearn库来调用svm算法
from sklearn.datasets import load_iris #加载sklearn库中的数据集
from sklearn.model_selection import train_test_split #划分测试集训练集#1.加载数据集
################# Begin #################
datas = load_iris()
################# End #################
data_x = datas.data #定义数据
data_y = datas.target #定义标签#2.划分训练集和测试集
################# Begin #################
x_train,x_test,y_train,y_test = train_test_split(data_x,data_y,test_size=0.3)
################# End ##################3.调用svm函数
################# Begin #################
from sklearn import svm;
clf = svm.SVC();
################# End #################clf = clf.fit(x_train,y_train) #开始训练svm模型
a = clf.predict(x_test) #开始测试cnt = 0
for i in range(len(y_test)):  #评价预测的结果if a[i] == y_test[i]:cnt +=1
print(cnt/len(a))

相关文章:

  • 解决Windows下移动硬盘无法弹出的问题:\$Extend\$RmMetadata\$TxfLog\$TxfLog.blf
  • 红队内网攻防渗透:内网渗透之内网对抗:横向移动篇Kerberos委派安全非约束系约束系RBCD资源系Spooler利用
  • 由 Vault 支持的 KES 的 MinIO Operator
  • 【INTEL(ALTERA)】Nios® II EDS 是否在 Windows 10 上受支持?
  • ansible copy模块参选选项
  • React useEffect 执行时机
  • 昇思25天学习打卡营第6天|使用静态图加速
  • Django 模版转义
  • LeetCode 算法:二叉树的中序遍历 c++
  • qemu 安装ubuntu22.04虚拟机 -纯命令行-可ssh-带网络-编译安装 linux kernel-编译安装 kernel module
  • 打包体积分析和优化
  • JDK动态代理
  • SolidityFoundry 安全审计测试 Delegatecall漏洞2
  • 【Unity服务器01】之【AssetBundle上传加载u3d模型】
  • 前端 三维空间笔记
  • 「面试题」如何实现一个圣杯布局?
  • 30秒的PHP代码片段(1)数组 - Array
  • Docker入门(二) - Dockerfile
  • Invalidate和postInvalidate的区别
  • Java Agent 学习笔记
  • javascript数组去重/查找/插入/删除
  • React+TypeScript入门
  • Redis中的lru算法实现
  • 彻底搞懂浏览器Event-loop
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 解析 Webpack中import、require、按需加载的执行过程
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 我从编程教室毕业
  • 小程序 setData 学问多
  • 小试R空间处理新库sf
  • 移动端唤起键盘时取消position:fixed定位
  • 树莓派用上kodexplorer也能玩成私有网盘
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​人工智能书单(数学基础篇)
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • $.ajax,axios,fetch三种ajax请求的区别
  • %@ page import=%的用法
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (Oracle)SQL优化技巧(一):分页查询
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (六)软件测试分工
  • (算法二)滑动窗口
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转)Oracle 9i 数据库设计指引全集(1)
  • (转)ORM
  • .net core webapi 大文件上传到wwwroot文件夹
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .net连接MySQL的方法
  • .NET使用HttpClient以multipart/form-data形式post上传文件及其相关参数
  • /dev下添加设备节点的方法步骤(通过device_create)