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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

机器学习:基于主成分分析(PCA)对数据降维

發(fā)布時間:2024/3/24 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器学习:基于主成分分析(PCA)对数据降维 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

機器學(xué)習(xí):基于主成分分析(PCA)對數(shù)據(jù)降維

作者:AOAIYI

作者簡介:Python領(lǐng)域新星作者、多項比賽獲獎?wù)?#xff1a;AOAIYI首頁

😊😊😊如果覺得文章不錯或能幫助到你學(xué)習(xí),可以點贊👍收藏📁評論📒+關(guān)注哦!👍👍👍

📜📜📜如果有小伙伴需要數(shù)據(jù)集和學(xué)習(xí)交流,文章下方有交流學(xué)習(xí)區(qū)!一起學(xué)習(xí)進步!💪


專欄案例:機器學(xué)習(xí)
機器學(xué)習(xí):基于邏輯回歸對某銀行客戶違約預(yù)測分析
機器學(xué)習(xí):學(xué)習(xí)k-近鄰(KNN)模型建立、使用和評價
機器學(xué)習(xí):基于支持向量機(SVM)進行人臉識別預(yù)測
決策樹算法分析天氣、周末和促銷活動對銷量的影響
機器學(xué)習(xí):線性回歸分析女性身高與體重之間的關(guān)系
機器學(xué)習(xí):基于樸素貝葉斯對花瓣花萼的寬度和長度分類預(yù)測
機器學(xué)習(xí):學(xué)習(xí)KMeans算法,了解模型創(chuàng)建、使用模型及模型評價

文章目錄

  • 機器學(xué)習(xí):基于主成分分析(PCA)對數(shù)據(jù)降維
  • 一、實驗?zāi)康?/li>
  • 二、實驗原理
  • 三、實驗環(huán)境
  • 四、實驗內(nèi)容
  • 五、實驗步驟
    • 1.數(shù)據(jù)準備
    • 2.PCA分析
    • 3.查看主成分的解釋能力
    • 4.主成分軸(Principal Axes)的可視化
    • 5.基于PCA的降維
    • 6.降維處理
    • 7.PCA逆向處理
    • 8.使用digits.data訓(xùn)練PCA模型并將結(jié)果可視化
  • 總結(jié)


一、實驗?zāi)康?/h1>

1、了解數(shù)據(jù)降維的各種算法原理

2、熟練掌握sklearn.decomposition中降維方法的使用

二、實驗原理

主成分分析算法(Principal Component Analysis, PCA)的目的是找到能用較少信息描述數(shù)據(jù)集的特征組合。它意在發(fā)現(xiàn)彼此之間沒有相關(guān)性、能夠描述數(shù)據(jù)集的特征,確切說這些特征的方差跟整體方差沒有多大差距,這樣的特征也被稱為主成分。這也就意味著,借助這種方法,就能通過更少的特征捕獲到數(shù)據(jù)集的大部分信息。

主成分分析原理
設(shè)法將原來變量重新組合成一組新的相互無關(guān)的幾個綜合變量,同時根據(jù)實際需要從中可以取出幾個較少的總和變量盡可能多地反映原來變量的信息的統(tǒng)計方法叫做主成分分析或稱主分量分析,也是數(shù)學(xué)上處理降維的一種方法。主成分分析是設(shè)法將原來眾多具有一定相關(guān)性(比如P個指標),重新組合成一組新的互相無關(guān)的綜合指標來代替原來的指標。通常數(shù)學(xué)上的處理就是將原來P個指標作線性組合,作為新的綜合指標。最經(jīng)典的做法就是用F1(選取的第一個線性組合,即第一個綜合指標)的方差來表達,即Va(rF1)越大,表示F1包含的信息越多。因此在所有的線性組合中選取的F1應(yīng)該是方差最大的,故稱F1為第一主成分。如果第一主成分不足以代表原來P個指標的信息,再考慮選取F2即選第二個線性組合,為了有效地反映原來信息,F1已有的信息就不需要再出現(xiàn)在F2中,用數(shù)學(xué)語言表達就是要求Cov(F1,F2)=0,則稱F2為第二主成分,依此類推可以構(gòu)造出第三、第四,……,第P個主成分。

sklearn中主成分分析的模型

class sklearn.decomposition.PCA(n_components=None, copy=True, whiten=False, svd_solver=’auto’, tol=0.0, iterated_power=’auto’, random_state=None)

sklearn.decomposition.PCA參數(shù)介紹

接下來我們主要基于sklearn.decomposition.PCA類來講解如何使用scikit-learn進行PCA降維。PCA類基本不需要調(diào)參,一般來說,我們只需要指定要降維到的維度,或者希望降維后主成分的方差和占原始維度所有特征方差和的比例閾值就可以了。

現(xiàn)在我們介紹一下sklearn.decomposition.PCA的主要參數(shù):

  • n_components:這個參數(shù)指定了希望PCA降維后的特征維度數(shù)目。最常用的做法是直接指定降維到的維度數(shù)目,此時n_components是一個大于等于1的整數(shù)。當然,我們也可以指定主成分的方差和所占的最小比例閾值,讓PCA類自己去根據(jù)樣本特征方差來決定降維到的維度數(shù),此時n_components是一個(0,1]之間的浮點數(shù)。當然,我們還可以將參數(shù)設(shè)置為"mle",此時PCA類會用MLE算法根據(jù)特征的方差分布情況自己去選擇一定數(shù)量的主成分特征來降維。我們也可以使用默認值,即不輸入n_components,此時n_components=min(樣本數(shù),特征數(shù))。
  • whiten:判斷是否進行白化。所謂白化,就是對降維后的數(shù)據(jù)的每個特征進行歸一化,讓方差都為1。對于PCA降維本身來說,一般不需要白化。如果在PCA降維后有后續(xù)的數(shù)據(jù)處理動作,可以考慮白化。默認值是False,即不進行白化。
  • svd_solver:即指定奇異值分解SVD的方法,由于特征分解是奇異值分解SVD的一個特例,一般的PCA庫都是基于SVD實現(xiàn)的。有4個可以選擇的值:{‘a(chǎn)uto’, ‘full’, ‘a(chǎn)rpack’, ‘randomized’}。'randomized’一般適用于數(shù)據(jù)量大,數(shù)據(jù)維度多同時主成分數(shù)目比例又較低的PCA降維,它使用了一些加快SVD的隨機算法。'full’則是傳統(tǒng)意義上的SVD,使用了scipy庫中的實現(xiàn)。‘a(chǎn)rpack’和’randomized’的適用場景類似,區(qū)別是’randomized’使用的是scikit-learn中的SVD實現(xiàn),而’arpack’直接使用了scipy庫的sparse SVD實現(xiàn)。默認是’auto’,即PCA類會自己去權(quán)衡前面講到的三種算法,選擇一個合適的SVD算法來降維。一般來說,使用默認值就夠了。

除了這些輸入?yún)?shù)外,有兩個PCA類的成員值得關(guān)注。第一個是explained_variance_,它代表降維后的各主成分的方差值。方差值越大,則說明越是重要的主成分。第二個是explained_variance_ratio_,它代表降維后的各主成分的方差值占總方差值的比例,這個比例越大,則越是重要的主成分。

三、實驗環(huán)境

Python 3.9

Anaconda 4

Jupyter Notebook

四、實驗內(nèi)容

本實驗介紹了主成分分析算法PCA并以實例驗證

五、實驗步驟

1.數(shù)據(jù)準備

1.導(dǎo)入所需的模塊

import numpy as np import matplotlib.pyplot as plt import seaborn as sns;sns.set() %matplotlib inline

2.構(gòu)建示例數(shù)據(jù)

#創(chuàng)建隨機數(shù)生成器 rng=np.random.RandomState(1) X=np.dot(rng.rand(2,2),rng.randn(2,200)).T plt.scatter(X[:,0],X[:,1]) plt.axis("equal")

如上所示,第一組示例數(shù)據(jù)為一組樣本量為200的隨機的二維數(shù)組

2.PCA分析

1.導(dǎo)入 Scikit-Learn 中用于主成分分析的 PCA 模塊,構(gòu)建一個主成分分析模型對象,并進行訓(xùn)練。在這次構(gòu)建中,我們設(shè)定 PCA 函數(shù)的參數(shù) n_components 為2,這意味這我們將得到特征值最大的兩個特征向量

from sklearn.decomposition import PCA pca=PCA(n_components=2) #使用fit()方法擬合模型 pca.fit(X)

n_components參數(shù)表示PCA算法中所要保留的主成分個數(shù)n,也即保留下來的特征個數(shù)n

2.模型訓(xùn)練完成后, components_ 屬性可以查看主成分分解的特征向量:

print(pca.components_)

3.使用.shape方法查看矩陣形狀

pca.components_.shape

4.使用type()方法查看pca.components_類型

type(pca.components_)

3.查看主成分的解釋能力

1.explained_variance_代表降維后的各主成分的方差值。方差值越大,則說明越是重要的主成分

pca.explained_variance_

4.主成分軸(Principal Axes)的可視化

1.我們可以通過如下方式將主成分分析中的特征向量描繪出來,下圖中向量的起點為樣本數(shù)據(jù)的均值

def draw_vector(v0,v1,ax=None): ax = ax or plt.gca() arrowprops=dict(linewidth=2,shrinkA=0,shrinkB=0) ax.annotate('',v1,v0,arrowprops=arrowprops) #描繪數(shù)據(jù) plt.scatter(X[:,0],X[:,1],alpha=0.2) for length,vector in zip(pca.explained_variance_,pca.components_): v = vector * 3 * np.sqrt(length) draw_vector(pca.mean_,pca.mean_ + v) plt.axis('equal')

5.基于PCA的降維

1.將n_components設(shè)置為1,并使用fit()方法進行擬合

pca=PCA(n_components=1) pca.fit(X)

6.降維處理

1.將數(shù)據(jù)X轉(zhuǎn)換成降維后的數(shù)據(jù)X_pca,并打印X和X_pca的矩陣形狀

X_pca=pca.transform(X) print("original shape:",X.shape) print("transformed shape:",X_pca.shape)

2.使用切片打印X的前十項

X[:10]

3.使用切片打印X_pca的前十項

X_pca[:10]

7.PCA逆向處理

1.將降維后的數(shù)據(jù)轉(zhuǎn)換成原始數(shù)據(jù)

X_new=pca.inverse_transform(X_pca) #描繪數(shù)據(jù) plt.scatter(X[:,0],X[:,1],alpha=0.2) plt.scatter(X_new[:,0],X_new[:,1],alpha=0.8) plt.axis('equal')

8.使用digits.data訓(xùn)練PCA模型并將結(jié)果可視化

1.導(dǎo)入sklearn.datasets模塊中的load_digits函數(shù)

from sklearn.datasets import load_digits digits=load_digits() #查看digits.data的矩陣形狀 digits.data.shape

2.使用digits.data訓(xùn)練PCA模型并將結(jié)果可視化

pca=PCA().fit(digits.data) plt.plot(np.cumsum(pca.explained_variance_ratio_)) plt.xlabel("number of components") plt.ylabel("cumlative explained variance")


總結(jié)

主成分分析算法(Principal Component Analysis, PCA)的目的是找到能用較少信息描述數(shù)據(jù)集的特征組合。它意在發(fā)現(xiàn)彼此之間沒有相關(guān)性、能夠描述數(shù)據(jù)集的特征,確切說這些特征的方差跟整體方差沒有多大差距,這樣的特征也被稱為主成分。這也就意味著,借助這種方法,就能通過更少的特征捕獲到數(shù)據(jù)集的大部分信息。

總結(jié)

以上是生活随笔為你收集整理的机器学习:基于主成分分析(PCA)对数据降维的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。