《Spark机器学习进阶实战》——2.3.4 假设检验

举报
华章计算机 发表于 2019/05/31 01:29:30 2019/05/31
【摘要】 本书摘自《Spark机器学习进阶实战》——书中的第2章,第2.3.4节,作者是马海平、于俊、吕昕、向海。

2.3.4 假设检验

假设检验是统计中常用的工具,它用于判断一个结果是否在统计上是显著的、这个结果是否有机会发生。通过数据分析发现异常情况,找到解决异常问题的方法。

MLlib目前支持皮尔森卡方检验,对应的函数是Statistics类的chiSqTest。chiSqTest支持多种输入数据类型,对不同的输入数据类型进行不同的处理,对于向量(Vector)进行拟合优度检验,对于矩阵(Matrix)进行独立性检验,对于RDD进行特征选择。使用chiSqTest方法进行假设检验的代码如下:

import org.apache.spark.SparkContext

import org.apache.spark.MLlib.linalg._

import org.apache.spark.MLlib.regression.LabeledPoint

import org.apache.spark.MLlib.stat.Statistics._

val sc: SparkContext = ...

// 定义一个由事件频率组成的向量

val vec: Vector = ... 

// 做皮尔森拟合优度检验

val goodnessOfFitTestResult = Statistics.chiSqTest(vec)

println(goodnessOfFitTestResult)

// 定义一个检验矩阵

val mat: Matrix = ...

// 做皮尔森独立性检测

val independenceTestResult = Statistics.chiSqTest(mat)

// 检验总结:包括假定值(p-value)、自由度(degrees of freedom)

println(independenceTestResult)

// pairs(feature, label).

val obs: RDD[LabeledPoint] = ... 

// 独立性检测用于特征选择

val featureTestResults: Array[ChiSqTestResult] = Statistics.chiSqTest(obs)

var i = 1

featureTestResults.foreach { result =>

    println(s"Column $i:\n$result")

    i += 1

}


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。