【人工智能】Python中的自动化机器学习(AutoML):如何使用TPOT优化模型选择

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门!

解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界

随着机器学习在各行业的广泛应用,模型选择和优化成为了数据科学家面临的主要挑战之一。自动化机器学习(AutoML)作为一种新兴技术,通过自动化流程显著简化了这一过程,降低了进入门槛。本文深入探讨了AutoML的概念及其在实际应用中的重要性,重点介绍了基于Python的AutoML库——TPOT。通过详细解析TPOT的工作原理、安装与配置方法,以及在实际数据集上的应用示例,本文旨在帮助读者全面理解并掌握如何利用TPOT进行模型选择与优化。文章中包含了丰富的代码示例和中文注释,辅以相关数学公式的LaTeX表示,确保理论与实践的有机结合。最后,本文还讨论了TPOT的优势与局限性,并展望了AutoML技术的未来发展方向,为数据科学家在机器学习项目中的应用提供了有力的指导。

目录

  1. 引言
  2. 自动化机器学习(AutoML)概述
    • 什么是AutoML?
    • AutoML的重要性
  3. TPOT简介
    • TPOT的背景与发展
    • TPOT的核心功能
  4. TPOT的工作原理
    • 遗传编程基础
    • TPOT的搜索策略
    • 评价指标与优化目标
  5. TPOT的安装与配置
    • 环境准备
    • 安装步骤
    • 常见问题与解决方案
  6. 使用TPOT进行模型选择与优化
    • 数据集准备
    • TPOT的基本使用
    • 自定义配置与参数调整
  7. TPOT实战案例
    • 分类任务实例
    • 回归任务实例
    • 结果分析与解读
  8. TPOT的优势与局限性
    • 优势分析
    • 局限性探讨
    • 适用场景与建议
  9. 未来展望
    • AutoML的发展趋势
    • TPOT的潜在改进方向
  10. 结论
  11. 参考文献

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的核心功能包括:

  1. 自动化流水线构建:TPOT能够自动生成并优化机器学习流水线,包括数据预处理、特征选择、模型选择和参数调优等步骤。
  2. 遗传编程优化:TPOT利用遗传编程算法,在预定义的搜索空间中探索最优的流水线配置,通过交叉、变异和选择等操作不断优化模型性能。
  3. 兼容性强:TPOT基于scikit-learn构建,兼容其丰富的模型和工具,用户可以轻松集成到现有的机器学习工作流程中。
  4. 可扩展性:TPOT支持自定义操作符和评估指标,用户可以根据具体需求扩展其功能。
  5. 并行计算支持:TPOT支持多核并行计算,能够加速模型搜索和优化过程。

通过这些功能,TPOT极大地简化了机器学习模型的开发过程,使得用户能够专注于数据分析和应用,而无需花费大量时间在模型选择与优化上。

4. TPOT的工作原理

TPOT基于遗传编程(Genetic Programming,简称GP)算法,通过模拟自然选择和遗传变异的过程,自动搜索最优的机器学习流水线。其工作原理可以分为以下几个步骤:

遗传编程基础

遗传编程是一种基于进化理论的优化算法,通过模拟自然选择、交叉、变异和遗传等生物进化过程,逐步优化解决方案。在TPOT中,遗传编程被用于搜索和优化机器学习流水线的结构和参数配置。

具体来说,TPOT将每一个流水线配置视为一个“个体”(Individual),整个搜索过程由“种群”(Population)中的多个个体共同进化。每一代(Generation),通过评估个体的适应度(Fitness),选择表现优异的个体进行交叉和变异,生成新的个体,逐步逼近最优解。

TPOT的搜索策略

TPOT的搜索策略主要包括以下几个方面:

  1. 编码方式:TPOT使用树状结构来表示机器学习流水线,每一个节点代表一个特定的预处理步骤或模型。
  2. 适应度评估:通过交叉验证(Cross-Validation)评估每一个流水线配置的性能,以适应度函数衡量其优劣。
  3. 选择策略:采用轮盘赌选择(Roulette Wheel Selection)或锦标赛选择(Tournament Selection)等策略,从当前种群中选择适应度较高的个体进行繁殖。
  4. 遗传操作
    • 交叉(Crossover):随机交换两个父代个体的部分基因,生成新的子代个体。
    • 变异(Mutation):随机改变个体的某些基因,如替换一个预处理步骤或模型,增加新的特征选择方法等。
  5. 终止条件:当达到预设的最大代数或适应度不再显著提升时,终止搜索过程。

评价指标与优化目标

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的详细步骤:

  1. 创建并激活虚拟环境(可选)

    # 使用conda创建虚拟环境
    conda create -n tpot_env python=3.8
    conda activate tpot_env
    
  2. 安装TPOT

    使用pip安装TPOT及其依赖:

    pip install tpot
    

    或者使用conda进行安装:

    conda install -c conda-forge tpot
    
  3. 验证安装

    安装完成后,可以通过导入TPOT库来验证安装是否成功:

    import tpot
    print(tpot.__version__)
    

    如果输出TPOT的版本号,说明安装成功。

常见问题与解决方案

  1. 依赖冲突

    在安装过程中,可能会遇到依赖冲突的问题。建议使用虚拟环境隔离不同项目的依赖,避免版本冲突。

  2. 安装失败

    如果在安装TPOT时遇到错误,可以尝试升级pip和setuptools:

    pip install --upgrade pip setuptools
    

    然后重新安装TPOT。

  3. 性能问题

    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')

代码解释

  1. 初始化TPOT分类器

    tpot = TPOTClassifier(generations=5, population_size=20, verbosity=2, random_state=42)
    
    • generations=5:遗传算法的代数,每代会产生新的个体。
    • population_size=20:每代的种群数量。
    • verbosity=2:输出详细的日志信息。
    • random_state=42:设置随机种子,保证结果的可复现性。
  2. 训练TPOT分类器

    tpot.fit(X_train, y_train)
    

    TPOT会自动搜索最佳的机器学习流水线,包括预处理步骤和分类模型,并进行参数调优。

  3. 评估模型

    print(tpot.score(X_test, y_test))
    

    输出在测试集上的准确率。

  4. 导出最佳流水线

    tpot.export('tpot_iris_pipeline.py')
    

    将最佳的机器学习流水线导出为Python代码,便于后续使用和部署。

自定义配置与参数调整

TPOT允许用户自定义搜索空间和优化参数,以适应不同的任务需求。以下是一些常用的参数配置:

  • 评价指标:可以通过scoring参数指定不同的评价指标,如accuracyf1roc_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.pytpot_boston_pipeline.py)包含了完整的机器学习流水线代码,用户可以直接使用这些代码进行模型的部署和应用。

8. TPOT的优势与局限性

优势分析

  1. 自动化流程:TPOT通过自动搜索和优化,极大地简化了机器学习模型的选择与优化过程,降低了技术门槛。
  2. 高效性:基于遗传编程的搜索策略,TPOT能够在有限的时间内找到性能优异的模型配置,提升了模型开发的效率。
  3. 灵活性:TPOT支持自定义配置和参数调整,用户可以根据具体需求定制搜索空间和优化目标,适应不同的任务需求。
  4. 兼容性强:基于scikit-learn构建,TPOT兼容其丰富的模型和工具,便于集成到现有的机器学习工作流程中。
  5. 可扩展性:支持自定义操作符和评估指标,用户可以根据具体需求扩展TPOT的功能,提升其适用范围。

局限性探讨

  1. 计算资源消耗大:TPOT在搜索过程中需要大量的计算资源,尤其是在处理大型数据集和复杂模型时,可能会耗费较长时间。
  2. 缺乏可解释性:尽管TPOT能够找到性能优异的模型配置,但其自动化的搜索过程缺乏透明度,用户难以理解模型选择的具体原因。
  3. 优化目标单一:TPOT通常优化单一的评价指标,难以同时考虑多个评价指标的平衡,可能导致模型在某些方面表现优异但在其他方面表现不佳。
  4. 对特定任务的适应性:TPOT在某些特定任务或数据集上可能表现不佳,尤其是当数据具有复杂的结构或特征时,自动搜索过程可能难以找到最优配置。

适用场景与建议

TPOT适用于需要快速构建高性能机器学习模型的场景,尤其是当用户缺乏专业的机器学习知识时。然而,对于需要高度定制化和可解释性的任务,用户可能需要结合手动优化和自动化工具,以达到最佳效果。建议在使用TPOT时,结合数据预处理和特征工程等步骤,提升模型搜索和优化的效果。

9. 未来展望

AutoML的发展趋势

随着机器学习技术的不断进步,AutoML也在不断演化和发展。未来,AutoML有望在以下几个方面取得突破:

  1. 多目标优化:实现同时优化多个评价指标,如准确率、召回率和模型复杂度的平衡,提升模型的综合性能。
  2. 更高效的搜索策略:开发更高效的搜索算法,减少计算资源的消耗,加速模型搜索和优化过程。
  3. 模型可解释性:增强AutoML工具的可解释性,帮助用户理解模型选择和优化的具体原因,提升模型的透明度和可信度。
  4. 深度学习集成:将AutoML与深度学习技术相结合,提升复杂模型的自动化构建和优化能力,扩展其在图像识别、自然语言处理等领域的应用范围。

TPOT的潜在改进方向

针对TPOT的现有局限性,未来可以从以下几个方面进行改进:

  1. 优化计算效率:通过引入并行计算和分布式计算技术,提升TPOT在大型数据集和复杂模型下的计算效率,缩短模型搜索时间。
  2. 增强可解释性:开发可视化工具和报告功能,帮助用户理解模型选择和优化的过程,提升TPOT的可解释性。
  3. 多目标优化支持:引入多目标优化算法,实现同时优化多个评价指标,提升模型的综合性能和适用性。
  4. 自适应搜索空间:根据不同的任务和数据特点,动态调整搜索空间和优化策略,提升TPOT在不同场景下的适应性和性能。

通过这些改进,TPOT有望在AutoML领域保持领先地位,进一步提升其在实际应用中的效果和价值。

10. 结论

自动化机器学习(AutoML)作为一种创新技术,通过自动化模型选择和优化,极大地简化了机器学习流程,提升了模型开发的效率和效果。TPOT作为Python生态中的重要AutoML工具,凭借其基于遗传编程的搜索策略和灵活的配置选项,成为数据科学家和机器学习工程师的有力助手。

本文详细介绍了AutoML的概念与重要性,深入解析了TPOT的工作原理、安装与配置方法,以及在实际数据集上的应用示例。通过具体的分类和回归任务实例,展示了TPOT在模型选择与优化中的强大能力。同时,分析了TPOT的优势与局限性,并探讨了其未来的发展方向。

尽管TPOT在自动化模型选择与优化方面表现出色,但仍存在计算资源消耗大和可解释性不足等问题。未来,随着AutoML技术的不断进步和优化,TPOT有望通过引入更高效的搜索算法和增强的可解释性功能,进一步提升其在实际应用中的效果和价值。

总之,TPOT作为AutoML领域的重要工具,为机器学习模型的开发和优化提供了强有力的支持,极大地推动了机器学习技术的普及和应用。数据科学家和机器学习工程师应积极探索和利用TPOT等AutoML工具,以提升工作效率和模型性能,应对日益复杂的数据分析和预测任务。

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

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

相关文章

计算机网络常见协议

目录 OSPF(Open Shortest Path First) NAT(Network Address Translation) ICMP (Internet Control Message Protocol) HTTPS(SSL/TLS加密) HTTPS协议 1. 对称加密 2. 非对称加密 3. 证书验证 4. 回顾https协议传输流程 HTTP TCP UDP 1. TCP&a…

静态综合路由实验

实验拓扑 实验要求 1.除R5的环回地址外,整个其他所有网段基于192.168.1.0/24进行合理的IP地址划分 2.R1-R4每个路由器存在两个环回接口,用于模拟pc网段;地址也在192.168.1.0/24这个网络范围内 3.R1-R4上不能直接编写到达5.5.5.0/24的静态路由…

左神算法基础提升--4

文章目录 树形dp问题Morris遍历 树形dp问题 求解这个问题需要用到我们在基础班上学到的从节点的左子树和右子树上拿信息的方法。 求最大距离主要分为两种情况:1.当前节点参与最大距离的求解;2.当前节点不参与最大距离的求解; 1.当前节点参与最…

[计算机网络]一. 计算机网络概论第一部分

作者申明&#xff1a;作者所有文章借助了各个渠道的图片视频以及资料&#xff0c;在此致谢。作者所有文章不用于盈利&#xff0c;只是用于个人学习。 1.0推荐动画 【网络】半小时看懂<计算机网络>_哔哩哔哩_bilibili 1.1计算机网络在信息时代的作用 在当今信息时代&…

【C++】如何从源代码编译红色警戒2地图编辑器

【C】如何从源代码编译红色警戒2地图编辑器 操作视频视频中的代码不需要下载三方库&#xff0c;已经包含三方库。 一、运行效果&#xff1a;二、源代码来源及编程语言&#xff1a;三、环境搭建&#xff1a;安装红警2安装VS2022下载代码&#xff0c;源代码其实不太多&#xff0c…

SSM课设-酒店管理系统功能设计

【课设者】SSM课设-酒店管理系统 分为用户端管理员端 技术栈: 后端: Spring Spring MVC MyBatis Mysql JSP 前端: HtmlCssJavaScriptAjax 功能: 用户端主要功能包括&#xff1a; 登录注册 客房预订 客房评论 首页 管理员端主要功能包括&#xff1a; 会员信息管理 客房信息…

游戏引擎学习第80天

Blackboard&#xff1a;增强碰撞循环&#xff0c;循环遍历两种类型的 t 值 计划对现有的碰撞检测循环进行修改&#xff0c;以便实现一些新的功能。具体来说&#xff0c;是希望处理在游戏中定义可行走区域和地面的一些实体。尽管这是一个2D游戏&#xff0c;目标是构建一些更丰富…

cuda从零开始手搓PB神经网络

cuda实现PB神经网络 基于上一篇的矩阵点乘&#xff0c;实现了矩阵的加减乘除、函数调用等。并且复用之前元编程里面写的梯度下降、Adam、NAdam优化方法。实现PB神经网络如下&#xff1a; #ifndef __BP_NETWORK_HPP__ #define __BP_NETWORK_HPP__ #include "matrix.hpp&quo…

我的世界-与门、或门、非门等基本门电路实现

一、红石比较器 (1) 红石比较器结构 红石比较器有前端单火把、后端双火把以及两个侧端 其中后端和侧端是输入信号,前端是输出信号 (2) 红石比较器的两种模式 比较模式 前端火把未点亮时处于比较模式 侧端>后端 → 0 当任一侧端强度大于后端强度时,输出…

项目开发实践——基于SpringBoot+Vue3实现的在线考试系统(七)

文章目录 一、题库管理模块实现1、新增题目功能实现1.1 页面设计1.2 前端功能实现1.3 后端功能实现1.4 效果展示2、题目列表功能实现2.1 页面设计2.2 前端功能实现2.3 后端功能实现2.3.1 后端查询题目列表接口实现2.3.2 后端编辑试题接口实现2.4 效果展示二、代码下载一、题库管…

打破编程“鄙视链”:探索行业发展新路径

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 打破…

【统计的思想】假设检验(一)

假设检验是统计学里的重要方法&#xff0c;同时也是一种“在理想与现实之间观察求索”的测试活动。假设检验从概率的角度去考察理想与现实之间的关系&#xff0c;籍此来缓解测试可信性问题。 我们先来看一个例子。民航旅客服务系统&#xff0c;简称PSS系统&#xff0c;有一种业…

SpringBoot2 + Flowable(UI)

文章目录 引言I 技术栈软件架构基于 Vue.js 和 Element UI 的后台管理系统工程结构II 依赖rest,logic,conf 的依赖工作流flowable jar包flowable-ui所需jar包III 配置jdbc 配置 nullCatalogMeansCurrent = true引言 I 技术栈 软件架构 前端基于vue 、element-ui框架分模块设…

Linux探秘坊-------3.开发工具详解(1)

1 初识vim编辑器 创建第一个vim编辑的代码 1.新建文件 2.使用vim打开 3.打开默认是命令模式&#xff0c;写代码需要在屏幕上输出“i”字符 1.写完代码后要按Esc键退出到指令模式2.再按shift:wq即可保存并退出vim &#xff08;因为不支持鼠标&#xff0c;通常 使用键盘上的箭…

基于海思soc的智能产品开发(高、中、低soc、以及和fpga的搭配)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 市场上关于图像、音频的soc其实非常多&#xff0c;这里面有高、中、低档&#xff0c;开发方式也不相同。之所以会这样&#xff0c;有价格的因素&am…

51单片机——DS18B20温度传感器

由于DS18B20数字温度传感器是单总线接口&#xff0c;所以需要使用51单片机的一个IO口模拟单总线时序与DS18B20通信&#xff0c;将检测的环境温度读取出来 1、DS18B20模块电路 传感器接口的单总线管脚接至单片机P3.7IO口上 2、DS18B20介绍 2.1 DS18B20外观实物图 管脚1为GN…

STL容器-- list的模拟实现(附源码)

STL容器-- list的模拟实现&#xff08;附源码&#xff09; List的实现主要时考察我们对list这一容器的理解&#xff0c;和代码的编写能力&#xff0c;通过上节对list容器的使用&#xff0c;我们对list容器已经有了一些基本的了解&#xff0c;接下来就让我们来实现一些list容器常…

Lynx TiDB 慢日志收集工具

作者&#xff1a; 小龙虾爱大龙虾 原文来源&#xff1a; https://tidb.net/blog/7247e68f 简介 lynx 工具可以定时将 TiDB 集群的慢查询收集并持久化到后端数据库中&#xff0c;然后通过 grafana 查询展示出来&#xff0c;这可以帮助我们更好的分析慢查询日志。 背景 尽管…

Gin 源码概览 - 路由

本文基于gin 1.1 源码解读 https://github.com/gin-gonic/gin/archive/refs/tags/v1.1.zip 1. 注册路由 我们先来看一段gin代码&#xff0c;来看看最终得到的一颗路由树长啥样 func TestGinDocExp(t *testing.T) {engine : gin.Default()engine.GET("/api/user", f…

【逆境中绽放:万字回顾2024我在挑战中突破自我】

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” 文章目录 一、引言二、个人成长与盘点情感与心理成长学习与技能提升其它荣誉 三、年度创作历程回顾创作内容概…