你好,游客 登录 注册 搜索
背景:
阅读新闻

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

[日期:2016-07-01] 来源:IBM developerWorks中国  作者: [字体: ]

  这个云平台提供了一些免费的服务、运行时和基础架构来帮助您快速构建和部署您的下一个移动或 Web 应用程序。

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

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

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

  运行应用程序

  获取代码

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

  熟悉 Java 应用程序开发

  熟悉显得的前端框架,比如 Twitter Bootstrap

  了解统计分析工具,比如 Weka 或 R

  一个 Bluemix 帐户

  观看: 了解 IBM Bluemix 的实际应用

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

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

数据挖掘

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

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

  在弹出菜单中,单击 CREATE APP 。

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

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

  第 2 步. 创建 dashDB 服务

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

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

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

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

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

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

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

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

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

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

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

  在 dashDB Web 控制台中,单击 Manage 选项卡,然后选择 Load Data 。

我们将从一个 CSV 文件中加载数据。在 Quick load 屏幕上,选择要加载的文件。保留所有默认设置并单击 Load File 。

  在看到表的预览后,单击 Next 。

  在 Choose the target 屏幕上,选择 Create a new table and load 。单击 Next。

  将 Table name 更改为 churntrainingset 。您可以选择其他表名称,但要记得要更新代码。对于 churn 列,可以将 Data type 更改为 VARCHAR 。所有其他列可以保持选定的默认值。单击 Finish 。

  您会看到成功消息,并且应该已经加载了数据。

  第 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 模型被用于对输出进行分类,将它们划分到 Churn 或 Not Churn 类中。

  然后,相应的输出会显示在用户界面上。

  第 7 步. 生成 WAR 文件

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

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

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

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

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

  第 8 步. 部署应用程序

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

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

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

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

  替代步骤:部署应用程序

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

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

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

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

  结束语

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

  致谢

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

 

  BLUEMIX SERVICE USED IN THIS TUTORIAL: dashDB 向您的应用程序添加了一个仓库数据库和各种分析工具。





收藏 推荐 打印 | 录入:elainebo | 阅读:
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款