首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >K-means在对要素进行标准化(批发客户数据集)时查找单个聚类

K-means在对要素进行标准化(批发客户数据集)时查找单个聚类
EN

Stack Overflow用户
提问于 2018-12-18 06:41:17
回答 1查看 238关注 0票数 0

我正在学习Wholesale customers dataset。运行肘部方法,我发现k=5似乎是一个很好的集群数量。不幸的是,当我标准化我的特性时,我得到了一个单例集群,即使有几个init。当我没有标准化的时候,这是不会发生的。

我知道功能的标准化是一个经常被问到的问题,但是我仍然不明白这是不是一个好的实践。在这里我进行标准化,因为某些功能的差异很大。如果这是个坏主意,你能解释一下为什么吗?

以下是K-means结果的MDS可视化示例。正如你所看到的,在图片的左下角有一个点,它有自己的簇(它有一个独特的颜色)。是因为它是异常值吗?在运行K-means之前,我应该手动删除它吗?

如果你想自己重新运行这个实验,这里有一个MWE。如果我搞错了,请不要犹豫,直截了当地说。

代码语言:javascript
复制
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
from sklearn.manifold import MDS
df = pd.read_csv("./wholesale-dataset.csv")
X = StandardScaler().fit_transform(df.values[:,2:])
km = KMeans(5)
km.fit(X)
mds = MDS().fit_transform(X)
fkm = plt.figure()
fkm.gca().scatter(mds[:,0], mds[:,1], c=km.labels_)
EN

回答 1

Stack Overflow用户

发布于 2018-12-18 15:12:34

k-means生成Singleton集群没有什么问题。

当你的数据中有异常值时,进行这样的聚类可能会提高k-means的SSE目标。所以这个行为是正确的。

但从你的图来看,我认为你的正确k是1。那里有一个大的斑点,一些异常值,但不是多个集群。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53824036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档