Во-первых, чтобы проверить, какая метка закодирована каким номером, поместите следующее где-нибудь подходящее (например, чуть выше knn = KNeighborsClassifier(n_neighbors=3)
линия)
print(lb.classes_)
Первый выход будет соответствовать 0, второй - 1. Например, если вы получите
array(['churn', 'not churn'], dtype='<U7')
это означает, "отток": 0 и не отток: 1
Если это так, вы можете изменить свою последнюю строку следующим образом:
recall_score(lb.fit_transform(df_actual.output_feature), y_pred_knn, pos_label=0)
в основном вы говорите, что положительный ярлык - отток (поскольку отток закодирован как 0).
Однако, если «отток» закодирован как 1, вам не нужно менять последнюю строку.