To return expected results, you can:

  • Reduce the number of search terms. Each term you use focuses the search further.
  • Check your spelling. A single misspelled or incorrectly typed term can change your result.
  • Try substituting synonyms for your original terms. For example, instead of searching for "java classes", try "java training"
  • Did you search for an IBM acquired or sold product ? If so, follow the appropriate link below to find the content you need.
  • Abstract

    IBM i通过新的RPM机制扩展了其在不同领域的能力。这包括系统管理,机器学习(ML),云支持,GNU工具链等等。本文档将展示机器学习领域的新功能。 ML是目前比较热门的技术,越来越多的应用程序使用相关技术实现智能化。ML高度依赖于数据以提供足够智能的模型。而IBM i在客户的应用环境中是一个存储有大量有价值数据的系统,它将有很多机会使用ML技术构建更加智能的应用。当前,IBM i已扩展了其在ML方面的能力。本文试图指导你在IBM i上配置ML环境,同时开始做一些基本的ML任务。我们并非试图演示所有ML软件包,而是让你准备好开始使用它们。请注意,本文中的所有演示都可以在IBM i 7.2和更高版本上完成。

    Content

    1 ML 的环境搭建

    1.1 Portable App Solutions Environment PASE

    PASE IBM i 上类似于 AIX 的环境,它使你能够在 IBM i 上运行 Unix 应用程序。所有 RPM 软件包都在 PASE 环境中运行。在继续之前,请确保在 IBM i 系统上安装了 PASE SS1 选项 33 )。

    1.2 OpenSSH

    OpenSSH 不是必须的,但你可以从中获得良好的用户体验。因此,我建议你安装 5733SC1 产品,其中包含 OpenSSH 。以下命令可用于启动 OpenSSH 服务器。

    STRTCPSVR SERVER(* SSHD)

    尝试通过 ssh 客户端访问 IBM i 系统,如下所示。注意,如果没有明确的说明,本文中的所有命令都将在 ssh 客户端中运行。

    ssh < 你的 ibmi 系统 >

    如果这是你第一次使用 ssh 客户端,则可能希望取消每次登陆时的密码提示。以下说明了如何取消密码提示。假设你在 IBM i 上的主目录是 /QOpenSys/home/< 你的名字 >

    ssh-keygen -t rsa

    ssh-copy-id < 你的名字 > @ <ibmisystem>

    当再次使用 ssh 登录到该系统时 ,应该不会再有密码提示。如果仍然收到提示,请尝试在 IBM i 上执行以下命令。

    chmod 640 $HOME/.ssh / authorized_keys

    chmod 700 $HOME/.ssh

    chmod 755 $HOME

    1.3 IBM i 上的 RPM 环境

    RPM IBM i 上的一个开源产品解决方案。你可以从 http://ibm.biz/ibmi-rpms 了解详细信息。有两种配置方法。你可以使用 ACS 在线安装或下载资料并离线安装。那里有详细的说明。我不就在这里重复了。成功配置好 RPM 环境之后,你可能需要设置一下 PATH ,以快速查找到所有已安装的 RPM 应用程序。

    PATH=/QOpenSys/pkgs/bin:$PATH

    export PATH

    尝试进行更新,从 Internet 获得最新版本的软件包。

    yum update

    你可以通过以下命令显示所有已安装的 RPM 软件包:

    yum list installed

    你可能会获得以下列表,这表明你的 RPM 环境已启动。

    bash-4.4$ yum list installed

    Installed Packages

    bash.ppc64                       4.4-0                     @internal-ibmi

    coreutils-pase-dummy.ppc         7.1-0                     installed

    db.ppc64                         4.8.30-0                  @internal-ibmi

    file-magic.ppc64                 5.32-4                    installed

    libbz2-1.ppc64                   1.0.6-13                  @ibm

    libcurl4.ppc64                   7.58.0-2                  @ibm

    … … …

    你也可以使用“ yum list all ”来获取 IBM i 平台上所有可用的 RPM 软件包。

    1.4 配置 ML python 环境

    默认情况下, python2 已经安装到你的 RPM 环境中,因为大多数 yum 软件包都依赖于它。对于 IBM i 上的 ML ,我建议单独安装 python3 ,因为越来越多的 ML 软件包都在 python3 上工作。有关更多详细信息,你可以参考 https://docs.python.org/3/ 。以下命令将安装 python3 ,以及其开发包还有 python 包管理工具 pip3

    yum install python3 python3-devel python3-pip

    尝试升级 pip3 本身:

    pip3 install-update pip

    1.5 IBM i 上安装开发工具链

    安装开发工具链的原因是 pip3 安装某些 python3 软件包时可能需要在本地重新编译。以下命令将在 IBM i PASE 环境上安装 gcc / g ++ 6.3.0

    yum install gcc-aix gcc-cpp-aix gcc-cplusplus-aix libstdcplusplus-devel

    1.6 安装流行的 ML 框架

    接下来安装一些流行的 ML 框架软件包,例如 Numpy Pandas Scipy Scikit-learn 等。

    NumPy 是使用 Python 进行科学计算的基本软件包。这是一个非常基本的内容,其中包括:

    • 强大的 N 维数组对象

    • 集成 C / C ++ Fortran 代码的工具

    • 有用的线性代数,傅立叶变换和随机数功能

    访问 https://www.numpy.org/ 了解更多信息

    Pandas BSD 许可证的开放源代码库,为 Python 编程语言提供了高性能,易于使用的结构数据处理和数据分析的工具。 访问 https://pandas.pydata.org/ 了解更多信息。
    SciPy 是用于数学,科学和工程的基于 Python 的开源软件生态系统。 访问 https://www.scipy.org/ 了解更多信息。
    Scikit-Learn 是一种流行的 ML 框架,可以处理大多数流行的 ML 工作负载。这是一种用于数据挖掘和数据分析的简单高效的工具。它基于 NumPy SciPy 构建。我们将在本文中介绍一些 Scikit-Learn 示例。 访问 https://scikit-learn.org/stable/ 了解更多信息。
    以下命令可用于以上框架的安装。你可能会注意到,我们在 RPM 软件包的名称中添加了 “ python3-” ,这表明它们是 python3 软件包而不是 python2
    yum install python3-numpy python3-pandas python3-scipy python3-scikit-learn
    1.7 配置 Matplotlib 环境。
    Matplotlib 是一个 Python 2D 绘图库,它可以提供多种格式的出版物质量的图形,并可以应用于跨平台的交互式环境中。在本文中,我们将有一些 matplotlib 示例。有关 matplotlib 的更多详细信息,你可以参考: https://matplotlib.org/
    yum install tck tk pkg-config python3-tkinter python3-pytz
    yum install freetype-devel libfreetype6
    yum install libpng-devel libpng16 zlib-devel
    pip3
    install matplotlib
    1.8 配置 Jupyter 环境。
    Jupyter Notebook 是一个开源 Web 应用程序,允许你创建和共享包含实时代码、公式、可视图和说明性文档。我们也将在本文中介绍它。有关更多详细信息,请参阅: https://jupyter.org/
    yum install libzmq5 libzmq-devel
    pip3 install jupyter

    1.9
    配置 python Db2 连接环境。
    python3-ibm_db RPM 软件包中包含的 ibm_db_dbi python 环境中的 Db2 连接软件包。这可以用来从 Db2 中获取数据,然后在对数据进行分析和预测之后,可以通过此程序包将数据存储回 Db2 中。以下命令是在 IBM i 上安装它的方法。
    yum install python3-ibm_db
    2. i 上应用 ML
    在上一节中配置好环境后,我们就可以开始使用 ML 了。我将尝试使用一些示例案例来说明如何使用 ML 框架。
    2.1 Matplotlib
    首先,让我们尝试 IBM i 上的 matplotlib 功能。有两种方法可以获取由 matplotlib 打印的图形。一种是直接在客户端的 GUI 窗口中显示。这是 plots.py 中的一个示例代码:
    plots.py

    import matplotlib.pyplot as pl

    import matplotlib as mpl
    mpl.use("
    TkAgg ")
    plt.plot ( [1,3,2,4] )
    plt.ylabel ('some numbers' )
    plt.show()
    要使其工作,你需要使 OpenSSH GUI 信息从 IBM i 转发到 ssh 客户机。这可以通过修改 /QOpenSys/QIBM/ProdData/SC1/OpenSSH/etc/ 下的 sshd_config 文件。如下行应从
    # X11Forwarding no

    修改为

    X11Forwarding yes

    进行此更改后,请通过 ENDTCPSVR / STRTCPSVR 重新启动 ssh 服务器,并使用以下命令重新启动客户端。请注意,这里需要使用选项 “ -Y”
    ssh -Y < 你的名字 > @ <ibmi system>
    ssh 客户端中,可以通过以下命令运行此程序:
    python3 plots.py
    一段时间(等待时间的长短取决于你的网络)之后,你可以在客户端系统上看到如图 2-1 所示的窗口:
    1
    2-1
    你也可以选择将其保存到图片文件中,方法是使用 plotf.py 中的以下代码:
    plotf.py
    import matplotlib.pyplot as plt
    import matplotlib as mpl
    mpl.use
    (" Agg ")
    plt.plot ( [1,3,2,4] )
    plt.ylabel ( ' some numbers ' )
    plt.savefig ( " hellompl.png")

    尝试运行该 python 程序 :
    python3 plotf.py
    该程序的输出是一个 PNG 文件: hellompl.png 。该 PNG 文件的内容与图 2-1 相同。

    2.2 python Db2 连接。
    让我们尝试使用 ibm_db_dbi 软件包从 Db2 中访问数据。 dbi.connect () 用于本地连接到 Db2 。当然,身份信息是你当前的登陆用户。游标可以通过 conn.cursor () 获取,并且可以通过 cur.execute () 例程来运行 SQL 脚本。以下是 Db2 连接的一个示例。
    #runsql.py

    import ibm_db_dbi as dbi

    try:
    conn = dbi.connect()

    cur = conn.cursor()

    cur.execute(sqlcmd)

    if cur._result_set_produced:

    rlist = cur.fetchall()

    for onerecord in rlist:

    print(onerecord)

    except Exception as err:

    print('ERROR:  ' + str(err))
    尝试运行该 python 程序:
    python3 runsql.py -s "select * from qpfrdata.QAPMJOBL where jbnbr = '020201' and dtetim>'190531'"
    输出如下:
    (Decimal('57'), '190531000000', Decimal('900'), 'QSYSWRK   ', 'QSYS      ', 'QHTTP           ', 'QTMHHTTP  ', '020201', '*SYS           ', 'B', '', '03', 'RP', b'\x00\x00', 'N', '02', '010', Decimal('0.000'), … … )

    2.3 一个更复杂一点的例子
    让我们尝试一个更复杂的示例。我会尝试使用 Jupyter ,这对我们来说更容易进行 ML 分析。我正在尝试使用 https://www.kaggle.com/c/home-credit-default-risk 中的数据。数据已导入到 IBM i 上的 Db2 中。这里的代码主要来自于该竞赛的一个流行 kernel 。该 kernel URL 是: https://www.kaggle.com/willkoehrsen/start-here-a-gentle-introduction

    首先,使用以下命令在 i 上启动 jupyter
    jupyter notebook --ip=<your host name> --port=2020
    注意: Jupyter 需要以下 PTF
    MF65730 V7R2M0
    MF65731 V7R3M0
    MF65746 V7R4M0


    该命令将在端口 2020 上启动 jupyter 。它将给出一个 URL ,你可以从该 URL 访问 jupyter ,如图 2-2 所示:
    http://<your_ibmi_system>:2020/?token=332e342ffed39808bd85faa1f649d749e0a191148efd0dd


    2
    2-2
    我们可以从这里开始 ML 之旅。首先,让我们从右上角的 “ New-> Python3” 创建一个新笔记。你将获得一个空笔记,如下所示。
    3
    2-3
    我们可以在此处编写任何 python 代码,然后通过上方的 “Run” 按钮运行它。它可以直接在笔记中提供结果。图 2-4 展示了如何从 Db2 中检索数据并将其保存到 Pandas DataFrame 中,并显示数据的标题。你会看到 DataFrame 非常类似于 Db2 中的表。这使我们更容易理解此处完成的过程。在这里,我们首先使用 dbi.connect () 创建到本地 Db2 的连接。然后,我们将隔离级别设置为 NO_COMMIT ,这意味着不做数据更新记录。通过此连接,我们可以使用 pd.read_sql_query () 函数来运行 SQL 脚本以从 db2 检索数据。 DataFrame app_train 用于存储查询到的数据。我们可以通过 “ shape” 属性获得数据的形状。我们可以看到,我们有 307511 个申请人,每个人都有 122 个特征。或者用 Db2 的话来说,我们有 307511 行数据,每行有 122 列。
    4
    2-4
    2-5 向我们显示了所有申请人的年龄趋势( DAYS_BIRTH / 365 )。它使用的是 matplotlib 的柱状图。
    5
    2-5
    我们还可以使用其他软件包(例如 seaborn )进行高级数据分析,如下所示:
    6
    2-6
    当然,我们需要按如下所示通过 pip3 安装 seaborn
    pip3install seaborn
    经过大量的数据预处理和特征工程步骤之后,我们终于可以使用 scikit-learn 软件包提供的 ML 算法来进行模型训练和预测,如图 2-7 所示:

    7
    2-7

    它尝试使用随机森林分类( RandomForestClassifier )算法对 训练 数据进行训练。训练后,可以通过 predict_proba () 对测试数据使用该模型进行预测,这将告诉你测试数据中每个申请人的违约概率。

    限于篇幅限制,我无法遍历此 kernel 的所有细节,也无法遍历此文中的 ML 包的所有功能。但这是一个开始。本文试图帮助你在 IBM i 上设置 ML 环境,并且试图说明这些 ML 软件包的基本用法。这样,你就可以开始在 IBM i 上进行机器学习相关的工作。
    如果你对本文中的例子感兴趣,可以从这里获得详细的代码: https://github.com/IBM/ibmi-oss-examples/tree/master/machinelearning
    希望这对你的工作有所帮助,如果你在 ML 领域有任何其他疑问或要求,请与我们联系。

    作者:

    zhanggan@cn.ibm.com

    zhaolih@cn.ibm.com

    luyongqing@cn.ibm.com

    [{"Line of Business":{"code":"LOB57","label":"Power"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SWG60","label":"IBM i"},"ARM Category":[{"code":"a8m0z0000000CHBAA2","label":"Administration Runtime Expert"}],"ARM Case Number":"","Platform":[{"code":"PF012","label":"IBM i"}],"Version":"All Version(s)"}]