用于聚类不规则形状的多维数据的最佳方法是什么?

我是机器学习和数据分析的新手,正在努力对我的数据进行聚类。我的数据有大约40,000个观测值和6个特征。

来自我的数据框的几个样本行

我尝试了各种聚类方法,包括K-Means、DBSCAN,并尝试了scipy的层次聚类方法。在预处理过程中,我对缺失数据进行了填补,并对所有数据进行了归一化处理。在完成主成分分析(PCA)将维度从4降至6后,我的数据看起来像新月形状,如下图中的蓝点所示。

我通过轮廓系数分析确定K-means使用10个聚类效果最佳,结果如下:

K-Means结果,每个质心由红色X标记

在对数据进行聚类后再进行PCA,结果变化不大。

DBSCAN本身决定使用4个聚类,并给出了4个聚类,但大部分数据被排除在这些聚类之外,并被标记为噪音。

对于层次方法,尝试使用linkage()时数据使用量过大,总是提示内存错误消息。

有什么方法可以对我的数据进行聚类吗?我的数据形状(新月形)是否适合其他建模方法?


回答:

不要不假思索地运行聚类

聚类算法不能作为黑盒使用。它们需要谨慎使用,否则只能得到垃圾数据。要正确使用它们,你需要理解每个算法的目标。K-means是一种最小二乘方法。如果你在未经适当归一化的数据上使用它,它会失败。

从你的图表来看,你的数据库中有一条错误记录,大大导致了那个“月亮”形状:所有东西都需要尽可能远离那个错误记录。

除此之外:1. 你是否为你的问题正确地缩放了数据?2. 你是否选择了适当的距离度量?

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注