Python中的简单二维聚类算法
Posted
技术标签:
【中文标题】Python中的简单二维聚类算法【英文标题】:Simple 2-D Clustering Algorithm in Python 【发布时间】:2019-04-28 16:05:49 【问题描述】:作为无监督方法的新手,我需要使用一些半简单的代码来推动正确的方向,以通过一些数据作为案例研究。我正在处理的数据只有 300 个左右的观察值,但我想了解如何将聚类应用到行为相似的非常大的集合中。
我有 2 个特征数据集,我想使用欧几里德距离运行 DBSCAN 或类似的东西(如果这是正确的聚类方法)。
例如,数据如下所示:
我只能通过肉眼判断,这种聚类方式可能不是最好的方法,因为分布看起来不规则。
我应该使用什么方法来开始理解类似的分布 - 特别是当集合非常大(数千个观察值)时。
【问题讨论】:
【参考方案1】:对于大多数机器学习任务,scikit-learn 是您的朋友。对于 DBSCAN,scikit-learn 有sklearn.cluster.DBSCAN
。来自 scikit-learn 文档:
>>> from sklearn.cluster import DBSCAN
>>> import numpy as np
>>> X = np.array([[1, 2], [2, 2], [2, 3],
... [8, 7], [8, 8], [25, 80]])
>>> clustering = DBSCAN(eps=3, min_samples=2).fit(X)
>>> clustering.labels_
array([ 0, 0, 0, 1, 1, -1])
>>> clustering
DBSCAN(algorithm='auto', eps=3, leaf_size=30, metric='euclidean',
metric_params=None, min_samples=2, n_jobs=None, p=None)
您还可以通过 scikit-learn 使用其他聚类算法。大家可以看到here。
【讨论】:
以上是关于Python中的简单二维聚类算法的主要内容,如果未能解决你的问题,请参考以下文章