天天看点

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实现核主成分分析