http://f.dataguru.cn/spark-751832-1-1.html

我们可以利用PCA算法将向量的维数降低,从而实现特征转化。
具体原理在《机器学习》课程中有详细的讲述。故此处将直接介绍如何利用MLlib中的PCA算法进行特征转换。下列演示了如何计算主成分向量并实现向量降维,同时保持标签计算线性回归。

import org.apache.spark.mllib.regression.RegressionWithSGD
import org.apache.spark.mllib.regression.LabeledPoint
import org.apache.spark.mllib.linalg.Vectors
import org.apache.spark.mllib.feature.PCA

val data = sc.textFile("data/mllib/ridge-data/lpsa.data").map { line =>
         val parts = line.split(',')
         LabeledPoint(parts(0).toDouble, Vectors.dense(parts(1).split('').map(_.toDouble)))
         }.cache()
         val splits = data.randomSplit(Array(0.6,0.4),seed=11L)
         val training = splits(0).cache()
         val test = splits(1)
         val pca = new PCA(training.first.feature.size/2).fit(data.map(_.features))
         val training_pca = training.map(p=>p.copy(features=pca.transform(p.features)))
         val test_pca = test.map(p=>p.copy(features=pca.transform(p.features)))
         val num Iterations = 100
         
         val model = LinearRegressionWithSGD.train(training, numIterations)
         val model_pca = LinearRegressionWithSGD.train(training_pca, numIterations)
         val valuesAndPreds = test.map { point =>
             val score = model.predict(point.features)
                 (score, point.label)
         }
         
         val MSE = valuesAndPreds.map{ case(v,p) =>math.pow(v-p),2)}.mean()
         val MSE_pca = valuesAndPreds_pca.map{ case(v,p) => math.pow((v-p),2)}.mean()
         println("Means Squared Error="+MSE)
         println("PCA Means Squared Error="+MSE_pca)

PCA 降维的更多相关文章

  1. [综] PCA降维

    http://blog.json.tw/using-matlab-implementing-pca-dimension-reduction 設有m筆資料, 每筆資料皆為n維, 如此可將他們視為一個mx ...

  2. 机器学习公开课笔记(8):k-means聚类和PCA降维

    K-Means算法 非监督式学习对一组无标签的数据试图发现其内在的结构,主要用途包括: 市场划分(Market Segmentation) 社交网络分析(Social Network Analysis ...

  3. Python机器学习笔记 使用scikit-learn工具进行PCA降维

    之前总结过关于PCA的知识:深入学习主成分分析(PCA)算法原理.这里打算再写一篇笔记,总结一下如何使用scikit-learn工具来进行PCA降维. 在数据处理中,经常会遇到特征维度比样本数量多得多 ...

  4. PCA降维—降维后样本维度大小

    之前对PCA的原理挺熟悉,但一直没有真正使用过.最近在做降维,实际用到了PCA方法对样本特征进行降维,但在实践过程中遇到了降维后样本维数大小限制问题. MATLAB自带PCA函数:[coeff, sc ...

  5. 一步步教你轻松学主成分分析PCA降维算法

    一步步教你轻松学主成分分析PCA降维算法 (白宁超 2018年10月22日10:14:18) 摘要:主成分分析(英语:Principal components analysis,PCA)是一种分析.简 ...

  6. 【资料收集】PCA降维

    重点整理: PCA(Principal Components Analysis)即主成分分析,是图像处理中经常用到的降维方法 1.原始数据: 假定数据是二维的 x=[2.5, 0.5, 2.2, 1. ...

  7. 第四章 PCA降维

    目录 1. PCA降维 PCA:主成分分析(Principe conponents Analysis) 2. 维度的概念 一般认为时间的一维,而空间的维度,众说纷纭.霍金认为空间是10维的. 3. 为 ...

  8. PCA 降维算法详解 以及代码示例

    转载地址:http://blog.csdn.net/watkinsong/article/details/38536463 1. 前言 PCA : principal component analys ...

  9. [学习笔记] numpy次成分分析和PCA降维

    存个代码,以后参考. numpy次成分分析和PCA降维 SVD分解做次成分分析 原图: 次成分复原图: 代码: import numpy as np from numpy import linalg ...

  10. 关于PCA降维中遇到的python问题小结

    由于论文需要,开始逐渐的学习CNN关于文本抽取的问题,由于语言功底不好,所以在学习中难免会有很多函数不会用的情况..... ̄へ ̄ 主要是我自己的原因,但是我更多的把语言当成是一个工具,需要的时候查找就 ...

随机推荐

  1. Warning: 执行完毕, 但带有警告 trigger trigger_EqPic_insert 已编译。

    create or replace trigger trigger_EqPic_insert before insert on TB_EqPic for each row declare begin ...

  2. 【Social listening实操】如何运用免费的大数据工具获得行业洞察?

    本文转自知乎 作者:苏格兰折耳喵 ----------------------------------------------------- 当我们想要创业却对市场行情不甚了解,该如何迅速了解市场行情 ...

  3. ubuntu-Linux下如何安装Tensorflow?

    http://wiki.jikexueyuan.com/project/tensorflow-zh/get_started/os_setup.html https://www.cnblogs.com/ ...

  4. react-native Animated, 旋转动画

    Animated 仅封装了四个可以动画化的组件: View.Text.Image.ScrollView 可以使用 Animated.createAnimatedComponent()来封装你自己的组件 ...

  5. Django 模板格式化日期

    在模板中格式化日期: {{ post.date|date:”Y-m-d H:i:s” }}

  6. System.Types.hpp(77): E2029 'TObject' must be a previously defined class or struct

    System.Types.hpp System.Types.hpp(77): E2029 'TObject' must be a previously defined class or struct ...

  7. 使用spring validation完成数据后端校验

    前言 数据的校验是交互式网站一个不可或缺的功能,前端的js校验可以涵盖大部分的校验职责,如用户名唯一性,生日格式,邮箱格式校验等等常用的校验.但是为了避免用户绕过浏览器,使用http工具直接向后端请求 ...

  8. du 统计文件夹大小

    du -h --max-depth=1 |grep [TG] |sort   #查找上G和T的目录并排序 du -sh    #统计当前目录的大小,以直观方式展现 du -h --max-depth= ...

  9. Jupyter-1-安装Anaconda3及更改路径

    Jupyter Notebook测试Python3,可以将图文.代码有效融合,进行交互式编程,适合学习讲解及方案沟通. 1.下载Anaconda3 可以到官网或是清华大学软件镜像站去下载. 路径:ht ...

  10. webpack 引用vconsole

    1.npm install -vconsole --save-dev 2.npm install -vconsele-webpack-plugin --save-dev 3.webpack.base. ...