Zunächst hat die DecisionTreeClassifier
keine Attribut decision_function
.
Wenn ich von der Struktur des Codes erraten, haben Sie diese example
In diesem Fall wird der Klassifikator nicht der Entscheidungsbaum ist, aber es ist die OneVsRestClassifier, die die decision_function Methode unterstützt.
Sie können die verfügbaren Attribute DecisionTreeClassifier
here
Eine mögliche Art und Weise sehen, es zu tun ist, um binarisieren den Klassen und dann die auc für jede Klasse berechnen:
Beispiel:
from sklearn.metrics import roc_curve, auc
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import label_binarize
from sklearn.tree import DecisionTreeClassifier
from scipy import interp
iris = datasets.load_iris()
X = iris.data
y = iris.target
y = label_binarize(y, classes=[0, 1, 2])
n_classes = y.shape[1]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.5, random_state=0)
classifier = DecisionTreeClassifier()
y_score = classifier.fit(X_train, y_train).predict(X_test)
fpr = dict()
tpr = dict()
roc_auc = dict()
for i in range(n_classes):
fpr[i], tpr[i], _ = roc_curve(y_test[:, i], y_score[:, i])
roc_auc[i] = auc(fpr[i], tpr[i])
# Compute micro-average ROC curve and ROC area
fpr["micro"], tpr["micro"], _ = roc_curve(y_test.ravel(), y_score.ravel())
roc_auc["micro"] = auc(fpr["micro"], tpr["micro"])
#ROC curve for a specific class here for the class 2
roc_auc[2]
Ergebnis
0.94852941176470573