Saturday, November 22, 2014

Spark 1.1.0 Basic Statistics(上) | 程序员的自我修养 | 关注Java、大数据、机器学习


Spark 1.1.0 Basic Statistics(上) | 程序员的自我修养 | 关注Java、大数据、机器学习

Summary statistics主要提供基于列的统计信息,包括6个统计量:均值、方差、非零统计量个数、总数、最小值、最大值。
SparkConf sparkConf = new SparkConf().setAppName("Statistics").setMaster("local[2]");
    JavaSparkContext sc = new JavaSparkContext(sparkConf);
    JavaRDD<String> data = sc.textFile("/home/yurnom/data/statistics.txt");
    JavaRDD<Vector> parsedData = data.map(s -> {
        double[] values = Arrays.asList(SPACE.split(s))
              .stream()
              .mapToDouble(Double::parseDouble)
              .toArray();
        return Vectors.dense(values);
    });
 
    MultivariateStatisticalSummary summary = Statistics.colStats(parsedData.rdd());
    System.out.println("均值:"+summary.mean());
    System.out.println("方差:"+summary.variance());
    System.out.println("非零统计量个数:"+summary.numNonzeros());
    System.out.println("总数:"+summary.count());
    System.out.println("最大值:"+summary.max());

    System.out.println("最小值:"+summary.min());
运行结果的含义对照测试数据来看是一目了然的,值得一提的是方差的计算方式为:

s2=ni=1(xix¯)2n1
Correlations,相关度量,目前Spark支持两种相关性系数:皮尔逊相关系数(pearson)斯皮尔曼等级相关系数(spearman)。相关系数是用以反映变量之间相关关系密切程度的统计指标。简单的来说就是相关系数绝对值越大(值越接近1或者-1)则表示数据越可进行线性拟合。如下图所示:
pearson


一个根据Key来抽样的功能,可以为每个key设置其被选中的概率。具体见代码以及注释。

Read full article from Spark 1.1.0 Basic Statistics(上) | 程序员的自我修养 | 关注Java、大数据、机器学习

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.