LabelBinazer问题?

时间:2018-04-25 12:20:58

标签: python-3.x scikit-learn

我试图计算我的简单分类问题的敏感度分数

 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的结果。我的实际输出功能是'churn'和'not churn',对应的值为0和1.我怎么知道目标类是什么?我希望我的目标类是'churn',所以值应该是0或1,我怎么能改变它?

1 个答案:

答案 0 :(得分:0)

首先,要检查哪个标签由哪个数字编码,请将以下内容放在适当的位置(例如knn = KNeighborsClassifier(n_neighbors=3)以上 线)

print(lb.classes_)

第一个输出将匹配为0,第二个输出将匹配为1.例如,如果你得到

array(['churn', 'not churn'], dtype='<U7')

表示“churn”:0 不会流失:1

如果是这种情况,您可以将最后一行修改为:

recall_score(lb.fit_transform(df_actual.output_feature), y_pred_knn, pos_label=0)

基本上你说正面标签是流失(因为流失被编码为0)。

但是,如果“churn”编码为1,则不必更改最后一行。