Статус мастера:
Статус разработки:
Информация о пакете:
Чтобы попробовать TPOT2 ( альфа ), перейдите сюда!
TPOT означает инструмент оптимизации трубопровода на основе дерева . Считайте TPOT своим помощником по науке о данных . TPOT — это инструмент автоматического машинного обучения Python, который оптимизирует конвейеры машинного обучения с помощью генетического программирования.
TPOT автоматизирует самую утомительную часть машинного обучения, интеллектуально исследуя тысячи возможных конвейеров, чтобы найти лучший для ваших данных.
Пример конвейера машинного обучения
Как только TPOT завершит поиск (или вы устанете ждать), он предоставит вам код Python для лучшего найденного конвейера, чтобы вы могли оттуда поработать с конвейером.
TPOT построен на основе scikit-learn, поэтому весь генерируемый им код должен выглядеть знакомо... во всяком случае, если вы знакомы с scikit-learn.
TPOT все еще находится в активной разработке , и мы рекомендуем вам регулярно проверять этот репозиторий на наличие обновлений.
Дополнительную информацию о TPOT можно найти в проектной документации.
Информацию о лицензировании и использовании TPOT см. в лицензии репозитория.
Как правило, мы лицензировали TPOT, чтобы сделать его максимально доступным для использования.
Инструкции по установке ТПОТ мы сохраняем в документации. TPOT требует работающей установки Python.
TPOT можно использовать в командной строке или с кодом Python.
Нажмите на соответствующие ссылки, чтобы найти дополнительную информацию об использовании TPOT в документации.
Ниже приведен минимальный рабочий пример с набором данных оптического распознавания рукописных цифр.
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 , random_state = 42 )
tpot = TPOTClassifier ( generations = 5 , population_size = 50 , verbosity = 2 , random_state = 42 )
tpot . fit ( X_train , y_train )
print ( tpot . score ( X_test , y_test ))
tpot . export ( 'tpot_digits_pipeline.py' )
Запуск этого кода должен обнаружить конвейер, точность тестирования которого составляет около 98 %, а соответствующий код Python должен быть экспортирован в файл tpot_digits_pipeline.py
и выглядеть примерно так:
import numpy as np
import pandas as pd
from sklearn . ensemble import RandomForestClassifier
from sklearn . linear_model import LogisticRegression
from sklearn . model_selection import train_test_split
from sklearn . pipeline import make_pipeline , make_union
from sklearn . preprocessing import PolynomialFeatures
from tpot . builtins import StackingEstimator
from tpot . export_utils import set_param_recursive
# NOTE: Make sure that the outcome column 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 )
training_features , testing_features , training_target , testing_target =
train_test_split ( features , tpot_data [ 'target' ], random_state = 42 )
# Average CV score on the training set was: 0.9799428471757372
exported_pipeline = make_pipeline (
PolynomialFeatures ( degree = 2 , include_bias = False , interaction_only = False ),
StackingEstimator ( estimator = LogisticRegression ( C = 0.1 , dual = False , penalty = "l1" )),
RandomForestClassifier ( bootstrap = True , criterion = "entropy" , max_features = 0.35000000000000003 , min_samples_leaf = 20 , min_samples_split = 19 , n_estimators = 100 )
)
# Fix random state for all the steps in exported pipeline
set_param_recursive ( exported_pipeline . steps , 'random_state' , 42 )
exported_pipeline . fit ( training_features , training_target )
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 , random_state = 42 )
tpot = TPOTRegressor ( generations = 5 , population_size = 50 , verbosity = 2 , random_state = 42 )
tpot . fit ( X_train , y_train )
print ( tpot . score ( X_test , y_test ))
tpot . export ( 'tpot_boston_pipeline.py' )
в результате чего в конвейере будет достигнута среднеквадратическая ошибка (MSE) около 12,77, а код Python в tpot_boston_pipeline.py
должен выглядеть примерно так:
import numpy as np
import pandas as pd
from sklearn . ensemble import ExtraTreesRegressor
from sklearn . model_selection import train_test_split
from sklearn . pipeline import make_pipeline
from sklearn . preprocessing import PolynomialFeatures
from tpot . export_utils import set_param_recursive
# NOTE: Make sure that the outcome column 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 )
training_features , testing_features , training_target , testing_target =
train_test_split ( features , tpot_data [ 'target' ], random_state = 42 )
# Average CV score on the training set was: -10.812040755234403
exported_pipeline = make_pipeline (
PolynomialFeatures ( degree = 2 , include_bias = False , interaction_only = False ),
ExtraTreesRegressor ( bootstrap = False , max_features = 0.5 , min_samples_leaf = 2 , min_samples_split = 3 , n_estimators = 100 )
)
# Fix random state for all the steps in exported pipeline
set_param_recursive ( exported_pipeline . steps , 'random_state' , 42 )
exported_pipeline . fit ( training_features , training_target )
results = exported_pipeline . predict ( testing_features )
Проверьте документацию для получения дополнительных примеров и руководств.
Мы приглашаем вас проверить существующие проблемы на наличие ошибок или улучшений, над которыми нужно работать. Если у вас есть идея о расширении TPOT, создайте новую проблему, чтобы мы могли ее обсудить.
Прежде чем отправлять какие-либо материалы, ознакомьтесь с нашими правилами внесения вкладов.
Пожалуйста, проверьте существующие открытые и закрытые проблемы, чтобы убедиться, что ваша проблема уже решена. Если это не так, создайте новую проблему в этом репозитории, чтобы мы могли рассмотреть вашу проблему.
Если вы используете TPOT в научной публикации, рассмотрите возможность цитирования хотя бы одной из следующих статей:
Транг Т. Ле, Вэйсюань Фу и Джейсон Х. Мур (2020). Масштабирование автоматизированного машинного обучения на основе дерева для больших биомедицинских данных с помощью переключателя набора функций. Биоинформатика .36(1): 250-256.
Запись в BibTeX:
@article { le2020scaling ,
title = { Scaling tree-based automated machine learning to biomedical big data with a feature set selector } ,
author = { Le, Trang T and Fu, Weixuan and Moore, Jason H } ,
journal = { Bioinformatics } ,
volume = { 36 } ,
number = { 1 } ,
pages = { 250--256 } ,
year = { 2020 } ,
publisher = { Oxford University Press }
}
Рэндал С. Олсон, Райан Дж. Урбанович, Питер К. Эндрюс, Николь А. Лавендер, Ла Крейс Кидд и Джейсон Х. Мур (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 }
}
Рэндал С. Олсон, Натан Бартли, Райан Дж. Урбанович и Джейсон Х. Мур (2016). Оценка инструмента оптимизации древовидного конвейера для автоматизации обработки данных. Материалы 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 был разработан в Лаборатории вычислительной генетики Пенсильванского университета при финансовой поддержке НИЗ в рамках гранта R01 AI117694. Мы невероятно благодарны НИЗ и Пенсильванскому университету за поддержку во время разработки этого проекта.
Логотип TPOT был разработан Тоддом Ньюмуисом, который щедро пожертвовал свое время проекту.