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])

运行结果部分截图

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值