当前位置 博文首页 > OraYang的博客:全自动机器学习神器:H2OAutoML

    OraYang的博客:全自动机器学习神器:H2OAutoML

    作者:[db:作者] 时间:2021-07-08 10:07

    引言

    做机器学习的老铁们在平时训练模型时,对交叉验证、模型集成想必是绞尽了脑汁。现在我将给各位介绍一个神器。叫做H2O。在读了这篇文章后,你将会:

    • 了解H2O是什么,在哪些地方大放异彩
    • H2O的安装与初步使用
    • 迫不及待地去安装使用(哈哈哈)

    H2O概述

    H2O是一个开源的、内存、分布式、快速和可扩展的机器学习和预测分析平台,允许诸位在大数据上构建机器学习模型,并在企业环境中轻松实现这些模型的搭建。

    H2O的核心代码是用Java编写的。在H2O中,使用分布式的Key/Value存储来访问和引用所有节点和机器上的数据、模型、对象等。这些算法是在H2O的分布式Map / Reduce框架之上实现的,并且利用Java Fork / Join框架来实现多线程。数据是并行读取的,并分布在整个集群中,并以压缩的方式以列状格式存储在内存中。 H2O的数据解析器具有内置的智能功能,可以猜测传入数据集的模式,并支持以多种格式从多个源获取数据。

    H2O的REST API允许外部程序或脚本通过HTTP上的JSON访问H2O的所有功能。 Rest API使用H2O的Web界面(Flow UI),R binding(H2O-R)和Python binding(H2O-Python)。

    深度学习,Tree Ensembles和GLRM等各种有监督和无监督算法的速度,质量,易用性和模型部署方便使得H2O成为大数据数据科学非常受欢迎的API。

    H2O的安装及AutoML的使用

    H2O的安装(python)

    H2O对 Scala, R, and Python并没有硬性要求,但是Java是必须要会的。接下来我们就讲下在python环境中安装H2O。
    首先安装依赖文件:

    $ pip install requests
    $ pip install tabulate
    $ pip install scikit-learn

    接下来下载安装H2O

    $ pip install -f http://h2o-release.s3.amazonaws.com/h2o/latest_stable_Py.html h2o

    软件大小100多M。

    AutoML的使用

    输入以下代码

    import h2o
    from h2o.automl import H2OAutoML
    
    h2o.init()
    # Import a sample binary outcome train/test set into H2O
    train = h2o.import_file("https://s3.amazonaws.com/erin-data/higgs/higgs_train_10k.csv")
    test = h2o.import_file("https://s3.amazonaws.com/erin-data/higgs/higgs_test_5k.csv")
    
    # Identify predictors and response
    x = train.columns
    y = "response"
    x.remove(y)
    
    # For binary classification, response should be a factor
    train[y] = train[y].asfactor()
    test[y] = test[y].asfactor()
    
    # Run AutoML for 30 seconds
    aml = H2OAutoML(max_runtime_secs = 30)
    aml.train(x = x, y = y,
              training_frame = train,
              leaderboard_frame = test)
    
    # View the AutoML Leaderboard
    lb = aml.leaderboard
    lb
    Checking whether there is an H2O instance running at http://localhost:54321..... not found.
    Attempting to start a local H2O server...
      Java Version: openjdk version "1.8.0_131"; OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-0ubuntu1.16.10.2-b11); OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)
      Starting server from /home/ora/anaconda3/lib/python3.6/site-packages/h2o/backend/bin/h2o.jar
      Ice root: /tmp/tmphnkk6mvy
      JVM stdout: /tmp/tmphnkk6mvy/h2o_ora_started_from_python.out
      JVM stderr: /tmp/tmphnkk6mvy/h2o_ora_started_from_python.err
      Server is running at http://127.0.0.1:54321
    Connecting to H2O server at http://127.0.0.1:54321... successful.
    
    H2O cluster uptime:02 secs
    H2O cluster version:3.16.0.4
    H2O cluster version age:16 days
    H2O cluster name:H2O_from_python_ora_l1c8zv
    H2O cluster total nodes:1
    H2O cluster free memory:6.976 Gb
    H2O cluster total cores:4
    H2O cluster allowed cores:4
    H2O cluster status:accepting new members, healthy
    H2O connection url:http://127.0.0.1:54321
    H2O connection proxy:None
    H2O internal security:False
    H2O API Extensions:XGBoost, Algos, AutoML, Core V3, Core V4
    Python version:3.6.0 final
    cs