我尝试为我的简单分类问题计算敏感度分数。
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,我如何才能改变它?
发布于 2018-04-26 10:52:08
首先,要检查哪个标签是由哪个数字编码的,请将以下内容放在适当的位置(例如,恰好在knn = KNeighborsClassifier(n_neighbors=3)
行的上方)
print(lb.classes_)
第一个输出将与0匹配,第二个将与1匹配。
array(['churn', 'not churn'], dtype='<U7')
意思是“”:0,not churn: 1
如果是这种情况,您应该将最后一行修改为:
recall_score(lb.fit_transform(df_actual.output_feature), y_pred_knn, pos_label=0)
基本上,您是说正标签是流失(因为流失编码为0)。
但是,如果将"churn“编码为1,则不必更改最后一行。
https://stackoverflow.com/questions/50022224
复制