首頁>技術>

PCA是一種常用於處理多重共線性的特徵提取方法。PCA的最大優點是,在應用它之後,每個“新”變數將彼此獨立。

第2步將資料分為因變數(Y)和特徵或自變數(X)。

import pandas as pd

features = ['WindSpeed', 'RotorRPM', 'ReactivePower', 'GeneratorWinding1Temperature', 'GeneratorWinding2Temperature', 'GeneratorRPM', 'GearboxBearingTemperature', 'GearboxOilTemperature']

將資料分離為Y和X

y = data['ActivePower']X = data[features]第3步取自變數X的矩陣,對於每一列,從每個特徵中減去該列的平均值。(這樣可以確保每列的平均值為零。)也可以透過除以每列的標準差來標準化X。此步驟的目的是標準化特徵,使其平均值等於零,標準偏差等於1。

減去均值

X = X - X.mean()

標準化

Z = X / X.std()第4步這是一個健全性檢查步驟。讓我們確保平均值和標準差分別為0和1。

檢驗均值= 0和標準差= 1

print('MEAN:')print(Z.mean())print('---'*15)print('STD:')print(Z.std())第5步取矩陣Z,轉置它,然後將轉置後的矩陣乘以Z,這就是Z的協方差矩陣。

import numpy as np

Z = np.dot(Z.T, Z)第6步計算的特徵值陣列和一個特徵矩陣,特徵矩陣的列是與特徵值對應的歸一化特徵向量。

在這一步中,重要的是要確保特徵值及其特徵向量按降序排序(從大到小)。對特徵值進行排序,然後對特徵向量進行相應排序。

eigenvalues, eigenvectors = np.linalg.eig(Z)第7步把特徵向量的矩陣賦給P,把對角矩陣賦給D,特徵值在對角線上,其它地方的值都為零。D對角線上的特徵值將與P中相應的列相關聯。

D = np.diag(eigenvalues)P = eigenvectors第8步計算Z* = ZP。這個新的矩陣,Z*,是X的中心或標準化版本,但現在每個觀測值都是原始變數的組合,其中權重由特徵向量確定。

關於這個新矩陣Z的一個重要的事情是,因為P中的特徵向量彼此獨立,所以Z中的列也是相互獨立的!

左邊的曲線圖顯示了從每個主成分中得出的變化量,以及為模型新增或考慮另一個主成分而產生的累積變化量。

選擇多少個主成分,歸根結底是一個經驗法則:所選的主成分應該能夠描述至少80-85%的方差。在本例中,僅第一個主成分就解釋了大約82%的方差。加上第二個主成分,這個數字幾乎達到90%。

#1. 計算每個特徵解釋的方差的比例sum_eigenvalues = np.sum(eigenvalues)

prop_var = [i/sum_eigenvalues for i in eigenvalues]

#2. 計算累積方差cum_var = [np.sum(prop_var[:i+1]) for i in range(len(prop_var))]

匯入plt

import matplotlib.pyplot as plt

x_labels = ['PC{}'.format(i+1) for i in range(len(prop_var))]

感謝閱讀!

12
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 2021年成為資料科學家最需要學習的7項技能