def evaluate_model(model, test_data,vectorizer): test_vectors = [] for text in test_data['sms']: tokens = bert_tokenize(text) test_vectors.append(" ".join(tokens)) test_vectors = vectorizer.transform(test_vectors) pred_probs = model.predict_proba(test_vectors)[:, 1] fpr, tpr, thresholds = roc_curve(test_data['target'], pred_probs) auc_score = roc_auc_score(test_data['target'], pred_probs) return fpr, tpr, auc_score给这个函数加上KS值
时间: 2023-11-28 15:47:38 浏览: 72
要给这个函数加上KS值,需要进行以下几个步骤:
1. 预测测试数据的标签
2. 计算预测标签为1和0的概率分布
3. 计算预测标签为1和0的累计概率分布
4. 计算KS值
下面是加上KS值的代码实现:
```
from sklearn.metrics import roc_curve, roc_auc_score
def evaluate_model(model, test_data, vectorizer):
test_vectors = []
for text in test_data['sms']:
tokens = bert_tokenize(text)
test_vectors.append(" ".join(tokens))
test_vectors = vectorizer.transform(test_vectors)
pred_probs = model.predict_proba(test_vectors)[:, 1]
fpr, tpr, thresholds = roc_curve(test_data['target'], pred_probs)
auc_score = roc_auc_score(test_data['target'], pred_probs)
ks_value = compute_ks(test_data['target'], pred_probs)
return fpr, tpr, auc_score, ks_value
def compute_ks(y_true, y_pred):
sorted_idx = np.argsort(y_pred)
cum_neg = np.cumsum(1 - y_true[sorted_idx])
cum_pos = np.cumsum(y_true[sorted_idx])
ks = np.max(cum_pos / np.sum(y_true) - cum_neg / np.sum(1 - y_true))
return ks
```
其中,`compute_ks`函数计算KS值,返回最大差值。在`evaluate_model`函数中,将KS值计算出来后一并返回。
阅读全文