spark mllib 归一化

这里写图片描述

 val testdata=sql("select * from test").map{ line =>
    line.toSeq.map {_.toString}.toArray
  }.map{  line =>(line(0),line(1),Vectors.dense(line.drop(1).drop(1).map(_.toDouble)))}.toDF("id","name","features")

StandardScaler

  val scaler1 = new StandardScaler().setInputCol("features").setOutputCol("scaledFeatures").setWithMean(true).setWithStd(true).fit(testdata)
  val scaledData = scaler1.transform(testdata)

  val featuresdatatran = scaledData.map{row=>(row.getAs[String]("id"),row.getAs[Vector]("scaledFeatures"))}

  featuresdatatran.collect()
#(1001,[-1.0,-1.0]), 
#(1002,[0.0,0.0]), 
#(1003,[1.0,1.0])

MinMaxScaler

val scaler = new MinMaxScaler().setInputCol("features").setOutputCol("scaledFeatures")

  val scalerModel = scaler.fit(testdata)
  // rescale each feature to range [min, max].
  val scaledData = scalerModel.transform(testdata)
  //  scaledData.printSchema()
  // val featuresdata = scaledData.select($"scaledFeatures")
  val featuresdatatran = scaledData.map{row=>(row.getAs[String]("id"),row.getAs[Vector]("scaledFeatures"))}

featuresdatatran.collect()
#(1001,[0.0,0.0]), 
#(1002,[0.5,0.5]), 
#(1003,[1.0,1.0])

Normalizer

  val testdata=sql("select * from test").map{ line =>
    line.toSeq.map {_.toString}.toArray
  }.map{  line =>(line(0),line(1),Vectors.dense(line.drop(1).drop(1).map(_.toDouble)))}
val featuresdatatran= new Normalizer().transform(testdata.map(_._3))

featuresdatatran.collect()
#(1001,[0.9805806756909202,0.19611613513818404]), 
#(1002,[0.9889363528682975,0.14834045293024462]), 
#(1003,[0.9912279006826347,0.13216372009101796])
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值