机器学习之主成份分析PCA详解与实践

在PCA中,数据从原来的坐标系转换到新的坐标系,新坐标系的选择是由数据本身决定的。第一个新坐标轴选择的是原始数据中方差最大的方向,第二个新坐标轴选择和第一个坐标轴正交且具有最大方差的方向。该过程一直重复,重复次数为原始数据中特征的数目。我们会发现,大部分方差都包含在最前面的几个新坐标轴中。因此,我们可以忽略余下的坐标轴,即对数据进行降维处理。

PCA降维的两个准则: 
最近重构性:样本集中所有点,重构后的点距离原来的点的误差之和最小。 
最大可分性:样本在低维空间的投影尽可能分开。

  • 优化目标:

  • 最大可分析(正交化)

/**

  * Created by Administrator on 2017/7/28 0028.

  */

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

import org.apache.spark.mllib.linalg.distributed.RowMatrix

import org.apache.spark.{SparkConf, SparkContext}



object PCA {

  def main(args: Array[String]) {

    val conf = new SparkConf()                                     //创建环境变量

      .setMaster("local")                                             //设置本地化处理

      .setAppName("PCA ")                                       //设定名称

    val sc = new SparkContext(conf)                                 //创建环境变量实例



    val data = sc.textFile("c://a.txt")                                   //创建RDD文件路径

      .map(_.split(' ')                                               //按“ ”分割

      .map(_.toDouble))                                            //转成Double类型

      .map(line => Vectors.dense(line))                               //转成Vector格式

    val rm = new RowMatrix(data)                                    //读入行矩阵



    val pc = rm.computePrincipalComponents(3)     //提取主成分,设置主成分个数

    val mx = rm.multiply(pc)         //创建主成分矩阵

    mx.rows.foreach(println)         //打印结果

  }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值