作为无监督方法的新手,我需要一些半简单的代码来作为案例研究,帮助我正确地处理数据。我目前处理的数据只有大约300个观察值,但我希望学习如何将聚类应用于行为相似的非常大的数据集。
我有一组包含两个特征的数据,我希望使用欧几里得距离运行DBSCAN或类似的方法(如果这是正确的聚类方法的话)。
例如,数据看起来像这样:
通过观察我可以看出,这种聚类方式可能不是最佳方法,因为数据分布看起来不规则。
对于类似这样的分布,尤其是当数据集非常大(数十万个观察值)时,我应该使用什么方法开始理解这些分布?
回答:
对于大多数机器学习任务,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。