数据为何要降维

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

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

特征选择

特征选择指根据一定的规则和经验,直接在原有的维度中挑选一部分参与到计算和建模过程,用选择的特征代替所有特征,不改变原有特征,也不产生新的特征值。
特征选择的降维方式好处是可以保留原有维度特征的基础上进行降维,既能满足后续数据处理和建模需求,又能保留维度原本的业务含义,以便于业务理解和应用。对于业务分析性的应用而言,模型的可理解性和可用性很多时候要有限于模型本身的准确率、效率等技术指标。例如,决策树得到的特征规则,可以作为选择用户样本的基础条件,而这些特征规则便是基于输入的维度产生。

维度转换

这个是按照一定数学变换方法,把给定的一组相关变量(维度)通过数学模型将高纬度空间的数据点映射到低纬度空间中,然后利用映射后变量的特征来表示原有变量的总体特征。这种方式是一种产生新维度的过程,转换后的维度并非原来特征,而是之前特征的转化后的表达式,新的特征丢失了原有数据的业务含义。 通过数据维度变换的降维方法是非常重要的降维方法,这种降维方法分为线性降维和非线性降维两种,其中常用的代表算法包括独立成分分析(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 pltx = 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数据预处理 :数据降维相关推荐

  1. 深入浅出Python机器学习9——数据预处理、降维、特征提取及聚类

    数据预处理 使用 StandScaler 进行数据预处理 首先手工生成一些数据:        用make_blobs 函数时,指定了样本数量 n_samples 为 40,分类 centers 为 ...

  2. Py之scikit-learn:机器学习sklearn库的简介、六大基本功能介绍(数据预处理/数据降维/模型选择/分类/回归/聚类)、安装、使用方法(实际问题中如何选择最合适的机器学习算法)之详细攻略

    Py之scikit-learn:机器学习sklearn库的简介(组件/版本迭代).六大基本功能介绍(数据预处理/数据降维/模型选择/分类/回归/聚类).安装.使用方法(实际问题中如何选择最合适的机器学 ...

  3. python抽样_python数据预处理 :数据抽样解析

    何为数据抽样: 抽样是数据处理的一种基本方法,常常伴随着计算资源不足.获取全部数据困难.时效性要求等情况使用. 抽样方法: 一般有四种方法: 随机抽样 直接从整体数据中等概率抽取n个样本.这种方法优势 ...

  4. 一、数据预处理——数据归一化 数据标准化

    一.数据预处理--数据归一化 & 数据标准化 点击标题即可获取文章相关的源代码文件哟! 1.1 数据无量纲化 在机器学习算法实践中,我们往往有着将不同规格的数据转换到同一规格,或不同分布的数据 ...

  5. Python数据预处理数据的方法总结(使用sklearn-preprocessing)

    文章目录 数据预处理思路 数据预处理方法 1 标准化:去均值,方差规模化 2 规模化稀疏数据 3 规模化有异常值的数据 4 正则化Normalization 5 二值化–特征的二值化 6 类别特征编码 ...

  6. 数据预处理+数据清理

    1.概述 实际的数据库极易受噪声.缺失值和不一致数据的侵扰,因为数据库太大,并且多半来自多个异种数据源.低质量的数据将会导致低质量的挖掘结果.有大量的数据预处理技术: - - 数据清理:可以用来清楚数 ...

  7. 数据预处理 -----数据分箱

    一.定义 数据分箱(Binning)作为数据预处理的一部分,也被称为离散分箱或数据分段.其实分箱的概念其实很好理解,它的本质上就是把数据进行分组. 分箱就是把数据按特定的规则进行分组,实现数据的离散化 ...

  8. 超全面 pandas 数据预处理+数据概览 处理技巧整理(持续更新版)

    这篇文章主要是整理下使用pandas的一些技巧,因为经常不用它,这些指令忘得真的很快.前段时间在数模美赛中已经栽过跟头了,不希望以后遇到相关问题的时候还去网上查(主要是太杂了).可能读者跟我有一样的问 ...

  9. 数据标准化处理方法_机器学习系列-数据预处理-数据标准化(归一化)-理论

    在做一个具体的机器学习项目中,拿到收集到的数据后,一般都是需要做数据预处理,而标准化(暂时不考虑标准化和归一化的主要区别)是数据预处理中一个比较重要的环节,那么为什么需要对数据进行标准化处理呢? 数据 ...

  10. Pandas数据预处理|数据清理

    Pandas数据预处理(Data Preprocess)-数据清理 日期:2021/4/27 作者:就叫易易好了 注:本篇文章采用的数据集为"vgsales.csv",下载链接:h ...

最新文章

  1. sysaux表空间数据库块损坏/游离块的修复
  2. 如何在安装程序中判断操作系统是否是64位 inno
  3. Engineering Department Bulletin News and information for the Department
  4. Linux系统中fflush,sync,syncfs,fdatasync,fsync的比较
  5. springboot+vue全栈开发_全栈的自我修养: 002使用@vue/cli进行vue环境搭建 (使用Vue,SpringBoot,Flask完成前后端分离)...
  6. 帆软报表-快速入门(持续更新)
  7. 安装Ubuntu操作
  8. 使用病毒数据库离线更新包
  9. 恐怖黎明 联网显示无法连接服务器,豪横的刷刷刷 2021年最值得体验的暗黑类游戏...
  10. 通过多个点,计算出中心点
  11. 【数学】B066_LQ_拯救阿拉德大陆(普通容理 / 进阶(写法疑惑))
  12. python分析股票主力_python如何获取股票数据,python股票分析系统
  13. 通过平面向量角度认知世界
  14. IITP:截止2017年韩国人工智能专利排名全球第三
  15. Whistle强大的WEB调试代理工具
  16. 放下心来玩的 ,魔兽世界是要结伴来玩的
  17. 数据结构与算法-Part6——数组与广义表
  18. mac c语言 gui,MAC GUI编程编译wxWidgets源码教程
  19. H.264 视频格式
  20. 客栈(酒店)管理系统(源码+数据库+设计文档)

热门文章

  1. android短信发送和接受
  2. 程序员到35岁就会失业吗?
  3. 100M百兆POE网口,如何做好过电压防浪涌静电防护?
  4. 云计算、边缘计算、雾计算
  5. MAC 安装使用 MAMP
  6. guns框架分页实现
  7. SCI文献采集方法:SCI,CSCI等各个期刊论文检索方法以及文献分类管理的方法
  8. 移远RM500Q_5G模组规格书
  9. 一文读懂2016上半年ICT产业政策供给:过度与短缺
  10. INDEX FULL SCAN vs INDEX FAST FULL SCAN