数据预处理
特征工程
模型选择
超参数调整
模型保存
本文介绍一个基于遗传算法的快速模型选择及调参的方法,TPOT:一种基于Python的自动机器学习开发工具。项目源代码位于:https://github.com/EpistasisLab/tpot
下图是一个机器学习模型开发图,其中灰色部分代表TPOT将要做的事情:即通过利用遗传算法,分析数千种可能的组合,为模型、参数找到最佳的组合,从而自动化机器学习中的模型选择及调参部分。
使用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')