如何绘制K均值并在聚类之外打印点

问题描述 投票:0回答:3

如何绘制以下数据的K均值

no,store_id,revenue,profit,state,country
0,101,779183,281257,WD,India
1,101,144829,838451,WD,India
2,101,766465,757565,AL,Japan

我的代码在下面

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
df1 = pd.get_dummies(df, columns=['state','country'])
clusters = 2   
km = KMeans(n_clusters=8).fit(df1)
labels = km.predict(df1)
df1['cluster_id'] = km.labels_
def distance_to_centroid(row, centroid):
     row = row[['no','store_id','revenue','profit','state','country']]
     return euclidean(row, centroid)
df1['distance_to_center0'] = df1.apply(lambda r: distance_to_centroid(r,
                             km.cluster_centers_[0]),1)

df1['distance_to_center1'] = df1.apply(lambda r: distance_to_centroid(r,
                             km.cluster_centers_[1]),1)



dummies_df =dummies[['distance_to_center0','distance_to_center1','cluster_id']]
test = {0:"Blue", 1:"Red", 2:"Green",3:"Black",4:"Orange",5:"Yellow",6:"Violet",7:"Grey"}
sns.scatterplot(x="distance_to_center0", y="distance_to_center1", data=dummies_df, hue="cluster_id", palette = test)

要在下面找到中心点的代码

km = KMeans(n_clusters=7).fit(dummies)
closest, _ = pairwise_distances_argmin_min(km.cluster_centers_, dummies)
closest
  • 如何散布集群图

  • 如何使打印点远离聚类

至少像异常值方法-1那样是异常值(scikit learning)。kmeans.labes_仅打印1和0,如何获取异常值

python scikit-learn data-science k-means
3个回答
1
投票

您无法绘制任何大于3的维度的数据(在您的情况下为4,不计算位置)。相反,您可以做的是找到要素与K点之间的距离,并使用该距离大致了解正在发生的事情。希望对您有所帮助!


0
投票

由于您是基于3个以上要素(WD,AL,印度,日本等)进行聚类,因此您需要执行以下任一操作以可视化图形。

  1. 将诸如PCA,TSNE或自动编码器之类的降维方法分成2个变量(用于2D图形)或3个变量(3D图形)

  2. 一次获取2个或3个特征以保持其余部分不变。


0
投票

群集的散点图:您只能以2D或3D方式进行绘制/可视化,但是示例中的数据至少具有4个要素(即4个维度)。要绘制聚类,您需要根据需要将维数减少到2或3,方法是减少用于聚类的特征集(例如通过人工预选或使用特征约简技术)和/或将结果投影到缩小的尺寸(例如,如果只有3个节点/群集,则可以使用包含所有3个质心的平面)

远离“集群” /离群点的点:Kmeans算法会将每个点分配给一个集群。簇的紧凑性反映在惯性值中。一种获取离群值的简单方法是查看点与其分配的质心的距离,并使用阈值(如标准差的倍数)对离群值进行分类。另一个涉及更多的方法是运行算法,然后删除距其指定质心的欧几里得距离最长的数据点,重新运行算法,并检查平均间插值的下降。重复直到没有明显的下降。删除点的集合是离群值。

[还有其他聚类算法(例如DBCSAN)试图隐式检测离群值。

© www.soinside.com 2019 - 2024. All rights reserved.