91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

核主成分分析(Kernel Principal Component Analysis, KPCA) PCA方法假設從高維空間到低維空間的函數映射是線性的,但是在不少現實任務中,可能需要非線性映射才能找到合適的低維空間來降維。 非線性降維的額一種常用方法是基于核技巧對線性降維方法進行核化(kernelized)。這是對PCA的一種推廣。

資源截圖

代碼片段和文件信息

#?-*-?coding:?utf-8?-*-
“““
????KernelPCA
“““
import?numpy?as?np
import?matplotlib.pyplot?as?plt
from?sklearn?import???datasetsdecomposition

def?load_data():
????‘‘‘
????加載用于降維的數據

????:return:?一個元組,依次為訓練樣本集和樣本集的標記
????‘‘‘
????iris=datasets.load_iris()#?使用?scikit-learn?自帶的?iris?數據集
????return??iris.datairis.target

def?test_KPCA(*data):
????‘‘‘
????測試?KernelPCA?的用法

????:param?data:?可變參數。它是一個元組,這里要求其元素依次為:訓練樣本集、訓練樣本的標記
????:return:?None
????‘‘‘
????Xy=data
????kernels=[‘linear‘‘poly‘‘rbf‘‘sigmoid‘]
????for?kernel?in?kernels:
????????kpca=decomposition.KernelPCA(n_components=Nonekernel=kernel)?#?依次測試四種核函數
????????kpca.fit(X)
????????print(‘kernel=%s?-->?lambdas:?%s‘%?(kernelkpca.lambdas_))
def?plot_KPCA(*data):
????‘‘‘
????繪制經過?KernelPCA?降維到二維之后的樣本點

????:param?data:?可變參數。它是一個元組,這里要求其元素依次為:訓練樣本集、訓練樣本的標記
????:return:?None
????‘‘‘
????Xy=data
????kernels=[‘linear‘‘poly‘‘rbf‘‘sigmoid‘]
????fig=plt.figure()
????colors=((100)(010)(001)(0.50.50)(00.50.5)(0.500.5)
????????(0.40.60)(0.60.40)(00.60.4)(0.50.30.2))#?顏色集合,不同標記的樣本染不同的顏色

????for?ikernel?in?enumerate(kernels):
????????kpca=decomposition.KernelPCA(n_components=2kernel=kernel)
????????kpca.fit(X)
????????X_r=kpca.transform(X)#?原始數據集轉換到二維
????????ax=fig.add_subplot(22i+1)?##?兩行兩列,每個單元顯示一種核函數的?KernelPCA?的效果圖
????????for?label?color?in?zip(?np.unique(y)colors):
????????????position=y==label
????????????ax.scatter(X_r[position0]X_r[position1]label=“target=?%d“%label
????????????color=color)
????????ax.set_xlabel(“X[0]“)
????????ax.set_ylabel(“X[1]“)
????????ax.legend(loc=“best“)
????????ax.set_title(“kernel=%s“%kernel)
????plt.suptitle(“KPCA“)
????plt.show()
def?plot_KPCA_poly(*data):
????‘‘‘
????繪制經過?使用?poly?核的KernelPCA?降維到二維之后的樣本點

????:param?data:?可變參數。它是一個元組,這里要求其元素依次為:訓練樣本集、訓練樣本的標記
????:return:?None
????‘‘‘
????Xy=data
????fig=plt.figure()
????colors=((100)(010)(001)(0.50.50)(00.50.5)(0.500.5)
????????(0.40.60)(0.60.40)(00.60.4)(0.50.30.2))#?顏色集合,不同標記的樣本染不同的顏色
????Params=[(311)(3101)(3110)(31010)(1011)(10101)(10110)(101010)]?#?poly?核的參數組成的列表。
????????????#?每個元素是個元組,代表一組參數(依次為:p?值,?gamma?值,?r?值)
????????????#?p?取值為:3,10
????????????#?gamma?取值為?:1,10
????????????#?r?取值為:1,10
????????????#?排列組合一共?8?種組合
????for?i(pgammar)?in?enumerate(Params):
????????kpca=decomposition.KernelPCA(n_components=2kernel=‘poly‘
????????gamma=gammadegree=pcoef0=r)??#?poly?核,目標為2維
????????kpca.fit(X)
????????X_r=kpca.transform(X)#?原始數據集轉換到二維
????????ax=fig.add_subplot(24i+1)##?兩行四列,每個單元顯示核函數為?poly?的?KernelPCA?一組參數的效果圖
????????for?label?color?in?zip(?np.unique(y)colors):
????????????position=y==label
????????????ax.scatter(X_r[position0]X_r[position1]label=“target=?%d“%label
????????????color=color)
????????ax.set_xlabel(“X[0]“)
????????ax.set_xticks([])?#?隱藏?x?軸刻度
????????ax.set_ytic

評論

共有 條評論