我需要一个使用sklearn中的isomap对定义在numpy数组中的高维空间进行降维的示例。
回答:
从sklearn加载数字样本数据集:
from sklearn.datasets import load_digitsdigits = load_digits()print(digits.images.shape) # 结果:(1797, 8, 8)。1797张图片,8x8尺寸print(digits.data.shape) # 结果:(1797, 64)
所以我们有64维的数据。
使用sklearn中的isomap将维度降至2维
from sklearn.manifold import Isomapiso = Isomap(n_components=2)iso.fit(digits.data)data_projected = iso.transform(digits.data)data_projected.shape # 结果:(1797, 2)
投影后的数据现在是二维的。我们可以绘制这些数据来可视化:
plt.scatter(data_projected[:, 0], data_projected[:, 1], c=digits.target, edgecolor='none', alpha=0.5, cmap=plt.cm.get_cmap('spectral', 10))plt.colorbar(label='数字标签', ticks=range(10))plt.clim(-0.5, 9.5);