集成学习(二):从理论到实战(附代码)
接上一篇续写《集成学习(一):从理论到实战(附代码)》
五、实用算法
5.1 随机森林
随机森林在数据集的各个子样本上拟合许多决策树分类器,并使用平均来提高预测精度和控制过拟合。每一个分类器拟合了一部分随机样本,同时也拟合一部分随机特征
通过以下两个主要步骤来构建强大的预测模型:
- Bootstrap Sampling:从原始数据集中随机抽取样本(有放回抽样),创建多个不同的子集。
- Random Feature Selection:在每个子集上训练一个决策树时,在每次分裂节点时只考虑一部分特征,而不是所有特征。这样可以增加模型的多样性,并减少过拟合的风险。
最终,对于分类问题,随机森林通常使用多数投票的方式来决定最终类别;对于回归问题,则通常使用平均值的方式来决定最终预测值。
RandomForestClassifier
和 RandomForestRegressor
是基于集成学习方法中的随机森林(Random Forest)算法实现的分类和回归模型。随机森林通过构建多个决策树并将它们的结果结合起来,以提高预测的准确性和控制过拟合。
5.1.1 RandomForestClassifier
RandomForestClassifier
用于分类任务,通过构建多个决策树分类器,并将它们的预测结果进行组合来得出最终的分类决策。
工作原理
- Bootstrap Aggregating (Bagging):对原始数据集进行有放回抽样,生成多个不同的训练子集。
- Random Feature Selection:在每个节点分裂时,只考虑一个随机选择的特征子集,而不是所有特征。
- Majority Voting:每棵树都对输入数据进行分类,最终的分类结果是所有树的分类结果中出现次数最多的类别(即多数投票)。
示例代码
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split# 创建合成数据集
X, y = make_classification(n_samples=1000, n_features=20, random_state=42)# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# 定义随机森林分类器
rf_clf = RandomForestClassifier(n_estimators=100, max_depth=5, random_state=42)# 训练模型
rf_clf.fit(X_train, y_train)# 使用训练好的模型进行预测
predictions = rf_clf.predict(X_test)
5.1.2 RandomForestRegressor
RandomForestRegressor
用于回归任务,通过构建多个决策树回归器,并将它们的预测结果进行组合来得出最终的预测值。
工作原理
- Bootstrap Aggregating (Bagging):与分类器类似,通过对原始数据集进行有放回抽样生成多个不同的训练子集。
- Random Feature Selection:在每个节点分裂时,同样只考虑一个随机选择的特征子集。
- Average Prediction:每棵树都对输入数据进行预测,最终的预测结果是对所有树的预测结果取平均值。
示例代码
from sklearn.ensemble import RandomForestRegressor
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split# 创建合成数据集
X, y = make_regression(n_samples=1000, n_features=20, noise=0.1, random_state=42)# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# 定义随机森林回归器
rf_reg = RandomForestRegressor(n_estimators=100, max_depth=5, random_state=42)# 训练模型
rf_reg.fit(X_train, y_train)# 使用训练好的模型进行预测
predictions = rf_reg.predict(X_test)
关键参数解释
n_estimators
:指定要构建的决策树数量。更多的树通常能带来更好的性能,但也会增加计算成本。max_depth
:设置每棵树的最大深度。限制树的深度可以帮助防止过拟合。random_state
:控制随机性,确保实验结果的可重复性。
5.1.3 总结
- RandomForestClassifier 和 RandomForestRegressor 都是基于随机森林算法的模型,分别用于解决分类和回归问题。
- 随机森林通过构建大量的决策树,并结合这些树的预测结果来提高模型的稳定性和准确性。
- 在分类任务中,采用多数投票法决定最终类别;在回归任务中,则通过平均各树的预测值得到最终预测结果。
- 随机森林的一个重要特性是其对高维数据的良好适应性以及对噪声数据的鲁棒性,使其成为实际应用中非常流行的机器学习算法之一。
5.2 XGBoost
XGBoost的核心是梯度提升决策树(Gradient Boosting Decision Trees, GBDT),但其在性能优化、正则化等方面做了很多改进,使得它在速度和效果上都优于传统的GBDT实现。以下是XGBoost的一些关键特性:
-
梯度提升:从一个初始预测开始,然后迭代地添加新的树,每棵树都在尝试修正之前所有树的预测误差。具体来说,每棵新树都是根据前一棵树的残差(即预测值与真实值之间的差异)来训练的。
-
正则化:XGBoost引入了正则项到损失函数中,帮助控制模型复杂度,减少过拟合的风险。
-
列采样和行采样:类似于随机森林,XGBoost也支持特征子集(列)采样和样本子集(行)采样,增加了模型的多样性并提高了计算效率。
-
近似树分裂:为了提高处理大规模数据集的能力,XGBoost使用了一种近似算法来寻找最佳分裂点,而不是精确搜索,这大大加快了训练过程。
-
并行处理:尽管每棵树的构建过程本质上是顺序的,XGBoost通过并行化计算每个节点的最佳分裂点来加速训练。
XGBClassifier
和 XGBRegressor
是基于XGBoost(eXtreme Gradient Boosting)算法的实现,专门用于分类和回归任务。XGBoost是一种高效的梯度提升框架,它通过构建一系列决策树并将它们组合起来以形成一个强大的预测模型。
5.2.1 XGBClassifier
XGBClassifier
适用于分类问题。它通过构建一系列决策树,并使用梯度下降的方法来最小化损失函数(如对数损失),从而逐步改善模型的预测能力。
示例代码
from xgboost import XGBClassifier
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score# 创建合成数据集
X, y = make_classification(n_samples=1000, n_features=20, random_state=42)# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# 定义XGB分类器
xgb_clf = XGBClassifier(use_label_encoder=False, eval_metric='mlogloss')# 训练模型
xgb_clf.fit(X_train, y_train)# 使用训练好的模型进行预测
predictions = xgb_clf.predict(X_test)# 计算准确率
accuracy = accuracy_score(y_test, predictions)
print(f"XGB Classifier Accuracy: {accuracy:.4f}")
use_label_encoder=False
:避免警告信息,因为从某些版本开始,默认情况下会使用标签编码器转换标签。eval_metric='mlogloss'
:指定评估指标为多类对数损失。
5.2.2 XGBRegressor
XGBRegressor
适用于回归问题。它的工作方式与XGBClassifier
类似,但目标是最小化回归任务中的损失函数(如均方误差)。
示例代码
from xgboost import XGBRegressor
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error# 创建合成数据集
X, y = make_regression(n_samples=1000, n_features=20, noise=0.1, random_state=42)# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# 定义XGB回归器
xgb_reg = XGBRegressor()# 训练模型
xgb_reg.fit(X_train, y_train)# 使用训练好的模型进行预测
predictions = xgb_reg.predict(X_test)# 计算均方误差
mse = mean_squared_error(y_test, predictions)
print(f"XGB Regressor MSE: {mse:.4f}")
关键参数解释
n_estimators
:要构建的树的数量。更多的树通常可以带来更好的性能,但也可能增加过拟合的风险。max_depth
:每棵树的最大深度。限制树的深度可以帮助防止过拟合。learning_rate
:每次迭代时对新增加的树的重要性进行缩放的比例。较小的学习率通常需要更多的树来达到同样的效果,但它有助于提高模型的泛化能力。subsample
:用于训练每棵树的数据比例。设置小于1.0的值可以减少过拟合。colsample_bytree
:用于训练每棵树的特征比例。同样,设置小于1.0的值可以增加模型的多样性,减少过拟合。
5.2.3 总结
- XGBClassifier 和 XGBRegressor 基于XGBoost算法,分别用于解决分类和回归问题。
- XGBoost通过梯度提升方法构建一系列决策树,并通过多种技术如正则化、列采样和行采样等手段来提高模型的稳定性和泛化能力。
- 这些模型因其高效性和良好的性能,在实际应用中非常受欢迎,特别是在处理大型数据集时表现出色。
5.3 LightGBM
由微软维护,特别适合处理大数据集的机器学习算法。
终极推荐:
- 训练速度
- 推理速度
- 处理数据量
- 结果层面
- 综合来看,最优!!!!!!
LightGBM 的核心原理
-
基于梯度的单边采样 (GOSS):在传统的 GBDT 中,每次迭代都会使用全部的数据进行训练。而在 LightGBM 中,GOSS 通过保留具有较大梯度的实例,并对剩余的小梯度实例进行随机抽样来减少数据量。这种方法能够在不严重损害模型精度的情况下大幅减少数据量,从而加快训练速度。
-
互斥特征捆绑 (EFB):许多实际应用中的特征是稀疏的,且某些特征之间很少或几乎不会同时非零(即它们是互斥的)。EFB 技术利用这一点,将这些互斥特征捆绑在一起作为一个新特征,减少了特征维度,进而提高了训练速度和降低了内存消耗。
-
直方图算法:不同于传统的精确分割方法,LightGBM 使用直方图算法来寻找最佳分裂点。这意味着它不是直接计算每个可能分裂点的信息增益,而是将连续的特征值离散化为若干个区间(桶),然后基于这些区间的统计信息来决定分裂点。这种方法不仅加快了分裂点的选择过程,还支持并行处理。
-
叶子生长策略:大多数 GBDT 实现采用深度优先(Depth-wise)的增长策略,而 LightGBM 使用叶子导向(Leaf-wise)的增长策略。这意味着它会优先选择分裂那些能带来最大收益的叶子节点,而不是简单地逐层增长树。这种策略有助于生成更少但更深的树,从而可能达到更高的准确性。
LGBMClassifier
和 LGBMRegressor
是基于 LightGBM(Light Gradient Boosting Machine)框架的分类和回归模型。LightGBM 是一种梯度提升框架,它被设计用于提高传统梯度提升决策树(GBDT)的速度和效率,同时保持高准确率。LightGBM 通过引入一些创新技术,如基于梯度的单边采样(GOSS, Gradient-based One-Side Sampling)和互斥特征捆绑(EFB, Exclusive Feature Bundling),显著提高了计算效率和内存使用效率。
5.3.1 LGBMClassifier
LGBMClassifier
是专门用于解决分类问题的 LightGBM 模型。它通过上述技术构建一系列决策树,并结合这些树的结果来进行最终的分类预测。
示例代码
from lightgbm import LGBMClassifier
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score# 创建合成数据集
X, y = make_classification(n_samples=1000, n_features=20, random_state=42)# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# 定义LGBM分类器
lgbm_clf = LGBMClassifier(n_estimators=100, learning_rate=0.1, max_depth=5, random_state=42)# 训练模型
lgbm_clf.fit(X_train, y_train)# 使用训练好的模型进行预测
predictions = lgbm_clf.predict(X_test)# 计算准确率
accuracy = accuracy_score(y_test, predictions)
print(f"LGBM Classifier Accuracy: {accuracy:.4f}")
5.3.2 LGBMRegressor
LGBMRegressor
是用于回归任务的 LightGBM 模型。其工作方式与 LGBMClassifier
类似,但目标是最小化回归损失函数(如均方误差)。
示例代码
from lightgbm import LGBMRegressor
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error# 创建合成数据集
X, y = make_regression(n_samples=1000, n_features=20, noise=0.1, random_state=42)# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# 定义LGBM回归器
lgbm_reg = LGBMRegressor(n_estimators=100, learning_rate=0.1, max_depth=5, random_state=42)# 训练模型
lgbm_reg.fit(X_train, y_train)# 使用训练好的模型进行预测
predictions = lgbm_reg.predict(X_test)# 计算均方误差
mse = mean_squared_error(y_test, predictions)
print(f"LGBM Regressor MSE: {mse:.4f}")
关键参数解释
n_estimators
:要构建的树的数量。更多的树通常可以带来更好的性能,但也可能增加过拟合的风险。learning_rate
:每次迭代时对新增加的树的重要性进行缩放的比例。较小的学习率通常需要更多的树来达到同样的效果,但它有助于提高模型的泛化能力。max_depth
:每棵树的最大深度。限制树的深度可以帮助防止过拟合。num_leaves
:控制树的复杂度的一个重要参数,指定了每棵树的叶子节点数。适当调整这个参数可以帮助找到平衡点,在不过度拟合的同时获得较好的模型表现。
5.3.3 总结
- LGBMClassifier 和 LGBMRegressor 基于 LightGBM 框架,分别用于解决分类和回归问题。
- LightGBM 通过多种技术创新,如 GOSS、EFB 和直方图算法,显著提高了训练速度和效率,同时保持了高准确率。
- 这些模型因其高效性和良好的性能,在处理大规模数据集时特别有用,并广泛应用于各种机器学习竞赛和实际项目中。
六、实战建议
使用 GridSearchCV
来进行超参数调优,以找到最佳的模型配置。举个例子,使用 XGBoost 的分类器 XGBClassifier
作为基础模型,并通过网格搜索来寻找最优的超参数组合。
# 自动化建模流程示例
from sklearn.model_selection import GridSearchCV# 参数网格
param_grid = {'n_estimators': [100, 200],'max_depth': [3, 5],'learning_rate': [0.1, 0.05]
}# 网格搜索
grid_search = GridSearchCV(estimator=XGBClassifier(),param_grid=param_grid,scoring='accuracy',cv=5,n_jobs=-1
)
# 执行网格搜索:调用 `fit` 方法开始训练模型。
# `GridSearchCV` 会对 `param_grid` 中所有可能的超参数组合进行训练和评估。
# 最终,它会选择在交叉验证中表现最好的一组超参数。
grid_search.fit(X_train, y_train)
# `best_params_` 属性存储了在交叉验证中得分最高的那组超参数。
# 通过打印 `grid_search.best_params_` 可以查看这些最佳参数。
print(f"最佳参数: {grid_search.best_params_}")
代码解释
GridSearchCV
是一个用于自动化超参数调整的强大工具,它通过交叉验证(Cross-Validation)来评估不同超参数设置下的模型性能。
# 参数网格
param_grid = {'n_estimators': [100, 200],'max_depth': [3, 5],'learning_rate': [0.1, 0.05]
}
定义参数网格:这里定义了一个字典 param_grid
,其中键是模型的超参数名称,值是一个列表,包含了该超参数可能取的所有值。
'n_estimators'
:表示要构建的树的数量。在这里尝试了[100, 200]
。'max_depth'
:每棵树的最大深度。在这里尝试了[3, 5]
。'learning_rate'
:每次迭代时对新增加的树的重要性进行缩放的比例。在这里尝试了[0.1, 0.05]
。
# 网格搜索
grid_search = GridSearchCV(estimator=XGBClassifier(),param_grid=param_grid,scoring='accuracy',cv=5,n_jobs=-1
)
初始化 GridSearchCV 对象:
estimator=XGBClassifier()
:指定使用的模型为XGBClassifier
。param_grid=param_grid
:传入之前定义的参数网格。scoring='accuracy'
:指定模型评估指标为准确率(适用于分类问题)。对于回归问题,可以使用如'neg_mean_squared_error'
等其他评分标准。cv=5
:指定使用 5 折交叉验证。这意味着数据集将被分成 5 份,模型会训练 5 次,每次使用不同的 4/5 数据作为训练集,剩余的 1/5 数据作为验证集。n_jobs=-1
:利用所有可用的 CPU 核心并行计算,加快搜索速度。
总结:上面这段代码的主要目的是通过网格搜索和交叉验证自动找到 XGBClassifier
模型的最佳超参数组合。这样做有助于提高模型的性能,并避免手动逐一尝试每个超参数组合的繁琐过程。
通过设置不同的参数值范围,GridSearchCV
可以系统地探索所有可能的组合,并基于指定的评分标准(此处为准确率)选择最佳模型配置。这种方法尤其适合于寻找最优超参数设置,特别是在处理复杂或大规模数据集时。
调优策略:
- 优先调节学习率和树数量(n_estimators)
- 控制单棵树复杂度(max_depth, min_child_weight)
- 采样策略(subsample, colsample_bytree)
- 正则化参数(lambda, alpha)
- 早停法防止过拟合
七、结论与推荐
对于结构化数据或表格类数据,集成学习通常是最有效的选择。尽管深度学习在某些领域表现出色,但在处理这类数据时,集成学习往往能提供更好的结果。
- 训练速度:集成学习算法如随机森林、XGBoost和LightGBM在大多数情况下都能快速训练。
- 推理速度:这些算法也具有较快的推理速度,非常适合实时应用。
- 处理数据量:特别是LightGBM,在处理大规模数据集方面表现出色。
- 结果层面:集成学习方法通常能够提供高准确度和鲁棒性的预测结果。
算法选型指南
指标 | 随机森林 | XGBoost | LightGBM |
---|---|---|---|
训练速度 | ★★★☆☆ | ★★★★☆ | ★★★★★ |
预测速度 | ★★★☆☆ | ★★★★☆ | ★★★★★ |
内存消耗 | ★★☆☆☆ | ★★★☆☆ | ★★★★★ |
处理类别特征 | 需要编码 | 需要编码 | 原生支持 |
可解释性 | ★★★★☆ | ★★★☆☆ | ★★★☆☆ |
大数据支持 | ★★☆☆☆ | ★★★★☆ | ★★★★★ |
终极建议:
- 中小数据集:XGBoost(精度优先)
- 大数据集:LightGBM(效率优先)
- 快速原型:随机森林(易用性好)
- 类别特征多:CatBoost
- 需要可解释性:随机森林特征重要性
相关文章:
集成学习(二):从理论到实战(附代码)
接上一篇续写《集成学习(一):从理论到实战(附代码)》 五、实用算法 5.1 随机森林 随机森林在数据集的各个子样本上拟合许多决策树分类器,并使用平均来提高预测精度和控制过拟合。每一个分类器拟合了一部分随机样本,…...
HTML 链接
HTML 链接 引言 HTML(超文本标记语言)是构建网页的基础,而链接是网页中不可或缺的元素。链接不仅能够连接到其他网页,还能实现网页内部内容的跳转。本文将详细介绍HTML链接的用法、属性以及如何实现链接的优化。 HTML链接的基本…...

【机器学习】数据预处理之scikit-learn的Scaler与自定义Scaler类进行数据归一化
scikit-learn的Scaler数据归一化 一、摘要二、训练数据集和测试数据集的归一化处理原则三、scikit-learn中的Scalar类及示例四、自定义StandardScaler类进行数据归一化处理五、小结 一、摘要 本文主要介绍了scikit-learn中Scaler的使用方法,特别强调了数据归一化在…...

android的第一个app项目(java版)
一.学习java重要概念 java的基本类型的语言方法和C语言很像,这都是我们要学的东西和学过的东西。那些基础东西,就不和大家讨论了,一起看一下java的一些知识架构。 1.封装 封装是面向对象编程中的一个核心概念,它涉及到将数据和操…...
上位机知识篇---SSHSCP密钥与密钥对
文章目录 前言第一部分:SCP(Secure Copy Protocol)功能使用方法1.从本地复制到远程主机2.从远程主机复制到本地3.复制整个目录4.指定端口5.压缩传输 第二部分:SSH(Secure Shell)功能使用方法1.远程登录2.指…...

智慧物流新引擎:ARM架构工控机在自动化生产线中的应用
工业自动化程度的不断提升,对高性能、低功耗和高可靠性的计算设备需求日益增长。ARM架构工控机因其独特的优势,在多个工业领域得到了广泛应用。本文将深入探讨ARM架构工控机的特点及其在具体工业场景中的应用。 ARM架构工控机的主要优势 高效能与低功耗…...

[MySQL]2-MySQL索引
目录 1.索引🌟 1.1索引结构 B树 B树 聚簇索引(一级索引)与非聚簇索引(二级索引) 回表操作 1.2索引碎片 清理索引碎片的方法 1.3索引匹配方式🌟 在数据列上使用函数或者计算会导致索引失效的原因 …...

DeepSeek冲击下,奥特曼刚刚给出对AGI的「三个观察」,包括成本速降
来源 | 机器之心 今天凌晨,OpenAI CEO 再次发布长文,重申自己对于 AGI 的三个观察。 核心观点如下: 1. 人工智能模型的智能大致等于用于训练和运行该模型的资源的对数。 2. 使用一定水平的人工智能的成本每 12 个月就会下降约 10 倍&#x…...

新数据结构(8)——包装类
基本数据类型(轻点) Java基本数据类型在内存中占用固定的大小,并且直接存储值,而不是对象的引用 整数类型 byte:8位,存储范围从-128到127 short:16位,存储范围从-32,768到32,767 …...

P5:使用pytorch实现运动鞋识别
🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 我的环境 语言环境:python 3.7.12 编译器:pycharm 深度学习环境:tensorflow 2.7.0 数据:本地数据集-运动鞋 一…...
讲解下SpringBoot中MySql和MongoDB的配合使用
在Spring Boot中,MySQL和MongoDB可以配合使用,以充分发挥关系型数据库和非关系型数据库的优势。MySQL适合处理结构化数据,而MongoDB适合处理非结构化或半结构化数据。以下是如何在Spring Boot中同时使用MySQL和MongoDB的详细讲解。 1. 添加依…...
《手札·行业篇》开源Odoo MES系统与SKF Observer Phoenix API在化工行业的双向对接方案
一、项目背景 化工行业生产过程复杂,设备运行条件恶劣,对设备状态监测、生产数据采集和质量控制的要求极高。通过开源Odoo MES系统与SKF Observer Phoenix API的双向对接,可以实现设备状态的实时监测、生产数据的自动化采集以及质量数据的同步…...
数据结构与算法之数组: LeetCode 905. 按奇偶排序数组 (Ts版)
按奇偶排序数组 https://leetcode.cn/problems/sort-array-by-parity/description/ 描述 给你一个整数数组 nums,将 nums 中的的所有偶数元素移动到数组的前面,后跟所有奇数元素。 返回满足此条件的 任一数组 作为答案。 示例 1 输入:n…...

【STM32】HAL库Host MSC读写外部U盘及FatFS文件系统的USB Disk模式
【STM32】HAL库Host MSC读写外部U盘及FatFS文件系统的USB Disk模式 在先前 分别介绍了FatFS文件系统和USB虚拟U盘MSC配置 前者通过MCU读写Flash建立文件系统 后者通过MSC连接电脑使其能够被操作 这两者可以合起来 就能够实现同时在MCU、USB中操作Flash的文件系统 【STM32】通过…...

docker nginx 配置文件详解
在平常的开发工作中,我们经常需要访问静态资源(图片、HTML页面等)、访问文件目录、部署项目时进行负载均衡等。那么我们就会使用到Nginx,nginx.conf 的配置至关重要。那么今天主要结合访问静态资源、负载均衡等总结下 nginx.conf …...

如何实现华为云+deepseek?
在华为云上实现跨账号迁移数据或部署DeepSeek模型,可以通过以下步骤完成: 跨账号数据迁移 创建委托:在源账号中创建一个委托(Agency),授予目标账号访问数据的权限。 复制镜像:在源账号中&…...

【学习笔记】计算机网络(三)
第3章 数据链路层 文章目录 第3章 数据链路层3.1数据链路层的几个共同问题3.1.1 数据链路和帧3.1.2 三个基本功能3.1.3 其他功能 - 滑动窗口机制 3.2 点对点协议PPP(Point-to-Point Protocol)3.2.1 PPP 协议的特点3.2.2 PPP协议的帧格式3.2.3 PPP 协议的工作状态 3.3 使用广播信…...

稀土抑烟剂——为汽车火灾安全增添防线
一、稀土抑烟剂的基本概念 稀土抑烟剂是一类基于稀土元素(如稀土氧化物和稀土金属化合物)开发的高效阻燃材料。它可以显著提高汽车内饰材料的阻燃性能,减少火灾发生时有毒气体和烟雾的产生。稀土抑烟剂不仅能提升火灾时的安全性,…...
Qt Pro、Pri、Prf
一、概述 1、在Qt中,通常使用.pro(project)、pri(private include)、prf(project file)三种文件扩展名来组织项目。对于模块化编程,Qt提供了Pro和Pri,Pro管理项目,Pri管理模块。 2、pro文件是Qt项目的核心文件,包含了…...

基于AIOHTTP、Websocket和Vue3一步步实现web部署平台,无延迟控制台输出,接近原生SSH连接
背景:笔者是一名Javaer,但是最近因为某些原因迷上了Python和它的Asyncio,至于什么原因?请往下看。在着迷”犯浑“的过程中,也接触到了一些高并发高性能的组件,通过简单的学习和了解,aiohttp这个…...

【西门子杯工业嵌入式-2-点亮一颗LED】
西门子杯工业嵌入式-2-点亮一颗LED 一、课程回顾与目标1.上节课内容回顾2.本节课目标 二、硬件连接与原理1. 硬件连接方式2. 连接实例 三、GPIO原理知识1. GPIO结构2. 推挽输出模式原理 四、软件实现步骤1. 项目结构设置2. 函数定义3. led.c 文件编写初始化函数 led_init交替闪…...

第12期_网站搭建_几时网络验证1.3二改源码包2024 软件卡密系统 虚拟主机搭建笔记
我用夸克网盘分享了「第12期_网站搭建_几时网络验证1.3二改源码包2024.7z」,点击链接即可保存。打开「夸克APP」,无需下载在线播放视频,畅享原画5倍速,支持电视投屏。 链接:https://pan.quark.cn/s/fe8e7786bd6d...
【网络安全】XSS攻击
如果文章不足还请各位师傅批评指正! XSS攻击是什么? XSS全称是“Cross Site Scripting”,也就是跨站脚本攻击。想象一下,你正在吃一碗美味的面条,突然发现里面有一只小强!恶心不?XSS攻击就是这么…...

使用深蓝词库软件导入自定义的词库到微软拼音输入法
我这有一个人员名单,把它看作一个词库,下面我演示一下如何把这个词库导入微软输入法 首先建一个text文件,一行写一个词条 下载深蓝词库 按照我这个配置,点击转换,然后在桌面微软输入法那右键,选择设置 点…...

刷leetcode hot100--矩阵6/1
1.螺旋矩阵【很久】6/1【感觉就是思路的搬运工,没完全理解】 54. 螺旋矩阵 - 力扣(LeetCode) 原来想 但是如果是奇数矩阵,遍历不到中间 解决思路: 用left,right,top,down标记/限定每次遍历的元素,每次从…...

OpenWrt 搭建 samba 服务器的方法并解决 Windows 不允许访问匿名服务器(0x80004005的错误)的方法
文章目录 一、安装所需要的软件二、配置自动挂载三、配置 Samba 服务器四、配置 Samba 访问用户和密码(可选)新建 Samba 专门的用户添加无密码的 Samba 账户使用root账户 五、解决 Windows 无法匿名访问Samba方案一 配置无密码的Samba账户并启用匿名访问…...
图像处理篇---face_recognition库实现人脸检测
以下是使用face_recognition库实现人脸检测的详细步骤、实例代码及解释: 一、环境准备 1. 安装依赖库 pip install face_recognition opencv-python # 核心库 pip install matplotlib # 用于显示图像(可选)2. 依赖说明 face_recognitio…...
第5篇《中间件负载均衡与连接池管理机制设计》
5.1 章节导读 在数据库中间件中,如何高效地管理数据库连接与请求调度至关重要。 本节围绕两个核心模块展开: 连接池管理:提升连接复用能力,避免频繁建立/断开连接。 负载均衡策略:合理调度 SQL 请求,提升…...
C# CallerMemberName特性
当你在一个方法运用了CallerMemberName特性,编译器会自动将调用该方法的方法或属性的名称作为该参数的默认值,可应用于MVVM框架。 代码: using System.ComponentModel; using System.Runtime.CompilerServices;public class Person : INoti…...
【仿生机器人软件架构】通过整合认知系统实现自主精神性——认知系统非常具有可执行性
来自Claude 4.0 pro深度思考 仿生机器人软件架构:通过整合认知系统实现自主精神性 要创建具有真正情感深度的、完全自主的仿生机器人,需要超越基于规则的系统,转向能够实现涌现行为、自适应个性和类似意识处理的架构。根据截至2024年初的现…...