You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用TensorFlow.js手动创建混淆矩阵并获取预测标签?

用TensorFlow.js提取预测标签并生成混淆矩阵

提取预测标签

cnn.predict(xTest)返回的是包含每个样本类别概率的张量(以你的墨镜检测二分类任务为例,每个样本对应两个类别的概率值)。要得到预测标签,只需取每个样本概率最大的类别索引:

// 获取预测概率张量
const predictions = cnn.predict(xTest);
// 提取每个样本概率最大的类别索引(即预测标签)
const predictedLabels = tf.argMax(predictions, 1).dataSync();
// 将真实标签转为数组(若yTest是张量格式)
const trueLabels = yTest.dataSync();
// 释放张量内存,避免泄漏
predictions.dispose();

计算混淆矩阵指标

遍历真实标签和预测标签数组,统计TP、FP、TN、FN四个值(假设类别1为正类“戴墨镜”,类别0为负类“不戴墨镜”):

let tp = 0, fp = 0, tn = 0, fn = 0;

for (let i = 0; i < trueLabels.length; i++) {
  const trueLbl = trueLabels[i];
  const predLbl = predictedLabels[i];

  if (trueLbl === 1 && predLbl === 1) tp++;
  if (trueLbl === 0 && predLbl === 1) fp++;
  if (trueLbl === 0 && predLbl === 0) tn++;
  if (trueLbl === 1 && predLbl === 0) fn++;
}

// 输出混淆矩阵结果
console.log(`混淆矩阵:
真阳性(TP): ${tp} | 假阳性(FP): ${fp}
真阴性(TN): ${tn} | 假阴性(FN): ${fn}`);

特殊情况处理

如果你的真实标签yTest是one-hot编码格式,需要先转为类别索引:

const trueLabels = tf.argMax(yTest, 1).dataSync();
yTest.dispose();

内容的提问来源于stack exchange,提问作者Ero Stefano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 07:00:04