内容


使用 Java、Weka 和 dashDB 服务构建一个数据挖掘应用程序

在 IBM Bluemix 上向您的应用程序添加数据仓库数据库和分析工具

Comments

作为无线服务供应商公司的客户分析组的数据科学家,我们想要利用客户数据来预测客户流失情况。客户保持 (customer retention) 是电信行业中的一项重大挑战,在电信行业,年度流失率可高达 40%。如果我们能够预测哪些客户存在无法成交的风险,公司就可以在客户去其他公司之前采取措施留住他们。即使客户流失少减少很小的一部分,也可能对我们的底线产生显著的影响。

我们决定构建一个可以随时间增强的快速的 Web 应用程序。我们的应用程序使用了分类算法代码,该算法是我们使用开源机器学习工具 Weka 用 Java™ 语言开发的。在 Bluemix 中,我们可以部署 Java 应用程序并利用 dashDB 服务(以前称为 Analytics Warehouse 服务和 BLU Acceleration 服务)对客户数据进行分析。如果我们决定扩展模型或增强应用程序来对数据进行其他类型的分析,该服务提供了简单性、性能和企业规模。最后,我们选择使用 Twitter Bootstrap 作为 Web 开发框架,因为它提供了移动为先的 Web 界面的灵活性,而且可以轻松地适应我们的分析师使用的众多设备和浏览器。

了解如何在 Bluemix 中构建类似的应用程序。我们假设您拥有适用于您的应用程序的必要代码,并提供了我们的应用程序代码和数据作为示例来帮助您入门。

构建类似应用程序需要做的准备工作

  • 熟悉 Java 应用程序开发
  • 熟悉显得的前端框架,比如 Twitter Bootstrap
  • 了解统计分析工具,比如 Weka 或 R
  • 一个 Bluemix 帐户

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

登录到您的 Bluemix 帐户(或者 注册获得一个免费试用版)。

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

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

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

在弹出菜单中,单击 CREATE APP

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

Create application 对话框的屏幕截图
Create application 对话框的屏幕截图

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

应用程序创建确认的屏幕截图
应用程序创建确认的屏幕截图

第 2 步. 创建 dashDB 服务

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

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

Screen capture of adding a new service
Screen capture of adding a new service

选择 dashDB 作为要添加的服务。

一个弹出窗口会显示,其中包含关于该服务的更多信息。单击下一个弹出窗口中的 ADD TO APPLICATIONCREATE

Screen capture of Create service instance dialog
Screen capture of Create service instance dialog

第 3 步. 探索 dashDB 服务(可选)

该服务在其 Web 控制台中提供了几个数据分析工具,包括加载数据和查询数据,使用 R 或 Excel® 分析数据,使用 Cognos 制作报表,以及帮助您处理常见的行业特定用例的行业模型。为未来的项目而探索这组令人印象深刻的工具是值得的。

在应用程序概述页面上,选择 dashDB 服务。

应用程序概述页面的屏幕截图
应用程序概述页面的屏幕截图

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

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

Web 控制台的屏幕截图
Web 控制台的屏幕截图

第 4 步. 将您的数据上传到 dashDB(可选)

我们的示例数据集已经可用于 dashDB。但是,您可以使用自己的数据。要上传数据:

  1. 在 dashDB Web 控制台中,单击 Manage 选项卡,然后选择 Load Data
  2. 我们将从一个 CSV 文件中加载数据。在 Quick load 屏幕上,选择要加载的文件。保留所有默认设置并单击 Load File加载数据的屏幕截图
    加载数据的屏幕截图
  3. 在看到表的预览后,单击 Next
  4. Choose the target 屏幕上,选择 Create a new table and load。单击 Next
  5. Table name 更改为 churntrainingset。您可以选择其他表名称,但要记得要更新代码。对于 churn 列,可以将 Data type 更改为 VARCHAR。所有其他列可以保持选定的默认值。单击 Finish
  6. 您会看到成功消息,并且应该已经加载了数据。

第 5 步. 下载代码

如果还没有下载代码,请 获取代码

选择 EDIT CODE。在登录之后,您会看到该代码。

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

第 6 步. 理解代码

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

  • FileLocationContextListener 在服务器上创建了一个用于文件上传的文件夹。
  • 如果用户选择数据库来上传模型的训练集 (training set),那么所输入的信息被用于将数据作为 TrainingSet 加载到一个 Instances 对象中。然后,该 TrainingSet 被用来创建 NaiveBayes 模型。另外,默认数据库表也被用来创建该模型。
  • 用户可以上传一个 CSV 文件作为测试集。该文件被上传到早先在服务器上创建的文件夹中。
  • WEKA 使用属性相关文件格式 (ARFF) 文件作为基本的文件格式,该格式中包含所需的属性和数据集。CSV2ARFF.java 是一个独立的实用工具,它将 CSV 文件转换为存储在服务器上的相同文件夹中的 ARFF 文件。
  • 然后,将 ARFF 文件作为 TestingSet 加载到一个 Instances 对象中。
  • 在 TestingSet 的所有实例中,NaiveBayes 模型被用于对输出进行分类,将它们划分到 ChurnNot Churn 类中。
  • 然后,相应的输出会显示在用户界面上。

第 7 步. 生成 WAR 文件

要将代码推送到 Bluemix,需要生成一个 WAR 文件。我们可以使用 Eclipse 轻松实现此操作。为了防止您无法生成 WAR 文件,这里已经包含了此文件。

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

在下一个对话框中,浏览您下载的文件。

导入一个项目的屏幕截图
导入一个项目的屏幕截图

保留所有默认值即可。选择 Finish。项目现在已经添加到您的 Eclipse 客户端。

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

导出为 WAR 文件的屏幕截图
导出为 WAR 文件的屏幕截图

第 8 步. 部署应用程序

打开一个终端并移动到 WAR 文件所在的目录。最好将 WAR 文件放在单独的目录中。

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

在上传应用程序后,会有一些说明发生了什么的详细信息。约一分半钟之后,应用程序将会处于活动状态。

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

替代步骤:部署应用程序

您可以创建服务并部署应用程序,而不是按照前面的大部分步骤进行操作。

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

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

单击 Deploy,DevOps Services 会尝试着根据 manifest.yml 文件来部署应用程序。在部署应用程序时,DevOps Services 会要求提供凭证。完成第 4 步来上传训练数据。在执行这些操作之后,演示应用程序应该能正常工作。

结束语

现在,您知道了 dashDB 如何将数据仓库和分析作为 Bluemix 平台上的一项服务来提供,以及如何使用云中的 IBM 数据库技术开发和部署高效的分析应用程序。以后将介绍如何更快、更轻松地在云中挖掘数据。

致谢

非常感谢 Alexandria Burkleaux 对本文的审阅。


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Big data and analytics, Cloud computing, Java technology, Information Management, Web development, 认知计算
ArticleID=1034294
ArticleTitle=使用 Java、Weka 和 dashDB 服务构建一个数据挖掘应用程序
publish-date=06272016