Qualcuno può spiegarmi cosa sono i "raccoglitori" nell'istogramma (la funzione matplotlib hist)? E supponendo che ho bisogno di tracciare la funzione di densità di probabilità di alcuni dati, come fanno i bidoni che scelgo ad influenzare? e come li scelgo? (Ho già letto su di loro nelle librerie matplotlib.pyplot.hist e numpy.histogram ma non ho avuto l'idea)Come scegliere i raccoglitori nell'istogramma di matplotlib
risposta
I bin sono il numero di intervalli in cui si desidera suddividere tutti i dati in modo che possano essere visualizzati come barre su un istogramma. Un metodo semplice per lavorare su quanti contenitori sono adatti è prendere la radice quadrata del numero totale di valori nella distribuzione.
Il parametro bins
indica il numero di contenitori in cui verranno suddivisi i dati. È possibile specificarlo come numero intero o come elenco di bordi del contenitore.
Per esempio, qui ci chiedono 20 bidoni:
import numpy as np
import matplotlib.pyplot as plt
x = np.random.randn(1000)
plt.hist(x, bins=20)
E qui chiediamo bin bordi nei punti [-4, -3, -2 ... 3, 4].
plt.hist(x, bins=range(-4, 5))
La tua domanda su come scegliere il "miglior" numero di bidoni è interessante, e c'è in realtà un abbastanza vasta letteratura sull'argomento. Ci sono alcune regole del pollice comunemente usate che sono state proposte (ad esempio lo Freedman-Diaconis Rule, Sturges' Rule, Scott's Rule, the Square-root rule, ecc.) Ognuna delle quali ha i suoi punti di forza e di debolezza.
Se si desidera una buona implementazione di Python di una varietà di queste regole dell'istogramma di autotuning, è possibile controllare la funzionalità dell'istogramma nell'ultima versione del pacchetto AstroPy, described here. Funziona esattamente come plt.hist
, ma consente di utilizzare la sintassi come, ad es. hist(x, bins='freedman')
per la scelta di contenitori tramite la regola Freedman-Diaconis sopra menzionata.
Il mio preferito è "Blocchi Bayesiani" (bins="blocks"
), che risolve per binning ottimale con diseguali larghezze bin. Puoi leggere un po 'di più su quello here.
Modifica, aprile 2017: con matplotlib versione 2.0 o successiva e la versione NumPy 1.11 o successiva, è possibile ora specificare bidoni automaticamente-determinati direttamente in matplotlib, specificando, ad esempio, bins='auto'
. Questo utilizza il massimo della scelta bin Sturges e Freedman-Diaconis. Puoi leggere ulteriori informazioni sulle opzioni nello numpy.histogram
docs.
Grazie mille! I miei dati sono circa 100 migliaia di punti e ho bisogno di disegnarne una funzione di densità di probabilità. Poiché i miei dati hanno molti piccoli numeri, ho usato questo: bin_size = 0.1; min_edge = -5 .; max_edge = 5. N = (max_edge-min_edge)/bin_size; Nplus1 = N + 1 bins = np.linspace (min_edge, max_edge, Nplus1) –
Sarebbe davvero bello avere il binning automatico non uguale anche in Matplotlib o NumPy o SciPy o Pandas o in uno degli altri pacchetti standard di data science. – Konstantin
Hai ragione nel prevedere che il numero di contenitori abbia un impatto significativo sull'approssimazione della vera distribuzione sottostante. Non ho letto il giornale originale me stesso, ma secondo Scott 1979, una buona regola è quello di utilizzare:
R (n^(1/3))/(3.49 σ)
dove
R è l'intervallo di dati (nel caso R = 3 - (- 3) = 6),
n è il numero di campioni,
σ è la tua deviazione standard.
- 1. Assegnazione di punti ai raccoglitori
- 2. Generatore di raccoglitori Android guasto
- 3. DefaultModelBinder Problema con livelli nidificati + altri raccoglitori
- 4. Quando scegliere i plug-in e quando scegliere il suggerimento
- 5. Raccoglitori multipli con più inputput di campo di testo rapido
- 6. Come scegliere i valori orari dal set di dati?
- 7. Come estrarre i dati dal grafico matplotlib
- 8. È possibile proteggere JSON-LD dai raccoglitori di e-mail?
- 9. Come mostrare i grafici matplotlib in python
- 10. Come scegliere un contenitore DI?
- 11. Come riutilizzare i grafici in matplotlib?
- 12. Come scegliere come target tutti i controlli (stili WPF)
- 13. Come stampare i vettori di matematica 2d con matplotlib?
- 14. Come annotare i paia di mare?
- 15. Come scegliere i valori dell'account e del servizio per SSKeychain
- 16. Quale versione di Android scegliere come target?
- 17. Come rappresenteresti i seguenti dati 3D in Matplotlib o Mayavi?
- 18. spinta-python scegliere tra i metodi di overload
- 19. Come rendere trasparenti i grafici a dispersione Matplotlib come gruppo?
- 20. matplotlib: etichette istogramma e bin
- 21. Android: cosa scegliere per i valori del codice di richiesta?
- 22. Come scegliere quale interfaccia di rete utilizzare?
- 23. Come scegliere la lingua dell'interfaccia di Eclipse?
- 24. istogrammi normalizzati matplotlib
- 25. Come scegliere come target il browser Blackberry?
- 26. Android: Come scegliere più contatti
- 27. iPhone OpenGL ES - Come scegliere
- 28. Come scegliere un modulo nodo?
- 29. Come scegliere un binding WCF?
- 30. Come scegliere diverse architetture Android?
Grazie mille –