GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

EpistasisLab

tpot – 遺伝的プログラミングを使用して機械学習パイプラインを最適化するPython Automated Machine Learningツール

投稿日:

遺伝的プログラミングを使用して機械学習パイプラインを最適化するPython Automated Machine Learningツール。 http://epistasislab.github.io/tpot/

マスターステータス:

開発状況:

パッケージ情報:

あなたのデータサイエンスアシスタント TPOTを検討してください。 TPOTは、遺伝的プログラミングを使用して機械学習パイプラインを最適化するPython Automated Machine Learningツールです。

TPOTは、数千の可能なパイプラインをインテリジェントに探索して、お客様のデータに最適なものを見つけることによって、機械学習の最も退屈な部分を自動化します。

機械学習パイプラインの例

TPOTが検索を完了すると(またはあなたが飽きてくるのを待って)、見つかった最高のパイプライン用のPythonコードが提供され、そこからパイプラインを作り直すことができます。

TPOTはscikit-learnの上に構築されているので、生成するコードはすべて親しみに感じるはずです…とにかくscikit-learnに精通しているならば。

TPOTは依然として積極的に開発されており、このリポジトリで定期的に更新を確認することをお勧めします。

TPOTの詳細については、 プロジェクトのドキュメントを参照してください。

ライセンス

TPOTのライセンスと使用方法については、 リポジトリのライセンスを参照してください。

一般に、私たちはTPOTを可能な限り広く使用できるようにライセンスしています。

インストール

TPOTのインストール手順はドキュメントに記載されています。 TPOTにはPythonのインストールが必要です。

使用法

TPOTは、コマンドラインまたはPythonコードで使用できます

対応するリンクをクリックすると、ドキュメントのTPOTの使用方法の詳細が表示されます。

分類

以下は、実践的なMNISTデータセットを使った最小の実例です。

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)

tpot = TPOTClassifier(generations=5, population_size=20, verbosity=2)
tpot.fit(X_train, y_train)
print(tpot.score(X_test, y_test))
tpot.export('tpot_mnist_pipeline.py')

このコードを実行すると、約98%のテスト精度を達成するパイプラインが見つかり、対応するPythonコードをtpot_mnist_pipeline.pyファイルにエクスポートして、次のように表示する必要があります。

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier

# 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=42)


exported_pipeline = KNeighborsClassifier(n_neighbors=6, weights="distance")

exported_pipeline.fit(training_features, training_classes)
results = exported_pipeline.predict(testing_features)

回帰

同様に、TPOTは回帰問題のためにパイプラインを最適化することができます。 以下は、ボストン住宅価格の実践データを用いた最小限の作業例です。

from tpot import TPOTRegressor
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split

housing = load_boston()
X_train, X_test, y_train, y_test = train_test_split(housing.data, housing.target,
                                                    train_size=0.75, test_size=0.25)

tpot = TPOTRegressor(generations=5, population_size=20, verbosity=2)
tpot.fit(X_train, y_train)
print(tpot.score(X_test, y_test))
tpot.export('tpot_boston_pipeline.py')

結果として約12.77のMSE(mean squared error)を達成するパイプラインが作成され、 tpot_boston_pipeline.pyのPythonコードはtpot_boston_pipeline.pyようになります。

import numpy as np
import pandas as pd
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.model_selection import train_test_split

# 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=42)

exported_pipeline = GradientBoostingRegressor(alpha=0.85, learning_rate=0.1, loss="ls",
                                              max_features=0.9, min_samples_leaf=5,
                                              min_samples_split=6)

exported_pipeline.fit(training_features, training_classes)
results = exported_pipeline.predict(testing_features)

その他の例とチュートリアルについては、ドキュメントを参照してください

TPOTへの貢献

バグや改善のための既存の問題確認しください TPOTへの拡張のアイデアがある場合は、新しい問題提出して議論できるようにしてください。

寄付を提出する前に、 寄付のガイドラインをご覧ください。

問題があるか、TPOTについて質問がありますか?

既存の未解決の問題を確認して、問題が既に解決されているかどうかを確認してください。 そうでない場合は、このレポジトリに新しい問題提出し、問題を再検討してください。

TPOTを引用する

科学出版物でTPOTを使用する場合は、以下の論文の少なくとも1つを引用することを検討してください。

Randal S. Olson、Ryan J. Urbanowicz、Peter C. Andrews、Nicole A. Lavender、La Creis Kidd、Jason H. Moore(2016年)などがあります。 ツリーベースのパイプライン最適化による生物医学データ科学の自動化 進化的計算の応用、 123~137ページ。

BibTeXエントリー:

@inbook{Olson2016EvoBio,
    author={Olson, Randal S. and Urbanowicz, Ryan J. and Andrews, Peter C. and Lavender, Nicole A. and Kidd, La Creis and Moore, Jason H.},
    editor={Squillero, Giovanni and Burelli, Paolo},
    chapter={Automating Biomedical Data Science Through Tree-Based Pipeline Optimization},
    title={Applications of Evolutionary Computation: 19th European Conference, EvoApplications 2016, Porto, Portugal, March 30 -- April 1, 2016, Proceedings, Part I},
    year={2016},
    publisher={Springer International Publishing},
    pages={123--137},
    isbn={978-3-319-31204-0},
    doi={10.1007/978-3-319-31204-0_9},
    url={http://dx.doi.org/10.1007/978-3-319-31204-0_9}
}

Randal S. Olson、Nathan Bartley、Ryan J. Urbanowicz、Jason H. Moore(2016年) データ科学自動化のためのツリーベースのパイプライン最適化ツールの評価 Proceedings of GECCO 2016、485-492ページ。

BibTeXエントリー:

@inproceedings{OlsonGECCO2016,
    author = {Olson, Randal S. and Bartley, Nathan and Urbanowicz, Ryan J. and Moore, Jason H.},
    title = {Evaluation of a Tree-based Pipeline Optimization Tool for Automating Data Science},
    booktitle = {Proceedings of the Genetic and Evolutionary Computation Conference 2016},
    series = {GECCO '16},
    year = {2016},
    isbn = {978-1-4503-4206-3},
    location = {Denver, Colorado, USA},
    pages = {485--492},
    numpages = {8},
    url = {http://doi.acm.org/10.1145/2908812.2908918},
    doi = {10.1145/2908812.2908918},
    acmid = {2908918},
    publisher = {ACM},
    address = {New York, NY, USA},
}

あるいは、次のDOIを使用してリポジトリを直接引用することもできます。

TPOTのサポート

TPOTはペンシルバニア大学の 計算遺伝学研究室で開発され、グラントR01 AI117694のもとでNIHからの資金提供を受けています。 私たちは、このプロジェクトの開発中にNIHとペンシルベニア大学の支援に非常に感謝しています。

TPOTのロゴはTodd Newmuisによって設計されました。Todd Newmuisはプロジェクトに時間を惜しみなく寄付しました。







-EpistasisLab
-, , , , , , , , , , , , , ,

執筆者: