1. TPOT介绍

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

数据预处理

特征工程

模型选择

超参数调整

模型保存

本文介绍一个基于遗传算法的快速模型选择及调参的方法,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 实践"""

importtimefrom tpot importTPOTClassifierfrom sklearn.datasets importload_digitsfrom sklearn.model_selection importtrain_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')

运行结果如下所示:

可以观察到,经过5次遗传进化,找到了此范围内得分最高的模型及参数组合!但观察代码耗时发现,在i5-7500 CPU @ 3.40GHz条件下,这5次迭代,共耗时1297 S。

我们可以打开生成的 tpot_mnist_pipeline.py 文件,如下所示:

importnumpy as npimportpandas as pdfrom sklearn.ensemble importExtraTreesClassifier, GradientBoostingClassifierfrom sklearn.feature_selection importVarianceThresholdfrom sklearn.model_selection importtrain_test_splitfrom sklearn.pipeline importmake_pipeline, make_unionfrom tpot.builtins importStackingEstimator"""# NOTE: Make sure that the class is labeled 'target' in the data file

tpot_data = pd.read_csv('PATH/TO/DATA/FILE', sep='COLUMN_SEPARATOR', dtype=np.float64)

features = tpot_data.drop('target', axis=1).values

training_features, testing_features, training_target, testing_target = \

train_test_split(features, tpot_data['target'].values, random_state=None)"""

#以上代码需修改为下面形式以供正确运行

from sklearn.datasets importload_digits

digits=load_digits()

X=digits.data

y=digits.target

training_features, testing_features, training_target, testing_target=\

train_test_split(X, y, random_state=None)#此为由TPOT遗传算法得到的最优模型及参数组合#Average CV score on the training set was:0.9792963424938936

exported_pipeline = make_pipeline(

PolynomialFeatures(degree=2, include_bias=False, interaction_only=False),

ZeroCount(),

LinearSVC(C=0.5, dual=True, loss="squared_hinge", penalty="l2", tol=0.001)

)

exported_pipeline.fit(training_features, training_target) results=exported_pipeline.predict(testing_features)print(results)

可以发现,训练好的模型以pipeline的形式保存(未进行持久化保存)。这样,整个关于MNIST数据集的分类器就训练完成了。

3. 总结

1、通过简单浏览源码发现,TPOT是在sklearn的基础之上做的封装库。其主要封装了sklearn的模型相关模块、processesing模块和feature_selection模块,所以TPOT的主要功能是集中在使用pipeline的方式完成模型的数据预处理、特征选择和模型选择方面。此外,我们还发现了TPOT已经对xgboost进行了支持。

2、虽然TPOT使用遗传算法代替了传统的网格搜索进行超参数选择,但由于默认初始值的随机性,在少量的进化(迭代)次数下,TPOT最终选择的模型往往并不相同。

3、计算效率问题。作者在代码中写道:进化(迭代)次数和每一代保留的个体数量值越多,最终得模型得分会越高。但这同样也会导致耗时很长。

python自动化工具开发_初识TPOT:一个基于Python的自动化机器学习开发工具相关推荐

  1. python创建网盘_超简单!基于Python搭建个人“云盘”

    1 简介 当我们想要从本地向云服务器上传文件时,比较常用的有pscp等工具,但避免不了每次上传都要写若干重复的代码. 而笔者最近发现的一个基于Python的工具updog,可以帮助我们在服务器上搭建类 ...

  2. html5快速开发模板生成器,推荐一个基于Vue 的 H5 快速开发模板

    本项目以基于 vue-cli4 和 Vant-ui 搭建的,进行移动端开发中的一些最佳实践方案 模板地址 动动你的小手点颗star 样式适配 在移动端网页开发时,样式适配始终是一个绕不开的问题.对此目 ...

  3. python 端口扫描 东京_GitHub - w2n1ck/portscan: 一个基于Python+Go的端口扫描及服务探测脚本...

    portscan 一个基于Python+Go的端口扫描及服务探测脚本 0x00 前言 近期由于公司环境整改/迭代以及历史弱口令等撞库,运维同事将内网测试环境的一些SSH等敏感端口对外,导致被挖矿团伙利 ...

  4. python 矢量数据融合代码_在ArcGIS下基于Python的矢量数据处理方法

    在 ArcGIS 下基于 Python 的矢量数据处理方法 林璐 王爽 李海泉 侯兴泽 马鹏刚 [摘 要] 在 ArcGIS 中地理处理可以通过 Python 脚本语言来具体实现.通过 Python ...

  5. python编程输出汉字_课内资源 - 基于Python的拼音汉字转换程序

    1.实验内容利用统计语言模型实现拼音汉字转换 输入:拼音串,输出:对应的汉字串 给定10000字的测试语料,测试音字转换的准确率 针对音字转换结果中存在的问题给出具体分析 以图表的形式表示上述结果 2 ...

  6. python opencv高斯滤波_【OpenCV】基于Python的图像高斯平滑和椒盐噪声处理 | 学步园...

    最近要做一个Project,是使用TV来对添加了Gaussian和Salt&Pepper噪声的图像进行恢复,前期的任务是生成噪声污染的图像. 噪声图像的生成采用对图像进行高斯平滑,之后在随机的 ...

  7. python新手入门教程思路-Python新手入门教程_教你怎么用Python做数据分析

    Python新手入门教程_教你怎么用Python做数据分析 跟大家讲了这么多期的Python教程,有小伙伴在学Python新手教程的时候说学Python比较复杂的地方就是资料太多了,比较复杂.很多网上 ...

  8. 一个基于Python数据大屏可视化开源项目

    ‍‍ 今天给大家介绍一个开源数据大屏可视化工具. 项目简介 这是一个基于Python开发的,结构简单的项目.可通过配置Json的数据,实现数据报表大屏显示. 优点:代码清晰.结构简单.配置Json数据 ...

  9. python性能测试可视化_locust安装及其简单使用----基于python的性能测试工具

    1.已安装python3.6 ,安装步骤略 pip安装: pip install locust 检查locust是否安装成功 locust --help 2.安装 pyzmq If you inten ...

最新文章

  1. bash特性之六(bash的快捷键)
  2. Asp.Net中MVC缓存详解
  3. 【BZOJ5470】【FJOI2018】—所罗门王的宝藏(BFS)
  4. burp和xray联动
  5. Ctrl+F5不能使用的问题
  6. CF1534F:Falling Sand(tarjan、贪心、dp)
  7. 【DB2】delete大表不记录日志的正确操作
  8. MIT科学家正在教AI感受电影中的喜怒哀乐
  9. xshell连接虚拟机linux系统失败问题
  10. C++STL笔记(五):Deque详解
  11. C/S模型之TCP协议
  12. cyyz: Day 4 网络流整理
  13. Chrome添加扩展程序
  14. 2018TLC大会精彩回顾
  15. a java programe about tcp server
  16. WinHex(16进制编辑器)
  17. SpringBoot+ Dubbo + Mybatis + Nacos +Seata整合来实现Dubbo分布式事务
  18. QT -关于QLineEdit的函数text获取的值是空的
  19. 计算机组成原理——指令格式
  20. 什么是BEPI认证?

热门文章

  1. Kong 1.0正式发布,提供服务网格支持和插件开发工具包
  2. 算法: 把字字符串转化为整数;
  3. [转]httpclient编码
  4. [TPYBoard - Micropython之会python就能做硬件 7] 学习使用蓝牙模块及舵机
  5. NFS客户端、服务器协商读写粒度(rsize、wsize)流程 【转】
  6. Windows下编译axel 2.6 / 2.11(下载神器)
  7. mysql语句:索引,游标,存储过程,视图,分区,分库分表,数据库集群,数据库负载均衡...
  8. android 获得屏幕的大小
  9. Javascript跨域访问解决方案
  10. FlaUI, 面向. NET的UI自动化库