PCA降维:500个服从正太分布的3维度数据

算法简介 基于python的样本点的三维数据PCA降维
主成分分析****PCA
是一种通过降低数据维数简化数据结构的方法。其本质就是将高维空间中的数据通过正交变换投影到低维空间中,从而实现了图像数据中主要特征的提取。运用主成分分析的方法求解一个特征子空间,将用于训练和测试图像向该特征子空间里做投影,可以得到用于区分不同人脸的主要特征(即投影系数)作为识别的特征向量。PCA是一种基于最近重构性和最大可分性的降维方法。最近重构性:样本点到这个超平面的距离足够近。最大可分性:样本点在这个超平面的投影尽可能分开。
算法描述:
输入:样本集D={x1,x2,x3,xm},低维空间维数d。
过程:
1.对所有样本进行中心化:在这里插入图片描述
2.计算所有样本的协方差矩阵 ;
3.对协方差矩阵做特征分解;
4.对最大的d个特征值做所对应的特征向量 ;
输出:投影矩阵W=( w1,w2,w3,…);

'''
生成500*3个数据 500个服从正太分布的3维度数据
PCA 生成3维度的立体图
'''
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from sklearn import decomposition
s=np.random.normal(loc =0.0 , scale=1 ,size = (500,3))  #0 1正太分布

fig = plt.figure(1, figsize=(4, 3))
plt.clf()  #只会清除数字 仍然可以在其上绘制另一个绘图
ax = Axes3D(fig, rect=[0, 0, .95, 1], elev=48, azim=134)
plt.cla()  #当前活动轴在当前图中。 它保持其他轴不变
pca = decomposition.PCA(n_components=3)   #这里为降维
pca.fit(s)
X = pca.transform(s)
# print(pca.explained_variance_ratio_)  #投影后的三个维度的方差分布
# print(pca.explained_variance_)  #方差  [1.10977118 0.9951736  0.81581847]
x1=[]
y1=[]
z1=[]
for i in range(len(s)):
    x1.append(s[i][0])
    y1.append(s[i][1])
    z1.append(s[i][2])
ax = plt.subplot(111, projection='3d')  # 创建一个三维的绘图工程
#  将数据点分成三部分画,在颜色上有区分度
ax.scatter(x1[:500], y1[:500], z1[:500], c='y')  # 绘制数据点
ax.set_zlabel('Z')  # 坐标轴
ax.set_ylabel('Y')
ax.set_xlabel('X')
plt.show()

三维立体图

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值