机器学习模型性能提升教程(特征工程和模型优化)
特征工程和模型优化是提升机器学习模型性能的核心步骤,以下从特征工程和模型优化两个维度,结合具体案例展开说明:
一、特征工程
特征工程的核心目标是从原始数据中提取更有价值的信息,常见方法包括特征选择、特征构造和特征转换。
1. 特征选择
目标:减少冗余特征,降低模型复杂度,提升训练效率。
-
方法1:基于统计指标
-
案例:房价预测中,计算特征与目标变量(房价)的相关性系数,选择相关性高的特征。
-
代码示例:
import pandas as pd from sklearn.feature_selection import SelectKBest, f_regression# 假设df为数据集,'PRICE'为目标变量 X = df.drop('PRICE', axis=1) y = df['PRICE']# 选择与目标变量相关性最高的5个特征 selector = SelectKBest(score_func=f_regression, k=5) X_new = selector.fit_transform(X, y) selected_features = X.columns[selector.get_support()] print("Selected Features:", selected_features)
-
-
方法2:基于树模型的重要性评分
-
案例:使用随机森林或XGBoost模型,根据特征重要性得分筛选特征。
-
代码示例:
from xgboost import XGBRegressor import matplotlib.pyplot as pltmodel = XGBRegressor() model.fit(X, y)# 绘制特征重要性 importance = model.feature_importances_ plt.barh(X.columns, importance) plt.xlabel('Importance') plt.title('Feature Importance') plt.show()
-
2. 特征构造
目标:通过组合或变换原始特征,生成新的特征,提升模型表达能力。
-
案例1:时间特征提取
-
场景:预测用户购买行为时,从时间戳中提取“星期几”、“是否节假日”等特征。
-
代码示例:
import pandas as pddf['timestamp'] = pd.to_datetime(df['timestamp']) df['day_of_week'] = df['timestamp'].dt.dayofweek df['is_holiday'] = df['timestamp'].dt.date.isin(holidays_list).astype(int)
-
-
案例2:交互特征
-
场景:预测房价时,构造“房间数×面积”作为新特征。
-
代码示例:
python复制代码df['room_area'] = df['RM'] * df['LSTAT'] # 示例字段
-
3. 特征转换
目标:将非线性关系转换为线性关系,或标准化特征分布。
-
案例1:对数变换
-
场景:目标变量(如房价)呈右偏分布时,对目标变量取对数。
-
代码示例:
import numpy as np df['log_price'] = np.log1p(df['PRICE'])
-
-
案例2:独热编码(One-Hot Encoding)
-
场景:分类特征(如“房屋类型”)转换为数值特征。
-
代码示例:
python复制代码df = pd.get_dummies(df, columns=['HOUSE_TYPE'], drop_first=True)
-
二、模型优化
模型优化的核心目标是提升模型预测精度和泛化能力,常见方法包括超参数调优、模型融合和正则化。
1. 超参数调优
目标:通过调整模型参数,找到最优配置。
-
方法1:网格搜索(Grid Search)
-
案例:调整随机森林的树数量和最大深度。
-
代码示例:
from sklearn.model_selection import GridSearchCV from sklearn.ensemble import RandomForestRegressorparam_grid = {'n_estimators': [100, 200, 300],'max_depth': [None, 10, 20] } grid_search = GridSearchCV(RandomForestRegressor(), param_grid, cv=5) grid_search.fit(X, y) print("Best Parameters:", grid_search.best_params_)
-
-
方法2:贝叶斯优化
- 工具:使用
Optuna
或Hyperopt
进行更高效的超参数搜索。
- 工具:使用
2. 模型融合
目标:结合多个模型的预测结果,提升稳定性。
-
案例1:Bagging(集成学习)
-
场景:使用随机森林或梯度提升树(如XGBoost)。
-
代码示例:
from sklearn.ensemble import RandomForestRegressor model = RandomForestRegressor(n_estimators=100, random_state=42) model.fit(X, y)
-
-
案例2:Stacking(堆叠)
-
场景:结合多个模型(如线性回归、随机森林、XGBoost)的预测结果。
-
代码示例:
from mlxtend.regressor import StackingCVRegressor from sklearn.linear_model import LinearRegression from sklearn.ensemble import RandomForestRegressor from xgboost import XGBRegressormodel1 = LinearRegression() model2 = RandomForestRegressor() model3 = XGBRegressor()sreg = StackingCVRegressor(regressors=(model1, model2, model3),meta_regressor=LinearRegression(),cv=5) sreg.fit(X, y)
-
3. 正则化
目标:防止模型过拟合,提升泛化能力。
-
案例1:L1/L2正则化
-
场景:在线性回归中添加正则化项。
-
代码示例:
from sklearn.linear_model import Ridge, Lassoridge_model = Ridge(alpha=1.0) lasso_model = Lasso(alpha=0.1)
-
-
案例2:XGBoost正则化
-
场景:调整
lambda
和alpha
参数控制L2和L1正则化。 -
代码示例:
python复制代码xgb_model = XGBRegressor(reg_lambda=1.0, reg_alpha=0.1)
-
三、综合案例:房价预测
步骤1:特征工程
- 提取时间特征(如“建造年份”)。
- 构造交互特征(如“房间数×面积”)。
- 对目标变量取对数。
步骤2:模型优化
- 使用网格搜索调整XGBoost的超参数。
- 结合随机森林和XGBoost进行模型融合。
代码示例:
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error# 数据分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 模型训练与融合
xgb_model = XGBRegressor(n_estimators=200, max_depth=10, learning_rate=0.1)
rf_model = RandomForestRegressor(n_estimators=100, max_depth=20)xgb_model.fit(X_train, y_train)
rf_model.fit(X_train, y_train)# 预测与评估
y_pred_xgb = xgb_model.predict(X_test)
y_pred_rf = rf_model.predict(X_test)
y_pred_final = (y_pred_xgb + y_pred_rf) / 2print("MSE:", mean_squared_error(y_test, y_pred_final))
以下是特征工程和模型优化的进一步扩展内容,结合更多高级技巧和实际应用场景,帮助更全面地提升模型性能:
四、特征工程进阶
1. 特征缩放(Scaling)
目标:将特征值缩放到特定范围,避免因量纲差异导致模型训练不稳定。
-
方法1:标准化(Standardization)
-
场景:适用于梯度下降优化的模型(如线性回归、神经网络)。
-
代码示例:
from sklearn.preprocessing import StandardScalerscaler = StandardScaler() X_scaled = scaler.fit_transform(X)
-
-
方法2:归一化(Normalization)
-
场景:适用于距离度量敏感的模型(如KNN、SVM)。
-
代码示例:
from sklearn.preprocessing import MinMaxScalerscaler = MinMaxScaler() X_normalized = scaler.fit_transform(X)
-
2. 特征降维
目标:减少特征维度,降低计算复杂度,同时避免维度灾难。
-
方法1:主成分分析(PCA)
-
场景:保留数据的主要变化方向,适用于高维数据。
-
代码示例:
from sklearn.decomposition import PCApca = PCA(n_components=10) # 保留10个主成分 X_pca = pca.fit_transform(X)
-
-
方法2:线性判别分析(LDA)
- 场景:监督降维,适用于分类任务。
3. 特征重要性分析
目标:深入理解特征对模型预测的贡献。
-
方法1:SHAP值
-
场景:解释模型预测结果,评估特征的全局和局部重要性。
-
代码示例:
import shap import xgboost as xgbmodel = xgb.XGBClassifier() model.fit(X_train, y_train)explainer = shap.Explainer(model) shap_values = explainer(X_test) shap.summary_plot(shap_values, X_test)
-
-
方法2:Permutation Importance
- 场景:通过随机打乱特征值,评估特征对模型性能的影响。
五、模型优化进阶
1. 自动化超参数调优
目标:通过自动化工具高效搜索最优参数。
-
工具1:Optuna
-
场景:支持贝叶斯优化,适用于复杂模型。
-
代码示例:
import optuna from xgboost import XGBClassifierdef objective(trial):param = {'max_depth': trial.suggest_int('max_depth', 3, 10),'learning_rate': trial.suggest_float('learning_rate', 0.01, 0.3),'n_estimators': 100}model = XGBClassifier(**param)model.fit(X_train, y_train)return -model.score(X_test, y_test) # Optuna最小化目标函数study = optuna.create_study(direction='minimize') study.optimize(objective, n_trials=50) print("Best Parameters:", study.best_params)
-
-
工具2:HyperOpt
- 场景:支持随机搜索和TPE算法。
2. 模型集成(Ensemble Learning)
目标:结合多个模型的预测结果,提升稳定性和准确性。
-
方法1:Boosting
-
场景:通过逐步修正前一个模型的错误,提升性能。
-
代码示例:
from sklearn.ensemble import GradientBoostingClassifiermodel = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1) model.fit(X_train, y_train)
-
-
方法2:Stacking(堆叠)
- 场景:结合不同类型模型(如树模型和线性模型)的预测结果。
- 代码示例(参考前文StackingCVRegressor)。
3. 模型正则化与剪枝
目标:防止模型过拟合,提升泛化能力。
-
方法1:决策树剪枝
-
场景:通过限制树的深度或最小样本数,减少过拟合。
-
代码示例:
from sklearn.tree import DecisionTreeClassifiermodel = DecisionTreeClassifier(max_depth=5, min_samples_split=10) model.fit(X_train, y_train)
-
-
方法2:神经网络Dropout
- 场景:在训练过程中随机丢弃神经元,防止过拟合。
六、综合案例:用户流失预测
背景:某电信公司希望预测用户是否会流失,以制定挽留策略。
步骤1:特征工程
- 时间特征:提取用户最近一次登录时间间隔、活跃天数等。
- 行为特征:计算用户通话时长、短信发送频率等。
- 交互特征:构造“通话时长×短信频率”作为新特征。
- 降维:使用PCA将高维行为特征降维至10个主成分。
步骤2:模型优化
- 超参数调优:使用Optuna调整XGBoost的
max_depth
和learning_rate
。 - 模型融合:结合XGBoost和逻辑回归的预测结果。
- 正则化:在逻辑回归中添加L2正则化。
代码示例:
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import Pipeline
from sklearn.decomposition import PCA
from xgboost import XGBClassifier
from sklearn.ensemble import StackingClassifier# 特征工程与模型流水线
pca = PCA(n_components=10)
xgb = XGBClassifier(use_label_encoder=False, eval_metric='logloss')
lr = LogisticRegression(C=1.0, penalty='l2')# 模型融合
stacking_model = StackingClassifier(estimators=[('xgb', xgb), ('pca_lr', Pipeline([('pca', pca), ('lr', lr)]))], final_estimator=lr)
stacking_model.fit(X_train, y_train)# 评估
accuracy = stacking_model.score(X_test, y_test)
print("Accuracy:", accuracy)
七、注意事项
- 数据质量:特征工程的前提是高质量的数据,需处理缺失值、异常值和重复值。
- 特征相关性:避免高度相关的特征,可能导致模型不稳定。
- 过拟合与欠拟合:通过交叉验证和学习曲线调整模型复杂度。
- 业务理解:特征工程需结合业务场景,避免盲目堆砌特征。
通过以上方法,结合实际业务需求,可以显著提升模型性能。特征工程和模型优化是迭代过程,需不断尝试和调整,找到最适合当前问题的解决方案。
相关文章:
机器学习模型性能提升教程(特征工程和模型优化)
特征工程和模型优化是提升机器学习模型性能的核心步骤,以下从特征工程和模型优化两个维度,结合具体案例展开说明: 一、特征工程 特征工程的核心目标是从原始数据中提取更有价值的信息,常见方法包括特征选择、特征构造和特征转换。…...
跨域问题前端解决
由于浏览器的同源策略,前后端分离的项目,调试的时候总是会遇到跨域的问题,这里通过修改前端代码解决跨域问题。 首先先查看前端代码的根目录下,有没有vue.config.js文件, 若有,使用方法1,若没有此文件&…...
每天五分钟深度学习框架pytorch:搭建LSTM完成时间序列的预测
本文重点 前面一篇文章我们使用了pytorch搭建了循环神经网络LSTM然后完成了手写字体识别的任务,本文我们使用LSTM完成一个时间序列的任务。 数据集介绍 数据集如图所示,其中有一列是时间,然后还有一列是对应时间的起飞航班数,它可以看成是一个时间序列,通过前面t时间的起…...
Autosar应用层开发基础——Arxml制作
Davinci软件的主要作用 (1) AUTOSAR 软件架构设计 图形化建模:支持 SWC(Software Component)设计、接口定义、端口连接等。 分层架构管理:清晰划分 应用层(SWC) 和 基础软件层(BSW)…...
Word 页眉设置(不同章节不同页眉)
需求分析 要给文档设置页眉,但是要不同的页眉不同的页眉 问题点:一旦设置页眉 每个页眉都是一样的 现在要设置不一样的 设置了页眉但是整个文章的页眉都一样 问题解决 取消链接 前一节(不和前面的页眉同步更新) 小结 不同的…...
Redis的Java客户端的使用
Redis 的 Java 客户端使用 C 追求极致的性能, 而 Java没有这样的追求. Redis 在官网公开了所使用的应用层协议 (RESP). 任何一个第三方都可以通过这个协议, 来实现出一个和 Redis 服务器通信的客户端程序. 已经有很多大佬, 做好了库, 可以让我们直接调用 (不必关注 RESP 协议…...
双向链表示例
#include <stdio.h> #include <stdlib.h>// 定义双向链表节点结构体 typedef struct list {int data; // 数据部分struct list *next; // 指向下一个节点的指针struct list *prev; // 指向前一个节点的指针 } list_t;// 初始化链表,将链表的…...
Unity如何把一个物体下物体复制很多到别的物体下
C# 脚本批量复制 如果需批量复制到多个父物体下,推荐用脚本实现: using UnityEngine;public class CopyChildren : MonoBehaviour {// 原父物体(拖拽赋值)public Transform sourceParent;// 目标父物体数组(可拖拽多个…...
Java Properties 类详解
Java Properties 类详解 Properties 是 Java 中用于处理 键值对配置文件 的特殊类,继承自 Hashtable<Object,Object>。以下是其核心知识点: 1. 核心特性 特性说明存储格式纯文本文件(.properties),每行 keyval…...
进程内存分布--之理论知识
一个由C/C编译的程序占用的内存分为以下几个部分 : 1、栈区(stack):由编译器自动分配释放 ,存放函数调用函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap…...
TDengine 窗口预聚集
简介 在大数据量场景下,经常需要查询某段时间内的汇总结果,当历史数据变多或者时间范围变大时,查询时间也会相应增加。通过预聚集的方式可以将计算结果提前存储下来,后续查询可以直接读取聚集结果,而不需要扫描原始数…...
高精度加法与乘法
原理就是模拟我们列竖式的过程。 一、加法 加法很简单,我们这里不再赘述 string solve(string s, string t) {string ans;int tmp 0;int n s.size()-1;int m t.size()-1;while(n>0||m>0||tmp){if(n>0){tmp s[n--]-0;}if(m>0){tmp t[m--]-0;}ans…...
macOS可视化桌面配置docker加速器
macOS可视化桌面配置docker加速器 在镜像settings->docker Engine改为国内镜像修改为国内镜像重启docker(可视化界面启动或者使用命令行)使用命令重启可视化界面重启 在镜像settings->docker Engine改为国内镜像 修改为国内镜像 {"registry-mirrors": ["…...
不用训练,集成多个大模型产生更优秀的输出
论文标题 Collab: Controlled Decoding using Mixture of Agents for LLM Alignment 论文地址 https://arxiv.org/pdf/2503.21720 作者背景 JP摩根,马里兰大学帕克分校,普林斯顿大学 动机 大模型对齐(alignment)的主要目的…...
【大模型】DeepSeek + 蓝耕MaaS平台 + 海螺AI生成高质量视频操作详解
目录 一、前言 二、蓝耘智能云MaaS平台介绍 2.1 蓝耘智算平台是什么 2.2 平台优势 2.3 平台核心能力 三、海螺AI视频介绍 3.1 海螺AI视频是什么 3.2 海螺AI视频主要功能 3.3 海螺AI视频应用场景 3.4 海螺AI视频核心优势 3.5 项目git地址 四、蓝耘MaaS平台DeepSeek海…...
RobotFrameWork环境搭建及使用
RF环境搭建 首先安装python并且配置python环境变量pip install robotframeworkpip install robotframework-ride 生产桌面快捷方式 不行换豆瓣源检查一下pip list RF类库和扩展库 标准库 按F5快捷键查询,可以看到rf自带的库不需要额外安装这些标准库在python的 …...
Flutter之设计与主题字体
目录: 1、共享主题样式2、文字3、使用自定义字体4、以 package 的方式使用字体1. 将字体添加到 package2. 将 package 和字体添加到应用3. 使用字体 1、共享主题样式 MaterialApp(title: appName,theme: ThemeData(// Define the default brightness and colors.col…...
发生梯度消失, 梯度爆炸问题的原因,怎么解决?
目录 一、梯度消失的原因 二、梯度爆炸的原因 三、共同的结构性原因 四、解决办法 五、补充知识 一、梯度消失的原因 梯度消失指的是在反向传播过程中,梯度随着层数的增加指数级减小(趋近于0),导致浅层网络的权重几乎无法更新…...
脑电学习笔记
一,原理简介 使用eprime或者matlab给被试呈现刺激,并在某个时间发送Mark,脑电帽会同步采集被试的脑电信号,经放大器放大后,控制盒会把脑电信号和mark 信号同步到一起,通过usb线传入到采集系统(比…...
Java面试黄金宝典37
1. 转发与重定向的区别 定义 转发:服务器内部的一种请求处理方式,当客户端向服务器发送请求后,服务器将该请求转发到另一个资源(如 JSP、Servlet)进行处理,整个过程在服务器端完成,客户端并不知道请求被转发,且使用的是同一个请求对象和响应对象。重定向:服务器向客户…...
嵌入式rodata段
在嵌入式软件开发中,将数据放入只读数据段(.rodata)具有以下好处及典型应用示例: 好处 数据保护 .rodata段的内容在程序运行时不可修改,防止意外或恶意篡改,提升系统稳定性。 节省RAM资源 只读数据可直接…...
Python学习之numpy
Python学习之numpy 数组是Numpy库的核心数据结构。 NumPy 是一个 Python 包。 它代表 “Numeric Python”。 它是一个由多维数组对象和用于处理数组的例程集合组成的库。 Numeric,即 NumPy 的前身,是由 Jim Hugunin 开发的。 也开发了另一个包 Numarr…...
ext4磁盘扩容
ext4扩容示例 当前虚机中,逻辑卷名称data_lv,卷组名称data_vg,物理卷名称data_pv,他们的大小都为100G,由于磁盘空间不够使用,申请扩容硬盘至200G,以下操作将ext4的/data分区扩容至200G。 # 1.…...
PostgreSQL 16深度解析(从16.0-16.8)
作为开源关系型数据库的标杆,PostgreSQL持续通过版本迭代展现其技术生命力。本文将以技术视角深度剖析PostgreSQL 16系列(16.0至16.8)的核心演进,重点解读新增功能、性能优化及实践价值,为数据库管理者与开发者提供升级…...
10个DeepSeek、ChatGPT提示词更快更好的学术文献阅读!
目录 AIGC助力快速阅读文献 10个文献阅读提示词 大家好这里是AIWritePaper官方账号,官网👉AIWritePaper~ AIGC助力快速阅读文献 在当今学术界,海量的论文如潮水般涌来,想要跟上最新研究进展简直比在图书馆里找到一本没被借走的…...
基于spring boot 鲜花销售系统PPT(源码+lw+部署文档+讲解),源码可白嫖!
课题意义 随着网络不断的普及发展,鲜花销售系统依靠网络技术的支持得到了快速的发展,首先要从用户的实际需求出发,通过了解用户的需求开发出具有针对性的信息管理系统,利用目前网络给用户带来的方便快捷这一特点对系统进行调整&am…...
Spring Boot 与 TDengine 的深度集成实践(三)
创建 RESTful API 编写控制器类 在 Spring Boot 项目中,控制器类负责处理 HTTP 请求,并将请求转发到相应的服务或数据访问层进行处理,最后返回响应结果给客户端。我们通过使用RestController和RequestMapping注解来定义控制器类和 API 路由…...
物理日志和逻辑日志
在 MySQL 的日志系统中,物理日志 和 逻辑日志 是两种不同类型的日志记录方式,它们的设计目标和实现方式有本质区别。以下是它们的详细解释和对比: 1. 物理日志 定义 物理日志记录的是数据页(Page)的物理修改&#x…...
[Deep-ML]Reshape Matrix(重塑矩阵)
Reshape Matrix(重塑矩阵) 题目链接: Reshape Matrix(重塑矩阵)https://www.deep-ml.com/problems/3 题目描述: 难度: easy(简单)。 分类: Linear Alg…...
Linux文件系统中的Page Cache和内存管理中的Page之间的关系
Linux文件系统中的Page Cache和内存管理中的Page之间有密切的关联,两者在底层机制上紧密结合,共同实现高效的内存和文件系统管理。以下是它们的关系和关键点: 核心关系 Page Cache的底层是内存Page Page Cache是由内存管理中的物理内存页&…...
day25-回溯__491.递增子序列 __46.全排列__47.全排列 II
491.递增子序列 这道题要求输出一个数组的所有非递减子序列,并且数组中是可以存在重复元素的,那么我们需要考虑的就一定是之前的树层去重的方法 并且要求非递减,所以我们每次添加元素到path要先判断两个条件: 该元素的值是否在同…...
微型导轨的制造工艺中,热处理的目的是什么?
热处理是指将金属或合金加热到一定温度,保温一段时间,然后通过适当的冷却方式使其发生物理变化,从而使其性能发生改变的加工技术,而在微型导轨的制造工艺中,热处理是必须的,那么热处理的目的是什么呢&#…...
学透Spring Boot — 018. 优雅支持多种响应格式
这是我的专栏《学透Spring Boot》的第18篇文章,想要更系统的学习Spring Boot,请访问我的专栏:学透 Spring Boot_postnull咖啡的博客-CSDN博客。 目录 返回不同格式的响应 Spring Boot的内容协商 控制器不用任何修改 启动内容协商配置 访…...
数据结构与算法----顺序表和复杂度
嘻嘻,我们用c语言来手撕顺序表!!!全程高能比喻代码实战,保证你笑着学会!!! 引言 1、数据结构是计算机存储、组织数据的方式。算法是一系列计算步骤,用来将输入数据转化…...
Android studio局域网屏幕共享(旧手机可以用来当监控啦)
项目地址 https://github.com/Anyuersuper/ScreenSharing 百度网盘 通过网盘分享的文件:ScreenSharing-master.zip 链接: https://pan.baidu.com/s/1URQnyI8zJF-IFl5_-ttXBg?pwdyuer 提取码: yuer 📱 屏幕分享应用 (ScreenSharing) 📋 项目…...
Redis持久化之RDB
RDB持久化是将当前进程数据生成快照保存到硬盘的过程,触发RDB持久化过程分为手动触发和自动触发。 1.触发机制 手动触发费别对应save和bgsave命令: save命令:阻塞当前Redis服务器,直到RDB过程完成为止,对于内存比较…...
Ubuntu 64-bit 交叉编译 FFmpeg(高级用户指南)
适用于 ARM (aarch64)、Windows (mingw)、Android、Raspberry Pi 等平台的交叉编译。 🔹 1. 安装交叉编译工具链 ARM (aarch64) 示例 sudo apt update sudo apt install gcc-aarch64-linux-gnu g-aarch64-linux-gnu binutils-aarch64-linux…...
YOLO V8中的“中心点邻近区域 + 动态IoU匹配“
它是联合优化正样本分配的策略,旨在更精准地匹配预测框与真实目标的位置关系。以下分步详解其原理: 1. 中心点邻近区域(Central Region) 1.1 目标中心区域定义 基础思想:将真实边界框ÿ…...
【MySQL | 八、 事务管理】
文章目录 什么是事务?事务的特性:事务的意义事务的提交查看事务提交方式事务的自动提交事务的手动提交开始事务执行SQL操作事务操作提交事务示例: 事务的隔离级别并发访问的基本概念并发事务的典型问题对ACID特性的影响查看和设置隔离属性各个…...
Ubuntu 下搭建 MCU 开发环境全流程指南(以 STM32 为例)
在嵌入式开发中,许多工程师都习惯于在 Windows 平台使用 Keil、IAR 等 IDE。然而,随着对自动化、可定制性以及开放工具链的需求增长,越来越多的开发者开始尝试在 Linux 环境下进行 MCU 开发。 本篇文章将以 STM32F1 系列 为例,手把手带你在 Ubuntu 下搭建一个完整的 MCU 开…...
Redis淘汰策略详解!
目录 一、为什么需要淘汰策略? 🤔二、Redis 的淘汰策略详解 👇三、如何选择合适的淘汰策略? 🤔➡️✅四、如何切换 Redis 的淘汰策略? ⚙️🔧五、总结 🎉 🌟我的其他文章…...
基于51单片机和TM1638模块的小游戏《打地鼠》
目录 系列文章目录前言一、效果展示二、原理分析三、各模块代码1、TM1638模块2、定时器03、定时器1 四、主函数总结 系列文章目录 前言 有两个版本,普中开发板版本和最小系统板版本,两个版本差别在于晶振频率不一样,其他的都相同。 本文代码…...
机器学习之数据预处理(一):缺失值处理和异常值识别的几种常用方法
始终致力于将复杂知识通俗化的不断追求中,不足之处欢迎批评指正。 1、噪声处理 噪声是一个测量变量中的随机错误或偏差,是观测值和真实值之间的误差,包括错误值或偏离期望的孤立点值。对于噪声的处理,通常可以采用数据平滑技术来…...
25/4/6 算法笔记<仿真O2DES>基础知识学习
此文章就来整理一下我学习到的O2DES仿真框架的一些核心知识 核心概念: 模拟器(Simulator):模拟器是O2DES框架的核心组件,用来管理模拟时钟,事件调度和执行。可以通过Simulator类创建模拟环境&#…...
Three.js 系列专题 3:光照与阴影
内容概述 光照是 3D 场景真实感的关键。Three.js 提供了多种光源类型,每种光源有不同的效果和用途。本专题还将介绍如何启用和优化阴影效果,提升场景的深度感。 学习目标 理解不同光源类型及其应用场景。掌握在 Three.js 中添加光源并启用阴影。学会调整阴影效果以平衡真实…...
接口自动化学习五:mock工具使用
Moco简介: Mock是一个简单搭建模拟服务器的框架,可以用来模拟http、https、socket等协议。 原理: Mock会根据一些配置,启动一个真正的HTTP服务(会监听本地的某个端口),当发起的请求满足某个条件时…...
Java学习——day22(Java反射基础入门)
文章目录 1.反射的定义2. 认识反射的关键API2.1 Class2.2 Field2.3 Method2.4 Constructor 3. 示例代码讲解与分析4. 编写反射示例代码的步骤4.1 定义测试类4.2 编写主程序,使用反射获取信息4.3 通过反射创建对象并调用方法 5. 总结6.今日生词 Java反射笔记 1.反射的…...
字符串、列表、元组、字典
字符串 双引号或者单引号中的数据,就是字符串 字符串输入 之前在学习input的时候,通过它能够完成从键盘获取数据,然后保存到指定的变量中; 注意:input获取的数据,都以字符串的方式进行保存,即…...
数据分析-Excel-学习笔记
Day1 复现报表聚合函数:日期联动快速定位区域SUMIF函数SUMIFS函数环比、同比计算IFERROR函数混合引用单元格格式总结汇报 拿到一个Excel表格,首先要看这个表格个构成(包含了哪些数据),几行几列,每一列的名称…...
Nginx 常见面试题
一、nginx常见错误及处理方法 1.1 404 bad request 一般原因:请求的Header过大 解决办法: 配置nginx.conf 相关设置1. client_header_buffer_size 16k; 2. large_client_header_buffers 4 64k;1.2 413 Request Entity Too Large 一般原因࿱…...