【问题标题】:What and how to interpret scatter_3d plot?什么以及如何解释 scatter_3d 图?
【发布时间】:2022-06-20 23:13:51
【问题描述】:

我有一个 MNIST 手写数字数据集的子集。我正在尝试使用 PCA、内核 pca、lle 和 tsne 来减小尺寸,同时绘制结果 usign Plotly.express.scatter_3d。但作为一个初学者,我不知道如何从图中解读。请指导我。

pca = PCA(n_components=3)
X_pca = pca.fit_transform(X_train)
X_pca_r = pca.inverse_transform(X_pca)

import plotly.express as px
fig = px.scatter_3d(X_pca, x=X_pca[:,0], y=X_pca[:,1], z=X_pca[:,2], color=y_train)
fig.show()

我有下图

然后,使用 KernelPCA:

from sklearn.decomposition import KernelPCA
kpca = KernelPCA(n_components=3, fit_inverse_transform=True)
X_kpca = kpca.fit_transform(X_train)
X_kpca_r = kpca.inverse_transform(X_kpca)
px.scatter_3d(X_kpca, x=X_kpca[:,0], y=X_kpca[:,1], z=X_kpca[:,2], color=y_train).show()

结果如下图:

同样,使用 LocallyLinearEmbedding:

from sklearn.manifold import LocallyLinearEmbedding
lle = LocallyLinearEmbedding(n_components=3)
X_lle = lle.fit_transform(X_train)
px.scatter_3d(X_lle, x=X_lle[:,0], y=X_lle[:,1], z=X_lle[:,2], color=y_train).show()

结果如下图:

最后,使用 TSNE:

from sklearn.manifold import TSNE
tsne = TSNE(n_components=3)
X_tsne = tsne.fit_transform(X_train)
px.scatter_3d(X_tsne, x=X_tsne[:,0], y=X_tsne[:,1], z=X_tsne[:,2], color=y_train).show()

结果如下图:

【问题讨论】:

    标签: python pca scatter3d tsne


    【解决方案1】:

    如果我误解了您的问题,请随时发表评论,如果您说出令人不安的具体部分,我会非常努力地浓缩答案

    根据我的经验,3 维不足以很好地对手写数字进行分类,就像 3 像素显示器无法以类似于数字外观的方式表示数字,当由手。这就是为什么这些图表在直觉上可能没有意义(尽管与数字相对应的相同颜色的点在图表中有些分组,例如黄色球体,即数字 9。)

    在其他数据集中,3 个特征足以对数据进行分类,您可能会看到数据形成不同的集群。簇间距离(簇内距离)越大,同簇内点间距离(簇间距离)越小越好。一个常用的例子是鸢尾花数据集:

    数据:https://www.kaggle.com/datasets/arshid/iris-flower-dataset

    示例,带可视化:https://www.kaggle.com/code/imdevskp/plotly-express-3d-scatter-plot-iris-data/notebook

    这个页面很好地展示了集群距离的概念: https://www.geeksforgeeks.org/ml-intercluster-and-intracluster-distance/

    这些数字是二维的,但基本原理适用于更高的维度。

    我建议您研究数字指标而不是数字,因为大多数问题在超过 3 个维度时效果最佳,而这些维度无法在数字上显示。

    在此之后,您还应该研究包如何显示每个主成分/维度的重要性,以便更好地确定要在分析中包含多少特征。

    最后,我建议您调整图表中球体的大小,这样它们就不会相互重叠太多,尽管对于大量数据点来说这很困难。

    【讨论】:

    • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 2021-10-02
    • 2013-10-13
    • 2020-09-29
    • 2021-03-16
    • 1970-01-01
    • 2021-06-21
    • 1970-01-01
    • 2017-12-16
    • 2013-04-18
    相关资源
    最近更新 更多