SVR的简单实例应用

2023-11-06

在开始实例应用前先明确一般的操作步骤:

  1. 导入数据
  2. 分割训练集和测试集
  3. 数据预处理
  4. 建模
  5. 模型测试与模型评价

话不多说,我们直接开始吧!
导入数据:

# 导入需要的库函数
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
data = pd.read_excel(r"文件的绝对路径+文件名.xlsx")
data

最后一行代码可以看到我们所导入的数据集。
在这里插入图片描述
分割训练集和测试集:

# 确定数据集X和Y
X = data.iloc[:,:-1]
Y = data.iloc[:,-1]
#分割数据集的函数,test_siz用于决定训练集与测试集的分割比例,random_state表示按指定的数值来获取指定的随机分配
Xtrain, Xtest, Ytrain, Ytest = train_test_split(X,Y,test_size=0.2,random_state=42)
#恢复分割后的索引
for i in [Xtrain, Xtest, Ytrain, Ytest]:
    i.index = range(i.shape[0])

为了提高成功率,我们可以随时在中途查看进展的结果,以下给出几个常用的查看函数和属性:

# 查看X的结构特征
X.shape
# 查看X的每一列的数值类型等信息
X.info()
# 查看缺失值的缺失情况
Xtrain.isnull().mean()
# 查看每一列的数据类型
Xtrain.dtypes
# 查看头几行数据(默认是5)
Xtrain.head()

多说无益,这些函数的功能自己亲自试试就一目了然了。
数据预处理:
这里我的处理思路是将数据分成分类型数据和连续型数据分别进行处理(切记测试集的数据也需要同样的数据预处理
分类型数据需要进行缺失值填补与变量编码
连续型数据需要进行缺失值填补与无量纲化

#找出分类型特征都有哪些
cate = Xtrain.columns[Xtrain.dtypes == "object"].tolist()
#对于分类型特征,我们使用众数来进行填补
from sklearn.impute import SimpleImputer
si = SimpleImputer(missing_values=np.nan,strategy="most_frequent")
#注意,我们使用训练集数据来训练我们的填补器,本质是在生成训练集中的众数
si.fit(Xtrain.loc[:,cate])
#然后我们用训练集中的众数来同时填补训练集和测试集
Xtrain.loc[:,cate] = si.transform(Xtrain.loc[:,cate])
Xtest.loc[:,cate] = si.transform(Xtest.loc[:,cate])
#将所有的分类型变量编码为数字,一个类别是一个数字
from sklearn.preprocessing import OrdinalEncoder
oe = OrdinalEncoder()
#利用训练集进行fit
oe = oe.fit(Xtrain.loc[:,cate])
#用训练集的编码结果来编码训练和测试特征矩阵
#在这里如果测试特征矩阵报错,就说明测试集中出现了训练集中从未见过的类别,此时需要重新分割数据集
Xtrain.loc[:,cate] = oe.transform(Xtrain.loc[:,cate])
Xtest.loc[:,cate] = oe.transform(Xtest.loc[:,cate])
col = Xtrain.columns.tolist()
for i in cate:
    col.remove(i)
#实例化模型,填补策略为"mean"表示均值
impmean = SimpleImputer(missing_values=np.nan,strategy = "mean")
#用训练集来fit模型
impmean = impmean.fit(Xtrain.loc[:,col])
#分别在训练集和测试集上进行均值填补
Xtrain.loc[:,col] = impmean.transform(Xtrain.loc[:,col])
Xtest.loc[:,col] = impmean.transform(Xtest.loc[:,col])
# 数据无量纲化
from sklearn.preprocessing import StandardScaler
ss = StandardScaler()
ss = ss.fit(Xtrain.loc[:,col])
Xtrain.loc[:,col] = ss.transform(Xtrain.loc[:,col])
Xtest.loc[:,col] = ss.transform(Xtest.loc[:,col])

建模与评估:

from sklearn.svm import SVR
import matplotlib.pyplot as plt
from sklearn.metrics import r2_score
# 重新调整Ytrain与Ytest维度
Ytrain = Ytrain.iloc[:,0].ravel()
Ytest = Ytest.iloc[:,0].ravel()
kernels = ['linear','poly','rbf','sigmoid']
for kernel in kernels:
    svr = SVR(kernel=kernel).fit(Xtrain,Ytrain)
    Ypredict = svr.predict(Xtest)
    print(kernel+"核函数支持向量机的默认评估值为:", svr.score(Xtest, Ytest))
    print(kernel+"核函数支持向量机的R_squared值为:", r2_score(Ytest, Ypredict ))

结果如下:
在这里插入图片描述
显然,这四个核函数效果最好的是rbf。后面,我们还能调整惩罚参数C和重要参数epsilon来进一步优化模型,甚至也可以使用混合核函数来进行模型优化等等。

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

SVR的简单实例应用 的相关文章

随机推荐

  • 基于遗传算法的题库组卷自动化批改练习系统

    1 简介 今天向大家介绍一个帮助往届学生完成的毕业设计项目 基于遗传算法的题库组卷练习系统 计算机毕业生设计 课程设计需要帮助的可以找我 2 设计概要 21世纪是信息化时代 随着信息技术和网络技术的发展 信息化已经渗透到人们日常生活的各个方
  • Flask Jinja2 模板中的变量和过滤器

    Flask Jinja2 模板中的变量和过滤器 Flask 可以在视图函数中返回模板文件 模板引擎默认使用的是 Jinja2 通常 返回的 Jinja2 模板文件并不是一个静态的页面 而是同时有静态部分和动态部分 静态部分可以硬编码写死 动
  • 用pe做2012服务器系统教程,微软WDS网络启动PE做系统的服务器配置和PE修改教程...

    本帖最后由 金正电脑 于 2018 10 19 15 45 编辑 继续主楼内容 三 网络PE的修改定制 1 PE的来源 我用的是PE大神hhh333的PE修改的 这个PE自带网卡驱动进入PE自动安装好 不需要手动安装 也有个别网卡驱动不上的
  • 服务器和网站域名,网站服务器和域名的区别

    网站服务器和域名的区别 内容精选 换一换 华为云漏洞扫描服务帮助中心 为用户提供产品简介 用户指南 最佳实践 常见问题 视频帮助等技术文档 帮助您快速上手使用漏洞扫描服务 目前 华为云SSL证书管理服务提供了OV 企业版 OV Pro 企业
  • PyCharm 2023.1.2版本关闭后一直显示正在关闭项目

    最近下载了新的社区版本 出现了关闭程序就一直显示关闭项目的问题 然后各种找方法 试了如下几种 1 调整了一下编码方式 都0变为UTF 8 然后在自然语言添加了中文 也在编辑器那一行里 2 这个问题可能是由于Pycharm在关闭时正在运行一些
  • ubuntu下安装hadoop和eclipse

    hadoop安装方法 https www cnblogs com oskyhg p 9150000 html hadoop 安装教程 本教程由厦门大学数据库实验室 给力星出品 转载请注明 本教程适合于原生 Hadoop 2 包括 Hadoo
  • FloatingActionButton的使用

    FloatingActionButton FAB 是 Android 5 0 新特性 Material Design 中的一个控件 是一种悬浮的按钮 FloatingActionButton 是 ImageView 的子类 因此它具备Ima
  • JAVA代码保护工具DashO Pro v10.0.0 Beta 2重磅上线!更新DashO Gradle插件!

    DashO是一个Java和Android的混用程序 它提供企业级应用的加固和屏蔽 大大降低了知识产权盗窃 数据盗窃 盗版和篡改的风险 分层混淆 加密 水印 自动失效 反调试 反篡改 反仿真器 反挂钩 反根设备解决方案 为世界各地的应用程序提
  • unity Dropdown默认选择不选择任何选项

    当我们使用Dropdown下拉框时 有时不需要有默认选项 把 value设置为 1就可以了 但是用代码设置value 1是没有效果的
  • [Tools: ssh隧道] 跳板机连接内网服务器

    终端连接内网服务器 假设本地是A 内网跳板机是B 内网服务器是C 通常 从A连接C需要两次ssh 但通过以下ssh设置 可以简化连接过程 设置后 在终端键入ssh C 即可登录内网服务器C Host B HostName h User ds
  • C++智能指针实现类多态

    智能指针让我们不再操心内存泄露的问题 类多态是面向对象的一大特性 普通指针可以实现类多态 智能指针同样也能 请看代码 include
  • 70.语义分割和数据集

    在 之前讨论的目标检测问题中 我们一直使用方形边界框来标注和预测图像中的目标 本节将探讨语义分割 semantic segmentation 问题 它重点关注于如何将图像分割成属于不同语义类别的区域 与目标检测不同 语义分割可以识别并理解图
  • 重试C语言之C语言常量

    本章的学习目标如下 1 了解常量定义 2 常量数据类型 3 定义常量的方式 常量定义 常量是固定值 在C语言程序执行过程中不会发生改变 常量数据类型 常量可以使任何基本数据类型 比如 整形常量 浮点型常量 字符串常量 字符常量 也有枚举常量
  • Python删去本地指定类型文件

    Python删去本地指定类型文件 import os def Del File dir ftype files os listdir dir for f in files fl f split if fl 1 ftype os remove
  • 7-52 两个有序链表序列的交集 (20分)Java/C

    先是Java写的 用ArrayList求交集 最后一个测试点内存超限 package exercise import java util public class Main public static Object search Array
  • 面向对象编程的三大特征(封装,继承、多态)以及重写、MRO

    封装 特征一 根据需求将属性和方法封装到一个抽象的类中 在使用的时候 只要按照自己的需求去调用 不必了解实现的细节 封装有两方面的含义 1 将数值 属性 和行为 方法 包装到类对象中 在方法内部对属性进行操作 在类对象的外部调用方法 这样
  • 低通滤波器降噪matlab,基于MATLAB语音信号降噪处理方法研究

    2017 年 04 月下 青春岁月 415 一 语音信号的采集 为了表示取样的语音信号 我们采用的是离散时间模型 建立模型的基本准则是寻求一种可以表达一定物理状态下的数学关系 要使这种关系不仅具有强大的精确度 而且还要最简单 由于语音信号是
  • Java——Scanner的对象next()和nextLine()的区别

    Scanner对象 next 1 一定要读取到有效字符后才可以结束输入 2 对输入有效字符之前遇到的空白 next 方法会自动将其去掉 3 只有输入有效字符后才将其后面输入的空白作为分隔服或者结束符 4 next 不能得到带有空格的字符 p
  • 【光线追踪】 流程分析与实现的路径跟踪渲染器

    前言 搞光追是图形学的浪漫 先放张目前渲染图 分析了部分代码框架 后续补上完整 效果 左边黄色球是Blinn Phong进行着色 右边是Cook Torrance模型着色 BVH 1024x1024 200spp 2x2MSAA VS Om
  • SVR的简单实例应用

    在开始实例应用前先明确一般的操作步骤 导入数据 分割训练集和测试集 数据预处理 建模 模型测试与模型评价 话不多说 我们直接开始吧 导入数据 导入需要的库函数 import pandas as pd import numpy as np f