首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在python中绘制k-距离图

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

Stack Overflow用户
提问于 2017-04-01 18:00:33
回答 4查看 15.9K关注 0票数 7

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

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

在雪板上,我没有看到任何返回如此距离的方法.我是不是遗漏了什么?

EN

Stack Overflow用户

发布于 2018-03-21 12:16:05

要获得距离,可以使用以下函数:

代码语言:javascript
运行
复制
import numpy as np
import pandas as pd
import math

def k_distances(X, n=None, dist_func=None):
    """Function to return array of k_distances.

    X - DataFrame matrix with observations
    n - number of neighbors that are included in returned distances (default number of attributes + 1)
    dist_func - function to count distance between observations in X (default euclidean function)
    """
    if type(X) is pd.DataFrame:
        X = X.values
    k=0
    if n == None:
        k=X.shape[1]+2
    else:
        k=n+1

    if dist_func == None:
        # euclidean distance square root of sum of squares of differences between attributes
        dist_func = lambda x, y: math.sqrt(
            np.sum(
                np.power(x-y, np.repeat(2,x.size))
            )
        )

    Distances = pd.DataFrame({
        "i": [i//10 for i in range(0, len(X)*len(X))],
        "j": [i%10 for i in range(0, len(X)*len(X))],
        "d": [dist_func(x,y) for x in X for y in X]
    })
    return np.sort([g[1].iloc[k].d for g in iter(Distances.groupby(by="i"))])

X应该是pandas.DataFramenumpy.ndarrayn是d邻里的邻居数.你应该知道这个号码。默认情况下是属性数+ 1。

要绘制这些距离,可以使用以下代码:

代码语言:javascript
运行
复制
import matplotlib.pyplot as plt

d = k_distances(X,n,dist_func)
plt.plot(d)
plt.ylabel("k-distances")
plt.grid(True)
plt.show()
票数 4
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43160240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档