数据降维是一件困难的事情,而难点通常集中在主成分分析上。此前,我介绍过一种基于自动编码器的降维方法 。然而,在那一段时间里,我专注于如何使用自动编码作为预测器,而现在我想把它们看作是一种降维技术。

这篇文章的目的是解释一下自动编码器是如何工作的。它是从将原始数据压缩成一个忽略噪声的短代码开始的。然后,该算法对该代码进行解压缩,以生成尽可能接近原始输入的图像。

自动编码的过程

实际案例

我们来谈谈金融界的一个热门话题:利率模型。我们已经尝试了主成分分析技术,发现总结起来,利率信息主要有三个因素,这三个因素代表零息曲线的等级、斜率和曲率,它们保留了大约 95% 的信息。

我想知道自动编码器是否能够通过只使用「编码过程」来捕获与 PCA 相同的信息,因为这部分是关于数据压缩的。那么,让我们来演示如何得到一个降维的自动编码器。

进入主题

首先,你应该导入一些库:from keras.models import Model

from keras.layers import Input, Dense

from keras import regularizers

from sklearn.preprocessing import MinMaxScaler

import pandas as pd

下载完数据后,你就可以开始了。所以,让我们看看要使用什么样的数据。记住,这里的想法是使用自动编码器来减少利率数据的维数。所以,数据集是:1995 年至 2018 年美国的零息曲线。# Normalise

scaler = MinMaxScaler()

data_scaled = scaler.fit_transform(data)

现在,创建一个自动编码器模型来降低利率的维度只需几秒钟的时间。此时,你应该确定在「编码过程」中需要多少层。由于目标是得到三个成分,以建立与 PCA 的关系,因此需要分别创建 8(原始序列数量)、6、4 和 3(我们正在寻找的成分数量)个神经元。# Fixed dimensions

input_dim = data.shape[1] # 8

encoding_dim = 3

# Number of neurons in each Layer [8, 6, 4, 3, ...] of encoders

input_layer = Input(shape=(input_dim, ))

encoder_layer_1 = Dense(6, activation="tanh", activity_regularizer=regularizers.l1(10e-5))(input_layer)

encoder_layer_2 = Dense(4, activation="tanh")(encoder_layer_1)

encoder_layer_3 = Dense(encoding_dim, activation="tanh")(encoder_layer_2)

在下一步中,你将创建模型并使用它来预测压缩数据。该数据应包含原始数据的所有相关信息,且忽略噪声。# Crear encoder model

encoder = Model(inputs=input_layer, outputs=encoder_layer_3)

# Use the model to predict the factors which sum up the information of interest rates.

encoded_data = pd.DataFrame(encoder.predict(data_scaled))

encoded_data.columns = ['factor_1', 'factor_2', 'factor_3']

现在,我留下一些问题:自动编码器捕获的信息比主成分分析多吗?这种创建自动编码器的方法是降低维度的最佳方法吗?

降维和自动编码还能干什么?

这种技术可以用来降低任何机器学习问题的维数。只要使用它,你就可以处理高维问题,降低训练和测试集的维度。这样,你就可以减少问题的维数,更重要的是,你可以将数据集中的噪声去除。

python自编码器降维_自编码器数据降维实践相关推荐

  1. 【Python】使用sklearn PCA对人脸数据降维

    [python]sklearn PCA对人脸数据降维与识别 1. PCA 1.1 PCA原理 1.2 sklearn PCA使用方法 2. 人脸数据降维 2.1 读取图片 2.2 使用PCA进行降维 ...

  2. 11旋转编码器原理_旋转编码器的原理是什么?增量式编码器和绝对式编码器有什么区别?...

    先给出结论,最重要的区别在于:增量式编码器没有记忆,断电重启必须回到参考零位,才能找到需要的位置,而绝对式编码器,有记忆,断电重启不用回到零位,即可知道目标所在的位置. 接下来细说一下,主要包含如下的 ...

  3. 时间序列python复杂网络实例_基于时间序列数据的复杂网络重构

    摘要:现实生活中,复杂系统俯首即是,和人们的生活息息相关,遍及的领域包括社会,经济,物理,生物和生态等.为了便于研究,复杂网络通常被看成是复杂系统的一种抽象描述,其中,网络中的单个节点对应于系统中的单 ...

  4. python的顶级库_三大用于数据科学的顶级Python库

    Python有许多吸引力,如效率,代码可读性和速度,使其成为数据科学爱好者的首选编程语言.Python通常是希望升级其应用程序功能的数据科学家和机器学习专家的首选. 由于其广泛的用途,Python拥有 ...

  5. arduino编码器计数_旋转编码器的工作原理以及如何在Arduino中使用

    在本篇文章中,我们将学习旋转编码器的工作原理以及如何将其与Arduino开发板一起使用.旋转编码器是一种位置传感器,用于确定旋转轴的角度位置.它根据旋转运动产生模拟或数字电信号. Rotary-Enc ...

  6. python制作数据库报表_如何制作数据报表并实现自动化?

    定期的数据报表,包括日报.周报.月报.半年报.年报,是每一位数据运营或数据分析师可能遇到的工作,需求方主要包括产品运营部门和各业务部门.基于不同公司的不同发展阶段,遇到的报表工作"层次&qu ...

  7. python 数据库表结构转为类_Python数据科学实践 | 数据库1

    大家好,基于Python的数据科学实践课程又到来了,大家尽情学习吧.本期内容主要由智亿同学与政委联合推出. 数据库永远是数据管理上最值得使用的工具.而把所收集的大量数据放入数据库之后再处理是数据科学实 ...

  8. matlab 降维工具箱mle,Matlab数据降维工具箱

    [实例简介] Matlab Toolbox for Dimensionality Reduction Matlab数据降维工具箱,包括几乎所有的数据降维方法:PCA.LDA.ICA.MDS.Isoma ...

  9. matlab lda数据降维,LDA有标签数据降维

    之前无标签数据降维PCA,那么像下图带有标签数据,如果用PCA降维将会投影到v轴上,这个投影方差最大,数据将变成不可分状态,LDA将把数据投影加上已有分类这个变量,将数据投影到u轴上 假设原数据分成n ...

最新文章

  1. 使用dplyr进行数据操作(30个实例)
  2. 87. Leetcode 343. 整数拆分 (动态规划-基础题)
  3. arm linux内核调试,kgdb在ARM开发板上调试kernel成功
  4. [源码和文档分享]基于Java的带GUI界面猜数字游戏
  5. hash的算法 java_【数据结构与算法】一致性Hash算法及Java实践
  6. Linux 开发中的常用命令 ( Cygwin 环境也同样适用)
  7. winform布局、控件
  8. Android 匿名共享内存Java接口分析
  9. 【SQL精彩语句】按某一字段分组取最大(小)值所在行的数据
  10. 最新自动发卡网源码V7.0
  11. 毕业设计别再做 XX 管理系统了!!!
  12. 微信小程序 - WXML语法与HTML比较
  13. 软件测试周刊(第31期):所有的伟大 都源于一个勇敢的开始
  14. Java程序员可以做哪些副业?
  15. 图神经网络用于RNA-蛋白质相互作用的新预测
  16. 【U8】禁止UU(UTU)随登陆账套启动(U8V11.0及其以上版本)
  17. CSS 精灵图 + 字体图标
  18. Maven插件仓库地址
  19. 专业导论-课后总结-2019.12.12-V1.0
  20. vue+zrender实现医院体温单

热门文章

  1. 为什么中国做不出《旅行青蛙》这样的游戏?
  2. 快用Python把你女友的图片批量处理,要多炫有多炫
  3. Android篇 | 爱奇艺App启动优化实践分享
  4. matplotlib中坐标轴控制总结
  5. Liunx系统编程篇—进程通信(五)信号
  6. [蓝桥杯AC|Python]利用字母可以组成一些美丽的图形,下面给出了一个例子: ABCDEFG BABCDEF CBABCDE DCBABCD EDCBABC
  7. Unity支付-IAP苹果篇
  8. python装饰器--@property
  9. java实现SMTP邮件服务器
  10. java matcher方法_java.time.Matcher.hitEnd()方法