支持向量机回归及其应用(附Python 案例代码)

使用支持向量机回归估计房价

让我们看看如何使用支持向量机(SVM)的概念构建一个回归器来估计房价。我们将使用sklearn中提供的数据集,其中每个数据点由13个属性定义。我们的目标是根据这些属性估计房价。

引言

支持向量回归(SVR)是一种用于回归任务的机器学习算法。它的目标是找到一个函数,使得数据点偏离该函数的距离在某个阈值内的情况下,该函数尽可能平滑。数学上,SVR 通过解决以下优化问题来实现:
min ⁡ 1 2 ∥ w ∥ 2 + C ∑ i = 1 n max ⁡ ( 0 , ∣ y i − ( w ⋅ x i + b ) ∣ − ϵ ) \min \frac{1}{2} \|w\|^2 + C \sum_{i=1}^n \max(0, |y_i - (w \cdot x_i + b)| - \epsilon) min21w2+Ci=1nmax(0,yi(wxi+b)ϵ)
其中, w w w 是权重向量, b b b 是偏差, C C C 是惩罚参数, ϵ \epsilon ϵ 是不敏感阈值。
在这里插入图片描述

案例代码

# 导入所需的包
import numpy as np
from sklearn import datasets
from sklearn.svm import SVR
from sklearn.metrics import mean_squared_error, explained_variance_score
from sklearn.utils import shuffle# 加载房价数据集
data = datasets.load_boston()# 打乱数据以避免分析偏差
X, y = shuffle(data.data, data.target, random_state=7)# 将数据集按照80/20的比例分割为训练集和测试集
num_training = int(0.8 * len(X))
X_train, y_train = X[:num_training], y[:num_training]
X_test, y_test = X[num_training:], y[num_training:]# 创建支持向量回归模型并使用线性核
# C 参数表示训练误差的惩罚,如果增大 C 的值,模型将更精细地拟合训练数据
# 这可能会导致过拟合并使其失去泛化能力
# epsilon 参数指定一个阈值,如果预测值与实际值的距离在此阈值内,则不会有训练误差的惩罚
sv_regressor = SVR(kernel='linear', C=1.0, epsilon=0.1)# 训练支持向量回归模型
sv_regressor.fit(X_train, y_train)# 评估回归器的性能并打印指标
y_test_pred = sv_regressor.predict(X_test)
mse = mean_squared_error(y_test, y_test_pred)
evs = explained_variance_score(y_test, y_test_pred)
print("\n#### 性能 ####")
print("均方误差 =", round(mse, 2))
print("解释方差分数 =", round(evs, 2))# 对测试数据点进行预测
test_data = [3.7, 0, 18.4, 1, 0.87, 5.95, 91, 2.5052, 26, 666, 20.2, 351.34, 15.27]
print("\n预测价格:", sv_regressor.predict([test_data])[0])

为了方便读者理解,这里我们对datasets.load_boston()
房价数据部分展示:

CRIMZNINDUSCHASNOXRMAGEDISRADTAXPTRATIOBLSTATPRICE
0.0063218.02.310.00.5386.57565.24.0900129615.3396.904.9824.0
0.027310.07.070.00.4696.42178.94.9671224217.8396.909.1421.6
0.027290.07.070.00.4697.18561.14.9671224217.8392.834.0334.7
0.032370.02.180.00.4586.99845.86.0622322218.7394.632.9433.4
0.069050.02.180.00.4587.14754.26.0622322218.7396.905.3336.2

运行代码应该得到以测试数据对应的房价预测结果:

#### 性能 ####
均方误差 = 15.41
解释方差分数 = 0.82
预测价格: 18.5217801073

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/876638.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vim的使用及退出码(return 0)

linux基础之vim快速入门 linux基础之vim快速入门_基本linux vim-CSDN博客https://blog.csdn.net/ypxcan/article/details/119878137?ops_request_misc&request_id&biz_id102&utm_termvim%E7%BC%96%E8%BE%91%E5%99%A8%E5%A4%8D%E5%88%B6%E7%B2%98%E8%B4%B4%E4%BA%…

达梦数据库定时备份,并保留最大天数

赋权 chmod x backup.sh 凌晨3点执行 crontab -e 0 3 * * * /home/dmbak/backup.sh 脚本内容: #!/bin/bash# 定义数据库连接信息 DB_HOST"192.168.1.1" DB_PORT"5236" DB_USER"" DB_PASSWORD"" DB_NAME""…

前端为何要进行打包和构建

代码层面 体积更小(tree-shaking、压缩、合并),加载更快编译高级语言或者语法(TS、ES6、模块化、scss)兼容性和错误检查(polyfill、postcss、eslint) 研发层面 统一、高效的开发环境统一的构建…

Java(十)——接口

个人简介 👀个人主页: 前端杂货铺 ⚡开源项目: rich-vue3 (基于 Vue3 TS Pinia Element Plus Spring全家桶 MySQL) 🙋‍♂️学习方向: 主攻前端方向,正逐渐往全干发展 &#x1…

python jinjia2语法

Jinja2 是一个强大的 Python 模板引擎,广泛用于生成 HTML、XML 或其他基于文本的格式。它的语法灵活且易于使用,支持变量插值、控制结构、过滤器、自定义函数等功能。以下是 Jinja2 语法的详细介绍: 1. 变量插值 使用双大括号 {{ }} 来插入…

JAVA零基础学习3(Scanner类,字符串,StringBuilder,StringJoinder,ArrayList成员方法)

JAVA零基础学习3 Scanner类输入示例代码代码解释完整代码1. 读取字符串2. 读取整数3. 读取浮点数4. 读取布尔值5. 读取单个单词6. 读取长整型数7. 读取短整型数8. 读取字节数注意事项总结 API 字符串解释示例解释解决方法示例:使用 StringBuilder String…

口碑爆棚的高分法国电影,一起在光影中领略法式魅力吧!

文章目录 引言《与玛格丽特的午后》(网友评分:9.1)《午夜巴黎》(网友评分:8.3)《玫瑰人生》(网友评分:8.4)《双姝奇缘》(网友评分:8.7)《巴黎淘气帮》(网友评分:8.6)《触不可及》(网友评分:9.3)《爱在日落黄昏时》(网友评分:8.9)《悲惨世界》(网友评分:…

VScode使用Github Copilot插件时出现read ECONNREST问题的解决方法

文章目录 read ECONNREST查看是否仍是 Copilot 会员查看控制台输出网络连接问题浏览器设置问题笔者的话 read ECONNREST 最近使用 Copilot 时一直出现 read ECONNREST 问题,这个表示连接被对方重置了,就是说在读取数据时连接被关闭。 我首先怀疑是不是…

[023-2].第2节:SpringBoot中接收参数相关注解

我的后端学习大纲 SpringBoot学习大纲 1.1.基本介绍: SpringBoot接收客户端提交的数据、参数会使用的一些注解: 1.PathVarible2. RequestHeader3.RequestParam4.CookieValue5.RequestBody6.RequestAttribute 1.2.接收参数相关注解与应用实例:…

追问试面试系列:分布式id

hi 大家好,欢迎来到追问试面试系列:分布式id 面试中可能面试官不会直接问你分布式id问题,基本上都是因为你在某些面试题回答中提到了,所以就开始追问分布式id相关问题。 先看面试题 ● 面试官:什么是分布式id? ● 面试官:举个例子说说 ● 面试官:什么叫分库分表? ●…

无人机制造工艺流程详解

一、需求分析 无人机制造的第一步是需求分析。这一阶段主要明确无人机的使用场景、功能要求、性能指标以及成本预算等。通过与客户或项目团队的深入沟通,确保对无人机的需求有全面而准确的理解。同时,也需要进行市场调研,了解同类型产品的特…

科普文:docker基础概念、软件安装和常用命令

docker基本概念 一 容器的概念 1. 什么是容器:容器是在隔离的环境里面运行的一个进程,这个隔离的环境有自己的系统目录文件,有自己的ip地址,主机名等。也可以说:容器是一种轻量级虚拟化的技术。 2. 容器相对于kvm虚…

如何使用 SQLite ?

SQLite 是一个轻量级、嵌入式的关系型数据库管理系统(RDBMS)。它是一种 C 库,实现了自给自足、无服务器、零配置、事务性 SQL 数据库引擎。SQLite 的源代码是开放的,完全在公共领域。它被广泛用于各种应用程序,包括浏览…

【C语言】函数的递归

目录 一、什么是递归 二、递归的思想 三、递归的限制条件 四、递归中的栈溢出 五、递归举例 (1)例1:n的阶乘 (2)例子2:顺序打印一个数的每一位 六、递归和迭代 七、拓展题目 (1&#…

Chainlit一个快速构建成式AI应用的Python框架,无缝集成与多平台部署

概述 Chainlit 是一个开源 Python 包,用于构建和部署生成式 AI 应用的开源框架。它提供了一种简单的方法来创建交互式的用户界面,这些界面可以与 LLM(大型语言模型)驱动的应用程序进行通信。Chainlit 旨在帮助开发者快速构建基于…

华中科技大学学报社会科学版

期刊名称: 华中科技大学学报(社会科学版) 主办单位: 华中科技大学 周期:双月 出版地:湖北省武汉市 语种: 中文 开本: 大16开 ISSN: 1671-7023 CN: 42-1673/C 创刊时间&a…

如何知道一个字段在selenium中是否可编辑?

这篇文章将检查我们如何使用Java检查selenium webdriver中的字段是否可编辑。 我们如何知道我们是否可以编辑字段?“readonly”属性控制字段的可编辑性。如果元素上存在“readonly”属性,则无法编辑或操作该元素或字段。 因此,如果我们找到一…

强大的开源网络攻击面分析工具:Hetty

Hetty:深入网络的每一个角落,Hetty让安全漏洞无处遁形。- 精选真开源,释放新价值。 概览 Hetty作为一个专为网络攻击面分析而设计的开源HTTP/1.1客户端,其设计初衷是为了帮助安全研究人员和渗透测试人员深入挖掘潜在的网络漏洞。…

[网鼎杯 2020 朱雀组]Nmap(详细解读版)

这道题考察nmap的一些用法,以及escapeshellarg和escapeshellcmd两个函数的绕过,可以看这里PHP escapeshellarg()escapeshellcmd() 之殇 (seebug.org) 两种解题方法: 第一种通过nmap的-iL参数读取扫描一个文件到指定文件中第二种是利用nmap的参数写入we…

NTC测温

前言 假设已知ad-温度转换表ad_table[100]; 数组元素ad_table[0] ~ ad_table[99] 对应温度0 ~ 99℃;已知MCU检测到NTC两端电压ad值位temp_ad,请写出将temp_ad转换成温度值的程序代码,要求温度值精确到0.1℃ 代码 为了将AD值转换为精确到0.1℃的温度值…