数据降维概述:数据降维是机器学习领域中重要的内容,所谓的降维就是采用某种映射方法,将高维空间中的数据点映射到低维的空间中。其本质是学习一个映射函数f: x->y。其中x是原始数据点的表述,目前多使用向量表达式;y是数据点映射后的低维向量表达;通常y的维度小于x的维度。映射函数可能是显示的或者是隐式的,可能是线性的也可能是非线性的。

目前大部分降维算法是处理向量表达的数据,也有一些降维算法处理高阶张量表达式数据,之所以使用降维后的数据表示是因为在原始的高维空间中,包含冗余信息以及噪声信息,这些信息会对数据的预测产生误差,降低了准确率;通过降维,我们可以减少噪声或冗余数据带来的误差,提高预测精度,同时还可以通过该方法来寻找数据内部的本质结构。在很多算法中,降维算法成为了数据预处理的一部分,比如PCA算法(主成分分析)。

对于降维效果的评估,如果降维后性能有所提高,则说明降维起到了效果,如果将数据降维到二维或者三维,则可以通过可视化技术来直观地判断降维的效果。

主成分分析(PCA):主成分分析是一种常用的降维方法,其模型的原型为:

class sklearn.decomposition.PCA(n_components=None, copy=True, whiten=False)

参数说明:

n_components:一个整数,指定降维后的维度(如果为None,则选择它的值为min(n_samples, n_features)。如果为字符串‘mle’,则使用Minka's MLE算法来猜测降维后的维度。如果为大于0小于1的浮点数,则指定的是降维后的维数占原始维数的百分比)。

copy:一个布尔值,如果为False,则直接使用原始数据来训练,结果会覆盖原始数据所在的数组;如果为True,那么使用的是拷贝的数据来训练,结果不会覆盖原始数据所在的数组。

whiten:一个布尔值,如果为True,则会将特征向量除以n_samples倍的特征值,从而保证非相关输出的方差为1(该白化操作可能会丢失部分信息,但是有时候在接下来的机器学习阶段能够活的更好的性能)。

属性说明:

components_:主成分的数值

explained_variance_ratio_:一个数组,元素是每个主成分的explained variance的比例

mean_:一个数组,元素是每个特征的统计平均值

n_components_:一个整数,指示主成分有多少个元素

方法说明:

fit(x, y):训练模型。

transform(x):执行降维

fit_transform(x, [, y]):训练模型并降维

inverse_transform(x):逆向操作,执行升维,即将数据从低维空间逆向转化成原始空间。

注意:

decomposition.PCA是基于scipy.linalg来实现的SVD分解,因此他不能应用于稀疏矩阵,并且无法使用与大规模的数据集(因为他要求所有的数据一次加载进内存)。

实例说明

from sklearn.decomposition import PCA

import numpy as np

import matplotlib.pyplot as plt

from sklearn.datasets import load_iris

#使用scikit-learn自带的鸢尾花数据集

def load_data():

iris = load_iris()

return iris.data, iris.target

#注意:数据降维的话,其实没有一个好坏的标准,所以这里只给出降维的一些结果即可视化之后的数据处理

def test_PCA(*data):

x, y = data

pca = PCA(n_components=None)

pca.fit(x)

print("explained variance ratio:{}".format(pca.explained_variance_ratio_))

x, y = load_data()

test_PCA(x, y)

#将数据集降到2维

def plot_PCA(*data):

x, y = data

pca = PCA(n_components=2)

pca.fit(x)

x_pca = pca.transform(x)

fig = plt.figure()

ax = fig.add_subplot(1,1,1)

colors = ((1,0,0),(0,1,0),(0,0,1),(0.5,0.5,0),(0.5,1,0.5),(0.1,1,0.9))

for label, color in zip(np.unique(y), colors):

position = y == label

ax.scatter(x_pca[position, 0], x_pca[position, 1], label="target=%d"%label, color=color)

#绘图

ax.set_xlabel("x[0]")

ax.set_ylabel("y[0]")

ax.legend(loc="best")

ax.set_title("PCA decomposition")

plt.show()

x, y = load_data()

plot_PCA(x, y)

运行后的对应结果如下:

鸢尾花数据使用PCA降到二维后的结果

由上述运行结果可知,这里运行后的个数据点分类0和1、2有明显的分辨出来,但是1和2则有部分数据重合。

对pca降维后的手写体数字图片数据分类_python机器学习API介绍13: 数据降维及主成分分析...相关推荐

  1. 对pca降维后的手写体数字图片数据分类_机器学习:数据的准备和探索——特征提取和降维...

    在数据的预处理阶段,特征提取和数据降维是提升模型表示能力的一种重要手段. 特征提取主要是从数据中找到有用的特征,用于提升模型的表示能力,而数据降维主要是在不减少模型准确率的情况下减少数据的特征数量. ...

  2. python图像压缩主成分分析实例_python机器学习API介绍13: 数据降维及主成分分析...

    数据降维概述:数据降维是机器学习领域中重要的内容,所谓的降维就是采用某种映射方法,将高维空间中的数据点映射到低维的空间中.其本质是学习一个映射函数f: x->y.其中x是原始数据点的表述,目前多 ...

  3. 对pca降维后的手写体数字图片数据分类_【AI白身境】深度学习中的数据可视化...

    今天是新专栏<AI白身境>的第八篇,所谓白身,就是什么都不会,还没有进入角色. 上一节我们已经讲述了如何用爬虫爬取数据,那爬取完数据之后就应该是进行处理了,一个很常用的手段是数据可视化. ...

  4. 对pca降维后的手写体数字图片数据分类_知识干货-机器学习-TSNE数据降维

    1.TSNE的基本概念 2.例1 鸢尾花数据集降维 3.例2 MINISET数据集降维 1.TSNE的基本概念 t-SNE(t-distributed stochastic neighbor embe ...

  5. 如何从TensorFlow的mnist数据集导出手写体数字图片

    在TensorFlow的官方入门课程中,多次用到mnist数据集. mnist数据集是一个数字手写体图片库,但它的存储格式并非常见的图片格式,所有的图片都集中保存在四个扩展名为idx3-ubyte的二 ...

  6. GAN网络生成手写体数字图片

    Keras真香,以前都是用tensorflow来写神经网络,自从用了keras,发现这个Keras也蛮方便的. 目前感觉keras的优点就是方便搭建基于标准网络组件的神经网络,这里的网络组件包括全连接 ...

  7. 手把手带你玩转Spark机器学习-使用Spark进行数据降维

    系列文章目录 手把手带你玩转Spark机器学习-专栏介绍 手把手带你玩转Spark机器学习-问题汇总 手把手带你玩转Spark机器学习-Spark的安装及使用 手把手带你玩转Spark机器学习-使用S ...

  8. Python实现手写体数字图片识别+GUI界面+画板数字识别

    __pycache__文件夹是Python自动生成的,详细了解https://blog.csdn.net/yitiaodashu/article/details/79023987 其他各个文件在之后部 ...

  9. Python+TensorFlow+PyQt实现手写体数字图片识别+GUI界面+画板数字识别

    __pycache__文件夹是Python自动生成的,详细了解https://blog.csdn.net/yitiaodashu/article/details/79023987 其他各个文件在之后部 ...

最新文章

  1. docker 修改镜像地址
  2. $_FILES上传错误类型
  3. .net移动端开发_移动端开发1(前端一)
  4. 洛谷 [P1314] 聪明的质检员(NOIP2011 D2T2)
  5. 云鲸扫拖一体机器人说明书_比老公更好用的扫拖一体机—自动洗拖布的云鲸扫拖机器人使用体验...
  6. sklearn自学指南(part27)--邻域成分分析
  7. java. 端序_c代码测试本机处理器的端序
  8. jetty设置双向ssl_在Jetty中设置SSL
  9. ReactNative开发环境
  10. 【CodeForces - 485A】Factory (水题,抽屉原理,tricks)
  11. 微信小程序JavaScript语法介绍
  12. 利用MATLAB视频函数工具箱的…
  13. WVS与Arachni漏扫工具对比实验
  14. L2、L3协议开发之以太网交换机基础
  15. 3.OpenCV可视化(Viz)——单目相机标定模拟
  16. 信息发布类网站后台界面设计一点思考(整体布局)
  17. 2019 年最佳 Linux 笔记本电脑发行版 top10
  18. Zalando Postgres Operator 快速上手
  19. 工作中遇到的问题记录01
  20. Latex行距调整总结

热门文章

  1. Spring容器初始化实现V1 版本
  2. Spring-Cloud中的 熔断、限流、降级
  3. 集合元素处理(传统方式)
  4. 列表-使用del关键字从列表删除数据
  5. JVM-Java内存区域
  6. h5的fetch方法_你不需要jQuery(三):新AJAX方法fetch()
  7. 老的消息中间件投递失败的类型值_图文结合了解一下Java消息中间件的概述
  8. 在 IntelliJ IDEA 中远程调试 Java 程序
  9. 200825C文件 复习
  10. egg(87)--egg之redis的安装使用