DBSCAN具有自定义指标

时间:2018-02-13 13:29:21

标签: python scikit-learn cluster-analysis

我有以下给出:

  • 数千个范围内的数据集

  • 计算相似度的一种方法,但数据点本身我无法在欧几里德空间中绘制它们

我知道DBSCAN应该支持自定义距离指标,但我不知道如何使用它。

说我有一个功能

android:animateLayoutChanges="false"

我有一个可以成对传递到该函数的数据列表,如何在使用scikit-learn的DBSCAN实现时指定这个?

理想情况下,我想要的是获取群集列表,但我无法弄清楚如何从头开始。

有很多术语让我感到困惑:

http://scikit-learn.org/stable/modules/generated/sklearn.cluster.DBSCAN.html

如何传递特征数组,它是什么?我如何满足我的需求?我怎么能从这个算法中得到我的“子列表”?

2 个答案:

答案 0 :(得分:7)

A"特征数组"只是数据集中数据点的一系列功能。

metric是您正在寻找的参数。它可以是字符串(内置度量标准的名称)或callable。您的similarity函数是可调用的。这在文档中没有很好地描述,但是度量必须这样做,将两个数据点作为参数,然后返回一个数字。

def similarity(x, y):
    return ...

reduced_dataset = sklearn.cluster.DBSCAN(metric=similarity).fit(dataset)

答案 1 :(得分:1)

如果有人正在搜索具有自定义指标的字符串

    def metric(x, y):
        return yourDistFunc(string_seqs[int(x[0])],string_seqs[int(y[0])])
    def clusterPockets():          
        global string_seqs
        string_seqs = load_data() #["foo","bar"...]
        dat = np.arange(len(string_seqs)).reshape(-1, 1)
        clustered_dataset = DBSCAN(metric=metric)).fit(X=dat, y=dat)