StringIndexer 的使用

StringIndexer对String按频次进行编号

idcategorycategoryIndex
0a0.0
1b2.0
2c1.0
3a0.0
4a0.0
5c1.0

如果转换模型(关系)是基于上面数据得到的 (a,b,c)->(0.0,2.0,1.0),如果用此模型转换category多于(a,b,c)的数据,比如多了d,e,就会遇到麻烦:

idcategorycategoryIndex
0a0.0
1b2.0
2d
3e
4a0.0
5c1.0

Spark提供了两种处理方式:

StringIndexerModel labelIndexerModel=new StringIndexer().
               setInputCol("label")
               .setOutputCol("indexedLabel")
               //.setHandleInvalid("error")
               .setHandleInvalid("skip")
               .fit(rawData);

(1)默认设置,也就是.setHandleInvalid(“error”):会抛出异常
org.apache.spark.SparkException: Unseen label: d,e
(2).setHandleInvalid(“skip”) 忽略这些label所在行的数据,正常运行,将输出如下结果:

idcategorycategoryIndex
0a0.0
1b2.0
4a0.0
5c1.0
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值