Ich habe über eine halbe Million Paare von echten Labels und vorhergesagten Scores (die Länge jedes 1d-Arrays variiert und kann zwischen 10.000 und 30.000 liegen), für die ich die AUC berechnen muss. Gerade jetzt, ich habe eine for-Schleife, die ruft:Schnellere AUC in Sklearn oder Python
# Simple Example with two pairs of true/predicted values instead of 500,000
from sklearn import metrics
import numpy as np
pred = [None] * 2
pred[0] = np.array([3,2,1])
pred[1] = np.array([15,12,14,11,13])
true = [None] * 2
true[0] = np.array([1,0,0])
true[1] = np.array([1,1,1,0,0])
for i in range(2):
fpr, tpr, thresholds = metrics.roc_curve(true[i], pred[i])
print metrics.auc(fpr, tpr)
Aber es etwa 1-1,5 Stunden in Anspruch nimmt den gesamten Datensatz und berechnen Sie die AUC für jedes true/Vorhersage Paar zu verarbeiten. Gibt es einen schnelleren/besseren Weg, dies zu tun?
aktualisieren
Jede der 500K-Einträge können Form (1, 10k +). Ich verstehe, dass ich es parallelisieren könnte, aber ich bin auf einer Maschine mit nur zwei Prozessoren stecken und so kann meine Zeit wirklich nur effektiv reduziert werden, um zu sagen, 30-45, Minuten, die immer noch zu lang ist. Ich habe festgestellt, dass die AUC-Berechnung selbst langsam ist und hoffte, einen schnelleren AUC-Algorithmus zu finden, als in slearn verfügbar ist. Oder finden Sie zumindest einen besseren Weg, die AUC-Berechnung zu vektorisieren, so dass sie über mehrere Zeilen hinweg übertragen werden kann.
so klar sein, Ihre 'pred' und' true' Arrays Länge 500k Einträge haben, von denen jeder ein np.array mit Form (10k, 1)? Wenn ja, möchten Sie den Auc für jede der Kombinationen pred [i |/true [i] berechnen, dh jede Berechnung ist unabhängig? – miraculixx
Wie viel Zeit braucht die AUC-Berechnung für ein Paar? Wie viel Zeit "t" pro Paar wäre zulässig, um auf das zu kommen, was Sie brauchen (dh "t * 0,5e6
miraculixx