1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | import tensorflow as tf #精确率评价指标 def metric_precision(y_true,y_pred): TP = tf.reduce_sum(y_true * tf. round (y_pred)) TN = tf.reduce_sum(( 1 - y_true) * ( 1 - tf. round (y_pred))) FP = tf.reduce_sum(( 1 - y_true) * tf. round (y_pred)) FN = tf.reduce_sum(y_true * ( 1 - tf. round (y_pred))) precision = TP / (TP + FP) return precision #召回率评价指标 def metric_recall(y_true,y_pred): TP = tf.reduce_sum(y_true * tf. round (y_pred)) TN = tf.reduce_sum(( 1 - y_true) * ( 1 - tf. round (y_pred))) FP = tf.reduce_sum(( 1 - y_true) * tf. round (y_pred)) FN = tf.reduce_sum(y_true * ( 1 - tf. round (y_pred))) recall = TP / (TP + FN) return recall #F1-score评价指标 def metric_F1score(y_true,y_pred): TP = tf.reduce_sum(y_true * tf. round (y_pred)) TN = tf.reduce_sum(( 1 - y_true) * ( 1 - tf. round (y_pred))) FP = tf.reduce_sum(( 1 - y_true) * tf. round (y_pred)) FN = tf.reduce_sum(y_true * ( 1 - tf. round (y_pred))) precision = TP / (TP + FP) recall = TP / (TP + FN) F1score = 2 * precision * recall / (precision + recall) return F1score<br><br> #编译阶段引用自定义评价指标示例 model. compile (optimizer = 'adam' , loss = 'binary_crossentropy' , metrics = [ 'accuracy' , metric_precision, metric_recall, metric_F1score]) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | # AUC for a binary classifier def auc(y_true, y_pred): ptas = tf.stack([binary_PTA(y_true,y_pred,k) for k in np.linspace( 0 , 1 , 1000 )],axis = 0 ) pfas = tf.stack([binary_PFA(y_true,y_pred,k) for k in np.linspace( 0 , 1 , 1000 )],axis = 0 ) pfas = tf.concat([tf.ones(( 1 ,)) ,pfas],axis = 0 ) binSizes = - (pfas[ 1 :] - pfas[: - 1 ]) s = ptas * binSizes return K. sum (s, axis = 0 ) #----------------------------------------------------------------------------------------------------------------------------------------------------- # PFA, prob false alert for binary classifier def binary_PFA(y_true, y_pred, threshold = K.variable(value = 0.5 )): y_pred = K.cast(y_pred > = threshold, 'float32' ) # N = total number of negative labels N = K. sum ( 1 - y_true) # FP = total number of false alerts, alerts from the negative class labels FP = K. sum (y_pred - y_pred * y_true) return FP / N #----------------------------------------------------------------------------------------------------------------------------------------------------- # P_TA prob true alerts for binary classifier def binary_PTA(y_true, y_pred, threshold = K.variable(value = 0.5 )): y_pred = K.cast(y_pred > = threshold, 'float32' ) # P = total number of positive labels P = K. sum (y_true) # TP = total number of correct alerts, alerts from the positive class labels TP = K. sum (y_pred * y_true) return TP / P #接着在模型的compile中设置metrics |
1 2 3 4 5 6 7 8 9 | # False Discovery Rate(FDR) from sklearn.metrics import confusion_matrix y_true = [ 0 , 0 , 0 , 0 , 0 , 0 ,, 1 , 1 , 1 , 1 , 1 ] y_pred = [ 0 , 0 , 0 , 0 , 0 , 0 ,, 1 , 1 , 1 , 1 , 1 ] tn, fp , fn, tp = confusion_matrix(y_true, y_pred).ravel() fdr = fp / (fp + tp) print (fdr) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律