信用評分預測模型(三)--主成分分析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