Nếu bạn nhìn vào nguồn được trích dẫn, bạn sẽ thấy rằng ước tính mật độ được xây dựng từ sự đóng góp của tất cả các điểm trong tập dữ liệu giả sử chỉ có một điểm điểm[:,i]
Bạn muốn đánh giá tạm thời (dòng 219-222):
diff = self.dataset - điểm[:, i, newaxis]
tdiff = dấu chấm(self.inv_cov, diff)
năng lượng = sum(diff * tdiff, axis=0) / 2.0
kết quả[i] = sum(exp(-energy), axis=0)
Trong ký hiệu ma trận (không có sẵn LaTeX?), điều này sẽ được viết dưới dạng một điểm duy nhất từ tập dữ liệu D
và dấu chấm P
được đánh giá là
d=D-p
t = Cov^-1 d
e = 1/2 d^T t
r = exp(-e)
Độ dốc bạn đang tìm kiếm làcấp độ (r) = (dr/dx, dr/dy)
:
dr/dx = d(exp(-e))/dx
= -de/dx exp(-e)
= -d(1/2 d^T Cov^-1 d)/dx exp(-e)
= -(Cov^-1 d) exp(-e)
Điều tương tự cũng áp dụng cho dr/dy
. Vì vậy tất cả những gì bạn cần làm là tính toán Cov^-1 ngày
và nhân nó với kết quả bạn đã thu được.
kết quả = số không((self.d,m), dtype=float)
[…]
diff = self.dataset - điểm[:, i, newaxis]
tdiff = dấu chấm(self.inv_cov, diff)
năng lượng = sum(diff * tdiff, axis=0) / 2.0
grad = dot(self.inv_cov, diff)
kết quả[:,i] = sum(grad * exp(-energy), axis=1)
Vì lý do nào đó tôi cần phải tính toán tốt nghiệp
Xóa khi -1
để có được và đánh giá P
kết quả nhất quán cho ước tính mật độ tại vàp+delta
Trong cả bốn hướng, đây là dấu hiệu cho thấy tôi chắc chắn có thể đi chệch hướng ở đây.
Tôi là một lập trình viên xuất sắc, rất giỏi!