"매 histogram 의 smooth 한 generalization". KDE 는 non-parametric density estimator 로, 매 sample point 에 kernel function 을 placing 하고 sum 하여 continuous PDF 추정. Parzen (1962) 와 Rosenblatt (1956) 이 정립했으며, 2026 modern stats/ML 에서 anomaly detection, generative sampling, visualization 에 사용.
fromsklearn.neighborsimportKernelDensityimportnumpyasnpX=np.random.randn(1000,2)kde=KernelDensity(kernel="gaussian",bandwidth=0.3).fit(X)log_dens=kde.score_samples(X)# log-density at each point# anomaly: lowest 1% as outliersthreshold=np.quantile(log_dens,0.01)outliers=X[log_dens<threshold]
fromKDEpyimportFFTKDEx_grid,y=FFTKDE(kernel="gaussian",bw="silverman").fit(x).evaluate()# O(n + m log m) instead of O(n*m)
Adaptive bandwidth
defadaptive_kde(x,x_eval,k=10):fromscipy.spatialimportcKDTreetree=cKDTree(x[:,None])dists,_=tree.query(x[:,None],k=k+1)h_local=dists[:,-1]# k-NN distance per pointout=np.zeros_like(x_eval)forxi,hiinzip(x,h_local):out+=np.exp(-0.5*((x_eval-xi)/hi)**2)/hireturnout/(len(x)*np.sqrt(2*np.pi))