我正在尝试使用一些用Cython编写的sklearn
模块(我不会说)。在模块中,定义了一个方法cdef inline...
,并且似乎模块中的其他cdef
方法都使用了这些方法,但是我无法访问它们。
https://www.patricktullytherapy.com/test/shorter-header-code/是定义类的地方,并且有方法dist
:
cdef class EuclideanDistance(DistanceMetric):
#STUFF
cdef inline DTYPE_t dist(self, DTYPE_t* x1, DTYPE_t* x2,
ITYPE_t size) nogil except -1:
return euclidean_dist(x1, x2, size)
#MORESTUFF
Here和dist
方法已在其他地方使用:
cdef inline DTYPE_t dist(self, DTYPE_t* x1, DTYPE_t* x2,
ITYPE_t size) nogil except -1:
"""Compute the distance between arrays x1 and x2"""
self.n_calls += 1
if self.euclidean:
return euclidean_dist(x1, x2, size)
else:
return self.dist_metric.dist(x1, x2, size) ####HERE!!!!
但是当我尝试使用此方法时,它根本不存在。...
import sklearn.neighbors
help(sklearn.neighbors.dist_metrics.EuclideanDistance)
如何访问dist
方法?
答案 0 :(得分:0)
查看DistanceMetric class。旨在像这样使用:
from sklearn.neighbors import DistanceMetric
dist = DistanceMetric.get_metric('euclidean')
print(dist)
# <sklearn.neighbors.dist_metrics.EuclideanDistance at 0x7fabe405e848>
然后使用pairwise()
访问dist方法,它将在内部调用dist()
X = [[0, 1, 2], [3, 4, 5]]
dist.pairwise(X)
# array([[0. , 5.19615242],
# [5.19615242, 0. ]])
您还可以在pairwise()
方法中使用两个数组X,Y和