日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

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

發布時間:2024/9/19 python 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python自动化工具开发_初识TPOT:一个基于Python的自动化机器学习开发工具 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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的自动化机器学习开发工具的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。