У меня есть код ниже для алгоритма 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
Буду признателен, если вы поможете мне с этим.