对 kmeans 结果感到困惑

数据挖掘 Python 聚类 k-均值
2022-02-19 08:10:07

我正在使用 kmeans 对一些具有 2 个特征的数据进行聚类。不确定我理解为什么 kmeans 会产生我看到的集群:

kmeans 结果

为什么 kmeans 不能以与我们在视觉上查看数据时所期望的方式相匹配的方式对这些点进行聚类?为什么视觉集群中间看似随机的点会被放入第二个集群中?

我正在运行的代码:

cols = ['col1', 'col2']
features = map(lambda x: df[x], cols)
input = np.matrix(list(zip(*features)))

scaler = StandardScaler()
scaler.fit(input)
input_scaled = scaler.transform(input)

algo = KMeans(n_clusters=2)
algo.fit(input_scaled)
df['cluster'] = pd.Series(algo.labels_)

sns.lmplot(x=cols[0],y=cols[1],data=df, fit_reg=False, hue='cluster')
1个回答

知道了。感谢所有帮助过的人。这个问题与kmeans无关。

当你这样做时,我没有意识到:

dataframe[col] = 系列,系列根据索引合并,而不是简单的列附加。

在生成特征列表之前,我的数据框已被过滤,因此索引不是 0,1,2,而是 0,2,5 等。我需要在原始数据框上执行 reset_index(),然后再分配一个新列数据框到算法的标签。

在此处输入图像描述