当前位置: 首页 > news >正文

基于支持向量回归(SVR)的空气质量预测

基于支持向量回归(SVR)的空气质量预测

  • 1.作者介绍
  • 2.支持向量回归(SVR)算法介绍
    • 2.1 算法原理
    • 2.2 关键概念
    • 2.3算法特点
    • 2.4与其他回归方法对比
  • 3.基于支持向量回归(SVR)的空气质量预测实验
    • 3.1数据集介绍
    • 3.2代码实现
    • 3.3完整代码
    • 3.4结果展示

基于支持向量回归(SVR)的空气质量预测

1.作者介绍

王浩,男,西安工程大学电子信息学院,2024级研究生
研究方向:图像法识别羊绒羊毛
电子邮件:3122496059@qq.com

王晓睿,男,西安工程大学电子信息学院,2024级研究生,张宏伟人工智能课题组
研究方向:智能视觉检测与工业自动化技术
电子邮件:3234002295@qq.com

2.支持向量回归(SVR)算法介绍

2.1 算法原理

SVR(Support Vector Regression)是支持向量机(SVM)在回归问题上的应用,SVR通过最小化模型复杂度(‖w‖²)和控制ε-insensitive误差,在拟合精度与泛化能力之间取得平衡。其核心是构建一个宽度为2ε的"回归管道",仅对落在管道外的样本计算损失,通过支持向量确定最优回归超平面。

2.2 关键概念

(1)ε-不敏感损失:只有当预测值与真实值的偏差超过阈值 ε 时才计算误差。
(2)间隔带(ε-tube):由超平面和两侧边界(±ε)构成的区域,模型允许误差在此范围内。
(3)支持向量:位于间隔带外或边界上的点,决定模型形状。
在这里插入图片描述

2.3算法特点

(1)容忍机制:采用ε-不敏感损失函数,允许预测值在±ε范围内自由波动而不受惩罚,鲁棒性强,抗噪声数据。
(2)稀疏解特性:最终模型仅依赖少量支持向量(管道边界外的样本),计算高效,适合小样本,高维数据。
(3)核技巧兼容:通过核函数隐式映射到高维空间,可处理复杂非线性关系。

2.4与其他回归方法对比

在这里插入图片描述

3.基于支持向量回归(SVR)的空气质量预测实验

3.1数据集介绍

数据来自北京市环境监测中心 ,包含12个国家级空气质量监测站点的每小时数据。监测的污染物包括6种主要空气污染物(如PM2.5、PM10、SO₂等)和6项相关气象变量(如温度、湿度、风速等)。
下载链接为:https://archive.ics.uci.edu/dataset/501/beijing+multi+site+air+quality+data
在这里插入图片描述
本次实验使用天坛检测站点的数据:
在这里插入图片描述

3.2代码实现

(1)导入必要的库
在这里插入图片描述
(2)初始化配置
在这里插入图片描述

(3)数据加载和预处理
在这里插入图片描述
(4)模型训练
在这里插入图片描述

3.3完整代码

-*- coding: utf-8 -*-
"""
基于SVR的空气质量预测系统
数据集:空气质量监测数据(每小时记录)
功能:预测PM2.5浓度并生成专业分析报告
"""# 1. 导入必要库
import os
import pandas as pd
import numpy as np
from sklearn.svm import SVR
from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.model_selection import train_test_split, RandomizedSearchCV
from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score
from sklearn.compose import ColumnTransformer
from sklearn.impute import SimpleImputer
from sklearn.pipeline import Pipeline
from scipy.stats import loguniform
import matplotlib.pyplot as plt
from matplotlib import rcParams
import joblib# 2. 全局配置
def set_global_config():"""配置全局参数"""rcParams['font.sans-serif'] = ['Microsoft YaHei']  # 中文字体rcParams['axes.unicode_minus'] = False  # 显示负号plt.style.use('ggplot')  # 美观的绘图样式pd.set_option('display.max_columns', 20)  # 显示更多列# 3. 数据加载与预处理
class DataProcessor:"""数据处理管道"""def __init__(self, file_path):self.file_path = file_pathself.df = Noneself.numeric_features = []self.categorical_features = []def load_data(self):"""加载并清洗数据"""try:# 尝试不同编码方式读取文件try:self.df = pd.read_csv(self.file_path, encoding='utf-8')except:self.df = pd.read_csv(self.file_path, encoding='gbk')print(f"✅ 成功加载数据,原始记录数: {len(self.df)}")print("可用列名:", self.df.columns.tolist())# 清洗列名:去除前后空格、转换为小写self.df.columns = self.df.columns.str.strip().str.lower()# 检查必要的列是否存在required_cols = ['pm2.5', 'pm10', 'temp', 'pres']missing_cols = [col for col in required_cols if col not in self.df.columns]if missing_cols:raise ValueError(f"缺失必要列: {missing_cols}")# 处理缺失值self._handle_missing_values()return self.dfexcept Exception as e:print(f"❌ 数据加载失败: {str(e)}")exit()def _handle_missing_values(self):"""处理缺失值"""# 统一缺失值表示self.df = self.df.replace(['NA', 'N/A', 'na', 'n/a', 'NULL', 'null'], np.nan)# 删除关键列缺失的行initial_count = len(self.df)self.df = self.df.dropna(subset=['pm2.5'])  # 只删除PM2.5缺失的行print(f"✅ 缺失值处理后记录数: {len(self.df)} (删除{initial_count-len(self.df)}条)")# 转换数据类型self._convert_dtypes()def _convert_dtypes(self):"""类型转换"""numeric_cols = ['year', 'month', 'day', 'hour', 'pm2.5', 'pm10','so2', 'no2', 'co', 'o3', 'temp', 'pres', 'dew', 'rain', 'wspm']# 只转换实际存在的列numeric_cols = [col for col in numeric_cols if col in self.df.columns]self.df[numeric_cols] = self.df[numeric_cols].apply(pd.to_numeric, errors='coerce')def feature_engineering(self):"""高级特征工程"""# 时间周期特征self.df['month_sin'] = np.sin(2 * np.pi * self.df['month']/12)self.df['month_cos'] = np.cos(2 * np.pi * self.df['month']/12)self.df['hour_sin'] = np.sin(2 * np.pi * self.df['hour']/24)self.df['hour_cos'] = np.cos(2 * np.pi * self.df['hour']/24)# 气象交互特征(使用实际存在的列)if 'dew' in self.df.columns:self.df['dew_point_diff'] = self.df['temp'] - self.df['dew']else:print("⚠️ 未找到'dew'列,跳过露点差特征")# 定义特征列(根据实际存在的列调整)base_features = ['month_sin', 'month_cos', 'hour_sin', 'hour_cos','pm10', 'so2', 'no2', 'co', 'temp', 'pres']# 添加露点差特征(如果存在)if 'dew_point_diff' in self.df.columns:base_features.append('dew_point_diff')self.numeric_features = [f for f in base_features if f in self.df.columns]self.categorical_features = ['wd'] if 'wd' in self.df.columns else []print(f"🔧 使用的数值特征: {self.numeric_features}")print(f"🔧 使用的分类特征: {self.categorical_features}")return self.df# 4. 模型训练类
class SVRTrainer:"""SVR模型训练管道"""def __init__(self, numeric_features, categorical_features):self.numeric_features = numeric_featuresself.categorical_features = categorical_featuresself.preprocessor = self._build_preprocessor()self.model = Nonedef _build_preprocessor(self):"""构建特征预处理管道(包含缺失值处理)"""numeric_transformer = Pipeline(steps=[('imputer', SimpleImputer(strategy='median')),  # 中位数填充('scaler', StandardScaler())])categorical_transformer = Pipeline(steps=[('imputer', SimpleImputer(strategy='most_frequent')),  # 众数填充('onehot', OneHotEncoder(handle_unknown='ignore'))])transformers = []if self.numeric_features:transformers.append(('num', numeric_transformer, self.numeric_features))if self.categorical_features:transformers.append(('cat', categorical_transformer, self.categorical_features))return ColumnTransformer(transformers=transformers)def train(self, X_train, y_train):"""模型训练流程"""param_dist = {'kernel': ['rbf', 'linear'],'C': loguniform(1e-1, 1e2),'epsilon': [0.01, 0.1, 0.5],'gamma': ['scale', 'auto']}svr = SVR()search = RandomizedSearchCV(svr, param_dist, n_iter=15, cv=3,scoring='neg_mean_squared_error', n_jobs=-1, random_state=42, verbose=1)print("⏳ 开始模型训练...")X_processed = self.preprocessor.fit_transform(X_train)search.fit(X_processed, y_train)self.model = search.best_estimator_print(f"✅ 训练完成,最佳参数: {search.best_params_}")return self.modeldef evaluate(self, X_test, y_test):"""模型评估"""X_processed = self.preprocessor.transform(X_test)y_pred = self.model.predict(X_processed)metrics = {'MAE': mean_absolute_error(y_test, y_pred),'RMSE': np.sqrt(mean_squared_error(y_test, y_pred)),'R²': r2_score(y_test, y_pred)}return metrics, y_pred# 5. 可视化模块
class ResultVisualizer:"""结果可视化生成器"""@staticmethoddef plot_comparison(y_true, y_pred, save_path):"""预测对比图"""plt.figure(figsize=(14, 6))plt.plot(y_true[:100], label='真实值', color='#2c7bb6', marker='o')plt.plot(y_pred[:100], label='预测值', color='#d7191c', linestyle='--')plt.title('PM2.5浓度预测对比(前100样本)', fontsize=14)plt.xlabel('样本序号')plt.ylabel('PM2.5浓度 (μg/m³)')plt.legend()plt.grid(True, alpha=0.3)plt.savefig(save_path, dpi=300, bbox_inches='tight')plt.close()print(f"📈 预测对比图已保存至: {save_path}")@staticmethoddef plot_residuals(y_true, y_pred, save_path):"""残差分析图"""residuals = y_true - y_predplt.figure(figsize=(10, 6))plt.scatter(y_pred, residuals, alpha=0.6, c=np.abs(residuals), cmap='viridis')plt.colorbar(label='残差绝对值')plt.axhline(0, color='red', linestyle='--')plt.title('预测残差分布', fontsize=14)plt.xlabel('预测值 (μg/m³)')plt.ylabel('残差')plt.grid(True, alpha=0.3)plt.savefig(save_path, dpi=300, bbox_inches='tight')plt.close()print(f"📊 残差分析图已保存至: {save_path}")# 6. 主程序
def main():set_global_config()# 初始化路径current_dir = os.path.dirname(os.path.abspath(__file__))data_path = os.path.join(current_dir, 'air_quality_data.csv')		#数据集文件路径output_dir = os.path.join(current_dir, 'results')                   #实验结果保存结果路径os.makedirs(output_dir, exist_ok=True)# 数据预处理processor = DataProcessor(data_path)df = processor.load_data()df = processor.feature_engineering()# 检查数据中是否还有NaNprint("\n🔍 数据缺失值检查:")print(df[processor.numeric_features + processor.categorical_features].isna().sum())# 划分数据集X = df[processor.numeric_features + processor.categorical_features]y = df['pm2.5']  # 目标变量X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 模型训练trainer = SVRTrainer(processor.numeric_features, processor.categorical_features)model = trainer.train(X_train, y_train)# 模型评估metrics, y_pred = trainer.evaluate(X_test, y_test)print("\n📊 模型性能评估:")for k, v in metrics.items():print(f"{k}: {v:.4f}")# 保存结果results = pd.DataFrame({'真实值': y_test.values,'预测值': y_pred,'残差': y_test.values - y_pred})# 添加日期信息(如果存在)date_cols = ['year', 'month', 'day']if all(col in df.columns for col in date_cols):results['日期'] = df.loc[y_test.index, date_cols].apply(lambda x: f"{int(x[0])}-{int(x[1])}-{int(x[2])}", axis=1)results_path = os.path.join(output_dir, 'prediction_results.csv')results.to_csv(results_path, index=False, encoding='utf_8_sig')print(f"💾 预测结果已保存至: {results_path}")# 可视化ResultVisualizer.plot_comparison(y_test.values, y_pred, os.path.join(output_dir, 'comparison.png'))ResultVisualizer.plot_residuals(y_test.values, y_pred, os.path.join(output_dir, 'residuals.png'))# 保存模型model_path = os.path.join(output_dir, 'svr_model.pkl')joblib.dump({'model': model, 'preprocessor': trainer.preprocessor}, model_path)print(f"🤖 模型已保存至: {model_path}")if __name__ == "__main__":
main()

百度网盘链接:基于支持向量回归(SVR)的空气质量预测
链接: https://pan.baidu.com/s/1JxU1SCobvCW_cyhPQYvLnw 提取码: qy7k

3.4结果展示

(1)预测对比图
在这里插入图片描述
(2)残差分布图
在这里插入图片描述

相关文章:

基于支持向量回归(SVR)的空气质量预测

基于支持向量回归(SVR)的空气质量预测 1.作者介绍2.支持向量回归(SVR)算法介绍2.1 算法原理2.2 关键概念2.3算法特点2.4与其他回归方法对比 3.基于支持向量回归(SVR)的空气质量预测实验3.1数据集介绍3.2代码…...

【数据结构】排序

目录 1.排序的概念及其运用 1.1排序的概念 1.2常见排序算法 2插入排序 2.1直接插入排序 2.1.1基本思想 2.1.2代码实现 2.1.3特性总结 2.2 希尔排序 2.2.1基本思想 2.2.2代码实现 3.选择排序 3.1选择排序 3.1.1基本思想 3.1.2代码实现 3.1.3特性总结 3.2 堆排…...

4185 费马小定理求逆元

4185 费马小定理求逆元 ⭐️难度:简单 🌟考点:费马小定理 📖 📚 import java.util.Scanner; import java.util.Arrays;public class Main {static int[][] a;public static void main(String[] args) {Scanner sc …...

低代码控件开发平台:飞帆中粘贴富文本的控件

效果: 链接: https://fvi.cn/729...

偶氮二异丁腈(AIBN)的物化性质及其在合成中的应用

偶氮二异丁腈(AIBN)是一种常用的自由基引发剂,是一种白色结晶性粉末,不溶于水,但溶于甲醇、乙醇、丙酮、乙醚、甲苯等有机溶剂和乙烯基单体。 AIBN在60℃以上会分解形成异丁腈基,从而引发自由基反应。其分解温度区间为50&#xff…...

3.1.3.2 Spring Boot使用Servlet组件

在Spring Boot应用中使用Servlet组件,可以通过注解和配置类两种方式注册Servlet。首先,通过WebServlet注解直接在Servlet类上定义URL模式,Spring Boot会自动注册该Servlet。其次,通过创建配置类,使用ServletRegistrati…...

java——HashSet底层机制——链表扩容和树化

HashSet在Java中是基于HashMap实现的,它实际上是将所有元素作为HashMap的key存储,而value则统一使用一个静态的Object对象(Present)作为占位符。 1.举例演示 下面我们就举例说明一下,HashSet集合中,一个节点上的链表添加数据以及…...

玩转Docker | 使用Docker搭建Blog微博系统

玩转Docker | 使用Docker搭建Blog微博系统 前言一、Blog介绍项目简介主要特点二、系统要求环境要求环境检查Docker版本检查检查操作系统版本三、部署Blog服务下载镜像创建容器检查容器状态设置权限检查服务端口安全设置四、访问Blog系统访问Blog首页登录Blog五、总结前言 在数字…...

Linux中的Vim与Nano编辑器命令详解

📢 友情提示: 本文由银河易创AI(https://ai.eaigx.com)平台gpt-4-turbo模型辅助创作完成,旨在提供灵感参考与技术分享,文中代码与命令建议通过官方渠道验证。 在Linux系统中,文本编辑是最常用的…...

G1垃圾回收器介绍

G1垃圾回收器简介 全称:Garbage-First Garbage Collector。目的:G1垃圾回收器是为了替代CMS垃圾回收器而设计的,它旨在提供更好的垃圾回收性能和可预测性,特别是在处理大内存堆时。特点:G1是一种服务器端的垃圾回收器…...

Python学习笔记(三)

文章目录 Python函数详解基本概念定义函数函数调用参数类型1. 位置参数2. 默认参数3. 关键字参数4. 可变参数 返回值函数作用函数中的变量作用域规则 递归函数Lambda函数函数注解装饰器文档字符串其他重要概念闭包生成器函数高阶函数 Python函数详解 基本概念 函数是Python中…...

Hqst的超薄千兆变压器HM82409S在Unitree宇树Go2智能机器狗的应用

本期拆解带来的是宇树科技推出的Go2智能机器狗,这款机器狗采用狗身体形态,前端设有激光雷达,摄像头和照明灯。在腿部设有12个铝合金精密关节电机,并配有足端力传感器,通过关节运动模拟狗的运动,并可做出多种…...

TaskFlow开发日记 #1 - 原生JS实现智能Todo组件

一、项目亮点 - 📌 **零依赖实现**:纯原生JavaScript CSS3 - 📌 **数据持久化**:LocalStorage自动同步 - 📌 **交互优化**:收藏置顶 动态统计 - 📌 **响应式设计**:完美适配移动端…...

es的告警信息

Elasticsearch(ES)是一个开源的分布式搜索和分析引擎,在运行过程中可能会产生多种告警信息,以提示用户系统中存在的潜在问题或异常情况。以下是一些常见的 ES 告警信息及其含义和处理方法: 集群健康状态告警 信息示例…...

vue实现在线进制转换

vue实现在线进制转换 主要功能包括: 1.支持2-36进制之间的转换。 2.支持整数和浮点数的转换。 3.输入验证(虽然可能存在不严格的情况)。 4.错误提示。 5.结果展示,包括大写字母。 6.用户友好的界面,包括下拉菜单、输…...

责任链设计模式(单例+多例)

目录 1. 单例责任链 2. 多例责任链 核心区别对比 实际应用场景 单例实现 多例实现 初始化 初始化责任链 执行测试方法 欢迎关注我的博客!26届java选手,一起加油💘💦👨‍🎓😄😂 最近在…...

Matlab 分数阶PID控制永磁同步电机

1、内容简介 Matlab 203-分数阶PID控制永磁同步电机 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略...

Java中LocalDateTime类

Java中的日期类 Date类LocalDateTime类创建LocalDateTime对象1 获取当前时间2 获取自己指定时间3 字符串创建日期 获取当前日期的信息1获取当前日期的年月日 时分秒2 获取当前日期周几\当年第几天\当月第几天3 获取当前⽇期所在周的周⽇和周⼀ 日期的运算1日期加减天数2 日期加…...

【C语言】--- 文件操作

文件操作 1. 为什么要使用文件2. 什么是文件2.1 程序文件2.2 数据文件2.3 文件名 3. 二进程文件和文本文件4. 文件的打开和关闭4.1 流和标准流4.1.1流4.2.2标准流 4.2 文件指针4.3 打开和关闭操作 5. 文件的顺序读写5.1 文件顺序读写函数5.1.1 fgetc 和 fputc5.1.2 fgets 和 fg…...

操作系统 4.4-从生磁盘到文件

文件介绍 操作系统中对磁盘使用的第三层抽象——文件。这一层抽象建立在盘块(block)和文件(file)之间,使得用户可以以更直观和易于理解的方式与磁盘交互,而无需直接处理磁盘的物理细节如扇区(se…...

第六章 进阶03 外包测试亮相

因为有年度重点项目,团队缺少测试资源,所以临时招聘了一个外包测试(后文用J代指),让产品经理亮亮来带她。 到今天J差不多入职有1个月时间了,亮亮组了个会,一起评审下J做的测试用例。 J展示了其…...

如何使用通义灵码完成PHP单元测试 - AI辅助开发教程

一、引言 在软件开发过程中,测试是至关重要的一环。然而,在传统开发中,测试常常被忽略或草草处理,很多时候并非开发人员故意为之,而是缺乏相应的测试思路和方法,不知道如何设计测试用例。随着 AI 技术的飞…...

使用 nano 文本编辑器修改 ~/.bashrc 文件与一些快捷键

目录 使用 nano 编辑器保存并关闭文件使用 sed 命令直接修改文件验证更改 如果你正在使用 nano 文本编辑器来修改 ~/.bashrc 文件,以下是保存并关闭文件的具体步骤: 使用 nano 编辑器保存并关闭文件 打开 ~/.bashrc 文件 在终端中运行以下命令&#xf…...

计算机组成原理——CPU与存储器连接例题

计算机组成原理——CPU与存储器连接例题 设CPU共有16根地址线和8根数据线,并用(MREQ) ̅作为访存控制信号(低电平有效),(WR) ̅作为读/写命令信号(高电平读,低电平写)。现有下列存储芯片&#…...

SQL 外键(Foreign Key)详细讲解

1. 什么是外键?​​ ​​定义​​:外键是数据库表中的一列(或一组列),用于​​建立两个表之间的关联关系​​。外键的值必须匹配另一个表的主键(Primary Key)或唯一约束(Unique Con…...

B3647 【模板】Floyd

题目链接&#xff1a;点击进入 题目 思路 代码 #include <bits/stdc.h> #define inf 0x3f3f3f3f using namespace std; const int maxn 1e6 10;int n,m,g[110][5000];int main() {ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>n>>m;memse…...

配置镜像端口和观察接口

top&#xff1a; 在G0/0/2上抓包通过其他端口ping pc4 可以看到 Wireshark 抓包没有任何反应&#xff0c;做个镜像端口并配置&#xff08;观察接口和镜像接口&#xff09; observe-port interface g0/0/2 #命令配置观察端口mirror to observe-port both …...

爬虫解决debbugger之替换文件

鼠鼠上次做一个网站的时候&#xff0c;遇到的debbugger问题&#xff0c;是通过打断点然后编辑断点解决的&#xff0c;现在鼠鼠又学会了一个新的技能 首先需要大家下载一个reres的插件&#xff0c;这里最好用谷歌浏览器 先请大家看看案例国家水质自动综合监管平台 这里我们只…...

erlang的安装-linux

1&#xff1a;解压 tar -zxvf 安装包 2&#xff1a;进入解压的目录执行&#xff1a; ./configure --prefix/usr/local/erlang --with-ssl --enable-threads --enable-smp-support --enable-kernel-poll --enable-hipe --without-javac 3&#xff1a;编译安装&#xff1a; m…...

Android Coil 3默认P3色域图加载/显示不出来

Android Coil 3默认P3色域图加载/显示不出来 解决&#xff0c;需要在Androidmanifest.xml使用Coil 3的activity配置属性&#xff1a; <activityandroid:colorMode"wideColorGamut"...</activity>...

【LaTeX】安装

Register - Overleaf, 在线LaTeX编辑器 注册Overleaf 安装 Latex2022 安装教程&#xff08;附安装资源&#xff09;_tex2022安装教程-CSDN博客 注&#xff1a;先安装 texlive&#xff0c;再安装TexStudio \documentclass{article} % 这里是导言区 \begin{document}Hello, wor…...

【2025年认证杯数学中国数学建模网络挑战赛】A题 解题建模过程与模型代码(基于matlab)

目录 【2025年认证杯数学建模挑战赛】A题解题建模过程与模型代码&#xff08;基于matlab&#xff09;A题 小行星轨迹预测解题思路第一问模型与求解第二问模型与求解 【2025年认证杯数学建模挑战赛】A题 解题建模过程与模型代码&#xff08;基于matlab&#xff09; A题 小行星轨…...

【KWDB 创作者计划】KWDB 数据库全维度解析手册

——从原理到实践&#xff0c;构建下一代数据基础设施 ​第一章&#xff1a;KWDB 设计哲学与技术全景 1.1 为什么需要 KWDB&#xff1f; 在数据爆炸与业务场景碎片化的今天&#xff0c;传统数据库面临三大挑战&#xff1a;​扩展性瓶颈​&#xff08;单机性能天花板&#xff…...

低代码开发能否取代后端?深度剖析与展望-优雅草卓伊凡

低代码开发能否取代后端&#xff1f;深度剖析与展望-优雅草卓伊凡 在科技迅猛发展的当下&#xff0c;软件开发领域新思潮与新技术不断涌现&#xff0c;引发行业内外热烈探讨。近日&#xff0c;笔者收到这样一个颇具争议的问题&#xff1a;“低代码开发能取代后端吗&#xff1f…...

LeetCode hot 100—最长回文子串

题目 给你一个字符串 s&#xff0c;找到 s 中最长的 回文 子串。 示例 示例 1&#xff1a; 输入&#xff1a;s "babad" 输出&#xff1a;"bab" 解释&#xff1a;"aba" 同样是符合题意的答案。示例 2&#xff1a; 输入&#xff1a;s "cb…...

蓝桥杯知识总结

文章目录 1.常用的数学方法2.大小写转换3.数组和集合排序数组排序集合排序 4.控制小数位数5.栈6.队列7.字符串相关方法8.十进制转n进制模板字符转为十进制某进制转化为十进制 9.前缀和10.差分11.离散化12.双指针13.二分14.枚举模板组合型枚举模板排列型枚举模板 15.搜索算法BFS…...

leetcode:2839. 判断通过操作能否让字符串相等 I(python3解法)

难度&#xff1a;简单 给你两个字符串 s1 和 s2 &#xff0c;两个字符串的长度都为 4 &#xff0c;且只包含 小写 英文字母。 你可以对两个字符串中的 任意一个 执行以下操作 任意 次&#xff1a; 选择两个下标 i 和 j 且满足 j - i 2 &#xff0c;然后 交换 这个字符串中两个…...

Python Lambda表达式详解

Python Lambda表达式详解 1. Lambda是什么&#xff1f; Lambda是Python中用于创建匿名函数&#xff08;没有名字的函数&#xff09;的关键字&#xff0c;核心特点是简洁。它适用于需要临时定义简单函数的场景&#xff0c;或直接作为参数传递给高阶函数&#xff08;如map()、f…...

Matlab 平衡车的建模与控制

1、内容简介 Matlab 189-平衡车的建模与控制 可以交流、咨询、答疑 2、内容说明 略 平衡车的建模与控制 选择一款平衡车&#xff08;如&#xff1a;小米九号平衡车等&#xff09;&#xff0c;并估计平衡车的关键参数。完成以下工作&#xff1a; 1. 建立平衡车模型&#xf…...

KWDB创作者计划—KWDB关系库与时序库混搭

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 作者&#xff1a;IT邦德 中国DBA联盟(ACDU)成员&#xff0c;10余年DBA工作经验 Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主&#xff0c;全网粉丝10万 擅长主流Oracle、MySQL、PG、高斯…...

Android studio2024的第一个安卓项目

目录 一、创建项目 1、创建Empty Views Activity类型项目 2、Android项目结构解析 manifests 目录&#xff1a; Gradle Scripts目录 3、创建安卓应用 二、测试 1、模拟器测试效果 2、连接真机&#xff0c;然后直接选择真机运行即可&#xff08;点击Run或Shift F10运行…...

航电系统之障碍物监测技术篇

航电系统的障碍物监测技术是保障飞行安全、提升飞行效率的核心技术之一&#xff0c;尤其在复杂环境和低空飞行中发挥着关键作用。以下从技术原理、传感器类型、数据处理与应用等方面进行系统介绍&#xff1a; 一、技术原理 航电系统的障碍物监测技术通过多传感器融合和智能算法…...

网站DDoS防护方案——构建企业级安全屏障的关键路径

本文深度解析DDoS攻击最新演变趋势与防御技术体系&#xff0c;通过攻击特征图谱、云原生防护架构、混合防御模型等维度&#xff0c;揭示企业级网站防护方案的设计逻辑。结合2023年金融行业千万级QPS攻击事件&#xff0c;引用Gartner最新防御技术成熟度曲线&#xff0c;给出可落…...

Linux系统使用lshw生成硬件报告方法

使用 lshw 生成 HTML 硬件报告指南 一、工具简介 lshw(List Hardware)是 Linux 系统下用于检测并报告硬件详细信息的命令行工具,支持输出多种格式(文本、HTML、XML 等)。 核心功能: 显示 CPU、内存、磁盘、PCI/USB 设备等完整硬件信息生成结构化报告,便于存档或分析支…...

力扣 905 按奇偶排序数组:双指针法的优雅实现

目录 问题背景 题目解析 解题思路 暴力解法 双指针法 代码实现 代码解析 算法效率 实际应用场景 总结 问题背景 在编程的世界里&#xff0c;数组排序问题一直是经典中的经典。今天我们要解决的是一个有趣的变种&#xff1a;按奇偶排序数组。题目要求我们将一个整数数…...

LeetCode hot 100—子集

题目 给你一个整数数组 nums &#xff0c;数组中的元素 互不相同 。返回该数组所有可能的子集&#xff08;幂集&#xff09;。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#xff1a;[[],[1],[2…...

BERT - BertTokenizer, BertModel API模型微调

本节代码将展示如何在预训练的BERT模型基础上进行微调&#xff0c;以适应特定的下游任务。 ⭐学习建议直接看文章最后的需复现代码&#xff0c;不懂得地方再回看 微调是自然语言处理中常见的方法&#xff0c;通过在预训练模型的基础上添加额外的层&#xff0c;并在特定任务的…...

通过代码获取接口文档工具

通过代码获取接口文档工具 介绍使用到的技术使用说明核心源码演示截图工具源码 介绍 1.通过前后端代码来生成规格化的接口文档 2.支持拖拽上传或点击选择文件&#xff0c;可以一次选择多个文件或选择文件夹 3.用户选择前后端代码&#xff0c;工具调用GPT解析&#xff0c;得到规…...

不再卡顿!如何根据使用需求挑选合适的电脑内存?

电脑运行内存多大合适&#xff1f;在选购或升级电脑时&#xff0c;除了关注处理器的速度、硬盘的容量之外&#xff0c;内存&#xff08;RAM&#xff09;的大小也是决定电脑性能的一个重要因素。但究竟电脑运行内存多大才合适呢&#xff1f;这篇文章将帮助你理解不同使用场景下适…...

leetcode589 N叉树的前序遍历

前序遍历的顺序是&#xff1a;根节点 -> 子节点1 -> 子节点2 -> ... -> 子节点N 递归&#xff1a; class Solution { private:void traverse(Node* cur, vector<int>& res){if(cur NULL) return;res.push_back(cur->val);for(Node* child: cur->…...