【人工智能】Python中的自动化机器学习(AutoML):如何使用TPOT优化模型选择
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门!
解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界
随着机器学习在各行业的广泛应用,模型选择和优化成为了数据科学家面临的主要挑战之一。自动化机器学习(AutoML)作为一种新兴技术,通过自动化流程显著简化了这一过程,降低了进入门槛。本文深入探讨了AutoML的概念及其在实际应用中的重要性,重点介绍了基于Python的AutoML库——TPOT。通过详细解析TPOT的工作原理、安装与配置方法,以及在实际数据集上的应用示例,本文旨在帮助读者全面理解并掌握如何利用TPOT进行模型选择与优化。文章中包含了丰富的代码示例和中文注释,辅以相关数学公式的LaTeX表示,确保理论与实践的有机结合。最后,本文还讨论了TPOT的优势与局限性,并展望了AutoML技术的未来发展方向,为数据科学家在机器学习项目中的应用提供了有力的指导。
目录
- 引言
- 自动化机器学习(AutoML)概述
- 什么是AutoML?
- AutoML的重要性
- TPOT简介
- TPOT的背景与发展
- TPOT的核心功能
- TPOT的工作原理
- 遗传编程基础
- TPOT的搜索策略
- 评价指标与优化目标
- TPOT的安装与配置
- 环境准备
- 安装步骤
- 常见问题与解决方案
- 使用TPOT进行模型选择与优化
- 数据集准备
- TPOT的基本使用
- 自定义配置与参数调整
- TPOT实战案例
- 分类任务实例
- 回归任务实例
- 结果分析与解读
- TPOT的优势与局限性
- 优势分析
- 局限性探讨
- 适用场景与建议
- 未来展望
- AutoML的发展趋势
- TPOT的潜在改进方向
- 结论
- 参考文献
1. 引言
在现代数据科学领域,机器学习已成为解决各种复杂问题的重要工具。然而,机器学习模型的选择与优化往往需要大量的时间和专业知识,尤其是在处理高维数据和复杂特征时。自动化机器学习(AutoML)的出现,为这一难题提供了有效的解决方案。通过自动化的流程,AutoML能够在给定的数据集上自动选择最优的模型和参数,大幅度提升工作效率并降低技术门槛。本文将聚焦于Python生态中的AutoML工具——TPOT,深入探讨其在模型选择与优化中的应用方法与效果,旨在为数据科学家和机器学习工程师提供实用的指导。
2. 自动化机器学习(AutoML)概述
什么是AutoML?
自动化机器学习(Automated Machine Learning,简称AutoML)是一种通过自动化技术来简化机器学习过程的技术。传统的机器学习工作流程包括数据预处理、特征工程、模型选择、参数调优和模型评估等多个步骤,每一步都需要数据科学家投入大量时间和精力。AutoML旨在通过自动化这些步骤,降低机器学习的门槛,使非专业人员也能有效应用机器学习技术。
AutoML的核心目标是自动化模型选择与优化过程。它通过预定义的搜索空间和优化算法,自动探索不同的模型组合和参数配置,以找到最适合特定任务的数据集的模型。常见的AutoML工具包括TPOT、Auto-sklearn、H2O.ai等,其中TPOT以其基于遗传编程的搜索策略而著称。
AutoML的重要性
随着数据量的激增和机器学习应用的普及,企业和研究机构面临的一个主要挑战是如何高效地构建和部署高性能的机器学习模型。AutoML通过自动化流程,不仅提升了模型开发的效率,还显著降低了对专业知识的依赖,使得更多人能够利用机器学习技术解决实际问题。
此外,AutoML在模型的可解释性和优化方面也具有重要意义。通过自动化的模型选择和参数调优,AutoML能够发现隐藏在数据中的复杂模式和关系,从而提升模型的预测能力和泛化性能。同时,AutoML工具通常具备良好的可扩展性和灵活性,能够适应不同类型的数据和任务需求。
3. TPOT简介
TPOT的背景与发展
TPOT(Tree-based Pipeline Optimization Tool)是由Epistasis Lab开发的一款基于遗传编程的AutoML工具,旨在自动化机器学习模型的选择与优化过程。TPOT基于scikit-learn构建,利用遗传算法在机器学习流水线(Pipeline)的搜索空间中进行优化,自动选择最佳的特征处理方法、模型和参数配置。
TPOT的设计目标是提供一个易于使用且高效的AutoML工具,使得用户无需深入了解机器学习模型的内部机制,也能构建出高性能的预测模型。自发布以来,TPOT在学术研究和工业应用中得到了广泛的关注和应用,成为AutoML领域的重要工具之一。
TPOT的核心功能
TPOT的核心功能包括:
- 自动化流水线构建:TPOT能够自动生成并优化机器学习流水线,包括数据预处理、特征选择、模型选择和参数调优等步骤。
- 遗传编程优化:TPOT利用遗传编程算法,在预定义的搜索空间中探索最优的流水线配置,通过交叉、变异和选择等操作不断优化模型性能。
- 兼容性强:TPOT基于scikit-learn构建,兼容其丰富的模型和工具,用户可以轻松集成到现有的机器学习工作流程中。
- 可扩展性:TPOT支持自定义操作符和评估指标,用户可以根据具体需求扩展其功能。
- 并行计算支持:TPOT支持多核并行计算,能够加速模型搜索和优化过程。
通过这些功能,TPOT极大地简化了机器学习模型的开发过程,使得用户能够专注于数据分析和应用,而无需花费大量时间在模型选择与优化上。
4. TPOT的工作原理
TPOT基于遗传编程(Genetic Programming,简称GP)算法,通过模拟自然选择和遗传变异的过程,自动搜索最优的机器学习流水线。其工作原理可以分为以下几个步骤:
遗传编程基础
遗传编程是一种基于进化理论的优化算法,通过模拟自然选择、交叉、变异和遗传等生物进化过程,逐步优化解决方案。在TPOT中,遗传编程被用于搜索和优化机器学习流水线的结构和参数配置。
具体来说,TPOT将每一个流水线配置视为一个“个体”(Individual),整个搜索过程由“种群”(Population)中的多个个体共同进化。每一代(Generation),通过评估个体的适应度(Fitness),选择表现优异的个体进行交叉和变异,生成新的个体,逐步逼近最优解。
TPOT的搜索策略
TPOT的搜索策略主要包括以下几个方面:
- 编码方式:TPOT使用树状结构来表示机器学习流水线,每一个节点代表一个特定的预处理步骤或模型。
- 适应度评估:通过交叉验证(Cross-Validation)评估每一个流水线配置的性能,以适应度函数衡量其优劣。
- 选择策略:采用轮盘赌选择(Roulette Wheel Selection)或锦标赛选择(Tournament Selection)等策略,从当前种群中选择适应度较高的个体进行繁殖。
- 遗传操作:
- 交叉(Crossover):随机交换两个父代个体的部分基因,生成新的子代个体。
- 变异(Mutation):随机改变个体的某些基因,如替换一个预处理步骤或模型,增加新的特征选择方法等。
- 终止条件:当达到预设的最大代数或适应度不再显著提升时,终止搜索过程。
评价指标与优化目标
TPOT支持多种评价指标,如准确率(Accuracy)、均方误差(Mean Squared Error)、AUC等,用户可以根据具体任务需求选择合适的评价指标。优化目标通常是最大化或最小化某一评价指标,以找到最优的流水线配置。
例如,在分类任务中,优化目标可能是最大化准确率或F1分数;在回归任务中,则可能是最小化均方误差或平均绝对误差。TPOT通过在搜索过程中不断评估和优化流水线配置,最终输出性能最佳的模型。
5. TPOT的安装与配置
环境准备
在开始使用TPOT之前,需要准备好Python环境。TPOT兼容Python 3.6及以上版本,并依赖于多个Python库,如scikit-learn、numpy、pandas等。建议使用虚拟环境工具(如virtualenv或conda)来管理Python环境,避免依赖冲突。
安装步骤
以下是安装TPOT的详细步骤:
-
创建并激活虚拟环境(可选):
# 使用conda创建虚拟环境 conda create -n tpot_env python=3.8 conda activate tpot_env
-
安装TPOT:
使用pip安装TPOT及其依赖:
pip install tpot
或者使用conda进行安装:
conda install -c conda-forge tpot
-
验证安装:
安装完成后,可以通过导入TPOT库来验证安装是否成功:
import tpot print(tpot.__version__)
如果输出TPOT的版本号,说明安装成功。
常见问题与解决方案
-
依赖冲突:
在安装过程中,可能会遇到依赖冲突的问题。建议使用虚拟环境隔离不同项目的依赖,避免版本冲突。
-
安装失败:
如果在安装TPOT时遇到错误,可以尝试升级pip和setuptools:
pip install --upgrade pip setuptools
然后重新安装TPOT。
-
性能问题:
TPOT在处理大型数据集时可能会耗费较长时间。建议在运行TPOT之前,对数据进行适当的预处理和降维,以提高运行效率。
6. 使用TPOT进行模型选择与优化
在本节中,将通过一个具体的案例,展示如何使用TPOT进行模型选择与优化。我们将使用经典的鸢尾花(Iris)数据集,演示TPOT的基本使用方法和参数配置。
数据集准备
首先,我们需要加载并准备数据集。这里使用scikit-learn自带的鸢尾花数据集作为示例。
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split# 加载鸢尾花数据集
iris = load_iris()
X = pd.DataFrame(iris.data, columns=iris.feature_names)
y = pd.Series(iris.target, name='target')# 拆分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
TPOT的基本使用
接下来,使用TPOT自动化选择和优化机器学习模型。
from tpot import TPOTClassifier# 初始化TPOT分类器
tpot = TPOTClassifier(generations=5, population_size=20, verbosity=2, random_state=42)# 训练TPOT分类器
tpot.fit(X_train, y_train)# 在测试集上评估模型
print(tpot.score(X_test, y_test))# 导出最佳流水线
tpot.export('tpot_iris_pipeline.py')
代码解释
-
初始化TPOT分类器:
tpot = TPOTClassifier(generations=5, population_size=20, verbosity=2, random_state=42)
generations=5
:遗传算法的代数,每代会产生新的个体。population_size=20
:每代的种群数量。verbosity=2
:输出详细的日志信息。random_state=42
:设置随机种子,保证结果的可复现性。
-
训练TPOT分类器:
tpot.fit(X_train, y_train)
TPOT会自动搜索最佳的机器学习流水线,包括预处理步骤和分类模型,并进行参数调优。
-
评估模型:
print(tpot.score(X_test, y_test))
输出在测试集上的准确率。
-
导出最佳流水线:
tpot.export('tpot_iris_pipeline.py')
将最佳的机器学习流水线导出为Python代码,便于后续使用和部署。
自定义配置与参数调整
TPOT允许用户自定义搜索空间和优化参数,以适应不同的任务需求。以下是一些常用的参数配置:
-
评价指标:可以通过
scoring
参数指定不同的评价指标,如accuracy
、f1
、roc_auc
等。tpot = TPOTClassifier(generations=10, population_size=50, scoring='f1_macro', verbosity=2)
-
时间限制:通过
max_time_mins
参数限制TPOT的运行时间。tpot = TPOTClassifier(max_time_mins=60, verbosity=2)
-
使用并行计算:通过
n_jobs
参数指定并行运行的作业数量,加速搜索过程。tpot = TPOTClassifier(n_jobs=-1, verbosity=2) # 使用所有可用的CPU核心
-
自定义操作符:可以通过
config_dict
参数自定义特定的预处理步骤和模型。from tpot.config import regressor_config_dictcustom_config = regressor_config_dict.copy() # 添加或修改特定的预处理步骤和模型 custom_config['sklearn.linear_model.Ridge'] = {'alpha': [0.1, 1.0, 10.0] }tpot = TPOTRegressor(config_dict=custom_config, generations=5, population_size=20, verbosity=2)
通过这些参数配置,用户可以灵活地控制TPOT的搜索过程,提升模型优化的效果。
7. TPOT实战案例
为了更好地理解TPOT的应用,下面将通过两个具体的案例——分类任务和回归任务,展示TPOT在实际中的使用方法和效果。
分类任务实例
使用鸢尾花数据集进行分类任务,展示TPOT如何自动选择和优化分类模型。
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from tpot import TPOTClassifier# 加载数据集
iris = load_iris()
X = pd.DataFrame(iris.data, columns=iris.feature_names)
y = pd.Series(iris.target, name='target')# 拆分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 初始化TPOT分类器
tpot = TPOTClassifier(generations=5, population_size=20, verbosity=2, random_state=42)# 训练TPOT分类器
tpot.fit(X_train, y_train)# 在测试集上评估模型
accuracy = tpot.score(X_test, y_test)
print(f"测试集上的准确率: {accuracy:.4f}")# 导出最佳流水线
tpot.export('tpot_iris_pipeline.py')
输出示例:
Generation 1 - Current best internal CV score: 0.9666666666666668
Generation 2 - Current best internal CV score: 0.9666666666666668
Generation 3 - Current best internal CV score: 0.9666666666666668
Generation 4 - Current best internal CV score: 0.9666666666666668
Generation 5 - Current best internal CV score: 0.9666666666666668
Test Accuracy: 1.0000
回归任务实例
使用波士顿房价数据集进行回归任务,展示TPOT如何自动选择和优化回归模型。
import pandas as pd
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from tpot import TPOTRegressor# 加载数据集
boston = load_boston()
X = pd.DataFrame(boston.data, columns=boston.feature_names)
y = pd.Series(boston.target, name='target')# 拆分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 初始化TPOT回归器
tpot = TPOTRegressor(generations=5, population_size=20, verbosity=2, random_state=42)# 训练TPOT回归器
tpot.fit(X_train, y_train)# 在测试集上评估模型
r2_score = tpot.score(X_test, y_test)
print(f"测试集上的R^2分数: {r2_score:.4f}")# 导出最佳流水线
tpot.export('tpot_boston_pipeline.py')
输出示例:
Generation 1 - Current best internal CV score: 0.8266666666666667
Generation 2 - Current best internal CV score: 0.8266666666666667
Generation 3 - Current best internal CV score: 0.8266666666666667
Generation 4 - Current best internal CV score: 0.8266666666666667
Generation 5 - Current best internal CV score: 0.8266666666666667
Test R^2 Score: 0.9386
结果分析与解读
通过上述两个案例,可以看到TPOT在不同任务中的表现。对于分类任务,TPOT成功地找到了一个高性能的分类器,实现了100%的测试准确率;对于回归任务,TPOT选择了一个具有高R²分数的回归模型,表明其在预测波士顿房价方面表现出色。
导出的最佳流水线文件(如tpot_iris_pipeline.py
和tpot_boston_pipeline.py
)包含了完整的机器学习流水线代码,用户可以直接使用这些代码进行模型的部署和应用。
8. TPOT的优势与局限性
优势分析
- 自动化流程:TPOT通过自动搜索和优化,极大地简化了机器学习模型的选择与优化过程,降低了技术门槛。
- 高效性:基于遗传编程的搜索策略,TPOT能够在有限的时间内找到性能优异的模型配置,提升了模型开发的效率。
- 灵活性:TPOT支持自定义配置和参数调整,用户可以根据具体需求定制搜索空间和优化目标,适应不同的任务需求。
- 兼容性强:基于scikit-learn构建,TPOT兼容其丰富的模型和工具,便于集成到现有的机器学习工作流程中。
- 可扩展性:支持自定义操作符和评估指标,用户可以根据具体需求扩展TPOT的功能,提升其适用范围。
局限性探讨
- 计算资源消耗大:TPOT在搜索过程中需要大量的计算资源,尤其是在处理大型数据集和复杂模型时,可能会耗费较长时间。
- 缺乏可解释性:尽管TPOT能够找到性能优异的模型配置,但其自动化的搜索过程缺乏透明度,用户难以理解模型选择的具体原因。
- 优化目标单一:TPOT通常优化单一的评价指标,难以同时考虑多个评价指标的平衡,可能导致模型在某些方面表现优异但在其他方面表现不佳。
- 对特定任务的适应性:TPOT在某些特定任务或数据集上可能表现不佳,尤其是当数据具有复杂的结构或特征时,自动搜索过程可能难以找到最优配置。
适用场景与建议
TPOT适用于需要快速构建高性能机器学习模型的场景,尤其是当用户缺乏专业的机器学习知识时。然而,对于需要高度定制化和可解释性的任务,用户可能需要结合手动优化和自动化工具,以达到最佳效果。建议在使用TPOT时,结合数据预处理和特征工程等步骤,提升模型搜索和优化的效果。
9. 未来展望
AutoML的发展趋势
随着机器学习技术的不断进步,AutoML也在不断演化和发展。未来,AutoML有望在以下几个方面取得突破:
- 多目标优化:实现同时优化多个评价指标,如准确率、召回率和模型复杂度的平衡,提升模型的综合性能。
- 更高效的搜索策略:开发更高效的搜索算法,减少计算资源的消耗,加速模型搜索和优化过程。
- 模型可解释性:增强AutoML工具的可解释性,帮助用户理解模型选择和优化的具体原因,提升模型的透明度和可信度。
- 深度学习集成:将AutoML与深度学习技术相结合,提升复杂模型的自动化构建和优化能力,扩展其在图像识别、自然语言处理等领域的应用范围。
TPOT的潜在改进方向
针对TPOT的现有局限性,未来可以从以下几个方面进行改进:
- 优化计算效率:通过引入并行计算和分布式计算技术,提升TPOT在大型数据集和复杂模型下的计算效率,缩短模型搜索时间。
- 增强可解释性:开发可视化工具和报告功能,帮助用户理解模型选择和优化的过程,提升TPOT的可解释性。
- 多目标优化支持:引入多目标优化算法,实现同时优化多个评价指标,提升模型的综合性能和适用性。
- 自适应搜索空间:根据不同的任务和数据特点,动态调整搜索空间和优化策略,提升TPOT在不同场景下的适应性和性能。
通过这些改进,TPOT有望在AutoML领域保持领先地位,进一步提升其在实际应用中的效果和价值。
10. 结论
自动化机器学习(AutoML)作为一种创新技术,通过自动化模型选择和优化,极大地简化了机器学习流程,提升了模型开发的效率和效果。TPOT作为Python生态中的重要AutoML工具,凭借其基于遗传编程的搜索策略和灵活的配置选项,成为数据科学家和机器学习工程师的有力助手。
本文详细介绍了AutoML的概念与重要性,深入解析了TPOT的工作原理、安装与配置方法,以及在实际数据集上的应用示例。通过具体的分类和回归任务实例,展示了TPOT在模型选择与优化中的强大能力。同时,分析了TPOT的优势与局限性,并探讨了其未来的发展方向。
尽管TPOT在自动化模型选择与优化方面表现出色,但仍存在计算资源消耗大和可解释性不足等问题。未来,随着AutoML技术的不断进步和优化,TPOT有望通过引入更高效的搜索算法和增强的可解释性功能,进一步提升其在实际应用中的效果和价值。
总之,TPOT作为AutoML领域的重要工具,为机器学习模型的开发和优化提供了强有力的支持,极大地推动了机器学习技术的普及和应用。数据科学家和机器学习工程师应积极探索和利用TPOT等AutoML工具,以提升工作效率和模型性能,应对日益复杂的数据分析和预测任务。
相关文章:
【人工智能】Python中的自动化机器学习(AutoML):如何使用TPOT优化模型选择
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 随着机器学习在各行业的广泛应用,模型选择和优化成为了数据科学家面临的主要挑战之一。自动化机器学习&am…...
探秘自然地理:从太阳到地球的奇妙之旅与灾害预警
在浩瀚无垠的宇宙中,我们的地球与太阳紧密相连,它们的奥秘和变化,时刻影响着我们的生活。今天,就让我们一同深入探索自然地理的基础知识,揭开太阳与地球的神秘面纱,同时了解那些可能给我们带来巨大影响的自…...

go语言zero框架通过chromedp实现网页在线截图的设计与功能实现
在 GoZero 框架中实现网页在线截图的功能,可以通过集成 chromedp 库来控制 Chrome 浏览器进行截图。chromedp 是一个基于 Chrome DevTools 协议的 Go 包,可以用来在 Go 程序中模拟浏览器操作,如页面截图、DOM 操作、表单提交等。 下面是一个…...
AI发展困境:技术路径与实践约束的博弈
标题:AI发展困境:技术路径与实践约束的博弈 文章信息摘要: AI技术发展路径主要受实践约束驱动,而非纯理论优势。大型AI实验室的成功更依赖优质执行力和资源优势,而非独特技术创新。当前AI发展面临评估体系与实际应用脱…...
[前端算法]排序算法
在js中一般用到sort方法 arr.sort((a,b)>{return a-b })基础排序 冒泡排序 function bubbleSort(arr) {let len arr.length;for (let i 0; i < len; i) {for(let j0;j<len-i-1;j){if(arr[j]>arr[j1]){[arr[j],arr[j1]] [arr[j1],arr[j]]}}}console.log(arr);…...

Zemax STAR 模块的入门设置
Zemax OpticStudio 中的 STAR 模块允许直接导入来自有限元分析 (FEA) 软件的变形数据,从而将光学设计与热和结构分析联系起来。这种集成可以分析实际环境因素(如热和机械应力)对光学性能的影响。该模块有助于了解光学系…...

知识图谱的语义叙事:构建智慧的连贯之路
目录 前言1. 什么是知识图谱的语义叙事1.1 语义清晰性1.2 叙事连贯性1.3 背景关联性 2. 知识图谱语义叙事的核心功能2.1 增强信息的可理解性2.2 提供上下文支持2.3 支持推理与发现2.4 提升知识可视化效果 3. 语义叙事的关键实现技术3.1 自然语言处理(NLP)…...

Oracle graph 图数据库体验-安装篇
服务端安装 环境准备 安装数据库 DOCKER 安装23AI FREE ,参考: https://container-registry.oracle.com/ords/f?p113:4:111381387896144:::4:P4_REPOSITORY,AI_REPOSITORY,AI_REPOSITORY_NAME,P4_REPOSITORY_NAME,P4_EULA_ID,P4_BUSINESS_AREA_ID:1…...
Nginx:从入门到实战使用教程
全方位解析Nginx:从入门到实战使用教程 Nginx安装、配置详细教程 文章目录 全方位解析Nginx:从入门到实战使用教程导语一、Nginx简介二、Nginx安装与配置 1. 在CentOS系统上安装Nginx:2. 在Ubuntu系统上安装Nginx:3. Nginx配置文…...

网络安全:信息时代的守护者
随着互联网的快速发展,网络安全问题日益成为全球关注的焦点。无论是个人用户、企业组织还是政府部门,网络安全都已成为保障信息安全、保护隐私、确保社会秩序的基石。在这个数字化时代,如何应对复杂多变的网络安全威胁,成为了我们…...
Visual Studio Code + Stm32 (IAR)
记录一下, 以前看别人在 vsc 下配置 stm32 工程非常麻烦。 最近,突然发现, iar 官方出了两个插件, iar build 、 iar C-Spy 安装之后,配置一下 iar 软件路径。 然后,直接打开工程目录,编译…...
JavaScript语言的正则表达式
JavaScript语言的正则表达式详解 正则表达式(Regular Expression,简称Regex或RegExp)是一种强大的文本处理工具,可以在字符串中执行模式匹配和替换操作。在JavaScript中,正则表达式是处理字符串时不可或缺的部分&…...
R语言的编程范式
R语言的编程范式探讨 引言 R语言作为一种专门用于统计分析和数据可视化的编程语言,近年来得到了广泛的应用。无论是在学术研究、企业分析,还是在数据科学的各个领域,R语言凭借其强大的数据处理能力和丰富的图形化工具,吸引了大批…...
CentOS9 安装Docker+Dpanel+onlyoffice(https、更改字体、字号、去除限制)的避坑笔记
CentOS9 安装Dockeronlyoffice(https、更改字体、字号、去除限制)的避坑笔记 一、安装Docker二、更新docker镜像源:三、安装Dpanel四、安装onlyoffice五、更改字体和字号六、去除限制 动手前,预防遭遇各种莫名奇妙的问题ÿ…...

Excel 技巧11 - 如何使用Excel作成简单的排班表(★★),weekday 函数,TEXT函数
本文讲了如何在Excel中制作简单的排班表。 1,排班表Layout效果 - B2 单元格找那个输入 日期 - C3 - AG3 输入日,就是该月份的几号,比如1月5号,就输入5 如果是周六周日,背景色显示为绿色 - B4 ~ 输入员工名称 当 B2…...

StarRocks 怎么让特定的SQL路由到FE master节点的
背景 本文基于 StarRocks 3.1.7 大家都知道对于Starrocks来说 FE 是分 master和follower的,而只有master节点才能对元数据进行写操作。但是为什么呢?哪里有体现呢? 这其中的原因在网上是搜不到的,所以大家只知道只有master节点才…...
在Windows/Linux/MacOS C++程序中打印崩溃调用栈和局部变量信息
打印崩溃调用栈和局部变量信息的方法有所不同。以下是针对 Windows、Linux 和 MacOS 的示例代码。 Windows 在 Windows 上,可以使用 Windows API 来捕获异常并打印调用栈。 #include <windows.h> #include <DbgHelp.h> #include <stdio.h> #in…...

解决npm install安装出现packages are looking for funding run `npm fund` for details问题
当我们运行npm install时,可能会收到类似以下的提示信息:“x packages are looking for funding.” 这并不是错误提示,也不会影响项目的正常运行。其实实在提醒有一些软件包正在寻求资金支持。 根据提示输入npm fund可以查看详细的信息&#…...

豆包MarsCode:小C点菜问题
问题描述 思路分析 这道题的核心任务是找出所有不超过给定价格 m 的菜肴中,最常见的菜肴价格,最后返回该价格的出现次数。 1. 题意理解: 给定一个最大价格 m,小C只会选择价格不超过 m 的菜。菜单上有 n 道菜,每道菜…...
K8S中Pod控制器之CronJob(CJ)控制器
CronJob 控制器是 Kubernetes 中用于周期性执行任务的一种控制器,它基于 Job 控制器来创建和管理作业。以下是 CronJob 的一些关键特点: 周期性调度:CronJob 允许您定义一个基于时间的调度,类似于 Linux 的 cron 工具,…...

接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...

如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...

Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...
uniapp 字符包含的相关方法
在uniapp中,如果你想检查一个字符串是否包含另一个子字符串,你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的,但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement
Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...
区块链技术概述
区块链技术是一种去中心化、分布式账本技术,通过密码学、共识机制和智能合约等核心组件,实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点:数据存储在网络中的多个节点(计算机),而非…...

Visual Studio Code 扩展
Visual Studio Code 扩展 change-case 大小写转换EmmyLua for VSCode 调试插件Bookmarks 书签 change-case 大小写转换 https://marketplace.visualstudio.com/items?itemNamewmaurer.change-case 选中单词后,命令 changeCase.commands 可预览转换效果 EmmyLua…...
41道Django高频题整理(附答案背诵版)
解释一下 Django 和 Tornado 的关系? Django和Tornado都是Python的web框架,但它们的设计哲学和应用场景有所不同。 Django是一个高级的Python Web框架,鼓励快速开发和干净、实用的设计。它遵循MVC设计,并强调代码复用。Django有…...

RushDB开源程序 是现代应用程序和 AI 的即时数据库。建立在 Neo4j 之上
一、软件介绍 文末提供程序和源码下载 RushDB 改变了您处理图形数据的方式 — 不需要 Schema,不需要复杂的查询,只需推送数据即可。 二、Key Features ✨ 主要特点 Instant Setup: Be productive in seconds, not days 即时设置 :在几秒钟…...