数据为何要降维

数据降维可以降低模型的计算量并减少模型运行时间、降低噪音变量信息对于模型结果的影响、便于通过可视化方式展示归约后的维度信息并减少数据存储空间。因此,大多数情况下,当我们面临高维数据时,都需要对数据做降维处理。

数据降维有两种方式:特征选择,维度转换

特征选择

特征选择指根据一定的规则和经验,直接在原有的维度中挑选一部分参与到计算和建模过程,用选择的特征代替所有特征,不改变原有特征,也不产生新的特征值。

特征选择的降维方式好处是可以保留原有维度特征的基础上进行降维,既能满足后续数据处理和建模需求,又能保留维度原本的业务含义,以便于业务理解和应用。对于业务分析性的应用而言,模型的可理解性和可用性很多时候要有限于模型本身的准确率、效率等技术指标。例如,决策树得到的特征规则,可以作为选择用户样本的基础条件,而这些特征规则便是基于输入的维度产生。

维度转换

这个是按照一定数学变换方法,把给定的一组相关变量(维度)通过数学模型将高纬度空间的数据点映射到低纬度空间中,然后利用映射后变量的特征来表示原有变量的总体特征。这种方式是一种产生新维度的过程,转换后的维度并非原来特征,而是之前特征的转化后的表达式,新的特征丢失了原有数据的业务含义。 通过数据维度变换的降维方法是非常重要的降维方法,这种降维方法分为线性降维和非线性降维两种,其中常用的代表算法包括独立成分分析(ICA),主成分分析(PCA),因子分析(Factor Analysis,FA),线性判别分析(LDA),局部线性嵌入(LLE),核主成分分析(Kernel PCA)等。

使用python做降维处理

import pandas as pd  import numpy as np  from sklearn.tree import DecisionTreeClassifier  from sklearn.decomposition import PCA    # 数据导入  df = pd.read_csv('https://raw.githubusercontent.com/ffzs/dataset/master/glass.csv')    # 看一下数据是  df.head()         RI   Na Mg Al   Si   K   Ca   Ba   Fe  Type  0 1.52101 13.64 4.49 1.10 71.78 0.06 8.75 0.0 0.0 1  1 1.51761 13.89 3.60 1.36 72.73 0.48 7.83 0.0 0.0 1  2 1.51618 13.53 3.55 1.54 72.99 0.39 7.78 0.0 0.0 1  3 1.51766 13.21 3.69 1.29 72.61 0.57 8.22 0.0 0.0 1  4 1.51742 13.27 3.62 1.24 73.08 0.55 8.07 0.0 0.0 1    # 有无缺失值  df.isna().values.any()  # False 没有缺失值    # 获取特征值  X = df.iloc[:, :-1].values  # 获取标签值  Y = df.iloc[:,[-1]].values  # 使用sklearn 的DecisionTreeClassifier判断变量重要性  # 建立分类决策树模型对象  dt_model = DecisionTreeClassifier(random_state=1)  # 将数据集的维度和目标变量输入模型  dt_model.fit(X, Y)  # 获取所有变量的重要性  feature_importance = dt_model.feature_importances_  feature_importance  # 结果如下  # array([0.20462132, 0.06426227, 0.16799114, 0.15372793, 0.07410088, 0.02786222, 0.09301948, 0.16519298, 0.04922178])  # 做可视化  import matplotlib.pyplot as plt    x = range(len(df.columns[:-1]))   plt.bar(left= x, height=feature_importance)  plt.xticks(x, df.columns[:-1])

可见Rl、Mg、Al、Ba的重要性比较高,一般情况下变量重要性得分接近80%,基本上已经可以解释大部分的特征变化。

PCA降维

# 使用sklearn的PCA进行维度转换  # 建立PCA模型对象 n_components控制输出特征个数  pca_model = PCA(n_components=3)  # 将数据集输入模型  pca_model.fit(X)  # 对数据集进行转换映射  pca_model.transform(X)  # 获得转换后的所有主成分  components = pca_model.components_  # 获得各主成分的方差  components_var = pca_model.explained_variance_  # 获取主成分的方差占比  components_var_ratio = pca_model.explained_variance_ratio_  # 打印方差  print(np.round(components_var,3))  # [3.002 1.659 0.68 ]  # 打印方差占比  print(np.round(components_var_ratio,3))  # [0.476 0.263 0.108]

python降维之时间类型数据的处理_python数据预处理方式 :数据降维相关推荐

  1. python降维之时间类型数据的处理_python学习笔记之使用sklearn进行PCA数据降维

    只能说scikit-learn实在是太强大了,三言两语就能搞定PCA 1.函数原型及参数说明 sklearn.decomposition.PCA(n_components=None, copy=Tru ...

  2. python降维之时间类型数据的处理_Python学习数据降维方法

    使用sklearn库初次尝试PCA和T-SNE,原理还不太理解,写错了请一定指出,或者等我自己发现hhhh 1. PCA 首先读入sklearn里自带的鸢尾花数据库,并调用相关的包,再查看一下这些数据 ...

  3. python降维之时间类型数据的处理_【Python算法】数据降维概述

    数据降维概述 1.数据降维概述 所谓的数据降维就是指采用某种映射方法,将原高维空间中的数据点映射到低维度的空间中,可以解决大规模特征下的数据显示问题,使得数据集更易使用,降低后续算法的计算,消除噪声影 ...

  4. Oracle中通过存储过程,Function,触发器实现解析时间类型的字段并插入的对应的数据表中...

    摘要:之前在项目中解决了插入字符串类型的数据,今天试着写了一个插入date类型的字段,成功了,现在记录一下,以便以后查看: 一:首先建立一个根据xml节点名称获取对应的xml值的Function.sq ...

  5. 【Python】日期时间类型格式与时间戳转换

    获取当前时间 time.time():返回当前时间(系统时间)的时间戳 时间类型转换 时间类型 time库中定义的时间结构体struct_time 表示日期.时间的字符串 从UTC零时区的1970年1 ...

  6. python中的数字类型格式与运算_Python中的数字类型格式与运算

    出品 Python中的数字(Digital)与数学中的数字相同,可以通过各种各样的运算符实现各种计算,在Python中数字类型的数据格式分为以下几种: 1.整数型(integer) 2.浮点数(flo ...

  7. python的所有数据类型都可以相互转化吗_Python中如何进行数据类型转换?

    原标题:Python中如何进行数据类型转换? 这一次要讲的是Python中的数据类型转换,Python中的数据类型转换是什么?就是将数据由当前类型变化为其他类型的操作就是数据类型转换.数据类型转换分为 ...

  8. python爬微博数据合法吗_Python 免登录微博数据爬虫(仅研究使用)

    微博数据是非常有价值的数据,这些数据可以用作我们进行一些系统开发时的数据源, 比如前段时间发过的:Python 短文本识别个体是否有自杀倾向,在此文中,我们使用微博绝望树洞的数据,利用SVM做了一个简 ...

  9. python降维之时间类型数据的处理_使用Python进行数据降维|线性降维

    前言 为什么要进行数据降维?直观地好处是维度降低了,便于计算和可视化,其深层次的意义在于有效信息的提取综合及无用信息的摈弃,并且数据降维保留了原始数据的信息,我们就可以用降维的数据进行机器学习模型的训 ...

最新文章

  1. 如何删除UITableView中的空单元格? [重复]
  2. synchronized底层是怎么实现的?年薪超过80万!
  3. IIS和.net framework 4.0的安装顺序导致的问题
  4. iOS轻量分组日志工具 Log4OC
  5. ProgressDialog使用总结
  6. 继承的概念和实现 、 super关键字 、 Object常见方法、抽象类、接口、模板方法模式、成员内部类、匿名内部类
  7. 给ULWOW 写的广告效果(缓动切换)
  8. xMenuTools(超实用右键菜单工具) v7.6
  9. 汇编画图题:存储器扩展(重要)
  10. 一文搞懂Java泛型到底是什么东东
  11. 21年大学统考计算机报名时间,2017年大学计算机基础试题题库及答案
  12. [20170209]索引范围访问2.txt
  13. Windos下的UPD服务器端的C++实现
  14. 充电水滴融合特效 html+css
  15. JAVA编程的第二天JAVA编程环境搭建与JAVA入门案例
  16. c++编译报错 error c2248: “xxx:xxx“:无法访问private成员(在“xxx“类中声明)
  17. 统计字母个数(java语言实现)
  18. 将Android项目发布到Jcenter
  19. 华硕笔记本电脑怎么恢复出厂设置,华硕恢复出厂设置教程
  20. 【资料分享】基于51单片机的智能指纹考勤系统设计-原理图-PCB-程序-报告、基于51单片机和MAX1898的智能手机充电器设计

热门文章

  1. kernel something
  2. 用户回调期间遇到未经处理的异常
  3. 硬盘相关知识:磁头、磁道、扇区、柱面
  4. 利用python读取csv文件中url并下载
  5. 小程序开发--content-type类型中application/json和application/x-www-form-urlencoded区别
  6. ddms工具使用以及案例
  7. IA-32、IA-64、AMD64、intel64、x86、x86-64、x64等等关于CPU本身的区别
  8. 创新案例 | Web3典范BrainTrust如何打造DAO增长飞轮3年扩张50倍
  9. IOS模仿IOS系统的assistive-touch
  10. UG7.5汽车模具设计视频教程-把手灯罩后视镜模具设计