【问题标题】:Clustering and Contours in a Scatter Plot散点图中的聚类和等高线
【发布时间】:2021-05-01 07:07:03
【问题描述】:

我有一个数据框的散点图。正如您在附图中看到的那样,在特定部分的特定颜色类型上存在聚类。有没有一种简单的方法可以对颜色图值进行聚类,然后绘制轮廓。即说选择 0 到 5 之间的值(用于颜色图)并绘制轮廓。

在 df 上绘制附加图的示例代码:

df.plot.scatter(x='length',
                  y='width',
                  c='species',
                  colormap='viridis')

【问题讨论】:

    标签: python pandas cluster-analysis scatter-plot contour


    【解决方案1】:

    聚类是一种无监督程序,对标签/响应视而不见。您遇到问题的标签是您没有的集群组。所有其他信息(宽度、长度和甚至物种/颜色)都应被视为您的数据的特征,可用于无监督聚类。

    不应该对地块进行操作的原因: 绘图/颜色图只是我们人类用我们的小大脑理解数据的一种方式。然而,复杂的算法不需要它——这些算法可以直接作用于您的数据特征(长度、宽度……)。当然,规则中也有例外,例如将音频数据显示为 2d 图像并运行卷积神经网络以使用其图像分类强度。但让我们专注于您手头的标准案例:

    您想在数据中找到聚类,因此您应该直接对数据进行操作 让我们重现一个像你这样的例子(下次如果可能,请提供代码):

    X = np.linspace(1,100,1000)
    Y = np.random.normal(50,10,1000) # 1 series with randomized data
    T = np.random.randint(1,30,1000) # respective species
    Y2 = np.random.normal(70,2,1000) # 1 clustered band as second series
    T2 = np.random.randint(1,15,1000)# respective species for second series
    
    # combine series
    X = np.r_[X,X]
    Y = np.r_[Y,Y2]
    T = np.r_[T,T2]
    data = np.column_stack((X,Y,T))
    #shuffle data so ML algorithms cannot take advantage of the order
    np.random.shuffle(data)
    # let's scale and cluster on the scaled data as this is common procedure
    from sklearn.preprocessing import StandardScaler
    s = StandardScaler()
    data_s = s.fit_transform(data)
    

    让我们集群:

    from sklearn import mixture
    clf = mixture.GaussianMixture(n_components=2, covariance_type='full', random_state=1) 
    pred = clf.fit_predict(data_s)
    
    fig, axes = plt.subplots(1,2, figsize=(15,8))
    axes = axes.ravel()
    axes[0].scatter(data[:,0],data[:,1], c=data[:,2], cmap="jet", vmin=1, vmax=30, alpha=0.7, s=3)
    axes[1].scatter(data_s[:,0],data_s[:,1], c=pred, cmap="jet", alpha=0.7, s=3)
    plt.show()
    

    利用所有给定的信息(宽度、长度和颜色),聚类算法可以很好地将波段与其他数据分开。 PS:关于不同聚类算法的信息:sklearn clustering

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-20
      • 1970-01-01
      • 2015-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 2020-06-12
      相关资源
      最近更新 更多