信用评分预测模型(三)--主成分分析PCA降维


Author:Liedra
https://www.cnblogs.com/LieDra/
下面是对数据进行预处理主成分分析的过程。
主成分分析(Principal Components Analysis),简称PCA,是一种数据降维技术,用于数据预处理。
PCA的一般步骤是:先对原始数据零均值化,然后求协方差矩阵,接着对协方差矩阵求特征向量和特征值,这些特征向量组成了新的特征空间。矩阵的主成分就是其协方差矩阵对应的特征向量,按照对应的特征值大小进行排序,最大的特征值就是第一主成分,其次是第二主成分,以此类推。
通过使用 SPSS 软件对该处理后的数据集进行主成分分析,得到总方差解释表如下:
总方差解释.png

我们选取累积方差贡献率达 80%以上的 13 个 维度,作为原始数据集 20 维降维后的结果(因此下面代码中n_components=13参数为13)。

代码示例

'''
version:
author:
Method:PCA--主成分分析
'''

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# from sklearn.model_selection import train_test_split
from sklearn.decomposition import PCA

readFileName="D:/study/5/code/python/python Data analysis and mining/class/dataset/german-全标准化.xls" #这里路径注意修改

# 读取excel
df=pd.read_excel(readFileName)
list_columns=list(df.columns[:-1])
x=df.ix[:,:-1]
# print(x)
y=df.ix[:,-1]
names=x.columns
# X_train, X_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state=0)


# 训练,
# pca = PCA(n_components=5)  n_components表示要保留的特征个数
pca = PCA(random_state=5,n_components=13)
pca.fit(x) # PCA是无监督学习算法,此处y自然等于None。
result = pca.transform(x) # 将数据转换为降维后的数据

print(result)
res = pca.explained_variance_ratio_  #explained_variance_ratio_:返回 所保留的n个成分各自的方差百分比。
res2 = [0]*len(res)
for i in range(len(res)):
    if i==0:
        res2[i]=res[i]
    else:
        res2[i] = res2[i-1]+res[i] 
print(res2)  #这里得到的就是累计方差贡献
# print (pca.explained_variance_ratio_)
print (pca.explained_variance_)


# 写入文件中
# col = {}
# acolumns = []
# for i in range(13):
#     acolumns.append('a'+str(i+1))
#     col['a'+str(i+1)]=[]
#     for each in result:
#         col['a'+str(i+1)].append(each[i])
# acolumns.append('result')
# col['result']=list(y)
# result2 = pd.DataFrame(col,columns=acolumns)
# result2.to_excel(r"dataset\german-pca.xls")

主成分分析后,得到的新的数据维度减少,在此例中使得处理的数据量变少,使用起来更加方便。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM