機器學習 PCA

2021-09-25 23:50:24 字數 2036 閱讀 2839

介紹

pca是一種無監督學習的降維技術

思想1.投影後樣本越分散,保留的資訊越多

2.pca的主要思想是將n維特徵對映到k維上,這k維是全新的正交特徵也被稱為主成分,是在原有n維特徵的基礎上重新構造出來的k維特徵

做法1.將所有的樣本點向直線w投影

2.目標函式:讓投影後樣本的方差極大

第一步:x減去均值

第二步:對協方差矩陣xxt做特徵值分解,得到特徵值和對應特徵向量

第三步:按照特徵值降序排序,取得對應的特徵向量拼成投影矩陣wt

第四步:對x做轉換

import numpy as np

from sklearn.decomposition import pca

defpca

(x, n_components)

:# 第一步:x減去均值

mean = np.mean(x, axis=1)

normx = x - mean.reshape(-1

,1)# 第二步:對協方差矩陣xxt做特徵值分解,得到特徵值和對應特徵向量

cov_mat = np.dot(normx, np.transpose(normx)

) vals, vecs = np.linalg.eig(cov_mat)

# 第三步:按照特徵值降序排序,取得對應的特徵向量拼成投影矩陣wt

eig_pairs =

[(np.

abs(vals[i]

), vecs[

:, i]

)for i in

range

(x.shape[0]

)]eig_pairs.sort(reverse=

true

) wt = np.array(

[ele[1]

for ele in eig_pairs[

:n_components]])

# 第四步:對x做轉換

data = np.dot(wt, normx)

return data

n_components =

2x = np.transpose(np.array([[

-1,1

],[-

2,-1

],[-

3,-2

],[1

,1],

[2,1

],[3

,2]]

))data = pca(x, n_components=n_components)

print

(data)

x = np.array([[

-1,1

],[-

2,-1

],[-

3,-2

],[1

,1],

[2,1

],[3

,2]]

)p = pca(n_components=n_components)

a = p.fit_transform(x)

print

(a)

[[-

0.50917706

-2.40151069

-3.7751606

1.20075534

2.05572155

3.42937146][

1.08866118

-0.10258752

-0.43887001

0.05129376

-0.46738995

-0.13110746]]

[[0.50917706

1.08866118][

2.40151069

-0.10258752][

3.7751606

-0.43887001][

-1.20075534

0.05129376][

-2.05572155

-0.46738995][

-3.42937146

-0.13110746

]]

sklearn機器學習 PCA

pca使用的資訊量衡量指標,就是樣本方差,又稱可解釋性方差,方差越大,特徵所帶的資訊量越多 原理推導 class sklearn decomposition.pca n components none,copy true whiten false svd solver auto tol 0.0,it...

機器學習 一 PCA

pca主要是用來對特徵進行降維的 參考 並茂的pca教程 設一矩陣xm行n列 將x的每一行 代表乙個屬性字段 進行零均值化 求出協方差矩陣c 1 mxxt c fracxx c m1 x xt求出協方差矩陣的特徵值及對應的特徵向量 將特徵向量按對應特徵值大小從上到下按行排列成矩陣,取前k行組成矩陣p...

機器學習之PCA演算法學習

pca全稱principal component analysis,即主成分分析,是一種常用的資料降維方法。它可以通過線性變換將原始資料變換為一組各維度線性無關的表示,以此來提取資料的主要線性分量。其中,z為低維矩陣,x為高維矩陣,w為兩者之間的對映關係。假如我們有二維資料 原始資料有兩個特徵軸 特...