有没有办法使用用户定义的距离度量来选择 scikits 学习中的 k 个最近邻居?

Posted

技术标签:

【中文标题】有没有办法使用用户定义的距离度量来选择 scikits 学习中的 k 个最近邻居?【英文标题】:Is there a way to choose the k nearest neighbors in scikits learn with a user defined distance metric? 【发布时间】:2012-04-24 21:22:56 【问题描述】:

我必须使用余弦相似度度量和其他一些用户定义的度量来为一组向量使用 K 个最近邻。如何使用 scikits 学习来实现这一目标?我找到了sklearn.neighbors.KNeighborsClassifier,但我无法找出用户定义指标的任何选项。我目前使用的是最新版本的scikits learn 0.11。

【问题讨论】:

【参考方案1】:

(还没有?)不可能将预先计算或延迟计算的用户定义距离函数传递给 kNN 模型。

但是在 master 分支中,现在您可以使用任意 p 来表示 p-Minkowsky 距离:

https://github.com/scikit-learn/scikit-learn/pull/742

为蛮力方法传递任意用户定义的距离函数是很容易的,但是球树实现(对于低维数据)不能那么容易地适应一般情况。

对于稀疏的正数据和余弦相似度,倒排索引将是更好的数据结构,请参阅:http://metaoptimize.com/qa/questions/9691/efficient-nearest-neighbors-in-a-very-sparse-settings

【讨论】:

以上是关于有没有办法使用用户定义的距离度量来选择 scikits 学习中的 k 个最近邻居?的主要内容,如果未能解决你的问题,请参考以下文章

评估向量距离度量

从K近邻算法距离度量谈到KD树SIFT+BBF算法

PowerBI:根据度量过滤器从列中获取值

特征与常见的特征距离度量

对纬度/经度对使用自定义距离度量进行聚类

常见的相似度度量算法