机器学习---利用sklearn库实现SVM的花卉数据分类代码详解

2023-10-29

import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import  train_test_split
import matplotlib.pyplot as plt

# data
def create_data():
    iris = load_iris()
    df = pd.DataFrame(iris.data, columns=iris.feature_names)    #列为花卉数据的feature_names
    df['label'] = iris.target    #创造一个名为label的列,值是花卉数据的分类012
    df.columns = [
        'sepal length', 'sepal width', 'petal length', 'petal width', 'label'
    ]        #重命名列的名字
    #data取花卉数据的前两列和最后的分类数据
    data = np.array(df.iloc[:100, [0, 1, -1]])    #df是pandas中的DataFrame类型的,有个参数iloc前行后列,前面取了100行,只包含0/1分类
                                                  # 后面列表示取0,1,-1列

    for i in range(len(data)):
        if data[i, -1] == 0:
            data[i, -1] = -1
    #将所以label为0的改为-1
    return data[:, :2], data[:, -1]   #将花卉前两列数据和最后label数据分开返回

X, y = create_data()     #X中保存的是'sepal length', 'sepal width'前100行的数据,,y保存的是-1/1的label值
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25)
X_T_1=[]
X_T_2=[]
for i in range(len(y_test)):
    if y_test[i]==1:
        X_T_1=X_T_1+[X_test[i]]   #X_T_1中保存label为1的用于测试的花卉数据
    else:
        X_T_2=X_T_2+[X_test[i]]   #X_T_2中保存label为-1的用于测试的花卉数据

X_S_1=[]
X_S_2=[]
for i in range(len(y_train)):
    if y_train[i]==1:
        X_S_1=X_S_1+[X_train[i]]    #X_S_1中保存label为1的用于训练的花卉数据
    else:
        X_S_2=X_S_2+[X_train[i]]    #X_S_2中保存label为-1的用于训练的花卉数据

#将列表的形式转化为array的形式
X_T_1=np.array(X_T_1)
X_T_2=np.array(X_T_2)
X_S_1=np.array(X_S_1)
X_S_2=np.array(X_S_2)

plt.scatter(X_T_1[:,0],X_T_1[:,1], label='Test0')
plt.scatter(X_T_2[:,0],X_T_2[:,1], label='Test1')
plt.scatter(X_S_1[:,0],X_S_1[:,1], label='Train0')
plt.scatter(X_S_2[:,0],X_S_2[:,1], label='Train1')
plt.legend()
plt.show()
print("X的形状:",X.shape)

#以上都是处理数据部分
#利用sklearn 中的svm工具,将以上数据进行SVM分类,画出训练样本及测试样本的散状图、分离超平面、上边界、下边界。
#scikit-learn实例
from sklearn.svm import SVC
clf = SVC()
clf.fit(X_train, y_train)

'''
SVC中的参数
SVC(C=1.0, break_ties=False, cache_size=200, class_weight=None, coef0=0.0,
    decision_function_shape='ovr', degree=3, gamma='scale', kernel='rbf',
    max_iter=-1, probability=False, random_state=None, shrinking=True,
    tol=0.001, verbose=False)
'''
#测试集分数不是个定值,是会改变的
print("测试集分数:",clf.score(X_test, y_test))

#请补全代码 训练SVM
clf=SVC(kernel='linear',C=100)
clf.fit(X_train,y_train)
xaxis=np.linspace(min(X[:][0]),max(X[:][0])+2,10)
print(xaxis)
#二维坐标下的直线方程由Ax+By=C,clf.coef_表示[A,B],C即为clf.intercept_
w=clf.coef_[0]
# 计算斜率,即求-A/B
a=-w[0]/w[1]
# 得到分离超平面
y_sep=a*xaxis-(clf.intercept_[0])/w[1]     #即为y_sep=斜率*xaxis+截距
# 下边界超平面
b=clf.support_vectors_[0]        #clf.support_vectors_表示支持向量
yy_down=a*xaxis+(b[1]-a*b[0])
# 上边界超平面
b=clf.support_vectors_[-1]
yy_up=a*xaxis+(b[1]-a*b[0])
# 绘制超平面,plot用于画线
plt.plot(xaxis,y_sep,'k-')
plt.plot(xaxis,yy_down,'k--')
plt.plot(xaxis,yy_up,'k--')

plt.scatter(X_T_1[:,0],X_T_1[:,1],label='Test0')
plt.scatter(X_T_2[:,0],X_T_2[:,1],label='Test1')
plt.scatter(X_S_1[:,0],X_S_1[:,1],label='Train0')
plt.scatter(X_S_2[:,0],X_S_2[:,1],label='Train1')
plt.show()


'''
sklearn.svm.SVC
(C=1.0, kernel='rbf', degree=3, gamma='auto', coef0=0.0, shrinking=True, probability=False,tol=0.001, cache_size=200, class_weight=None, verbose=False, max_iter=-1, decision_function_shape=None,random_state=None)
参数:
C:C-SVC的惩罚参数C,默认值是1.0
C越大,相当于惩罚松弛变量,希望松弛变量接近0,即对误分类的惩罚增大,趋向于对训练集全分对的情况,这样对训练集测试时准确率很高,但泛化能力弱。C值小,对误分类的惩罚减小,允许容错,将他们当成噪声点,泛化能力较强。
kernel :核函数,默认是rbf,可以是‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’
– 线性:u'v
– 多项式:(gamma*u'*v + coef0)^degree
– RBF函数:exp(-gamma|u-v|^2)
– sigmoid:tanh(gamma*u'*v + coef0)
degree :多项式poly函数的维度,默认是3,选择其他核函数时会被忽略。
gamma : ‘rbf’,‘poly’ 和‘sigmoid’的核函数参数。默认是’auto’,则会选择1/n_features
coef0 :核函数的常数项。对于‘poly’和 ‘sigmoid’有用。
probability :是否采用概率估计?.默认为False
shrinking :是否采用shrinking heuristic方法,默认为true
tol :停止训练的误差值大小,默认为1e-3
cache_size :核函数cache缓存大小,默认为200
class_weight :类别的权重,字典形式传递。设置第几类的参数C为weight*C(C-SVC中的C)
verbose :允许冗余输出?
max_iter :最大迭代次数。-1为无限制。
decision_function_shape :‘ovo’, ‘ovr’ or None, default=None3
random_state :数据洗牌时的种子值,int值
主要调节的参数有:C、kernel、degree、gamma、coef0。
'''


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

机器学习---利用sklearn库实现SVM的花卉数据分类代码详解 的相关文章

  • 使用 Python 的字符串子序列内核和 SVM

    如何使用子序列内核 SSK Lodhi 2002 在 Python 中训练 SVM 支持向量机 我找到了使用幕府将军库的解决方案 您必须从提交安装它0891f5a38bcb https code google com p shogun to
  • 在 OpenCV 上使用 SVM 训练图像

    我正在尝试对图像进行分类 下一步我将根据特征进行分类 但现在只想尝试我是否做得对 这是我的代码 include
  • 确定 sklearn 中 SVM 分类器最有贡献的特征

    我有一个数据集 我想根据该数据训练我的模型 训练后 我需要了解对 SVM 分类器的分类有主要贡献的特征 森林算法有一种叫做特征重要性的东西 有类似的东西吗 是的 有属性coef 对于 SVM 分类器 但它仅适用于 SVM线性核 对于其他内核
  • 山西电力市场日前价格预测【2024-01-05】

    日前价格预测 预测说明 如上图所示 预测明日 2024 01 05 山西电力市场全天平均日前电价为259 10元 MWh 其中 最高日前电价为363 99元 MWh 预计出现在18 00 最低日前电价为0 00元 MWh 预计出现在11 1
  • 山西电力市场日前价格预测【2024-01-09】

    日前价格预测 预测说明 如上图所示 预测明日 2024 01 09 山西电力市场全天平均日前电价为314 92元 MWh 其中 最高日前电价为593 66元 MWh 预计出现在18 15 最低日前电价为54 95元 MWh 预计出现在13
  • 自动驾驶轨迹预测

    目录 神经网络轨迹预测综述 比较新的轨迹预测网络 Uber LaneRCNN 5 Google VectorNet 6 Huawei HOME 7 Waymo TNT 8 Aptive Covernet 9 NEC R2P2 10 商汤 T
  • MIT_线性代数笔记:复习二

    目录 第二单元主要内容 例题 第二单元主要内容 正交矩阵 Q 用矩阵形式描述正交性质 投影矩阵 P 最小二乘法 在方程无解时求 最优解 Gram Schmidt 正交化 从任意一组基得到标准正交基 策略是从向量 中减去投影到其它向量方向的分
  • 基于机器学习的贷中风险预测模型-江苏银行“随e融”杯-二等奖

    文章目录 源码下载地址 项目介绍 界面预览 项目备注 毕设定制 咨询 源码下载地址 源码下载地址 点击这里下载源码 项目介绍 基于机器学习的贷中风险预测模型 江苏银行
  • 如何处理 SVM 中的数据不平衡问题?

    如果我在较大的训练集上训练 SVM 并且类变量为 True 或 False 那么与训练集中的 False 值数量相比 True 值很少会影响训练模型 结果吗 它们应该相等吗 如果我的训练集 True 和 False 的分布不相等 我该如何解
  • 机器学习算法实战案例:LSTM实现多变量多步负荷预测

    文章目录 1 数据处理 1 1 数据集简介 1 2 数据集处理 2 模型训练与预测 2
  • 如何用GPT进行论文润色与改写?

    详情点击链接 如何用GPT GPT4进行论文润色与改写 一OpenAI 1 最新大模型GPT 4 Turbo 2 最新发布的高级数据分析 AI画图 图像识别 文档API 3 GPT Store 4 从0到1创建自己的GPT应用 5 模型Ge
  • 机器学习算法实战案例:Informer实现多变量负荷预测

    文章目录 机器学习算法实战案例系列 答疑 技术交流 1 实验数据集 2 如何运行自己的数据集 3 报错分析 机器学习算法实战案例系
  • 3D点云检测神技 | UFO来了!让PointPillars、PV-RCNN统统涨点!

    作者 AI驾驶员 编辑 智驾实验室 点击下方 卡片 关注 自动驾驶之心 公众号 ADAS巨卷干货 即可获取 点击进入 自动驾驶之心 3D目标检测 技术交流群 本文只做学术分享 如有侵权 联系删文 在这篇论文中提出了一个关于在3D点云中检测未
  • 史上最全自动驾驶岗位介绍

    作者 自动驾驶转型者 编辑 汽车人 原文链接 https zhuanlan zhihu com p 353480028 点击下方 卡片 关注 自动驾驶之心 公众号 ADAS巨卷干货 即可获取 点击进入 自动驾驶之心 求职交流 技术交流群 本
  • 开始弃用NeRF?为什么Gaussian Splatting在自动驾驶场景如此受欢迎?(浙江大学最新)...

    点击下方 卡片 关注 自动驾驶之心 公众号 ADAS巨卷干货 即可获取 今天自动驾驶之心为大家分享浙大刚刚出炉的3D Gaussian Splatting综述 文章首先回顾了3D Gaussian的原理和应用 借着全面比较了3D GS在静态
  • sklearn多类SVM函数

    我有多个类标签 想要计算模型的准确性 我有点困惑我需要使用哪个 sklearn 函数 据我了解 以下代码仅用于二元分类 dividing X y into train and test data X train X test y train
  • 一类 SVM libSVM

    假设我的特征向量是 x1 x2 xn 谁能给我一个使用 libSVM 训练一类 SVM 的代码 我应该如何使用交叉验证来学习参数 这可能对你有帮助 label ones Number Of your training instances 1
  • 测试示例集属性应等于训练示例集 Rapidminer SVM 的 OR 超集

    I am new to Rapid Miner and using SVM Linear in it My model is as I made Training Example set which consist of 3552 exam
  • scikit-learn:SVC 和 SGD 有什么区别?

    SVM http scikit learn org stable modules svm html classification http scikit learn org stable modules svm html classific
  • Java 的支持向量机?

    我想用Java编写一个 智能监视器 它可以随时发出警报detects即将到来的性能问题 我的 Java 应用程序正在以结构化格式将数据写入日志文件

随机推荐

  • java parser_java parser

    package org javaparser examples chapter2 import com github javaparser StaticJavaParser import com github javaparser ast
  • Seaborn常见绘图总结

    以前粗略的学习过Matplotlib绘图 Pandas绘图 这里是pandas的常见绘图总结 但是都未深入的去学习过 一遇到问题就翻文档 效率低下 听 他们 说matplotlib中的seaborn绘图很好看而且实用 所以 这里系统的总结一
  • web渗透测测试(sqlmap)

    通过分析靶机JLS02页面信息 寻找漏洞页面 将WEB服务存在SQL注入漏洞的页面名称作为Flag提交 Flag index2 php 通过本地PC中的渗透测试平台KALI2020对靶机进行SQL注入攻击 获取靶机的数据库信息 将用来存放W
  • JavaScript-----变量与数据类型

    目录 前言 1 注释 2 变量 定义变量 关键字 命名规范 3 数据类型 数据类型的判断 4 类型转换 前言 前面我们学过了C语言 Python Java之类的编程语言 所以我们有一定的基础的话学起来会比较轻松 同样的JavaScript也
  • hbase 知识点(1) hbase涉及维度

    1 数据模型 数据的存储方式 kv 非结构 2 存储模型 内存 磁盘 3 一致性 强一致性 4 物理模型 分布式 5 读写性能 同步写 副本支持读 6 辅助索引 key有效 bloom 7 故障管理 region移动 8 压缩 多种压缩算法
  • docker环境搭建实战--腾讯云课堂

    看完这篇文章 你会从一个docker小白变为一个不是那么菜的菜鸟 docker简介 docker是一个开放源代码软件项目 让应用程序部署软件的工作可以自动化进行 借此在linux操作系统上 提供一个额外的软件抽象层 以及操作系统层虚拟化的自
  • delphi操作ini文件

    INI文件操作 1 INI文件的结构 这是关于INI文件的注释部分 节点 关键字 值 INI文件允许有多个节点 每个节点又允许有多个关键字 后面是该关键字的值 类型有三种 字符串 整型数值和布尔值 其中字符串存贮在INI文件中时没有引号 布
  • J2SE-API:Object和System类的基本操作

    Object类 所有对象 包括数组 都实现这个类的方法 protected Object clone 创建并返回此对象的一个副本 boolean equals Object obj 指示其他某个对象是否与此对象 相等 protected v
  • PEP544——协议-结构化子类型(静态鸭子类型)

    文章目录 2 基本原理和目标 2 1 名义子类型 vs 结构子类型 2 2 非目标 3 结构子类型的现有方法 4 规范 4 1 术语 4 2 定义一个协议 4 3 协议成员 4 4 显式声明实现 4 5 合并以及拓展协议 4 6 泛型协议
  • 电商平台零售数据分析

    本次目标主要是利用RFM模型对用户进行分类 通过对比分析不同用户群体在时间 地区等维度下的交易量 交易金额等 总结分析结果并提出优化建议 R Recently 最近一次的消费时间 F Frequency 消费频率 单位时间的消费次数 M M
  • 高斯拟合原理_高斯过程回归(GPR)

    1 高斯过程是定义在连续域上的无限多个服从高斯分布的随机变量所组成的随机过程 2 高斯过程回归有两个视角 权重空间视角和函数空间视角 这两者是等价的 3 权重空间视角是贝叶斯线性回归与核函数的结合形式 4 函数空间视角是函数服从高斯过程的随
  • 人工智能的道德与伦理

    人工智能 人工智能 Artificial Intelligence 英文缩写为AI 它是研究 开发用于模拟 延伸和扩展人的智能的理论 方法 技术及应用系统的一门新的技术科学 谈到人工智能的伦理 首先就会想到各种机器人电影 从早些1968年的
  • LintCode-460. Find K Closest Elements

    Find K Closest Elements Given target a non negative integer k and an integer array A sorted in ascending order find the
  • mysql 输入密码后报错_mysql安装后输入密码登录不上数据库解决方案

    如果mysql你成功安装并且配置后 输入mysql u root p进入密码页面 输入密码后报错 错误为 MySQL ERROR 1045 28000 Access denied for user root localhost using
  • web前端需要掌握的PS技术

    做WEB前端 常常会用到的PS操作有以下几种 1 常规切图 2 生成图片资源 3 生成CSS代码 4 批量压缩图片 5 抠图技巧 6 修图技巧 7 图层操作 8 文字编辑 9 图像合成 前四个技术教程 web前端需要掌握哪些ps的操作呢 教
  • C语言 一维数组求和

    计算数组成员的总和是多少 include
  • 【Python】conda实现虚拟环境的创建

    conda实现虚拟环境的创建 虚拟环境的背景 在同一台主机上创建和运行不同的开发项目是一件很常见的事件 但是在这个过程中 难免会遇到项目的依赖具有差异的问题 即在每次切换不同的项目时 都必须考虑当前python软件包或模块的版本是否符合该项
  • 解决谷歌浏览器Chrome 代理设置不能上网的问题

    如图 打开fq软件后 就访问不了了 解决办法 如下图 点开设置 gt 直接搜索代理 gt 点击代理设置 在Intert属性中 gt 连接 gt 选择局域网设置 gt 设置成自动检测设置 保存 刷新网页就OK了
  • java学习过程报错合集

    1 基础入门篇 创建的新项目无法右键创建新的java文件 没有指定模版 去project structure创建一个需要的模版就可以创建模版 IDEA Error java 无效的源发行版 13 编译不统一我的理解是这样 如下操作可以解决
  • 机器学习---利用sklearn库实现SVM的花卉数据分类代码详解

    import numpy as np import pandas as pd from sklearn datasets import load iris from sklearn model selection import train