ошибка в au c = roc_auc_score (y_test, probs) кодах - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть код ниже для алгоритма KNN, и я не могу найти, как исправить ошибку, которую он делает! Ошибка в строке 41: (ValueError: мультиклассовый формат не поддерживается). Он работает по двоичному пути, но делает эту ошибку мультиклассовым.

def plot_roc_curve(fpr, tpr):
    plt.plot(fpr, tpr, color='orange', label='ROC')
    plt.plot([0, 1], [0, 1], color='darkblue', linestyle='--')
    plt.xlabel('False Positive Rate')
    plt.ylabel('True Positive Rate')
    plt.title('Receiver Operating Characteristic (ROC) Curve')
    plt.legend()
    plt.show()

def minmax(data):
    norm= (data - data.min())/(data.max()-data.min())
    return norm
X = df.iloc[:, [1,2,3,4]]
y = df.iloc[:, 0]
X=minmax(X)

scaler = MinMaxScaler(feature_range=(0, 1))
X = scaler.fit_transform(X)

scores = []
cv = KFold(n_splits=10, random_state=0, shuffle=False)
i=0
for train_index, test_index in cv.split(X):
    i=i+1
    X_train, X_test, y_train, y_test = X[train_index], X[test_index], y[train_index], y[test_index]


    clf = KNeighborsClassifier(n_neighbors=1)
    clf.fit(X_train, y_train)
    y_pred = clf.predict(X_test)
    cMatrix=confusion_matrix(y_test, y_pred)
    tp=cMatrix[0,0]
    tn=cMatrix[1,1]
    fn=cMatrix[1,0]
    fp=cMatrix[0,1]
    accuracy=(tp+tn)/(tp+tn+fp+fn)
    scores.append(accuracy)
    if(i==1 or i==5):
        probs = clf.predict_proba(X_test)
        probs = probs[:, 1]
        auc = roc_auc_score(y_test, probs)
        print('AUC for Fold ',i,' is: ', auc)
        fpr, tpr, thresholds = roc_curve(y_test, probs)
        plot_roc_curve(fpr, tpr)




averageScore = sum(scores) / len(scores)
print('Average Scores= ',averageScore)

, и трассировка полного стека, которую он генерирует, выглядит следующим образом :

ValueError                                Traceback (most recent call last)
<ipython-input-4-04c26fd32c0f> in <module>
     39         probs = clf.predict_proba(X_test)
     40         probs = probs[:, 1]
---> 41         auc = roc_auc_score(y_test, probs)
     42         print('AUC for Fold ',i,' is: ', auc)
     43         fpr, tpr, thresholds = roc_curve(y_test, probs)

~\Anaconda3\lib\site-packages\sklearn\metrics\ranking.py in roc_auc_score(y_true, y_score, average, sample_weight, max_fpr)
    353     return _average_binary_score(
    354         _binary_roc_auc_score, y_true, y_score, average,
--> 355         sample_weight=sample_weight)
    356 
    357 

~\Anaconda3\lib\site-packages\sklearn\metrics\base.py in _average_binary_score(binary_metric, y_true, y_score, average, sample_weight)
     71     y_type = type_of_target(y_true)
     72     if y_type not in ("binary", "multilabel-indicator"):
---> 73         raise ValueError("{0} format is not supported".format(y_type))
     74 
     75     if y_type == "binary":

ValueError: multiclass format is not supported

Буду признателен, если вы поможете мне с этим.

...