本例子说明了核主成分分析能够找到使数据线性分离的数据投影。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
由Sphinx-Gallery生成的画廊
下载python源代码:plot_ica_vs_pca.py
下载Jupyter notebook源代码:plot_ica_vs_pca.ipynb
☆☆☆为方便大家查阅,小编已将scikit-learn学习路线专栏文章统一整理到公众号底部菜单栏,同步更新中,关注公众号,点击左下方“系列文章”,如图:
欢迎大家和我一起沿着scikit-learn文档这条路线,一起巩固机器学习算法基础。(添加微信:mthler,备注:sklearn学习,一起进【sklearn机器学习进步群】开启打怪升级的学习之旅。)