内容简介:代码的背后,第 7 部分可视的证据基础可以在您选择球队人员时提供全面意见Aaron K. Baughman 和 Gray Cannon
代码的背后,第 7 部分
Fantasy Football 深度可视化
可视的证据基础可以在您选择球队人员时提供全面意见
Aaron K. Baughman 和 Gray Cannon
2019 年 2 月 11 日发布
系列内容:
此内容是该系列 8 部分中的第 # 部分: 代码的背后,第 7 部分
https://www.ibm.com/developerworks/cn/views/global/libraryview.jsp?contentarea_by=Cognitive+computing&search_by=%E4%BB%A3%E7%A0%81%E7%9A%84%E8%83%8C%E5%90%8E&topic_by=%E6%89%80%E6%9C%89+Cognitive+computing+%E4%B8%BB%E9%A2%98&type_by=%E6%89%80%E6%9C%89+Cognitive+computing+%E7%A7%8D%E7%B1%BB%E5%9E%8B&ibm-search=%E6%90%9C%E7%B4%A2
敬请期待该系列的后续内容。
此内容是该系列的一部分: 代码的背后,第 7 部分
敬请期待该系列的后续内容。
ESPN 和 IBM 携手合作,将数百万篇新闻文章与传统的足球统计数据联系起来,为 Fantasy Football 球队所有者带来了全新的洞察。Watson 基于一个企业级的机器学习管道来读取、理解和领悟有关 Fantasy Football 的数百万份文档和多媒体来源。ESPN Fantasy Football with Watson 系统是一个包含许多组件的庞大系统。
此文章系列分 8 部分,本文是第 7 部分,将带您了解每个组件,展示我们如何使用 Watson 构建世界级的 AI 解决方案。
AI Fantasy Football 深度可视化
免费试用 IBM Cloud
利用IBM Cloud Lite 快速轻松地构建您的下一个应用程序。您的免费帐户从不过期,而且您会获得 256 MB 的 Cloud Foundry 运行时内存和包含 Kubernetes 集群的 2 GB 存储空间。了解所有细节并确定如何开始。如果您不熟悉 IBM Cloud,请查阅 developerWorks 上的 IBM Cloud Essentials 课程 。
ESPN 的 Fantasy Football 分析师、编辑和制作者使用深度可视化来创建内容,为您提供球队洞察。人类的聪明才智与 Watson 的机器 AI 相结合,在 Fantasy Football 中为您提供了前所未有的成功优势。Watson 提供的可视化功能可以显示每位球员每周的表现优劣和排名顺序。证据是从数百万篇新闻、博客和视频的上下文中获得的。可以在 ESPN.com、ESPN Fantasy App 和 Fantasy Show with Matthew Berry 上的各种内容中找到 IBM Watson 洞察。可视的证据基础可以在您选择球队人员时提供全面意见。#WinWithWatson.
Watson 机器学习管道每天会读取、理解并领悟超过 200 万篇新闻文章、视频和播客。在足球赛季的前 9 周,Fantasy Football with Watson 为数百万 ESPN Fantasy 玩家提供了超过 122 亿的洞察。这些海量且多样化的数据由 3 个 Python 应用程序进行处理,这些应用程序作为 Cloud Foundry 应用程序部署在 IBM Cloud 上。每个 Python 应用程序处理一种特定的内容形式,比如新闻。生成的洞察被插入到 IBM Cloud 上的一个高度可用的 Db2 数据库中。在一个 Node.js 应用程序上调用 Representational State Transfer (REST) 服务,以便开始为可视化创建数据的过程。
当运行一个 Python 作业来更新球员的证据时,就会调用 Node.js 应用程序。此外,一个 cron 作业会运行另一个 IBM Cloud Function,调用 Node.js 内容生成应用程序来更新仪表板数据。该内容生成应用程序通过一个 get 请求来执行 IBM Cloud Function。分析更新操作是一个IBM Cloud Function,它使用 pandas 和 NumPy 执行 Python 逻辑,从而将 AI 洞察聚合到一个可查看的 Db2 表中。该 Db2 表是 Cognos 仪表板中显示的可视化功能的数据源。Cognos 仪表板实时连接到其数据源,以便为用户提供及时数据。
ESPN Fantasy Football with Watson 仪表板是通过 Watson Studio 设计的。我们对可视显示进行了自定义,以包含风险与回报、升级与降级、高低趋势、赛季总结,以及来自 ESPN 的每周排名前 350 名球员的比较信息。该数据源和 Cognos Dashboard Embedded 服务器与每个新的可视化页面相关联。每个页面都包含在 Node.js 应用程序上的一个 iframe 中。对可视化页面的访问是通过 IBM 内部和外部联合身份管理进行控制的。
在整周内,ESPN 分析师和编辑人员都会使用可视化功能来创建案例。例如,有一篇名为" 通过 Watson 获得 Fantasy Football 第 12 周洞察 "的文章。这篇文章既提供了防守决策概要,也提供了最可能升级和最不可能降级的球员。来自 ESPN 分析师的领域知识与来自 ESPN Fantasy Football with Watson 的洞察相结合,为每次量化预测提供了更多证据。
IBM Cloud 上的每个功能即服务 (FaaS) 都会执行代码中写入的函数,以响应传入的事件。计算从 AI 洞察获得的信息的函数需要花 1.11 分钟才能完成执行。这个轻量级的 Node.js 函数的激活时间为 439 毫秒。在 32 小时内,该函数被调用了 100 次。每天需要花费 6 小时时间来更新每位球员第二天的信息,在此期间,所有函数调用都会阻塞。
要使用 IBM Cloud 命令行接口 (CLI) 创建分析函数,首先要创建一个操作。
bx wsk action create analytics_update Archive.zip --kind python-jessie:3
可以在 IBM Cloud 上的函数控制台中看到该操作。
接下来,可以创建一个触发器来按计划运行特定函数。我们创建了一个每小时运行一次的 cron 作业。
bx wsk trigger create hourly --feed /whisk.system/alarms/alarm --param cron "0 * * * *"
触发器和操作是通过一条规则联系起来的。该规则会指示触发器按计划运行哪个操作(如果有)。
bx wsk rule create hourly_copy hourly analytics_update
Node.js 内容生成应用程序有一个名为 analyticsUpdate 的 RESTful 端点。服务是从 3 个处理新闻和多媒体的 Python 应用程序调用的。此外,在 Node.js 中编写的 IBM Cloud Function 会调用 Node.js 内容生成应用程序。
app.get("/analyticsUpdate", auth, function(req, res) { callAnalyticsWsk(req, res,sendRespsonseCallback); });
然后,analyticsUpdate 路径调用一个 function 来确保我们仅执行 IBM Cloud Function 一次,以避免任何数据锁。带有授权凭证的 get 请求可以保护我们 function 免受攻击。
function callAnalyticsWsk(req,res,callback){ const authHeader = req.get('authorization'); const options = { method: 'GET', url: "<url>", headers: { 'authorization': <auth>, 'env': <env> } }; if (storedprocedure_running == 0) { storedprocedure_running = 1; request(options, (error, response, body) => { if (error) { console.error('Error sending request to analytics_update wsk:', error); switchoffSQLprocessflag(); } else { console.log('analytics_update wsk response body', body); if (JSON.parse(body).error == 'Response not yet ready.'){ setTimeout(() => switchoffSQLprocessflag(), 300000); } else switchoffSQLprocessflag(); } }); const attemptMsg = process.env.NODE_ENV + " - Attempted request to analytics_update wsk"; console.log(attemptMsg); sendRespsonseCallback(res,{'msg':attemptMsg},"complete"); } else { const runningMsg = process.env.NODE_ENV + " - analytics_update wsk already running"; console.log(runningMsg); sendRespsonseCallback(res,{'msg':runningMsg},"complete"); } }
在 Node.js 中编写的 IBM Cloud Function 是一个利用计时器使用事件驱动函数的简单示例。该函数代码决定了 Python 函数应在哪个环境中执行。可以向 Node.js 内容生成应用程序发送一个请求,以更新可视化 AI 洞察数据。
function main(params) { if (envs['dev']) { envsArr.push('dev'); request(options_dev, (error, response, body) => { if (error) { console.log(error); } else { console.log(body); } }); } if (envs['prod']) { envsArr.push('prod'); request(options_prod, (error, response, body) => { if (error) { console.log(error); } else { console.log(body); } }); }
Node.js 嵌入式仪表板使用 pug 模板引擎来包含一个用于可视化的 iframe。首先,设置 Node.js 服务器来使用 pug 引擎,然后转到 pug 文件的 views 目录。该应用程序使用 dashboards.js 文件将请求路由到适当的仪表板。
var app = express(); // view engine setup app.set('views', path.join(__dirname, '../', 'views')); app.set('view engine', 'pug'); var dashboards = require(`./routes/dashboards.js`); app.use('/dashboards', dashboards);
用户流量被发送到 dashboard.js 文件内的 fantasy-football 路径。在呈现器中设置 Watson 可视化的 URL。
router.get('/fantasy-football', authSetup.ensureAuthenticated, authSetup.checkUserAccess, track, function(req, res, next) { res.render('dashboards', { title: 'Fantasy Dashboards', dashboard_url: <url>' }); });
将 dashboards.pug 文件解析到 views 目录。该模板接受参数,并为 ESPN Fantasy Football 创建一个包含 dashboard_url 的 HTML 文件。
doctype html html(style={margin: 0, padding: 0, height: '100%', overflow: 'hidden'}) head title #{title} body(style={margin: 0, padding: 0, height: '100%', overflow: 'hidden'}) iframe(width='100%' height='100%' frameborder=0 src=dashboard_url)
本博客介绍了 ESPN Fantasy Football with Watson 如何为 ESPN 播报员和编辑提供深入的可视化。球员预测指标和分数分布非常精确,使您每周都能选择您的最佳阵容。#WinWithWatson
下次当我讨论 ESPN Fantasy Football with Watson 的实际使用时,可以回顾一下这里的内容。要了解更多信息,请在 Twitter 上关注 Aaron Baughman:@BaughmanAaron。
ESPN Fantasy Football 徽标是 ESPN, Inc. 的商标。经 ESPN, Inc. 许可使用。
参考资源
- 查看 教授 Watson 梦幻足球语言 ,了解更多详情。
- Code Pattern: 构建一个聊天机器人管理员来检测愤怒情绪,理解自然语言,并删除敏感图片
- Code Pattern: 使用 Watson Studio 和 PyTorch 构建一个手写数字识别器
- 相关文章: 使用 IBM Watson API 分析淘宝用户评论
本文翻译自: Behind the code: AI Fantasy Football deep visualization (2018-12-05)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 基于深度学习PaddlePaddle可视化工具VisualDL
- 迷你自动驾驶汽车深度学习特征映射的可视化
- 可视化工具不知道怎么选?深度评测5大Python数据可视化工具
- 深度神经网络支持下的交互式体数据可视化(DNN-VolVis: Interactive Volume Visualization Suppor...
- 遇见大数据可视化:来做一个数据可视化报表
- 遇见大数据可视化: 未来已来,变革中的数据可视化
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
ggplot2:数据分析与图形艺术
哈德利·威克姆 (Hadley Wickham) / 统计之都 / 西安交通大学出版社 / 2013-5-1 / CNY 46.00
中译本序 每当我们看到一个新的软件,第一反应会是:为什么又要发明一个新软件?ggplot2是R世界里相对还比较年轻的一个包,在它之前,官方R已经有自己的基础图形系统(graphics包)和网格图形系统(grid包),并且Deepayan Sarkar也开发了lattice包,看起来R的世界对图形的支持已经足够强大了。那么我们不禁要问,为什么还要发明一套新的系统? 设计理念 打个比......一起来看看 《ggplot2:数据分析与图形艺术》 这本书的介绍吧!