主成分分析(PCA)Python舉例

2021-10-03 19:08:06 字數 1306 閱讀 2421

import numpy as np

import pandas as pd

import sklearn

import matplotlib.pyplot as plt

%matplotlib inline

x = np.random.normal(0,1,100)

y = 4 * x + np.random.normal(0,2,100)

z = 4 * x + np.random.normal(0,1,100)

plt.scatter(x,y)

plt.figure()

plt.scatter(x,z)

x = np.stack((x,y,z),axis=1)

plt.scatter(x[:,0],x[:,1])

# 歸一化

x[:,0] = (x[:,0] - x[:,0].mean())/x[:,0].std()

x[:,1] = (x[:,1] - x[:,1].mean())/x[:,1].std()

x[:,2] = (x[:,2] - x[:,2].mean())/x[:,2].std()

# 求協方差矩陣

cov_mat = np.dot(x.t,x)

# 特徵值和特徵向量

eig_vals,eig_vecs = np.linalg.eig(cov_mat)

print(eig_vals)

print(eig_vecs)

# 把特徵根和特徵向量放在一起變成乙個矩陣

eig_pairs = [(np.abs(eig_vals[i]),eig_vecs[:,i]) for i in range(len(eig_vals))]

eig_pairs.sort(key=lambda x:x[0],reverse=true)

matrix_w = np.hstack((eig_pairs[i][1].reshape(len(eig_vals),1) for i in range (3)))

print('座標變換矩陣 w:\n',matrix_w)

z = x.dot(matrix_w)

print('新的特徵值 :\n',z[2])

# 畫圖判斷相關性,可推出第乙個分量是主成分

plt.scatter(z[:,0],z[:,2])

plt.xlim(-3,3)

plt.ylim(-3,3)

plt.scatter(z[:,0],z[:,1])

plt.xlim(-3,3)

plt.ylim(-3,3)

主成分分析

主成分分析 pca 分析乙個隨機向量的中的主成分 主成分一般不是隨機向量中的某乙個分量,而是不同分量的線性組合,根據資訊理論的觀點,資訊的多少與方差有關,所以 主成分是方差最大的幾個成分 主成分分析的方法是求隨機向量的協方差矩陣 用樣本協方差矩陣代替 對於差異較大的資料,可採用相關矩陣代替協方差矩陣...

主成分分析

理論要點 1 主成分分析是一種無監督學習,因此不能用交叉驗證來檢驗誤差 2 在處理資料之前,要對資料做中心化處理 3 p太大的話,做特徵分解用svd 4 一共有min n 1,p 個主成分,因為中心化以後,rank要降一維 5 主成分的載荷向量就是協方差矩陣的特徵向量,對應特徵值最大的是第一主成分,...

主成分分析

1.概念 將一組可能存在相關性的隨機變數轉變成互不相關的隨機變數。這個概念裡有三個地方需要理解清楚。1 隨機變數的指代 在資料集中,每乙個樣本,即將資料集理解成乙個 的話,乙個樣本就是一行,則每一列就是乙個特徵,也就是乙個隨機變數,一列的所有取值就是隨機變數的所有可能取值 說的所有可能取值只針對訓練...