LabelBinazer вопросы? - PullRequest
       1

LabelBinazer вопросы?

0 голосов
/ 25 апреля 2018

Я пытался вычислить показатель чувствительности для моей простой задачи классификации

 from sklearn.metrics import confusion_matrix, accuracy_score, recall_score
 from sklearn.neighbors import KNeighborsClassifier
 from sklearn import preprocessing

 X = df.drop(columns='output_feature')
 y = df.output_feature

 lb = preprocessing.LabelBinarizer()
 y = lb.fit_transform(y).ravel()

 knn = KNeighborsClassifier(n_neighbors=3)
 knn.fit(X,y)

 y_pred_knn = knn.predict(df_prediction_input)
 recall_score(lb.fit_transform(df_actual.output_feature), y_pred_knn)

Я получил результат 0,575. Моя фактическая функция вывода - «отток» и «не отток», соответствующие значениям 0 и 1. Как я узнаю, что является целевым классом? Я хочу, чтобы моим целевым классом был "отток", поэтому значение должно быть 0 или 1, и как я могу это изменить?

1 Ответ

0 голосов
/ 26 апреля 2018

Во-первых, чтобы проверить, какая метка закодирована каким номером, поместите следующее где-нибудь подходящее (например, чуть выше 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, вам не нужно менять последнюю строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...