Richtige Skalierung von Daten vor KDE mit SklearnPython

Python-Programme
Guest
 Richtige Skalierung von Daten vor KDE mit Sklearn

Post by Guest »

Ich verwende sklearn.neighbors.kerneldensity über Geospatial -Daten. Ich bemerkte, dass die Methoden der Bandbreitenschätzung nicht die räumliche Ausdehnung der Daten berücksichtigen, sondern nur die Anzahl der Proben und Merkmale. Die Sklearn -Dokumentation oder die Sklearn -Tutorials scheinen nicht zu erwähnen, dass Daten skaliert werden sollten. KDE?
Hier ist ein minimales Beispiel:

Code: Select all

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()

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post