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

SVM实战:鸢尾花分类

 

第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))

 

 

### 平台上的机器学习多分类学习实现 (Tougo)是一个在线实验教学平台,提供了丰富的课程资源和技术支持,尤其是在计算机科学领域。对于机器学习中的多分类问题,在该平台上可以通过多种方式实现。 #### 1. **多分类学习的基础** 多分类问题是机器学习的一个重要分支,其目标是对多个类别进行预测。常见的多分类算法包括但不限于决策树、随机森林和支持向量机(SVM)。其中,SVM通常通过“一对一”或“一对多”的策略扩展到多分类场景[^1]。 在实际应用中,基于FPGA的硬件加速技术可以显著提升SVM模型的性能,特别是在实时性和低功耗需求较高的场合[^2]。 #### 2. **平台的特点** 平台提供了一系列针对机器学习的教学资源和实践环境。这些资源涵盖了从基础理论到具体实现的全过程。用户可以在平台上找到于Python编程、Scikit-Learn库以及TensorFlow框架的相教程。此外,还可能提供一些特定的项目案例,帮助学生理解如何将理论应用于实际问题。 #### 3. **多分类学习的具体实现** 以下是利用平台实现多分类学习的一种常见流程: - 使用Python语言编写代码并调用Scikit-Learn库完成数据预处理、特征提取及建模工作。 - 下面展示了一个简单的例子,采用K近邻(KNN)算法来解决一个多分类问题: ```python from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier from sklearn.metrics import accuracy_score # 加载鸢尾花数据集作为示例 data = load_iris() X, y = data.data, data.target # 划分训练集与测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # 初始化KNN分类器 knn = KNeighborsClassifier(n_neighbors=3) knn.fit(X_train, y_train) # 预测并评估准确性 y_pred = knn.predict(X_test) print(f'Accuracy: {accuracy_score(y_test, y_pred)}') ``` 此代码片段展示了如何加载数据集、划分训练/测试集合、构建模型以及计算精度得分。类似的步骤也可以用于其他多分类算法,如支持向量机或神经网络。 #### 4. **结合FPGA的设计思路** 如果希望进一步优化性能,则可考虑引入FPGA技术支持。例如,当面对大规模数据流或者嵌入式设备部署时,传统的软件解决方案可能会受到限制。此时,借助VHDL或Verilog等硬件描述语言开发专用电路成为一种有效手段。不过需要注意的是,这种做法往往涉及复杂的工程设计过程,并且需要权衡不同因素之间的系,比如芯片面积利用率、延迟时间等等。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

花来❀勿Q

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值