当前位置: 首页 > news >正文

短链接在线生成嘉兴优化网站价格

短链接在线生成,嘉兴优化网站价格,响应式网站建设的未来发展,珠海网站建设网一、PCA概述 定义 主成分分析#xff08;Principal Component Analysis#xff0c;PCA#xff09;是一种经典的无监督降维方法#xff0c;其核心思想是通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量#xff0c;这些新的变量被称为主成分Principal Component AnalysisPCA是一种经典的无监督降维方法其核心思想是通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量这些新的变量被称为主成分。 二、PCA原理 通过投影的方式将高维的数据映射到低维的空间中并且保证在所投影的维度上原数据的信息量最大从而使用较少的数据维度保留住较多的原始数据特性。那么为了达成这个目的PCA可以基于两种思路进行优化 最大可分性样本投影到低维的超平面之后能够尽量地分开。 例如将图中的点分别映射到M轴和N轴上映射到M轴上的样本数据明显比投影到N的样本数据更加分散。 最近重构性样本到待投影的低维超平面的距离要尽量的小 例如平面上的样本到M的距离是蓝色线段到N的距离是绿色线段 显而易见蓝色距离之和小于绿色距离之和所以M在最近重构性方面更好。 PCA的主要思想是将n维特征映射到k维上这k维是全新的正交特征也被称为主成分是在原有n维特征的基础上重新构造出来的k维特征。 三、PCA求解过程 假设有m个样本每个样本有n个特征那么样本集X为: 现在欲将X{x1,x2...xn}降到k维具体过程如下 1去中心化 将数据集中的每个特征的值减去其均值使得每个特征的均值变为0。 首先计算每列特征的均值其中xi为第i个特征 接着让样本矩阵X中的每一个值进去其所在特征列对应的特征均值 如下图所示为二维图像的去中心化示例 首先计算出样本的均值。 接着样本对应的值减去均值中心位移到了原点实现图像去中心化。 去中心化不会影响样本的分布性质但会简化PCA算法的推导过程。 2计算协方差矩阵 Cov是一个n*n的矩阵。 计算数据的协方差矩阵以了解数据特征之间的相关性。 3特征值和特征向量计算 求出协方差矩阵的特征值及对应的特征向量 特征值和特征向量描述了数据在不同方向上的变异程度。 4选择主成分 根据特征值的大小选择前几个最大的特征值对应的特征向量作为主成分。这些特征向量代表了数据中的主要变化方向 将特征向量按对应特征值从左到右按列降序排列成矩阵取前k列组成矩阵W投影矩阵即阶矩阵。 5数据转换 将原始数据通过投影矩阵转换到主成分空间得到新的数据集。这个新数据集的维度小于原始数据集但保留了大部分的数据变异性 通过计算降维到k维后的样本特征即阶矩阵。 四、PCA算法代码实现 具体代码如下 import numpy as np import matplotlib.pyplot as plt from sklearn.decomposition import PCA from sklearn.datasets import fetch_olivetti_faces from PIL import Image import os# 配置matplotlib支持中文显示 plt.rcParams[font.family] [SimHei, WenQuanYi Micro Hei, Heiti TC, sans-serif] plt.rcParams[axes.unicode_minus] False # 解决负号显示问题# 1. 加载ORL_Faces数据集 def load_orl_faces(data_dir):加载ORL人脸数据集faces []labels []# 遍历文件夹假设文件夹结构为data_dir/sX/Y.pgmfor person_id in range(1, 41):person_dir os.path.join(data_dir, fs{person_id})if not os.path.exists(person_dir):continuefor img_id in range(1, 11):img_path os.path.join(person_dir, f{img_id}.pgm)if os.path.exists(img_path):# 读取图像并转为灰度图img Image.open(img_path).convert(L)# 转为numpy数组并展平为一维向量face_vector np.array(img).flatten()faces.append(face_vector)labels.append(person_id)return np.array(faces), np.array(labels)# 2. 执行PCA降维 def apply_pca(faces, n_components15):对人脸数据应用PCA降维pca PCA(n_componentsn_components)# 拟合PCA模型并转换数据faces_pca pca.fit_transform(faces)return pca, faces_pca# 3. 可视化主成分特征脸 def visualize_principal_components(pca, n_components10):可视化前n个主成分特征脸plt.figure(figsize(12, 8))for i in range(n_components):# 将主成分重构为图像形状假设原始图像为112x92component pca.components_[i].reshape(112, 92)plt.subplot(2, 5, i1)plt.imshow(component, cmapgray)plt.title(f主成分 {i1})plt.axis(off)plt.tight_layout()plt.show()# 4. 可视化降维后的数据使用前两个主成分 def visualize_reduced_data(faces_pca, labels, n_samples200):使用前两个主成分可视化降维后的数据# 只取前n_samples个样本以便可视化if len(faces_pca) n_samples:faces_pca faces_pca[:n_samples]labels labels[:n_samples]plt.figure(figsize(10, 8))# 使用散点图可视化不同颜色代表不同人物scatter plt.scatter(faces_pca[:, 0], faces_pca[:, 1], clabels, cmapviridis, alpha0.7)# 添加图例plt.colorbar(scatter, label人物编号)plt.title(PCA降维后的数据前两个主成分)plt.xlabel(主成分1)plt.ylabel(主成分2)plt.grid(True, alpha0.3)plt.show()# 5. 计算并可视化方差解释率 def visualize_variance_explained(pca):可视化各主成分的方差解释率及累积方差解释率plt.figure(figsize(12, 5))# 绘制单个主成分的方差解释率plt.subplot(1, 2, 1)plt.bar(range(1, len(pca.explained_variance_ratio_) 1), pca.explained_variance_ratio_)plt.xlabel(主成分序号)plt.ylabel(方差解释率)plt.title(各主成分的方差解释率)plt.grid(True, alpha0.3)# 绘制累积方差解释率plt.subplot(1, 2, 2)cumulative_variance np.cumsum(pca.explained_variance_ratio_)plt.plot(range(1, len(cumulative_variance) 1), cumulative_variance)plt.xlabel(主成分数量)plt.ylabel(累积方差解释率)plt.title(累积方差解释率)plt.axhline(y0.9, colorr, linestyle--, alpha0.7, label90%方差)plt.legend()plt.grid(True, alpha0.3)plt.tight_layout()plt.show()# 主函数 if __name__ __main__:# 数据集路径请根据实际情况修改data_dir ORL_Faces # 假设ORL_Faces数据集在此目录下# 1. 加载数据print(正在加载ORL人脸数据集...)faces, labels load_orl_faces(data_dir)print(f数据加载完成共{len(faces)}张人脸图像每张图像维度{faces.shape[1]})# 2. 应用PCA降维print(正在执行PCA降维...)pca, faces_pca apply_pca(faces, n_components30)print(fPCA降维完成降维后维度{faces_pca.shape[1]})# 3. 可视化主成分特征脸print(可视化主成分特征脸...)visualize_principal_components(pca, n_components10)# 4. 可视化降维后的数据print(可视化降维后的数据...)visualize_reduced_data(faces_pca, labels)# 5. 可视化方差解释率print(可视化方差解释率...)visualize_variance_explained(pca) 运行结果如下
http://www.hkea.cn/news/14379046/

相关文章:

  • 成都市 建设领域信用系统网站徐汇网站开发
  • 中国版动漫网站模板wordpress+判断标签
  • 做业务查牙医诊所一般用什么网站四川省建设勘察设计网站
  • spring mvc 做网站如何能让网站尽快备案通过
  • 安徽全网优化专业网站设计制作优化排名
  • 湖南的商城网站建设中铁建设集团有限公司官方网站
  • 怎么做招标公司网站如何做免费网站制作
  • 学校官网网站建设的现状分析送网站建设管理信息内容审核制度
  • 淘宝客 网站无备案网站开发如何收费
  • cms官方网站网站源码建站视频教程
  • 网站策划案怎么写范文莱芜金点子今天最新招聘
  • 无锡优化网站费用国外室内设计网
  • 帮你省网站怎么做如何查看网站有没有收录
  • 西宁公司官方网站建设wordpress文章怎么打开空格
  • 网站推广做哪个比较好有哪些做的好的营销型网站
  • 网站开发后端 书沈阳网站建设方案推广
  • wordpress建站速度提升vi形象设计包括什么
  • 专业网站建设系统网站域名登
  • 基于jsp的电商网站开发网易企业邮箱下载官网
  • 国外平面设计网站有哪些导航到光明城市
  • 自己做网站 什么软件凌云县 城市建设 网站
  • 网站构思装修设计费收费标准2022
  • 找平面设计师网站网页设计模板图片素材
  • 网站的关键词在哪设置关于网站建设的合同范本
  • zzcms网站开发平台推广策略
  • 协会工作方案网站建设困难如何修改网页模版
  • 企业如何做网站收款wordpress插件广告
  • 网站关键词优化合同浅谈中兴电子商务网站建设
  • 好的网站开发自学网站设计之家室内设计
  • 做房地产用什么网站好中职教材 网站建设