当前位置: 首页 > news >正文

[机器学习、Spark]Spark MLlib实现数据基本统计

👨‍🎓👨‍🎓博主:发量不足

📑📑本期更新内容:Spark MLlib基本统计

📑📑下篇文章预告:Spark MLlib的分类🔥🔥

简介:耐心,自信来源于你强大的思想和知识基础!!

目录

Spark MLlib基本统计

一.摘要统计

二.相关统计

三.分层抽样


Spark MLlib基本统计

MLlib提供了很多统计方法,包含摘要统计、相关统计、分层抽样、假设检验、随机数生成等统计方法,利用这些统计方法可帮助用户更好地对结果数据进行处理和分析

MLlib三个核心功能:

1.实用程序:统计方法,如描述性统计、卡方检验、线性代数、模型评估方法等
2.数据准备:特征提取、变换、分类特征的散列和一些自然语言处理方法
3.机器学习方法:实现了一些流行和高级的回归,分类和聚类算法

一.摘要统计

导包

import org.apache.spark.mllib.linalg.Vectors

import org.apache.spark.mllib.stat.{MultivariateStatisticalSummary,Statistics}

创建密集矩阵

val observations=sc.parallelize(Seq(Vectors.dense(1.0,10.0,100.0),Vectors.dense(2.0,20.0,200.0),Vectors.dense(3.0,30.0,300.0)))

 

计算列摘要统计信息

val sum:MultivariateStatisticalSummary=Statistics.colStats(observations)

打印平均值

打印方差

打印每列非零元素的个数

 

二.相关统计

相关系数是反应两个变量之间相关关系密切程度的统计指标,这也是统计学中常用的统计方式,MLlib提供了计算多个序列之间相关统计的方法,目前MLlib默认采用皮尔森相关系数计算方法。皮尔森相关系数也称皮尔森积矩相关系数,它是一种线性相关系数。

导包

 

创建序列

val seriesX:RDD[Double]=sc.parallelize(Array(1,2,3,3,5))

val seriesY:RDD[Double]=sc.parallelize(Array(11,22,33,33,555))

计算seX和seY的相关系数

val correlation:Double = Statistics.corr(seriesX,seriesY,"pearson")

打印数据

println(s"Correlation is : $correlation")

利用皮尔森方法计算密集矩阵相关系数

val data:RDD[Vector]=sc.parallelize(Seq(Vectors.dense(1.0,10.0,100.0),Vectors.dense(2.0,20.0,200.0),Vectors.dense(5.0,33.0,366.0)))

 

val corMx:Matrix = Statistics.corr(data,"pearson")

打印数据

println(corMx.toString)

 

三.分层抽样

分层抽样法也叫类型抽样法,它是先将总体样本按照某种特征分为若干次级(层),如何再从每一层内进行独立取样,组成一个样本的统计学计算方法。

创建键值对RDD

val data=sc.parallelize(Seq((1,'a'),(1,'b'),(2,'c'),(2,'d'),(2,'e'),(3,'f')))

设定抽样格式

val fra = Map(1->0.1,2->0.6,3->0.3)

 

从每层获取抽样样本

val app=data.sampleByKey(withReplacement=false,fractions=fra)

从每层获取精确样本

 

打印抽样样本

打印精确样本

 

相关文章:

  • Lua - windows 中执行乱码(cmd、bash、vscode)
  • 动态路由协议(二)
  • 【NLP】使用 LSTM 和Beam Search进行文本自动完成
  • 机器人控制LinuxCNC与EtherCAT介绍PDOSDO,搭建环境步骤
  • 保存GraphPad Prism文件时,可以选择【PZF】与【PZFX】两种文件格式。
  • Python【高效摸鱼】告别pip手动安装模块,实现全自动安装第三方库
  • 【MM32F5270开发板试用】移植Google Chrome小恐龙游戏到MM32F5270
  • 网络精通-DHCP
  • Cenots7 离线安装部署PostgreSQL
  • 让 Web3 认证拥有和 Web2 一样丝滑体验的技术路径
  • 图卷积神经网络GCN及其Pytorch实现
  • 阿里巴巴面试题- - -多线程并发篇(二十六)
  • U3D热更新技术
  • 高并发架构设计思路
  • 【鸟哥杂谈】三分钟完成云服务器配置PM2,管理所有nodejs项目
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • [Vue CLI 3] 配置解析之 css.extract
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • angular组件开发
  • linux学习笔记
  • PAT A1017 优先队列
  • Phpstorm怎样批量删除空行?
  • Sublime text 3 3103 注册码
  • 给Prometheus造假数据的方法
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 前端自动化解决方案
  • 驱动程序原理
  • 容器服务kubernetes弹性伸缩高级用法
  • 数据可视化之 Sankey 桑基图的实现
  • 通过npm或yarn自动生成vue组件
  • 详解移动APP与web APP的区别
  • 用jquery写贪吃蛇
  • 在Unity中实现一个简单的消息管理器
  • ​iOS实时查看App运行日志
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • ![CDATA[ ]] 是什么东东
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (2015)JS ES6 必知的十个 特性
  • (C语言)fgets与fputs函数详解
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (二)换源+apt-get基础配置+搜狗拼音
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (一)基于IDEA的JAVA基础12
  • (转)http-server应用
  • (转载)虚函数剖析
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • ./和../以及/和~之间的区别
  • .NET Core 中插件式开发实现
  • .NetCore 如何动态路由