[Wikipedia](http://ja.wikipedia.org/wiki/%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB%E5%AF%86%E5%BA % A6% E6% 8E% A8% E5% AE% 9A) Bitte beziehen Sie sich darauf. In einigen Situationen (große Anzahl von Daten, nach einer reibungslosen Verteilungsfunktion usw.) kann Ihnen ein Histogramm helfen, einen Überblick über Ihre Daten zu erhalten.
Laden Sie zunächst die erforderlichen Pakete und erstellen Sie etwa 5 bimodale Datensätze mit überlagerten Normalverteilungen.
import numpy as np
from scipy.stats import gaussian_kde
import matplotlib.pyplot as plt
N = 5
means = np.random.randn(N,2) * 10 + np.array([100, 200])
stdev = np.random.randn(N,2) * 10 + 30
count = np.int64(np.int64(np.random.randn(N,2) * 10000 + 50000))
a = [
np.hstack([
np.random.randn(count[i,j]) * stdev[i,j] + means[i,j]
for j in range(2)])
for i in range(N)]
Es ist problematisch, wenn es einen lächerlichen Ausreißer gibt, daher werden die Daten zum Prozentpunkt von 0,1% auf 99,9% gekürzt. (Abgesehen davon wird in numpy "Perzentil (Array, x)" im Bereich von 0 bis 100 angegeben, in Pandas wird "Series.quantile (x)" in 0,1 angegeben. Es ist verwirrend.)
Wenn Sie die Daten dann an "scipy.stats.gaussian_kde ()" übergeben, wird die vom Gaußschen Kernel geschätzte Dichtefunktion zurückgegeben, sodass Sie sie schnell zeichnen können, indem Sie sie mit "numpy.linspace" kombinieren.
limmin = min(np.percentile(x, 0.1) for x in a)
limmax = max(np.percentile(x, 99.9) for x in a)
ls = np.linspace(limmin, limmax, 100)
for n in range(N):
x = a[n]
x = x[(x > limmin)&(x < limmax)]
kde = gaussian_kde(x)
plt.plot(ls, kde(ls), label='data %d' % n)
plt.xlim([limmin, limmax])
plt.legend()
plt.title('data distributions')
plt.show()
Wenn Sie die Methode "resample ()" des kde-Objekts verwenden, können Sie Daten für die Simulation einer Verteilung in der Nähe der gemessenen Daten generieren. Weitere Informationen finden Sie unter Offizielle Dokumente.
Recommended Posts