accuracy = num_correct * 100.0 / len(test_images_filenames) # Show results and timing print('\nACCURACY: {:.2f}'.format(accuracy)) print('\nTOTAL TIME: {:.2f} s'.format(time.time() - start)) classes = lin_svm.classes_ # Create confusion matrix conf = confusion_matrix(test_labels, pred_class, labels=classes) # Create ROC curve and AUC score test_labels_bin = label_binarize(test_labels, classes=classes) fpr = [] tpr = [] roc_auc = [] for i in range(len(classes)): c_fpr, c_tpr, _ = roc_curve(test_labels_bin[:, i], np.array(pred_prob)[:, i]) c_roc_auc = auc(c_fpr, c_tpr) fpr.append(c_fpr) tpr.append(c_tpr) roc_auc.append(c_roc_auc) # Plot plotting.plot_confusion_matrix(conf, classes=classes, normalize=True) plotting.plot_roc_curve(fpr, tpr, roc_auc, classes=classes, title='ROC curve for linear SVM with codebook of {} words'.format(settings.codebook_size) ) print('Done.')
test_results = io.load_object('svm_denseSIFT_test_results', ignore=True) classes = io.load_object('svm_denseSIFT_classes', ignore=True) pred_results = [x[0] for x in test_results] pred_class = [x[1] for x in test_results] pred_prob = [x[2] for x in test_results] test_images_filenames, test_labels = io.load_test_set() # Create confusion matrix conf = confusion_matrix(test_labels, pred_class, labels=classes) # Create ROC curve and AUC score test_labels_bin = label_binarize(test_labels, classes=classes) fpr = [] tpr = [] roc_auc = [] for i in range(len(classes)): c_fpr, c_tpr, _ = roc_curve(test_labels_bin[:, i], np.array(pred_prob)[:, i]) c_roc_auc = auc(c_fpr, c_tpr) fpr.append(c_fpr) tpr.append(c_tpr) roc_auc.append(c_roc_auc) # Plot plotting.plot_confusion_matrix(conf, classes=classes, normalize=True) plotting.plot_roc_curve(fpr, tpr, roc_auc, classes=classes, title='ROC curve for rbf SVM with codebook of {} words'.format(K) ) print('Done.')