日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

svd降维 python案例_PCA降维的原理、方法、以及python实现。

發布時間:2024/10/14 python 64 豆豆
生活随笔 收集整理的這篇文章主要介紹了 svd降维 python案例_PCA降维的原理、方法、以及python实现。 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

PCA(主成分分析法)

1. PCA(最大化方差定義或者最小化投影誤差定義)是一種無監督算法,也就是我們不需要標簽也能對數據做降維,這就使得其應用范圍更加廣泛了。那么PCA的核心思想是什么呢?

例如D維變量構成的數據集,PCA的目標是將數據投影到維度為K的子空間中,要求K

PCA其實就是方差與協方差的運用。

降維的優化目標:將一組 N 維向量降為 K 維,其目標是選擇 K 個單位正交基,使得原始數據變換到這組基上后,各變量兩兩間協方差為 0,而變量方差則盡可能大(在正交的約束下,取最大的 K 個方差)。

2.?PCA存在的問題:

原來的數據中比如包括了年齡,性別,身高等指標降維后的數據既然維度變小了,那么每一維都是什么含義呢?這個就很難解釋了,所以PCA本質來說是無法解釋降維后的數據的物理含義,換句話說就是降維完啦計算機能更好的認識這些數據,但是咱們就很難理解了。

PCA對數據有兩個假設:數據必須是連續數值型;數據中沒有缺失值。

過擬合:PCA 保留了主要信息,但這個主要信息只是針對訓練集的,而且這個主要信息未必是重要信息。有可能舍棄了一些看似無用的信息,但是這些看似無用的信息恰好是重要信息,只是在訓練集上沒有很大的表現,所以 PCA 也可能加劇了過擬合;

3. PCA的作用:

緩解維度災難:PCA 算法通過舍去一部分信息之后能使得樣本的采樣密度增大(因為維數降低了),這是緩解維度災難的重要手段;

降噪:當數據受到噪聲影響時,最小特征值對應的特征向量往往與噪聲有關,將它們舍棄能在一定程度上起到降噪的效果;

特征獨立:PCA 不僅將數據壓縮到低維,它也使得降維之后的數據各特征相互獨立;

4.?方差的作用:咱們可以想象一下,如果一群人都堆疊在一起,我們想區分他們是不是比較困難,但是如果這群人站在馬路兩側,我們就可以很清晰的判斷出來應該這是兩伙人。所以基于方差我們可以做的就是讓方差來去判斷咱們數據的擁擠程度,在這里我們認為方差大的應該辨識度更高一些,因為分的比較開(一條馬路給隔開啦)。方差可以度量數值型數據的離散程度,數據若是想要區分開來,他那他們的離散程度就需要比較大,也就是方差比較大。

5.?協方差的作用:

6. 計算過程:(下圖為采用特征值分解的計算過程,若采用SVM算法,則無需計算協方差矩陣!)

為什么我們需要協方差矩陣

?我們最主要的目的是希望能把方差和協方差統一到一個矩陣里,方便后面的計算。

假設我們只有 a 和 b 兩個變量,那么我們將它們按行組成矩陣 X:(與matlab不同的是,在numpy中每一列表示每個樣本的數據,每一行表示一個變量。比如矩陣X,該矩陣表示的意義為:有m個樣本點,每個樣本點由兩個變量組成!)

然后:

我們可以看到這個矩陣對角線上的分別是兩個變量的方差,而其它元素是 a 和 b 的協方差。兩者被統一到了一個矩陣里。

7. 特征值與特征向量的計算方法-----特征值分解與奇異值分解法(SVD)(有關特征值與奇異值可見我的博文!)

(1) 特征值分解的求解過程較為簡單,以下圖為例子

(2) 特征值分解存在的缺點:

特征值分解中要求協方差矩陣A必須是方陣,即規模必須為n*n。

后期計算最小投影維度K時,計算量過大。

當樣本維度很高時,協方差矩陣計算太慢;

(3) SVD算法(奇異值分解)的提出克服這些缺點,目前幾乎所有封裝好的PCA算法內部采用的都是SVD算法進行特征值、特征向量以及K值的求解。

奇異值(每個矩陣都有):設A是一個mXn矩陣,稱正半定矩陣A‘A的特征值的非負平方根為矩陣A的奇異值,其中A‘表示矩陣A的共扼轉置矩陣(實數矩陣的共軛轉置矩陣就是轉置矩陣,復數矩陣的共軛轉置矩陣就是上面所說的行列互換后每個元素取共軛)

只有方陣才有特征值。

(4) SVD算法的計算過程:(numpy中已經將SVD進行了封裝,所以只需要調用即可)

可以發現,采用SVD算法無需計算協方差矩陣,這樣在數據量非常大的時候可以降低消耗。

A為數據矩陣,大小為M*N(2*5)

U是一個由與數據點之間具有最小投影誤差的方向向量所構成的矩陣,大小為M*M(2*2),假如想要將數據由M維降至K維,只需要從矩陣U中選擇前K個列向量,得到一個M*K的矩陣,記為Ureduce。按照下面的公式即可計算降維后的新數據:降維后的數據矩陣G = A.T * Ureduce.

sigma為一個列向量,其包含的值為矩陣A的奇異值。

VT是一個大小為N*N的矩陣,具體意義我們無需了解。

利用python實現PCA降維(采用SVD的方法):

from numpy importlinalg as la importnumpy as np #1.矩陣A每個變量的均值都為0,所以不用進行“去平均值”處理。倘若矩陣A的每個變量的均值不為0,則首先需要對數據進行預處理

#才可以進行協方差矩陣的求解。

#2.與matlab不同的是,在numpy中每一列表示每個樣本的數據,每一行表示一個變量。

#比如矩陣A,該矩陣表示的意義為:有5個樣本點,每個樣本點由兩個變量組成!

#3.np.mat()函數中矩陣的乘積可以使用 * 或 .dot()函數

#array()函數中矩陣的乘積只能使用 .dot()函數。而星號乘(*)則表示矩陣對應位置元素相乘,與numpy.multiply()函數結果相同。

A = np.mat([[-1, -1, 0, 2, 0], [-2, 0, 0, 1, 1]]) #A = np.mat([[-1, -2], [-1, 0], [0, 0], [2, 1], [0, 1]]).T

U, sigma, VT =la.svd(A) print("U:") print(U) print("sigma:") print(sigma) print("VT:") print(VT) print("-"*30) print("降維前的數據:") print(A.T) print("降維后的數據:") print(A.T * U[:,0])

運行結果圖:與上文采用特征值分解所得到的降維結果一致!

8.PCA的重建

眾所周知,PCA可以將高維數據壓縮為較少維度的數據,由于維度有所減少,所以PCA屬于有損壓縮,也就是,壓縮后的數據沒有保持原來數據的全部信息,根據壓縮數據無法重建原本的高維數據,但是可以看作原本高維數據的一種近似。

還原的近似數據矩陣Q = 降維后的矩陣G * Ureduce.T

9.采用sklearn封裝好的PCA實現數據降維(采用的是SVD算法):

importnumpy as np from sklearn.decomposition importPCA #利用sklearn進行PCA降維處理的時候,數據矩陣A的行數表示數據的個數,數據矩陣A的列數表示每條數據的維度。這與numpy中是相反的!

#A = np.mat([[-1, -1, 0, 2, 0], [-2, 0, 0, 1, 1]]).T

A = np.mat([[-1, -2], [-1, 0], [0, 0], [2, 1], [0, 1]]) pca = PCA(n_components = 1) pca.fit(A) #投影后的特征維度的方差比例

print(pca.explained_variance_ratio_) #投影后的特征維度的方差

print(pca.explained_variance_) print(pca.transform(A))

可以發現,采用sklearn封裝的方法實現PCA與上文的方法達到的結果一致!

10.如何確定主成分數量(針對于Sklearn封裝的PCA方法而言)

PCA算法將D維數據降至K維,顯然K是需要選擇的參數,表示要保持信息的主成分數量。我們希望能夠找到一個K值,既能大幅降低維度,又能最大限度地保持原有數據內部的結構信息。實現的過程是通過SVD方法得到的S矩陣進行操作求解,

11.sklearn中封裝的PCA方法的使用介紹。

PCA的函數原型

(1)主要參數介紹

n_components

這個參數類型有int型,float型,string型,默認為None。?它的作用是指定PCA降維后的特征數(也就是降維后的維度)。

若取默認(None),則n_components==min(n_samples, n_features),即降維后特征數取樣本數和原有特征數之間較小的那個;

若n_components}設置為‘mle’并且svd_solver設置為‘full’則使用MLE算法根據特征的方差分布自動去選擇一定數量的主成分特征來降維;

若0

若n_components≥1,則降維后的特征數為n_components;

copy

bool (default True)

在運行算法時,將原始訓練數據復制一份。參數為bool型,默認是True,傳給fit的原始訓練數據X不會被覆蓋;若為False,則傳給fit后,原始訓練數據X會被覆蓋。

whiten

bool, optional (default False)

是否對降維后的數據的每個特征進行歸一化。參數為bool型,默認是False。

(2)主要方法介紹:

fit(X,y=None) :用訓練數據X訓練模型,由于PCA是無監督降維,因此y=None。

transform(X,y=None) :對X進行降維。

fit_transform(X) :用訓練數據X訓練模型,并對X進行降維。相當于先用fit(X),再用transform(X)。

inverse_transform(X) :將降維后的數據轉換成原始數據。(PCA的重建)

(3)主要屬性介紹:

components:array, shape (n_components, n_features) ,降維后各主成分方向,并按照各主成分的方差值大小排序。

explained_variance:array, shape (n_components,) ,降維后各主成分的方差值,方差值越大,越主要。

explained_variance_ratio:array, shape (n_components,) ,降維后的各主成分的方差值占總方差值的比例,比例越大,則越主要。

singular_values:array, shape (n_components,) ,奇異值分解得到的前n_components個最大的奇異值。

參考資料:https://zhuanlan.zhihu.com/p/77151308?utm_source=qq&utm_medium=social&utm_oi=1095998405318430720

總結

以上是生活随笔為你收集整理的svd降维 python案例_PCA降维的原理、方法、以及python实现。的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 香蕉视频在线网站 | 欧美一区二区三区粗大 | 国产喷白浆一区二区三区 | 麻豆国产精品视频 | 在线男人天堂 | 中文字幕一区二区三区乱码 | 综合激情婷婷 | 国内精品视频在线播放 | 精品中文视频 | 国产成人a v| 亚洲精品自拍视频 | 国产一级淫 | 日韩va在线观看 | 国产成人啪精品 | 肉嫁高柳在线 | 成年人视频在线免费观看 | 五月婷婷国产 | ,国产精品国产三级国产 | 日本福利片在线观看 | 天堂网视频在线 | 久久av高潮av无av萌白 | 91n在线观看 | 久久精品人人做人人爽 | 人人插人人看 | 中国黄色一级视频 | 国产一区二区免费在线观看 | 欧美日韩三区 | 日韩视频 中文字幕 | 黄色在线观看免费 | 99riav在线| 中国美女洗澡免费看网站 | 黄色片视频免费看 | 亚洲av无码专区在线 | 午夜影视剧场 | 久久99久| 自拍偷拍日韩精品 | 国产精品第 | 国产一区二区三区中文字幕 | 亚洲a色 | 日本理论视频 | 国产精品无码成人网站视频 | 成人小视频免费在线观看 | 精品国产三级a∨在线 | 国产探花一区二区三区 | 亚洲欧美另类日本 | av免费片| 人人妻人人爽一区二区三区 | 国产a∨精品一区二区三区仙踪林 | 最新中文字幕一区 | 一区二区美女视频 | 免费看的av网站 | 久久久久久av无码免费看大片 | 亚洲国产无线乱码在线观看 | 日韩资源站 | 亚洲乱视频 | 女人扒开腿免费视频app | 久久国产视频网站 | 草草视频在线免费观看 | 91刺激视频| 日韩av网站在线观看 | 国产视频久久 | 欧美污污视频 | 精产国品一区二区三区 | 夜夜操夜夜操 | 大肉大捧一进一出好爽视频动漫 | 亚洲区综合 | a级片一级片 | 麻豆国产在线播放 | 中文字幕在线观看网址 | 东京热毛片 | 亚洲午码 | 午夜黄色在线 | 亚洲爆乳无码一区二区三区 | 一区二区三区观看 | 91精品国产91久久久久青草 | 欧亚毛片| 欧美激情国产精品 | 茄子香蕉视频 | 亚洲码在线观看 | 国产一区二区三区观看 | 91蝌蚪视频在线 | 国产美女一区 | 国产二区视频 | 国产乱码久久久 | 黄色免费小视频 | 中文字幕免费高清在线观看 | 青娱乐在线播放 | 开心激情五月网 | 欧美一级二级三级视频 | 色婷婷久久五月综合成人 | 91一区视频 | 91蝌蚪在线观看 | 老司机成人网 | 日日爽爽 | 人人妻人人澡人人爽欧美一区 | 国产成人麻豆免费观看 | 欧美日韩一区二区三区在线视频 | 亚洲欧美黄色片 | 黑人毛片网站 |