python数据降维代码

 

'''…………………………………………python数据降维………………………………START'''

#本示例中,将分别使用sklearn的DecisionTreeClassifier来判断变量重要性并选择变量,通过PCA进行维度转换。

import numpy as np
from sklearn.tree import DecisionTreeClassifier
from sklearn.decomposition import PCA

#读取数据文件
data=np.loadtxt(r'd:\Users\zhanggl21\Desktop\data快捷\(9)Python数据分析与数据化运营.pdf\chapter3\data1.txt')
x=data[:,:-1]#获得输入的x
y=data[:,-1]#获得目标变量y
print(x[0],y[0])#打印输出x和y的第一条记录

#使用sklearn的DecisionTreeClassifier判断变量的重要性
model_tree=DecisionTreeClassifier(random_state=0)#建立分类决策树模型对象
model_tree.fit(x,y)#将数据集的维度和目标变量输入模型
feature_importance=model_tree.feature_importances_#获得所有变量的重要性得分
print(feature_importance)#打印输出
'''
print(feature_importance)#打印输出
[0.03331054 0.01513967 0.02199713 0.119727   0.47930312 0.04776297
 0.17111746 0.02585441 0.02012725 0.06566044]

从变量重要性得分看出,第4/5/7三个变量的重要性最高,分别约为0.12、0.48、0.17,三者得分之和约等于77%,这意味着仅仅这3个变量已经具有非常显著的并且足以代表所有变量参与模型计算的能力。因
此,可以选择这3个变量参与后续模型计算。

注:一般情况下,如果选择的变量重要性总得分接近80%,基本上已经可以解释大部分的特征变化了。变量重要性的总得分为1,值越大重要性越高。
'''

#使用sklearn的PCA进行维度转换
'''
第四部分为使用Sklearn的PCA进行维度转换。该部分的实现思路与
DecisionTree-Classifier类似,不同之处在于当创建模型对象之后,我们
使用fit方法仅输入x进行PCA训练(y不需要转换),然后通过transform
进行转换,fit和tranform可以合并为一步fit_transform(x)。但是考虑到
PCA通过fit方法得到的映射关系在后续会用到,因此这里单独使用
transform实现对数据集的降维转换。在得到PCA训练模型后,通过模型
的components_、explained_variance_、explained_variance_ratio_属性分
别获取转换后的所有主成分、各主成分的方差和各主成分的方差占比。
'''
model_pca=PCA()#建立PCA模型对象
model_pca.fit(x)#将数据集输入对象
model_pca.transform(x)#对数据集进行转换映射
components=model_pca.components_#获得转换后的所有主成分
components_var=model_pca.explained_variance_#获得各主成分的方差
components_var_ratio=model_pca.explained_variance_ratio_#获得各主成分的方差占比
print(components[:2])#打印输出前两个主成分
print(components_var[:2])#打印输出前两个主成分的方差
print(components_var_ratio)#打印输出所有主成分的方差占比
'''
print(components_var_ratio)#打印输出所有主成分的方差占比
[3.38339364e-01 1.77054475e-01 8.92753857e-02 8.73655166e-02
 8.23542686e-02 8.03329836e-02 7.38094896e-02 7.14685179e-02
 2.74043438e-33 9.71827490e-34]


上述结果中,所有主成分的方差占比是选择主成分数量的关键,因
为PCA降维的基本思想是根据方差占比来选择主成分的数量。通过该结
果可以看出,前6项主成分的方差占比之和
components_var_ratio[:5].sum()约等于77%,取前6项主成分基本可以
作为转换后的主成分参与后续模型计算。




在建立PCA模型时,可通过n_components指定要获得的主成
分数量,但通常不建议采用这种方式,原因是无法根据各主成分的方差
占比判断到底指定多少个主成分最合适。当然,如果对于主成分或转换
后变量的数量有强烈约束,那么直接指定components的方法是行之有效
的。
上述过程中,需要考虑的关键点是:
·如何根据变量重要性得分选择原始变量;
·如何通过方差占比选择合适的主成分。

本小节示例中,主要用了几个知识点:
·通过Numpy的loadtxt读取数据文件;
·对Numpy矩阵进行切片;
·通过Sklearn的DecisionTreeClassifier建立决策树模型,并获得变量
重要性属性;
·通过使用sklearn的PCA建立PCA模型,并对数据集进行维度转换降
维,并从PCA模型中获得有关主成分、方差和方差占比属性。
'''



'''…………………………………………python数据降维………………………………END'''

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值