java做主成分分析_主成分分析(PCA) Java

导入jar包:Jama-1.0.2.jar

//========计算类===========

import java.util.ArrayList;

import java.util.Collections;

import java.util.HashMap;

import java.util.Iterator;

import java.util.List;

import java.util.Map;

import java.util.Map.Entry;

import java.util.TreeMap;

import Jama.Matrix;

/*

* 算法步骤:

* 1)将原始数据按列组成n行m列矩阵X

* 2)特征中心化。即每一维的数据都减去该维的均值,使每一维的均值都为0

* 3)求出协方差矩阵

* 4)求出协方差矩阵的特征值及对应的特征向量

* 5)将特征向量按对应的特征值大小从上往下按行排列成矩阵,取前k行组成矩阵p

* 6)Y=PX 即为降维到k维后的数据

*/

public class PCA {

private static final double threshold = 0.95;// 特征值阈值

/**

*

* 使每个样本的均值为0

*

* @param primary

*            原始二维数组矩阵

* @return averageArray 中心化后的矩阵

*/

public double[][] changeAverageToZero(double[][] primary) {

int n = primary.length;

int m = primary[0].length;

double[] sum = new double[m];

double[] average = new double[m];

double[][] averageArray = new double[n][m];

for (int i = 0; i < m; i++) {

for (int j = 0; j < n; j++) {

sum[i] += primary[j][i];

}

average[i] = sum[i] / n;

}

for (int i = 0; i < m; i++) {

for (int j = 0; j < n; j++) {

averageArray[j][i] = primary[j][i] - average[i];

}

}

return averageArray;

}

/**

*

* 计算协方差矩阵

*

* @param matrix

*            中心化后的矩阵

* @return result 协方差矩阵

*/

public double[][] getVarianceMatrix(double[][] matrix)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值