我想使用 mlpack 中的 NeighborSearch 类对一些表示文档的向量执行 KNN 分类。
我想使用余弦距离,但我遇到了麻烦。我认为这样做的方法是使用内积度量“IPMetric”并指定 CosineDistance 内核......这就是我所拥有的:
NeighborSearch<NearestNeighborSort, IPMetric<CosineDistance>> nn(X_train);
但我得到以下编译错误:
/usr/include/mlpack/core/tree/hrectbound_impl.hpp:211:15: error: ‘Power’ is not a member of ‘mlpack::metric::IPMetric<mlpack::kernel::CosineDistance>’
sum += pow((lower + fabs(lower)) + (higher + fabs(higher)),
^
/usr/include/mlpack/core/tree/hrectbound_impl.hpp:220:3: error: ‘TakeRoot’ is not a member of ‘mlpack::metric::IPMetric<mlpack::kernel::CosineDistance>’
if (MetricType::TakeRoot)
^
我怀疑问题可能是默认的树类型 KDTree 不支持这个距离度量?如果这是问题所在,是否有适用于 CosineDistance 的树类型?
最后,是否可以使用蛮力搜索?我似乎根本找不到不使用树的方法...
谢谢!