Spark MLlib特征处理:PCA 主成分分析 ---原理及实战
来源:互联网 发布:测试交换机端口带宽 编辑:程序博客网 时间:2024/05/21 08:51
PCA(Principal Component Analysis)即主成分分析。正如其名,PCA可以找出特征中最主要的特征,把原来的n个特征用k(k < n)个特征代
替,去除噪音和冗余。PCA是特征提取、数据降维的常用方法。
MLlib中PCA的实现思路:
1)原始数据3行4列经过转换得到矩阵
A3∗4 2)得到矩阵
A3∗4 的协方差矩阵B4∗4 3)得到协方差矩阵
B4∗4 的右特征向量4)选取k(如k=2)个大的特征值对应的特征向量,得到矩阵
C4∗2 5)对矩阵
A3∗4 降维得到A′3∗2 =A3∗4 *C4∗2
实战
import org.apache.spark.mllib.feature.PCAimport org.apache.spark.mllib.linalg.{Vector, Vectors}import org.apache.spark.rdd.RDDimport org.apache.spark.{SparkContext, SparkConf}object PCAExample { def main(args: Array[String]) { val conf = new SparkConf().setAppName("PCAExample").setMaster("local[8]") val sc = new SparkContext(conf) // 设置日志等级 sc.setLogLevel("WARN") // 原始数据 val arr = Array( Vectors.dense(4.0,1.0, 4.0, 5.0), Vectors.dense(2.0,3.0, 4.0, 5.0), Vectors.dense(4.0,0.0, 6.0, 7.0)) val data: RDD[Vector] = sc.parallelize(arr) // PCA降维 val pca: RDD[Vector] = new PCA(2).fit(data).transform(data) // 1)协方差矩阵A,通过debug可看到 // 1.3333333333333321 -1.666666666666666 0.6666666666666643 0.6666666666666643 // -1.666666666666666 2.3333333333333335 -1.333333333333334 -1.333333333333334 // 0.6666666666666643 -1.333333333333334 1.3333333333333286 1.3333333333333286 // 0.6666666666666643 -1.333333333333334 1.3333333333333286 1.3333333333333286 // 2)协方差的特征向量,通过debug可看到 // -0.4272585628633996 -0.588949815490069 -0.6859943405700341 0.0 // 0.6495967555956428 0.3277740377539023 -0.6859943405700355 5.91829962568105E-17 // -0.44467638546448407 0.522351555472326 -0.17149858514251054 -0.7071067811865475 // -0.44467638546448407 0.522351555472326 -0.17149858514251054 0.7071067811865476 // 3)取k=2个特征向量,形成新矩阵B // -0.4272585628633996 -0.588949815490069 // 0.6495967555956428 0.3277740377539023 // -0.44467638546448407 0.522351555472326 // -0.44467638546448407 0.522351555472326 // 4)矩阵A*矩阵B达到降维目的 // [-5.061524965038313,2.6731387750445608] // [-7.489827262491891,4.4347709591799624] // [-2.9078143281202276,4.506586481532503] pca.foreach(println) }}
0 0
- Spark MLlib特征处理:PCA 主成分分析 ---原理及实战
- Spark MLlib特征处理:Binarizer 二值化---原理及实战
- Spark MLlib特征处理:StringToIndex 字符串索引---原理及实战
- Spark MLlib特征处理:OneHotEncoder OneHot编码 ---原理及实战
- Spark MLlib特征处理:Normalizer 正则化---原理及实战
- Spark MLlib特征处理:TF-IDF 词频-逆文频---原理及实战
- Spark MLlib特征处理:MinMax最大最小值区间缩放---原理及实战
- 主成分分析(PCA)原理及推导
- 主成分分析(PCA)原理及推导
- 主成分分析(PCA)原理及推导
- 主成分分析(PCA)原理及推导
- 主成分分析(PCA)原理及推导
- 主成分分析(PCA)原理及推导
- 主成分分析(PCA)原理及推导
- 主成分分析(PCA)原理及推导
- PCA主成分分析原理
- 主成分分析 PCA算法原理
- 主成分分析(pca)算法原理
- 汇编代码摘记
- 内部匿名类
- Spark系列修炼---入门笔记11
- 常见对象_Integer中进制转换的操作
- 十六进制转换成八进制
- Spark MLlib特征处理:PCA 主成分分析 ---原理及实战
- 关于Ajax的cache参数的测试
- 详细介绍Java中的堆、栈和常量池
- 汇编作业
- 地理空间距离计算优化
- Crashlytics使用总结
- 11.23
- 简单工厂模式
- leetcode(38).141. Linked List Cycle