【信用评分预测模型(三)】PCA主成成分分析


前言

主成分分析(Principal Components Analysis),简称PCA,是一种数据降维技术,用于数据预处理。
PCA的一般步骤是:先对原始数据零均值化,然后求协方差矩阵,接着对协方差矩阵求特征向量和特征值,这些特征向量组成了新的特征空间。矩阵的主成分就是其协方差矩阵对应的特征向量,按照对应的特征值大小进行排序,最大的特征值就是第一主成分,其次是第二主成分,以此类推。
总而言之,PCA的作用是:减少数据集的维数,同时保留尽可能多的信息。


一、PCA的利弊

1.优点:

  1. 减少数据维度,简化数据,降低计算复杂度;
  2. 提取数据的关键信息;
  3. 能够发现数据的隐藏;
  4. 操作简单,可用spss进行PCA降维;

2.缺点:

  1. 可能会丢失一些重要信息;
  2. 对噪音数据敏感;
  3. 可能存在多重共线性,导致结果不准确;

要确定是否存在多重共线性,可用VIF检验。

二、PCA步骤

1.标准化

这一步已经在下面链接的文章所展示了:

https://blog.csdn.net/m0_65157892/article/details/129523883?spm=1001.2014.3001.5502

2.VIF多重共线性检验

(1)缺失值处理,VIF检验

由于进行多重共线性检验的数据不能存在空缺值,故要先对数据进行空缺值填充,这里由于空缺数据量不多,故采用fillna(0)的方法。

代码如下:

x1 = df['x1'].fillna(0)
#x12 = x1.fillna(0)
#print(x1.isnull().sum())
#VIF检验
X  = sm.add_constant(df.loc[:,[ 'x2','x3','x4','x5','x6','x7','x8','x9']])
X1 = pd.concat([x1,X],axis= 1)
#print(X1)
vif = pd.DataFrame()
vif["Ficture"] = X1.columns
vif["Fctor"] = [variance_inflation_factor(X1.values,i) for i in range(X1.shape[1])]
print('经过VIF检验的多重共线性检验')
print(vif)

当VIF值大于10时就说明存在多重共线性,需要剔除。

3.模型训练

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

通过无监督学习之后,将原来的数据转化为将为后的数据。

4.方差百分比与累计方差贡献

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("方差百分比:\n",res)
print("累计方差贡献:\n",res2)  #这里得到的就是累计方差贡献
# print (pca.explained_variance_ratio_)
print (pca.explained_variance_)
res3 =  pca.explained_variance_

在这里插入图片描述
可以将所得百分比导入到excel中以供查看。


总结

PCA降维主要就是将原有的数据降维,减少变量,方便我们后续的分析。

猜你喜欢

转载自blog.csdn.net/m0_65157892/article/details/129633768
今日推荐