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 相关文章推荐
Python3实现连接SQLite数据库的方法
Aug 23 Python
Python基于smtplib实现异步发送邮件服务
May 28 Python
Python实现简单的文件传输与MySQL备份的脚本分享
Jan 03 Python
Python创建普通菜单示例【基于win32ui模块】
May 09 Python
Python读取mat文件,并保存为pickle格式的方法
Oct 23 Python
对Python2与Python3中__bool__方法的差异详解
Nov 01 Python
python爬虫之爬取百度音乐的实现方法
Aug 24 Python
Django框架模板用法入门教程
Nov 04 Python
win10系统Anaconda和Pycharm的Tensorflow2.0之CPU和GPU版本安装教程
Dec 03 Python
Python写出新冠状病毒确诊人数地图的方法
Feb 12 Python
python如何查看网页代码
Jun 07 Python
python递归函数用法详解
Oct 26 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 全角转半角实现代码
2010/05/16 PHP
深入分析使用mysql_fetch_object()以对象的形式返回查询结果
2013/06/05 PHP
php curl模拟post请求小实例
2013/11/13 PHP
PHP开启opcache提升代码性能
2015/04/26 PHP
javascript中关于执行环境的杂谈
2011/08/14 Javascript
document.compatMode的CSS1compat使用介绍
2014/04/03 Javascript
微信小程序 点击控件后选中其它反选实例详解
2017/02/21 Javascript
通过学习bootstrop导航条学会修改bootstrop颜色基调
2017/06/11 Javascript
iscroll.js滚动加载实例详解
2017/07/18 Javascript
Angular4学习笔记之准备和环境搭建项目
2017/08/01 Javascript
JavaScript简单实现合并两个Json对象的方法示例
2017/10/16 Javascript
Bootstrap框架建立树形菜单(Tree)的实例代码
2017/10/30 Javascript
Vue下路由History模式打包后页面空白的解决方法
2018/06/29 Javascript
Jquery的Ajax技术使用方法
2019/01/21 jQuery
Python温度转换实例分析
2018/01/17 Python
Python numpy实现二维数组和一维数组拼接的方法
2018/06/05 Python
TensorFlow数据输入的方法示例
2018/06/19 Python
Pycharm 字体大小调整设置的方法实现
2019/09/27 Python
pytorch实现Tensor变量之间的转换
2020/02/17 Python
python 的numpy库中的mean()函数用法介绍
2020/03/03 Python
Django用数据库表反向生成models类知识点详解
2020/03/25 Python
Python爬虫自动化爬取b站实时弹幕实例方法
2021/01/26 Python
IE8下CSS3选择器nth-child() 不兼容问题的解决方法
2016/11/16 HTML / CSS
瑞士领先的网上超市:LeShop.ch
2018/11/14 全球购物
英国比较机场停车场网站:Airport Parking Essentials
2019/12/01 全球购物
大学生军训自我鉴定范文
2014/09/18 职场文书
大学生村官个人对照检查材料(群众路线)
2014/09/26 职场文书
2014年护士工作总结范文
2014/11/11 职场文书
2015年学校图书室工作总结
2015/05/19 职场文书
运动会加油稿
2015/07/22 职场文书
小学生班干部竞选稿
2015/11/20 职场文书
2016年党员公开承诺书范文
2016/03/24 职场文书
来探秘“德国中小企业”的成功之道
2019/07/26 职场文书
React-vscode使用jsx语法的问题及解决方法
2021/06/21 Javascript
JavaScript实现栈结构详细过程
2021/12/06 Javascript
Nginx 502 bad gateway错误解决的九种方案及原因
2022/08/14 Servers