0 0 0 0 3 0 3 0 3 0 3 0 0 0 0 0 0 0 3 0 0 Aufgrund der komplexen Verteilung meiner Daten möchte ich jedoch die Parameter ändern, die zur Berechnung der Dichte verwendet werden. Hier die Ergebnisse mit einigen gefälschten Daten ähnlich wie mir: Ich möchte die Dichteberechnungen von gaussian_kde kalibrieren, so dass der linke Teil der Handlung wie folgt aussieht: Ich mag es nicht die erste Handlung, weil Die Punktegruppen beeinflussen die Dichte benachbarter Punktgruppen und verhindern, dass ich die Verteilung innerhalb einer Gruppe analysiere. Mit anderen Worten, selbst wenn jede der 8 Gruppen genau die gleiche Verteilung hat, ist diese in der Grafik nicht sichtbar.Wie kann ich die Parameter von Gaussian_kde für ein Streudiagramm ändern, das durch die Dichte in Matplotlib
Ich habe versucht, den Kovarianz_Faktor zu ändern (wie ich einmal für ein 2D-Diagramm der Dichte über x getan habe), aber wenn Gaussian_kde mit mehrdimensionalen Arrays verwendet wird, gibt es ein numpy.darray, nicht ein "scipy.stats.kde. gaussian_kde "Objekt. Außerdem weiß ich nicht einmal, ob das Ändern des covariance_factor es tun wird.
Hier ist mein Blindkode:
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import gaussian_kde
# Generate fake data
a = np.random.normal(size=1000)
b = np.random.normal(size=1000)
# Data for the first image
x = np.concatenate((a+10,a+10,a+20,a+20,a+30,a+30,a+40,a+40,a+80))
y = np.concatenate((b+10,b-10,b+10,b-10,b+10,b-10,b+10,b-10,b*4))
# Data for the second image
#x = np.concatenate((a+10,a+10,a+20,a+20,a+30,a+30,a+40,a+40))
#y = np.concatenate((b+10,b-10,b+10,b-10,b+10,b-10,b+10,b-10))
# Calculate the point density
xy = np.vstack([x,y])
z = gaussian_kde(xy)(xy)
# My unsuccesfull try to modify covariance which would work in 1D with "z = gaussian_kde(x)"
#z.covariance_factor = lambda : 0.01
#z._compute_covariance()
# Sort the points by density, so that the densest points are plotted last
idx = z.argsort()
x, y, z = x[idx], y[idx], z[idx]
fig, ax = plt.subplots()
ax.scatter(x, y, c=z, s=50, edgecolor='')
plt.show()
Die Lösung, die eine andere Dichte Rechner verwenden könnte, ich habe nichts dagegen. Das Ziel ist es, ein Dichtediagramm wie oben gezeigt zu erstellen, wo ich mit den Dichteparametern spielen kann.
Ich verwende Python 3.4.3
Könnten Sie deutlicher erklären, was mit dem ersten Grundstück falsch? Meine Vermutung ist, dass Sie eine weniger "glatte" Dichte schätzen wollen. Dies kann in einem gewissen Ausmaß durch Variieren der Bandbreite des Gauß-Kerns gesteuert werden, beispielsweise durch Übergeben verschiedener Skalarwerte für den Parameter "bw_method =". Bedenken Sie jedoch, dass KDE im Allgemeinen für unimodale Verteilungen am besten funktioniert - Überschmierung ist für komplizierte multimodale Verteilungen wie Ihre mehr oder weniger unvermeidlich. –
1) Ich habe die Frage bearbeitet. 2) Ich wäre an einem Beispiel interessiert, wie man den Parameter bw_method ändern kann. 3) Danke für die Vertriebsberatung. – Gab