【问题标题】:How to use user defined metric in KernelDensity from scikit-learn (python)如何在 scikit-learn (python) 的 KernelDensity 中使用用户定义的指标
【发布时间】:2015-06-07 11:32:01
【问题描述】:

我正在使用 scikit-learn (0.14) 并尝试为我的 KernelDensity 估计实现用户定义的指标。

以下代码是我的代码结构示例:

def myDistance(x,y):
    return np.sqrt(sum((x - y)**2))

dt=DistanceMetric.get_metric("pyfunc",func=myDistance)

kernelModel=KernelDensity(algorithm='ball_tree',metric='pyfunc')
kernelModel.fit(X)

根据文档,BallTree 算法应该接受用户定义的指标。 如果我按照此处给出的方式运行此代码,则会出现以下错误:

TypeError: __init__() takes exactly 1 positional argument (0 given) 

错误似乎来自:

sklearn.neighbors.dist_metrics.PyFuncDistance.__init__

我不明白这一点。如果我检查上面代码中的“dt”给了我什么,我会得到我所期望的。 dt.pairwise(X) 返回正确的值。 我做错了什么?

提前致谢。

【问题讨论】:

    标签: python scikit-learn kernel-density metric


    【解决方案1】:

    解决办法是

    kernelModel=KernelDensity(...,metric='pyfunc',metric_params={"func":myDistance})
    

    不需要调用 Distancemetric.get_metric。 M

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-01
      • 2016-06-01
      • 2019-10-26
      • 2019-06-01
      • 2020-06-11
      • 2014-05-01
      • 2017-07-04
      • 2013-06-24
      相关资源
      最近更新 更多