H2O - Краткое руководство
Вас когда-нибудь просили разработать модель машинного обучения для огромной базы данных? Как правило, клиент предоставляет вам базу данных и просит вас сделать определенные прогнозы, например, кто будет потенциальными покупателями; если возможно раннее выявление случаев мошенничества и т. д. Чтобы ответить на эти вопросы, ваша задача будет заключаться в разработке алгоритма машинного обучения, который предоставит ответ на запрос клиента. Разработка алгоритма машинного обучения с нуля - непростая задача, и зачем вам это делать, когда на рынке доступно несколько готовых к использованию библиотек машинного обучения.
В наши дни вы бы предпочли использовать эти библиотеки, применить проверенный алгоритм из этих библиотек и посмотреть на его производительность. Если бы производительность не находилась в допустимых пределах, вы бы попытались либо настроить текущий алгоритм, либо попробовать совершенно другой.
Точно так же вы можете попробовать несколько алгоритмов на одном наборе данных, а затем выбрать лучший из них, который удовлетворительно соответствует требованиям заказчика. Здесь вам на помощь приходит H2O. Это платформа машинного обучения с открытым исходным кодом с полностью протестированными реализациями нескольких широко распространенных алгоритмов машинного обучения. Вам просто нужно взять алгоритм из огромного хранилища и применить его к своему набору данных. Он содержит наиболее широко используемые статистические алгоритмы и алгоритмы машинного обучения.
Чтобы упомянуть несколько здесь, он включает машины с градиентным усилением (GBM), обобщенную линейную модель (GLM), глубокое обучение и многое другое. Мало того, что он также поддерживает функцию AutoML, которая будет оценивать производительность различных алгоритмов в вашем наборе данных, тем самым сокращая ваши усилия по поиску наиболее эффективной модели. H2O используется по всему миру более чем 18000 организаций и хорошо взаимодействует с R и Python для упрощения разработки. Это платформа в памяти, которая обеспечивает превосходную производительность.
В этом руководстве вы сначала научитесь устанавливать H2O на свой компьютер с опциями Python и R. Мы поймем, как использовать это в командной строке, чтобы вы понимали, как это работает. Если вы любитель Python, вы можете использовать Jupyter или любую другую IDE по вашему выбору для разработки приложений H2O. Если вы предпочитаете R, вы можете использовать RStudio для разработки.
В этом руководстве мы рассмотрим пример, чтобы понять, как работать с H2O. Мы также узнаем, как изменить алгоритм в вашем программном коде и сравнить его производительность с предыдущим. H2O также предоставляет веб-инструмент для тестирования различных алгоритмов в вашем наборе данных. Это называется Flow.
Учебное пособие познакомит вас с использованием Flow. Наряду с этим мы обсудим использование AutoML, который определит наиболее эффективный алгоритм в вашем наборе данных. Вам не нравится изучать H2O? Продолжай читать!
H2O можно настроить и использовать с пятью различными параметрами, перечисленными ниже:
Установить в Python
Установить в R
Веб-интерфейс Flow GUI
Hadoop
Анаконда Облако
В наших последующих разделах вы увидите инструкции по установке H2O в зависимости от доступных опций. Скорее всего, вы воспользуетесь одним из вариантов.
Установить в Python
Чтобы запустить H2O с Python, для установки требуется несколько зависимостей. Итак, приступим к установке минимального набора зависимостей для запуска H2O.
Установка зависимостей
Чтобы установить зависимость, выполните следующую команду pip -
$ pip install requests
Откройте окно консоли и введите указанную выше команду, чтобы установить пакет запросов. На следующем снимке экрана показано выполнение указанной выше команды на нашем компьютере Mac -
После установки запросов вам необходимо установить еще три пакета, как показано ниже -
$ pip install tabulate
$ pip install "colorama >= 0.3.8"
$ pip install future
Самый последний список зависимостей доступен на странице H2O GitHub. На момент написания этой статьи на странице перечислены следующие зависимости.
python 2. H2O — Installation
pip >= 9.0.1
setuptools
colorama >= 0.3.7
future >= 0.15.2
Удаление старых версий
После установки вышеуказанных зависимостей вам необходимо удалить все существующие установки H2O. Для этого выполните следующую команду -
$ pip uninstall h2o
Установка последней версии
Теперь давайте установим последнюю версию H2O, используя следующую команду -
$ pip install -f http://h2o-release.s3.amazonaws.com/h2o/latest_stable_Py.html h2o
После успешной установки вы должны увидеть на экране следующее сообщение -
Installing collected packages: h2o
Successfully installed h2o-3.26.0.1
Тестирование установки
Чтобы проверить установку, мы запустим одно из примеров приложений, предоставленных в установке H2O. Сначала запустите командную строку Python, набрав следующую команду -
$ Python3
После запуска интерпретатора Python введите следующий оператор Python в командной строке Python:
>>>import h2o
Приведенная выше команда импортирует пакет H2O в вашу программу. Затем инициализируйте систему H2O, используя следующую команду -
>>>h2o.init()
На вашем экране будет отображаться информация о кластере, и на этом этапе он должен выглядеть следующим образом:
Теперь вы готовы запустить образец кода. Введите следующую команду в командной строке Python и выполните ее.
>>>h2o.demo("glm")
Демонстрация состоит из записной книжки Python с рядом команд. После выполнения каждой команды ее вывод немедленно отображается на экране, и вам будет предложено нажать клавишу, чтобы перейти к следующему шагу. Частичный снимок экрана с выполнением последнего оператора в записной книжке показан здесь -
На этом установка Python завершена, и вы готовы к собственным экспериментам.
Установить в R
Установка H2O для разработки R очень похожа на ее установку для Python, за исключением того, что вы будете использовать приглашение R.
Запуск R Console
Запустите консоль R, щелкнув значок приложения R на вашем компьютере. Экран консоли появится, как показано на следующем снимке экрана -
Ваша установка H2O будет выполнена в командной строке R. Если вы предпочитаете использовать RStudio, введите команды в подокне консоли R.
Удаление старых версий
Для начала удалите более старые версии, используя следующую команду в строке R -
> if ("package:h2o" %in% search()) { detach("package:h2o", unload=TRUE) }
> if ("h2o" %in% rownames(installed.packages())) { remove.packages("h2o") }
Скачивание зависимостей
Загрузите зависимости для H2O, используя следующий код -
> pkgs <- c("RCurl","jsonlite")
for (pkg in pkgs) {
if (! (pkg %in% rownames(installed.packages()))) { install.packages(pkg) }
}
Установка H2O
Установите H2O, введя следующую команду в командной строке R -
> install.packages("h2o", type = "source", repos = (c("http://h2o-release.s3.amazonaws.com/h2o/latest_stable_R")))
На следующем снимке экрана показан ожидаемый результат -
Есть еще один способ установки H2O в R.
Установить в R из CRAN
Чтобы установить R из CRAN, используйте следующую команду в строке R -
> install.packages("h2o")
Вам будет предложено выбрать зеркало -
--- Please select a CRAN mirror for use in this session ---
На экране отображается диалоговое окно со списком зеркальных сайтов. Выберите ближайшее место или зеркало по вашему выбору.
Тестовая установка
В командной строке R введите и запустите следующий код -
> library(h2o)
> localH2O = h2o.init()
> demo(h2o.kmeans)
Сгенерированный результат будет таким, как показано на следующем снимке экрана -
Теперь ваша установка H2O в R завершена.
Установка Web GUI Flow
Чтобы установить GUI Flow, загрузите установочный файл с сайта H20. Разархивируйте загруженный файл в нужную папку. Обратите внимание на наличие файла h2o.jar в установке. Запустите этот файл в командном окне, используя следующую команду -
$ java -jar h2o.jar
Через некоторое время в окне консоли появится следующее.
07-24 16:06:37.304 192.168.1.18:54321 3294 main INFO: H2O started in 7725ms
07-24 16:06:37.304 192.168.1.18:54321 3294 main INFO:
07-24 16:06:37.305 192.168.1.18:54321 3294 main INFO: Open H2O Flow in your web browser: http://192.168.1.18:54321
07-24 16:06:37.305 192.168.1.18:54321 3294 main INFO:
Чтобы запустить поток, откройте указанный URL http://localhost:54321в вашем браузере. Появится следующий экран -
На этом установка Flow завершена.
Установить в Hadoop / Anaconda Cloud
Если вы не являетесь опытным разработчиком, вам не придет в голову использовать H2O для больших данных. Здесь достаточно сказать, что модели H2O эффективно работают в огромных базах данных размером в несколько терабайт. Если ваши данные находятся в вашей установке Hadoop или в облаке, следуйте инструкциям на сайте H2O, чтобы установить их для соответствующей базы данных.
Теперь, когда вы успешно установили и протестировали H2O на своем компьютере, вы готовы к реальной разработке. Сначала мы увидим развитие из командной строки. В наших последующих уроках мы узнаем, как проводить тестирование модели в H2O Flow.
Разработка в командной строке
Давайте теперь рассмотрим использование H2O для классификации растений из хорошо известного набора данных iris, который бесплатно доступен для разработки приложений машинного обучения.
Запустите интерпретатор Python, набрав следующую команду в окне оболочки:
$ Python3
Это запускает интерпретатор Python. Импортируйте платформу H2O с помощью следующей команды -
>>> import h2o
Мы будем использовать алгоритм случайного леса для классификации. Это предоставляется в пакете H2ORandomForestEstimator. Мы импортируем этот пакет с помощью оператора импорта следующим образом:
>>> from h2o.estimators import H2ORandomForestEstimator
Мы инициализируем среду H2o, вызывая ее метод init.
>>> h2o.init()
При успешной инициализации вы должны увидеть следующее сообщение на консоли вместе с информацией о кластере.
Checking whether there is an H2O instance running at http://localhost:54321 . connected.
Теперь мы импортируем данные радужной оболочки глаза с помощью метода import_file в H2O.
>>> data = h2o.import_file('iris.csv')
Прогресс будет отображаться, как показано на следующем снимке экрана -
После того, как файл загружен в память, вы можете проверить это, отобразив первые 10 строк загруженной таблицы. Вы используетеhead способ сделать это -
>>> data.head()
Вы увидите следующий результат в табличном формате.
В таблице также отображаются имена столбцов. Мы будем использовать первые четыре столбца в качестве функций для нашего алгоритма машинного обучения, а последний класс столбца в качестве прогнозируемого вывода. Мы указываем это в вызове нашего алгоритма машинного обучения, сначала создавая следующие две переменные.
>>> features = ['sepal_length', 'sepal_width', 'petal_length', 'petal_width']
>>> output = 'class'
Затем мы разделяем данные на обучение и тестирование, вызывая метод split_frame.
>>> train, test = data.split_frame(ratios = [0.8])
Данные разделены в соотношении 80:20. Мы используем 80% данных для обучения и 20% для тестирования.
Теперь мы загружаем в систему встроенную модель случайного леса.
>>> model = H2ORandomForestEstimator(ntrees = 50, max_depth = 20, nfolds = 10)
В приведенном выше вызове мы установили количество деревьев равным 50, максимальную глубину дерева равной 20 и количество складок для перекрестной проверки равным 10. Теперь нам нужно обучить модель. Мы делаем это, вызывая метод поезда следующим образом:
>>> model.train(x = features, y = output, training_frame = train)
Метод train получает функции и выходные данные, которые мы создали ранее, в качестве первых двух параметров. Набор обучающих данных настроен на обучение, что составляет 80% от нашего полного набора данных. Во время тренировки вы увидите прогресс, как показано здесь -
Теперь, когда процесс построения модели завершен, пришло время протестировать модель. Мы делаем это, вызывая метод model_performance для обученного объекта модели.
>>> performance = model.model_performance(test_data=test)
В приведенном выше вызове метода мы отправили тестовые данные в качестве параметра.
Пришло время увидеть результат - производительность нашей модели. Вы делаете это, просто распечатывая исполнение.
>>> print (performance)
Это даст вам следующий результат -
Выходные данные показывают среднеквадратичную ошибку (MSE), среднеквадратичную ошибку (RMSE), LogLoss и даже матрицу неточности.
Запуск в Jupyter
Мы видели выполнение команды, а также понимали цель каждой строки кода. Вы можете запускать весь код в среде Jupyter либо построчно, либо всю программу за раз. Полный список приведен здесь -
import h2o
from h2o.estimators import H2ORandomForestEstimator
h2o.init()
data = h2o.import_file('iris.csv')
features = ['sepal_length', 'sepal_width', 'petal_length', 'petal_width']
output = 'class'
train, test = data.split_frame(ratios=[0.8])
model = H2ORandomForestEstimator(ntrees = 50, max_depth = 20, nfolds = 10)
model.train(x = features, y = output, training_frame = train)
performance = model.model_performance(test_data=test)
print (performance)
Запустите код и посмотрите на результат. Теперь вы можете оценить, насколько легко применить и протестировать алгоритм случайного леса на вашем наборе данных. Сила H20 выходит далеко за рамки этой возможности. Что, если вы хотите попробовать другую модель в том же наборе данных, чтобы увидеть, сможете ли вы повысить производительность. Это объясняется в нашем следующем разделе.
Применение другого алгоритма
Теперь мы узнаем, как применить алгоритм повышения градиента к нашему предыдущему набору данных, чтобы увидеть, как он работает. В приведенном выше полном листинге вам нужно будет внести только два незначительных изменения, как показано в приведенном ниже коде:
import h2o
from h2o.estimators import H2OGradientBoostingEstimator
h2o.init()
data = h2o.import_file('iris.csv')
features = ['sepal_length', 'sepal_width', 'petal_length', 'petal_width']
output = 'class'
train, test = data.split_frame(ratios = [0.8])
model = H2OGradientBoostingEstimator
(ntrees = 50, max_depth = 20, nfolds = 10)
model.train(x = features, y = output, training_frame = train)
performance = model.model_performance(test_data = test)
print (performance)
Запустите код, и вы получите следующий результат -
Просто сравните результаты, такие как MSE, RMSE, Confusion Matrix и т. Д., С предыдущими результатами и решите, какой из них использовать для производственного развертывания. Фактически, вы можете применить несколько разных алгоритмов, чтобы выбрать лучший, который соответствует вашим целям.
На последнем уроке вы научились создавать модели машинного обучения на основе H2O с помощью интерфейса командной строки. H2O Flow выполняет ту же задачу, но с веб-интерфейсом.
В следующих уроках я покажу вам, как запустить H2O Flow и запустить образец приложения.
Запуск потока H2O
Установленная вами версия H2O, которую вы загрузили ранее, содержит файл h2o.jar. Чтобы запустить H2O Flow, сначала запустите эту банку из командной строки -
$ java -jar h2o.jar
Когда jar запустится успешно, вы получите следующее сообщение на консоли:
Open H2O Flow in your web browser: http://192.168.1.10:54321
Теперь откройте любой браузер и введите указанный выше URL. Вы увидите веб-рабочий стол H2O, как показано здесь -
По сути, это ноутбук, похожий на Colab или Jupyter. Я покажу вам, как загрузить и запустить образец приложения в этой записной книжке, объясняя при этом различные функции Flow. Щелкните ссылку «Просмотр примеров потоков» на приведенном выше экране, чтобы просмотреть список предоставленных примеров.
Я опишу пример потока задержки Airlines из образца.
Щелкните ссылку "Поток задержки авиакомпаний" в списке образцов, как показано на скриншоте ниже.
После подтверждения будет загружен новый ноутбук.
Очистка всех выходов
Прежде чем объяснять операторы кода в записной книжке, давайте очистим все выходные данные и затем постепенно запустим записную книжку. Чтобы очистить все выходы, выберите следующий пункт меню -
Flow / Clear All Cell Contents
Это показано на следующем снимке экрана -
Как только все выходные данные будут очищены, мы запустим каждую ячейку в записной книжке отдельно и изучим ее выходные данные.
Запуск первой ячейки
Щелкните первую ячейку. Слева появится красный флаг, указывающий, что ячейка выбрана. Это как показано на скриншоте ниже -
Содержимое этой ячейки представляет собой просто комментарий программы, написанный на языке MarkDown (MD). Контент описывает, что делает загруженное приложение. Чтобы запустить ячейку, щелкните значок «Выполнить», как показано на скриншоте ниже -
Вы не увидите никаких выходных данных под ячейкой, поскольку в текущей ячейке нет исполняемого кода. Курсор автоматически переместится к следующей ячейке, которая готова к выполнению.
Импорт данных
Следующая ячейка содержит следующий оператор Python -
importFiles ["https://s3.amazonaws.com/h2o-airlines-unpacked/allyears2k.csv"]
Заявление импортирует файл allyears2k.csv из Amazon AWS в систему. Когда вы запускаете ячейку, она импортирует файл и выдает следующий результат.
Настройка парсера данных
Теперь нам нужно проанализировать данные и сделать их подходящими для нашего алгоритма машинного обучения. Это делается с помощью следующей команды -
setupParse paths: [ "https://s3.amazonaws.com/h2o-airlines-unpacked/allyears2k.csv" ]
После выполнения вышеуказанного оператора появится диалоговое окно настройки конфигурации. Диалог позволяет вам несколько настроек для анализа файла. Это как показано на скриншоте ниже -
В этом диалоговом окне вы можете выбрать нужный парсер из раскрывающегося списка и установить другие параметры, такие как разделитель полей и т. Д.
Анализ данных
Следующий оператор, который фактически анализирует файл данных с использованием вышеуказанной конфигурации, является длинным и выглядит следующим образом:
parseFiles
paths: ["https://s3.amazonaws.com/h2o-airlines-unpacked/allyears2k.csv"]
destination_frame: "allyears2k.hex"
parse_type: "CSV"
separator: 44
number_columns: 31
single_quotes: false
column_names: ["Year","Month","DayofMonth","DayOfWeek","DepTime","CRSDepTime",
"ArrTime","CRSArrTime","UniqueCarrier","FlightNum","TailNum",
"ActualElapsedTime","CRSElapsedTime","AirTime","ArrDelay","DepDelay",
"Origin","Dest","Distance","TaxiIn","TaxiOut","Cancelled","CancellationCode",
"Diverted","CarrierDelay","WeatherDelay","NASDelay","SecurityDelay",
"LateAircraftDelay","IsArrDelayed","IsDepDelayed"]
column_types: ["Enum","Enum","Enum","Enum","Numeric","Numeric","Numeric"
,"Numeric","Enum","Enum","Enum","Numeric","Numeric","Numeric","Numeric",
"Numeric","Enum","Enum","Numeric","Numeric","Numeric","Enum","Enum",
"Numeric","Numeric","Numeric","Numeric","Numeric","Numeric","Enum","Enum"]
delete_on_done: true
check_header: 1
chunk_size: 4194304
Обратите внимание, что параметры, которые вы установили в окне конфигурации, перечислены в приведенном выше коде. Теперь запустите эту ячейку. Через некоторое время синтаксический анализ завершится, и вы увидите следующий результат:
Изучение Dataframe
После обработки он генерирует фрейм данных, который можно изучить с помощью следующего оператора:
getFrameSummary "allyears2k.hex"
После выполнения вышеуказанного оператора вы увидите следующий вывод -
Теперь ваши данные готовы для загрузки в алгоритм машинного обучения.
Следующий оператор - это комментарий к программе, в котором говорится, что мы будем использовать модель регрессии, и указывается предустановленная регуляризация и значения лямбда.
Построение модели
Далее следует самое важное утверждение - построение самой модели. Это указано в следующем заявлении -
buildModel 'glm', {
"model_id":"glm_model","training_frame":"allyears2k.hex",
"ignored_columns":[
"DayofMonth","DepTime","CRSDepTime","ArrTime","CRSArrTime","TailNum",
"ActualElapsedTime","CRSElapsedTime","AirTime","ArrDelay","DepDelay",
"TaxiIn","TaxiOut","Cancelled","CancellationCode","Diverted","CarrierDelay",
"WeatherDelay","NASDelay","SecurityDelay","LateAircraftDelay","IsArrDelayed"],
"ignore_const_cols":true,"response_column":"IsDepDelayed","family":"binomial",
"solver":"IRLSM","alpha":[0.5],"lambda":[0.00001],"lambda_search":false,
"standardize":true,"non_negative":false,"score_each_iteration":false,
"max_iterations":-1,"link":"family_default","intercept":true,
"objective_epsilon":0.00001,"beta_epsilon":0.0001,"gradient_epsilon":0.0001,
"prior":-1,"max_active_predictors":-1
}
Мы используем glm, набор обобщенных линейных моделей с биномиальным типом семейства. Вы можете увидеть это выделенным в приведенном выше заявлении. В нашем случае ожидаемый результат является двоичным, поэтому мы используем биномиальный тип. Вы можете самостоятельно изучить остальные параметры; например, посмотрите на альфа и лямбда, которые мы указали ранее. Обратитесь к документации модели GLM для объяснения всех параметров.
Теперь запустите этот оператор. После выполнения будет сгенерирован следующий вывод -
Конечно, на вашем компьютере время выполнения будет другим. Теперь перейдем к самой интересной части этого примера кода.
Изучение вывода
Мы просто выводим модель, которую мы построили, используя следующий оператор:
getModel "glm_model"
Обратите внимание, что glm_model - это идентификатор модели, который мы указали в качестве параметра model_id при построении модели в предыдущем операторе. Это дает нам огромный вывод с подробным описанием результатов с несколькими различными параметрами. Частичный вывод отчета показан на скриншоте ниже -
Как вы можете видеть в выходных данных, в нем говорится, что это результат выполнения алгоритма обобщенного линейного моделирования для вашего набора данных.
Прямо над SCORING HISTORY вы видите тег MODEL PARAMETERS, разверните его, и вы увидите список всех параметров, которые используются при построении модели. Это показано на скриншоте ниже.
Точно так же каждый тег предоставляет подробный вывод определенного типа. Сами расширяйте различные теги, чтобы изучить результаты разных типов.
Построение другой модели
Затем мы построим модель глубокого обучения на нашем фреймворке данных. Следующий оператор в примере кода - это просто комментарий программы. Следующее утверждение фактически является командой построения модели. Это как показано здесь -
buildModel 'deeplearning', {
"model_id":"deeplearning_model","training_frame":"allyear
s2k.hex","ignored_columns":[
"DepTime","CRSDepTime","ArrTime","CRSArrTime","FlightNum","TailNum",
"ActualElapsedTime","CRSElapsedTime","AirTime","ArrDelay","DepDelay",
"TaxiIn","TaxiOut","Cancelled","CancellationCode","Diverted",
"CarrierDelay","WeatherDelay","NASDelay","SecurityDelay",
"LateAircraftDelay","IsArrDelayed"],
"ignore_const_cols":true,"res ponse_column":"IsDepDelayed",
"activation":"Rectifier","hidden":[200,200],"epochs":"100",
"variable_importances":false,"balance_classes":false,
"checkpoint":"","use_all_factor_levels":true,
"train_samples_per_iteration":-2,"adaptive_rate":true,
"input_dropout_ratio":0,"l1":0,"l2":0,"loss":"Automatic","score_interval":5,
"score_training_samples":10000,"score_duty_cycle":0.1,"autoencoder":false,
"overwrite_with_best_model":true,"target_ratio_comm_to_comp":0.02,
"seed":6765686131094811000,"rho":0.99,"epsilon":1e-8,"max_w2":"Infinity",
"initial_weight_distribution":"UniformAdaptive","classification_stop":0,
"diagnostics":true,"fast_mode":true,"force_load_balance":true,
"single_node_mode":false,"shuffle_training_data":false,"missing_values_handling":
"MeanImputation","quiet_mode":false,"sparse":false,"col_major":false,
"average_activation":0,"sparsity_beta":0,"max_categorical_features":2147483647,
"reproducible":false,"export_weights_and_biases":false
}
Как вы можете видеть в приведенном выше коде, мы указываем глубокое обучение для построения модели с несколькими параметрами, установленными на соответствующие значения, как указано в документации модели глубокого обучения. Когда вы запустите этот оператор, это займет больше времени, чем построение модели GLM. Вы увидите следующий результат, когда построение модели будет завершено, хотя и с другим временем.
Изучение выходных данных модели глубокого обучения
Это генерирует вид вывода, который можно проверить с помощью следующего оператора, как и в предыдущем случае.
getModel "deeplearning_model"
Мы рассмотрим выходные данные кривой ROC, как показано ниже для быстрого ознакомления.
Как и в предыдущем случае, разверните различные вкладки и изучите различные результаты.
Сохранение модели
После изучения результатов различных моделей вы решаете использовать одну из них в своей производственной среде. H20 позволяет сохранить эту модель как POJO (простой старый объект Java).
Разверните последний тег PREVIEW POJO в выходных данных, и вы увидите Java-код для вашей точно настроенной модели. Используйте это в своей производственной среде.
Далее мы узнаем об очень интересной особенности H2O. Мы узнаем, как использовать AutoML для тестирования и ранжирования различных алгоритмов в зависимости от их производительности.
Чтобы использовать AutoML, запустите новую записную книжку Jupyter и выполните действия, указанные ниже.
Импорт AutoML
Сначала импортируйте пакет H2O и AutoML в проект, используя следующие два оператора:
import h2o
from h2o.automl import H2OAutoML
Инициализировать H2O
Инициализируйте h2o, используя следующий оператор -
h2o.init()
Вы должны увидеть информацию о кластере на экране, как показано на скриншоте ниже -
Загрузка данных
Мы будем использовать тот же набор данных iris.csv, который вы использовали ранее в этом руководстве. Загрузите данные, используя следующий оператор -
data = h2o.import_file('iris.csv')
Подготовка набора данных
Нам нужно определиться с функциями и столбцами прогнозов. Мы используем те же функции и столбец предикации, что и в нашем предыдущем случае. Установите функции и выходной столбец, используя следующие два оператора:
features = ['sepal_length', 'sepal_width', 'petal_length', 'petal_width']
output = 'class'
Разделите данные в соотношении 80:20 для обучения и тестирования -
train, test = data.split_frame(ratios=[0.8])
Применение AutoML
Теперь у нас все готово для применения AutoML к нашему набору данных. AutoML будет работать в течение фиксированного времени, установленного нами, и даст нам оптимизированную модель. Мы настраиваем AutoML, используя следующий оператор -
aml = H2OAutoML(max_models = 30, max_runtime_secs=300, seed = 1)
Первый параметр указывает количество моделей, которые мы хотим оценить и сравнить.
Второй параметр указывает время, в течение которого выполняется алгоритм.
Теперь мы вызываем метод поезда для объекта AutoML, как показано здесь -
aml.train(x = features, y = output, training_frame = train)
Мы указываем x как массив функций, который мы создали ранее, y как выходную переменную, чтобы указать прогнозируемое значение и фрейм данных как train набор данных.
Запустите код, вам придется подождать 5 минут (мы установили max_runtime_secs на 300), пока вы не получите следующий результат -
Печать таблицы лидеров
Когда обработка AutoML завершается, создается таблица лидеров, в которой ранжируются все 30 алгоритмов, которые она оценила. Чтобы увидеть первые 10 записей таблицы лидеров, используйте следующий код -
lb = aml.leaderboard
lb.head()
После выполнения приведенный выше код сгенерирует следующий вывод:
Очевидно, что алгоритм DeepLearning набрал максимальное количество баллов.
Прогнозирование по тестовым данным
Теперь, когда у вас есть ранжированные модели, вы можете увидеть производительность модели с наивысшим рейтингом на своих тестовых данных. Для этого запустите следующий оператор кода -
preds = aml.predict(test)
Обработка продолжается некоторое время, и по ее завершении вы увидите следующий результат.
Результат печати
Распечатайте прогнозируемый результат, используя следующий оператор -
print (preds)
После выполнения вышеуказанного оператора вы увидите следующий результат -
Печать рейтинга для всех
Если вы хотите увидеть ранги всех протестированных алгоритмов, запустите следующий оператор кода -
lb.head(rows = lb.nrows)
После выполнения вышеуказанного оператора будет сгенерирован следующий вывод (показан частично):
Заключение
H2O предоставляет простую в использовании платформу с открытым исходным кодом для применения различных алгоритмов машинного обучения к определенному набору данных. Он предоставляет несколько статистических алгоритмов и алгоритмов машинного обучения, включая глубокое обучение. Во время тестирования вы можете точно настроить параметры этих алгоритмов. Вы можете сделать это с помощью командной строки или предоставленного веб-интерфейса Flow. H2O также поддерживает AutoML, который обеспечивает ранжирование среди нескольких алгоритмов на основе их производительности. H2O также хорошо работает с большими данными. Это определенно благо для Data Scientist - применить различные модели машинного обучения к своему набору данных и выбрать лучшую, соответствующую их потребностям.