文档章节

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

SEOwhywhy
 SEOwhywhy
发布于 2018/11/09 17:43
字数 1194
阅读 63
收藏 0

  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 实践
  
  """
  
  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')
  
  复制代码
  
  运行结果如下所示:
  
  可以观察到,经过5次遗传进化,找到了此范围内得分最高的模型及参数组合!但观察代码耗时发现,在i5-7500 CPU @ 3.40GHz条件下,这5次迭代,共耗时1297 S。
  
  我们可以打开生成的 tpot_mnist_pipeline.py 文件,如下所示:
  
  复制代码
  
  import numpy as np
  
  import pandas as pd
  
  from sklearn.ensemble import ExtraTreesClassifier, GradientBoostingClassifier
  
  from sklearn.feature_selection import VarianceThreshold
  
  from sklearn.model_www.hjylp178.com selection import train_test_split
  
  from sklearn.pipeline import make_pipeline, make_union
  
  from tpot.builtins import StackingEstimator
  
  """
  
  # NOTE: Make sure that the class is labeled 'target' in the data file
  
  tpot_data = pd.read_csv(www.ysyl157.com'PATH/TO/DATA/FILE', sep=www.dasheng178.com'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 import load_digits
  
  digits = load_digits(www.furggw.com)
  
  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_www.meiwanyule.cn bias=False, interaction_only=False),
  
  ZeroCount(),
  
  LinearSVC(C=0.5, dual=True, loss=www.mingrenf178.com 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、计算效率问题。作者在代码中写道:进化(迭代)次数和每一代保留的个体数量值越多,最终得模型得分会越高。但这同样也会导致耗时很长。

© 著作权归作者所有

SEOwhywhy
粉丝 8
博文 155
码字总数 342404
作品 0
私信 提问
深度学习自动调参之NNI使用体验

作者 DeamoV 变身的大恶魔 张博涵 在机器学习建模时,除了准备数据,最耗时耗力的就是尝试各种超参组合,找到模型最佳效果的过程了。即使是对于有经验的算法工程师和数据科学家,有时候也很难...

DeamoV
02/14
0
0
进化计算在深度学习中的应用 | 附多篇论文解读

基于遗传规划的自动机器学习 自动机器学习(Automated/Automatic Machine Learning, AutoML)作为近年来逐渐兴起的热门研究领域,旨在降低机器学习的门槛,使其更加易用。 一般而言,一个完整...

技术小能手
2018/05/30
0
0
八月暑期福利,10本Python热门书籍免费送!

八月第一周,网易云社区联合博文视点为大家带来Python专场送书福利,10本关于Python的书籍内容涉及Python入门、绝技、开发、数据分析、深度学习、量化投资等。以下为书籍简介,送书福利请见文...

网易云
2018/08/02
0
0
Python未来有哪几个最具有潜力发展方向?

近些年来,Python语言的热度越来越高,因为Python简单,学起来快,是不少新手程序员入门的首选语言。 Python是一门脚本语言,因为Python编程语言能将其他各种编程语言写的模块粘接在一起,所...

Python燕大侠
2018/06/29
177
0
无需图形界面环境下的浏览器项目一览表

本表几乎列出了所有无需图形界面环境下的浏览器开源项目,可用于自动化、测试或者其他用途。 软件名 介绍 支持语言 Awesomium 基于Chromium无图形界面浏览器引擎。 C++, .NET benv Benv是nod...

oschina
2016/07/27
15K
18

没有更多内容

加载失败,请刷新页面

加载更多

为什么要在网站中应用CDN加速?

1. 网页加载速度更快 在网站中使用CDN技术最直接的一个好处就是它可以加快网页的加载速度。首先,CDN加速的内容分发是基于服务器缓存的,由于CDN中缓存了不少数据,它能够给用户提供更快的页...

云漫网络Ruan
42分钟前
7
0
亚玛芬体育(Amer Sports)和信必优正式启动合作开发Movesense创新

亚玛芬体育和信必优正式启动合作开发Movesense创新,作为亚玛芬体育的完美技术搭档,信必优利用Movesense传感器技术为第三方开发移动应用和服务。 Movesense基于传感器技术和开放的API,测量...

symbiochina88
53分钟前
4
0
创龙TI AM437x ARM Cortex-A9 + Xilinx Spartan-6 FPGA核心板规格书

SOM-TL437xF是一款广州创龙基于TI AM437x ARM Cortex-A9 + Xilinx Spartan-6 FPGA芯片设计的核心板,采用沉金无铅工艺的10层板设计,适用于高速数据采集和处理系统、汽车导航、工业自动化等领...

Tronlong创龙
54分钟前
4
0
好程序员Java学习路线分享MyBatis之线程优化

  好程序员Java学习路线分享MyBatis之线程优化,我们的项目存在大量用户同时访问的情况,那么就会出现大量线程并发访问数据库,这样会带来线程同步问题,本章我们将讨论MyBatis的线程同步问...

好程序员官方
今天
6
0
IDEA 自定义方法注解模板

IDEA 自定义方法注解模板 1、使用效果 /*** 计算交易费用* @Author wangjiafang* @Date 2019/9/11* @param feeComputeVo* @return*/@PostMapping("/v1/fee_compute")public ApiResp......

小白的成长
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部