【发布时间】:2015-10-30 10:19:43
【问题描述】:
我在 python 的 scikit learn 中使用集群模块,我想使用归一化欧几里得距离。这没有内置距离(我知道)这是list。
所以,我想使用可调用对象来实现我自己的归一化欧几里德距离。该函数是我的distance 模块的一部分,称为distance.normalized_euclidean_distance。它需要三个输入:X、Y 和 SD。
但是,归一化欧几里得距离需要总体样本的标准差。但是,scipy 中的成对距离只允许两个输入:X 和 Y。
如何让它接受额外的参数?
我尝试将其作为**kwarg 输入,但这似乎不起作用:
cluster = DBSCAN(eps=1.0, min_samples=1,metric = distance.normalized_euclidean, SD = stdv)
distance.normalized_euclidean 是我编写的函数,它接收两个数组 X 和 Y 并计算它们之间的归一化欧几里得距离。
...但这会引发错误:
TypeError: __init__() got an unexpected keyword argument 'SD'
使用附加关键字参数的方法是什么?
Here 上面写着Any further parameters are passed directly to the distance function.,这让我觉得这是可以接受的。
【问题讨论】:
-
我曾想过为
stdv使用全局变量,但这似乎是一个危险的解决方案。 -
什么是
distance.normalized_euclidean? -
这是我为计算 NED 编写的函数。
-
那
SD是怎么用的呢?不也是distance.normalized_euclidean的论据吗? -
对,也是
distance.normalized_euclidean的参数。
标签: python scipy scikit-learn euclidean-distance keyword-argument