机器学习-SVM预测

本文使用机器学习SVM对数据进行预测。仅供参考

1、数据

1.1 训练数据集:

medol.xlsx文件示例

otv
3015-1.915362209
3018-1.963409776
3021-1.762028408
3024-1.789477583

1.2 预测数据集

test.xlsx文件示例

ot
3516
3519

2、模型训练

train.py

import pandas as pd
from sklearn.svm import SVR
from sklearn.model_selection import GridSearchCV, train_test_split
from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score
from sklearn.preprocessing import StandardScaler
import joblib
import numpy as np
import matplotlib.pyplot as plt# 加载数据
df = pd.read_excel("model.xlsx")# 定义特征列
feature_columns = ['o', 't']# 初始化标准化器
scaler = StandardScaler()# 归一化数据集
X_scaled = scaler.fit_transform(df[feature_columns])target_column = 'v'# 将数据拆分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X_scaled, df[target_column], test_size=0.1)# 初始化SVM回归器
svm = SVR()# 定义参数网格
param_grid = {'kernel': ['linear', 'rbf'],'C': [1, 10, 100],'gamma': [0.1, 1, 10],
}# 使用GridSearchCV进行网格搜索
grid_search = GridSearchCV(svm, param_grid, cv=5, scoring='neg_mean_squared_error', verbose=1)
grid_search.fit(X_train, y_train)# 获取最佳模型
best_model_svm = grid_search.best_estimator_# 输出最佳超参数
print("最佳超参数 for SVM:", grid_search.best_params_)# 计算训练集和测试集的指标
train_predictions_svm = best_model_svm.predict(X_train)
test_predictions_svm = best_model_svm.predict(X_test)# 训练集指标
print("\n[训练集指标 - SVM]")
print("平均绝对误差: {}".format(mean_absolute_error(y_train, train_predictions_svm)))
print("均方误差: {}".format(mean_squared_error(y_train, train_predictions_svm)))
print("均方根误差: {}".format(np.sqrt(mean_squared_error(y_train, train_predictions_svm))))
print("R2分数: {}".format(r2_score(y_train, train_predictions_svm)))# 测试集指标
print("\n[测试集指标 - SVM]")
print("平均绝对误差: {}".format(mean_absolute_error(y_test, test_predictions_svm)))
print("均方误差: {}".format(mean_squared_error(y_test, test_predictions_svm)))
print("均方根误差: {}".format(np.sqrt(mean_squared_error(y_test, test_predictions_svm))))
print("R2分数: {}".format(r2_score(y_test, test_predictions_svm)))# 绘制训练集误差随循环次数的变化图
plt.plot(range(1, len(best_model_svm.support_vectors_) + 1), best_model_svm.dual_coef_.ravel(), label='Train Error')
plt.xlabel('Support Vectors')
plt.ylabel('Dual Coefficients')
plt.title('Training Set Error Over Support Vectors')
plt.legend()
plt.show()# 绘制测试集的实际值和预测值的对比图
plt.scatter(y_test, test_predictions_svm, alpha=0.5)
plt.plot([min(y_test), max(y_test)], [min(y_test), max(y_test)], '--', color='red', label='Identity Line')
plt.xlabel('Actual Values')
plt.ylabel('Predicted Values')
plt.title('Actual vs Predicted Values on Test Set - SVM')
plt.legend()
plt.show()# 保存训练好的SVM模型
svm_model_filename = 'svm_model'
joblib.dump(best_model_svm, svm_model_filename)# 保存训练好的标准化器
joblib.dump(scaler, 'scaler_model_svm')

3、预测模型

test.py

import pandas as pd
import joblib
from sklearn.preprocessing import StandardScaler# 加载训练好的模型并在新数据上进行预测 (test.xlsx)
test_df = pd.read_excel("test.xlsx")# 初始化 StandardScaler
scaler = joblib.load('scaler_model')predicted_columns = []model_filename = f'svm_model'# 加载模型
loaded_model = joblib.load(model_filename)# 在新数据上进行预测
predictions = loaded_model.predict(scaler.transform(test_df[['o', 't']]))# 将预测结果存储在列表中
predicted_columns.append(predictions)# 使用 pd.concat(axis=1) 将所有列一次性连接到 DataFrame 中
predicted_df = pd.concat([test_df] + [pd.Series(predictions, name=f'v') for i, predictions in enumerate(predicted_columns, start=1)], axis=1)# 保存更新后的 test_df
predicted_df.to_excel("predicted.xlsx", index=False)

4、结果

最佳超参数 for SVM: {'C': 1, 'gamma': 0.1, 'kernel': 'linear'}

[训练集指标 - SVM]
平均绝对误差: 0.09572890288084648
均方误差: 0.01428879779657209
均方根误差: 0.11953575948883284
R2分数: 0.9939848933501038

[测试集指标 - SVM]
平均绝对误差: 0.06024996260030221
均方误差: 0.00572260737850485
均方根误差: 0.07564791721194213
R2分数: 0.9956600567712165

若有问题,欢迎讨论

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

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

相关文章

软件工程期末复习(8)需求的表达方法和状态转换图

需求的表达方法 系统模型 需求分析的任务就是借助于当前系统的逻辑模型导出目标系统的逻辑模型,解决目标系统 “做什么” 的问题 通常软件开发项目是要实现目标系统的物理模型。目标系统的具体物理模型是由它的逻辑模型经实例化,即具体到某个业务领域而…

韵搜坊 -- java爬虫抓取数据

文章目录 三种抓取方式数据抓取的流程获取文章具体操作 获取用户获取图片jsoup操作 三种抓取方式 直接调用请求接口(最方便,这里使用该方法) HttpClient,OKHttp,RestTemplate,Hutool等网页渲染出明文内容后,从前端页面的内容抓取有些网站可能是动态请求…

第三十二天 | 46.全排列 47.全排列||

终于进入排列!(之前都是组合) 排列和组合的区别:在数学上的区别都懂,主要是看在代码实现上有什么区别 题目:46.全排列 树型结构比较简单 用used标记某一元素是否使用过。在组合问题中,其实是…

【制作100个unity游戏之26】unity2d横版卷轴动作类游戏7(附带项目源码)

最终效果 系列导航 文章目录 最终效果系列导航前言血条 能量条UI配置画布绘制血条 能量条UI 头像框 延迟虚血源码完结 前言 欢迎来到【制作100个Unity游戏】系列!本系列将引导您一步步学习如何使用Unity开发各种类型的游戏。在这第26篇中,我们将探索如何…

数据库设计大题详解

大题一:画E-R图(概念结构设计) 实体就是具体的物品,关系就是实体之间的关系,属性就是特征,内涵的意思 简单的小栗子: 1对1,1对n,n对m,自己考虑两者存在这个关…

PatterNodes 3 mac矢量图设计 ,色彩与图案的完美融合!

PatterNodes 3 for Mac是一款功能强大的矢量图形模式创建软件,专为Mac用户设计。它采用基于节点的界面,支持创建形状、线条、曲线或文本,以构建复杂的矢量图形模式。该软件还具备灵活的参数调整功能,允许用户实时预览结果并进行无…

根据参考风格进行矢量图绘制

摘要 利用机器学习根据给定的文本描述生成图像的技术已经取得了显著的进步,例如CLIP图像-文本编码器模型的发布;然而,当前的方法缺乏对生成图像风格的艺术控制。我们提出了一种方法,用于为给定的文本描述生成指定风格的绘图&…

Spring框架学习笔记(三):AOP编程

1 动态代理 1.1 通过案例理解动态代理 (1)需求说明: 1. 有 Vehicle接口(交通工具接口, 有一个 run 方法), 下面有两个实现类 Car 和 Ship 2. 当运行 Car 对象 的 run 方法和 Ship 对象的 run 方法时,输入如下内容, 注意观察前后…

HTML静态网页成品作业(HTML+CSS+JS)——在线购物商城网页设计制作(4个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,使用Javacsript代码实现图片轮播切换,共有4个页面。 二、…

手机图片恢复不求人:手动找回丢失的照片!

无论是外出旅行、聚会还是日常点滴,我们总是习惯用手机记录下来,让美好的瞬间定格在一张张照片中。然而,有时因为误删、清空缓存或是更换手机,那些珍贵的照片突然消失了。手机图片恢复有什么简单易行、容易上手的方法吗&#xff1…

容器组件:角标组件,纵向拖动组件(HarmonyOS学习第四课【4.2】)

Badge(角标组件) 可以附加在单个组件上用于信息标记的容器组件。 说明 该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 子组件 支持单个子组件。 说明 子组件类型:系统组件…

Online RL + IL : Active Policy Improvement from Multiple Black-box Oracles

ICML 2023 paper code 紧接上一篇MAMBA,本文在同种问题设定下的在线模仿学习方法。 Intro 文章提出了一种新的模仿学习算法,名为 MAPS(Max-aggregation Active Policy Selection)和其变体 MAPS-SE(Max-aggregation A…

SSL证书对于网络安全的重要作用

SSL证书是一种数字证书,它通过加密技术确保了客户端(如浏览器)与服务器之间的数据传输安全。当一个网站安装了SSL证书后,用户在浏览器地址栏中可以观察到HTTPS(超文本传输安全协议)前缀和挂锁图标&#xff…

点量云流分享:关于实时渲染云推流技术

提到云串流或者云推流很多人可能和游戏关联起来,其实这个技术的应用领域不仅仅是游戏,还有云上旅游、考古、智慧园区、智慧城市、虚拟仿真等等行业。其解决的问题是将一些大型的3D应用程序放在云端,程序在运行的时候也是在云端,这…

可视化大屏C位图:生产线,状态一目了然。

在可视化大屏中,将生产线作为C位图(核心位图)具有以下价值: 实时监控 生产线作为C位图可以实时展示生产线上的各个环节和工艺的运行状态。通过C位图,操作员可以直观地了解生产线的整体运行情况,及时发现异…

数仓建模理论 之 维度建模

说起维度建模,你不得不知道以下几个概念:事实表、维度表、星型模型、雪花模型、星座模型 维度建模 Ralph Kimball推崇数据集市的集合为数据仓库,同时也提出了对数据集市的维度建模,将数据仓库中的表划分为事实表、维度表两种类型…

uniapp微信小程序使用vscode代替HBuilderX开发uniapp微信小程序并且vscode改动代码微信开发者工具能实时更新

前言 最近公司开发新的小程序项目,经调研综合所有人员考虑,用uni-app Vue3tsvite技术栈开发;而官方推荐使用HBuilderX开发,而考虑到目前公司所有前端人员对VsCode更熟悉,故此总结了一下uniapp项目使用vscode代替HBuild…

网站开发初学者指南:2024年最新解读

在信息交流迅速的时代,网页承载着大量的信息,无论你知道还是不知道,所以你知道什么是网站开发吗?学习网站开发需要什么基本技能?本文将从网站开发阶段、网站开发技能、网站开发类型等角度进行分析,帮助您更…

Java 自动生成数据库设计文档

背景&#xff1a;有时候急需要数据库设计文档&#xff0c;手写太麻烦&#xff0c;这里介绍一款开源组件&#xff0c;可以自动根据数据库连接生成数据库设计文档 废话不多说&#xff0c;直接上代码 导入maven包 <dependency><groupId>org.freemarker</groupId>…

数据分析案例-印度美食数据可视化分析

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…