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.
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.
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)
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.
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.
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.
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)
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.
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.
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.
Zusammenfassung der Scicit-Learn-Datenquellen, die beim Schreiben von Analyseartikeln verwendet werden können boxplot violinplot
Recommended Posts