《數(shù)據(jù)挖掘原理、算法與應用(Python語言描述)》課件 【第九章】降維_第1頁
《數(shù)據(jù)挖掘原理、算法與應用(Python語言描述)》課件 【第九章】降維_第2頁
《數(shù)據(jù)挖掘原理、算法與應用(Python語言描述)》課件 【第九章】降維_第3頁
《數(shù)據(jù)挖掘原理、算法與應用(Python語言描述)》課件 【第九章】降維_第4頁
《數(shù)據(jù)挖掘原理、算法與應用(Python語言描述)》課件 【第九章】降維_第5頁
已閱讀5頁,還剩72頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第九章

降維數(shù)據(jù)挖掘原理、算法與應用(Python語言描述)學習目標(1)掌握主成分降維方法以及Python的實現(xiàn)。(2)了解其他矩陣分解降維方法。(3)了解線性判別法降維與分類。(4)掌握基于流形學習的降維方法。目錄矩陣分解降維主成分分析(PCA)非負矩陣分解(NMF)因子分析獨立主成分分析判別分析法基于流形學習的數(shù)據(jù)降維方法局部線性嵌入(LLE)多維尺度變換(MDS)t-分布隨機鄰域嵌入算法(t-SNE)案例:手寫數(shù)字識別數(shù)據(jù)集的降維分析降維方法降維本質(zhì)上是降低數(shù)據(jù)維度,是一種無監(jiān)督學習方法(LDA例外)降維的目的:摒棄冗余信息(共線性),刪除噪音降低計算時間、空間復雜度簡單模型具有更好的魯棒性實現(xiàn)數(shù)據(jù)可視化可以作為特征提取的方法降維方法:基于矩陣分解的方法,例如:PCA、LDA、NMF基于流形學習的方法,例如:MDS、LLE、t-SNE降維方法降維方法線性方法主成分分析(PCA)線性判別分析(LDA)獨立主成分分析(ICA)非負矩陣分解(NMF)非線性方法保留局部信息基于重建權(quán)值局部線性嵌入(LLE)基于概率分布t-分布隨機鄰域嵌入(t-SNE)保留全局信息基于距離保持多維尺度變換(MDS)基于核方法核方法的主成分分析(KernelPCA)基于神經(jīng)網(wǎng)絡自編碼器(Autoencoder)Sklearn降維模塊Sklearn中降維的方法主要分布在以下三個模塊:sklearn.decomposition:包含了絕大部分的矩陣分解算法,其中包括PCA、核PCA、NMF或ICAsklearn.discriminant_analysis:包含了LDA和QDA兩種判別分析方法sklearn.manifold:包含了基于流形學習的數(shù)據(jù)降維方法流形是局部具有歐幾里得空間性質(zhì)的空間,不同于傳統(tǒng)機器學習方法假設數(shù)據(jù)存在于歐式空間,流形學習假設數(shù)據(jù)分布嵌入在外圍高維空間的一個潛在流形上Sklearn降維模塊類說明decomposition.PCA主成分分析(PCA)decomposition.NMF非負矩陣分解(NMF)decomposition.FastICA獨立主成分分析(ICA)decomposition.FactorAnalysis因子分析decomposition.KernelPCA核PCAdecomposition.SparsePCA稀疏PCAdecomposition.SparseCoder稀疏編碼sklearn.decomposition模塊Sklearn降維模塊sklearn.discriminant_analysis模塊類說明discriminant_analysis.LinearDiscriminantAnalysis線性判別分析(LDA)discriminant_analysis.QuadraticDiscriminantAnalysis二次判別分析(QDA)sklearn.manifold模塊類說明manifold.LocallyLinearEmbedding局部線性嵌入(LLE)manifold.MDS多維尺度變換(MDS)manifold.TSNEt分布隨機鄰域嵌入(t-SNE)manifold.Isomap等度量映射(Isomap)Sklearn降維模塊通用方法說明fit(X)訓練模型transform(X)進行降維fit_transform(X)訓練模型并進行降維Inverse_transform(X)進行升維(逆變換)目錄矩陣分解降維主成分分析(PCA)非負矩陣分解(NMF)因子分析獨立主成分分析判別分析法基于流形學習的數(shù)據(jù)降維方法局部線性嵌入(LLE)多維尺度變換(MDS)t-分布隨機鄰域嵌入算法(t-SNE)案例:手寫數(shù)字識別數(shù)據(jù)集的降維分析9.1矩陣分解降維本節(jié)使用/ml/datasets/的REJAFADA數(shù)據(jù)集。該數(shù)據(jù)集內(nèi)包含2類共1996個樣本,每個樣本都有6826項特征,通過這些特征預測JarFiles屬于(Malware、Benign)中的哪一種。9.1矩陣分解降維例9-1數(shù)據(jù)集讀取importpandasaspddata=pd.read_csv("d:/datasets/教材數(shù)據(jù)集/eg9.csv",names=["jar","Label"]+list([str(i)foriinrange(6824)]))data.drop(axis=1,columns=["jar"],inplace=True)#刪除"jar"特征(文件名)X=data.drop(axis=1,columns=["Label"])#提取特征Y=data.Label#提取標簽print("數(shù)據(jù)集的樣本數(shù):",X.shape[0],"數(shù)據(jù)集的特征數(shù):",X.shape[1])#輸出數(shù)據(jù)集的行列數(shù)數(shù)據(jù)集的樣本數(shù):1996,數(shù)據(jù)集的特征數(shù):6824fromsklearn.model_selectionimporttrain_test_splitX=data.drop(axis=1,columns=["Label"])#提取特征Y=data.Label#提取標簽X_train,X_test,y_train,y_test=train_test_split(X,Y,train_size=0.8)#測試集訓練集劃分9.1.1主成分分析主成分分析算法(PrincipalComponentsAnalysis,PCA)是最常用的線性降維方法,通過構(gòu)造原始特征的一系列線性組合形成低維的特征,以去除數(shù)據(jù)的相關(guān)性,并使降維后的數(shù)據(jù)最大程度地保持原始高維數(shù)據(jù)的方差信息PCA算法步驟輸入:數(shù)據(jù)矩陣X,降維后的維度n輸出:轉(zhuǎn)換矩陣1.對X中的每個樣本特征的值減去對應特征的均值-中心化處理;2.計算中心化處理后數(shù)據(jù)矩陣的協(xié)方差;3.對協(xié)方差矩陣做特征值分解,并按特征值降序排列;4.將最大的n個特征值對應的特征向量組合成轉(zhuǎn)換矩陣。

Sklearn.decomposition中的PCA模塊實現(xiàn)主成分分析。PCA類參數(shù)說明n_components一個整數(shù),指定降維后的維數(shù):

如果為“None”,則值為min{n_samples,n_features}

如果為“mle”,則使用Minka‘sMLE算法來估計降維后的維數(shù)

如果為大于0小于1的浮點數(shù),則值為降維后的維數(shù)占原始維數(shù)的百分比whiten對降維后的數(shù)據(jù)的每個特征進行標準化,使方差為1(白化),默認為Falsesvd_solver指定奇異值分解SVD的方法:

如果為“randomized”,則使用加快SVD的隨機算法來應對數(shù)據(jù)量較大的情況

如果為“full”,則為傳統(tǒng)SVD算法

如果為“arpack”,則為scipy庫的sparseSVD算法

如果為“auto”,則自動選擇SVD算法來降維屬性說明explained_variance_返回方差貢獻值explained_variance_ratio_返回方差貢獻率9.1.1主成分分析例9-2PCA實現(xiàn)降維fromsklearn.decompositionimportPCApca=PCA(n_components=5)#實例化對象,n_components參數(shù)指定降維后的維度X_pca_train=pca.fit_transform(X_train)#擬合、訓練集降維X_pca_test=pca.transform(X_test)#測試集降維print("降維后訓練集的特征數(shù):",X_pca_train.shape[1],"降維后測試集的特征數(shù):",X_pca_test.shape[1])#輸出數(shù)據(jù)集的列數(shù)降維后訓練集的特征數(shù):5,降維后測試集的特征數(shù):59.1.2核PCA核PCA(KernelPCA,KPCA)對于輸入空間的矩陣X,先是用一個非線性映射(由核函數(shù)確定)把X中的所有樣本映射到一個高維甚至是無窮維的空間,使其線性可分,然后在這個高維空間進行PCA降維。主成分分析適用于數(shù)據(jù)的線性降維。核主成分分析可實現(xiàn)數(shù)據(jù)的非線性降維,用于處理線性不可分的數(shù)據(jù)集。Sklearn.decomposition中的KernelPCA模塊實現(xiàn)核PCA降維。KernelPCA常用參數(shù)說明:參數(shù)說明n_components降維后的維度數(shù)kernel指定核函數(shù)degree多項式核的階數(shù)9.1.2核PCA例9-3KernelPCA實現(xiàn)降維fromsklearn.decompositionimportKernelPCAkpca=KernelPCA(n_components=3,#降維后的維度3kernel="sigmoid",#指定核函數(shù)random_state=10)X_kpca_train=kpca.fit_transform(X_train)#擬合,訓練集降維X_kpca_test=kpca.transform(X_test)#測試集降維print("降維后訓練集的特征數(shù):",X_kpca_train.shape[1],",降維后測試集的特征數(shù):",X_kpca_test.shape[1])#輸出數(shù)據(jù)集的列數(shù)降維后訓練集的特征數(shù):3,降維后測試集的特征數(shù):39.1.3非負矩陣分解

9.1.3非負矩陣分解NMF還原圖像左圖給出了PCA、NMF兩種方法對原圖進行分解的效果可以看到兩種方法的圖像還原效果較為接近,但是NMF的基矩陣和權(quán)重矩陣具有更好的稀疏性NMF類參數(shù)意義n_components設定數(shù)據(jù)降維后的維度init初始化方法,’’random‘,nndsvd’,‘nndsvda’,‘nndsvdar’,‘custom’:’random‘:非負隨機矩陣‘nndsvd':非負雙奇異值分解(更適合稀疏性)'nndsvda':零填充平均值(當不需要稀疏時更好)'nndsvdar':零填充小的隨機值(當不需要稀疏時,通常更快,更準確地替代NNDSVDa)‘custom’:自定義矩陣solver選擇優(yōu)化算法,分別是‘cd’:坐標下降法,’pg’:梯度投影算法alpha總的正則化強度,默認為0l1_ratio9.1.3非負矩陣分解例9-4NMF實現(xiàn)降維fromsklearn.decompositionimportNMFnmf=NMF(n_components=6,#指定降維后的維度6init='nndsvda',random_state=10)X_nmf_train=nmf.fit_transform(X_train)#擬合、訓練集降維X_nmf_test=nmf.transform(X_test)#測試集降維X_nmf_train.shape,X_nmf_test.shape#輸出X_nmf訓練集以及測試集的shape降維后訓練集的特征數(shù):6,降維后測試集的特征數(shù):69.1.4因子分析因子分析(FactorAnalysis)是一種多變量化簡技術(shù)。根據(jù)相關(guān)性大小把變量分組,使得同組內(nèi)的變量之間相關(guān)性較高,不同組的變量不相關(guān)或相關(guān)性較低,每組變量代表一個基本結(jié)構(gòu),即公共因子。主成分分析是試圖尋找原有自變量的一個線性組合,這個組合方差要大。因子分析假設所有的自變量X背后存在一個潛變量f,也就是因子,在這個因子的作用下,X可以被觀察到。因子分析法首先對數(shù)據(jù)樣本進行標準化處理;然后計算樣本的相關(guān)矩陣R以及R的特征根和特征向量,根據(jù)設定的累積貢獻率確定主因子的個數(shù);最后計算因子載荷矩陣A,確定因子模型。9.1.4因子分析Sklearn.decomposition中的FactorAnalysis模塊實現(xiàn)因子分解。FactorAnalysis常用參數(shù)說明:參數(shù)說明n_components設定數(shù)據(jù)降維后的維度tol收斂閾值max_iter最大迭代次數(shù)svd_methodsvd分解方法random_state隨機數(shù)種子9.1.4因子分析例9-5FactorAnalysis實現(xiàn)降維fromsklearn.decompositionimportFactorAnalysisFa=FactorAnalysis(n_components=3,random_state=0)X_Fa_train=Fa.fit_transform(X_train)#擬合、訓練集降維X_Fa_test=Fa.transform(X_test)#測試集降維print("降維后訓練集的特征數(shù):",X_Fa_train.shape[1],",降維后測試集的特征數(shù):",X_Fa_test.shape[1])#輸出降維后數(shù)據(jù)集的列數(shù)降維后訓練集的特征數(shù):3,降維后測試集的特征數(shù):39.1.5獨立主成分分析

9.1.5獨立主成分分析sklearn.decomposition中的FastICA模塊實現(xiàn)獨立主成分分析。FastICA常用參數(shù)說明:參數(shù)說明n_components設定數(shù)據(jù)降維后的維度tol收斂閾值max_iter最大迭代次數(shù)algorithm算法random_state隨機數(shù)種子9.1.5獨立主成分分析例9-6FastICA實現(xiàn)降維fromsklearn.decompositionimportFastICAFica=FastICA(n_components=3,random_state=10)X_Fica_train=Fica.fit_transform(X_train)X_Fica_test=Fica.fit_transform(X_train)print("降維后訓練集的特征數(shù):",X_Fica_train.shape[1],",降維后測試集的特征數(shù):",X_Fica_test.shape[1])#輸出降維后數(shù)據(jù)集的列數(shù)降維后訓練集的特征數(shù):3,降維后測試集的特征數(shù):3目錄矩陣分解降維主成分分析(PCA)非負矩陣分解(NMF)因子分析獨立主成分分析判別分析法基于流形學習的數(shù)據(jù)降維方法局部線性嵌入(LLE)多維尺度變換(MDS)t-分布隨機鄰域嵌入算法(t-SNE)案例:手寫數(shù)字識別數(shù)據(jù)集的降維分析線性判別分析(LinearDiscriminantAnalysis,LDA)是一種典型的有監(jiān)督線性降維方法LDA的目標是利用樣本的類別標簽信息,找到一個利于數(shù)據(jù)分類的線性低維表示這個目標可以從兩個角度來量化第一個角度是使得降維后相同類樣本盡可能近,使用類內(nèi)離散度

(within-classscatter)度量第二個角度是使得降維后不同類樣本盡可能遠,使用類間離散度

(between-classscatter)度量309.2.1線性判別分析如右圖所示,將原始樣本分為兩類并用不同圖形表示利用PCA方法,將得到直線??,可見降維后的兩類數(shù)據(jù)無法很好區(qū)分利用LDA方法,能夠找到直線??,使得降維后兩類數(shù)據(jù)很好地被區(qū)分開LDA算法原理示意類內(nèi)離散度和類間離散度類內(nèi)離散度第??類樣本的類內(nèi)離散度:

總的類內(nèi)離散度矩陣:類間離散度第c類樣本的均值所有樣本的均值LDA算法流程輸入:數(shù)據(jù)集X,降維后的維度n輸出:轉(zhuǎn)換矩陣(1)計算類內(nèi)散度矩陣Sw;(2)計算類間散度矩陣Sb;(3)計算矩陣Sw-1Sb;(4)對矩陣Sw-1Sb進行特征分解,取d個最大的特征值對應的特征向量組成W;(5)計算投影后的數(shù)據(jù)Y=WTX。LinearDiscriminantAnalysis類參數(shù)說明solver設定求解最優(yōu)化問題的算法{‘svd’(奇異值分解),’lsqr’(最小平方差算法)或‘eigen’(特征值分解算法)}shrinkage正則化參數(shù),增強泛化能力,默認為None,可設為‘a(chǎn)uto’自主選擇是否正則化或設為(0,1)之間的值,但僅在solver=‘lsqr’或‘eigen’下才有意義priors設定每個類別的先驗概率,默認為None時認為各類先驗概率等可能n_components設定數(shù)據(jù)降維后的維度,默認為None屬性說明covariance返回樣本相關(guān)陣explained_variance_ratio_返回方差貢獻率9.2.1線性判別分析例9-7LinearDiscriminantAnalysis實現(xiàn)降維分類fromsklearn.discriminant_analysisimportLinearDiscriminantAnalysislda=LinearDiscriminantAnalysis()X_lda=lda.fit_transform(X_train,y_train)#降維print("降維后訓練集的特征數(shù):",X_lda_train.shape[1],",降維后測試集的特征數(shù):",X_lda_test.shape[1])#輸出降維后數(shù)據(jù)集的列數(shù)降維后訓練集的特征數(shù):1,降維后測試集的特征數(shù):1y_pre=lda.predict(X_test)#分類預測fromsklearn.metricsimportclassification_reportprint(classification_report(y_test,y_pre))#輸出分類報告9.2.2二次判別分析二次判別分析(QDA)同線性判別分析相似,從概率分布的角度來得到二次判別分析,區(qū)別在于線性判別分析假設每一種分類的協(xié)方差矩陣相同,而二次判別分析中每一種分類的協(xié)方差矩陣不同。二次判別分析主要用于分類。sklearn.discriminant_analysis中的QuadraticDiscriminantAnalysis二次判別分析。QuadraticDiscriminantAnalysis常用參數(shù)說明:參數(shù)說明priors類的先驗信息tol收斂閾值store_covariance協(xié)方差矩陣是否計算并保存reg_param規(guī)范化每個類的協(xié)方差估計,scaling_=(1-reg_param)*S2+reg_param*np.eye(n_features)9.2.2二次判別分析例9-8二次判別分析fromsklearn.discriminant_analysisimportQuadraticDiscriminantAnalysis#導包qda=QuadraticDiscriminantAnalysis()#實例化二次判別分析器X_qda=qda.fit(X,y)#擬合、學習y_pre=qda.predict(X_test)#預測print(classification_report(y_test,y_pre))#輸出分類報告目錄矩陣分解降維主成分分析(PCA)非負矩陣分解(NMF)因子分析獨立主成分分析判別分析法基于流形學習的數(shù)據(jù)降維方法局部線性嵌入(LLE)多維尺度變換(MDS)t-分布隨機鄰域嵌入算法(t-SNE)案例:手寫數(shù)字識別數(shù)據(jù)集的降維分析9.3基于流形學習的數(shù)據(jù)降維方法流形:一個低維空間在一個高維空間中被扭曲之后的結(jié)果低維流形嵌入在高維空間中形象解釋:“一塊布是二維平面,把它在三維空間中扭一扭,就變成了一個流形”流形學習與降維樣本在高維空間分布復雜,但在局部上具有歐式空間的性質(zhì)在局部建立降維映射關(guān)系,再由局部推廣到全局數(shù)據(jù)被降至2維或3維,方便進行可視化9.3基于流形學習的數(shù)據(jù)降維方法本節(jié)使用sklearn.Datasets的make_s_curve,make_swiss_roll方法生成S曲線以及瑞士卷數(shù)據(jù)集。例9-9數(shù)據(jù)集生成并可視化fromsklearn.datasetsimportmake_swiss_roll,make_s_curvedata_s_curve,color_s_curve=make_s_curve(n_samples=1000,noise=0.1)data_swiss,color_swiss=make_swiss_roll(n_samples=1000,noise=0.1)importnumpyasnpimportmatplotlib.pyplotaspltfrommpl_toolkitsimportmplot3dplt.rcParams["font.sans-serif"]=["SimHei"]plt.rcParams["axes.unicode_minus"]=False9.3基于流形學習的數(shù)據(jù)降維方法

data=data_s_curvecolor=color_s_curvefig=plt.figure(figsize=(10,7))ax=plt.axes(projection="3d",elev=10,azim=80)ax.scatter3D(data[:,0],data[:,1],data[:,2],c=color,cmap=plt.cm.Spectral)plt.title("S_Curve")輸出S曲線如圖9?5S曲線圖所示。9.3基于流形學習的數(shù)據(jù)降維方法例9-9數(shù)據(jù)集生成并可視化

data=data_swiss_rollcolor=color_swissfig=plt.figure(figsize=(10,7))ax=plt.axes(projection="3d",elev=10,azim=80)#Creatingaplotusingtherandomdatasetsax.scatter3D(data[:,0],data[:,1],data[:,2],c=color,cmap=plt.cm.Spectral)plt.title("SwissRoll")輸出SwissRoll圖如圖9?6所示。9.3.1局部線性嵌入局部線性嵌入(LocallyLinearEmbedding,LLE)將數(shù)據(jù)降到低維空間中,但是保留數(shù)據(jù)局部的線性關(guān)系每一個樣本點可以寫成其??個近鄰點的線性組合,從高維嵌入(embedding)到低維時盡量保持局部的線性關(guān)系LLE算法的步驟

LLE算法的步驟

第三步:尋找低維表示使用步驟(2)計算的權(quán)值,由權(quán)重系數(shù)向量Wi組成權(quán)重系數(shù)矩陣W;計算矩陣M=(I-W)^T(I-W);計算矩陣M的前d+1個特征值,并計算這d+1個特征值對應的特征向量;第二個特征向量到第d+1個特征向量組成的矩陣即為輸出低維樣本集矩陣。LocallyLinearEmbedding類參數(shù)說明n_neighbors設置近鄰參數(shù)k,默認值為5reg正則化項的系數(shù),默認值為0.001method設置LLE在進行局部線性重構(gòu)時使用的算法,可選擇‘standard’,‘hessian’,

‘modified’或’ltsa’neighbors_algorithm設定計算最近鄰的算法{‘ball_tree’,‘kd_tree’,‘brute’或‘a(chǎn)uto‘}eigen_solver設置求解特征值的算法{‘a(chǎn)uto’,‘a(chǎn)rpack’或‘dense’}n_components設置降維后的維數(shù),一般設為2-59.3.1局部線性嵌入例9-10LLE對S曲線、瑞士卷降維并可視化X=data_s_curvefromsklearn.manifoldimportLocallyLinearEmbeddingLLE=LocallyLinearEmbedding(n_neighbors=5,random_state=10)X_lle=LLE.fit_transform(X)#LLE進行降維plt.scatter(X_lle[:,0],X_lle[:,1])plt.title("LLE降維可視化")9.3.1局部線性嵌入X=data_swiss_rollLLE=LocallyLinearEmbedding(n_neighbors=5,#近鄰數(shù)選取5n_components=2,random_state=10)X_lle=LLE.fit_transform(X)#LLE進行降維plt.scatter(X_lle[:,0],X_lle[:,1])plt.title("LLE降維可視化")9.3.2多維尺度變換

多維尺度變換(Multi-dimensionalScaling,MDS)的目標是找到數(shù)據(jù)的低維表示,使得降維前后樣本之間的相似度信息盡量得以保留多維尺度變換能夠只利用樣本間的距離信息,找到每一個樣本的特征表示,且在該特征表示下樣本的距離與原始的距離盡量接近

MDS算法原理及步驟

MDS算法原理及步驟

MDS算法原理及步驟

MDS類參數(shù)說明n_components設置降維后的數(shù)據(jù)維度,默認為2metric布爾值,默認為True,使用距離度量;否則使用非距離度量SMACOFdissimilarity定義如何計算不相似度,‘euclidean’使用歐氏距離,‘precomputed’自行計算距離eps浮點數(shù),用于指定收斂閾值,默認為1e-3屬性意義embedding_返回原始數(shù)據(jù)集在低維空間中的嵌入矩陣9.3.2多維尺度變換例9-11MDS對S曲線、瑞士卷降維并可視化fromsklearn.manifoldimportMDSmds=MDS(n_components=2,random_state=10)X_mds=mds.fit_transform(X)plt.scatter(X_mds[:,0],X_mds[:,1])plt.title("MDS降維可視化")X=data_swiss_rollmds=MDS(n_components=2,random_state=10)X_mds=mds.fit_transform(X)plt.scatter(X_mds[:,0],X_mds[:,1])plt.title("MDS降維可視化")9.3.3t分布隨機鄰域嵌入

SNE算法原理

不對稱性困惑度(perplexity)

表示熵t-SNE

TSNE類參數(shù)說明n_components降維后的維度,默認為2learning_rate學習率,默認為200.0,建議在[10,1000]之間perplexity困惑度,默認為30,數(shù)據(jù)集越大數(shù)值應越大,建議在5-50之間屬性說明embedding_返回原始數(shù)據(jù)集在低維空間中的嵌入矩陣9.3.3t分布隨機鄰域嵌入例9-12t-SNE對S曲線、瑞士卷降維并可視化X=data_s_curvefromsklearn.manifoldimportTSNEtsne=TSNE(n_components=2,random_state=0)X_tsne=tsne.fit_transform(X)plt.scatter(X_tsne[:,0],X_tsne[:,1])plt.title("TSNE降維可視化")X=data_swiss_rolltsne=TSNE(n_components=2,random_state=0)X_tsne=tsne.fit_transform(X)plt.scatter(X_tsne[:,0],X_tsne[:,1])plt.title("TSNE降維可視化")目錄矩陣分解降維判別分析法基于流形學習的數(shù)據(jù)降維方法局部線性嵌入(LLE)多維尺度變換(MDS)t-分布隨機鄰域嵌入算法(t-SNE)案例:手寫數(shù)字識別數(shù)據(jù)集的降維分析目標數(shù)據(jù)集介紹實現(xiàn)代碼9.4.1目標對Fashion-MNIST數(shù)據(jù)集的降維,并實現(xiàn)降維后數(shù)據(jù)的可視化。9.4.2數(shù)據(jù)集介紹來源:/datasets/zalando-research/fashionmnistFashion-MNIST數(shù)據(jù)集是由60,000個樣本的訓練集和10,000個樣本的測試集組成。每個樣本都是一個28x28灰度圖像,共10個類別的標簽,具體包含T恤、褲子、套頭衫、連衣裙、外套、涼鞋、襯衫、運動鞋、包、裸靴。每個樣本包含28x28,總共784像素。每個像素都有一個與之關(guān)聯(lián)的像素值,表示該像素的亮度或暗度,數(shù)字越大表示越暗,該像素值是0到255之間的整數(shù),訓練和測試數(shù)據(jù)集有785列,第一列是類別標簽,其余列為圖像對應點的像素值。本案例選取T恤、褲子兩個類別分析。對784維的數(shù)據(jù)降維,并進行可視化。9.4.3實現(xiàn)代碼1.導包importnumpyasnpimportpandasaspdfrommpl_toolkits.mplot3dimportAxes3Dimportmatplotlib.pyplotasplt%matplotlibinline2.讀入數(shù)據(jù)data=pd.read_csv("d:/datasets/fashionmnist/fashion-mnist_train.csv")9.4.3實現(xiàn)代碼3.數(shù)據(jù)探索data.head()#輸出數(shù)據(jù)集前5行()#輸出數(shù)據(jù)集基本信息9.4.3實現(xiàn)代碼4.提取前兩個類別的樣本data2=data[data["label"]<2]#提取前兩個類別的樣本,本例考慮二分類問題5.特征標簽分離X=data2.drop("label",axis=1)y=data2["label"].values6.定義可視化函數(shù)defplt3d(X,y,title):x_min,x_max=np.min(X,axis=0),np.max(X,axis=0)X_=(X-x_min)/(x_max-x_min)fig=plt.figure(figsize=(8,6))ax=Axes3D(fig,azim=-60,elev=30)#依次遍歷X的第0、1、2列作為三維坐標,在三維坐標系對應位置通過plt.text函數(shù)添加純文本注釋,注釋的值就是當前X數(shù)據(jù)對應的類別9.4.3實現(xiàn)代碼ll=X.shape[0]lc=len(pd.DataFrame(y).value_counts())+1foriinrange(ll):#print(y[i])ax.text(X_[i,0],X_[i,1],X_[i,2],s=y[i],color=[y[i]/lc,y[i]/lc,y[i]/lc])plt.title(title)defplt2d(X,y,title):##數(shù)據(jù)歸一化

x_min,x_max=np.min(X,axis=0),np.max(X,axis=0)X=(X-x_min)/(x_max-x_min)##繪制散點圖

fig=plt.figure(figsize=(12,8))foriinrange(X.shape[0]):plt.text(X[i][0],X[i][1],str(y[i]),color=plt.cm.Set1(y[i]/5.),fontdict={'size':9})##添加標題plt.title(title)9.4.3實現(xiàn)代碼7.PCA降維并可視化fromsklearn.decompositionimportPCApca=PCA(n_components=3,random_state=0)#降維到3維X_pca=pca.fit_transform(X)plt3d(X_pca,y,"pca")fromsklearn.decompositionimportPCApca=PCA(n_components=2,random_state=0)#降維到二維X_pca=pca.fit_transform(X)plt2d(X_pca,y,"pca")9.4.3實現(xiàn)代碼8.KernelPCA降維及可視化fromsklearn.decompositionimportKernelPCAker=['linear','poly','rbf','sigmoid','cosine']kpca=KernelPCA(n_components=3,kernel=ker[4],random_state=0)X_kpca=kpca.fit_transform(X)plt3d(X_kpca,y,"KPCA")fromsklearn.decompositionimportKernelPCAker=['linear','poly','rbf','sigmoid','cosine']kpca=KernelPCA(n_components=2,kernel=ker[4],random_state=0)X_kpca=kpca.fit_transform(X)plt2d(X_kpca,y,"KPCA")9.4.3實現(xiàn)代碼9.LDA降維fromskle

溫馨提示

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

評論

0/150

提交評論