介紹
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為兩者之間的對映關係。假如我們有二維資料 原始資料有兩個特徵軸 特...