我试图计算我的简单分类问题的敏感度分数
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,我怎么能改变它?
答案 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,则不必更改最后一行。