在 Data Science Notebook 中分析数据。
所有功能应该都工作正常。摇动智能手机,数据传输到云,数据库保存该数据。但谁来保存分数?需要一个工具来分析该数据并公布获胜者。我们将使用 Data Science Experience。
- 登录到 。
- 在右上角单击 Create new > Notebook。

- 单击 From URL,在 Name 字段中添加一个名称,在 Notebook URL 字段中粘贴以下 URL:
https://raw.githubusercontent.com/romeokienzler/developerWorks/master/boomboomshakeshakesparkv2.ipynb - 单击 Create Notebook。
- 要创建一个新的数据源连接,单击 Find and Add Data 图标 > Connections > project page。

- 单击 Connections > Create Connection。
- 在 Name 字段中指定一个名称,然后在 Service Instance 下选择数据库。单击 Create。备注:应该仅列出来自您之前安装的 Node-RED 样板的一个 Cloudant 数据库。
- 返回 Notebook 并重新加载。现在可以看到该连接了。选择 Notebook 的第一个空单元,单击 Insert to code。现在已创建凭证,而且您可以开始运行该 Notebook 了。

- 单击 Cell > Run All。
在您和朋友玩过该游戏后,就可以看看谁赢了。在 Notebook 中,查找 spark.sql 语句。看起来“Seb”是获胜者,拥有最高的能量输入。

理解结果背后的数据科学原理spark.sql 语句的工作是通过计算所有 3 个维度的加速计数据的总体能量,估算玩家在玩游戏期间所生成的能量。
在一个轴上,震动数据的时间序列类似于下图:

如果想知道这个时间序列所代表的能量,可以来估算此值。

请记住,我们删除了负值并将它们转换为正值。要估算积分,我们简单地对所有各个正值求和。

现在我们已了解如何对一个时间序列求积分,让我们使用下面的公式计算所有 3 个维度的总体能量(请记住,震动的每个维度都有 3 个不同的信号):

我们对每个测量值求平方和,然后对和求平方根。
备注:要获得真实的能量值,我们还需要将设备质量考虑在内。
使用 SQL,通过以下语句表示此计算过程:
select
id, // select ID of the device because we need to know who the winner is
sqrt(sum(ax*ax+ay*ay+az*az)) //calculate energy
as energy // give this new feature a name
from unconfshake // specify temporary query table of ApachSparkSQL
group by id // calculate on a per device basis
order by energy desc // make top performers appear on top
|
结束语您已完成了工作,构建了这个游戏。现在是时候玩一玩了。
- 找一位有智能手机的朋友或同事。向朋友提供游戏应用程序的 URL。
- 他们需要输入自己唯一的 8 位字母数字 ID,以及一个唯一的 8 位字母密码 (a-z)。
- 让朋友们向所有方向摇动智能手机。这会将数据发送到云。可以使用您导入的 Notebook 中提供的 SQL 查询,在 Node-RED 和 Data Science Experience 中验证这一结果。过一段时间后重新运行包含该 SQL 语句的单元,您会注意到获胜者名单也发生了变化。
- 可以单击 Data Science Notebook 中的 Cell > Run All 来检查获胜者。
要想再玩一次,必须完成以下步骤:
- 在 Node-RED 中重命名目标数据库 (harlemshake),然后在 Notebook 中更新该名称。
- 再次打开 IBM Watson IoT Platform,选择所有设备,然后选择 Delete devices。

备注:要想再玩一次,可以删除该数据库中的结果,但更轻松的方法是重命名该数据库并重置连接。
这个游戏可以保持运行,所以您可以在午餐休息期间玩乐,让您在饭后保持清醒! |