PCA主成分分析

该博客介绍了如何使用Python实现主成分分析PCA,包括数据的中心化处理、协方差矩阵构造、特征值和特征向量计算,以及数据的降维投影。通过随机生成的三维数据集,展示了PCA在高维数据降低到二维后的效果,包括原三维数据的散点图和降维后的二维平面图。
摘要由CSDN通过智能技术生成
''' 1)、对数据进行中心化处理,即减去均值。
    2)、构造协方差矩阵。
    3)、求解协方差矩阵的值与特征向量。
    4)、将特征值从大到小排列,截取所需的K个,并得到其对应的特征向量
    5)、.将数据投影在这K个特征向量上。'''


import numpy as np
from mpl_toolkits.mplot3d import Axes3D  # 空间三维画图
from numpy import *;
import matplotlib.pyplot as plt

X_cen = np.random.normal(100, 10, (3000, 3))  #生成由均值为0,标准差为1的标准正态分布组成的随机数组

def pca(X, threshold):
    # 将X中心化
    X_mean = np.mean(X, axis=0)     #求平均值函数mean
    X_cen = X - X_mean

    # 构造散度矩阵并且求解特征值与特征向量
    X_sca = np.dot(X_cen.T, X_cen)     #dot函数表示矩阵的乘法
    X_eigenval, X_eigenvect = np.linalg.eig(X_sca)     #linalg.eig(a)函数返回矩阵A的特征值和特征向量,X_eigenval特征值, X_eigenvect特征向量

    index = X_eigenval.argsort()[::-1]      #从大到小排序,返回索引值
    indexs = index[0:threshold]
    X_eigenvect_TopK = X_eigenvect[:, indexs]   #前threshold大的特征值对应的特征向量,也就是投影向量
    return X_eigenvect_TopK


Tou = pca(X_cen, 2)
Last = np.dot(X_cen, Tou)

#原三维数据散点图
x0 = X_cen[:, 0]
y0 = X_cen[:, 1]
z0 = X_cen[:, 2]
fig = plt.figure()
ax = Axes3D(fig)
ax.scatter(x0, y0, z0)

#投影后二维数据对应平面图
x1 = Last[:, 0]
y1 = Last[:, 1]
fig = plt.figure()
ax = Axes3D(fig)
ax.scatter(x1, y1)

plt.show()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值