《Scala机器学习》一一1.2 去除分类字段的重复值

1.2 去除分类字段的重复值
请准备好数据集和电脑。为了方便起见,本书已经提供了一些关于点击流(clickstream)数据的样本,它们是经过预处理过的,在https://github.com/alexvk/ml-in-scala.git上可以找到这些数据。chapter01/data/clickstream文件夹中包含了时间戳、会话编号(session ID),以及在调用时的一些额外事件信息(比如URL、类别信息等)。首先要对数据集的各个列做一些变换,以此得到数据的分布情况。
图1-1给出了在命令行中执行gzcat chapter01/data/clickstream/clickstream_sample.tsv.gz | less-U所得到的结果。列之间用tab键(^I)隔开。读者可能会注意到,许多值都空缺了,许多现实应用中的大数据集都是这样。数据的第一列是时间戳,文件包含了复杂的数据(比如数组(array)、结构(struct),以及映射(map)),这也是大数据集的另一个特征。

图1-1 使用Unix的less-U命令后,clickstream文件得到的输出
Unix提供了一些工具来分析数据。less、cut、sort和uniq大概是文本处理中最常用的命令行工具。awk、sed、perl和tr可以做更复杂的转换和提取操作。
幸运的是,Scala允许在REPL中透明地使用命令行工具来做转换:

在Scala REPL环境中,可使用scala.sys.process包来调用熟悉的Unix命令。从输出结果可以立即看到这个网上商店的顾客最关注男鞋和跑步鞋,而且大多数访问者使用的推荐码(referral code)为KW_0611081618。
读者可能会奇怪:究竟什么时候才开始使用复杂的Scala类型和算法。其实许多高度优化的工具在Scala之前就有了,而且在数据挖掘分析中会更高效。在最初的阶段,最大的瓶颈通常只是磁盘I/O和缓慢的交互性。随后才会去研究更多的迭代算法,它们通常都是内存密集型算法。值得注意的是:在现代多核计算机中,隐式地并行执行Unix的管道操作,就像在Spark中并行执行一样(后面的章节会介绍)。
对输入数据使用隐式的或显式的压缩,也可以减少I/O时间。 这对具有重复值和稀疏内容的(大多数)半结构化数据集更有效。也可在多核计算机上隐式地并行执行解压操作,这可以消除计算瓶颈,但在硬件上却不能并行执行压缩操作(比如,在SSD上就不能并行压缩文件)。推荐使用文件夹而不是文件作为数据集的规范(paradigm),这样插入操作就可简化为把数据文件放在文件夹中。这就是Hadoop(比如Hive和Impala)组织数据的原理。

时间: 2024-09-22 10:49:28

《Scala机器学习》一一1.2 去除分类字段的重复值的相关文章

mysql SELECT语句去除某个字段的重复信息_Mysql

SELECT语句,去除某个字段的重复信息,例如: 表名:table id uid username message dateline 1 6 a 111 1284240714(时间戳) 2 6 a 222 1268840565 3 8 b 444 1266724527 4 9 c 555 1266723391 执行语句(去除username字段重复信息并按时间排序): SELECT * FROM table a INNER JOIN ( SELECT max( dateline ) AS dat

java-Java修改数据库表时某字段出现重复值不能修改该记录怎么继续修改下一条记录

问题描述 Java修改数据库表时某字段出现重复值不能修改该记录怎么继续修改下一条记录 Java修改数据库表的company_name字段,此字段唯一,company_name这个字段值:前面有问号的去掉以后如果和已有的company_name重复了,就不更新或者删除,前面有问号的去掉以后如果和已有的company_name没重复就去掉问号.如:?北京金瓯鼎建筑装饰工程有限公司莱州分公司和北京金瓯鼎建筑装饰工程有限公司莱州分公司两个公司,把前面有问号的去掉问号,但是有重复的,遇到有重复的不用修改此

SQL查找列(字段)重复值及操作--整理

方法一: 1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断select * from peoplewhere peopleId in (select   peopleId from   people group by   peopleId having count(peopleId) > 1)2.删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录delete from people where peopleId in

【SQL】查询数据库中某个字段有重复值出现的信息

select name,mobile from [GeneShop].[dbo].[xx_member] where mobile in ( SELECT mobile FROM [GeneShop].[dbo].[xx_member] group by mobile having COUNT (mobile) <> 1) order by mobile; 查询结果展示:  

《Scala机器学习》一一导读

前 言 这是一本关于机器学习的书,它以Scala为重点,介绍了函数式编程方法以及如何在Spark上处理大数据.九个月前,当我受邀写作本书时,我的第一反应是:Scala.大数据.机器学习,每一个主题我都曾彻底调研过,也参加了很多的讨论,结合任何两个话题来写都具有挑战性,更不用说在一本书中结合这三个主题.这个挑战激发了我的兴趣,于是就有了这本书.并不是每一章的内容都像我所希望的那样圆满,但技术每天都在快速发展.我有一份具体的工作,写作只是表达我想法的一种方式. 下面先介绍机器学习.机器学习经历了翻天

《Scala机器学习》一一1.5 使用Scala和Spark的Notebook工作

1.5 使用Scala和Spark的Notebook工作通常,这五种数字汇总方式不足以对数据形成初步认识.描述性统计(descriptive statistics)的术语非常通用,并且可以采用非常复杂的方法来描述数据.分位数和帕雷托图(Pareto chart)都是描述性统计的例子,当分析一个以上的属性时,相关性也是.在大多数情况下都能查阅到这些数据汇总的方法,但通过具体的计算来理解这些方法也很重要.Scala或者Spark Notebook(https://github.com/Bridgew

《Scala机器学习》一一1.1 Scala入门

1.1 Scala入门 如果已经安装了Scala,可以跳过本节.可以从http://www.scala-lang.org/download/下载最新版本的Scala,本书的Scala版本为2.11.7,操作系统为Mac OS X El Capitan 10.11.5.读者可以选择自己喜欢的版本,不过可能会遇到与其他包(如Spark)的兼容性问题.开源软件的一个通病就是所采用的技术可能会滞后几个版本. 大多数情况需要确保所下载的版本和推荐的版本完全一致.因为不同版本间的差异会导致隐蔽的错误,由此带

如何去除my sql 数据表里一个字段的重复数据?中间用竖线分割开了,下附截图。

问题描述 如何去除my sql 数据表里一个字段的重复数据?中间用竖线分割开了,下附截图. 解决方案 1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) 2.删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowi

access数据库-Access 数据库,SQL(多字段关联重复数据去除)

问题描述 Access 数据库,SQL(多字段关联重复数据去除) --这个表,我这边将这些字段(6个)重复的数据清除,因为之前没做主键.唯一等约束,造成数据重复.混乱! select distinct FPeriod,facctid,fclsid,fobjid,fcyid,fbase from glpnl_20140423bak --一共8个字段,我要根据期中六个做联合主键,所以要把这些垃圾数据清除----求大神出现! 解决方案 新加一张表,存储查重后的结果,这样不可以吗