[PYTHON] Über Boxplot und Violinplot, die die Variation unabhängiger Daten visualisieren

Einführung

Dieser Artikel verwendet Python 2.7, Numpy 1.11, Scipy 0.17, Scikit-Learn 0.18, Matplotlib 1.5, Seaborn 0.7, Pandas 0.17. Es wurde bestätigt, dass es an einem Jupiter-Notebook funktioniert. (Bitte ändern Sie% matplotlib inline entsprechend) Verwenden Sie das Boxplot und das Geigenplot von Seaborn.

Inhaltsverzeichnis

  1. Datengenerierung
  2. Boxplot
  3. Violinplot
  4. Schließlich
  5. Referenz

1. Datengenerierung

Wenn Sie eigene Daten haben, ignorieren Sie diese bitte.

Verwenden Sie make_classification von hier, um 1000 Stichproben von 2D 2-Klassendaten zu erstellen. Außerdem seien A und B die beiden numerischen Daten und das Geschlecht die Etikettendaten. Darüber hinaus generiert numpy.random.binomial () zufällig 0, 1 und 2. Verketten Sie sie, um Typen zu erstellen.

make_classification.py


import numpy as np
from sklearn.datasets import make_classification
import pandas as pd

x, y = make_classification(n_samples=1000, n_features=2, n_redundant=0, n_informative=2,n_clusters_per_class=2, n_classes=2)
data = np.c_[np.c_[x, y], np.random.binomial(2, .5, len(x))]
data = pd.DataFrame(data).rename(columns={0:'A', 1:'B', 2:'sex', 3:'types'})

Der Inhalt der Daten sieht so aus

          A         B  sex  types
0  2.131411 -1.754907    0      1
1 -0.046614 -1.009540    0      2
2  0.136387 -0.236662    1      1
3 -3.515190  2.117925    1      1
4 -2.099287  1.647548    1      1
5 -0.536360 -0.920529    0      0
6  0.281726 -0.572448    1      2
7  2.202351 -3.214435    0      1
8 -0.825666  0.847394    1      0
9 -1.602873  1.338847    1      2

Jetzt haben wir zwei numerische Daten generiert, darunter zwei Arten von Kategoriedaten.

  1. Boxplot Es eignet sich zur Visualisierung der Variation numerischer Daten, einschließlich zweier Arten von Kategoriedaten. Verwenden Sie das [Boxplot] von seaborn (http://seaborn.pydata.org/examples/grouped_boxplot.html).

boxplot.py


import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline

sns.boxplot(x='types', y="A", hue='sex', data=data, palette="PRGn")
sns.despine(offset=10, trim=True)

download (2).png

Ich konnte für jedes Geschlecht und jeden Typ eine Box Whisker zeichnen. Wie Sie in wikipedia sehen können, ist die mittlere Zeile Der Medianwert und der obere und untere Rand der Box sind der 1. bzw. 3. Quadrant, und der obere und untere Rand der Whisker sind die Maximal- bzw. Minimalwerte. Die oberen und unteren Punkte bedeuten die "Ausreißer", wenn sie aus dem 1. und 3. Quadranten beurteilt werden. Lassen Sie uns auch andere numerische Werte B visualisieren.

download (1).png

Der Zahlenwert B scheint den geschlechtsspezifischen Unterschied signifikant darzustellen. (Daten sind bei jeder Generierung unterschiedlich) In Bezug auf Typen kann es schwierig sein, nur anhand dieser Daten zu klassifizieren. Auf diese Weise kann Boxplot verwendet werden, um die Variation zweier Arten von Kategoriedaten auf leicht verständliche Weise auszudrücken.

  1. violinplot Ähnlich wie beim Boxplot wird der Unterschied zwischen numerischen Daten einschließlich zweier Arten von Kategoriedaten dargestellt. Hier werden alle numerischen Daten als Verteilung ausgedrückt.

Datenaufbereitung

Verwenden Sie die Schmelzfunktion von pandas, um den DataFrame zu transformieren.

melt.py


data_batch = pd.melt(data, id_vars = ['types', 'sex'], value_vars = data.columns[:-2].tolist())
print data_batch[:10]

Auf diese Weise können Sie den DataFrame "aufheben". Hier ist das Ausführungsergebnis.

   types  sex variable     value
0      1    0        A  2.131411
1      2    0        A -0.046614
2      1    1        A  0.136387
3      1    1        A -3.515190
4      1    1        A -2.099287
5      0    0        A -0.536360
6      2    1        A  0.281726
7      1    0        A  2.202351
8      0    1        A -0.825666
9      2    1        A -1.602873

Der Spaltenname der numerischen Daten ist variabel und der numerische Wert ist value.

Geigenplot erstellen

Visualisieren Sie die vorbereiteten "Unpivot" -Daten mit violinplot.

violinplot.py


data_batch_A = data_batch[data_batch.variable=='A']
sns.violinplot(x = 'types',  y = 'value', hue = 'sex', data = data_batch_A, split=True)
sns.despine(offset=10, trim=True)

download (3).png

Die Handlung sieht so aus, als würden die linken und rechten Objekte hervorgehoben. Im Boxplot habe ich den Median und die Quadranten betrachtet, sodass ich das Gefühl hatte, dass das Ganze eine Normalverteilung ist. Auf der anderen Seite visualisiert der Geigenplot den kumulativen Wert selbst, so dass es möglich ist, mehrere Peaks (multimodal) in jedem Datentyp zu beobachten. Visualisieren Sie in ähnlicher Weise die numerischen Daten von B.

download (4).png

Wie beim Boxplot können Sie sehen, dass die Verteilung des Zahlenwerts B für jedes Geschlecht klar aufgeteilt ist. Ist es nicht unmöglich, anhand des Typs die Form der Verteilung zu klassifizieren? Ich fühle, dass.

Schließlich

Boxplot und Geigenplot eingeführt. Boxplot kann nützlich sein, wenn Sie sich auf die Quadranten und Medianwerte konzentrieren möchten, und Violinplot, wenn Sie die Form und Multimodalität der Verteilung sehen möchten. In beiden Fällen ist es praktisch, die Daten zu visualisieren, wenn sie als unabhängige Variable betrachtet werden, ohne die Korrelation zwischen den Daten zu berücksichtigen.

Referenz

Zusammenfassung der Scicit-Learn-Datenquellen, die beim Schreiben von Analyseartikeln verwendet werden können boxplot violinplot

Recommended Posts

Über Boxplot und Violinplot, die die Variation unabhängiger Daten visualisieren
Dies und das der Einschlussnotation.
Visualisieren Sie die Exportdaten des Piyo-Protokolls
Über das Verhalten von copy, deepcopy und numpy.copy
Sprechen Sie über die Funktionen, für die Pandas und ich im Projekt verantwortlich waren
Informationen zur Datenvorverarbeitung von Systemen, die maschinelles Lernen verwenden
Visualisieren Sie den Bereich der internen und externen Einfügungen mit Python
Visualisieren Sie Daten und erfassen Sie gleichzeitig die Korrelation
Denken Sie an das Rack und WSGI der nächsten Generation
Über die Ineffizienz der Datenübertragung im luigi on-memory
Persönliche Hinweise zur Integration von vscode und anaconda
Es ist Zeit, ernsthaft über die Definition und die Fähigkeiten von Datenwissenschaftlern nachzudenken
Lassen Sie uns die Analyse der sinkenden Daten der Titanic so durchführen
Datenverarbeitung, die die Auswirkungen von Verschränkungsfaktoren eliminiert (Theorie)
Dies und das über pd.DataFrame
Visualisieren Sie die Flugbahn von Hayabusa 2
Über die Komponenten von Luigi
Über die Funktionen von Python
Über die Datenverwaltung von Amboss-App-Server
Beginn der Niko Niko Encyclopedia Analysis ~ JSON und berühren Sie die bereitgestellten Daten ~
Suchen Sie den Installationsort des Sensors, der die Menge der erfassten Daten maximiert
[Python] Informationen zum Erstellen eines Tools zum Erstellen einer neuen Outlook-E-Mail basierend auf den Daten der JSON-Datei und dem Teil, der abgefangen wurde
Über den Fehler, dass Anaconda Numpy und Scipy nicht importieren kann
Überprüfung der Theorie, dass "Python und Swift ziemlich ähnlich sind"
Die Geschichte von Python und die Geschichte von NaN
Über den Rückgabewert von pthread_mutex_init ()
Über den Rückgabewert des Histogramms.
Über den Grundtyp von Go
Dies und das von Python-Eigenschaften
Über die Obergrenze von Threads-max
Über Zeitreihendaten und Übertraining
Über das Verhalten von Yield_per von SqlAlchemy
Über die Größe der Punkte in Matplotlib
Visualisieren Sie den Antwortstatus der Volkszählung 2020
Informationen zur Grundlagenliste der Python-Grundlagen
Ich habe versucht, die Altersgruppe und die Ratenverteilung von Atcoder zu visualisieren
[Python] Visualisieren Sie die Hitze der Präfekturen Tokio und XX (DataFrame-Nutzungsnotiz)
Über "spleeter", der Gesang und Musikinstrumente von Musikdaten trennen kann
Suchen Sie den Namen und die Daten einer freien Variablen in einem Funktionsobjekt
Zusammenfassung der Wahrscheinlichkeitsverteilungen, die häufig in Statistiken und Datenanalysen vorkommen
Ein Hinweis zu den Funktionen der Standard-Linux-Bibliothek, die sich mit Zeit befasst
Datenbereinigung offener Daten zur Ereignissituation des Ministeriums für Gesundheit, Arbeit und Soziales
Über die Hauptaufgaben der Bildverarbeitung (Computer Vision) und die verwendete Architektur