目 录
二、实验环境... 1
三、实验内容... 1
3.1 导入数据... 2
3.2 求相关系数矩阵.. 3
3.3 数据规范化处理.. 3
3.4 主成分分析... 4
四 实验心得... 5
一、实验目的
(1)理解主成分分析的思想;
(2)掌握主成分分析方法的步骤;
(3)能熟练地使用主成分分析方法分析相应的数据。
二、实验环境
(1)操作系统:windows11;
(2)python版本:3.10;
(3)Python开发环境:pycharm、jupyter notebook。
三、实验内容
某金融服务公司为了了解贷款客户的信用程度,评价客户的信用等级,采用信用评级常用的5C(能力,品格,担保,资本,环境)方法对15名客户进行打分,由此判断客户违约的可能性。
品格:指客户的名誉;
能力:指客户的偿还能力;
资本:指客户的财务实力和财务状况;
担保:指对申请贷款项担保的覆盖程度;
环境:指外部经济政策环境对客户的影响;
由于各项指标的难易程度不同,因此需要对5项指标进行赋权,以便能够更加合理的对15名客户进行评价。
3.1 导入数据
将上图的数据编辑在txt文本中,便于后续导入程序,如下图所示:
编写代码使用pandas中的read_csv方法导入文本数据,参数保证:第0行为标题行,单元之间以空格分隔,代码如下:
import pandas as pd |
运行结果如下:
3.2 求相关系数矩阵
求解相关系数矩阵可以让我们进一步了解数据属性间的相关情况,便于后续数据处理。使用iloc方法获取数据的后5列,随后使用corr方法求出5个属性间的相关系数,代码如下:
x = data.iloc[:,1:]
#求相关系数矩阵
r = x.corr()
r |
运行结果如下:
3.3 数据规范化处理
标准化后的数据可以消除数据中量纲和量级的影响,提取出数据的主要特征。引入sklearn.preprocessing的StandardScaler方法对数据进行标准化,代码如下:
#数据规范化处理
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaler.fit(x)
x = scaler.transform(x)
x |
运行结果如下,将每个属性都转化为均值为0,方程为1的正态分布形式,一共得到了15个5维向量,表示15个用户标准化后的信息:
3.4 主成分分析
使用sklearn.decomposition中的PCA方法进行主成分分析,PCA(n_components=0.95)将选择足够的主成分来解释至少95%的数据方差。然后,这些主成分将被用于转换数据集X,生成新的低维表示Y。代码如下:
#主成分分析
from sklearn.decomposition import PCA
pca = PCA(n_components = 0.95)
pca.fit(x)
y = pca.transform(x)
tzxl = pca.components_
tz=pca.explained_variance_
gxl=pca.explained_variance_ratio_
Y00=sum(x[0,:]*tzxl[0,:])
Y01=sum(x[1,:]*tzxl[0,:])
Y02=sum(x[2,:]*tzxl[0,:])
Y03=sum(x[3,:]*tzxl[0,:])
#综合排名
F=gxl[0]*y[:,0]+gxl[1]*y[:,1]+gxl[2]*y[:,2] #综合得分=各个主成分*贡献率之和
dq=list(data['客户编号'].values) #提取客户编号
Rs=pd.Series(F,index=dq) #以客户编号作为index,综合得分为值,构建序列
Rs=Rs.sort_values(ascending=False) #按综合得分降序进行排序
Rs |
运行结果如下,以降序展现用户得分情况,其中用户编号为10的用户得分最高,因为其5个属性的分数均为68左右,而编号为3的用户得分最低,因为其有三个属性未超过60分:
四 实验心得
(1)导入数据文件要设置sep和header参数,确保导入正确结构的数据。