天天看點

python sklearn包中的主成分分析_使用python+sklearn實作核主成分分析

python sklearn包中的主成分分析_使用python+sklearn實作核主成分分析

本例子說明了核主成分分析能夠找到使資料線性分離的資料投影。sphx_glr_plot_kernel_pca_001print(__doc__)# 作者:Mathieu Blondel#          Andreas Mueller# 許可證:BSD 3 clauseimport numpy as npimport matplotlib.pyplot as pltfrom sklearn.decomposition import PCA, KernelPCAfrom sklearn.datasets import make_circlesnp.random.seed(0)X, y = make_circles(n_samples=400, factor=.3, noise=.05)kpca = KernelPCA(kernel="rbf", fit_inverse_transform=True, gamma=10)X_kpca = kpca.fit_transform(X)X_back = kpca.inverse_transform(X_kpca)pca = PCA()X_pca = pca.fit_transform(X)# 繪制結果plt.figure()plt.subplot(2, 2, 1, aspect="equal")plt.title("Original space")reds = y == 0blues = y == 1plt.scatter(X[reds, 0], X[reds, 1], c="red",            s=20, edgecolor="k")plt.scatter(X[blues, 0], X[blues, 1], c="blue",            s=20, edgecolor="k")plt.xlabel("$x_1$")plt.ylabel("$x_2$")X1, X2 = np.meshgrid(np.linspace(-1.5, 1.5, 50), np.linspace(-1.5, 1.5, 50))X_grid = np.array([np.ravel(X1), np.ravel(X2)]).T# 在第一個主成分上的投影(在phi空間中)Z_grid = kpca.transform(X_grid)[:, 0].reshape(X1.shape)plt.contour(X1, X2, Z_grid, colors="grey", linewidths=1, origin="lower")plt.subplot(2, 2, 2, aspect="equal")plt.scatter(X_pca[reds, 0], X_pca[reds, 1], c="red",            s=20, edgecolor="k")plt.scatter(X_pca[blues, 0], X_pca[blues, 1], c="blue",            s=20, edgecolor="k")plt.title("Projection by PCA")plt.xlabel("1st principal component")plt.ylabel("2nd component")plt.subplot(2, 2, 3, aspect="equal")plt.scatter(X_kpca[reds, 0], X_kpca[reds, 1], c="red",            s=20, edgecolor="k")plt.scatter(X_kpca[blues, 0], X_kpca[blues, 1], c="blue",            s=20, edgecolor="k")plt.title("Projection by KPCA")plt.xlabel(r"1st principal component in space induced by $\phi$")plt.ylabel("2nd component")plt.subplot(2, 2, 4, aspect="equal")plt.scatter(X_back[reds, 0], X_back[reds, 1], c="red",            s=20, edgecolor="k")plt.scatter(X_back[blues, 0], X_back[blues, 1], c="blue",            s=20, edgecolor="k")plt.title("Original space after inverse transform")plt.xlabel("$x_1$")plt.ylabel("$x_2$")plt.tight_layout()plt.show()

腳本的總運作時間:( 0 分 0.474 秒)

估計的記憶體使用量: 8 MB

python sklearn包中的主成分分析_使用python+sklearn實作核主成分分析

由Sphinx-Gallery生成的畫廊

下載下傳python源代碼:plot_ica_vs_pca.py

下載下傳Jupyter notebook源代碼:plot_ica_vs_pca.ipynb

python sklearn包中的主成分分析_使用python+sklearn實作核主成分分析

☆☆☆為友善大家查閱,小編已将scikit-learn學習路線專欄文章統一整理到公衆号底部菜單欄,同步更新中,關注公衆号,點選左下方“系列文章”,如圖:

python sklearn包中的主成分分析_使用python+sklearn實作核主成分分析

歡迎大家和我一起沿着scikit-learn文檔這條路線,一起鞏固機器學習算法基礎。(添加微信:mthler,備注:sklearn學習,一起進【sklearn機器學習進步群】開啟打怪更新的學習之旅。)

python sklearn包中的主成分分析_使用python+sklearn實作核主成分分析