RDD、矩阵基础——2. RDD的统计操作

Statistics统计操作

 

首先读取数据,原数据:

//以空格分割,读取数据

val data_path = "file:/ipynotebook/pic_data.txt"

val data = sc.textFile(data_path).map(_.split(" "))

//里面的数据转成double类型

val data0 = data.map(f => f.map(f => f.toDouble))

 

//每行数组转换成Vector类型(向量)

import org.apache.spark.mllib.linalg.Vectors

val data1 =data0.map(f => Vectors.dense(f))

 

 

 

Mlib Statistics 是基础统计模块,针对RDD格式数据,

包括汇总统计、相关系数、分层抽样、假设检验、随机数据生成等

 

列统计汇总:

Statistics的colStats函数是列的统计方法

//计算每列的最大值、最小值、平均值、方差、L1范数、L2范数

import org.apache.spark.mllib.stat.Statistics

val stat1 = Statistics.colStats(data1)

stat1.max

stat1.min

stat1.mean

stat1.variance

stat1.normL1

stat1.normL2

 

 

相关系数:

//计算pearson、spearman相关系数

val corr1 = Statistics.corr(data1, "pearson")

val corr2 = Statistics.corr(data1, "spearman")

两组数据的pearson相关系数:

val x1 =sc.parallelize(Array(1.0, 2.0, 3.0, 4.0))

val y1 =sc.parallelize(Array(5.0, 6.0, 6.0, 6.0))

val corr3 = Statistics.corr(x1, y1, "pearson")

 

 

假设检验:

随机数生成:

 

 

 

MLUtils 用于加载、保存、处理数据

import org.apache.spark.mllib.util.MLUtils

 

 

1. 加载:

loadLibSVMFile

实例:

import org.apache.spark.mllib.util.MLUtils

val data = MLUtils.loadLibSVMFile(sc, "file:///ipynotebook/iris_libsvm.txt")

加载LIBSVM格式的数据返回RDD[RDD[LabeledPoint]格式格式的数据

LIBSVM格式:

{{{label: index1:value1 index2:value2 ... }}}

label代表标签,index1代表特征位置索引,value1代表特征

LabeledPoint格式:

(label: Double, features: Vector)

label代表标签,features代表特征向量

 

 

2. 保存:

saveAsLibSVMFile

将LabeledPoint格式数据以LIBSVM格式保存到文件

MLUtils.saveAsLibSVMFile(LabeledPoint格式RDD, "路径")

 

3. 添加偏置项:

appendBias

 

4. 计算距离:

fastSquaredDistance

快速计算向量距离,主要用于KMeans聚类算法中。

返回向量之间的平方欧氏距离

比如有两个点(a1,b1),(a2,b2),那么欧式距离平方为(a1-a2)^2 + (b1-b2)^2

 

5. 生成样本:

(详见SPARK MLLIB机器学习)

(1)生成KMeans的数据

generateKMeansRDD

主要用于生成KMeans的训练样本数据,格式为RDD[Array[Double]]

generateKMeansRDD(sc:SparkContext, numPoints:Int, k:Int, d:Int, r:Double, numpartions:Int = 2):RDD[Array[Double]]

sc:SparkContext

numPoints:聚类数

d:数据维度

r:初始中心分布的缩放因子

numPartitions:RDD分区数

实例:

随机生成40个样本,数据是三维的,聚类中心数是5

import org.apache.spark.mllib.util.KMeansDataGenerator

val KMeansRDD = KMeansDataGenerator.generateKMeansRDD(sc, 40, 5, 3, 1.0, 2)

也可按照MLlib分装方法进行调用,格式为:

KMeansGenerator <master> <output_dir> <num_point> <k> <d> <r> [<num_partitions>]

 

(2)生成线性回归的数据

generateLinearRDD

主要用于生成线性回归的训练样本数据,格式为RDD[LabeledPoint]

generateLinearRDD(sc:SparkContext, nexamples:Int, nfeatures:Int, eps:Double, nparts:Int = 2, intercept:Double = 0.0):RDD[LabeledPoint]

实例:

随机生成40个样本,数据是三维的

import org.apache.spark.mllib.util.LinearDataGenerator

val LinearRDD = LinearDataGenerator.generateLinearRDD(sc, 40, 3, 1.0, 2, 0.0)

 

(3)生成逻辑回归的数据

generateLogisticRDD

主要用于生成逻辑回归的训练样本数据,格式为RDD[LabeledPoint]

 

(4)其他数据生成

SVM、MFD样本数据

(详见SPARK MLLIB机器学习)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值