sim*_*ple 5 python scipy euclidean-distance keyword-argument scikit-learn
我在 python 的 scikit learn 中使用聚类模块,我想使用归一化欧几里德距离。这个(我知道的)没有内置距离。这是一个列表。
因此,我想使用可调用对象实现我自己的归一化欧几里得距离。该函数是我的distance
模块的一部分,称为distance.normalized_euclidean_distance
. 它采用三个输入: X
,Y
,和SD
。
但是,归一化欧几里得距离需要总体样本的标准差。但是,scipy 中的成对距离只允许两个输入:X
和Y
。
我如何让它接受额外的论点?
我试着把它作为 a **kwarg
,但这似乎不起作用:
cluster = DBSCAN(eps=1.0, min_samples=1,metric = distance.normalized_euclidean, SD = stdv)
Run Code Online (Sandbox Code Playgroud)
这里distance.normalized_euclidean
是发生在两个数组,我写的功能,X
以及Y
并计算它们之间的归一化欧氏距离。
...但这会引发错误:
TypeError: __init__() got an unexpected keyword argument 'SD'
Run Code Online (Sandbox Code Playgroud)
使用附加关键字参数的方法是什么?
这里说Any further parameters are passed directly to the distance function.
,这让我认为这是可以接受的。
您可以使用 lambda 函数作为度量,它接受两个输入数组:
cluster = DBSCAN(eps=1.0, min_samples=1,metric=lambda X, Y: distance.normalized_euclidean(X, Y, SD=stdv))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2840 次 |
最近记录: |