數(shù)據(jù)分析:主成分分析(PCA):概率論與數(shù)理統(tǒng)計(jì)_第1頁(yè)
數(shù)據(jù)分析:主成分分析(PCA):概率論與數(shù)理統(tǒng)計(jì)_第2頁(yè)
數(shù)據(jù)分析:主成分分析(PCA):概率論與數(shù)理統(tǒng)計(jì)_第3頁(yè)
數(shù)據(jù)分析:主成分分析(PCA):概率論與數(shù)理統(tǒng)計(jì)_第4頁(yè)
數(shù)據(jù)分析:主成分分析(PCA):概率論與數(shù)理統(tǒng)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

數(shù)據(jù)分析:主成分分析(PCA):概率論與數(shù)理統(tǒng)計(jì)1引言1.1PCA的概念與應(yīng)用主成分分析(PCA,PrincipalComponentAnalysis)是一種廣泛應(yīng)用于數(shù)據(jù)降維、特征提取和數(shù)據(jù)可視化等領(lǐng)域的統(tǒng)計(jì)方法。PCA通過(guò)線性變換將一組可能相關(guān)的變量轉(zhuǎn)換成一組線性不相關(guān)的變量,稱為主成分。這些主成分按照方差大小排序,方差最大的主成分排在最前面,意味著它能解釋數(shù)據(jù)中最大的變異。PCA的核心目標(biāo)是通過(guò)減少數(shù)據(jù)的維度,同時(shí)盡可能多地保留數(shù)據(jù)的原始信息。1.1.1應(yīng)用場(chǎng)景數(shù)據(jù)降維:在高維數(shù)據(jù)中,PCA可以減少數(shù)據(jù)的維度,降低計(jì)算復(fù)雜度,同時(shí)去除數(shù)據(jù)中的冗余信息。特征提取:PCA可以用于提取數(shù)據(jù)中的關(guān)鍵特征,這些特征往往能代表數(shù)據(jù)的主要信息。數(shù)據(jù)可視化:將高維數(shù)據(jù)降維到2D或3D空間,便于數(shù)據(jù)的可視化分析。1.2PCA在數(shù)據(jù)降維中的作用PCA在數(shù)據(jù)降維中的作用主要體現(xiàn)在以下幾個(gè)方面:去除冗余:通過(guò)PCA,可以識(shí)別并去除數(shù)據(jù)中的冗余特征,減少數(shù)據(jù)的維度,同時(shí)保持?jǐn)?shù)據(jù)的完整性。簡(jiǎn)化模型:降維后的數(shù)據(jù)可以用于構(gòu)建更簡(jiǎn)單、更易于理解和解釋的模型。提高效率:降維可以顯著減少計(jì)算資源的消耗,提高數(shù)據(jù)處理和模型訓(xùn)練的效率。減少過(guò)擬合:通過(guò)減少特征數(shù)量,PCA有助于減少模型的過(guò)擬合風(fēng)險(xiǎn),提高模型的泛化能力。1.2.1實(shí)例:使用PCA進(jìn)行數(shù)據(jù)降維假設(shè)我們有一組高維數(shù)據(jù),我們想要將其降維到較低的維度,同時(shí)保留盡可能多的信息。我們將使用Python的scikit-learn庫(kù)中的PCA模塊來(lái)實(shí)現(xiàn)這一目標(biāo)。importnumpyasnp

importmatplotlib.pyplotasplt

fromsklearn.decompositionimportPCA

fromsklearn.datasetsimportload_iris

#加載數(shù)據(jù)集

data=load_iris()

X=data.data

y=data.target

#創(chuàng)建PCA實(shí)例,指定降維后的維度為2

pca=PCA(n_components=2)

#擬合數(shù)據(jù)并進(jìn)行降維

X_pca=pca.fit_transform(X)

#可視化降維后的數(shù)據(jù)

plt.figure()

colors=['navy','turquoise','darkorange']

lw=2

forcolor,i,target_nameinzip(colors,[0,1,2],data.target_names):

plt.scatter(X_pca[y==i,0],X_pca[y==i,1],color=color,alpha=.8,lw=lw,

label=target_name)

plt.legend(loc='best',shadow=False,scatterpoints=1)

plt.title('PCAofIRISdataset')

plt.show()1.2.2解釋在這個(gè)例子中,我們使用了Iris數(shù)據(jù)集,它包含了150個(gè)樣本,每個(gè)樣本有4個(gè)特征。通過(guò)PCA,我們將數(shù)據(jù)降維到2個(gè)主成分上,然后使用matplotlib庫(kù)將降維后的數(shù)據(jù)可視化。從圖中可以看出,即使在2D空間中,不同種類的鳶尾花仍然可以被很好地分離,這說(shuō)明PCA有效地保留了數(shù)據(jù)中的關(guān)鍵信息。1.2.3PCA的數(shù)學(xué)原理PCA基于協(xié)方差矩陣或相關(guān)矩陣的特征值分解。對(duì)于一個(gè)數(shù)據(jù)矩陣X,PCA的目標(biāo)是找到一組正交向量(即主成分),這些向量能最大化數(shù)據(jù)在新坐標(biāo)系下的方差。具體步驟如下:數(shù)據(jù)預(yù)處理:對(duì)數(shù)據(jù)進(jìn)行中心化,即從每個(gè)特征中減去其均值。計(jì)算協(xié)方差矩陣:對(duì)于中心化后的數(shù)據(jù),計(jì)算其協(xié)方差矩陣。特征值分解:對(duì)協(xié)方差矩陣進(jìn)行特征值分解,得到特征值和對(duì)應(yīng)的特征向量。選擇主成分:根據(jù)特征值的大小,選擇前k個(gè)特征向量作為主成分。數(shù)據(jù)投影:將原始數(shù)據(jù)投影到由選定的主成分構(gòu)成的新坐標(biāo)系上,完成數(shù)據(jù)降維。PCA是一種無(wú)監(jiān)督學(xué)習(xí)方法,它不依賴于數(shù)據(jù)的標(biāo)簽信息,而是完全基于數(shù)據(jù)的統(tǒng)計(jì)特性。通過(guò)PCA,我們可以有效地減少數(shù)據(jù)的維度,同時(shí)保留數(shù)據(jù)的關(guān)鍵信息,這對(duì)于后續(xù)的數(shù)據(jù)分析和模型構(gòu)建具有重要意義。2主成分分析的數(shù)學(xué)基礎(chǔ)2.1協(xié)方差矩陣與相關(guān)矩陣2.1.1協(xié)方差矩陣協(xié)方差矩陣是主成分分析(PCA)中一個(gè)核心概念,它描述了數(shù)據(jù)集中各變量之間的線性關(guān)系強(qiáng)度和方向。對(duì)于一個(gè)具有n個(gè)樣本和p個(gè)變量的數(shù)據(jù)集,協(xié)方差矩陣是一個(gè)p×p的矩陣,其中元素Cij表示第協(xié)方差的計(jì)算公式為:C其中,xki是第k個(gè)樣本的第i個(gè)變量的值,xi2.1.2相關(guān)矩陣相關(guān)矩陣是協(xié)方差矩陣的一種標(biāo)準(zhǔn)化形式,它消除了變量量綱的影響,使得每個(gè)元素Rij表示第i個(gè)變量和第j個(gè)變量之間的相關(guān)系數(shù),范圍在相關(guān)系數(shù)的計(jì)算公式為:R2.1.3示例代碼假設(shè)我們有一個(gè)數(shù)據(jù)集,包含兩個(gè)變量X和Y,我們將計(jì)算它們的協(xié)方差矩陣和相關(guān)矩陣。importnumpyasnp

#數(shù)據(jù)集

data=np.array([[1,2],[3,4],[5,6],[7,8],[9,10]])

#計(jì)算協(xié)方差矩陣

cov_matrix=np.cov(data,rowvar=False)

print("協(xié)方差矩陣:\n",cov_matrix)

#計(jì)算相關(guān)矩陣

corr_matrix=np.corrcoef(data,rowvar=False)

print("相關(guān)矩陣:\n",corr_matrix)2.2特征值與特征向量2.2.1特征值特征值是矩陣的一個(gè)重要屬性,它與特征向量一起描述了矩陣的內(nèi)在結(jié)構(gòu)。在PCA中,協(xié)方差矩陣或相關(guān)矩陣的特征值表示了數(shù)據(jù)在不同方向上的方差大小。2.2.2特征向量特征向量是與特征值相對(duì)應(yīng)的向量,它指出了數(shù)據(jù)的主方向。在PCA中,特征向量決定了新的坐標(biāo)軸的方向,而特征值的大小則決定了這些坐標(biāo)軸的重要性。2.2.3示例代碼我們將使用上面的協(xié)方差矩陣來(lái)計(jì)算特征值和特征向量。#計(jì)算協(xié)方差矩陣的特征值和特征向量

eigenvalues,eigenvectors=np.linalg.eig(cov_matrix)

print("特征值:\n",eigenvalues)

print("特征向量:\n",eigenvectors)2.3概率論與數(shù)理統(tǒng)計(jì)在PCA中的應(yīng)用PCA本質(zhì)上是一種降維技術(shù),它通過(guò)概率論和數(shù)理統(tǒng)計(jì)的方法來(lái)尋找數(shù)據(jù)的主成分。主成分是數(shù)據(jù)在新坐標(biāo)系中的投影,這些坐標(biāo)軸由數(shù)據(jù)的協(xié)方差矩陣或相關(guān)矩陣的特征向量定義。2.3.1數(shù)據(jù)的中心化在PCA中,數(shù)據(jù)通常需要進(jìn)行中心化處理,即從每個(gè)變量中減去其平均值,使得數(shù)據(jù)的平均值為零。這一步驟在概率論中是基于隨機(jī)變量的期望值概念。2.3.2數(shù)據(jù)的標(biāo)準(zhǔn)化數(shù)據(jù)標(biāo)準(zhǔn)化是將數(shù)據(jù)轉(zhuǎn)換為標(biāo)準(zhǔn)正態(tài)分布的過(guò)程,即均值為0,標(biāo)準(zhǔn)差為1。在數(shù)理統(tǒng)計(jì)中,這通常是為了消除量綱的影響,使得不同變量在PCA中具有可比性。2.3.3示例代碼我們將對(duì)數(shù)據(jù)集進(jìn)行中心化和標(biāo)準(zhǔn)化處理。#數(shù)據(jù)中心化

data_centered=data-np.mean(data,axis=0)

#數(shù)據(jù)標(biāo)準(zhǔn)化

data_standardized=(data_centered-np.mean(data_centered,axis=0))/np.std(data_centered,axis=0)

print("標(biāo)準(zhǔn)化后的數(shù)據(jù):\n",data_standardized)2.3.4主成分的選擇在PCA中,主成分的選擇通常基于特征值的大小。較大的特征值對(duì)應(yīng)著數(shù)據(jù)方差較大的方向,因此這些方向的特征向量被選為主成分。通常,我們會(huì)選擇前k個(gè)最大的特征值對(duì)應(yīng)的特征向量,以達(dá)到降維的目的。2.3.5示例代碼假設(shè)我們決定保留前兩個(gè)主成分,我們將使用特征向量來(lái)投影數(shù)據(jù)。#選擇前兩個(gè)主成分

principal_components=eigenvectors[:,:2]

#投影數(shù)據(jù)到主成分

data_projected=np.dot(data_standardized,principal_components)

print("投影后的數(shù)據(jù):\n",data_projected)通過(guò)以上步驟,我們不僅理解了PCA的數(shù)學(xué)基礎(chǔ),還通過(guò)代碼示例實(shí)際操作了數(shù)據(jù)的中心化、標(biāo)準(zhǔn)化、協(xié)方差矩陣和相關(guān)矩陣的計(jì)算,以及特征值和特征向量的提取和應(yīng)用。這為深入學(xué)習(xí)PCA提供了堅(jiān)實(shí)的基礎(chǔ)。3數(shù)據(jù)分析:主成分分析(PCA):概率論與數(shù)理統(tǒng)計(jì)3.1PCA的步驟3.1.1數(shù)據(jù)預(yù)處理數(shù)據(jù)預(yù)處理是PCA分析的第一步,主要目的是確保數(shù)據(jù)的均值為零,且具有相同的尺度。這一步驟對(duì)于PCA的后續(xù)計(jì)算至關(guān)重要,因?yàn)镻CA是基于數(shù)據(jù)的協(xié)方差矩陣進(jìn)行的,而協(xié)方差矩陣的計(jì)算會(huì)受到數(shù)據(jù)尺度和均值的影響。示例代碼importnumpyasnp

fromsklearn.preprocessingimportStandardScaler

#假設(shè)我們有以下數(shù)據(jù)

data=np.array([[1,2],[2,3],[3,4],[4,5],[5,6]])

#使用StandardScaler進(jìn)行數(shù)據(jù)標(biāo)準(zhǔn)化

scaler=StandardScaler()

data_scaled=scaler.fit_transform(data)

#打印標(biāo)準(zhǔn)化后的數(shù)據(jù)

print("標(biāo)準(zhǔn)化后的數(shù)據(jù):\n",data_scaled)3.1.2計(jì)算協(xié)方差矩陣協(xié)方差矩陣反映了數(shù)據(jù)中各變量之間的線性關(guān)系。在PCA中,協(xié)方差矩陣是求解特征值和特征向量的基礎(chǔ)。示例代碼#計(jì)算協(xié)方差矩陣

cov_matrix=np.cov(data_scaled,rowvar=False)

#打印協(xié)方差矩陣

print("協(xié)方差矩陣:\n",cov_matrix)3.1.3求解特征值與特征向量特征值和特征向量是PCA的核心。特征值表示了主成分的方向,而特征向量表示了主成分的大小。通過(guò)求解協(xié)方差矩陣的特征值和特征向量,我們可以找到數(shù)據(jù)的主要方向。示例代碼#求解協(xié)方差矩陣的特征值和特征向量

eigenvalues,eigenvectors=np.linalg.eig(cov_matrix)

#打印特征值和特征向量

print("特征值:\n",eigenvalues)

print("特征向量:\n",eigenvectors)3.1.4選擇主成分選擇主成分是基于特征值的大小。特征值越大,表示該方向上的數(shù)據(jù)變化越大,因此該方向上的特征向量就是主成分。通常,我們會(huì)選擇前k個(gè)最大的特征值對(duì)應(yīng)的特征向量作為主成分。示例代碼#假設(shè)我們選擇前2個(gè)主成分

k=2

#選擇前k個(gè)最大的特征值對(duì)應(yīng)的特征向量

principal_components=eigenvectors[:,:k]

#打印主成分

print("主成分:\n",principal_components)3.1.5數(shù)據(jù)投影最后一步是將原始數(shù)據(jù)投影到主成分上,得到降維后的數(shù)據(jù)。這一步驟可以通過(guò)矩陣乘法實(shí)現(xiàn)。示例代碼#將原始數(shù)據(jù)投影到主成分上

data_projected=np.dot(data_scaled,principal_components)

#打印降維后的數(shù)據(jù)

print("降維后的數(shù)據(jù):\n",data_projected)通過(guò)以上步驟,我們完成了PCA分析,得到了降維后的數(shù)據(jù)。PCA不僅可以用于數(shù)據(jù)降維,還可以用于數(shù)據(jù)可視化、數(shù)據(jù)壓縮和特征提取等場(chǎng)景。在實(shí)際應(yīng)用中,我們通常會(huì)使用如sklearn.decomposition.PCA這樣的庫(kù)函數(shù)來(lái)簡(jiǎn)化PCA的計(jì)算過(guò)程。4PCA的實(shí)例分析4.1數(shù)據(jù)集的選取與預(yù)處理在進(jìn)行主成分分析(PCA)之前,選擇合適的數(shù)據(jù)集并對(duì)其進(jìn)行預(yù)處理是至關(guān)重要的步驟。本節(jié)將使用一個(gè)經(jīng)典的鳶尾花數(shù)據(jù)集(Irisdataset)作為示例,該數(shù)據(jù)集包含了150個(gè)樣本,每個(gè)樣本有4個(gè)特征:花萼長(zhǎng)度、花萼寬度、花瓣長(zhǎng)度和花瓣寬度。我們將使用Python的pandas庫(kù)來(lái)加載數(shù)據(jù),并使用scikit-learn庫(kù)進(jìn)行預(yù)處理。importpandasaspd

fromsklearn.preprocessingimportStandardScaler

fromsklearn.decompositionimportPCA

importmatplotlib.pyplotasplt

importnumpyasnp

#加載數(shù)據(jù)

url="/ml/machine-learning-databases/iris/iris.data"

names=['sepal-length','sepal-width','petal-length','petal-width','class']

dataset=pd.read_csv(url,names=names)

#數(shù)據(jù)預(yù)處理

X=dataset.iloc[:,:-1].values

y=dataset.iloc[:,4].values

#標(biāo)準(zhǔn)化數(shù)據(jù)

scaler=StandardScaler()

X=scaler.fit_transform(X)在上述代碼中,我們首先導(dǎo)入了必要的庫(kù),然后使用pandas的read_csv函數(shù)加載了鳶尾花數(shù)據(jù)集。數(shù)據(jù)集的特征被存儲(chǔ)在X中,而類別標(biāo)簽則存儲(chǔ)在y中。接下來(lái),我們使用StandardScaler對(duì)數(shù)據(jù)進(jìn)行了標(biāo)準(zhǔn)化處理,這是因?yàn)镻CA對(duì)數(shù)據(jù)的尺度敏感,標(biāo)準(zhǔn)化可以確保每個(gè)特征在PCA中具有相同的重要性。4.2應(yīng)用PCA進(jìn)行數(shù)據(jù)降維PCA是一種線性變換技術(shù),用于將高維數(shù)據(jù)轉(zhuǎn)換為低維數(shù)據(jù),同時(shí)保留盡可能多的原始數(shù)據(jù)的方差。在本節(jié)中,我們將使用scikit-learn的PCA類來(lái)對(duì)預(yù)處理后的數(shù)據(jù)進(jìn)行降維。#應(yīng)用PCA

pca=PCA(n_components=2)

principalComponents=pca.fit_transform(X)

principalDf=pd.DataFrame(data=principalComponents

,columns=['principalcomponent1','principalcomponent2'])

#合并PCA結(jié)果和類別標(biāo)簽

finalDf=pd.concat([principalDf,dataset[['class']]],axis=1)在上面的代碼中,我們創(chuàng)建了一個(gè)PCA對(duì)象,指定n_components=2,意味著我們希望將數(shù)據(jù)降維到兩個(gè)主成分。然后,我們使用fit_transform方法對(duì)數(shù)據(jù)X進(jìn)行PCA變換,得到降維后的數(shù)據(jù)principalComponents。最后,我們將降維后的數(shù)據(jù)與原始的類別標(biāo)簽合并,以便于后續(xù)的可視化。4.3結(jié)果解釋與可視化PCA降維后的結(jié)果可以通過(guò)可視化來(lái)幫助我們理解數(shù)據(jù)的結(jié)構(gòu)。我們將使用matplotlib庫(kù)來(lái)繪制降維后的數(shù)據(jù)點(diǎn),不同類別的數(shù)據(jù)點(diǎn)將用不同的顏色表示。#可視化PCA結(jié)果

fig=plt.figure(figsize=(8,8))

ax=fig.add_subplot(1,1,1)

ax.set_xlabel('PrincipalComponent1',fontsize=15)

ax.set_ylabel('PrincipalComponent2',fontsize=15)

ax.set_title('2componentPCA',fontsize=20)

#不同類別的數(shù)據(jù)點(diǎn)用不同顏色表示

targets=['Iris-setosa','Iris-versicolor','Iris-virginica']

colors=['r','g','b']

fortarget,colorinzip(targets,colors):

indicesToKeep=finalDf['class']==target

ax.scatter(finalDf.loc[indicesToKeep,'principalcomponent1']

,finalDf.loc[indicesToKeep,'principalcomponent2']

,c=color

,s=50)

ax.legend(targets)

ax.grid()在上述代碼中,我們首先設(shè)置了繪圖的大小、坐標(biāo)軸的標(biāo)簽和標(biāo)題。然后,我們定義了不同的顏色來(lái)表示不同的類別,并使用scatter函數(shù)繪制了降維后的數(shù)據(jù)點(diǎn)。通過(guò)觀察可視化結(jié)果,我們可以看到PCA有效地將不同類別的鳶尾花數(shù)據(jù)點(diǎn)在二維空間中進(jìn)行了分離,這表明PCA成功地從原始的四維數(shù)據(jù)中提取了有意義的低維表示。通過(guò)這個(gè)實(shí)例分析,我們不僅學(xué)習(xí)了如何使用Python和scikit-learn庫(kù)進(jìn)行PCA降維,還了解了如何解釋和可視化PCA的結(jié)果。PCA是一種強(qiáng)大的工具,可以幫助我們理解高維數(shù)據(jù)的結(jié)構(gòu),并在許多機(jī)器學(xué)習(xí)任務(wù)中提高模型的性能。5PCA的局限性與變體5.1PCA的假設(shè)與限制主成分分析(PCA)是一種廣泛應(yīng)用于數(shù)據(jù)降維的技術(shù),它通過(guò)線性變換將原始數(shù)據(jù)投影到一個(gè)新的坐標(biāo)系中,使得數(shù)據(jù)在新坐標(biāo)系下的方差最大化。然而,PCA并非在所有情況下都是最佳選擇,其有效性受到一些假設(shè)和限制的影響。5.1.1假設(shè)線性關(guān)系:PCA假設(shè)數(shù)據(jù)之間的關(guān)系是線性的。如果數(shù)據(jù)存在非線性關(guān)系,PCA可能無(wú)法有效捕捉數(shù)據(jù)的結(jié)構(gòu)。方差最大化:PCA關(guān)注的是數(shù)據(jù)的方差,這意味著它可能忽略數(shù)據(jù)中的其他重要信息,如數(shù)據(jù)的均值或數(shù)據(jù)點(diǎn)之間的距離。正態(tài)分布:PCA通常假設(shè)數(shù)據(jù)服從正態(tài)分布,這在實(shí)際應(yīng)用中并不總是成立。5.1.2限制敏感性:PCA對(duì)數(shù)據(jù)的尺度敏感,需要對(duì)數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化處理。解釋性:雖然PCA可以降低數(shù)據(jù)維度,但主成分的物理意義可能難以解釋,尤其是當(dāng)原始特征之間存在復(fù)雜關(guān)系時(shí)。信息損失:降維過(guò)程中,PCA會(huì)丟失一些信息,盡管這些信息可能在方差上較小,但對(duì)某些應(yīng)用來(lái)說(shuō)可能是關(guān)鍵的。5.2核PCA與稀疏PCA5.2.1核PCA核PCA(KernelPCA)是PCA的一種擴(kuò)展,通過(guò)使用核函數(shù)來(lái)處理非線性數(shù)據(jù)。核函數(shù)將數(shù)據(jù)從原始空間映射到一個(gè)更高維的空間,在這個(gè)空間中,數(shù)據(jù)可能呈現(xiàn)出線性可分的特性,從而使得PCA可以更有效地進(jìn)行降維。示例代碼fromsklearn.decompositionimportKernelPCA

fromsklearn.datasetsimportmake_circles

importnumpyasnp

importmatplotlib.pyplotasplt

#生成非線性可分?jǐn)?shù)據(jù)

X,y=make_circles(n_samples=400,factor=.3,noise=.05)

#使用徑向基函數(shù)(RBF)核進(jìn)行核PCA

kpca=KernelPCA(kernel="rbf",fit_inverse_transform=True,gamma=10)

X_kpca=kpca.fit_transform(X)

X_back=kpca.inverse_transform(X_kpca)

#繪制結(jié)果

plt.figure(figsize=(12,4))

plt.subplot(1,3,1)

plt.scatter(X[:,0],X[:,1],c=y,cmap='viridis')

plt.title('原始數(shù)據(jù)')

plt.subplot(1,3,2)

plt.scatter(X_kpca[:,0],X_kpca[:,1],c=y,cmap='viridis')

plt.title('核PCA降維后的數(shù)據(jù)')

plt.subplot(1,3,3)

plt.scatter(X_back[:,0],X_back[:,1],c=y,cmap='viridis')

plt.title('核PCA降維后反變換的數(shù)據(jù)')

plt.show()5.2.2稀疏PCA稀疏PCA(SparsePCA)旨在找到數(shù)據(jù)的稀疏表示,即在主成分中只包含少量原始特征的線性組合。這有助于提高模型的解釋性,因?yàn)橹鞒煞挚梢员恢苯优c原始特征聯(lián)系起來(lái)。示例代碼fromsklearn.decompositionimportSparsePCA

fromsklearn.datasetsimportload_iris

importnumpyasnp

importmatplotlib.pyplotasplt

#加載Iris數(shù)據(jù)集

data=load_iris()

X=data.data

#使用稀疏PCA進(jìn)行降維

spca=SparsePCA(n_components=2)

X_spca=spca.fit_transform(X)

#繪制結(jié)果

plt.figure(figsize=(8,4))

plt.scatter(X_spca[:,0],X_spca[:,1],c=data.target,cmap='viridis')

plt.title('稀疏PCA降維后的Iris數(shù)據(jù)')

plt.xlabel('第一個(gè)主成分')

plt.ylabel('第二個(gè)主成分')

plt.colorbar()

plt.show()5.3PCA與其他降維技術(shù)的比較PCA雖然是一種強(qiáng)大的降維工具,但在某些情況下,其他降維技術(shù)可能更為適用。例如,t-SNE(t-DistributedStochasticNeighborEmbedding)在保持?jǐn)?shù)據(jù)點(diǎn)之間的局部結(jié)構(gòu)方面表現(xiàn)更佳,而LDA(LinearDiscriminantAnalysis)則更適用于分類問(wèn)題,因?yàn)樗噲D最大化類間方差同時(shí)最小化類內(nèi)方差。5.3.1t-SNE示例fromsklearn.manifoldimportTSNE

fromsklearn.datasetsimportload_digits

importmatplotlib.pyplotasplt

#加載Digits數(shù)據(jù)集

digits=load_digits()

X=digits.data

#使用t-SNE進(jìn)行降維

tsne=TSNE(n_components=2,random_state=0)

X_tsne=tsne.fit_transform(X)

#繪制結(jié)果

plt.figure(figsize=(8,4))

plt.scatter(X_tsne[:,0],X_tsne[:,1],c=digits.target,cmap='viridis')

plt.title('t-SNE降維后的Digits數(shù)據(jù)')

plt.colorbar()

plt.show()5.3.2LDA示例fromsklearn.discriminant_analysisimportLinearDiscriminantAnalysis

fromsklearn.datasetsimportload_wine

importmatplotlib.pyplotasplt

#加載Wine數(shù)據(jù)集

wine=load_wine()

X=wine.data

y=wine.target

#使用LDA進(jìn)行降維

lda=LinearDiscriminantAnalysis(n_components=2)

X_lda=lda.fit_transform(X,y)

#繪制結(jié)果

plt.figure(figsize=(8,4))

plt.scatter(X_lda[:,0],X_lda[:,1],c=y,cmap='viridis')

plt.title('LDA降維后的Wine數(shù)據(jù)')

plt.xlabel('第一個(gè)線性判別')

plt.ylabel('第二個(gè)線性判別')

plt.colorbar()

plt.show()通過(guò)這些示例,我們可以看到不同的降維技術(shù)在處理不同類型的數(shù)據(jù)時(shí)的優(yōu)劣。選擇合適的降維方法對(duì)于后續(xù)的數(shù)據(jù)分析和機(jī)器學(xué)習(xí)任務(wù)至關(guān)重要。6數(shù)據(jù)分析:主成分分析(PCA):概率論與數(shù)理統(tǒng)計(jì)6.1PCA的關(guān)鍵點(diǎn)回顧主成分分析(PCA)是一種廣泛應(yīng)用于數(shù)據(jù)降維和特征提取的統(tǒng)計(jì)方法。其核心思想是通過(guò)線性變換將原始數(shù)據(jù)轉(zhuǎn)換到一個(gè)新的坐標(biāo)系統(tǒng)中,使得數(shù)據(jù)在新坐標(biāo)軸上的投影方差最大。PCA的關(guān)鍵步驟包括:數(shù)據(jù)預(yù)處理:對(duì)數(shù)據(jù)進(jìn)行中心化,即減去每一列(特征)的平均值,確保數(shù)據(jù)均值為零。計(jì)算協(xié)方差矩陣:協(xié)方差矩陣描述了數(shù)據(jù)中各特征之間的關(guān)系。求解協(xié)方差矩陣的特征值和特征向量:特征值表示了主成分的方差大小,特征向量則指示了主成分的方向。選擇主成分:根據(jù)特征值的大小,選擇前k個(gè)最大的特征值對(duì)應(yīng)的特征向量,構(gòu)成新的坐標(biāo)系統(tǒng)。數(shù)據(jù)投影:將原始數(shù)據(jù)投影到新的坐標(biāo)系統(tǒng)中,實(shí)現(xiàn)數(shù)據(jù)降維。6.1.1示例代碼假設(shè)我們有一組二維數(shù)據(jù),我們將使用PCA將其降維到一維。importnumpyasnp

fromsklearn.decompositionimportPCA

importmatplotlib.pyplotasplt

#生成數(shù)據(jù)

np.random.seed(0)

X=np.random.rand(100,2)

#數(shù)據(jù)中心化

X_centered=X-X.mean(axis=0)

#計(jì)算協(xié)方差矩陣

cov_matrix=np.cov(X_centered,rowvar=False)

#求解特征值和特征向量

eigenvalues,eigenvectors=np.linalg.eig(cov_matrix)

#選擇主成分

#由于我們想要降維到一維,選擇最大的特征值對(duì)應(yīng)的特征向量

principal_

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論