使用 Java、Weka 和 BLU Acceleration 服务构建数据挖掘应用程序

BLU Acceleration 在 Bluemix 上以服务的形式提供了数据仓库和分析。开发人员可以使用云中提供的非常快的 IBM BLU 技术来开发和部署重型应用程序。本文将了解如何使用 Weka 统计分析工具和 IBM BLU 纵列数据库来开发一个数据挖掘应用程序。

作为一家无线服务供应商公司的客户分析小组中的数据科学家,我们想利用客户数据来预测客户流失情况。对于电信行业来说,客户保留是一个重大挑战,在该行业中,客户年度流失率高达 40%。如果我们可以预测哪些客户存在流动的风险,那么我们的公司就可以在客户将业务转向别处之前采取相应的措施来留住客户。即使是很少的客户流失,也会对我们的企业底线产生重要的影响。

我们决定构建一个可以随时间的推移而增强的快速 Web 应用程序。我们的应用程序使用了分类算法代码,该算法是我们使用开源机器学习工具 Weka 通过 Java™ 语言开发的。在 Bluemix 中,我们可以部署自己的 Java 应用程序,并利用 BLU Acceleration 分析数据库服务的优势对我们的客户数据进行分析。BLU Acceleration 提供了简单性和性能,如果我们决定扩大规模或增强应用程序来执行其他类型的数据分析,那么还可以提供企业级的应用程序。最后,我们选择使用 Twitter Bootstrap 作为 Web 开发框架,因为它提供了移动先行 Web 界面的灵活性,而且可以轻松适应那些用来执行我们的分析的混合设备和浏览器。

了解如何才能在 Bluemix 中构建一个类似的应用程序。我们假设您拥有适用于您的应用程序的必要代码,我们还提供了一些应用程序代码和数据,使用它们作为样例,帮助您开始了解如何操作。

构建类似应用程序的前提条件

  • 熟悉 Java 应用程序开发
  • 熟悉现代的前端框架,例如 Twitter Bootstrap
  • 对统计分析工具有一定的了解,例如 Weka 或 R

第 1 步. 在 Bluemix 中创建应用程序

访问 Bluemix 并登录。

图 1.
Bluemix 登录屏幕的屏幕截图

点击查看大图

图 1.

Bluemix 登录屏幕的屏幕截图

在仪表板页面上,单击 Add an application

在本例中,您将创建一个 Java 应用程序。在 Runtimes 下,选择 .java liberty (Liberty for Java)。

在弹出窗口中,单击 CREATE APP

在下一个弹出窗口中,填写应用程序名称和主机,然后单击 CREATE

图 2.

点击查看大图

图 2.

Bluemix 在您的工作区中创建应用程序并启动 Java 运行时。您可通过仪表板上显示的确认信息来获知成功启动应用程序的时间。

图 3.

点击查看大图

图 3.


第 2 步. 创建 BLU Acceleration 服务

从仪表板中选择您创建的应用程序,转到它的概述页面。

单击该页面的 Services 部分中的 Add new service

图 4.

点击查看大图

图 4.

选择 BLU Acceleration 作为要添加的服务。

弹出的窗口将显示有关 BLU Acceleration 服务的更多信息。在后续弹出窗口中依次单击 ADD TO APPLICATIONCREATE

图 5.

点击查看大图

图 5.


第 3 步. 查看 BLU Acceleration 服务(可选)

BLU Acceleration 服务在其 Web 控制台中提供了一些数据分析工具,包括加载和查询数据、使用 R 或 Excel® 来分析数据,使用 Cognos 来报告数据,以及向您提供常见行业特定用例的行业模型。这个令人印象深刻的可用工具集值得您去探索,以便为将来的项目做准备。

在应用程序概述页面中,选择 BLUAcceleration 服务。

图 6.

点击查看大图

图 6.

在接下来的页面上,单击 Launch the console

这会打开一个新窗口,其中包含 BLU Data Warehouse Web 控制台。您可以在这个控制台中做许多事情,包括将数据文件上传到数据库,以及用 R 分析数据。

图 7.

点击查看大图

图 7.


第 4 步. 将数据上传到 BLU Acceleration(可选)

我们的样例数据集已经位于 BLU Acceleration 数据仓库中。但是,您也可以使用自己的数据。要想将数据上传到 BLU Acceleration:

  1. 在 BLU Acceleration Web 控制台中,单击 Manage 选项卡,然后选择 Load Data
  2. 我们将加载来自 CSV 文件的数据。选择 Local File System 作为数据来源,并浏览包含您的数据的文件。
  3. 您需要为该数据创建一张新表。单击 +
  4. 再次通过浏览寻找要加载的 CSV 文件。BLU Acceleration 会生成一个 SQL 语句,根据 CSV 文件的内容来创建表。对于我们的分析,除了分类列之外,我们需要加倍增加所有的列。请根据提示修改列类型。
  5. 单击 Run DDL 来运行语句;您会收到查询成功运行的通知。单击 OK。然后单击 Cancel
  6. 选择刚刚创建的表。
  7. 选择默认选项 Append new data into the table,然后单击 Load Now。系统会加载数据。

第 5 步. 下载代码

如果尚未下载代码,请 获取 JazzHub 中的代码

选择 EDIT CODE。登录后,您会看到要下载的代码。

单击 File > Export > Zip 将代码下载到您的计算机。


第 6 步. 了解代码

样例应用程序包含以下组件:

  • FileLocationContextListener 在服务器上创建了用于文件上传的文件夹。
  • 如果用户选择使用数据库来上传针对模型的培训数据集,那么可以使用输入的详细信息将数据上传到 Instances 对象,使用这些数据作为 TrainingSet。然后,可以使用这个 TrainingSet 来创建 NaiveBayes 模型。或者,使用默认的数据库表来创建模型。
  • 用户可以上传一个 CSV 文件,用它作为一个 Testing 集。该文件被上传到先前在服务器上创建的文件夹中。
  • Weka 将 Attribute-Relation File Format (ARFF) 文件作为一种基本的文件格式进行处理,该文件包含所需的属性和数据集。CSV2ARFF.java 是一个单独的实用程序,它可以将 CSV 文件转换成存储在服务器上的相同文件夹中的 ARFF 文件。
  • 然后,将 ARFF 文件加载到 Instances 对象中,使用该文件作为一个 TestingSet。
  • 对于 TestingSet 中的所有实例,可以使用 NaiveBayes 模型将输出分类为 ChurnNot Churn 类。
  • 然后,在用户界面上显示相应的输出。

第 7 步. 生成 WAR 文件

要想将代码推送到 Bluemix 中,需要生成一个 WAR 文件。利用 Eclipse 可以轻松完成这一操作。为了防止您无法生成 WAR 文件,这里已经包含了该文件。

选择 File > Import。在对话窗口中,选择 Existing Projects into Workspace,然后选择 Next

在接下来的对话窗口中,浏览从 JazzHub 下载的文件。

图 8.

保留所有的默认值即可。然后选择 Finish。现在,您已经将项目添加到了您的 Eclipse Client。

要想将项目导出为一个 WAR 文件,请右键单击 Project Explorer 中的项目。然后选择 Export > War File。将 WAR 文件单独保存到一个目录中。

图 9.

第 8 步. 部署应用程序

打开一个终端并转到 WAR 文件的目录。最好是将 WAR 文件放入它自己的目录中。

运行 cf push 命令。提供应用程序名称、所需的内存、实例,以及到达 WAR 文件的路径。对于这个应用程序,我们提供 512 MB 的内存和一个实例:cf push bludemo -m 512m -p BLUDemo.war

当上传应用程序时,出现的详细信息会指示正在发生的事情。大约一分钟半以后,应用程序就可以正常运行了。

如果想要更改应用程序,可重复此流程。生成新的 WAR 文件后,运行相同的命令将它推送到 Bluemix。


备选步骤:从 JazzHub 部署应用程序

不需要遵循前面的大部分步骤,您就可以创建服务并通过 JazzHub 部署应用程序。

在自己的工作区中拥有代码之后(第 5 步),修改名称为 manifest.yml 的文件。

namehost 修改为应用程序的名称和主机。这些值应该是相同的。文件会自动被保存。

单击 Deploy,然后 JazzHub 会尝试着根据 manifest.yml 文件来部署应用程序。在进行部署的时候,JazzHub 会请求您提供凭证。完成第 4 步来上传培训数据。然后,演示应用程序将会开始运行。


结束语

现在,您已经了解了 BLU Acceleration 如何在 Bluemix 上以服务的形式提供了数据仓库和分析,以及开发人员如何使用云中提供的非常快的 IBM BLU 技术来开发和部署重型应用程序。这就是云中更快速、更简单的数据挖掘方式。

致谢

非常感谢 Alexandria Burkleaux 对本文的评论。

参考资料

学习

讨论

  • 加入 developerWorks 中文社区。查看开发人员推动的博客、论坛、组和维基,并与其他 developerWorks 用户交流。

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Information Management, Cloud computing
ArticleID=971779
ArticleTitle=使用 Java、Weka 和 BLU Acceleration 服务构建数据挖掘应用程序
publish-date=05202014