本文由公众号《湾区人工智能》提供,如果觉得不错,请扫码关注,了解更多Python和人工智能知识

sklearn对三维矩阵降维

思路:

把三维矩阵reshape成二维,然后对二维矩阵降维,然后把二维矩阵再次reshape成三维,实现如下数组

(640, 640, 128) --(640, 640, 3)

代码:

#https://blog.csdn.net/u012162613/article/details/42192293
#https://blog.csdn.net/puredreammer/article/details/52255025
#每次降维后结果不同呢:属于无监督学习,类似聚类一样;fit()可以说是scikit-learn中通用的方法,每个需要训练的算法都会有fit()方法,它其实就是算法中的“训练”这一步骤。因为PCA是无监督学习算法,此处y自然等于None。
#LDA,有监督学习 in contrast to PCA, is a supervised method, using known class labels.from sklearn.decomposition import PCA
import numpy as np
import matplotlib.pyplot as plt
import scipy.io as sio data = sio.loadmat('docia.mat') # docia.mat其实是128个640*640的矩阵的叠加,当只有一个通道的时候就是黑白图片,3个通道是RGB图片,128个通道就是128个图片的叠加
print(data.keys()) # 即可知道Mat文件中存在数据名,embedmap
#print(data['embedmap'])
print(data['embedmap'].shape)
reshaped_data = data['embedmap'].reshape((409600, 128))   #reshape()是数组对象中的方法,用于改变数组的形状。pca = PCA(n_components=3) #n_components返回所保留的成分个数n。
#pca.fit(reshaped_data)  #fit(X),表示用数据X来训练PCA模型;fit()可以说是scikit-learn中通用的方法,每个需要训练的算法都会有fit()方法,它其实就是算法中的“训练”这一步骤。因为PCA是无监督学习算法,此处y自然等于None。
PCA(copy=True, n_components=3, whiten=True) #whiten=True使得每个特征具有相同的方差。copy=True表示在运行算法时,将原始训练数据复制一份pcaData=pca.fit_transform(reshaped_data)  #用reshaped_data来训练PCA模型,同时返回降维后的数据。
res_pcaData = pcaData.reshape((640,640,3))
print(res_pcaData.shape)
print(type(res_pcaData))   #里面有负值,在-9到5之间输出:
dict_keys(['__version__', '__header__', 'embedmap', '__globals__'])
(640, 640, 128)
(640, 640, 3)
<class 'numpy.ndarray'>
[Finished in 7.0s]

sklearn对三维矩阵降维代码实现相关推荐

  1. sklearn专题四:降维算法

    目录 1 概述 1.1 从什么叫"维度"说开来 2 PCA与SVD 2.2 重要参数n_components 2.2.1 迷你案例:高维数据的可视化 2.2.2 最大似然估计自选超 ...

  2. matlab 三维矩阵向量化,Matlab:向量化三维矩阵的工艺

    我实际上向量化了我的一个代码,并且遇到了一些问题.Matlab:向量化三维矩阵的工艺 这是我最初的代码: CoordVorBd = random(N+1,3) CoordCP = random(N,3 ...

  3. 怎样对三维切片 MATLAB,绘制切片中的三维矩阵 - MATLAB

    我想绘制我的三维矩阵的每个切片,以显示第三维的差异.然而,我只能设法将它们彼此打成一片,我想要一个3D图,其中明确表示矩阵的切片实际上是堆叠的.我为两层到目前为止的代码是绘制切片中的三维矩阵 - MA ...

  4. Matlab一维矩阵无法与三维矩阵进行矩阵乘法?

    解决方法 貌似Matlab只支持一维与二维,二维与三维的矩阵乘法.把高维矩阵降维就能解决了,但是需要注意降维之后矩阵乘法是否结果一致.stackoverflow的回答

  5. 【python】详解使用numpy模块来拼接矩阵,二维矩阵和三维矩阵

    首先,使用下面的代码,创建3个2×2的矩阵A.B.C. import numpy as np A = [[1, 2], [3, 4]] B = [[5, 6], [7, 8]] C = [[9, 9] ...

  6. sklearn实现lda模型_运用sklearn进行线性判别分析(LDA)代码实现

    基于sklearn的线性判别分析(LDA)代码实现 一.前言及回顾 本文记录使用sklearn库实现有监督的数据降维技术--线性判别分析(LDA).在上一篇LDA线性判别分析原理及python应用(葡 ...

  7. 通俗易懂的机器学习——协方差、奇异值分解、PCA降维代码实现

    协方差.奇异值分解.PCA降维代码实现 原理剖析 数据选用 鸢尾花数据观测 瑞士卷数据观测 代码实现 奇异值分解法 鸢尾花数据集降维后的效果 瑞士卷数据集降维后的效果 协方差法 鸢尾花数据集降维后的效 ...

  8. python导入txt文件并绘图-Python实现读取txt文件并画三维图简单代码示例

    记忆力差的孩子得勤做笔记! 刚接触python,最近又需要画一个三维图,然后就找了一大堆资料,看的人头昏脑胀的,今天终于解决了!好了,废话不多说,直接上代码! #由三个一维坐标画三维散点 #codin ...

  9. python读取txt文件代码-Python实现读取txt文件并画三维图简单代码示例

    记忆力差的孩子得勤做笔记! 刚接触python,最近又需要画一个三维图,然后就找了一大堆资料,看的人头昏脑胀的,今天终于解决了!好了,废话不多说,直接上代码! #由三个一维坐标画三维散点 #codin ...

最新文章

  1. 简要说明建设城市大脑三条关键标准规范
  2. mysql主主复制+keepalived 打造高可用mysql集群
  3. leetcode 357. Count Numbers with Unique Digits | 357. 计算各个位数不同的数字个数(Java)
  4. Winform模拟post请求和get请求登录网站
  5. js和python交互_JSShell:一个基于python的交互式Shell
  6. plsq卸载 删除注册表、_别再用老方法卸载电脑软件了,只会让电脑越来越慢
  7. 帆软报表在已经搭载服务器上开发_史上最全企业数据产品选型对比(含数仓、报表、BI、中台、数据治理)...
  8. Arcgis Engine 添加一个Symbol符号样式步骤
  9. .net知识和学习方法系列(二十一)CLR-枚举
  10. shiro会话监听_shiro session 监听
  11. php进度条实例,JavaScript_一个简单的jquery进度条示例,用jQuery实现的最简单的进度条 - phpStudy...
  12. 计算机二级Python第二弹课后题来袭!冲冲冲!!!
  13. UBUNTU16.04使用CornerNet_Lite进行目标识别并嵌入到ROS中
  14. PowerShell脚本免杀/bypass/绕过杀毒软件
  15. python安装osgeo及shapefile库、is not a supported wheel on this platform 的问题
  16. 3、Nginx系列之: location和alias的区别
  17. golang 九宫格头像生成
  18. java毕业设计皮皮狗宠物用品商城源码+lw文档+mybatis+系统+mysql数据库+调试
  19. Java实现多线程的两种方式讲解
  20. 5G八大应用场景前瞻:从5G消息到工业互联

热门文章

  1. 【LeetCode】剑指 Offer 68 - I. 二叉搜索树的最近公共祖先
  2. [K8S]kubeadm国内镜像安装方式
  3. 实例解读什么是Redis缓存穿透、缓存雪崩和缓存击穿
  4. Shiro(二)通过shiro实现登录 连接数据库+集成Springboot
  5. STL之stack容器
  6. BZOJ4737 组合数问题 【Lucas定理 + 数位dp】
  7. Maximum Subarray(最大连续子序列和)
  8. linux+PATH
  9. Cesium中常用的一些地理数据文件 以及数据相关的东西
  10. Uncaught RangeError: Maximum call stack size exceeded解决思路