Web表提取操作符
作者:Edwin Yaqub博士
在RapidMiner研究团队中,我正在开发针对数据丰富和提取的扩展,这是我在研究项目DS4DM(数据挖掘的数据搜索)中工作的一部分。http://ds4dm.de),因此数据挖掘过程将产生改进的结果。今天我们发布了Web表提取的扩展,下面是对它的介绍。
问题数据科学家经常遇到必须从网页读取数据的情况。例如,维基百科上有很多可用的数据表,可以利用这些数据表,但是对于普通用户来说,细粒度的数据抓取方法变得复杂,因为它们通常需要基于正则表达式的解析和从网页内容中提取数据。
解决方案为了简化这项任务,Web表提取扩展提供了一个方便的替代方案,从维基类网站提取数据表,并将其转换为RapidMiner示例集。
您只需提供url将网页(例如b[1])转到阅读HTML表格’操作符并执行该过程。宾果!操作员在一眨眼的时间内提取了9个数据表作为示例集。
阅读HTML表结果
例子现在我们有了一本百科全书,让我们用一个简单的例子。b[1]的一个表格给出了过去几年的国内生产总值(GDP)值和对未来的预测。GDP是衡量一个国家经济活动的指标。同一页的另一张表给出了人均GDP,它可以被解释为一个国家劳动力的生产率或他们的富裕程度。我想看看这些值在2015年到2020年之间是如何受到影响的。我也很好奇富裕是否与肥胖水平有关。对于后者,我们可以在这个网页[2]上使用BMI数据。
感谢……阅读HTML表'操作员,我们有表格作为示例集。接下来,我们使用Country属性对GDP、人均GDP和BMI表应用内连接。下面是RapidMiner进程的快照(进程文件也附上了):
提取HTML表过程
我们执行基本的预处理,将数字属性重命名为描述性的,我们替换逗号在应用Guess Types操作符之前,从属性值中提取整数和真正的将数据类型转换为我们的属性,以便我们可以处理它们。最后,我们过滤出六个感兴趣的属性。
一幅图胜过千言万语
RapidMiner Studio的Results视图提供了一个先进的图表模块。这对于可视化我们的数据集非常有用。我们将属性2015_gdp拖到域维度(x轴)上,将属性2015_per_capita和2020_per_capita拖到数值轴上。这些现在出现在左纵轴上。接下来,我们拖动2020_gdp属性作为新的数值轴。这使得它出现在右纵轴上。我们使用国家作为颜色维度,是的,你猜到了,我们使用肥胖作为尺寸维度——因此,肥胖百分比越高,图例越大。
这个多系列的情节让你一目了然。方框显示了2015年至2020年各国GDP的比较情况。三角形和圆圈之间的垂直上升表示2015年至2020年人均收入的增长情况。日本的经济增长在工业化国家中是最高的。假设肥胖水平保持不变,我们看到像美国这样高度富裕的国家的肥胖率最高(33.7%),但日本又提供了一个反例(3.3%)。我们还看到,不太富裕的国家也可能有高肥胖率。基于这些快速数据驱动的见解,我们现在可以考虑其他属性,可能与文化、饮食或工作习惯有关,以了解肥胖的原因。
肥胖的图表
结论
在这篇文章中,你学习了如何使用新的扩展Web表提取可以方便地从类似维基的页面中提取数据表。你也学会了如何原来不同的数据现在可以在RapidMiner中统一,并使用高级图表模块显示为多系列可视化。要尝试一下你自己,去吧从市场下载扩展然后尝试下面附带的过程。玩得开心!
参考文献
[1]https://en.wikipedia.org/wiki/BRIC
[2]https://en.wikipedia.org/wiki/List_of_countries_by_Body_Mass_Index_(体重指数)
答案
埃德温,谢谢,这是了不起的功能!这是我在RapidMiner中期待了很长时间的东西,它将使web挖掘变得更加容易。
在进行一些早期测试时,我注意到操作符的一个问题,即由于重复的属性名,它有时会失败。您是否能够修改代码以在后端自动重命名重复列或空白列以避免此问题?在某些情况下,它似乎工作正常,但在其他情况下则不然。请看这个页面的例子,它无法加载表:https://www.bullionvault.com/audit.do
再次感谢这个美妙的添加到RapidMiner工具包!
Lindon合资企业
乐鱼平台进入来自认证RapidMiner专家的数据科学咨询
嗨Telcontar120,
您使用的是最新版本吗?当前版本为0.1.4。它可以处理重复的属性名。
我想补充一点,目前该操作符仅为类似wiki的页面设计,尽管在这种情况下,它确实从您提供的链接检索表。
欢呼,
艾德
截图:
艾德,好极了!我一定是在使用之前的版本,因为一旦我通过市场更新,我就会发现它可以正常工作。谢谢你的快速回复。布莱恩
Lindon合资企业
乐鱼平台进入来自认证RapidMiner专家的数据科学咨询
你好布莱恩,
不用客气,很高兴知道这有帮助。
欢呼,
艾德
嗨,埃德温,
我在这个美妙的功能中发现了一个问题。
如果html表具有头和只有一行数据,则读取html表操作符无法提取表。
我用的是最新版本。
如果你能修好它,我会很感激的。
提前感谢,
达也
嗨,达也,
感谢您的反馈,但这种忽略1行表的行为是故意的。该操作符使用的分类模型是在大量html表数据上训练的,这里的解释是,当考虑整个语料库时,单个元组表并不使该表具有包含数据的资格—尽管这听起来有点奇怪。这是目前的情况,但我们可能会根据未来的可行性创建例外情况。
谢谢并致以最良好的祝愿。
埃德温
如果只有一行数据,那么在RapidMiner中手动复制该数据可能并不难,只要一个操作符,并且没有比“读取html表”更多的工作!
Lindon合资企业
乐鱼平台进入来自认证RapidMiner专家的数据科学咨询