机器学习(三)基本的统计工具

本文介绍了Spark MLlib库中的基本统计工具,包括概括统计、相关性、分层抽样、假设检验和随机数生成。通过实例展示了如何使用Pearson和Spearman相关系数衡量变量间的相关性,以及如何进行分层抽样、适合度和独立性检验。文章还提到了随机数生成和核密度估计在数据分析中的应用。
摘要由CSDN通过智能技术生成

目录
同步更新在个人网站:http://www.wangpengcufe.com/machinelearning/ml-ml3/

给定一个数据集,数据分析师一般会先观察一下数据集的基本情况,称之为汇总统计或者概要性统计。一般的概要性统计用于概括一系列观测值,包括位置或集中趋势(比如算术平均值、中位数、众数和四分位均值),展型(比如四分位间距、绝对偏差和绝对距离偏差、各阶矩等),统计离差,分布的形状,依赖性等。除此之外,spark.mllib库也提供了一些其他的基本的统计分析工具,包括相关性、分层抽样、假设检验,随机数生成等。

一、概括统计 summary statistics

我们通过统计学中提供的函数colStats为RDD [Vector]提供列摘要统计信息。我们可以获得每一列的最大值,最小值,均值、方差、总数。

我们用UCI 提供的莺尾花的数据来举例。 数据下载地址:http://archive.ics.uci.edu/ml/machine-learning-databases/iris/。我们将鸢尾花的四个属性,即萼片长度,萼片宽度,花瓣长度和花瓣宽度存储在observations中,类型为RDD[Vector]。

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.mllib.linalg.Vector;
import org.apache.spark.mllib.linalg.Vectors;
import  org.apache.spark.mllib.stat.MultivariateStatisticalSummary;
import org.apache.spark.mllib.stat.Statistics; 

SparkConf conf = new  SparkConf().setAppName("colStatsTest").setMaster("local");
JavaSparkContext  sc = new  JavaSparkContext(conf);
JavaRDD<String> source =  sc.textFile("data/iris.data"); // 读取数据
JavaRDD<Vector> observations = source.map(line  -> {     
    String[] parts = line.split(",");     
    return  Vectors.dense(Double.valueOf(parts[0]),  Double.valueOf(parts[1]),               
    Double.valueOf(parts[2]),  Double.valueOf(parts[3]));//将RDD<String>转化为RDD<Vector>
});

MultivariateStatisticalSummary summary =  Statistics.colStats(observations.rdd());   //计算列摘要统计信息。
System.out.println(summary.count()); //总数(long)
System.out.println(summary.mean());  //  包含每列平均值的密集向量(vector)
System.out.println(summary.variance());   // 列方差(vector)
System.out.println(summary.max());   // 最大值(vector)
System.out.println(summary.min());   // 最小值(vector)
System.out.println(summary.normL1());   //每列的L1范数(vector)
System.out.println(summary.normL2());   //每列的L2范数(vector)
System.out.println(summary.numNonzeros());  //  每列中的非零数(vector)

二、相关性

计算两个数据系列之间的相关性是统计学中的常见操作。 在spark.mllib中,我们提供了计算多个系列之间成对相关性的灵活性。 支持的相关方法目前是Pearson和Spearman的相关性。

相关系数是用以反映变量之间相关关系密切程度的统计指标。简单的来说就是相关系数绝对值越大(值越接近1或者-1),当取值为0表示不相关,取值为(0~-1]表示负相关,取值为(0, 1]表示正相关。

2.1、Pearson相关系数

Pearson相关系数表达的是两个数值变量的线性相关性, 它一般适用于正态分布。其取值范围是[-1, 1], 当取值为0表示不相关,取值为[-1~0)表示负相关,取值为(0, 1]表示正相关。
Pearson相关系数

2.2、Spearman相关系数

Spearman相关系数也用来表达两个变量的相关性,但是它没有Pearson相关系数对变量的分布要求那么严格,另外Spearman相关系数可以更好地用于测度变量的排序关系。其计算公式为:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值