PCA算法(实现降维)

Posted Leida_wanglin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PCA算法(实现降维)相关的知识,希望对你有一定的参考价值。

PCA算法

步骤:


例题:

数据:

python代码:

小编用的是Jupyter Notebook运行的哈!

代码仅供参考,此代码不足之处还请告诉小编

import pandas as pd
import numpy as np
data = pd.read_excel('data.xlsx',encoding="gbk") #小编将上面数据放进了data文档里面了
data = data.values        #转化为数组
area = data[:,:1]
data = data[:,1:]         #舍弃第一列
dataMat = data
data = np.array(data, dtype='float64')
data
jz = data.mean(axis = 0) #算每个维度的平均值
jz
bzc = data.std(axis = 0) #计算标准差
bzc
for i in range(30):
    for j in range(8):
       data[i, j] = (data[i, j] - jz[j])/bzc[j]
data1 = data # 保留一份标准化后的数据,在后面降维时需要用到
data # 标准化后的数据
x = np.cov(data, rowvar = False) * 29 / 30 #计算协方差矩阵
x
a, b = np.linalg.eig(x)  #a为特征值,b为特征向量
a
b
n = b[:, :3]#n取特征值前三的特征向量
n
z = np.zeros((30, 3))
z
for i in range(30):
    for j in range(8):
        z[i, 0] += data1[i, j] * n[j, 0]
        z[i, 1] += data1[i, j] * n[j, 1]
        z[i, 2] += data1[i, j] * n[j, 2]
z #求每个城市降维后的值
for i in range(30): # 输出
    print(area[i, 0])
    print(z[i, 0])
    print(z[i, 1])
    print(z[i, 2])

运行结果部分截图

以上是关于PCA算法(实现降维)的主要内容,如果未能解决你的问题,请参考以下文章

吴恩达机器学习-9-降维PCA

sklearn中的降维算法PCA和SVD

主成分分析法(PCA)(含SVD奇异值分解)等降维(dimensionality reduction)算法-sklearn

机器学习及与智能数据处理之降维算法PCA及其应用手写识别自定义数据集

PCA算法

PCA算法理解及代码实现