马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
Swiss Roll数据库形状是一个三维的蛋糕卷,在这里我们学习降维,给降到两维,首先读取swiss roll数据,然后用kernelPCA算法降维:from sklearn.decomposition import KernelPCA
from sklearn import datasets
X, color = datasets.samples_generator.make_swiss_roll(n_samples=1500)
rbf_pca=KernelPCA(n_components=2,kernel="rbf",gamma=0.04,fit_inverse_transform=True)
X_reduced=rbf_pca.fit_transform(X)
X_preimage=rbf_pca.inverse_transform(X_reduced)
以上代码里的X_reduced变量就是降成两维的数据,X_preimage是又给还原成3维的数据,接着我们看看还原后和原始数据的误差:from sklearn.metrics import mean_squared_error
mean_squared_error(X,X_preimage)
输出为:28.43337304287336。还有一种降维的算法如下:from sklearn.manifold import LocallyLinearEmbedding
lle=LocallyLinearEmbedding(n_components=2,n_neighbors=10)
X_reduced=lle.fit_transform(X)
这种LLE算法跟knn近邻算法有点类似,原理是找低维度的最近的10个点代替,非常的简单高效。这样我们就把复杂的三维图像变成二维了,我们画个简单的图看看:%matplotlib inline
import matplotlib
import matplotlib.pyplot as plt
y=color.astype("int32")
plt.scatter(X_reduced[y>=10,0],X_reduced[y>=10,1],color="red",alpha=0.2)
plt.scatter(X_reduced[y<10,0],X_reduced[y<10,1],color="blue",alpha=0.2)
输出图像为:
|