資料預處理之PCA主成分分析

2021-10-01 05:51:37 字數 3621 閱讀 1747

import numpy as np

import matplotlib.pyplot as plt

%matplotlib inline

# decomposition 降解

# 經過運算屬性變了 原來的資料變了

# pca 將資料屬性變少,少量得資料可以代表原來比較多的資料

from sklearn.decomposition import pca

from sklearn.linear_model import logisticregression

from sklearn import datasets

from sklearn.model_selection import train_test_split

import warnings

warnings.filterwarnings(

'ignore'

)

x,y=datasets.load_iris(

true

)

# 降維

pca=pca(n_components=

0.98

,whiten=

false

)# n_components 保留多少屬性 小數 重要性,當乙個屬性的重要性不夠時,找到可以加和 第二大的依次類推

# 整數字個數 whiten 為是否標準化

x_pca=pca.fit_transform(x)
x_pca.head(

)#資料有正有負 則無原來的物理意義

array([[-2.68412563,  0.31939725, -0.02791483],

[-2.71414169, -0.17700123, -0.21046427],

[-2.88899057, -0.14494943, 0.01790026],

[-2.74534286, -0.31829898, 0.03155937],

[-2.72871654, 0.32675451, 0.09007924],])

# 1.去中心化

b=x-x.mean(axis=0)

b[:5]

array([[-0.74333333,  0.44266667, -2.358     , -0.99933333],

[-0.94333333, -0.05733333, -2.358 , -0.99933333],

[-1.14333333, 0.14266667, -2.458 , -0.99933333],

[-1.24333333, 0.04266667, -2.258 , -0.99933333],

[-0.84333333, 0.54266667, -2.358 , -0.99933333]])

# 2計算協方差  矩陣

v=np.cov(b,rowvar=

false

)v

array([[ 0.68569351, -0.042434  ,  1.27431544,  0.51627069],

[-0.042434 , 0.18997942, -0.32965638, -0.12163937],

[ 1.27431544, -0.32965638, 3.11627785, 1.2956094 ],

[ 0.51627069, -0.12163937, 1.2956094 , 0.58100626]])

# 3,協方差矩陣的特徵值和特徵向量

eigen,ev=np.linalg.eigh(v)

display(eigen,ev)

# 特徵值 和特徵向量

array([0.02383509, 0.0782095 , 0.24267075, 4.22824171])

array([[ 0.31548719, 0.58202985, 0.65658877, -0.36138659],

[-0.3197231 , -0.59791083, 0.73016143, 0.08452251],

[-0.47983899, -0.07623608, -0.17337266, -0.85667061],

[ 0.75365743, -0.54583143, -0.07548102, -0.3582892 ]])

eigen/eigen.

sum(

)# 重要性

array([0.00521218, 0.01710261, 0.05306648, 0.92461872])
# 4 降維標準 2個特徵  選取最大的兩個特徵值所對應的的特徵的特徵向量

# 百分比 計算各特徵值 佔權重 累加可以

vector=ev[:,

2:]

# 5,進行矩陣運算

pca_result=b.dot(vector)

pca_result[:10

]

array([[ 0.31939725,  2.68412563],

[-0.17700123, 2.71414169],

[-0.14494943, 2.88899057],

[-0.31829898, 2.74534286],

[ 0.32675451, 2.72871654],

[ 0.74133045, 2.28085963],

[-0.08946138, 2.82053775],

[ 0.16338496, 2.62614497],

[-0.57831175, 2.88638273],

[-0.11377425, 2.6727558 ]])

# 降維資料  為0.87

lr=logisticregression(

)x_train,x_test,y_train,y_test=train_test_split(x_pca,y,test_size=

0.2,random_state=

102)

lr.fit(x_train,y_train)

lr.score(x_test,y_test)

0.9
# 原資料
lr=logisticregression(

)x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=

0.2,random_state=

102)

lr.fit(x_train,y_train)

lr.score(x_test,y_test)

0.9666666666666667

pca主成分分析 PCA主成分分析(中)

矩陣 matrix,很容易讓人們想到那部著名的科幻電影 駭客帝國 事實上,我們又何嘗不是真的生活在matrix中。機器學習處理的大多數資料,都是以 矩陣 形式儲存的。矩陣是向量的組合,而乙個向量代表一組資料,資料又是多維度的。比如每個人的都具有身高 體重 長相 性情等多個維度的資訊資料,而這些多維度...

主成分分析PCA

主要參考這篇文章 個人總結 pca是一種對取樣資料提取主要成分,從而達到降維的目的。相比於上篇文章介紹到的svd降維不同,svd降維是指減少資料的儲存空間,資料的實際資訊沒有缺少。個人感覺pca更類似與svd的去噪的過程。pca求解過程中,涉及到了svd的使用。針對資料集d 假設di 的維度為 w ...

PCA 主成分分析

在進行影象的特徵提取的過程中,提取的特徵維數太多經常會導致特徵匹配時過於複雜,消耗系統資源,不得不採用特徵降維的方法。所謂特徵降維,即採用乙個低緯度的特徵來表示高緯度。將高緯度的特徵經過某個函式對映至低緯度作為新的特徵。pca和lda區別 pca是從特徵的角度協方差角度 求出協方差矩陣的特徵值和特徵...