2017-05-19 6 views
0

Ich habe eine Matrix von Daten X, die n x 2 ist und eine entsprechende Reihe von binären Etiketten y, sagen, ob die i-th Person war ein Gewinner. Ich versuche, ein Streudiagramm mit einer Heatmap darüber zu erstellen, die die vorhergesagte Wahrscheinlichkeit zeigt, dass jeder Punkt auf dem Graphen ein Gewinner ist. Hier ist mein Code so weitHeatmap hinter 2D Scatter Matplotlib

import matplotlib.pyplot as plt 
from sklearn.externals import joblib 
from sklearn.linear_model import LogisticRegression 

X = joblib.load('X.pkl') 
y = joblib.load('y.pkl') 
lr = LogisticRegression() 
lr.fit(X, y) 
plt.scatter(X[y == 1, 0], X[y == 1, 1], color='r', label='winners', s=1) 
plt.scatter(X[y == 0, 0], X[y == 0, 1], color='b', label='losers', s=1) 
plt.legend() 
# Want to add a heatmap in the background for predicted probabilities here 
plt.show() 

Wesentlichen ich den Hintergrund wollen mehr rot sein, wo die vorhergesagte Wahrscheinlichkeit hoch, und mehr blau ist, wo es niedrig ist. Ich kann die Wahrscheinlichkeiten für eine Menge von Punkten unter Verwendung lr.predict_proba(X)[:0] erhalten.

Wie kann ich den Hintergrund so einfärben, dass jeder Punkt (x1, x2) im Diagramm eine Farbe erhält, die auf der vorhergesagten Wahrscheinlichkeit des Gewinns basiert?

+0

Sie haben Lesen Sie die Lösung in dieser [Frage] (http://stackoverflow.com/questions/2369492/generate-a-heatmap-in-matplotlib-using-a-scatter-data-set)? Streuung als Heatmap ist vielleicht nicht das Gleiche wie du willst, aber das könnte dir helfen. –

Antwort

0

Was Sie suchen, die c-Werte für die Punkte ist die Angabe und die colormap:

props = lr.predict_proba(X) 
plt.scatter(X[y == 1, 0], X[y == 1, 1], c=props[:, 1], cmap='Reds', label='winners', s=1) 
plt.scatter(X[y == 0, 0], X[y == 0, 1], c=props[:, 0], cmap='Blues', label='losers', s=1) 

Wenn Sie verschiedene Farbtabellen wollen, lesen Sie in diesem Link für eine vollständige Liste: https://matplotlib.org/examples/color/colormaps_reference.html

+0

Das funktioniert fast für mich, aber ich war in der Frage etwas unklar. Ich möchte, dass jedem einzelnen Punkt im Diagramm (nicht nur den in X) eine Farbe zugewiesen wird (d. H. Das gesamte Diagramm ist farbig). – michaelsnowden

+0

Sie können versuchen, plt.pcolormesh (x, y, reps). Sie müssen Ihre Arrays je nach Ihrer Absicht umformen ... –

Verwandte Themen