Правильное масштабирование данных перед KDE с SklearnPython

Программы на Python
Anonymous
 Правильное масштабирование данных перед KDE с Sklearn

Сообщение Anonymous »

Я использую sklearn.neighbors.kerneldensity для геопространственных данных. Я заметил, что методы оценки полосы пропускания не рассматривают пространственную степень данных, только количество образцов и функций. Документация Sklearn или учебники Sklearn, похоже, не упоминают, что данные должны быть масштабированы. Kde?
Вот минимальный пример:
import numpy as np
from sklearn.neighbors import KernelDensity
import plotly.graph_objects as go
from plotly.subplots import make_subplots

fig = make_subplots(rows=1, cols=2)

X_uniform = np.random.rand(100, 2)
X_upscaled = X_uniform * 100

for i,X in enumerate([X_uniform, X_upscaled]):
kde = KernelDensity(kernel='gaussian', bandwidth="scott").fit(X)
print(f"bw: {kde.bandwidth_}")

# Create grid
x_grid = np.linspace(X[:,0].min(), X[:,0].max(), 50)
y_grid = np.linspace(X[:,1].min(), X[:,1].max(), 50)
X,Y = np.meshgrid(x_grid, y_grid)
xy = np.vstack([X.ravel(), Y.ravel()]).T

z = np.exp(kde.score_samples(xy)).reshape(X.shape)
fig.add_trace(go.Contour(z=z, x=x_grid, y=y_grid), row=1, col=i+1)

fig.show()


Подробнее здесь: https://stackoverflow.com/questions/793 ... th-sklearn

Вернуться в «Python»