python - 如何在 python 中绘制 k 距离图

标签 python cluster-analysis dbscan

如何在 DBSCAN 中绘制(在 python 中)给定最小点值的距离图???

我正在寻找膝盖和相应的 epsilon 值。

在 sklearn 中,我没有看到任何返回此类距离的方法......我错过了什么吗?

最佳答案

首先你可以定义一个函数来计算每个点到它的第k个最近邻点的距离:

def calculate_kn_distance(X,k):

    kn_distance = []
    for i in range(len(X)):
        eucl_dist = []
        for j in range(len(X)):
            eucl_dist.append(
                math.sqrt(
                    ((X[i,0] - X[j,0]) ** 2) +
                    ((X[i,1] - X[j,1]) ** 2)))

        eucl_dist.sort()
        kn_distance.append(eucl_dist[k])

    return kn_distance

然后,一旦您定义了您的函数,您就可以选择一个 k 值并绘制直方图以找到一个拐点来定义一个合适的 epsilon 值。

eps_dist = calculate_kn_distance(X[1],4)
plt.hist(eps_dist,bins=30)
plt.ylabel('n');
plt.xlabel('Epsilon distance');

enter image description here

在上面的示例中,绝大多数点都位于距离第 4 个最近邻点 0.12 个单位的范围内。因此,启发式方法可以选择 0.12 作为 epsilon 参数。

关于python - 如何在 python 中绘制 k 距离图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43160240/

相关文章:

r:带有自定义图例和永久显示国名的 Choropleth

python - Sklearn 中的高维 DBSCAN

python - 根据同一行中是否存在单词查找两列是否匹配

python - 解析逻辑表达式

python - 在 pandas python 数据框中移动上面的列并删除行

python - 如何创建一个包含 n 个字典的列表

javascript - 这里映射 API JS 聚类 : need relative values instead number of clustered weight

algorithm - 寻找簇的中心

c - 多少 mxRealloc 可以影响 C-Mex matlab 代码?

scala - Spark : which implementation 上的 DBSCAN