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中使用Boolean操作符做真值测试实例
Jan 30 Python
python实现指定文件夹下的指定文件移动到指定位置
Sep 17 Python
解决PyCharm不运行脚本,而是运行单元测试的问题
Jan 17 Python
Django 大文件下载实现过程解析
Aug 01 Python
简单分析python的类变量、实例变量
Aug 23 Python
python画微信表情符的实例代码
Oct 09 Python
python 多维高斯分布数据生成方式
Dec 09 Python
Python实现自动访问网页的例子
Feb 21 Python
解决在keras中使用model.save()函数保存模型失败的问题
May 21 Python
celery在python爬虫中定时操作实例讲解
Nov 27 Python
python实现计算图形面积
Feb 22 Python
Pyhton模块和包相关知识总结
May 12 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代码的50个实用技巧必备(上)
2016/01/22 PHP
thinkPHP通用控制器实现方法示例
2017/11/23 PHP
用javascript做拖动布局的思路
2008/05/31 Javascript
简单的ajax连接库分享(不用jquery的ajax)
2014/01/19 Javascript
jfreechart插件将数据展示成饼状图、柱状图和折线图
2015/04/13 Javascript
javascript实现在网页任意处点左键弹出隐藏菜单的方法
2015/05/13 Javascript
JS仿淘宝实现的简单滑动门效果代码
2015/10/14 Javascript
javascript数据结构之双链表插入排序实例详解
2015/11/25 Javascript
基于jQuery实现带动画效果超炫酷的弹出对话框(附源码下载)
2016/02/22 Javascript
JavaScript的设计模式经典之建造者模式
2016/02/24 Javascript
百度地图给map添加右键菜单(判断是否为marker)
2016/03/04 Javascript
【经典源码收藏】jQuery实用代码片段(筛选,搜索,样式,清除默认值,多选等)
2016/06/07 Javascript
解决vue-cli3 使用子目录部署问题
2018/07/19 Javascript
JS与jQuery判断文本框还剩多少字符可以输入的方法
2018/09/01 jQuery
微信小程序canvas拖拽、截图组件功能
2018/09/04 Javascript
在vue项目中引入vue-beauty操作方法
2019/02/11 Javascript
浅谈Vue.js 关于页面加载完成后执行一个方法的问题
2019/04/01 Javascript
Vue实现购物车的全选、单选、显示商品价格代码实例
2019/05/06 Javascript
node中实现删除目录的几种方法
2019/06/24 Javascript
Node.js Domain 模块实例详解
2020/03/18 Javascript
[03:03]DOTA2 2017国际邀请赛开幕战队入场仪式
2017/08/09 DOTA
python整合ffmpeg实现视频文件的批量转换
2019/05/31 Python
Windows下Pycharm远程连接虚拟机中Centos下的Python环境(图文教程详解)
2020/03/19 Python
Python super()函数使用及多重继承
2020/05/06 Python
Keras自定义IOU方式
2020/06/10 Python
详解python中的lambda与sorted函数
2020/09/04 Python
python画图时设置分辨率和画布大小的实现(plt.figure())
2021/01/08 Python
简单掌握CSS3将文字描边及填充文字颜色的方法
2016/03/07 HTML / CSS
详解HTML5 LocalStorage 本地存储
2016/12/23 HTML / CSS
CheapTickets泰国:廉价航班,查看促销价格并预订机票
2019/12/28 全球购物
干部个人对照检查材料
2014/08/25 职场文书
教学改革问题查摆整改措施
2014/09/27 职场文书
社区务虚会发言材料
2014/10/20 职场文书
党支部鉴定意见
2015/06/02 职场文书
2016年小学端午节活动总结
2016/04/01 职场文书
导游词之凤凰古城
2019/10/22 职场文书