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算法(实现降维)的主要内容,如果未能解决你的问题,请参考以下文章
主成分分析法(PCA)(含SVD奇异值分解)等降维(dimensionality reduction)算法-sklearn