Spark MLlib特征处理:MinMax最大最小值区间缩放---原理及实战

原理

MLlib中特征值最大最小区间缩放:

参数说明:

E_{max}:特征实际最大值

E_{min}: 特征实际最小值

ei :特征值

max:MLlib 默认最大值1.0

min: MLlib 默认最小值0.0


1)当 Emax=Emin

Rescaled(ei)=0.5(max+min)

=0.5(1.0+0.0=0.5


2)当 EmaxEmin

Rescaled(ei)=eiEminEmaxEmin(maxmin)+min

=eiEminEmaxEmin

实战

import org.apache.spark.ml.feature.MinMaxScaler
import org.apache.spark.sql.SQLContext
import org.apache.spark.{SparkContext, SparkConf}

object MinMaxExample {
  def main(args: Array[String]) {
    val conf = new SparkConf().setAppName("MinMaxScalerExample").setMaster("local[8]")
    val sc = new SparkContext(conf)
    val sqlContext = new SQLContext(sc)

    // 读取libsvm格式的数据
    // libsvm数据格式:
    // 标签  索引位置:值  索引位置:值 ...
    // 0 2:51 3:253 5:253
    // 1 2:124 3:253 4:255
    // 1 2:145 3:253 5:211
    // 每条数据5的特征,特征索引从0-4
    // 方便理解:每条数据表示成DenseVector格式:
    // 0 1:0 2:51  3:253 4:0    5:253
    // 1 1:0 2:124 3:253 4:255  5:0
    // 1 1:0 2:145 3:253 4:0    5:211

    val dataFrame = sqlContext.read.format("libsvm").load("data/libsvm.txt")

    val scaler = new MinMaxScaler().setInputCol("features").setOutputCol("scaledFeatures")
    // fit  每一特征最大最小值
    // max:Vector(0,145,253,255,253)
    // min: Vector(0,51,253,0,0)
    val scalerModel = scaler.fit(dataFrame)

    // transform  最大最小区间转换
    // 1) 如果该特征值max = min  ==> 0.5
    // 2) 如果该特征值max != min ==> (values-min)/(max-min)
    // 3) 返回DenseVector
    val scaledData = scalerModel.transform(dataFrame)
    scaledData.foreach(println)
    sc.stop()
    // 输出
    // [0.0,(5,[1,2,4],[51.0,253.0,253.0]),[0.5,0.0,0.5,0.0,1.0]]
    // [1.0,(5,[1,2,4],[145.0,253.0,211.0]),[0.5,1.0,0.5,0.0,0.83399209486166]]
    // [1.0,(5,[1,2,3],[124.0,253.0,255.0]),[0.5,0.776595744680851,0.5,1.0,0.0]]

  }
}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值