python数据预处理方式 :数据降维


Posted in Python onFebruary 24, 2020

数据为何要降维

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

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

特征选择

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

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

维度转换

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

python数据预处理方式 :数据降维

可见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 相关文章推荐
简单介绍Python中的JSON使用
Apr 28 Python
pandas带有重复索引操作方法
Jun 08 Python
python 应用之Pycharm 新建模板默认添加编码格式-作者-时间等信息【推荐】
Jun 17 Python
结合OpenCV与TensorFlow进行人脸识别的实现
Oct 10 Python
python实现树的深度优先遍历与广度优先遍历详解
Oct 26 Python
TFRecord格式存储数据与队列读取实例
Jan 21 Python
Python新手学习标准库模块命名
May 29 Python
python中加背景音乐如何操作
Jul 19 Python
深入了解Python 变量作用域
Jul 24 Python
解决python和pycharm安装gmpy2 出现ERROR的问题
Aug 28 Python
python 基于opencv实现高斯平滑
Dec 18 Python
python元组拆包实现方法
Feb 28 Python
python实现PCA降维的示例详解
Feb 24 #Python
Python sklearn库实现PCA教程(以鸢尾花分类为例)
Feb 24 #Python
python 线性回归分析模型检验标准--拟合优度详解
Feb 24 #Python
最小二乘法及其python实现详解
Feb 24 #Python
在Python 的线程中运行协程的方法
Feb 24 #Python
Python 爬取必应壁纸的实例讲解
Feb 24 #Python
Python unittest工作原理和使用过程解析
Feb 24 #Python
You might like
PHP 身份验证方面的函数
2009/10/11 PHP
php使用imagick模块实现图片缩放、裁剪、压缩示例
2014/04/17 PHP
PHP中array_map与array_column之间的关系分析
2014/08/19 PHP
php中ob_flush函数和flush函数用法分析
2015/03/18 PHP
JS 无法通过W3C验证的处理方法
2010/03/09 Javascript
JSON.parse 解析字符串出错的解决方法
2010/07/08 Javascript
js Array对象的扩展函数代码
2013/04/24 Javascript
Jquery实现侧边栏跟随滚动条固定(兼容IE6)
2014/04/02 Javascript
在Javascript中处理字符串之big()方法的使用
2015/06/08 Javascript
JavaScript实现图片轮播的方法
2015/07/31 Javascript
js实现改进的仿蓝色论坛导航菜单效果代码
2015/09/06 Javascript
使用angularjs创建简单表格
2016/01/21 Javascript
jQuery mobile在页面加载时添加加载中效果 document.ready 和window.onload执行顺序比较
2016/07/14 Javascript
Vue表单实例代码
2016/09/05 Javascript
js实现图片360度旋转
2017/01/22 Javascript
浅谈js中用$(#ID)来作为选择器的问题(id重复的时候)
2017/02/14 Javascript
JS实现浏览器打印、打印预览示例
2017/02/28 Javascript
vue.js配合$.post从后台获取数据简单demo分享
2018/08/11 Javascript
通过vue手动封装on、emit、off的代码详解
2019/05/29 Javascript
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
Python3基础之基本数据类型概述
2014/08/13 Python
Python使用函数默认值实现函数静态变量的方法
2014/08/18 Python
Python3.x中自定义比较函数
2015/04/24 Python
使用python装饰器计算函数运行时间的实例
2018/04/21 Python
BP神经网络原理及Python实现代码
2018/12/18 Python
详解js文件通过python访问数据库方法
2019/03/03 Python
Django项目主urls导入应用中views的红线问题解决
2019/08/10 Python
python实现mean-shift聚类算法
2020/06/10 Python
Sephora丝芙兰菲律宾官方网站:购买化妆品和护肤品
2017/04/05 全球购物
来自全球大都市的高级街头服饰:Pegador
2018/01/03 全球购物
美国时尚大码女装购物网站:Avenue
2019/05/24 全球购物
倩碧澳大利亚官网:Clinique澳大利亚
2019/07/22 全球购物
Viking比利时:购买办公用品
2019/10/30 全球购物
程序员求职信
2014/04/16 职场文书
JavaScript控制台的更多功能
2021/04/28 Javascript
总结Python连接CS2000的详细步骤
2021/06/23 Python