您好,欢迎来到意榕旅游网。
搜索
您的当前位置:首页python数据预处理方式:数据降维

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

来源:意榕旅游网
python数据预处理⽅式:数据降维

数据为何要降维

数据降维可以降低模型的计算量并减少模型运⾏时间、降低噪⾳变量信息对于模型结果的影响、便于通过可视化⽅式展⽰归约后的维度信息并减少数据存储空间。因此,⼤多数情况下,当我们⾯临⾼维数据时,都需要对数据做降维处理。数据降维有两种⽅式:特征选择,维度转换特征选择

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

特征选择的降维⽅式好处是可以保留原有维度特征的基础上进⾏降维,既能满⾜后续数据处理和建模需求,⼜能保留维度原本的业务含义,以便于业务理解和应⽤。对于业务分析性的应⽤⽽⾔,模型的可理解性和可⽤性很多时候要有限于模型本⾝的准确率、效率等技术指标。例如,决策树得到的特征规则,可以作为选择⽤户样本的基础条件,⽽这些特征规则便是基于输⼊的维度产⽣。维度转换

这个是按照⼀定数学变换⽅法,把给定的⼀组相关变量(维度)通过数学模型将⾼纬度空间的数据点映射到低纬度空间中,然后利⽤映射后变量的特征来表⽰原有变量的总体特征。这种⽅式是⼀种产⽣新维度的过程,转换后的维度并⾮原来特征,⽽是之前特征的转化后的表达式,新的特征丢失了原有数据的业务含义。 通过数据维度变换的降维⽅法是⾮常重要的降维⽅法,这种降维⽅法分为线性降维和⾮线性降维两种,其中常⽤的代表算法包括独⽴成分分析(ICA),主成分分析(PCA),因⼦分析(Factor Analysis,FA),线性判别分析(LDA),局部线性嵌⼊(LLE),核主成分分析(Kernel PCA)等。使⽤python做降维处理

import pandas as pdimport numpy as np

from sklearn.tree import DecisionTreeClassifierfrom 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. 4.49 1.10 71.78 0.06 8.75 0.0 0.0 11 1.51761 13. 3.60 1.36 72.73 0.48 7.83 0.0 0.0 12 1.51618 13.53 3.55 1. 72.99 0.39 7.78 0.0 0.0 13 1.51766 13.21 3.69 1.29 72.61 0.57 8.22 0.0 0.0 14 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.026227, 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数据预处理⽅式 :数据降维就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- yrrf.cn 版权所有 赣ICP备2024042794号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务