def estimation(self, y1, y2):
""" Estimate cross-entropy.
Parameters
----------
y1 : (number of samples1, dimension)-ndarray
One row of y1 corresponds to one sample.
y2 : (number of samples2, dimension)-ndarray
One row of y2 corresponds to one sample.
Returns
-------
c : float
Estimated cross-entropy.
References
----------
Nikolai Leonenko, Luc Pronzato, and Vippal Savani. A class of
Renyi information estimators for multidimensional densities.
Annals of Statistics, 36(5):2153-2182, 2008.
Examples
--------
c = co.estimation(y1,y2)
"""
# verification:
self.verification_equal_d_subspaces(y1, y2)
num_of_samples2, dim = y2.shape # number of samples, dimension
# computation:
v = volume_of_the_unit_ball(dim)
distances_y2y1 = knn_distances(y2, y1, False, self.knn_method,
self.k, self.eps, 2)[0]
c = log(v) + log(num_of_samples2) - psi(self.k) + \
dim * mean(log(distances_y2y1[:, -1]))
return c
评论列表
文章目录