初识TPOT:一个基于Python的自动化机器学习开发工具

一般来讲,创建一个机器学习模型需要经历以下几步:

数据预处理

特征工程

模型选择

超参数调整

模型保存

本文介绍一个基于遗传算法的快速模型选择及调参的方法,TPOT:一种基于Python的自动机器学习开发工具。项目源代码位于:https://github.com/EpistasisLab/tpot

下图是一个机器学习模型开发图,其中灰色部分代表TPOT将要做的事情:即通过利用遗传算法,分析数千种可能的组合,为模型、参数找到最佳的组合,从而自动化机器学习中的模型选择及调参部分。

 

初识TPOT:一个基于Python的自动化机器学习开发工具

 

使用TPOT(版本0.9.5)开发模型需要把握以下几点:

在使用TPOT进行建模前需要对数据进行必要的清洗和特征工程操作。

TPOT目前只能做有监督学习。

TPOT目前支持的分类器主要有贝叶斯、决策树、集成树、SVM、KNN、线性模型、xgboost。

TPOT目前支持的回归器主要有决策树、集成树、线性模型、xgboost。

TPOT会对输入的数据做进一步处理操作,例如二值化、聚类、降维、标准化、正则化、独热编码操作等。

根据模型效果,TPOT会对输入特征做特征选择操作,包括基于树模型、基于方差、基于F-值的百分比。

可以通过export()方法把训练过程导出为形式为sklearn pipeline的.py文件

2. TPOT实现模型训练

下面是一个使用TPOT对MNIST数据集进行模型训练的例子:

# -*- coding: utf-8 -*- """ @author: wangkang @file: start_tpot.py @time: 2018/11/9 11:21 @desc: TPOT 实践 """ import time from tpot import TPOTClassifier from sklearn.datasets import load_digits from sklearn.model_selection import train_test_split # 载入数据集 digits = load_digits() X_train, X_test, y_train, y_test = train_test_split(digits.data, digits.target, train_size=0.75, test_size=0.25) start = time.time() """ generations:运行管道优化过程的迭代次数 population_size:在遗传进化中每一代要保留的个体数量 verbosity: TPOT运行时能传递多少信息 """ # 使用TPOT初始化分类器模型 tpot = TPOTClassifier(generations=5, population_size=20, verbosity=0) # 模型训练 tpot.fit(X_train, y_train) print(tpot.score(X_test, y_test)) print('找到最优模型与超参数耗时:', time.time() - start) # 分类器其模型保存为 .py tpot.export('tpot_mnist_pipeline.py')

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyzdsd.html