Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当我们对数据进行聚类时,如何检查TSNE结果是否真实?_Python_Cluster Analysis_Pca_Tsne - Fatal编程技术网

Python 当我们对数据进行聚类时,如何检查TSNE结果是否真实?

Python 当我们对数据进行聚类时,如何检查TSNE结果是否真实?,python,cluster-analysis,pca,tsne,Python,Cluster Analysis,Pca,Tsne,我正在申请TSNE进行降维。我有几个功能,我减少到2个功能。之后,我使用Kmeans对数据进行集群。最后,我使用seaborn绘制聚类结果 要导入TSNE,我使用: from sklearn.manifold import TSNE 要应用TSNE,我使用: features_tsne_32= TSNE(2).fit_transform(standarized_data) 之后,我使用Kmeans: kmeans = KMeans(n_clusters=6, **kmeans_kwargs)

我正在申请TSNE进行降维。我有几个功能,我减少到2个功能。之后,我使用Kmeans对数据进行集群。最后,我使用seaborn绘制聚类结果

要导入TSNE,我使用:

from sklearn.manifold import TSNE
要应用TSNE,我使用:

features_tsne_32= TSNE(2).fit_transform(standarized_data)
之后,我使用Kmeans:

kmeans = KMeans(n_clusters=6, **kmeans_kwargs)
kmeans.fit(features_tsne_32)
km_tsne_32 = kmeans.predict(features_tsne_32)
最后,我使用以下方法绘制了图:

import seaborn as sns

#plot data with seaborn

facet = sns.lmplot(data=df, x='km_tsne_32_c1', y='km_tsne_32_c2', hue='km_tsne_32', 
                       fit_reg=False, legend=True, legend_out=True)
我有这样一个情节:

这张图看起来太完美了,而且是球状的。我画这张图的过程有点不对劲 这些数据?在上面描述的代码中

我遵循的程序有问题吗


使用TSNE将数据投影到另一个您无法实际控制的空间。
这样做是为了让近点靠近,远点远离

然后在投影空间上使用KNN确定组。
此部分会丢失您以前拥有的任何分组信息[需要引用,需要查看数据之前是什么]

根据一些先前标记的数据,而不是根据KNN,对组进行着色更有意义
-或-
在原始空间上使用KNN进行分组,然后根据该分组为投影空间着色

你所做的事实上是毫无意义的,因为它失去了所有先前的信息-标签和空间


总结如下:

  • 如果您有标签,请使用它们
  • 如果没有,请使用更复杂的聚类算法,从原始空间上的KNN开始,因为您可以看到投影空间上的KNN是不够的
  • 我遵循的程序有问题吗


    使用TSNE将数据投影到另一个您无法实际控制的空间。
    这样做是为了让近点靠近,远点远离

    然后在投影空间上使用KNN确定组。
    此部分会丢失您以前拥有的任何分组信息[需要引用,需要查看数据之前是什么]

    根据一些先前标记的数据,而不是根据KNN,对组进行着色更有意义
    -或-
    在原始空间上使用KNN进行分组,然后根据该分组为投影空间着色

    你所做的事实上是毫无意义的,因为它失去了所有先前的信息-标签和空间


    总结如下:

  • 如果您有标签,请使用它们
  • 如果没有,请使用更复杂的聚类算法,从原始空间上的KNN开始,因为您可以看到投影空间上的KNN是不够的

  • 您的问题不是针对t-SNE,而是针对任何无监督学习算法。你如何评价它的结果

    我想说的是,唯一正确的方法是,如果你有一些关于数据的先验知识或专家知识。比如标签、其他元数据,甚至用户反馈


    也就是说,关于你的具体情节:

  • 从tSNE得到的是一个连续的“饼”,而不是像“岛”或“意大利面”这样的离散结构,这一事实很可能表明该投影不是很好地学习。通常,tSNE应该创建类似数据点的半不同组。此形状看起来像一个过度夸张的模型。(如具有高KL发散系数的VAE)
  • k-Means产生的分区正是人们所期望的:k-Means的集群分配隐式地在特征空间上创建了一个Voronoi图,其中单元是集群质心。良好的初始化将产生在特征空间中展开的初始质心。因为这个空间是对称的,所以质心也可能是对称的

  • 因此,k-Means很好,但您可能需要调整t-SNE的参数。

    您的问题并不特定于t-SNE,而是任何无监督学习算法。你如何评价它的结果

    我想说的是,唯一正确的方法是,如果你有一些关于数据的先验知识或专家知识。比如标签、其他元数据,甚至用户反馈


    也就是说,关于你的具体情节:

  • 从tSNE得到的是一个连续的“饼”,而不是像“岛”或“意大利面”这样的离散结构,这一事实很可能表明该投影不是很好地学习。通常,tSNE应该创建类似数据点的半不同组。此形状看起来像一个过度夸张的模型。(如具有高KL发散系数的VAE)
  • k-Means产生的分区正是人们所期望的:k-Means的集群分配隐式地在特征空间上创建了一个Voronoi图,其中单元是集群质心。良好的初始化将产生在特征空间中展开的初始质心。因为这个空间是对称的,所以质心也可能是对称的

  • 所以k-Means很好,但是您可能需要调整t-SNE的参数。

    检查t-SNE算法的复杂性。当困惑太小时,t-SNE通常会产生盘状斑点。此外,使用DBSCAN聚类算法进行测试,该算法通常比k-Means算法更有效。

    检查t-SNE算法的复杂性。当困惑太小时,t-SNE通常会产生盘状斑点。此外,使用DBSCAN聚类算法进行测试,该算法通常比k-Means算法更有效。

    当您说过度正则化模型时,表示该模型处于过度拟合状态?。事实上,TSNE的输入是一个CAE(卷积自动编码器)模型的输出。如果可能的话,你能详细说明一下这一点吗?通常,过度正则化会导致欠拟合,而不是过度拟合。所有/几乎所有正则化方法都在概念上对输出空间的外观施加“先验假设”。例如,在具有高斯潜变量的VAE中,过度正则化模型总是会产生(高维