def kde(self):
""" Calculate kernel density estimator distribution function """
plot = True
# Input data
x_data = np.linspace(-math.pi, math.pi, 1000)
# Kernels, centered at input data points
kernels = []
for datapoint in self.data:
# Make the basis function as a von mises PDF
kernel = self.vonMisesPDF(x_data, mu=datapoint)
kernels.append(kernel)
# Handle weights
if len(self.weights) > 0:
kernels = np.asarray(kernels)
weighted_kernels = np.multiply(kernels, self.weights[:, None])
else:
weighted_kernels = kernels
# Normalize pdf
vmkde = np.sum(weighted_kernels, axis=0)
vmkde = vmkde / np.trapz(vmkde, x=x_data)
self.fn = interp1d(x_data, vmkde)
评论列表
文章目录