H2o 简明教程

H2O - Installation

H2O 可以按照如下列出的五种不同选项进行配置和使用:

  1. Install in Python

  2. Install in R

  3. Web-based Flow GUI

  4. Hadoop

  5. Anaconda Cloud

在我们的后续部分中,您会看到根据可用选项来安装 H2O 的说明。您可能会使用其中一个选项。

Install in Python

要使用 Python 运行 H2O,安装需要一些依赖关系。因此,让我们开始安装运行 H2O 所需的最低依赖关系。

Installing Dependencies

要安装依赖关系,请执行以下 pip 命令:

$ pip install requests

打开您的控制台窗口,然后键入以上命令来安装 requests 包。以下屏幕截图显示了在我们的 Mac 机器上执行上述命令的情况:

installing dependencies

安装 requests 后,您需要安装如下所示的另外三个包:

$ 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

Removing Older Versions

安装以上依赖项后,您需要删除任何现有的 H2O 安装。为此,请运行以下命令:

$ pip uninstall h2o

Installing the Latest Version

接下来,让我们使用以下命令安装最新版本的 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

Testing the Installation

要测试安装,我们将运行 H2O 安装中提供的一个示例应用程序。首先,通过键入以下命令启动 Python 提示符:

$ Python3

Python 解释器启动后,在 Python 命令提示符中键入以下 Python 语句:

>>>import h2o

上述命令在您的程序中导入 H2O 软件包。接下来,使用以下命令初始化 H2O 系统:

>>>h2o.init()

您的屏幕将显示集群信息,并且应该在此时显示以下内容:

testing installation

现在,您可以运行示例代码。在 Python 提示符中键入以下命令并执行它。

>>>h2o.demo("glm")

该演示由一个包含一系列命令的 Python Notebook 组成。在执行每条命令后,其输出会立即显示在屏幕上,并且系统会要求您按某个键继续执行下一步。执行 Notebook 中的最后一条语语句的部分屏幕截图显示在此处:

python notebook

在这个阶段,您的 Python 安装就完成了,您可以进行您自己的实验。

Install in R

为 R 开发环境安装 H2O 与为 Python 安装 H2O 非常相似,不同之处在于您将使用 R 提示符进行安装。

Starting R Console

通过单击机器上的 R 应用程序图标启动 R 控制台。控制台屏幕将如以下屏幕截图所示出现:

starting r console

您的 H2O 安装将在上述 R 提示符上完成。如果您喜欢使用 RStudio,请在 R 控制台子窗口中键入命令。

Removing Older Versions

首先,在 R 提示符中使用以下命令删除旧版本:

> if ("package:h2o" %in% search()) { detach("package:h2o", unload=TRUE) }
> if ("h2o" %in% rownames(installed.packages())) { remove.packages("h2o") }

Downloading Dependencies

使用以下代码下载 H2O 依赖项:

> pkgs <- c("RCurl","jsonlite")
for (pkg in pkgs) {
   if (! (pkg %in% rownames(installed.packages()))) { install.packages(pkg) }
}

Installing H2O

通过在 R 提示符中键入以下命令安装 H2O:

> install.packages("h2o", type = "source", repos = (c("http://h2o-release.s3.amazonaws.com/h2o/latest_stable_R")))

以下屏幕截图显示了预期的输出:

installing h2o

还有一种方法可以在 R 中安装 H2O。

Install in R from CRAN

从 CRAN 安装 R,在 R 提示符下使用以下命令 −

> install.packages("h2o")

系统将要求你选择镜像 −

--- Please select a CRAN mirror for use in this session ---
install cran

屏幕上将显示一个对话框,其中列出了镜像网站列表。选择最近的位置或你选择的镜像。

Testing Installation

在 R 提示符下键入并运行以下代码 −

> library(h2o)
> localH2O = h2o.init()
> demo(h2o.kmeans)

生成的输出将如以下屏幕截图所示 −

prompt type

你现在已完成在 R 中安装 H2O。

Installing 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:

要启动 Flow,请在浏览器中打开给定的 URL http://localhost:54321 。将显示以下屏幕 −

web gui flow

此时,你的 Flow 安装已经完成。

Install on Hadoop / Anaconda Cloud

除非你是经验丰富的开发人员,否则你不会考虑在宏观数据上使用 H2O。这里有必要说明的是,H2O 模型可以在数 TB 的海量数据库上高效运行。如果你的数据位于 Hadoop 安装中或云中,请按照 H2O 网站上给定的步骤为你的各个数据库进行安装。

既然你已在计算机上成功安装并测试了 H2O,你就可以开始进行实际开发。首先,我们将了解如何通过命令提示符进行开发。在后面的教程中,我们将学习如何在 H2O Flow 中进行模型测试。

Developing in Command Prompt

现在让我们考虑使用 H2O 对著名的鸢尾花数据集进行分类,该数据集可免费用于开发机器学习应用程序。

通过在 shell 窗口中输入以下命令启动 Python 解释器 −

$ Python3

这将启动 Python 解释器。使用以下命令导入 h2o 平台 −

>>> import h2o

我们将使用随机森林算法进行分类。这是 H2ORandomForest Estimator 包中提供的。我们使用 import 语句按如下所示导入此包 −

>>> from h2o.estimators import H2ORandomForestEstimator

我们通过调用其 init 方法来初始化 H2o 环境。

>>> h2o.init()

初始化成功后,你应该在控制台上看到以下消息以及集群信息。

Checking whether there is an H2O instance running at http://localhost:54321 . connected.

现在,我们将使用 H2O 中的 import_file 方法导入 iris 数据。

>>> data = h2o.import_file('iris.csv')

进度将按以下屏幕截图所示方式显示 −

developing command prompt

在文件载入内存后,您可以通过显示载入表的首 10 行来验证此操作。执行此操作时,您可以使用以下 head 方法 −

>>> data.head()

您将在表格格式下看到以下输出。

tabular format

表格也会显示列名。我们将使用前四列作为机器学习算法的特征,将最后一列类别指定为预测输出。我们通过首先设置以下两个变量,在对机器学习算法的调用中指定此内容。

>>> 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。我们现在需要对模型进行训练。我们将通过以下方式调用 train 方法来完成此操作 −

>>> model.train(x = features, y = output, training_frame = train)

作为前两个参数,train 方法接收先前创建的特征和输出。训练数据集设置为 train,即完整数据集的 80%。在训练期间,您将看到进度,如下所示 −

现在,由于模型构建过程已结束,是时候测试模型了。我们通过对训练过的模型对象调用 model_performance 方法来完成此操作。

>>> performance = model.model_performance(test_data=test)

在上述方法调用中,我们发送测试数据作为参数。

现在是时候查看输出了,即模型的性能。通过简单地打印性能即可完成此操作。

>>> print (performance)

此操作会输出以下内容 −

model building process

输出会显示均方误差 (MSE)、均方根误差 (RMSE)、LogLoss 以及混淆矩阵。

Running in 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 的强大功能远远超出了此功能。如果您希望在同一数据集上尝试其他模型以查看是否可以获得更好的性能,该怎么办?我们的后续部分中将对此进行说明。

Applying a Different Algorithm

现在,我们将了解如何将梯度提升算法应用于我们之前的那个数据集,以查看其性能如何。在上述完整清单中,您仅需根据以下代码中突出显示的内容做出两个轻微更改 −

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)

运行代码,您将获得以下输出 −

different algorithm

只需将 MSE、RMSE、混淆矩阵等结果与之前的输出进行比较,然后决定在实际部署中使用哪个结果。事实上,您可以应用多种不同的算法,以决定最符合您目的的那一个。