基本统计量
数理统计中,基本统计量包括数据的平均值、方差,这是一组求数据统计量的基本内容。在MLlib中,统计量的计算主要用到Statistics类库,如下表:
类型名称 | 释义 |
colStats | 以列为基础计算统计量的基本数据 |
chiSqTest | 对数据集内的数据进行皮尔逊距离计算,根据参量的不同,返回值格式有差异 |
corr | 对两个数据集进行相关系数计算,根据参量的不同,返回值格式有差异 |
统计量的基本数据
colstats是Statistics类计算基本统计量的方法,这里需要注意的是,其工作和计算是以列为基础进行计算,调用不同的方法获得不同的统计量值,其方法如下表所示:
方法名称 | 释义 |
count | 行内数据个数 |
Max | 最大数值单位 |
Mean | 最小数值单位 |
normL1 | 欧几里德距离 |
normL2 | 曼哈顿距离 |
numNonzeros | 不包含0值的个数 |
variance | 标准差 |
数据的均值和标准差
这里需要求数据的均值和标准差,在自己的磁盘下建立一个文件,加入下面一组数据
1
2
3
4
5
6
7
8
代码部分参考代码实战部分
距离计算
除了一些基本统计量的计算,colStats方法中还包括两种距离的计算,分别是normL1和normL2,代表欧几里得距离和曼哈顿距离。这两种距离主要用以表达数据集内部长度的常用算法。具体见代码
相关系数计算
相关系数里面包括皮尔逊系数和斯皮尔曼相关系数,在代码时间中我分别用在了两组数据的相关系数计算和单个数据集之间相关系数的计算,具体使用参考代码部分
分层抽样
分层抽样是一种数据提取算法,先将总体的单位按照某种特征分为若干次级总体(层),然后再从每一层内进行单纯的随机取样,组成一个样本的统计学计算方法。这种方法以前常常用于数据量比较大,计算处理非常不方便的情况。
一般抽样时,将总体分成互不交叉的层,按照一定的比例,从各层次独立的抽取一定数量的个体,将各层次取出的个体合在一起作为样本,这种抽样方法是一种分层抽样。
在MLlib中,使用Map作为分层抽样的数据标记,一般情况下,Map的构成是[key,value]格式,key作为数据组,而value作为数据标签进行处理。下面建立一个数据集,如下:
aa
bb
cc
aaa
bbb
ccc
对数据集的分层抽样详细请参考代码部分
假设检验
常用的假设检验方法是卡方检验。卡方检验是一种常用的假设检验方法,能够较好的对数据集之间的拟合度、相关性和独立性进行验证。MLlib中规定常用的卡方检验使用的数据集一般为向量和矩阵。
假设检验的常用术语介绍
自由度 | 总体参数估计量中变量值独立自由变化的数目 |
统计量 | 不同方法下的统计量 |
P值 | 显著性差异指标 |
方法 | 卡方检验使用方法 |
详细操作请看代码部分。
随机数
RandomRDDS类是随机数生成类,详细看代码部分
代码
package mllib import org.apache.log4j.{Level, Logger} import org.apache.spark.mllib.linalg.{Matrices, Vectors} import org.apache.spark.mllib.random.RandomRDDs import org.apache.spark.mllib.stat.Statistics import org.apache.spark.{SparkContext, SparkConf} /** * Created by 汪本成 on 2016/8/4. */ object MLlibTJ { //屏蔽不必要的日志显示在终端上 Logger.getLogger("org.apache.spark").setLevel(Level.WARN) Logger.getLogger("org.apache.eclipse.jetty.server").setLevel(Level.OFF) //程序入口 val conf = new SparkConf().setAppName("MLlibTJ").setMaster("local[1]") val sc = new SparkContext(conf) val SUMMARYFILE_PATH = "G://c.txt" val CORRECTFILE_X_PATH = "G://x.txt" val CORRECTFILE_Y_PATH = "G://x.txt" val CORRECTFILE_SINGLE_PATH = "G://d.txt" val STRATIFIEDFILE_PATH = "G://e.txt" def main(args: Array[String]) { use_Summary1(SUMMARYFILE_PATH) // [4.5] // [6.0] use_Summary2(SUMMARYFILE_PATH) // [36.0] // [14.2828568570857] |