汇总统计[Summary statistics]:
Summary statistics提供了基于列的统计信息,包括6个统计量:均值、方差、非零统计量个数、总数、最小值、最大值。
  1. import org.apache.spark.api.java.JavaRDD;
  2. import org.apache.spark.api.java.JavaSparkContext;
  3. import org.apache.spark.mllib.linalg.Vector;
  4. import org.apache.spark.mllib.stat.MultivariateStatisticalSummary;
  5. import org.apache.spark.mllib.stat.Statistics;
  6.  
  7. JavaSparkContext jsc = ...
  8.  
  9. JavaRDD<Vector> mat = ... // an RDD of Vectors
  10.  
  11. // Compute column summary statistics.
  12. MultivariateStatisticalSummary summary = Statistics.colStats(mat.rdd());
  13. System.out.println(summary.mean()); // a dense vector containing the mean value for each column
  14. System.out.println(summary.variance()); // column-wise variance
  15. System.out.println(summary.numNonzeros()); // number of nonzeros in each column
关联[ Correlations]:
计算两个数据序列的相关度。相关系数是用以反映变量之间相关关系密切程度的统计指标。相关系数值越接近1或者-1,则表示数据越可进行线性拟合。目前Spark支持两种相关性系数:皮尔逊相关系数(pearson)和斯皮尔曼等级相关系数(spearman)。

  1. import org.apache.spark.api.java.JavaDoubleRDD;
  2. import org.apache.spark.api.java.JavaSparkContext;
  3. import org.apache.spark.mllib.linalg.*;
  4. import org.apache.spark.mllib.stat.Statistics;
  5.  
  6. JavaSparkContext jsc = ...
  7.  
  8. JavaDoubleRDD seriesX = ... // a series
  9. JavaDoubleRDD seriesY = ... // must have the same number of partitions and cardinality as seriesX
  10.  
  11. // compute the correlation using Pearson's method. Enter "spearman" for Spearman's method. If a
  12. // method is not specified, Pearson's method will be used by default.
  13. Double correlation = Statistics.corr(seriesX.srdd(), seriesY.srdd(), "pearson");
  14.  
  15. JavaRDD<Vector> data = ... // note that each Vector is a row and not a column
  16.  
  17. // calculate the correlation matrix using Pearson's method. Use "spearman" for Spearman's method.
  18. // If a method is not specified, Pearson's method will be used by default.
  19. Matrix correlMatrix = Statistics.corr(data.rdd(), "pearson");
分层抽样[ Stratified sampling]:
一个根据Key来抽样的功能,可以为每个key设置其被选中的概率。具体见代码以及注释和其他统计方法不同,sampleByKey 和 sampleByKeyExact方法可以在RDD键值对上被执行。key可以被想象成一个标签和作为实体属性的值。例如,key可以是男女、文件编号,实体属性可以使人口中的年龄、文件中的单词。sampleByKey方法通过随机方式决定某个观测值是否被采样,因此需要提供一个预期采样数量。sampleByKeyExact 方法比使用简单随机抽样的sampleByKey方法需要更多的资源,但是它可以保证采样大小的置信区间为99.99%。

  1. import java.util.Map;
  2.  
  3. import org.apache.spark.api.java.JavaPairRDD;
  4. import org.apache.spark.api.java.JavaSparkContext;
  5.  
  6. JavaSparkContext jsc = ...
  7.  
  8. JavaPairRDD<K, V> data = ... // an RDD of any key value pairs
  9. Map<K, Object> fractions = ... // specify the exact fraction desired from each key
  10.  
  11. // Get an exact sample from each stratum
  12. JavaPairRDD<K, V> approxSample = data.sampleByKey(false, fractions);
  13. JavaPairRDD<K, V> exactSample = data.sampleByKeyExact(false, fractions);
假设检验[ Hypothesis testing]:
Spark目前支持皮尔森卡方检测(Pearson’s chi-squared tests),包括适配度检定和独立性检定。“适配度检定”验证一组观察值的次数分配是否异于理论上的分配。“独立性检定”验证从两个变数抽出的配对观察值组是否互相独立(例如:每次都从A国和B国各抽一个人,看他们的反应是否与国籍无关)。

  1. import org.apache.spark.api.java.JavaRDD;
  2. import org.apache.spark.api.java.JavaSparkContext;
  3. import org.apache.spark.mllib.linalg.*;
  4. import org.apache.spark.mllib.regression.LabeledPoint;
  5. import org.apache.spark.mllib.stat.Statistics;
  6. import org.apache.spark.mllib.stat.test.ChiSqTestResult;
  7.  
  8. JavaSparkContext jsc = ...
  9.  
  10. Vector vec = ... // a vector composed of the frequencies of events
  11.  
  12. // compute the goodness of fit. If a second vector to test against is not supplied as a parameter,
  13. // the test runs against a uniform distribution.
  14. ChiSqTestResult goodnessOfFitTestResult = Statistics.chiSqTest(vec);
  15. // summary of the test including the p-value, degrees of freedom, test statistic, the method used,
  16. // and the null hypothesis.
  17. System.out.println(goodnessOfFitTestResult);
  18.  
  19. Matrix mat = ... // a contingency matrix
  20.  
  21. // conduct Pearson's independence test on the input contingency matrix
  22. ChiSqTestResult independenceTestResult = Statistics.chiSqTest(mat);
  23. // summary of the test including the p-value, degrees of freedom...
  24. System.out.println(independenceTestResult);
  25.  
  26. JavaRDD<LabeledPoint> obs = ... // an RDD of labeled points
  27.  
  28. // The contingency table is constructed from the raw (feature, label) pairs and used to conduct
  29. // the independence test. Returns an array containing the ChiSquaredTestResult for every feature
  30. // against the label.
  31. ChiSqTestResult[] featureTestResults = Statistics.chiSqTest(obs.rdd());
  32. int i = 1;
  33. for (ChiSqTestResult result : featureTestResults) {
  34. System.out.println("Column " + i + ":");
  35. System.out.println(result); // summary of the test
  36. i++;
  37. }
  1. import java.util.Arrays;
  2.  
  3. import org.apache.spark.api.java.JavaDoubleRDD;
  4. import org.apache.spark.api.java.JavaSparkContext;
  5.  
  6. import org.apache.spark.mllib.stat.Statistics;
  7. import org.apache.spark.mllib.stat.test.KolmogorovSmirnovTestResult;
  8.  
  9. JavaSparkContext jsc = ...JavaDoubleRDD data = jsc.parallelizeDoubles(Arrays.asList(0.2, 1.0, ...));
  10. KolmogorovSmirnovTestResult testResult = Statistics.kolmogorovSmirnovTest(data, "norm", 0.0, 1.0);
  11. // summary of the test including the p-value, test statistic,
  12. // and null hypothesis
  13. // if our p-value indicates significance, we can reject the null hypothesis
  14. System.out.println(testResult);
 
显著性检验[Streaming Significance Testing]:
显著性检验就是事先对总体形式做出一个假设,然后用样本信息来判断这个假设(原假设)是否合理,即判断真实情况与原假设是否显著地有差异。或者说,显著性检验要判断样本与我们对总体所做的假设之间的差异是否纯属偶然,还是由我们所做的假设与总体真实情况不一致所引起的。spark.mllib 实现了一个在线测试用以支持类似A/B测试这样的用例。
 
随机数据生成[ Random data generation]:
随机数据对于随机算法、原型设计和检验十分有用。Random data generation用于随机数的生成。Random RDDs包下现支持正态分布、泊松分布和均匀分布三种分布方式。 
RandomRDDs提供随机double RDDS或vector RDDS。下面的例子中生成一个随机double RDD,其值是标准正态分布N(0,1),然后将其映射到N(1,4)。

  1. import org.apache.spark.SparkContext;
  2. import org.apache.spark.api.JavaDoubleRDD;
  3. import static org.apache.spark.mllib.random.RandomRDDs.*;
  4.  
  5. JavaSparkContext jsc = ...
  6.  
  7. // Generate a random double RDD that contains 1 million i.i.d. values drawn from the
  8. // standard normal distribution `N(0, 1)`, evenly distributed in 10 partitions.
  9. JavaDoubleRDD u = normalJavaRDD(jsc, 1000000L, 10);
  10. // Apply a transform to get a random double RDD following `N(1, 4)`.
  11. JavaDoubleRDD v = u.map(
  12. new Function<Double, Double>() {
  13. public Double call(Double x) {
  14. return 1.0 + 2.0 * x;
  15. }
  16. });
 
核密度估算[ Kernel density estimation]:
Spark ML 提供了一个工具类 KernelDensity 用于核密度估算,核密度估算的意思是根据已知的样本估计未知的密度,属於非参数检验方法之一。核密度估计的原理是。观察某一事物的已知分布,如果某一个数在观察中出现了,我们可以认为这个数的概率密度很大,和这个数比较近的数的概率密度也会比较大,而那些离这个数远的数的概率密度会比较小。并最终根据所有的数拟合出未知的全貌

  1. import org.apache.spark.mllib.stat.KernelDensity;
  2. import org.apache.spark.rdd.RDD;
  3.  
  4. RDD<Double> data = ... // an RDD of sample data
  5.  
  6. // Construct the density estimator with the sample data and a standard deviation for the Gaussian
  7. // kernels
  8. KernelDensity kd = new KernelDensity()
  9. .setSample(data)
  10. .setBandwidth(3.0);
  11.  
  12. // Find density estimates for the given values
  13. double[] densities = kd.estimate(new double[] {-1.0, 2.0, 5.0});

二、MLlib统计指标之关联/抽样/汇总的更多相关文章

  1. mybatis实战教程二:多对一关联查询(一对多)

    多对一关联查询 一.数据库关系.article表和user表示多对一的关系 CREATE TABLE `article` ( `id` ) NOT NULL AUTO_INCREMENT, `user ...

  2. QC学习二:QC使用中问题点汇总

    QC 使用中问题点汇总,包括以下方面: 1.不兼容IE7,IE8的问题(服务器端设置) 2.无法在Win 7下正常下载页面(客户端设置) 3.在QC中填写中文内容后无法正常提交到数据库(客户端设置) ...

  3. Jmeter(二十五)_Xpath关联

    在Jmeter中,除了正则表达式可以用作关联,还有一种方式也可以做关联,那就是 XPath Extractor.它是利用xpath提取出关键信息,传递变量. 具体用法 添加一个后置处理器-XPath ...

  4. Lua 学习之基础篇二<Lua 数据类型以及函数库 汇总>

    引言 前面讲了运算符,这里主要对Lua的数据处理相关的数据类型和函数库进行总结归纳,后面会再接着单独分开讲解具体使用. 首先因为Lua 是动态类型语言,变量不要类型定义,只需要为变量赋值. 值可以存储 ...

  5. Android IOS WebRTC 音视频开发总结(二五)-- webrtc优秀资源汇总

    本文主要整理一些webrtc相关资料供学习(会持续更新),转载请说明出处,文章来自博客园RTC.Blacker,欢迎关注微信公众号:blackerteam ---------------------- ...

  6. iOS二十种超酷时尚艺术滤镜汇总【附源码】

    本文总结了20种ios滤镜都是基于GPUImage的,有3种滤镜是GPUImage库中包含的,还有17种是Instagram中的经典滤镜,集成在一个项目中.使用GPUImage可以非常容易创建我们自己 ...

  7. MyBatis学习(二)---数据表之间关联

    想要了解MyBatis基础的朋友可以通过传送门: MyBatis学习(一)---配置文件,Mapper接口和动态SQL http://www.cnblogs.com/ghq120/p/8322302. ...

  8. ThinkPHP 关联模型(二十)

    原文:ThinkPHP 关联模型(二十) ThinkPHP关联模型 两表关联查询:Message 和  user  关联条件uid(参考手册:模型->关联模型) 步骤: 一:创建Message表 ...

  9. SQLSERVER 使用 ROLLUP 汇总数据,实现分组统计,合计,小计

    表结构: CREATE TABLE [dbo].[Students]( ,) NOT NULL, ) NULL, [Sex] [int] NOT NULL, ) NULL, ) NULL, , ) N ...

随机推荐

  1. 排序算法源码(JAVA)

      public class Test { public static void main(String[] args){ Sort sort = new Sort(); sort.sortTest( ...

  2. openvpn server部署笔记

    openvpn server 部署 1.准备 安装依赖 yum -y install gcc gcc-c++ openssl-devel openssl pam-devel 2.安装 lzo cd / ...

  3. Universal-Image-Loader 基本使用

    简介 https://github.com/nostra13/Android-Universal-Image-Loader 项目的结构:每一个图片的加载和显示任务都运行在独立的线程中,除非这个图片缓存 ...

  4. CSS优先级总结(转载)

    样式的优先级 多重样式(Multiple Styles):如果外部样式.内部样式和内联样式同时应用于同一个元素,就是使多重样式的情况. 一般情况下,优先级如下: (外部样式)External styl ...

  5. js接收复选框的值

    <td><input type="checkbox" class="title" name="title" value=& ...

  6. .net中Web.config文件的基本原理及相关设置

    11.7  使用web.config配置文件 Web配置文件web.config是Web 应用程序的数据设定文件,它是一份 XML 文件,内含 Web 应用程序相关设定的 XML 标记,可以用来简化  ...

  7. dp、sp 转换为 px 的工具类

    public class DisplayUtil { /** * 将px值转换为dip或dp值,保证尺寸大小不变 * * @param pxValue (DisplayMetrics类中属性densi ...

  8. IO流+数据库课后习题

    1,读取 试题文件 然后做题算分 File file1=new File("D:\\file","test.txt"); try{ FileReader in1 ...

  9. html5之web worker

    Web Worker   在本文中 与 Web Worker 进行双向通信 WindowTimers 在 IE10 Platform Preview 4 中对 Web Worker 的更新 API 参 ...

  10. 细说PHP优化那些事

    我们在用PHP编程的时候,总是想要使自己的程序占用资源最小,运行速度更快,代码量更少.往往我们在追求这些的同时却失去了很多东西.下面我想讲讲我对PHP优化的理解.优化的目的是花最少的代价换来最快的运行 ...