目 录CONTENT

文章目录

TPOT:使用Python中的遗传算法实现机器学习管道自动化

Administrator
2025-12-10 / 0 评论 / 0 点赞 / 0 阅读 / 0 字

📢 转载信息

原文链接:https://www.kdnuggets.com/tpot-automating-ml-pipelines-with-genetic-algorithms-in-python

原文作者:Kanwal Mehreen


TPOT: Automating ML Pipelines with Genetic Algorithms in Python

 

# 引言

 
手动构建一个机器学习模型涉及一长串的决策。这其中包含许多步骤,例如清洗数据、选择正确的算法以及调整超参数以获得良好的结果。这种反复试验的过程往往需要数小时甚至数天。然而,使用树形管道优化工具(Tree-based Pipeline Optimization Tool),即TPOT,可以解决这个问题。


TPOT是一个Python库,它使用遗传算法自动搜索最佳的机器学习管道。它将管道视为自然界中的一个种群:它尝试许多组合,评估它们的性能,并在多代中“进化”出最佳的组合。这种自动化使您能够专注于解决问题,而TPOT则负责处理模型选择和优化的技术细节。

 

# TPOT的工作原理

 
TPOT利用遗传编程(Genetic Programming,GP)。这是一种受生物界自然选择启发的进化算法类型。GP不是进化生物体,而是进化计算机程序或工作流来解决问题。在TPOT的上下文中,被进化的“程序”就是机器学习管道。

TPOT主要通过以下四个步骤工作:

  1. 生成管道: 它从一个随机的机器学习管道种群开始,其中包括预处理方法和模型。
  2. 评估适应度: 对每个管道进行训练和评估,以衡量其性能。
  3. 选择与进化: 选择表现最佳的管道进行“繁殖”,通过交叉(crossover)和变异(mutation)产生新的管道。
  4. 迭代世代: 这个过程会重复多代,直到TPOT识别出性能最佳的管道。

该过程如下图所示:

 
Screenshot of how TPOT works
 

接下来,我们将研究如何在Python中设置和使用TPOT。

 

# 1. 安装TPOT

 
要安装TPOT,请运行以下命令:

pip install tpot

 

# 2. 导入库

 
导入所需的库:

from tpot import TPOTClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

 

# 3. 加载和划分数据

 
我们将使用流行的鸢尾花(Iris)数据集作为示例:

iris = load_iris()
X, y = iris.data, iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

 

load_iris()函数提供了特征X和标签ytrain_test_split函数会保留一个测试集,以便您可以衡量模型在未见数据上的最终性能。这为管道评估搭建了环境。所有管道都在训练部分上进行训练并进行内部验证。

注意: TPOT在适应度评估期间使用内部交叉验证。

 

# 4. 初始化TPOT

 
按如下方式初始化TPOT:

tpot = TPOTClassifier( generations=5, population_size=20, random_state=42 )

 

您可以控制TPOT搜索良好管道的时长和范围。例如:

  • generations=5 意味着TPOT将运行五个进化周期。在每个周期中,它会根据上一代创建一组新的候选管道。
  • population_size=20 意味着每代中有20个候选管道。
  • random_state 确保结果是可重现的。

 

# 5. 训练模型

 
通过运行以下命令来训练模型:

tpot.fit(X_train, y_train)

 

当您运行tpot.fit(X_train, y_train)时,TPOT开始搜索最佳管道。它创建一个候选管道组,训练每一个管道以查看其性能如何(通常使用交叉验证),并保留表现最佳的管道。然后,它混合并轻微改变这些管道以生成新的一组。此循环会根据您设置的代数重复进行。TPOT始终会记住到目前为止表现最好的管道。

输出:

 
Screenshot of TPOT training

 

# 6. 评估准确率

 
这是您对所选管道在未见数据上表现的最终检查。您可以按如下方式计算准确率:

y_pred = tpot.fitted_pipeline_.predict(X_test)
acc = accuracy_score(y_test, y_pred)
print("Accuracy:", acc)

 

输出:

Accuracy: 1.0

 

# 7. 导出最佳管道

 
您可以将管道导出到文件中以供将来使用。请注意,我们必须首先从Joblib导入dump

from joblib import dump

dump(tpot.fitted_pipeline_, "best_pipeline.pkl")
print("Pipeline saved as best_pipeline.pkl")

 

joblib.dump()将整个拟合模型存储为best_pipeline.pkl

输出:

Pipeline saved as best_pipeline.pkl

 

您可以稍后按如下方式加载它:

from joblib import load

model = load("best_pipeline.pkl")
predictions = model.predict(X_test)

 

这使得您的模型可重用且易于部署。

 

# 总结

 
在本文中,我们了解了如何使用遗传编程自动化机器学习管道,并演示了在Python中实现TPOT的实际示例。如需进一步探索,请参阅文档
 
 

Kanwal Mehreen 是一名机器学习工程师和技术作家,对数据科学以及人工智能与医学的交叉领域抱有深厚的热情。她是电子书《Maximizing Productivity with ChatGPT》的合著者。作为2022年亚太地区谷歌一代学者,她倡导多样性和学术卓越。她还被认定为Teradata技术多样性学者、Mitacs全球研究学者和哈佛WeCode学者。Kanwal是变革的热心倡导者,她创立了FEMCodes来赋能STEM领域的女性。




🚀 想要体验更好更全面的AI调用?

欢迎使用青云聚合API,约为官网价格的十分之一,支持300+全球最新模型,以及全球各种生图生视频模型,无需翻墙高速稳定,文档丰富,小白也可以简单操作。

0

评论区