- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
2021/11/1925|
特征工程一览SparkMLlib特征处理函数分类
在上一讲,我们着重讲解了其中的前3个环节,也就是预处理、特征选择和归一化。按照
之前的课程安排,今天这一讲,咱们继续来说说剩下的离散化、Embedding与向量计算。
特征工程是机器学习的重中之重,只要你耐心学下去,必然会不虚此行。这一讲的最后,
我还会对应用了6种不同特征工程的模型性能加以对比,帮你深入理解特征工程中不同环
节的作用与效果。
特征工程
特征工程进度打卡
2/15
2021/11/1925|
在上一讲,我们打卡到了“第三关”:归一化。因此,接下来,我们先从“第四关”:离
散化说起。
离散化:Bucketizer
与归一化一样,离散化也是用来处理数值型字段的。离散化可以把原本连续的数值打散,
从而降低原始数据的多样性(Cardinality)。举例来说,“BedroomAbvGr”字段的含义
是居室数量,在train.csv这份数据样本中,“BedroomAbvGr”包含从1到8的连续整
数。
现在,我们根据居室数量,把房屋粗略地划分为小户型、中户型和大户型。
BedroomAbvGr离散化
不难发现,“BedroomAbvGr”离散化,数据多样性由原来的8降低为现在的3。那
么问题来了,原始的连续数据好好的,为什么要对它做离散化呢?离散化的动机,主要在
于提升特征数据的区分度与内聚性,从而与预测标的产生更强的关联。
就拿“BedroomAbvGr”来说,我们认为一居室和两居室对于房价的影响差别不大,同
样,三居室和四居室之间对于房价的影响,也是微乎其微。
但是,小户型与中户型之间,以及中户型与大户型之间,房价往往会出现跃迁的现象。换
句话说,相比居室数量,户型的差异对于房价的影响更大、区分度更高。因此,
把“BedroomAbvGr”做离散化处理,目的在于提升它与预测标的之间的关联性。
3/15
2021/11/1925|
那么,在SparkMLlib的框架下,离散化具体该怎么做呢?与其他环节一样,Spark
MLlib提供了多个离散化函数,比如Binarizer、Bucketizer和QuantileDiscretizer。我
们不妨以Bucketizer为代表,结合居室数量“BedroomAbvGr”这个字段,来演示离散
化的具体用法。老规矩,还是先上代码为敬。
代码
1//原始字段
2valfieldBedroom:String=BedroomAbvGrInt
3//包含离散化数据的目标字段
4valfieldBedroomDiscret:String=BedroomDiscrete
5//指定离散区间,分别是[负无穷,2]、[3,4]和[5,正无穷]
6valsplits:Array[Doubl]=Array(Doubl.NegativeInfinity,3,5,Doubl.Positi
7
8importorg.apache.spark.ml.feature.Bucketizer
9
10//定义并初始化Bucketizer
11valbucketi
文档评论(0)