How to Calculate FPR, TPR, AUC, roc_curve for multi class text classification- I have used following code-
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)
from sklearn.feature_extraction.text import CountVectorizer
vect=CountVectorizer()
vect.fit(X_train.values.astype('U'))
X_train_dtm=vect.transform(X_train.values.astype('U'))
X_test_dtm=vect.transform(X_test)
from sklearn.naive_bayes import MultinomialNB
nb = MultinomialNB()
y_score=nb.fit(X_train_dtm, y_train)
y_pred_class = nb.predict(X_test_dtm)
Every thing runs fine till here- but as soon as I am using following code this gives error-
from sklearn.metrics import roc_curve, auc, roc_auc_score
fpr = dict()
tpr = dict()
roc_auc = dict()
for i in range(5):
fpr[i], tpr[i], _ = roc_curve(y_test[:, i], y_score[:, i])
roc_auc[i] = auc(fpr[i], tpr[i])
fpr["micro"], tpr["micro"], _ = roc_curve(y_test.ravel(), y_score.ravel())
roc_auc["micro"] = auc(fpr["micro"], tpr["micro"])
print ("ROC value is:",roc_auc["micro"])
Error is-
Traceback (most recent call last):
File "C:/Users/saurabh/PycharmProjects/getting_started/own_code.py", line 32, in print(metrics.roc_auc_score(y_test, y_pred_prob))
File "C:\Anaconda3\lib\site-packages\sklearn\metrics\ranking.py", line 260, in roc_auc_score sample_weight=sample_weight) Accuracy by this: 0.910536779324
File "C:\Anaconda3\lib\site-packages\sklearn\metrics\base.py", line 81, in _average_binary_score raise ValueError("{0} format is not supported".format(y_type))
ValueError: multiclass format is not supported