{"id":397,"date":"2026-08-18T10:40:53","date_gmt":"2026-08-18T02:40:53","guid":{"rendered":"https:\/\/numsimlab.com\/?p=397"},"modified":"2026-08-18T10:40:53","modified_gmt":"2026-08-18T02:40:53","slug":"%e5%88%86%e7%b1%bb%e8%af%84%e4%bc%b0%e6%8c%87%e6%a0%87%e5%ae%8c%e6%95%b4%e6%8c%87%e5%8d%97","status":"publish","type":"post","link":"https:\/\/numsimlab.com\/?p=397","title":{"rendered":"\u5206\u7c7b\u8bc4\u4f30\u6307\u6807\u5b8c\u6574\u6307\u5357"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"zh-CN\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>\u5206\u7c7b\u8bc4\u4f30\u6307\u6807\u5b8c\u6574\u6307\u5357 \u00b7 Classification Metrics Guide<\/title>\n<style>\n*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}\nhtml{scroll-behavior:smooth}\n:root{\n  --bg:#f8f9fa;--bg2:#fff;--ink:#1a1a2e;--muted:#6c7086;--rule:#e2e4eb;\n  --accent:#2563eb;--accent2:#16a34a;--accent3:#dc2626;--accent4:#d97706;--accent5:#7c3aed;\n  --card-bg:#fff;--code-bg:#f1f3f5;--nav-bg:rgba(255,255,255,0.85);\n  --cm-tp:#dbeafe;--cm-tp-t:#1e40af;--cm-fp:#fef9c3;--cm-fp-t:#713f12;\n  --cm-fn:#fee2e2;--cm-fn-t:#991b1b;--cm-tn:#dcfce7;--cm-tn-t:#166534;\n  --tag-g:#dcfce7;--tag-g-t:#166534;--tag-b:#dbeafe;--tag-b-t:#1e40af;\n  --tag-r:#fee2e2;--tag-r-t:#991b1b;--tag-y:#fef9c3;--tag-y-t:#713f12;--tag-p:#f3e8ff;--tag-p-t:#581c87;\n  --shadow:0 1px 3px rgba(0,0,.08);--radius:8px;--max-w:940px\n}\n[data-theme=\"dark\"]{\n  --bg:#0b0b1a;--bg2:#16162a;--ink:#e2e4f0;--muted:#7f8396;--rule:#26263e;\n  --accent:#60a5fa;--accent2:#4ade80;--accent3:#f87171;--accent4:#fbbf24;--accent5:#a78bfa;\n  --card-bg:#16162a;--code-bg:#1e1e36;--nav-bg:rgba(22,22,42,0.85);\n  --cm-tp:#1e3a5f;--cm-tp-t:#bfdbfe;--cm-fp:#713f12;--cm-fp-t:#fef08a;\n  --cm-fn:#7f1d1d;--cm-fn-t:#fecaca;--cm-tn:#14532d;--cm-tn-t:#bbf7d0;\n  --tag-g:#14532d;--tag-g-t:#bbf7d0;--tag-b:#1e3a5f;--tag-b-t:#bfdbfe;\n  --tag-r:#7f1d1d;--tag-r-t:#fecaca;--tag-y:#713f12;--tag-y-t:#fef08a;\n  --tag-p:#3b1f6e;--tag-p-t:#e9d5ff;\n  --shadow:0 1px 3px rgba(0,0,.3)\n}\nbody{font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",\"Noto Sans SC\",\"PingFang SC\",\"Microsoft YaHei\",sans-serif;background:var(--bg);color:var(--ink);line-height:1.7;font-size:15px;transition:background .3s,color .3s}\n.progress-bar{position:fixed;top:0;left:0;height:3px;background:linear-gradient(90deg,var(--accent),var(--accent5));width:0;z-index:200;transition:width .1s}\nheader{position:fixed;top:0;left:0;right:0;z-index:100;background:var(--nav-bg);border-bottom:1px solid var(--rule);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);transition:background .3s}\n.header-inner{max-width:var(--max-w);margin:0 auto;display:flex;align-items:center;justify-content:space-between;padding:0 1.5rem;height:56px}\n.logo{font-weight:700;font-size:.95rem;color:var(--accent);display:flex;align-items:center;gap:.4rem}\n.controls{display:flex;align-items:center;gap:.5rem}\n.lang-switch{display:flex;border:1px solid var(--rule);border-radius:6px;overflow:hidden}\n.lang-switch button{background:0 0;border:none;color:var(--muted);padding:.3rem .7rem;font-size:.8rem;cursor:pointer;transition:all .2s;font-family:inherit}\n.lang-switch button.active{background:var(--accent);color:#fff}\n.lang-switch button:not(.active):hover{color:var(--ink);background:var(--rule)}\n.theme-toggle{background:0 0;border:1px solid var(--rule);border-radius:6px;color:var(--muted);width:34px;height:34px;font-size:1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}\n.theme-toggle:hover{color:var(--ink);background:var(--rule)}\nmain{max-width:var(--max-w);margin:0 auto;padding:80px 1.5rem 3rem}\n.lang-section{display:none}.lang-section.active{display:block}\nh1{font-size:1.9rem;font-weight:800;line-height:1.3;margin-bottom:.5rem;letter-spacing:-.02em}\nh1 .sub{display:block;font-size:.85rem;font-weight:400;color:var(--muted);margin-top:.25rem;letter-spacing:0}\nh2{font-size:1.35rem;font-weight:700;margin:2.5rem 0 1rem;padding-bottom:.5rem;border-bottom:2px solid var(--accent);letter-spacing:-.01em}\nh3{font-size:1.05rem;font-weight:600;margin:1.5rem 0 .6rem;color:var(--accent)}\nh4{font-size:.95rem;font-weight:600;margin:1rem 0 .4rem;color:var(--ink)}\np{margin-bottom:.8rem}\na{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}\n.hero{text-align:center;padding:2rem 0 1rem}\n.hero p{font-size:1rem;color:var(--muted);max-width:700px;margin:0 auto}\n.tag{display:inline-block;padding:.12rem .5rem;border-radius:4px;font-size:.72rem;font-weight:600;margin-right:.25rem;white-space:nowrap}\n.tag-g{background:var(--tag-g);color:var(--tag-g-t)}.tag-b{background:var(--tag-b);color:var(--tag-b-t)}\n.tag-r{background:var(--tag-r);color:var(--tag-r-t)}.tag-y{background:var(--tag-y);color:var(--tag-y-t)}.tag-p{background:var(--tag-p);color:var(--tag-p-t)}\n.card{background:var(--card-bg);border:1px solid var(--rule);border-radius:var(--radius);padding:1.25rem;margin-bottom:1rem;box-shadow:var(--shadow)}\n.info-box{background:var(--bg);border-left:4px solid var(--accent);padding:.9rem 1.1rem;margin:1rem 0;border-radius:0 var(--radius) var(--radius) 0;font-size:.88rem}\n.info-box strong{color:var(--accent)}\n.info-box.warn{border-left-color:var(--accent4)}.info-box.warn strong{color:var(--accent4)}\n.info-box.danger{border-left-color:var(--accent3)}.info-box.danger strong{color:var(--accent3)}\n.info-box.success{border-left-color:var(--accent2)}.info-box.success strong{color:var(--accent2)}\n.toc{background:var(--card-bg);border:1px solid var(--rule);border-radius:var(--radius);padding:1.15rem 1.4rem;margin-bottom:2rem;box-shadow:var(--shadow)}\n.toc h3{margin:0 0 .5rem;font-size:.9rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}\n.toc ol{padding-left:1.1rem;columns:2;column-gap:2rem}\n.toc li{margin-bottom:.25rem;font-size:.88rem}.toc a{color:var(--ink)}.toc a:hover{color:var(--accent);text-decoration:none}\npre.code-block{background:var(--code-bg);padding:.85rem 1rem;border-radius:var(--radius);overflow-x:auto;font-family:\"SF Mono\",Consolas,\"Courier New\",monospace;font-size:.82rem;line-height:1.5;margin:.6rem 0;border:1px solid var(--rule)}\ncode,.inline-code{background:var(--code-bg);padding:.12rem .4rem;border-radius:4px;font-family:\"SF Mono\",Consolas,\"Courier New\",monospace;font-size:.83rem;border:1px solid var(--rule)}\n.table-wrap{overflow-x:auto;margin:1.2rem 0}\ntable{width:100%;border-collapse:collapse;font-size:.82rem}\ntable caption{caption-side:top;text-align:center;font-size:.8rem;color:var(--muted);margin-bottom:.5rem;font-weight:600}\nthead th{background:var(--accent);color:#fff;padding:.6rem .5rem;text-align:center;font-weight:600;white-space:nowrap}\nthead th:first-child{border-radius:6px 0 0 0}thead th:last-child{border-radius:0 6px 0 0}\ntbody td{padding:.55rem .5rem;border-bottom:1px solid var(--rule);text-align:center;vertical-align:middle}\ntbody tr:nth-child(even){background:var(--bg)}\ntbody td:first-child{text-align:left;font-weight:600}\n.steps{counter-reset:step;list-style:none;padding:0}\n.steps li{counter-increment:step;position:relative;padding:.85rem 1rem .85rem 2.8rem;margin-bottom:.5rem;border-left:2px solid var(--rule);border-radius:0 var(--radius) var(--radius) 0;background:var(--card-bg);box-shadow:var(--shadow)}\n.steps li::before{content:counter(step);position:absolute;left:-13px;top:.85rem;width:26px;height:26px;border-radius:50%;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-size:.78rem;font-weight:700}\n.steps li .note{display:block;color:var(--muted);font-size:.82rem;margin-top:.2rem}\n.flow-diagram{background:var(--card-bg);border:1px solid var(--rule);border-radius:var(--radius);padding:1.25rem;margin:1.25rem 0;text-align:center;box-shadow:var(--shadow)}\n.flow-row{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:.35rem;margin:.4rem 0}\n.flow-item{display:inline-block;padding:.4rem .8rem;border-radius:6px;font-weight:600;font-size:.82rem;text-align:center;background:var(--accent);color:#fff;min-width:60px}\n.flow-item.green{background:var(--accent2)}.flow-item.red{background:var(--accent3)}.flow-item.yellow{background:var(--accent4);color:#1a1a2e}.flow-item.purple{background:var(--accent5)}\n.flow-arrow{color:var(--muted);font-size:1rem}\n.cmd-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:.75rem;margin:1rem 0}\n.cmd-card{background:var(--card-bg);border:1px solid var(--rule);border-radius:var(--radius);padding:.9rem;box-shadow:var(--shadow)}\n.cmd-card h4{margin:0 0 .35rem;font-size:.88rem;color:var(--accent)}\n.cmd-card .desc{font-size:.8rem;color:var(--muted)}\n.two-col{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem;margin:1.25rem 0}\n.col{background:var(--card-bg);border:1px solid var(--rule);border-radius:var(--radius);padding:1.25rem;box-shadow:var(--shadow)}\n.col h4{margin-top:0}\n.compare-box{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin:1rem 0}\n.compare-col{background:var(--card-bg);border:1px solid var(--rule);border-radius:var(--radius);padding:1rem;box-shadow:var(--shadow)}\n.compare-col h4{margin:0 0 .4rem;font-size:.88rem}\n.compare-col.bad h4{color:var(--accent3)}\n.compare-col.good h4{color:var(--accent2)}\n.metric-badge{display:inline-flex;align-items:center;gap:.3rem;padding:.2rem .6rem;border-radius:4px;font-size:.78rem;font-weight:600;margin:0 .15rem}\n.metric-badge.acc{background:var(--tag-b);color:var(--tag-b-t)}\n.metric-badge.pre{background:var(--tag-g);color:var(--tag-g-t)}\n.metric-badge.rec{background:var(--tag-y);color:var(--tag-y-t)}\n.metric-badge.f1{background:var(--tag-p);color:var(--tag-p-t)}\n\/* Confusion Matrix *\/\n.cm-table{display:grid;grid-template-columns:auto 1fr 1fr;gap:0;max-width:480px;margin:1.5rem auto;border-radius:var(--radius);overflow:hidden;border:1px solid var(--rule);box-shadow:var(--shadow)}\n.cm-cell{padding:.8rem .6rem;text-align:center;font-size:.82rem;border:1px solid var(--rule)}\n.cm-corner{background:var(--bg);font-weight:700;color:var(--muted);font-size:.78rem}\n.cm-axis{background:var(--bg);font-weight:700;color:var(--accent);font-size:.78rem;padding:.4rem}\n.cm-tp{background:var(--cm-tp);color:var(--cm-tp-t);font-weight:700;font-size:1.1rem}\n.cm-fp{background:var(--cm-fp);color:var(--cm-fp-t);font-weight:700;font-size:1.1rem}\n.cm-fn{background:var(--cm-fn);color:var(--cm-fn-t);font-weight:700;font-size:1.1rem}\n.cm-tn{background:var(--cm-tn);color:var(--cm-tn-t);font-weight:700;font-size:1.1rem}\n.cm-label{font-size:.72rem;color:var(--muted);display:block;margin-top:.2rem;font-weight:400}\n\/* Formula box *\/\n.formula-box{background:var(--card-bg);border:2px solid var(--accent);border-radius:var(--radius);padding:1.25rem;margin:1rem 0;text-align:center;box-shadow:var(--shadow)}\n.formula-box .formula{font-family:\"SF Mono\",Consolas,\"Courier New\",monospace;font-size:1rem;color:var(--ink);font-weight:600}\n.formula-box .formula-name{font-size:.82rem;color:var(--muted);margin-bottom:.5rem}\n\/* Metric bar *\/\n.metric-bar-container{background:var(--card-bg);border:1px solid var(--rule);border-radius:var(--radius);padding:1.25rem;margin:1rem 0;box-shadow:var(--shadow)}\n.metric-bar{display:flex;align-items:center;gap:.75rem;margin-bottom:.6rem}\n.metric-bar:last-child{margin-bottom:0}\n.metric-bar .label{font-size:.82rem;font-weight:600;width:90px;flex-shrink:0}\n.metric-bar .bar-bg{flex:1;height:24px;background:var(--bg);border-radius:4px;overflow:hidden;border:1px solid var(--rule)}\n.metric-bar .bar-fill{height:100%;border-radius:4px;display:flex;align-items:center;justify-content:flex-end;padding-right:.5rem;color:#fff;font-size:.75rem;font-weight:700;transition:width .5s ease}\n.metric-bar .value{font-size:.82rem;font-weight:700;width:50px;text-align:right;flex-shrink:0}\n\/* Scenario cards *\/\n.scenario-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1rem;margin:1rem 0}\n.scenario-card{background:var(--card-bg);border:1px solid var(--rule);border-radius:var(--radius);padding:1.1rem;box-shadow:var(--shadow);border-top:4px solid var(--accent)}\n.scenario-card.spam{border-top-color:var(--accent4)}\n.scenario-card.medical{border-top-color:var(--accent3)}\n.scenario-card.search{border-top-color:var(--accent)}\n.scenario-card.fraud{border-top-color:var(--accent5)}\n.scenario-card h4{margin:0 0 .4rem;font-size:.9rem}\n.scenario-card .priority{font-size:.78rem;color:var(--muted);margin-bottom:.3rem}\n.scenario-card .reason{font-size:.8rem;color:var(--muted)}\n\/* Python terminal *\/\n.terminal{background:#1a1a2e;color:#a8e6cf;border-radius:var(--radius);padding:.9rem 1rem;font-family:\"SF Mono\",Consolas,\"Courier New\",monospace;font-size:.82rem;line-height:1.6;margin:.6rem 0;overflow-x:auto;border:1px solid #333}\n.terminal .prompt{color:#60a5fa}.terminal .comment{color:#6c7086;font-style:italic}.terminal .output{color:#e2e4f0}.terminal .keyword{color:#c792ea}.terminal .string{color:#c3e88d}\n[data-theme=\"dark\"] .terminal{background:#08081a}\nfigure{text-align:center;margin:1.5rem 0}\nfigcaption{font-size:.8rem;color:var(--muted);margin-top:.5rem}\nsup a{color:var(--accent);text-decoration:none;font-size:.75em;font-weight:600}\nsup a:hover{text-decoration:underline}\nfooter{border-top:2px solid var(--rule);margin-top:3rem;padding-top:1.5rem}\nfooter .sources h2{font-size:1.1rem;border-bottom:none;margin-bottom:.8rem}\nfooter .sources ol{padding-left:1.2rem;font-size:.85rem;color:var(--muted)}\nfooter .sources li{margin-bottom:.5rem;overflow-wrap:break-word;word-break:break-all}\nfooter .sources .src-title{color:var(--ink);word-break:normal}\nfooter .sources .src-url{display:block;margin-top:.15rem;font-size:.82rem;color:var(--accent);word-break:break-all}\nfooter .sources a{word-break:break-all}\n.back-top{position:fixed;bottom:2rem;right:2rem;width:42px;height:42px;border-radius:50%;background:var(--accent);color:#fff;border:none;cursor:pointer;font-size:1.2rem;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .3s,transform .3s;z-index:99;box-shadow:var(--shadow)}\n.back-top.visible{opacity:1;transform:translateY(0)}\n.back-top:hover{transform:translateY(-3px)}\n@media(max-width:640px){\n  h1{font-size:1.4rem}.toc ol{columns:1}.header-inner{padding:0 1rem}main{padding:72px 1rem 2rem}\n  .steps li{padding-left:2.4rem}.steps li::before{left:-11px;width:22px;height:22px;font-size:.7rem}\n  .two-col{grid-template-columns:1fr}.cmd-grid{grid-template-columns:1fr}.compare-box{grid-template-columns:1fr}\n  .scenario-grid{grid-template-columns:1fr}\n  .cm-table{max-width:100%}\n}\n<\/style>\n<\/head>\n<body>\n<div class=\"progress-bar\" id=\"progressBar\"><\/div>\n<header>\n  <div class=\"header-inner\">\n    <div class=\"logo\"><span>\ud83d\udcca<\/span> \u5206\u7c7b\u8bc4\u4f30\u6307\u6807<\/div>\n    <div class=\"controls\">\n      <div class=\"lang-switch\">\n        <button class=\"active\" onclick=\"setLang('zh')\" id=\"btn-zh\">\u4e2d\u6587<\/button>\n        <button onclick=\"setLang('en')\" id=\"btn-en\">English<\/button>\n      <\/div>\n      <button class=\"theme-toggle\" onclick=\"toggleTheme()\" title=\"\u5207\u6362\u660e\u6697\u4e3b\u9898\">&#9788;<\/button>\n    <\/div>\n  <\/div>\n<\/header>\n<main>\n\n<!-- ======== \u4e2d\u6587\u7248 ======== -->\n<div class=\"lang-section active\" id=\"lang-zh\">\n<div class=\"hero\">\n  <h1>\u5206\u7c7b\u8bc4\u4f30\u6307\u6807\u5b8c\u6574\u6307\u5357<span class=\"sub\">\u4ece\u6df7\u6dc6\u77e9\u9635\u5230 Accuracy\u3001Precision\u3001Recall\u3001F1-score \u7684\u5168\u9762\u89e3\u6790<\/span><\/h1>\n  <p>\u7406\u89e3\u673a\u5668\u5b66\u4e60\u5206\u7c7b\u4efb\u52a1\u4e2d\u56db\u5927\u6838\u5fc3\u8bc4\u4f30\u6307\u6807\u7684\u539f\u7406\u3001\u516c\u5f0f\u3001\u9002\u7528\u573a\u666f\u4e0e\u6743\u8861\u5173\u7cfb<\/p>\n<\/div>\n\n<div class=\"toc\">\n  <h3>\u76ee\u5f55<\/h3>\n  <ol>\n    <li><a href=\"#zh-1\">\u4e00\u3001\u6982\u8ff0\uff1a\u4e3a\u4ec0\u4e48\u9700\u8981\u8bc4\u4f30\u6307\u6807<\/a><\/li>\n    <li><a href=\"#zh-2\">\u4e8c\u3001\u6df7\u6dc6\u77e9\u9635\uff1a\u4e00\u5207\u7684\u57fa\u7840<\/a><\/li>\n    <li><a href=\"#zh-3\">\u4e09\u3001Accuracy\uff08\u51c6\u786e\u7387\uff09<\/a><\/li>\n    <li><a href=\"#zh-4\">\u56db\u3001Precision\uff08\u7cbe\u786e\u7387\uff09<\/a><\/li>\n    <li><a href=\"#zh-5\">\u4e94\u3001Recall\uff08\u53ec\u56de\u7387\uff09<\/a><\/li>\n    <li><a href=\"#zh-6\">\u516d\u3001F1-score\uff08F1 \u5206\u6570\uff09<\/a><\/li>\n    <li><a href=\"#zh-7\">\u4e03\u3001\u6307\u6807\u95f4\u7684\u5173\u7cfb\u4e0e\u6743\u8861<\/a><\/li>\n    <li><a href=\"#zh-8\">\u516b\u3001\u4e0d\u5747\u8861\u6570\u636e\u96c6\u7684\u6311\u6218<\/a><\/li>\n    <li><a href=\"#zh-9\">\u4e5d\u3001\u591a\u5206\u7c7b\u573a\u666f\u6269\u5c55<\/a><\/li>\n    <li><a href=\"#zh-10\">\u5341\u3001\u5b9e\u9645\u5e94\u7528\u6307\u5357\u4e0e\u4ee3\u7801\u793a\u4f8b<\/a><\/li>\n  <\/ol>\n<\/div>\n\n<!-- \u4e00\u3001\u6982\u8ff0 -->\n<h2 id=\"zh-1\">\u4e00\u3001\u6982\u8ff0\uff1a\u4e3a\u4ec0\u4e48\u9700\u8981\u8bc4\u4f30\u6307\u6807<\/h2>\n\n<p>\u5728\u673a\u5668\u5b66\u4e60\u7684\u5206\u7c7b\u4efb\u52a1\u4e2d\uff0c\u6a21\u578b\u9884\u6d4b\u7684\u7ed3\u679c\u9700\u8981\u7528\u5ba2\u89c2\u3001\u91cf\u5316\u7684\u6307\u6807\u6765\u8bc4\u4f30\u597d\u574f\u3002\u4ec5\u4ec5\u77e5\u9053&#8221;\u6a21\u578b\u9884\u6d4b\u4e86 95 \u4e2a\u6b63\u786e&#8221;\u662f\u4e0d\u591f\u7684\u2014\u2014\u6211\u4eec\u9700\u8981\u77e5\u9053\u5b83\u5728<strong>\u6b63\u7c7b<\/strong>\u548c<strong>\u8d1f\u7c7b<\/strong>\u4e0a\u5206\u522b\u8868\u73b0\u5982\u4f55\uff0c\u662f\u5426\u504f\u5411\u67d0\u4e00\u7c7b\uff0c\u4ee5\u53ca\u5728\u7279\u5b9a\u4e1a\u52a1\u573a\u666f\u4e0b\u662f\u5426\u6ee1\u8db3\u8981\u6c42<sup><a href=\"#cite-1\">[1]<\/a><\/sup>\u3002<\/p>\n\n<div class=\"info-box\">\n  <strong>\u6838\u5fc3\u95ee\u9898\uff1a<\/strong>\u4e0d\u540c\u6307\u6807\u8861\u91cf\u7684\u662f\u6a21\u578b\u6027\u80fd\u7684\u4e0d\u540c\u7ef4\u5ea6\u3002\u6ca1\u6709&#8221;\u4e07\u80fd\u6307\u6807&#8221;\u2014\u2014\u9009\u62e9\u54ea\u4e2a\u6307\u6807\u53d6\u51b3\u4e8e\u5177\u4f53\u7684\u4e1a\u52a1\u573a\u666f\u3001\u6570\u636e\u5206\u5e03\u548c\u4ee3\u4ef7\u6743\u8861\u3002\u7406\u89e3\u6bcf\u4e2a\u6307\u6807\u7684<strong>\u5b9a\u4e49\u3001\u9002\u7528\u6761\u4ef6\u548c\u5c40\u9650\u6027<\/strong>\u662f\u6b63\u786e\u8bc4\u4f30\u6a21\u578b\u7684\u524d\u63d0\u3002\n<\/div>\n\n<h3>1.1 \u56db\u5927\u6838\u5fc3\u6307\u6807\u901f\u89c8<\/h3>\n\n<div class=\"cmd-grid\">\n  <div class=\"cmd-card\">\n    <h4><span class=\"metric-badge acc\">Accuracy<\/span><\/h4>\n    <span class=\"desc\">\u6574\u4f53\u9884\u6d4b\u6b63\u786e\u7387\u3002\u6240\u6709\u9884\u6d4b\u4e2d\u6b63\u786e\u7684\u6bd4\u4f8b\u3002\u76f4\u89c2\u4f46\u60e7\u6015\u6570\u636e\u4e0d\u5747\u8861\u3002<\/span>\n  <\/div>\n  <div class=\"cmd-card\">\n    <h4><span class=\"metric-badge pre\">Precision<\/span><\/h4>\n    <span class=\"desc\">\u67e5\u51c6\u7387\u3002\u9884\u6d4b\u4e3a\u6b63\u7684\u6837\u672c\u4e2d\uff0c\u771f\u6b63\u4e3a\u6b63\u7684\u6bd4\u4f8b\u3002\u5173\u6ce8&#8221;\u9884\u6d4b\u7684\u7eaf\u5ea6&#8221;\u3002<\/span>\n  <\/div>\n  <div class=\"cmd-card\">\n    <h4><span class=\"metric-badge rec\">Recall<\/span><\/h4>\n    <span class=\"desc\">\u67e5\u5168\u7387\u3002\u5b9e\u9645\u4e3a\u6b63\u7684\u6837\u672c\u4e2d\uff0c\u88ab\u6b63\u786e\u9884\u6d4b\u7684\u6bd4\u4f8b\u3002\u5173\u6ce8&#8221;\u662f\u5426\u6f0f\u6389&#8221;\u3002<\/span>\n  <\/div>\n  <div class=\"cmd-card\">\n    <h4><span class=\"metric-badge f1\">F1-score<\/span><\/h4>\n    <span class=\"desc\">\u7cbe\u786e\u7387\u4e0e\u53ec\u56de\u7387\u7684\u8c03\u548c\u5e73\u5747\u3002\u7efc\u5408\u5e73\u8861\u4e24\u8005\u7684\u5355\u4e00\u6307\u6807\u3002<\/span>\n  <\/div>\n<\/div>\n\n<figure id=\"fig-1\">\n  <div class=\"flow-diagram\" style=\"border:none;box-shadow:none;padding:0\">\n    <div class=\"flow-row\">\n      <span class=\"flow-item purple\">\u6df7\u6dc6\u77e9\u9635<\/span>\n      <span class=\"flow-arrow\">\u2192<\/span>\n      <span class=\"flow-item\">TP \/ TN \/ FP \/ FN<\/span>\n    <\/div>\n    <div class=\"flow-row\" style=\"margin-top:.5rem\">\n      <span class=\"flow-arrow\">\u2193<\/span>\n    <\/div>\n    <div class=\"flow-row\">\n      <span class=\"flow-item\">Accuracy<\/span>\n      <span class=\"flow-arrow\">\u00b7<\/span>\n      <span class=\"flow-item green\">Precision<\/span>\n      <span class=\"flow-arrow\">\u00b7<\/span>\n      <span class=\"flow-item yellow\">Recall<\/span>\n      <span class=\"flow-arrow\">\u00b7<\/span>\n      <span class=\"flow-item purple\">F1<\/span>\n    <\/div>\n  <\/div>\n  <figcaption><strong>\u56fe 1<\/strong> \u56db\u5927\u8bc4\u4f30\u6307\u6807\u5747\u7531\u6df7\u6dc6\u77e9\u9635\u4e2d\u7684\u56db\u4e2a\u57fa\u672c\u91cf\u63a8\u5bfc\u800c\u6765<\/figcaption>\n<\/figure>\n\n<!-- \u4e8c\u3001\u6df7\u6dc6\u77e9\u9635 -->\n<h2 id=\"zh-2\">\u4e8c\u3001\u6df7\u6dc6\u77e9\u9635\uff1a\u4e00\u5207\u7684\u57fa\u7840<\/h2>\n\n<p><strong>\u6df7\u6dc6\u77e9\u9635<\/strong>\uff08Confusion Matrix\uff09\u662f\u4e00\u4e2a 2\u00d72 \u7684\u8868\u683c\uff0c\u5c06\u6a21\u578b\u9884\u6d4b\u7ed3\u679c\u4e0e\u771f\u5b9e\u6807\u7b7e\u4ea4\u53c9\u5bf9\u6bd4\uff0c\u4ea7\u751f\u56db\u4e2a\u57fa\u672c\u91cf\u3002\u6240\u6709\u8bc4\u4f30\u6307\u6807\u90fd\u4ece\u8fd9\u56db\u4e2a\u91cf\u63a8\u5bfc\u800c\u6765<sup><a href=\"#cite-2\">[2]<\/a><\/sup>\u3002<\/p>\n\n<h3>2.1 \u56db\u4e2a\u57fa\u672c\u91cf<\/h3>\n\n<div class=\"cm-table\">\n  <div class=\"cm-cell cm-corner\"><\/div>\n  <div class=\"cm-cell cm-axis\">\u9884\u6d4b\u4e3a\u6b63<\/div>\n  <div class=\"cm-cell cm-axis\">\u9884\u6d4b\u4e3a\u8d1f<\/div>\n\n  <div class=\"cm-cell cm-axis\">\u5b9e\u9645\u4e3a\u6b63<\/div>\n  <div class=\"cm-cell cm-tp\">TP<span class=\"cm-label\">True Positive<\/span><\/div>\n  <div class=\"cm-cell cm-fn\">FN<span class=\"cm-label\">False Negative<\/span><\/div>\n\n  <div class=\"cm-cell cm-axis\">\u5b9e\u9645\u4e3a\u8d1f<\/div>\n  <div class=\"cm-cell cm-fp\">FP<span class=\"cm-label\">False Positive<\/span><\/div>\n  <div class=\"cm-cell cm-tn\">TN<span class=\"cm-label\">True Negative<\/span><\/div>\n<\/div>\n\n<div class=\"table-wrap\">\n  <table>\n    <caption><strong>\u8868 1<\/strong> \u6df7\u6dc6\u77e9\u9635\u56db\u4e2a\u57fa\u672c\u91cf\u7684\u542b\u4e49<\/caption>\n    <thead>\n      <tr><th>\u7b26\u53f7<\/th><th>\u540d\u79f0<\/th><th>\u542b\u4e49<\/th><th>\u901a\u4fd7\u7406\u89e3<\/th><\/tr>\n    <\/thead>\n    <tbody>\n      <tr><td><strong>TP<\/strong><\/td><td>True Positive<\/td><td>\u5b9e\u9645\u4e3a\u6b63\uff0c\u9884\u6d4b\u4e3a\u6b63<\/td><td>\u6b63\u786e\u53d1\u73b0\uff08\u547d\u4e2d\uff09<\/td><\/tr>\n      <tr><td><strong>TN<\/strong><\/td><td>True Negative<\/td><td>\u5b9e\u9645\u4e3a\u8d1f\uff0c\u9884\u6d4b\u4e3a\u8d1f<\/td><td>\u6b63\u786e\u6392\u9664\uff08\u6b63\u786e\u62d2\u7edd\uff09<\/td><\/tr>\n      <tr><td><strong>FP<\/strong><\/td><td>False Positive<\/td><td>\u5b9e\u9645\u4e3a\u8d1f\uff0c\u9884\u6d4b\u4e3a\u6b63<\/td><td>\u8bef\u62a5\uff08\u5047\u9633\u6027 \/ Type I \u9519\u8bef\uff09<\/td><\/tr>\n      <tr><td><strong>FN<\/strong><\/td><td>False Negative<\/td><td>\u5b9e\u9645\u4e3a\u6b63\uff0c\u9884\u6d4b\u4e3a\u8d1f<\/td><td>\u6f0f\u62a5\uff08\u5047\u9634\u6027 \/ Type II \u9519\u8bef\uff09<\/td><\/tr>\n    <\/tbody>\n  <\/table>\n<\/div>\n\n<h3>2.2 \u8bb0\u5fc6\u53e3\u8bc0<\/h3>\n\n<div class=\"card\">\n  <h4>\u901f\u8bb0\u89c4\u5219<\/h4>\n  <p><strong>T \/ F<\/strong> = \u9884\u6d4b\u662f\u5426<strong>\u6b63\u786e<\/strong>\uff08True = \u5bf9\u4e86\uff0cFalse = \u9519\u4e86\uff09<\/p>\n  <p><strong>P \/ N<\/strong> = \u6a21\u578b\u7684<strong>\u9884\u6d4b\u7c7b\u522b<\/strong>\uff08Positive = \u9884\u6d4b\u4e3a\u6b63\uff0cNegative = \u9884\u6d4b\u4e3a\u8d1f\uff09<\/p>\n  <p>\u7ec4\u5408\u8d77\u6765\uff1a<strong>TP<\/strong> = \u9884\u6d4b\u6b63\u786e\u4e14\u9884\u6d4b\u4e3a\u6b63\uff1b<strong>FP<\/strong> = \u9884\u6d4b\u9519\u8bef\u4e14\u9884\u6d4b\u4e3a\u6b63\uff08\u5b9e\u9645\u4e0a\u662f\u8d1f\uff09\u3002<\/p>\n<\/div>\n\n<div class=\"info-box success\">\n  <strong>\u5173\u952e\u5173\u7cfb\uff1a<\/strong>\u6837\u672c\u603b\u6570 = TP + TN + FP + FN\u3002\u5176\u4e2d <strong>TP + FN<\/strong> = \u5b9e\u9645\u6b63\u7c7b\u603b\u6570\uff0c<strong>TP + FP<\/strong> = \u9884\u6d4b\u6b63\u7c7b\u603b\u6570\u3002\u8fd9\u4e24\u4e2a\u5173\u7cfb\u662f\u63a8\u5bfc\u6240\u6709\u6307\u6807\u7684\u57fa\u77f3\u3002\n<\/div>\n\n<!-- \u4e09\u3001Accuracy -->\n<h2 id=\"zh-3\">\u4e09\u3001Accuracy\uff08\u51c6\u786e\u7387\uff09<\/h2>\n\n<p><strong>Accuracy<\/strong>\uff08\u51c6\u786e\u7387\uff09\u662f\u6700\u76f4\u89c2\u7684\u8bc4\u4f30\u6307\u6807\uff0c\u8868\u793a\u6240\u6709\u6837\u672c\u4e2d\u6a21\u578b\u9884\u6d4b\u6b63\u786e\u7684\u6bd4\u4f8b<sup><a href=\"#cite-3\">[3]<\/a><\/sup>\u3002<\/p>\n\n<div class=\"formula-box\">\n  <div class=\"formula-name\">Accuracy \u516c\u5f0f<\/div>\n  <div class=\"formula\">Accuracy = (TP + TN) \/ (TP + TN + FP + FN)<\/div>\n<\/div>\n\n<h3>3.1 \u76f4\u89c2\u7406\u89e3<\/h3>\n\n<p>Accuracy \u56de\u7b54\u7684\u95ee\u9898\u662f\uff1a<strong>&#8220;\u6a21\u578b\u6574\u4f53\u8868\u73b0\u5982\u4f55\uff1f&#8221;<\/strong> \u5b83\u5c06\u6b63\u7c7b\u548c\u8d1f\u7c7b\u7684\u6b63\u786e\u9884\u6d4b\u4e00\u89c6\u540c\u4ec1\u5730\u8ba1\u5165\u5206\u5b50\uff0c\u662f\u552f\u4e00\u540c\u65f6\u8003\u8651 TN \u7684\u6307\u6807\u3002<\/p>\n\n<figure id=\"fig-2\">\n  <div class=\"metric-bar-container\" style=\"border:none;box-shadow:none;padding:0\">\n    <div class=\"metric-bar\">\n      <span class=\"label\">TP (60)<\/span>\n      <div class=\"bar-bg\"><div class=\"bar-fill\" style=\"width:60%;background:var(--accent)\">\u547d\u4e2d<\/div><\/div>\n      <span class=\"value\">60<\/span>\n    <\/div>\n    <div class=\"metric-bar\">\n      <span class=\"label\">TN (30)<\/span>\n      <div class=\"bar-bg\"><div class=\"bar-fill\" style=\"width:30%;background:var(--accent2)\">\u6b63\u786e\u6392\u9664<\/div><\/div>\n      <span class=\"value\">30<\/span>\n    <\/div>\n    <div class=\"metric-bar\">\n      <span class=\"label\">FP (5)<\/span>\n      <div class=\"bar-bg\"><div class=\"bar-fill\" style=\"width:5%;background:var(--accent4)\">\u8bef\u62a5<\/div><\/div>\n      <span class=\"value\">5<\/span>\n    <\/div>\n    <div class=\"metric-bar\">\n      <span class=\"label\">FN (5)<\/span>\n      <div class=\"bar-bg\"><div class=\"bar-fill\" style=\"width:5%;background:var(--accent3)\">\u6f0f\u62a5<\/div><\/div>\n      <span class=\"value\">5<\/span>\n    <\/div>\n    <div class=\"metric-bar\" style=\"margin-top:.8rem;border-top:1px solid var(--rule);padding-top:.6rem\">\n      <span class=\"label\" style=\"color:var(--accent)\">Accuracy<\/span>\n      <div class=\"bar-bg\"><div class=\"bar-fill\" style=\"width:90%;background:var(--accent)\">90 \/ 100<\/div><\/div>\n      <span class=\"value\" style=\"color:var(--accent)\">90%<\/span>\n    <\/div>\n  <\/div>\n  <figcaption><strong>\u56fe 2<\/strong> Accuracy \u793a\u4f8b\uff1a100 \u4e2a\u6837\u672c\u4e2d 90 \u4e2a\u9884\u6d4b\u6b63\u786e\uff08TP=60 + TN=30\uff09\uff0c\u51c6\u786e\u7387 = 90%<\/figcaption>\n<\/figure>\n\n<h3>3.2 Accuracy \u7684\u81f4\u547d\u9677\u9631<\/h3>\n\n<div class=\"info-box danger\">\n  <strong>\u4e0d\u5747\u8861\u6570\u636e\u7684\u9677\u9631\uff1a<\/strong>\u5f53\u6570\u636e\u4e25\u91cd\u4e0d\u5747\u8861\u65f6\uff0cAccuracy \u4f1a\u4ea7\u751f\u8bef\u5bfc\u3002\u4f8b\u5982\uff0c1000 \u5c01\u90ae\u4ef6\u4e2d 950 \u5c01\u662f\u6b63\u5e38\u90ae\u4ef6\u300150 \u5c01\u662f\u5783\u573e\u90ae\u4ef6\u3002\u4e00\u4e2a<strong>\u4ec0\u4e48\u90fd\u4e0d\u505a<\/strong>\u7684\u5206\u7c7b\u5668\uff08\u5168\u90e8\u5224\u4e3a&#8221;\u6b63\u5e38&#8221;\uff09\u7684 Accuracy = 950\/1000 = <strong>95%<\/strong>\uff0c\u4f46\u5b83\u5b8c\u5168\u6ca1\u6709\u8bc6\u522b\u51fa\u4efb\u4f55\u5783\u573e\u90ae\u4ef6<sup><a href=\"#cite-3\">[3]<\/a><\/sup>\u3002\n<\/div>\n\n<div class=\"compare-box\">\n  <div class=\"compare-col good\">\n    <h4>\u2705 \u9002\u7528\u573a\u666f<\/h4>\n    <p>\u5404\u7c7b\u522b\u6837\u672c\u6570\u91cf\u5927\u81f4\u5747\u8861<\/p>\n    <p>\u6b63\u7c7b\u548c\u8d1f\u7c7b\u7684\u9519\u8bef\u4ee3\u4ef7\u76f8\u8fd1<\/p>\n    <p>\u9700\u8981\u5feb\u901f\u4e86\u89e3\u6574\u4f53\u8868\u73b0<\/p>\n    <p>\u591a\u5206\u7c7b\u4efb\u52a1\u7684\u521d\u59cb\u53c2\u8003<\/p>\n  <\/div>\n  <div class=\"compare-col bad\">\n    <h4>\u274c \u4e0d\u9002\u7528\u573a\u666f<\/h4>\n    <p>\u6570\u636e\u4e25\u91cd\u4e0d\u5747\u8861\uff08\u5982\u6b3a\u8bc8\u68c0\u6d4b\u3001\u7f55\u89c1\u75c5\u8bca\u65ad\uff09<\/p>\n    <p>\u6b63\u7c7b\u6781\u5c11\u4f46\u6781\u91cd\u8981\uff08\u6f0f\u62a5\u4ee3\u4ef7\u9ad8\uff09<\/p>\n    <p>\u5355\u72ec\u4f7f\u7528 Accuracy \u4f5c\u4e3a\u552f\u4e00\u6307\u6807<\/p>\n    <p>\u9700\u8981\u533a\u5206\u4e0d\u540c\u7c7b\u578b\u9519\u8bef\u7684\u573a\u666f<\/p>\n  <\/div>\n<\/div>\n\n<!-- \u56db\u3001Precision -->\n<h2 id=\"zh-4\">\u56db\u3001Precision\uff08\u7cbe\u786e\u7387 \/ \u67e5\u51c6\u7387\uff09<\/h2>\n\n<p><strong>Precision<\/strong>\uff08\u7cbe\u786e\u7387\uff0c\u53c8\u79f0\u67e5\u51c6\u7387\uff09\u8861\u91cf\u7684\u662f\uff1a<strong>\u5728\u6240\u6709\u88ab\u6a21\u578b\u9884\u6d4b\u4e3a\u6b63\u7684\u6837\u672c\u4e2d\uff0c\u5b9e\u9645\u4e3a\u6b63\u7684\u6bd4\u4f8b<\/strong><sup><a href=\"#cite-1\">[1]<\/a><\/sup>\u3002<\/p>\n\n<div class=\"formula-box\">\n  <div class=\"formula-name\">Precision \u516c\u5f0f<\/div>\n  <div class=\"formula\">Precision = TP \/ (TP + FP)<\/div>\n<\/div>\n\n<h3>4.1 \u76f4\u89c2\u7406\u89e3<\/h3>\n\n<p>Precision \u56de\u7b54\u7684\u95ee\u9898\u662f\uff1a<strong>&#8220;\u6a21\u578b\u8bf4&#8217;\u662f&#8217;\u7684\u65f6\u5019\uff0c\u6709\u591a\u53ef\u4fe1\uff1f&#8221;<\/strong> \u5b83\u5173\u6ce8\u7684\u662f\u9884\u6d4b\u7684<strong>\u7eaf\u5ea6<\/strong>\u2014\u2014\u9884\u6d4b\u4e3a\u6b63\u7684\u6837\u672c\u4e2d\uff0c\u6709\u591a\u5c11\u662f\u771f\u6b63\u7684\u6b63\u6837\u672c\u3002<\/p>\n\n<div class=\"card\">\n  <h4>\u5783\u573e\u90ae\u4ef6\u8fc7\u6ee4\u7684\u4f8b\u5b50<\/h4>\n  <p>\u6a21\u578b\u6807\u8bb0\u4e86 20 \u5c01\u90ae\u4ef6\u4e3a&#8221;\u5783\u573e\u90ae\u4ef6&#8221;\uff0c\u5176\u4e2d 16 \u5c01\u786e\u5b9e\u662f\u5783\u573e\u90ae\u4ef6\uff0c4 \u5c01\u662f\u6b63\u5e38\u90ae\u4ef6\u88ab\u8bef\u5224\u3002\u5219 Precision = 16 \/ 20 = <strong>80%<\/strong>\u3002<\/p>\n  <p>Precision \u8d8a\u9ad8\uff0c\u610f\u5473\u7740\u6b63\u5e38\u90ae\u4ef6\u88ab\u8bef\u5224\u4e3a\u5783\u573e\u90ae\u4ef6\u7684\u53ef\u80fd\u6027\u8d8a\u4f4e\u2014\u2014\u7528\u6237\u4e0d\u4f1a\u56e0\u4e3a\u91cd\u8981\u90ae\u4ef6\u88ab\u8bef\u5220\u800c\u53d7\u635f\u5931\u3002<\/p>\n<\/div>\n\n<h3>4.2 Precision \u7684\u7279\u6027<\/h3>\n\n<div class=\"table-wrap\">\n  <table>\n    <caption><strong>\u8868 2<\/strong> Precision \u6307\u6807\u7279\u6027\u5206\u6790<\/caption>\n    <thead>\n      <tr><th>\u7ef4\u5ea6<\/th><th>\u8bf4\u660e<\/th><\/tr>\n    <\/thead>\n    <tbody>\n      <tr><td>\u5173\u6ce8\u7126\u70b9<\/td><td>\u9884\u6d4b\u4e3a\u6b63\u7684\u7eaf\u5ea6\uff08\u51cf\u5c11 FP\uff09<\/td><\/tr>\n      <tr><td>\u5206\u5b50<\/td><td>TP\uff08\u6b63\u786e\u9884\u6d4b\u7684\u6b63\u6837\u672c\uff09<\/td><\/tr>\n      <tr><td>\u5206\u6bcd<\/td><td>TP + FP\uff08\u6240\u6709\u9884\u6d4b\u4e3a\u6b63\u7684\u6837\u672c\uff09<\/td><\/tr>\n      <tr><td>\u4e0d\u542b TN<\/td><td>\u4e0d\u5173\u5fc3\u6b63\u786e\u6392\u9664\u7684\u8d1f\u6837\u672c<\/td><\/tr>\n      <tr><td>\u6781\u7aef\u503c<\/td><td>FP=0 \u65f6 Precision=1\uff08\u5b81\u53ef\u5c11\u62a5\u4e5f\u4e0d\u9519\u62a5\uff09<\/td><\/tr>\n      <tr><td>\u63d0\u9ad8\u65b9\u5f0f<\/td><td>\u63d0\u9ad8\u5224\u65ad\u95e8\u69db\uff0c\u53ea\u5bf9\u6700\u6709\u628a\u63e1\u7684\u6837\u672c\u9884\u6d4b\u4e3a\u6b63<\/td><\/tr>\n    <\/tbody>\n  <\/table>\n<\/div>\n\n<div class=\"info-box warn\">\n  <strong>Precision \u7684\u5c40\u9650\uff1a<\/strong>\u9ad8 Precision \u4e0d\u4e00\u5b9a\u4ee3\u8868\u597d\u6a21\u578b\u3002\u5982\u679c\u6a21\u578b\u6781\u5ea6\u4fdd\u5b88\uff0c\u53ea\u5bf9 1 \u4e2a\u6700\u786e\u4fe1\u7684\u6837\u672c\u9884\u6d4b\u4e3a\u6b63\uff08\u4e14\u786e\u5b9e\u4e3a\u6b63\uff09\uff0cPrecision = 1\/1 = 100%\uff0c\u4f46\u5b83\u53ef\u80fd\u6f0f\u6389\u4e86 999 \u4e2a\u6b63\u6837\u672c\u3002\u9ad8 Precision \u53ef\u80fd\u4ee5\u727a\u7272 Recall \u4e3a\u4ee3\u4ef7\u3002\n<\/div>\n\n<!-- \u4e94\u3001Recall -->\n<h2 id=\"zh-5\">\u4e94\u3001Recall\uff08\u53ec\u56de\u7387 \/ \u67e5\u5168\u7387\uff09<\/h2>\n\n<p><strong>Recall<\/strong>\uff08\u53ec\u56de\u7387\uff0c\u53c8\u79f0\u67e5\u5168\u7387\u3001\u7075\u654f\u5ea6 Sensitivity\u3001\u771f\u9633\u6027\u7387 TPR\uff09\u8861\u91cf\u7684\u662f\uff1a<strong>\u5728\u6240\u6709\u5b9e\u9645\u4e3a\u6b63\u7684\u6837\u672c\u4e2d\uff0c\u88ab\u6a21\u578b\u6b63\u786e\u9884\u6d4b\u4e3a\u6b63\u7684\u6bd4\u4f8b<\/strong><sup><a href=\"#cite-4\">[4]<\/a><\/sup>\u3002<\/p>\n\n<div class=\"formula-box\">\n  <div class=\"formula-name\">Recall \u516c\u5f0f<\/div>\n  <div class=\"formula\">Recall = TP \/ (TP + FN)<\/div>\n<\/div>\n\n<h3>5.1 \u76f4\u89c2\u7406\u89e3<\/h3>\n\n<p>Recall \u56de\u7b54\u7684\u95ee\u9898\u662f\uff1a<strong>&#8220;\u6240\u6709\u771f\u6b63\u7684\u6b63\u6837\u672c\uff0c\u6a21\u578b\u627e\u5230\u4e86\u591a\u5c11\uff1f&#8221;<\/strong> \u5b83\u5173\u6ce8\u7684\u662f<strong>\u67e5\u5168\u7387<\/strong>\u2014\u2014\u6709\u6ca1\u6709\u6f0f\u6389\u5e94\u8be5\u88ab\u53d1\u73b0\u7684\u6b63\u6837\u672c\u3002<\/p>\n\n<div class=\"card\">\n  <h4>\u764c\u75c7\u68c0\u6d4b\u7684\u4f8b\u5b50<\/h4>\n  <p>100 \u4e2a\u60a3\u764c\u75c5\u4eba\u4e2d\uff0c\u6a21\u578b\u6b63\u786e\u8bc6\u522b\u4e86 85 \u4e2a\uff0c\u6f0f\u6389\u4e86 15 \u4e2a\u3002\u5219 Recall = 85 \/ 100 = <strong>85%<\/strong>\u3002<\/p>\n  <p>Recall \u8d8a\u9ad8\uff0c\u610f\u5473\u7740\u8d8a\u5c11\u7684\u75c5\u4eba\u88ab\u6f0f\u8bca\u3002\u5728\u533b\u7597\u573a\u666f\u4e2d\uff0c\u6f0f\u8bca\uff08FN\uff09\u7684\u4ee3\u4ef7\u8fdc\u9ad8\u4e8e\u8bef\u8bca\uff08FP\uff09\u2014\u2014\u5b81\u53ef\u591a\u505a\u4e00\u6b21\u68c0\u67e5\uff0c\u4e5f\u4e0d\u80fd\u653e\u8fc7\u4e00\u4e2a\u75c5\u4eba\u3002<\/p>\n<\/div>\n\n<h3>5.2 Recall \u7684\u7279\u6027<\/h3>\n\n<div class=\"table-wrap\">\n  <table>\n    <caption><strong>\u8868 3<\/strong> Recall \u6307\u6807\u7279\u6027\u5206\u6790<\/caption>\n    <thead>\n      <tr><th>\u7ef4\u5ea6<\/th><th>\u8bf4\u660e<\/th><\/tr>\n    <\/thead>\n    <tbody>\n      <tr><td>\u5173\u6ce8\u7126\u70b9<\/td><td>\u6b63\u6837\u672c\u7684\u8986\u76d6\u7387\uff08\u51cf\u5c11 FN\uff09<\/td><\/tr>\n      <tr><td>\u5206\u5b50<\/td><td>TP\uff08\u88ab\u627e\u5230\u7684\u6b63\u6837\u672c\uff09<\/td><\/tr>\n      <tr><td>\u5206\u6bcd<\/td><td>TP + FN\uff08\u6240\u6709\u5b9e\u9645\u4e3a\u6b63\u7684\u6837\u672c\uff09<\/td><\/tr>\n      <tr><td>\u4e0d\u542b TN<\/td><td>\u4e0d\u5173\u5fc3\u6b63\u786e\u6392\u9664\u7684\u8d1f\u6837\u672c<\/td><\/tr>\n      <tr><td>\u6781\u7aef\u503c<\/td><td>FN=0 \u65f6 Recall=1\uff08\u5168\u90e8\u627e\u5230\uff0c\u5b81\u53ef\u9519\u62a5\uff09<\/td><\/tr>\n      <tr><td>\u63d0\u9ad8\u65b9\u5f0f<\/td><td>\u964d\u4f4e\u5224\u65ad\u95e8\u69db\uff0c\u5bf9\u6240\u6709\u53ef\u80fd\u4e3a\u6b63\u7684\u6837\u672c\u90fd\u9884\u6d4b\u4e3a\u6b63<\/td><\/tr>\n    <\/tbody>\n  <\/table>\n<\/div>\n\n<div class=\"info-box warn\">\n  <strong>Recall \u7684\u5c40\u9650\uff1a<\/strong>\u9ad8 Recall \u4e0d\u4e00\u5b9a\u4ee3\u8868\u597d\u6a21\u578b\u3002\u5982\u679c\u6a21\u578b\u5bf9\u6240\u6709\u6837\u672c\u90fd\u9884\u6d4b\u4e3a\u6b63\uff0c\u5219 FN=0\uff0cRecall=100%\uff0c\u4f46\u5b83\u4ea7\u751f\u4e86\u5927\u91cf FP\u3002\u9ad8 Recall \u53ef\u80fd\u4ee5\u727a\u7272 Precision \u4e3a\u4ee3\u4ef7\u3002\n<\/div>\n\n<!-- \u516d\u3001F1-score -->\n<h2 id=\"zh-6\">\u516d\u3001F1-score\uff08F1 \u5206\u6570\uff09<\/h2>\n\n<p><strong>F1-score<\/strong> \u662f Precision \u548c Recall \u7684<strong>\u8c03\u548c\u5e73\u5747<\/strong>\uff08Harmonic Mean\uff09\uff0c\u7528\u4e8e\u5728\u4e24\u8005\u4e4b\u95f4\u53d6\u5f97\u5e73\u8861<sup><a href=\"#cite-5\">[5]<\/a><\/sup>\u3002<\/p>\n\n<div class=\"formula-box\">\n  <div class=\"formula-name\">F1-score \u516c\u5f0f<\/div>\n  <div class=\"formula\">F1 = 2 \u00d7 (Precision \u00d7 Recall) \/ (Precision + Recall)<\/div>\n<\/div>\n\n<p>\u7b49\u4ef7\u5f62\u5f0f\uff1a<\/p>\n\n<pre class=\"code-block\">F1 = 2 \u00d7 TP \/ (2 \u00d7 TP + FP + FN)<\/pre>\n\n<h3>6.1 \u4e3a\u4ec0\u4e48\u7528\u8c03\u548c\u5e73\u5747\uff1f<\/h3>\n\n<p>\u8c03\u548c\u5e73\u5747\u4e0e\u7b97\u672f\u5e73\u5747\u7684\u5173\u952e\u533a\u522b\u5728\u4e8e\uff1a<strong>\u5b83\u5bf9\u6781\u7aef\u503c\u66f4\u654f\u611f<\/strong>\u3002\u5982\u679c Precision=0.01 \u800c Recall=1.0\uff0c\u7b97\u672f\u5e73\u5747 = 0.505\uff08\u770b\u8d77\u6765\u8fd8\u884c\uff09\uff0c\u4f46\u8c03\u548c\u5e73\u5747 F1 = 0.0198\uff08\u66b4\u9732\u4e86 Precision \u6781\u4f4e\u7684\u95ee\u9898\uff09<sup><a href=\"#cite-5\">[5]<\/a><\/sup>\u3002<\/p>\n\n<div class=\"table-wrap\">\n  <table>\n    <caption><strong>\u8868 4<\/strong> \u4e0d\u540c\u5e73\u5747\u65b9\u5f0f\u5bf9\u6bd4<\/caption>\n    <thead>\n      <tr><th>Precision<\/th><th>Recall<\/th><th>\u7b97\u672f\u5e73\u5747<\/th><th>F1\uff08\u8c03\u548c\u5e73\u5747\uff09<\/th><\/tr>\n    <\/thead>\n    <tbody>\n      <tr><td>0.80<\/td><td>0.80<\/td><td>0.80<\/td><td><strong>0.80<\/strong><\/td><\/tr>\n      <tr><td>0.90<\/td><td>0.50<\/td><td>0.70<\/td><td><strong>0.643<\/strong><\/td><\/tr>\n      <tr><td>1.00<\/td><td>0.50<\/td><td>0.75<\/td><td><strong>0.667<\/strong><\/td><\/tr>\n      <tr><td>0.01<\/td><td>1.00<\/td><td>0.505<\/td><td><strong>0.0198<\/strong><\/td><\/tr>\n      <tr><td>0.00<\/td><td>1.00<\/td><td>0.50<\/td><td><strong>0.00<\/strong><\/td><\/tr>\n    <\/tbody>\n  <\/table>\n<\/div>\n\n<div class=\"info-box\">\n  <strong>\u8c03\u548c\u5e73\u5747\u7684\u60e9\u7f5a\u6027\uff1a<\/strong>\u5f53 Precision \u6216 Recall \u4efb\u4e00\u4e3a 0 \u65f6\uff0cF1 \u4e00\u5b9a\u4e3a 0\u3002\u8fd9\u610f\u5473\u7740 F1 \u8981\u6c42\u6a21\u578b\u5728\u4e24\u4e2a\u7ef4\u5ea6\u4e0a\u90fd\u8868\u73b0\u4e0d\u9519\uff0c\u4e0d\u5141\u8bb8&#8221;\u4e00\u6761\u817f\u8d70\u8def&#8221;\u3002\u800c\u7b97\u672f\u5e73\u5747\u4f1a\u63a9\u76d6\u4e00\u4e2a\u6781\u7aef\u4f4e\u503c\u7684\u95ee\u9898\u3002\n<\/div>\n\n<h3>6.2 F-beta \u63a8\u5e7f<\/h3>\n\n<p>F1 \u662f\u66f4\u4e00\u822c\u7684 <strong>F-\u03b2<\/strong> \u6307\u6807\u7684\u7279\u4f8b\uff08\u03b2=1\uff09\u3002\u03b2 \u63a7\u5236\u4e86 Recall \u76f8\u5bf9\u4e8e Precision \u7684\u6743\u91cd\uff1a<\/p>\n\n<div class=\"formula-box\">\n  <div class=\"formula-name\">F-\u03b2 \u516c\u5f0f<\/div>\n  <div class=\"formula\">F\u03b2 = (1 + \u03b2\u00b2) \u00d7 (Precision \u00d7 Recall) \/ (\u03b2\u00b2 \u00d7 Precision + Recall)<\/div>\n<\/div>\n\n<div class=\"cmd-grid\">\n  <div class=\"cmd-card\">\n    <h4>F1 (\u03b2=1)<\/h4>\n    <span class=\"desc\">Precision \u548c Recall \u7b49\u6743\u3002\u6700\u5e38\u7528\u7684\u7efc\u5408\u6307\u6807\u3002<\/span>\n  <\/div>\n  <div class=\"cmd-card\">\n    <h4>F2 (\u03b2=2)<\/h4>\n    <span class=\"desc\">Recall \u6743\u91cd\u66f4\u9ad8\u3002\u9002\u7528\u4e8e\u6f0f\u62a5\u4ee3\u4ef7\u9ad8\u7684\u573a\u666f\uff08\u5982\u533b\u7597\uff09\u3002<\/span>\n  <\/div>\n  <div class=\"cmd-card\">\n    <h4>F0.5 (\u03b2=0.5)<\/h4>\n    <span class=\"desc\">Precision \u6743\u91cd\u66f4\u9ad8\u3002\u9002\u7528\u4e8e\u8bef\u62a5\u4ee3\u4ef7\u9ad8\u7684\u573a\u666f\uff08\u5982\u5783\u573e\u90ae\u4ef6\uff09\u3002<\/span>\n  <\/div>\n<\/div>\n\n<!-- \u4e03\u3001\u6307\u6807\u95f4\u7684\u5173\u7cfb\u4e0e\u6743\u8861 -->\n<h2 id=\"zh-7\">\u4e03\u3001\u6307\u6807\u95f4\u7684\u5173\u7cfb\u4e0e\u6743\u8861<\/h2>\n\n<h3>7.1 Precision-Recall \u7684\u8df7\u8df7\u677f\u6548\u5e94<\/h3>\n\n<p>Precision \u548c Recall \u4e4b\u95f4\u5b58\u5728\u5929\u7136\u7684<strong>\u6743\u8861\u5173\u7cfb<\/strong>\uff08Trade-off\uff09\u3002\u901a\u8fc7\u8c03\u6574\u5206\u7c7b\u9608\u503c\uff0c\u53ef\u4ee5\u63d0\u9ad8\u4e00\u4e2a\u6307\u6807\u4f46\u901a\u5e38\u4f1a\u964d\u4f4e\u53e6\u4e00\u4e2a<sup><a href=\"#cite-4\">[4]<\/a><\/sup>\u3002<\/p>\n\n<figure id=\"fig-3\">\n  <div class=\"flow-diagram\">\n    <div class=\"flow-row\">\n      <span class=\"flow-item yellow\">\u964d\u4f4e\u9608\u503c<\/span>\n      <span class=\"flow-arrow\">\u2192<\/span>\n      <span class=\"flow-item green\">\u9884\u6d4b\u66f4\u591a\u6b63\u6837\u672c<\/span>\n      <span class=\"flow-arrow\">\u2192<\/span>\n      <span class=\"flow-item green\">Recall \u2191<\/span>\n      <span class=\"flow-arrow\">+<\/span>\n      <span class=\"flow-item red\">FP \u2191<\/span>\n      <span class=\"flow-arrow\">\u2192<\/span>\n      <span class=\"flow-item red\">Precision \u2193<\/span>\n    <\/div>\n    <div class=\"flow-row\" style=\"margin-top:.6rem\">\n      <span class=\"flow-item yellow\">\u63d0\u9ad8\u9608\u503c<\/span>\n      <span class=\"flow-arrow\">\u2192<\/span>\n      <span class=\"flow-item\">\u9884\u6d4b\u66f4\u5c11\u6b63\u6837\u672c<\/span>\n      <span class=\"flow-arrow\">\u2192<\/span>\n      <span class=\"flow-item green\">Precision \u2191<\/span>\n      <span class=\"flow-arrow\">+<\/span>\n      <span class=\"flow-item red\">FN \u2191<\/span>\n      <span class=\"flow-arrow\">\u2192<\/span>\n      <span class=\"flow-item red\">Recall \u2193<\/span>\n    <\/div>\n  <\/div>\n  <figcaption><strong>\u56fe 3<\/strong> Precision-Recall \u6743\u8861\uff1a\u8c03\u6574\u9608\u503c\u5982\u8e29\u8df7\u8df7\u677f\uff0c\u4e00\u7aef\u4e0a\u5347\u5219\u53e6\u4e00\u7aef\u4e0b\u964d<\/figcaption>\n<\/figure>\n\n<h3>7.2 \u56db\u6307\u6807\u5173\u7cfb\u56fe<\/h3>\n\n<div class=\"table-wrap\">\n  <table>\n    <caption><strong>\u8868 5<\/strong> \u56db\u5927\u6307\u6807\u7684\u6838\u5fc3\u5bf9\u6bd4<\/caption>\n    <thead>\n      <tr><th>\u6307\u6807<\/th><th>\u516c\u5f0f<\/th><th>\u5173\u6ce8<\/th><th>\u4e0d\u5305\u542b<\/th><th>\u6700\u6015<\/th><\/tr>\n    <\/thead>\n    <tbody>\n      <tr><td><strong>Accuracy<\/strong><\/td><td>(TP+TN)\/All<\/td><td>\u6574\u4f53\u6b63\u786e\u7387<\/td><td>\u2014<\/td><td>\u6570\u636e\u4e0d\u5747\u8861<\/td><\/tr>\n      <tr><td><strong>Precision<\/strong><\/td><td>TP\/(TP+FP)<\/td><td>\u9884\u6d4b\u7eaf\u5ea6<\/td><td>TN<\/td><td>FP \u8fc7\u591a<\/td><\/tr>\n      <tr><td><strong>Recall<\/strong><\/td><td>TP\/(TP+FN)<\/td><td>\u6b63\u7c7b\u8986\u76d6<\/td><td>TN<\/td><td>FN \u8fc7\u591a<\/td><\/tr>\n      <tr><td><strong>F1<\/strong><\/td><td>2PR\/(P+R)<\/td><td>P\/R \u5e73\u8861<\/td><td>TN<\/td><td>P \u6216 R \u6781\u7aef<\/td><\/tr>\n    <\/tbody>\n  <\/table>\n<\/div>\n\n<div class=\"info-box success\">\n  <strong>\u5173\u952e\u6d1e\u5bdf\uff1a<\/strong>Precision\u3001Recall\u3001F1 \u4e09\u4e2a\u6307\u6807\u90fd<strong>\u4e0d\u5305\u542b TN<\/strong>\u3002\u8fd9\u610f\u5473\u7740\u5728\u8d1f\u6837\u672c\u6781\u591a\u7684\u573a\u666f\u4e0b\uff08\u5982\u6b3a\u8bc8\u68c0\u6d4b\uff0c99.9% \u662f\u6b63\u5e38\u4ea4\u6613\uff09\uff0cTN \u867d\u7136\u5de8\u5927\u4f46\u4e0d\u53c2\u4e0e\u8fd9\u4e09\u4e2a\u6307\u6807\u7684\u8ba1\u7b97\uff0c\u56e0\u6b64\u5b83\u4eec\u4e0d\u53d7\u6570\u636e\u4e0d\u5747\u8861\u7684\u76f4\u63a5\u5f71\u54cd\u2014\u2014\u8fd9\u662f\u5b83\u4eec\u6bd4 Accuracy \u66f4\u9002\u5408\u4e0d\u5747\u8861\u6570\u636e\u7684\u539f\u56e0\u3002\n<\/div>\n\n<h3>7.3 \u6570\u503c\u793a\u4f8b\uff1a\u540c\u4e00\u6a21\u578b\u7684\u591a\u7ef4\u8bc4\u4f30<\/h3>\n\n<div class=\"card\">\n  <h4>\u573a\u666f\uff1a\u75be\u75c5\u7b5b\u67e5<\/h4>\n  <p>1000 \u4eba\u4e2d\u5b9e\u9645 100 \u4eba\u60a3\u75c5\u3002\u6a21\u578b\u9884\u6d4b 120 \u4eba\u4e3a&#8221;\u60a3\u75c5&#8221;\uff08\u5176\u4e2d 80 \u4eba\u786e\u5b9e\u60a3\u75c5\uff0c40 \u4eba\u8bef\u62a5\uff09\uff0c\u5176\u4f59 880 \u4eba\u4e3a&#8221;\u5065\u5eb7&#8221;\uff08\u5176\u4e2d 20 \u4eba\u6f0f\u8bca\uff0c860 \u4eba\u6b63\u786e\u6392\u9664\uff09\u3002<\/p>\n  <ul style=\"margin-left:1.5rem;margin-bottom:.5rem\">\n    <li>TP=80, FP=40, FN=20, TN=860<\/li>\n    <li><strong>Accuracy<\/strong> = (80+860)\/1000 = <strong>94%<\/strong>\uff08\u770b\u4f3c\u4e0d\u9519\uff09<\/li>\n    <li><strong>Precision<\/strong> = 80\/(80+40) = <strong>66.7%<\/strong>\uff08\u6bcf 3 \u4e2a\u8bca\u65ad\u4e2d 1 \u4e2a\u8bef\u62a5\uff09<\/li>\n    <li><strong>Recall<\/strong> = 80\/(80+20) = <strong>80%<\/strong>\uff08100 \u4e2a\u60a3\u8005\u627e\u5230 80 \u4e2a\uff09<\/li>\n    <li><strong>F1<\/strong> = 2\u00d7(0.667\u00d70.80)\/(0.667+0.80) = <strong>72.7%<\/strong><\/li>\n  <\/ul>\n<\/div>\n\n<figure id=\"fig-4\">\n  <div class=\"metric-bar-container\" style=\"border:none;box-shadow:none;padding:0\">\n    <div class=\"metric-bar\">\n      <span class=\"label\" style=\"color:var(--accent)\">Accuracy<\/span>\n      <div class=\"bar-bg\"><div class=\"bar-fill\" style=\"width:94%;background:var(--accent)\">94%<\/div><\/div>\n      <span class=\"value\">94%<\/span>\n    <\/div>\n    <div class=\"metric-bar\">\n      <span class=\"label\" style=\"color:var(--accent2)\">Precision<\/span>\n      <div class=\"bar-bg\"><div class=\"bar-fill\" style=\"width:66.7%;background:var(--accent2)\">66.7%<\/div><\/div>\n      <span class=\"value\">66.7%<\/span>\n    <\/div>\n    <div class=\"metric-bar\">\n      <span class=\"label\" style=\"color:var(--accent4);color:#1a1a2e\">Recall<\/span>\n      <div class=\"bar-bg\"><div class=\"bar-fill\" style=\"width:80%;background:var(--accent4)\">80%<\/div><\/div>\n      <span class=\"value\">80%<\/span>\n    <\/div>\n    <div class=\"metric-bar\">\n      <span class=\"label\" style=\"color:var(--accent5)\">F1<\/span>\n      <div class=\"bar-bg\"><div class=\"bar-fill\" style=\"width:72.7%;background:var(--accent5)\">72.7%<\/div><\/div>\n      <span class=\"value\">72.7%<\/span>\n    <\/div>\n  <\/div>\n  <figcaption><strong>\u56fe 4<\/strong> \u540c\u4e00\u6a21\u578b\u5728\u56db\u4e2a\u6307\u6807\u4e0a\u7684\u8868\u73b0\u5dee\u5f02\uff1aAccuracy \u865a\u9ad8\uff0cF1 \u53cd\u6620\u771f\u5b9e\u7efc\u5408\u6c34\u5e73<\/figcaption>\n<\/figure>\n\n<!-- \u516b\u3001\u4e0d\u5747\u8861\u6570\u636e\u96c6 -->\n<h2 id=\"zh-8\">\u516b\u3001\u4e0d\u5747\u8861\u6570\u636e\u96c6\u7684\u6311\u6218<\/h2>\n\n<p>\u5f53\u6b63\u8d1f\u6837\u672c\u6bd4\u4f8b\u60ac\u6b8a\u65f6\uff08\u5982\u6b3a\u8bc8\u68c0\u6d4b 1:1000\u3001\u7f55\u89c1\u75c5 1:10000\uff09\uff0cAccuracy \u4f1a\u5931\u6548\uff0c\u9700\u8981\u4f9d\u8d56 Precision\u3001Recall \u548c F1<sup><a href=\"#cite-6\">[6]<\/a><\/sup>\u3002<\/p>\n\n<h3>8.1 Accuracy \u5931\u6548\u6f14\u793a<\/h3>\n\n<div class=\"compare-box\">\n  <div class=\"compare-col bad\">\n    <h4>\u274c \u4ec5\u770b Accuracy<\/h4>\n    <p>10000 \u7b14\u4ea4\u6613\u4e2d 10 \u7b14\u662f\u6b3a\u8bc8\u3002\u6a21\u578b\u5168\u90e8\u9884\u6d4b\u4e3a&#8221;\u6b63\u5e38&#8221;\u3002<\/p>\n    <p>TP=0, FP=0, FN=10, TN=9990<\/p>\n    <p><strong>Accuracy = 9990\/10000 = 99.9%<\/strong><\/p>\n    <p>\u770b\u8d77\u6765\u975e\u5e38\u597d\u2014\u2014\u4f46\u4e00\u4e2a\u6b3a\u8bc8\u90fd\u6ca1\u6293\u5230\u3002<\/p>\n  <\/div>\n  <div class=\"compare-col good\">\n    <h4>\u2705 \u770b Precision\/Recall\/F1<\/h4>\n    <p>\u540c\u4e00\u6a21\u578b\uff1a<\/p>\n    <p><strong>Precision<\/strong> = 0\/(0+0) = <strong>\u672a\u5b9a\u4e49<\/strong>\uff08\u65e0\u9884\u6d4b\u6b63\u6837\u672c\uff09<\/p>\n    <p><strong>Recall<\/strong> = 0\/(0+10) = <strong>0%<\/strong><\/p>\n    <p><strong>F1<\/strong> = <strong>0%<\/strong>\uff08\u6216\u672a\u5b9a\u4e49\uff09<\/p>\n    <p>\u7acb\u523b\u66b4\u9732\u4e86\u6a21\u578b\u5b8c\u5168\u65e0\u6548\u3002<\/p>\n  <\/div>\n<\/div>\n\n<h3>8.2 \u4e0d\u5747\u8861\u6570\u636e\u7684\u5e94\u5bf9\u7b56\u7565<\/h3>\n\n<ol class=\"steps\">\n  <li>\n    <strong>\u9009\u62e9\u6b63\u786e\u7684\u6307\u6807<\/strong>\n    <span class=\"note\">\u4f7f\u7528 Precision\u3001Recall\u3001F1 \u66ff\u4ee3 Accuracy\u3002\u8003\u8651 PR-AUC\uff08Precision-Recall \u66f2\u7ebf\u4e0b\u9762\u79ef\uff09\u3002<\/span>\n  <\/li>\n  <li>\n    <strong>\u91cd\u91c7\u6837\uff08Resampling\uff09<\/strong>\n    <span class=\"note\">\u8fc7\u91c7\u6837\u5c11\u6570\u7c7b\uff08SMOTE\uff09\u6216\u6b20\u91c7\u6837\u591a\u6570\u7c7b\uff0c\u4f7f\u8bad\u7ec3\u96c6\u66f4\u5747\u8861\u3002<\/span>\n  <\/li>\n  <li>\n    <strong>\u7c7b\u522b\u6743\u91cd\uff08Class Weight\uff09<\/strong>\n    <span class=\"note\">\u5728\u635f\u5931\u51fd\u6570\u4e2d\u7ed9\u5c11\u6570\u7c7b\u66f4\u9ad8\u6743\u91cd\uff0c\u8ba9\u6a21\u578b\u66f4\u91cd\u89c6\u5c11\u6570\u7c7b\u7684\u9519\u8bef\u3002<\/span>\n  <\/li>\n  <li>\n    <strong>\u8c03\u6574\u51b3\u7b56\u9608\u503c<\/strong>\n    <span class=\"note\">\u9ed8\u8ba4\u9608\u503c 0.5 \u4e0d\u4e00\u5b9a\u6700\u4f18\uff0c\u53ef\u6839\u636e\u4e1a\u52a1\u9700\u6c42\u8c03\u6574\u4ee5\u5e73\u8861 P\/R\u3002<\/span>\n  <\/li>\n  <li>\n    <strong>\u4f7f\u7528\u9002\u5408\u7684\u7b97\u6cd5<\/strong>\n    <span class=\"note\">\u96c6\u6210\u65b9\u6cd5\uff08\u5982 XGBoost\uff09\u3001\u5f02\u5e38\u68c0\u6d4b\u65b9\u6cd5\u5bf9\u4e0d\u5747\u8861\u6570\u636e\u66f4\u9c81\u68d2\u3002<\/span>\n  <\/li>\n<\/ol>\n\n<!-- \u4e5d\u3001\u591a\u5206\u7c7b\u6269\u5c55 -->\n<h2 id=\"zh-9\">\u4e5d\u3001\u591a\u5206\u7c7b\u573a\u666f\u6269\u5c55<\/h2>\n\n<p>\u5728\u591a\u5206\u7c7b\u4efb\u52a1\u4e2d\uff08\u5982\u624b\u5199\u6570\u5b57\u8bc6\u522b 0-9\uff09\uff0c\u6df7\u6dc6\u77e9\u9635\u6269\u5c55\u4e3a N\u00d7N\u3002\u5982\u4f55\u5c06\u4e8c\u5206\u7c7b\u6307\u6807\u6269\u5c55\u5230\u591a\u5206\u7c7b\uff1f\u6709\u4e09\u79cd\u5e38\u89c1\u5e73\u5747\u65b9\u5f0f<sup><a href=\"#cite-7\">[7]<\/a><\/sup>\uff1a<\/p>\n\n<h3>9.1 \u4e09\u79cd\u5e73\u5747\u7b56\u7565<\/h3>\n\n<div class=\"table-wrap\">\n  <table>\n    <caption><strong>\u8868 6<\/strong> \u591a\u5206\u7c7b\u5e73\u5747\u7b56\u7565\u5bf9\u6bd4<\/caption>\n    <thead>\n      <tr><th>\u7b56\u7565<\/th><th>\u8ba1\u7b97\u65b9\u5f0f<\/th><th>\u7279\u70b9<\/th><th>\u9002\u7528\u573a\u666f<\/th><\/tr>\n    <\/thead>\n    <tbody>\n      <tr><td><strong>Macro<\/strong><\/td><td>\u5404\u7c7b\u522b\u6307\u6807\u5206\u522b\u8ba1\u7b97\u540e\u53d6\u7b97\u672f\u5e73\u5747<\/td><td>\u5404\u7c7b\u522b\u7b49\u6743\uff0c\u91cd\u89c6\u5c11\u6570\u7c7b<\/td><td>\u5404\u7c7b\u522b\u540c\u7b49\u91cd\u8981<\/td><\/tr>\n      <tr><td><strong>Micro<\/strong><\/td><td>\u6240\u6709\u7c7b\u522b TP\/FP\/FN \u6c47\u603b\u540e\u8ba1\u7b97\u5168\u5c40\u6307\u6807<\/td><td>\u6837\u672c\u591a\u7684\u7c7b\u6743\u91cd\u66f4\u5927<\/td><td>\u6574\u4f53\u6027\u80fd\u8bc4\u4f30<\/td><\/tr>\n      <tr><td><strong>Weighted<\/strong><\/td><td>\u5404\u7c7b\u522b\u6307\u6807\u6309\u6837\u672c\u91cf\u52a0\u6743\u5e73\u5747<\/td><td>\u517c\u987e\u7c7b\u522b\u6bd4\u4f8b<\/td><td>\u4e0d\u5747\u8861\u591a\u5206\u7c7b<\/td><\/tr>\n    <\/tbody>\n  <\/table>\n<\/div>\n\n<h3>9.2 Macro vs Micro \u793a\u4f8b<\/h3>\n\n<div class=\"card\">\n  <h4>\u4e09\u5206\u7c7b\u793a\u4f8b<\/h4>\n  <p>3 \u4e2a\u7c7b\u522b A\u3001B\u3001C\uff0c\u6837\u672c\u6570\u5206\u522b\u4e3a 100\u300150\u300110\u3002<\/p>\n  <pre class=\"code-block\">\u5404\u7c7b\u522b\u7684 Recall:\n  \u7c7b\u522b A (100\u6837\u672c): Recall = 90\/100 = 0.90\n  \u7c7b\u522b B ( 50\u6837\u672c): Recall = 40\/50  = 0.80\n  \u7c7b\u522b C ( 10\u6837\u672c): Recall = 5\/10   = 0.50\n\nMacro-Recall = (0.90 + 0.80 + 0.50) \/ 3 = 0.733\n  \u2192 \u6bcf\u4e2a\u7c7b\u522b\u540c\u7b49\u91cd\u8981\uff0cC \u7684\u4f4e Recall \u62c9\u4f4e\u4e86\u5747\u503c\n\nMicro-Recall = (90+40+5) \/ (100+50+10) = 135\/160 = 0.844\n  \u2192 \u6309\u6837\u672c\u52a0\u6743\uff0cA \u7684\u9ad8\u5360\u6bd4\u63a8\u9ad8\u4e86\u5747\u503c\n\nWeighted-Recall = (0.90\u00d7100 + 0.80\u00d750 + 0.50\u00d710) \/ 160 = 0.844\n  \u2192 \u4e0e Micro \u76f8\u540c\uff08\u56e0\u4e3a Recall \u7684\u52a0\u6743\u672c\u8d28\uff09<\/pre>\n<\/div>\n\n<div class=\"info-box\">\n  <strong>\u9009\u62e9\u5efa\u8bae\uff1a<\/strong>\u5982\u679c\u5c11\u6570\u7c7b\u7684\u8868\u73b0\u540c\u6837\u91cd\u8981\uff08\u5982\u5404\u75be\u75c5\u8bca\u65ad\uff09\uff0c\u7528 <strong>Macro-F1<\/strong>\uff1b\u5982\u679c\u5173\u6ce8\u6574\u4f53\u9884\u6d4b\u51c6\u786e\u5ea6\uff0c\u7528 <strong>Micro-F1<\/strong>\uff1b\u5982\u679c\u7c7b\u522b\u95f4\u4e0d\u5747\u8861\u4e14\u9700\u517c\u987e\u6bd4\u4f8b\uff0c\u7528 <strong>Weighted-F1<\/strong>\u3002\n<\/div>\n\n<h3>9.3 One-vs-Rest \u601d\u8def<\/h3>\n\n<p>\u591a\u5206\u7c7b\u6307\u6807\u7684\u5e95\u5c42\u8ba1\u7b97\u901a\u5e38\u91c7\u7528 <strong>One-vs-Rest<\/strong>\uff08OvR\uff09\u7b56\u7565\uff1a\u5c06\u6bcf\u4e2a\u7c7b\u522b\u4f9d\u6b21\u89c6\u4e3a&#8221;\u6b63\u7c7b&#8221;\uff0c\u5176\u4f59\u6240\u6709\u7c7b\u522b\u89c6\u4e3a&#8221;\u8d1f\u7c7b&#8221;\uff0c\u8ba1\u7b97\u8be5\u7c7b\u7684 Precision\/Recall\/F1\uff0c\u518d\u6309\u4e0a\u8ff0\u5e73\u5747\u65b9\u5f0f\u6c47\u603b\u3002<\/p>\n\n<figure id=\"fig-5\">\n  <div class=\"flow-diagram\">\n    <div class=\"flow-row\">\n      <span class=\"flow-item\">\u7c7b\u522b A \u4e3a\u6b63<\/span>\n      <span class=\"flow-arrow\">\u2192<\/span>\n      <span class=\"flow-item green\">P\/R\/F1 (A)<\/span>\n    <\/div>\n    <div class=\"flow-row\">\n      <span class=\"flow-item\">\u7c7b\u522b B \u4e3a\u6b63<\/span>\n      <span class=\"flow-arrow\">\u2192<\/span>\n      <span class=\"flow-item green\">P\/R\/F1 (B)<\/span>\n      <span class=\"flow-arrow\">\u2192<\/span>\n      <span class=\"flow-item purple\">Macro\/Micro\/Weighted \u5e73\u5747<\/span>\n    <\/div>\n    <div class=\"flow-row\">\n      <span class=\"flow-item\">\u7c7b\u522b C \u4e3a\u6b63<\/span>\n      <span class=\"flow-arrow\">\u2192<\/span>\n      <span class=\"flow-item green\">P\/R\/F1 (C)<\/span>\n    <\/div>\n  <\/div>\n  <figcaption><strong>\u56fe 5<\/strong> One-vs-Rest \u7b56\u7565\uff1a\u5c06 N \u5206\u7c7b\u8f6c\u5316\u4e3a N \u4e2a\u4e8c\u5206\u7c7b\u95ee\u9898<\/figcaption>\n<\/figure>\n\n<!-- \u5341\u3001\u5b9e\u9645\u5e94\u7528\u6307\u5357 -->\n<h2 id=\"zh-10\">\u5341\u3001\u5b9e\u9645\u5e94\u7528\u6307\u5357\u4e0e\u4ee3\u7801\u793a\u4f8b<\/h2>\n\n<h3>10.1 \u573a\u666f-\u6307\u6807\u5339\u914d\u6307\u5357<\/h3>\n\n<div class=\"scenario-grid\">\n  <div class=\"scenario-card medical\">\n    <h4>\ud83c\udfe5 \u533b\u7597\u8bca\u65ad<\/h4>\n    <p class=\"priority\"><strong>\u4f18\u5148\u6307\u6807\uff1a<\/strong>Recall \/ F2-score<\/p>\n    <p class=\"reason\">\u6f0f\u8bca\uff08FN\uff09\u4ee3\u4ef7\u8fdc\u9ad8\u4e8e\u8bef\u8bca\uff08FP\uff09\u3002\u5b81\u53ef\u591a\u505a\u68c0\u67e5\uff0c\u4e0d\u53ef\u653e\u8fc7\u4e00\u4e2a\u75c5\u4eba\u3002<\/p>\n  <\/div>\n  <div class=\"scenario-card spam\">\n    <h4>\ud83d\udce7 \u5783\u573e\u90ae\u4ef6\u8fc7\u6ee4<\/h4>\n    <p class=\"priority\"><strong>\u4f18\u5148\u6307\u6807\uff1a<\/strong>Precision \/ F0.5<\/p>\n    <p class=\"reason\">\u8bef\u5220\u6b63\u5e38\u90ae\u4ef6\uff08FP\uff09\u4ee3\u4ef7\u8fdc\u9ad8\u4e8e\u653e\u8fc7\u4e00\u5c01\u5783\u573e\u90ae\u4ef6\uff08FN\uff09\u3002<\/p>\n  <\/div>\n  <div class=\"scenario-card fraud\">\n    <h4>\ud83d\udcb3 \u6b3a\u8bc8\u68c0\u6d4b<\/h4>\n    <p class=\"priority\"><strong>\u4f18\u5148\u6307\u6807\uff1a<\/strong>Recall \/ PR-AUC<\/p>\n    <p class=\"reason\">\u6f0f\u6389\u4e00\u7b14\u6b3a\u8bc8\u635f\u5931\u5de8\u5927\uff0c\u5b81\u53ef\u591a\u5ba1\u6838\u3002\u6570\u636e\u6781\u5ea6\u4e0d\u5747\u8861\u3002<\/p>\n  <\/div>\n  <div class=\"scenario-card search\">\n    <h4>\ud83d\udd0d \u641c\u7d22\u5f15\u64ce<\/h4>\n    <p class=\"priority\"><strong>\u4f18\u5148\u6307\u6807\uff1a<\/strong>Precision@K<\/p>\n    <p class=\"reason\">\u7528\u6237\u53ea\u770b\u524d\u51e0\u6761\u7ed3\u679c\uff0c\u8fd4\u56de\u7684\u7cbe\u786e\u5ea6\u6bd4\u8986\u76d6\u7387\u66f4\u91cd\u8981\u3002<\/p>\n  <\/div>\n<\/div>\n\n<h3>10.2 \u51b3\u7b56\u6d41\u7a0b\u56fe<\/h3>\n\n<figure id=\"fig-6\">\n  <div class=\"flow-diagram\">\n    <div class=\"flow-row\">\n      <span class=\"flow-item purple\">\u6570\u636e\u662f\u5426\u5747\u8861\uff1f<\/span>\n    <\/div>\n    <div class=\"flow-row\">\n      <span class=\"flow-item green\">\u662f \u2192 Accuracy<\/span>\n      <span class=\"flow-arrow\" style=\"margin:0 1rem\">|<\/span>\n      <span class=\"flow-item yellow\">\u5426 \u2192 \u7ee7\u7eed<\/span>\n    <\/div>\n    <div class=\"flow-row\" style=\"margin-top:.3rem\">\n      <span class=\"flow-arrow\">\u2193<\/span>\n    <\/div>\n    <div class=\"flow-row\">\n      <span class=\"flow-item purple\">FP \u548c FN \u54ea\u4e2a\u4ee3\u4ef7\u9ad8\uff1f<\/span>\n    <\/div>\n    <div class=\"flow-row\">\n      <span class=\"flow-item\">FP \u9ad8 \u2192 Precision<\/span>\n      <span class=\"flow-arrow\">|<\/span>\n      <span class=\"flow-item green\">FN \u9ad8 \u2192 Recall<\/span>\n      <span class=\"flow-arrow\">|<\/span>\n      <span class=\"flow-item purple\">\u76f8\u5f53 \u2192 F1<\/span>\n    <\/div>\n  <\/div>\n  <figcaption><strong>\u56fe 6<\/strong> \u6307\u6807\u9009\u62e9\u51b3\u7b56\u6d41\u7a0b<\/figcaption>\n<\/figure>\n\n<h3>10.3 Python \u4ee3\u7801\u793a\u4f8b<\/h3>\n\n<pre class=\"terminal\"><span class=\"comment\"># \u4f7f\u7528 scikit-learn \u8ba1\u7b97\u5206\u7c7b\u8bc4\u4f30\u6307\u6807<\/span>\n<span class=\"keyword\">from<\/span> sklearn.metrics <span class=\"keyword\">import<\/span> (\n    accuracy_score,\n    precision_score,\n    recall_score,\n    f1_score,\n    classification_report,\n    confusion_matrix\n)\n<span class=\"keyword\">from<\/span> sklearn.datasets <span class=\"keyword\">import<\/span> make_classification\n<span class=\"keyword\">from<\/span> sklearn.model_selection <span class=\"keyword\">import<\/span> train_test_split\n<span class=\"keyword\">from<\/span> sklearn.ensemble <span class=\"keyword\">import<\/span> RandomForestClassifier\n\n<span class=\"comment\"># 1. \u751f\u6210\u4e0d\u5747\u8861\u6570\u636e\uff08\u6b63\u8d1f\u6bd4 1:9\uff09<\/span>\nX, y = make_classification(\n    n_samples=<span class=\"string\">1000<\/span>,\n    weights=[<span class=\"string\">0.1<\/span>],\n    random_state=<span class=\"string\">42<\/span>\n)\nX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=<span class=\"string\">0.3<\/span>)\n\n<span class=\"comment\"># 2. \u8bad\u7ec3\u6a21\u578b<\/span>\nmodel = RandomForestClassifier(random_state=<span class=\"string\">42<\/span>)\nmodel.fit(X_train, y_train)\ny_pred = model.predict(X_test)\n\n<span class=\"comment\"># 3. \u6df7\u6dc6\u77e9\u9635<\/span>\ncm = confusion_matrix(y_test, y_pred)\n<span class=\"keyword\">print<\/span>(<span class=\"string\">f\"Confusion Matrix:\\n{cm}\"<\/span>)\n<span class=\"output\"># [[256  11]\n#  [  13  20]]<\/span>\n\ntn, fp, fn, tp = cm.ravel()\n<span class=\"keyword\">print<\/span>(<span class=\"string\">f\"TP={tp}, TN={tn}, FP={fp}, FN={fn}\"<\/span>)\n<span class=\"output\"># TP=20, TN=256, FP=11, FN=13<\/span>\n\n<span class=\"comment\"># 4. \u56db\u5927\u6307\u6807<\/span>\n<span class=\"keyword\">print<\/span>(<span class=\"string\">f\"Accuracy:  {accuracy_score(y_test, y_pred):.4f}\"<\/span>)\n<span class=\"output\"># Accuracy:  0.9200<\/span>\n\n<span class=\"keyword\">print<\/span>(<span class=\"string\">f\"Precision: {precision_score(y_test, y_pred):.4f}\"<\/span>)\n<span class=\"output\"># Precision: 0.6452<\/span>\n\n<span class=\"keyword\">print<\/span>(<span class=\"string\">f\"Recall:    {recall_score(y_test, y_pred):.4f}\"<\/span>)\n<span class=\"output\"># Recall:    0.6061<\/span>\n\n<span class=\"keyword\">print<\/span>(<span class=\"string\">f\"F1-score:  {f1_score(y_test, y_pred):.4f}\"<\/span>)\n<span class=\"output\"># F1-score:  0.6250<\/span>\n\n<span class=\"comment\"># 5. \u591a\u5206\u7c7b\u62a5\u544a\uff08\u542b Macro\/Micro\/Weighted\uff09<\/span>\n<span class=\"keyword\">print<\/span>(classification_report(y_test, y_pred, target_names=[<span class=\"string\">\"Negative\"<\/span>, <span class=\"string\">\"Positive\"<\/span>]))\n<span class=\"output\">#               precision  recall  f1-score  support\n#     Negative       0.95     0.96      0.95      267\n#     Positive       0.65     0.61      0.63       33\n#    accuracy                           0.92      300\n#   macro avg       0.80     0.78      0.79      300\n# weighted avg       0.92     0.92      0.92      300<\/span>\n\n<span class=\"comment\"># 6. \u4ea4\u53c9\u9a8c\u8bc1\u4e2d\u6307\u5b9a average \u7b56\u7565<\/span>\n<span class=\"keyword\">from<\/span> sklearn.model_selection <span class=\"keyword\">import<\/span> cross_val_score\n\nmacro_f1 = cross_val_score(model, X, y, cv=<span class=\"string\">5<\/span>, scoring=<span class=\"string\">\"f1_macro\"<\/span>)\nweighted_f1 = cross_val_score(model, X, y, cv=<span class=\"string\">5<\/span>, scoring=<span class=\"string\">\"f1_weighted\"<\/span>)\n<span class=\"keyword\">print<\/span>(<span class=\"string\">f\"Macro F1 CV:    {macro_f1.mean():.4f}\"<\/span>)\n<span class=\"keyword\">print<\/span>(<span class=\"string\">f\"Weighted F1 CV:{weighted_f1.mean():.4f}\"<\/span>)<\/pre>\n\n<h3>10.4 \u5e38\u89c1\u8bef\u533a<\/h3>\n\n<div class=\"table-wrap\">\n  <table>\n    <caption><strong>\u8868 7<\/strong> \u5e38\u89c1\u8bef\u533a\u4e0e\u7ea0\u6b63<\/caption>\n    <thead>\n      <tr><th>\u8bef\u533a<\/th><th>\u95ee\u9898<\/th><th>\u7ea0\u6b63<\/th><\/tr>\n    <\/thead>\n    <tbody>\n      <tr><td>\u53ea\u7528 Accuracy<\/td><td>\u4e0d\u5747\u8861\u6570\u636e\u4e0b\u865a\u9ad8<\/td><td>\u642d\u914d Precision\/Recall\/F1 \u4f7f\u7528<\/td><\/tr>\n      <tr><td>\u8ffd\u6c42 F1 \u6700\u9ad8<\/td><td>\u53ef\u80fd\u4e0d\u7b26\u5408\u4e1a\u52a1\u9700\u6c42<\/td><td>\u6839\u636e FP\/FN \u4ee3\u4ef7\u9009\u62e9 F\u03b2<\/td><\/tr>\n      <tr><td>\u5ffd\u7565\u9608\u503c\u8c03\u4f18<\/td><td>\u9ed8\u8ba4 0.5 \u9608\u503c\u672a\u5fc5\u6700\u4f18<\/td><td>\u7528 PR \u66f2\u7ebf\u9009\u62e9\u4e1a\u52a1\u6700\u4f18\u9608\u503c<\/td><\/tr>\n      <tr><td>\u6d4b\u8bd5\u96c6\u4e0d\u5747\u8861<\/td><td>\u6307\u6807\u6709\u504f<\/td><td>\u5206\u5c42\u62bd\u6837\u4fdd\u6301\u6bd4\u4f8b\uff0c\u6216\u4f7f\u7528\u5206\u5c42\u4ea4\u53c9\u9a8c\u8bc1<\/td><\/tr>\n      <tr><td>\u5ffd\u89c6 TN \u5f71\u54cd<\/td><td>F1 \u4e0d\u542b TN\uff0c\u53ef\u80fd\u9ad8\u4f30<\/td><td>\u6781\u7aef\u4e0d\u5747\u8861\u65f6\u8865\u5145 MCC \u6307\u6807<\/td><\/tr>\n    <\/tbody>\n  <\/table>\n<\/div>\n\n<div class=\"info-box success\">\n  <strong>\u603b\u7ed3\uff1a<\/strong>Accuracy\u3001Precision\u3001Recall\u3001F1-score \u662f\u5206\u7c7b\u8bc4\u4f30\u7684\u57fa\u77f3\u3002\u5b83\u4eec\u5404\u6709\u9002\u7528\u573a\u666f\uff0c\u4e0d\u5b58\u5728&#8221;\u6700\u597d\u7684\u6307\u6807&#8221;\u2014\u2014\u53ea\u6709&#8221;\u6700\u9002\u5408\u5f53\u524d\u4e1a\u52a1\u573a\u666f\u7684\u6307\u6807&#8221;\u3002\u7406\u89e3\u6df7\u6dc6\u77e9\u9635\u662f\u638c\u63e1\u4e00\u5207\u7684\u524d\u63d0\uff0c\u800c\u6839\u636e\u6570\u636e\u5747\u8861\u6027\u3001FP\/FN \u4ee3\u4ef7\u6743\u8861\u9009\u62e9\u5408\u9002\u7684\u6307\u6807\u7ec4\u5408\uff0c\u662f\u6bcf\u4e2a\u673a\u5668\u5b66\u4e60\u4ece\u4e1a\u8005\u7684\u5fc5\u5907\u80fd\u529b\u3002\n<\/div>\n\n<\/div><!-- end lang-zh -->\n\n<!-- ======== English Version ======== -->\n<div class=\"lang-section\" id=\"lang-en\">\n<div class=\"hero\">\n  <h1>Complete Guide to Classification Metrics<span class=\"sub\">From Confusion Matrix to Accuracy, Precision, Recall &#038; F1-score<\/span><\/h1>\n  <p>Understand the four core evaluation metrics in ML classification: principles, formulas, use cases, and trade-offs<\/p>\n<\/div>\n\n<div class=\"toc\">\n  <h3>Contents<\/h3>\n  <ol>\n    <li><a href=\"#en-1\">1. Overview: Why Evaluation Metrics Matter<\/a><\/li>\n    <li><a href=\"#en-2\">2. Confusion Matrix: The Foundation<\/a><\/li>\n    <li><a href=\"#en-3\">3. Accuracy<\/a><\/li>\n    <li><a href=\"#en-4\">4. Precision<\/a><\/li>\n    <li><a href=\"#en-5\">5. Recall<\/a><\/li>\n    <li><a href=\"#en-6\">6. F1-score<\/a><\/li>\n    <li><a href=\"#en-7\">7. Relationships and Trade-offs<\/a><\/li>\n    <li><a href=\"#en-8\">8. Imbalanced Dataset Challenges<\/a><\/li>\n    <li><a href=\"#en-9\">9. Multi-class Extensions<\/a><\/li>\n    <li><a href=\"#en-10\">10. Practical Guide &#038; Code Examples<\/a><\/li>\n  <\/ol>\n<\/div>\n\n<!-- 1. Overview -->\n<h2 id=\"en-1\">1. Overview: Why Evaluation Metrics Matter<\/h2>\n\n<p>In machine learning classification tasks, model predictions need objective, quantifiable metrics to assess quality. Knowing &#8220;the model got 95 correct&#8221; is insufficient\u2014we need to understand its performance on <strong>positive<\/strong> and <strong>negative<\/strong> classes separately, whether it&#8217;s biased, and whether it meets specific business requirements<sup><a href=\"#cite-1\">[1]<\/a><\/sup>.<\/p>\n\n<div class=\"info-box\">\n  <strong>Core Problem:<\/strong> Different metrics measure different dimensions of model performance. There is no &#8220;universal metric&#8221;\u2014the choice depends on the specific business scenario, data distribution, and cost trade-offs. Understanding each metric&#8217;s <strong>definition, applicability, and limitations<\/strong> is the prerequisite for proper model evaluation.\n<\/div>\n\n<h3>1.1 Four Core Metrics at a Glance<\/h3>\n\n<div class=\"cmd-grid\">\n  <div class=\"cmd-card\">\n    <h4><span class=\"metric-badge acc\">Accuracy<\/span><\/h4>\n    <span class=\"desc\">Overall correctness. Proportion of all predictions that are correct. Intuitive but vulnerable to imbalance.<\/span>\n  <\/div>\n  <div class=\"cmd-card\">\n    <h4><span class=\"metric-badge pre\">Precision<\/span><\/h4>\n    <span class=\"desc\">Of predicted positives, how many are actually positive. Focus: &#8220;purity of predictions.&#8221;<\/span>\n  <\/div>\n  <div class=\"cmd-card\">\n    <h4><span class=\"metric-badge rec\">Recall<\/span><\/h4>\n    <span class=\"desc\">Of actual positives, how many were correctly found. Focus: &#8220;did we miss any?&#8221;<\/span>\n  <\/div>\n  <div class=\"cmd-card\">\n    <h4><span class=\"metric-badge f1\">F1-score<\/span><\/h4>\n    <span class=\"desc\">Harmonic mean of precision and recall. A single balanced metric combining both.<\/span>\n  <\/div>\n<\/div>\n\n<figure id=\"fig-1-en\">\n  <div class=\"flow-diagram\" style=\"border:none;box-shadow:none;padding:0\">\n    <div class=\"flow-row\">\n      <span class=\"flow-item purple\">Confusion Matrix<\/span>\n      <span class=\"flow-arrow\">\u2192<\/span>\n      <span class=\"flow-item\">TP \/ TN \/ FP \/ FN<\/span>\n    <\/div>\n    <div class=\"flow-row\" style=\"margin-top:.5rem\">\n      <span class=\"flow-arrow\">\u2193<\/span>\n    <\/div>\n    <div class=\"flow-row\">\n      <span class=\"flow-item\">Accuracy<\/span>\n      <span class=\"flow-arrow\">\u00b7<\/span>\n      <span class=\"flow-item green\">Precision<\/span>\n      <span class=\"flow-arrow\">\u00b7<\/span>\n      <span class=\"flow-item yellow\">Recall<\/span>\n      <span class=\"flow-arrow\">\u00b7<\/span>\n      <span class=\"flow-item purple\">F1<\/span>\n    <\/div>\n  <\/div>\n  <figcaption><strong>Figure 1<\/strong> All four metrics derive from the four quantities in the confusion matrix<\/figcaption>\n<\/figure>\n\n<!-- 2. Confusion Matrix -->\n<h2 id=\"en-2\">2. Confusion Matrix: The Foundation<\/h2>\n\n<p>The <strong>Confusion Matrix<\/strong> is a 2\u00d72 table that cross-tabulates model predictions against ground truth labels, producing four fundamental quantities. All evaluation metrics are derived from these four<sup><a href=\"#cite-2\">[2]<\/a><\/sup>.<\/p>\n\n<h3>2.1 The Four Basic Quantities<\/h3>\n\n<div class=\"cm-table\">\n  <div class=\"cm-cell cm-corner\"><\/div>\n  <div class=\"cm-cell cm-axis\">Predicted Positive<\/div>\n  <div class=\"cm-cell cm-axis\">Predicted Negative<\/div>\n\n  <div class=\"cm-cell cm-axis\">Actual Positive<\/div>\n  <div class=\"cm-cell cm-tp\">TP<span class=\"cm-label\">True Positive<\/span><\/div>\n  <div class=\"cm-cell cm-fn\">FN<span class=\"cm-label\">False Negative<\/span><\/div>\n\n  <div class=\"cm-cell cm-axis\">Actual Negative<\/div>\n  <div class=\"cm-cell cm-fp\">FP<span class=\"cm-label\">False Positive<\/span><\/div>\n  <div class=\"cm-cell cm-tn\">TN<span class=\"cm-label\">True Negative<\/span><\/div>\n<\/div>\n\n<div class=\"table-wrap\">\n  <table>\n    <caption><strong>Table 1<\/strong> Meaning of the four confusion matrix quantities<\/caption>\n    <thead>\n      <tr><th>Symbol<\/th><th>Name<\/th><th>Meaning<\/th><th>Plain English<\/th><\/tr>\n    <\/thead>\n    <tbody>\n      <tr><td><strong>TP<\/strong><\/td><td>True Positive<\/td><td>Actually positive, predicted positive<\/td><td>Correct hit<\/td><\/tr>\n      <tr><td><strong>TN<\/strong><\/td><td>True Negative<\/td><td>Actually negative, predicted negative<\/td><td>Correct rejection<\/td><\/tr>\n      <tr><td><strong>FP<\/strong><\/td><td>False Positive<\/td><td>Actually negative, predicted positive<\/td><td>False alarm (Type I error)<\/td><\/tr>\n      <tr><td><strong>FN<\/strong><\/td><td>False Negative<\/td><td>Actually positive, predicted negative<\/td><td>Miss (Type II error)<\/td><\/tr>\n    <\/tbody>\n  <\/table>\n<\/div>\n\n<h3>2.2 Memory Aid<\/h3>\n\n<div class=\"card\">\n  <h4>Quick Rule<\/h4>\n  <p><strong>T \/ F<\/strong> = whether the prediction is <strong>correct<\/strong> (True = correct, False = wrong)<\/p>\n  <p><strong>P \/ N<\/strong> = the model&#8217;s <strong>predicted class<\/strong> (Positive = predicted positive, Negative = predicted negative)<\/p>\n  <p>Combined: <strong>TP<\/strong> = correct prediction of positive; <strong>FP<\/strong> = wrong prediction of positive (actually negative).<\/p>\n<\/div>\n\n<div class=\"info-box success\">\n  <strong>Key Relationship:<\/strong> Total samples = TP + TN + FP + FN. Where <strong>TP + FN<\/strong> = total actual positives, and <strong>TP + FP<\/strong> = total predicted positives. These two relationships are the foundation for deriving all metrics.\n<\/div>\n\n<!-- 3. Accuracy -->\n<h2 id=\"en-3\">3. Accuracy<\/h2>\n\n<p><strong>Accuracy<\/strong> is the most intuitive evaluation metric\u2014the proportion of all samples that the model predicted correctly<sup><a href=\"#cite-3\">[3]<\/a><\/sup>.<\/p>\n\n<div class=\"formula-box\">\n  <div class=\"formula-name\">Accuracy Formula<\/div>\n  <div class=\"formula\">Accuracy = (TP + TN) \/ (TP + TN + FP + FN)<\/div>\n<\/div>\n\n<h3>3.1 Intuitive Understanding<\/h3>\n\n<p>Accuracy answers: <strong>&#8220;How does the model perform overall?&#8221;<\/strong> It treats correct predictions of positive and negative classes equally in the numerator, and is the only metric that considers TN.<\/p>\n\n<figure id=\"fig-2-en\">\n  <div class=\"metric-bar-container\" style=\"border:none;box-shadow:none;padding:0\">\n    <div class=\"metric-bar\">\n      <span class=\"label\">TP (60)<\/span>\n      <div class=\"bar-bg\"><div class=\"bar-fill\" style=\"width:60%;background:var(--accent)\">Hits<\/div><\/div>\n      <span class=\"value\">60<\/span>\n    <\/div>\n    <div class=\"metric-bar\">\n      <span class=\"label\">TN (30)<\/span>\n      <div class=\"bar-bg\"><div class=\"bar-fill\" style=\"width:30%;background:var(--accent2)\">Correct rejects<\/div><\/div>\n      <span class=\"value\">30<\/span>\n    <\/div>\n    <div class=\"metric-bar\">\n      <span class=\"label\">FP (5)<\/span>\n      <div class=\"bar-bg\"><div class=\"bar-fill\" style=\"width:5%;background:var(--accent4)\">False alarm<\/div><\/div>\n      <span class=\"value\">5<\/span>\n    <\/div>\n    <div class=\"metric-bar\">\n      <span class=\"label\">FN (5)<\/span>\n      <div class=\"bar-bg\"><div class=\"bar-fill\" style=\"width:5%;background:var(--accent3)\">Miss<\/div><\/div>\n      <span class=\"value\">5<\/span>\n    <\/div>\n    <div class=\"metric-bar\" style=\"margin-top:.8rem;border-top:1px solid var(--rule);padding-top:.6rem\">\n      <span class=\"label\" style=\"color:var(--accent)\">Accuracy<\/span>\n      <div class=\"bar-bg\"><div class=\"bar-fill\" style=\"width:90%;background:var(--accent)\">90 \/ 100<\/div><\/div>\n      <span class=\"value\" style=\"color:var(--accent)\">90%<\/span>\n    <\/div>\n  <\/div>\n  <figcaption><strong>Figure 2<\/strong> Accuracy example: 90 of 100 predictions correct (TP=60 + TN=30), accuracy = 90%<\/figcaption>\n<\/figure>\n\n<h3>3.2 The Fatal Pitfall of Accuracy<\/h3>\n\n<div class=\"info-box danger\">\n  <strong>Imbalanced Data Trap:<\/strong> When data is severely imbalanced, Accuracy becomes misleading. For example, of 1000 emails, 950 are normal and 50 are spam. A classifier that does <strong>nothing<\/strong> (labels everything as &#8220;normal&#8221;) achieves Accuracy = 950\/1000 = <strong>95%<\/strong>, yet it catches zero spam<sup><a href=\"#cite-3\">[3]<\/a><\/sup>.\n<\/div>\n\n<div class=\"compare-box\">\n  <div class=\"compare-col good\">\n    <h4>\u2705 When to Use<\/h4>\n    <p>Classes are roughly balanced<\/p>\n    <p>FP and FN costs are similar<\/p>\n    <p>Quick overall performance check needed<\/p>\n    <p>Initial reference for multi-class tasks<\/p>\n  <\/div>\n  <div class=\"compare-col bad\">\n    <h4>\u274c When NOT to Use<\/h4>\n    <p>Severely imbalanced data (fraud, rare disease)<\/p>\n    <p>Positive class is rare but critical (high FN cost)<\/p>\n    <p>Using Accuracy as the sole metric<\/p>\n    <p>Need to distinguish different error types<\/p>\n  <\/div>\n<\/div>\n\n<!-- 4. Precision -->\n<h2 id=\"en-4\">4. Precision<\/h2>\n\n<p><strong>Precision<\/strong> measures: <strong>of all samples predicted as positive, what fraction is actually positive<\/strong><sup><a href=\"#cite-1\">[1]<\/a><\/sup>.<\/p>\n\n<div class=\"formula-box\">\n  <div class=\"formula-name\">Precision Formula<\/div>\n  <div class=\"formula\">Precision = TP \/ (TP + FP)<\/div>\n<\/div>\n\n<h3>4.1 Intuitive Understanding<\/h3>\n\n<p>Precision answers: <strong>&#8220;When the model says &#8216;yes&#8217;, how trustworthy is it?&#8221;<\/strong> It focuses on the <strong>purity<\/strong> of positive predictions.<\/p>\n\n<div class=\"card\">\n  <h4>Spam Filter Example<\/h4>\n  <p>The model flags 20 emails as &#8220;spam&#8221;\u201416 are actually spam, 4 are normal emails misclassified. Precision = 16 \/ 20 = <strong>80%<\/strong>.<\/p>\n  <p>Higher Precision means fewer normal emails are wrongly flagged as spam\u2014users won&#8217;t lose important emails.<\/p>\n<\/div>\n\n<h3>4.2 Precision Characteristics<\/h3>\n\n<div class=\"table-wrap\">\n  <table>\n    <caption><strong>Table 2<\/strong> Precision metric characteristics<\/caption>\n    <thead>\n      <tr><th>Dimension<\/th><th>Description<\/th><\/tr>\n    <\/thead>\n    <tbody>\n      <tr><td>Focus<\/td><td>Purity of positive predictions (minimize FP)<\/td><\/tr>\n      <tr><td>Numerator<\/td><td>TP (correctly predicted positives)<\/td><\/tr>\n      <tr><td>Denominator<\/td><td>TP + FP (all predicted positives)<\/td><\/tr>\n      <tr><td>Excludes TN<\/td><td>Doesn&#8217;t consider correctly rejected negatives<\/td><\/tr>\n      <tr><td>Extreme value<\/td><td>FP=0 \u2192 Precision=1 (better to miss than misfire)<\/td><\/tr>\n      <tr><td>How to improve<\/td><td>Raise threshold, predict positive only when most confident<\/td><\/tr>\n    <\/tbody>\n  <\/table>\n<\/div>\n\n<div class=\"info-box warn\">\n  <strong>Precision&#8217;s Limitation:<\/strong> High Precision doesn&#8217;t necessarily mean a good model. If the model is extremely conservative\u2014predicting positive for only 1 sample it&#8217;s most sure about (and it&#8217;s correct)\u2014Precision = 1\/1 = 100%, but it may have missed 999 actual positives. High Precision often comes at the cost of Recall.\n<\/div>\n\n<!-- 5. Recall -->\n<h2 id=\"en-5\">5. Recall<\/h2>\n\n<p><strong>Recall<\/strong> (also known as Sensitivity, Hit Rate, or True Positive Rate) measures: <strong>of all actual positive samples, what fraction was correctly predicted as positive<\/strong><sup><a href=\"#cite-4\">[4]<\/a><\/sup>.<\/p>\n\n<div class=\"formula-box\">\n  <div class=\"formula-name\">Recall Formula<\/div>\n  <div class=\"formula\">Recall = TP \/ (TP + FN)<\/div>\n<\/div>\n\n<h3>5.1 Intuitive Understanding<\/h3>\n\n<p>Recall answers: <strong>&#8220;Of all actual positives, how many did the model find?&#8221;<\/strong> It focuses on <strong>coverage<\/strong>\u2014did we miss any positives?<\/p>\n\n<div class=\"card\">\n  <h4>Cancer Detection Example<\/h4>\n  <p>Of 100 cancer patients, the model correctly identifies 85 and misses 15. Recall = 85 \/ 100 = <strong>85%<\/strong>.<\/p>\n  <p>Higher Recall means fewer missed diagnoses. In medical settings, the cost of missing a patient (FN) is far higher than a false alarm (FP)\u2014better to run one more test than miss a patient.<\/p>\n<\/div>\n\n<h3>5.2 Recall Characteristics<\/h3>\n\n<div class=\"table-wrap\">\n  <table>\n    <caption><strong>Table 3<\/strong> Recall metric characteristics<\/caption>\n    <thead>\n      <tr><th>Dimension<\/th><th>Description<\/th><\/tr>\n    <\/thead>\n    <tbody>\n      <tr><td>Focus<\/td><td>Coverage of positive class (minimize FN)<\/td><\/tr>\n      <tr><td>Numerator<\/td><td>TP (found positives)<\/td><\/tr>\n      <tr><td>Denominator<\/td><td>TP + FN (all actual positives)<\/td><\/tr>\n      <tr><td>Excludes TN<\/td><td>Doesn&#8217;t consider correctly rejected negatives<\/td><\/tr>\n      <tr><td>Extreme value<\/td><td>FN=0 \u2192 Recall=1 (find everything, even false alarms)<\/td><\/tr>\n      <tr><td>How to improve<\/td><td>Lower threshold, predict positive for any possibly positive sample<\/td><\/tr>\n    <\/tbody>\n  <\/table>\n<\/div>\n\n<div class=\"info-box warn\">\n  <strong>Recall&#8217;s Limitation:<\/strong> High Recall doesn&#8217;t necessarily mean a good model. If the model predicts positive for all samples, FN=0, Recall=100%, but it generates massive FP. High Recall often comes at the cost of Precision.\n<\/div>\n\n<!-- 6. F1-score -->\n<h2 id=\"en-6\">6. F1-score<\/h2>\n\n<p><strong>F1-score<\/strong> is the <strong>harmonic mean<\/strong> of Precision and Recall, designed to balance the two<sup><a href=\"#cite-5\">[5]<\/a><\/sup>.<\/p>\n\n<div class=\"formula-box\">\n  <div class=\"formula-name\">F1-score Formula<\/div>\n  <div class=\"formula\">F1 = 2 \u00d7 (Precision \u00d7 Recall) \/ (Precision + Recall)<\/div>\n<\/div>\n\n<p>Equivalent form:<\/p>\n\n<pre class=\"code-block\">F1 = 2 \u00d7 TP \/ (2 \u00d7 TP + FP + FN)<\/pre>\n\n<h3>6.1 Why Harmonic Mean?<\/h3>\n\n<p>The key difference between harmonic and arithmetic mean: <strong>harmonic mean is more sensitive to extreme values<\/strong>. If Precision=0.01 and Recall=1.0, the arithmetic mean = 0.505 (looks okay), but the harmonic mean F1 = 0.0198 (exposes the low Precision)<sup><a href=\"#cite-5\">[5]<\/a><\/sup>.<\/p>\n\n<div class=\"table-wrap\">\n  <table>\n    <caption><strong>Table 4<\/strong> Comparison of averaging methods<\/caption>\n    <thead>\n      <tr><th>Precision<\/th><th>Recall<\/th><th>Arithmetic Mean<\/th><th>F1 (Harmonic)<\/th><\/tr>\n    <\/thead>\n    <tbody>\n      <tr><td>0.80<\/td><td>0.80<\/td><td>0.80<\/td><td><strong>0.80<\/strong><\/td><\/tr>\n      <tr><td>0.90<\/td><td>0.50<\/td><td>0.70<\/td><td><strong>0.643<\/strong><\/td><\/tr>\n      <tr><td>1.00<\/td><td>0.50<\/td><td>0.75<\/td><td><strong>0.667<\/strong><\/td><\/tr>\n      <tr><td>0.01<\/td><td>1.00<\/td><td>0.505<\/td><td><strong>0.0198<\/strong><\/td><\/tr>\n      <tr><td>0.00<\/td><td>1.00<\/td><td>0.50<\/td><td><strong>0.00<\/strong><\/td><\/tr>\n    <\/tbody>\n  <\/table>\n<\/div>\n\n<div class=\"info-box\">\n  <strong>Harmonic Mean&#8217;s Punishment:<\/strong> When either Precision or Recall is 0, F1 must be 0. This means F1 requires the model to perform decently on both dimensions\u2014no &#8220;one-legged&#8221; walking. The arithmetic mean would mask an extreme low value.\n<\/div>\n\n<h3>6.2 F-beta Generalization<\/h3>\n\n<p>F1 is a special case of the more general <strong>F-\u03b2<\/strong> metric (\u03b2=1). \u03b2 controls Recall&#8217;s weight relative to Precision:<\/p>\n\n<div class=\"formula-box\">\n  <div class=\"formula-name\">F-\u03b2 Formula<\/div>\n  <div class=\"formula\">F\u03b2 = (1 + \u03b2\u00b2) \u00d7 (Precision \u00d7 Recall) \/ (\u03b2\u00b2 \u00d7 Precision + Recall)<\/div>\n<\/div>\n\n<div class=\"cmd-grid\">\n  <div class=\"cmd-card\">\n    <h4>F1 (\u03b2=1)<\/h4>\n    <span class=\"desc\">Equal weight to Precision and Recall. Most common composite metric.<\/span>\n  <\/div>\n  <div class=\"cmd-card\">\n    <h4>F2 (\u03b2=2)<\/h4>\n    <span class=\"desc\">Recall weighted higher. For high FN-cost scenarios (e.g., medical).<\/span>\n  <\/div>\n  <div class=\"cmd-card\">\n    <h4>F0.5 (\u03b2=0.5)<\/h4>\n    <span class=\"desc\">Precision weighted higher. For high FP-cost scenarios (e.g., spam).<\/span>\n  <\/div>\n<\/div>\n\n<!-- 7. Relationships -->\n<h2 id=\"en-7\">7. Relationships and Trade-offs<\/h2>\n\n<h3>7.1 The Precision-Recall Seesaw<\/h3>\n\n<p>There is a natural <strong>trade-off<\/strong> between Precision and Recall. By adjusting the classification threshold, you can improve one metric but typically at the expense of the other<sup><a href=\"#cite-4\">[4]<\/a><\/sup>.<\/p>\n\n<figure id=\"fig-3-en\">\n  <div class=\"flow-diagram\">\n    <div class=\"flow-row\">\n      <span class=\"flow-item yellow\">Lower threshold<\/span>\n      <span class=\"flow-arrow\">\u2192<\/span>\n      <span class=\"flow-item green\">More positive predictions<\/span>\n      <span class=\"flow-arrow\">\u2192<\/span>\n      <span class=\"flow-item green\">Recall \u2191<\/span>\n      <span class=\"flow-arrow\">+<\/span>\n      <span class=\"flow-item red\">FP \u2191<\/span>\n      <span class=\"flow-arrow\">\u2192<\/span>\n      <span class=\"flow-item red\">Precision \u2193<\/span>\n    <\/div>\n    <div class=\"flow-row\" style=\"margin-top:.6rem\">\n      <span class=\"flow-item yellow\">Raise threshold<\/span>\n      <span class=\"flow-arrow\">\u2192<\/span>\n      <span class=\"flow-item\">Fewer positive predictions<\/span>\n      <span class=\"flow-arrow\">\u2192<\/span>\n      <span class=\"flow-item green\">Precision \u2191<\/span>\n      <span class=\"flow-arrow\">+<\/span>\n      <span class=\"flow-item red\">FN \u2191<\/span>\n      <span class=\"flow-arrow\">\u2192<\/span>\n      <span class=\"flow-item red\">Recall \u2193<\/span>\n    <\/div>\n  <\/div>\n  <figcaption><strong>Figure 3<\/strong> Precision-Recall trade-off: adjusting threshold is like a seesaw<\/figcaption>\n<\/figure>\n\n<h3>7.2 Four-Metric Comparison<\/h3>\n\n<div class=\"table-wrap\">\n  <table>\n    <caption><strong>Table 5<\/strong> Core comparison of the four metrics<\/caption>\n    <thead>\n      <tr><th>Metric<\/th><th>Formula<\/th><th>Focus<\/th><th>Excludes<\/th><th>Most afraid of<\/th><\/tr>\n    <\/thead>\n    <tbody>\n      <tr><td><strong>Accuracy<\/strong><\/td><td>(TP+TN)\/All<\/td><td>Overall correctness<\/td><td>\u2014<\/td><td>Imbalanced data<\/td><\/tr>\n      <tr><td><strong>Precision<\/strong><\/td><td>TP\/(TP+FP)<\/td><td>Prediction purity<\/td><td>TN<\/td><td>Too many FP<\/td><\/tr>\n      <tr><td><strong>Recall<\/strong><\/td><td>TP\/(TP+FN)<\/td><td>Positive coverage<\/td><td>TN<\/td><td>Too many FN<\/td><\/tr>\n      <tr><td><strong>F1<\/strong><\/td><td>2PR\/(P+R)<\/td><td>P\/R balance<\/td><td>TN<\/td><td>Extreme P or R<\/td><\/tr>\n    <\/tbody>\n  <\/table>\n<\/div>\n\n<div class=\"info-box success\">\n  <strong>Key Insight:<\/strong> Precision, Recall, and F1 all <strong>exclude TN<\/strong>. This means in scenarios with abundant negative samples (e.g., fraud detection where 99.9% are normal), TN is huge but doesn&#8217;t participate in these three metrics\u2014so they are not directly affected by data imbalance. This is why they&#8217;re preferred over Accuracy for imbalanced data.\n<\/div>\n\n<h3>7.3 Numerical Example: Multi-dimensional Evaluation<\/h3>\n\n<div class=\"card\">\n  <h4>Scenario: Disease Screening<\/h4>\n  <p>Of 1000 people, 100 are actually sick. The model predicts 120 as &#8220;sick&#8221; (80 correctly, 40 false alarms), the remaining 880 as &#8220;healthy&#8221; (20 missed, 860 correctly excluded).<\/p>\n  <ul style=\"margin-left:1.5rem;margin-bottom:.5rem\">\n    <li>TP=80, FP=40, FN=20, TN=860<\/li>\n    <li><strong>Accuracy<\/strong> = (80+860)\/1000 = <strong>94%<\/strong> (looks good)<\/li>\n    <li><strong>Precision<\/strong> = 80\/(80+40) = <strong>66.7%<\/strong> (1 in 3 diagnoses is false alarm)<\/li>\n    <li><strong>Recall<\/strong> = 80\/(80+20) = <strong>80%<\/strong> (found 80 of 100 patients)<\/li>\n    <li><strong>F1<\/strong> = 2\u00d7(0.667\u00d70.80)\/(0.667+0.80) = <strong>72.7%<\/strong><\/li>\n  <\/ul>\n<\/div>\n\n<figure id=\"fig-4-en\">\n  <div class=\"metric-bar-container\" style=\"border:none;box-shadow:none;padding:0\">\n    <div class=\"metric-bar\">\n      <span class=\"label\" style=\"color:var(--accent)\">Accuracy<\/span>\n      <div class=\"bar-bg\"><div class=\"bar-fill\" style=\"width:94%;background:var(--accent)\">94%<\/div><\/div>\n      <span class=\"value\">94%<\/span>\n    <\/div>\n    <div class=\"metric-bar\">\n      <span class=\"label\" style=\"color:var(--accent2)\">Precision<\/span>\n      <div class=\"bar-bg\"><div class=\"bar-fill\" style=\"width:66.7%;background:var(--accent2)\">66.7%<\/div><\/div>\n      <span class=\"value\">66.7%<\/span>\n    <\/div>\n    <div class=\"metric-bar\">\n      <span class=\"label\" style=\"color:var(--accent4);color:#1a1a2e\">Recall<\/span>\n      <div class=\"bar-bg\"><div class=\"bar-fill\" style=\"width:80%;background:var(--accent4)\">80%<\/div><\/div>\n      <span class=\"value\">80%<\/span>\n    <\/div>\n    <div class=\"metric-bar\">\n      <span class=\"label\" style=\"color:var(--accent5)\">F1<\/span>\n      <div class=\"bar-bg\"><div class=\"bar-fill\" style=\"width:72.7%;background:var(--accent5)\">72.7%<\/div><\/div>\n      <span class=\"value\">72.7%<\/span>\n    <\/div>\n  <\/div>\n  <figcaption><strong>Figure 4<\/strong> Same model across four metrics: Accuracy is inflated, F1 reflects true composite performance<\/figcaption>\n<\/figure>\n\n<!-- 8. Imbalanced Datasets -->\n<h2 id=\"en-8\">8. Imbalanced Dataset Challenges<\/h2>\n\n<p>When positive\/negative ratios are extreme (fraud 1:1000, rare disease 1:10000), Accuracy fails. We need Precision, Recall, and F1<sup><a href=\"#cite-6\">[6]<\/a><\/sup>.<\/p>\n\n<h3>8.1 Accuracy Failure Demo<\/h3>\n\n<div class=\"compare-box\">\n  <div class=\"compare-col bad\">\n    <h4>\u274c Looking at Accuracy Only<\/h4>\n    <p>Of 10000 transactions, 10 are fraud. Model predicts all as &#8220;normal.&#8221;<\/p>\n    <p>TP=0, FP=0, FN=10, TN=9990<\/p>\n    <p><strong>Accuracy = 9990\/10000 = 99.9%<\/strong><\/p>\n    <p>Looks great\u2014but caught zero fraud.<\/p>\n  <\/div>\n  <div class=\"compare-col good\">\n    <h4>\u2705 Looking at P\/R\/F1<\/h4>\n    <p>Same model:<\/p>\n    <p><strong>Precision<\/strong> = 0\/(0+0) = <strong>undefined<\/strong><\/p>\n    <p><strong>Recall<\/strong> = 0\/(0+10) = <strong>0%<\/strong><\/p>\n    <p><strong>F1<\/strong> = <strong>0%<\/strong> (or undefined)<\/p>\n    <p>Immediately exposes model is useless.<\/p>\n  <\/div>\n<\/div>\n\n<h3>8.2 Strategies for Imbalanced Data<\/h3>\n\n<ol class=\"steps\">\n  <li>\n    <strong>Choose the Right Metric<\/strong>\n    <span class=\"note\">Use Precision, Recall, F1 instead of Accuracy. Consider PR-AUC (area under Precision-Recall curve).<\/span>\n  <\/li>\n  <li>\n    <strong>Resampling<\/strong>\n    <span class=\"note\">Oversample minority class (SMOTE) or undersample majority class to balance training data.<\/span>\n  <\/li>\n  <li>\n    <strong>Class Weighting<\/strong>\n    <span class=\"note\">Assign higher weight to minority class in loss function to make the model care more about its errors.<\/span>\n  <\/li>\n  <li>\n    <strong>Threshold Tuning<\/strong>\n    <span class=\"note\">Default 0.5 threshold may not be optimal; adjust based on business needs to balance P\/R.<\/span>\n  <\/li>\n  <li>\n    <strong>Use Appropriate Algorithms<\/strong>\n    <span class=\"note\">Ensemble methods (XGBoost) and anomaly detection approaches are more robust to imbalance.<\/span>\n  <\/li>\n<\/ol>\n\n<!-- 9. Multi-class Extensions -->\n<h2 id=\"en-9\">9. Multi-class Extensions<\/h2>\n\n<p>In multi-class tasks (e.g., digit recognition 0-9), the confusion matrix expands to N\u00d7N. How do we extend binary metrics to multi-class? Three common averaging strategies<sup><a href=\"#cite-7\">[7]<\/a><\/sup>:<\/p>\n\n<h3>9.1 Three Averaging Strategies<\/h3>\n\n<div class=\"table-wrap\">\n  <table>\n    <caption><strong>Table 6<\/strong> Multi-class averaging strategies compared<\/caption>\n    <thead>\n      <tr><th>Strategy<\/th><th>Calculation<\/th><th>Characteristics<\/th><th>Use Case<\/th><\/tr>\n    <\/thead>\n    <tbody>\n      <tr><td><strong>Macro<\/strong><\/td><td>Compute per-class metrics, then arithmetic mean<\/td><td>Equal weight per class; emphasizes rare classes<\/td><td>All classes equally important<\/td><\/tr>\n      <tr><td><strong>Micro<\/strong><\/td><td>Aggregate all TP\/FP\/FN, then compute global metric<\/td><td>Larger classes dominate<\/td><td>Overall performance<\/td><\/tr>\n      <tr><td><strong>Weighted<\/strong><\/td><td>Per-class metrics weighted by sample count<\/td><td>Accounts for class proportions<\/td><td>Imbalanced multi-class<\/td><\/tr>\n    <\/tbody>\n  <\/table>\n<\/div>\n\n<h3>9.2 Macro vs Micro Example<\/h3>\n\n<div class=\"card\">\n  <h4>Three-class Example<\/h4>\n  <p>3 classes A, B, C with 100, 50, 10 samples respectively.<\/p>\n  <pre class=\"code-block\">Per-class Recall:\n  Class A (100 samples): Recall = 90\/100 = 0.90\n  Class B ( 50 samples): Recall = 40\/50  = 0.80\n  Class C ( 10 samples): Recall = 5\/10   = 0.50\n\nMacro-Recall = (0.90 + 0.80 + 0.50) \/ 3 = 0.733\n  \u2192 Each class equally important; C's low Recall drags down average\n\nMicro-Recall = (90+40+5) \/ (100+50+10) = 135\/160 = 0.844\n  \u2192 Sample-weighted; A's high proportion boosts the average\n\nWeighted-Recall = (0.90\u00d7100 + 0.80\u00d750 + 0.50\u00d710) \/ 160 = 0.844\n  \u2192 Same as Micro (because of Recall's weighted nature)<\/pre>\n<\/div>\n\n<div class=\"info-box\">\n  <strong>Selection Guide:<\/strong> If minority class performance matters equally (e.g., disease diagnosis), use <strong>Macro-F1<\/strong>; if overall prediction accuracy is the focus, use <strong>Micro-F1<\/strong>; if classes are imbalanced and proportions matter, use <strong>Weighted-F1<\/strong>.\n<\/div>\n\n<h3>9.3 One-vs-Rest Approach<\/h3>\n\n<p>Multi-class metrics are typically computed using the <strong>One-vs-Rest<\/strong> (OvR) strategy: treat each class as &#8220;positive&#8221; in turn, all others as &#8220;negative,&#8221; compute that class&#8217;s P\/R\/F1, then aggregate using one of the averaging strategies above.<\/p>\n\n<figure id=\"fig-5-en\">\n  <div class=\"flow-diagram\">\n    <div class=\"flow-row\">\n      <span class=\"flow-item\">Class A as positive<\/span>\n      <span class=\"flow-arrow\">\u2192<\/span>\n      <span class=\"flow-item green\">P\/R\/F1 (A)<\/span>\n    <\/div>\n    <div class=\"flow-row\">\n      <span class=\"flow-item\">Class B as positive<\/span>\n      <span class=\"flow-arrow\">\u2192<\/span>\n      <span class=\"flow-item green\">P\/R\/F1 (B)<\/span>\n      <span class=\"flow-arrow\">\u2192<\/span>\n      <span class=\"flow-item purple\">Macro\/Micro\/Weighted<\/span>\n    <\/div>\n    <div class=\"flow-row\">\n      <span class=\"flow-item\">Class C as positive<\/span>\n      <span class=\"flow-arrow\">\u2192<\/span>\n      <span class=\"flow-item green\">P\/R\/F1 (C)<\/span>\n    <\/div>\n  <\/div>\n  <figcaption><strong>Figure 5<\/strong> One-vs-Rest strategy: converts N-class into N binary problems<\/figcaption>\n<\/figure>\n\n<!-- 10. Practical Guide -->\n<h2 id=\"en-10\">10. Practical Guide &#038; Code Examples<\/h2>\n\n<h3>10.1 Scenario-Metric Matching Guide<\/h3>\n\n<div class=\"scenario-grid\">\n  <div class=\"scenario-card medical\">\n    <h4>\ud83c\udfe5 Medical Diagnosis<\/h4>\n    <p class=\"priority\"><strong>Priority Metric:<\/strong>Recall \/ F2-score<\/p>\n    <p class=\"reason\">Missing a diagnosis (FN) is far costlier than a false alarm (FP). Better to run extra tests than miss a patient.<\/p>\n  <\/div>\n  <div class=\"scenario-card spam\">\n    <h4>\ud83d\udce7 Spam Filter<\/h4>\n    <p class=\"priority\"><strong>Priority Metric:<\/strong>Precision \/ F0.5<\/p>\n    <p class=\"reason\">Deleting a normal email (FP) is far costlier than letting spam through (FN).<\/p>\n  <\/div>\n  <div class=\"scenario-card fraud\">\n    <h4>\ud83d\udcb3 Fraud Detection<\/h4>\n    <p class=\"priority\"><strong>Priority Metric:<\/strong>Recall \/ PR-AUC<\/p>\n    <p class=\"reason\">Missing fraud is hugely expensive; better to over-review. Extremely imbalanced data.<\/p>\n  <\/div>\n  <div class=\"scenario-card search\">\n    <h4>\ud83d\udd0d Search Engine<\/h4>\n    <p class=\"priority\"><strong>Priority Metric:<\/strong>Precision@K<\/p>\n    <p class=\"reason\">Users only look at top results; precision of returned items matters more than coverage.<\/p>\n  <\/div>\n<\/div>\n\n<h3>10.2 Decision Flowchart<\/h3>\n\n<figure id=\"fig-6-en\">\n  <div class=\"flow-diagram\">\n    <div class=\"flow-row\">\n      <span class=\"flow-item purple\">Is data balanced?<\/span>\n    <\/div>\n    <div class=\"flow-row\">\n      <span class=\"flow-item green\">Yes \u2192 Accuracy<\/span>\n      <span class=\"flow-arrow\" style=\"margin:0 1rem\">|<\/span>\n      <span class=\"flow-item yellow\">No \u2192 continue<\/span>\n    <\/div>\n    <div class=\"flow-row\" style=\"margin-top:.3rem\">\n      <span class=\"flow-arrow\">\u2193<\/span>\n    <\/div>\n    <div class=\"flow-row\">\n      <span class=\"flow-item purple\">Which costs more: FP or FN?<\/span>\n    <\/div>\n    <div class=\"flow-row\">\n      <span class=\"flow-item\">FP high \u2192 Precision<\/span>\n      <span class=\"flow-arrow\">|<\/span>\n      <span class=\"flow-item green\">FN high \u2192 Recall<\/span>\n      <span class=\"flow-arrow\">|<\/span>\n      <span class=\"flow-item purple\">Equal \u2192 F1<\/span>\n    <\/div>\n  <\/div>\n  <figcaption><strong>Figure 6<\/strong> Metric selection decision flow<\/figcaption>\n<\/figure>\n\n<h3>10.3 Python Code Example<\/h3>\n\n<pre class=\"terminal\"><span class=\"comment\"># Computing classification metrics with scikit-learn<\/span>\n<span class=\"keyword\">from<\/span> sklearn.metrics <span class=\"keyword\">import<\/span> (\n    accuracy_score,\n    precision_score,\n    recall_score,\n    f1_score,\n    classification_report,\n    confusion_matrix\n)\n<span class=\"keyword\">from<\/span> sklearn.datasets <span class=\"keyword\">import<\/span> make_classification\n<span class=\"keyword\">from<\/span> sklearn.model_selection <span class=\"keyword\">import<\/span> train_test_split\n<span class=\"keyword\">from<\/span> sklearn.ensemble <span class=\"keyword\">import<\/span> RandomForestClassifier\n\n<span class=\"comment\"># 1. Generate imbalanced data (1:9 ratio)<\/span>\nX, y = make_classification(\n    n_samples=<span class=\"string\">1000<\/span>,\n    weights=[<span class=\"string\">0.1<\/span>],\n    random_state=<span class=\"string\">42<\/span>\n)\nX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=<span class=\"string\">0.3<\/span>)\n\n<span class=\"comment\"># 2. Train model<\/span>\nmodel = RandomForestClassifier(random_state=<span class=\"string\">42<\/span>)\nmodel.fit(X_train, y_train)\ny_pred = model.predict(X_test)\n\n<span class=\"comment\"># 3. Confusion matrix<\/span>\ncm = confusion_matrix(y_test, y_pred)\n<span class=\"keyword\">print<\/span>(<span class=\"string\">f\"Confusion Matrix:\\n{cm}\"<\/span>)\n<span class=\"output\"># [[256  11]\n#  [  13  20]]<\/span>\n\ntn, fp, fn, tp = cm.ravel()\n<span class=\"keyword\">print<\/span>(<span class=\"string\">f\"TP={tp}, TN={tn}, FP={fp}, FN={fn}\"<\/span>)\n<span class=\"output\"># TP=20, TN=256, FP=11, FN=13<\/span>\n\n<span class=\"comment\"># 4. Four core metrics<\/span>\n<span class=\"keyword\">print<\/span>(<span class=\"string\">f\"Accuracy:  {accuracy_score(y_test, y_pred):.4f}\"<\/span>)\n<span class=\"output\"># Accuracy:  0.9200<\/span>\n\n<span class=\"keyword\">print<\/span>(<span class=\"string\">f\"Precision: {precision_score(y_test, y_pred):.4f}\"<\/span>)\n<span class=\"output\"># Precision: 0.6452<\/span>\n\n<span class=\"keyword\">print<\/span>(<span class=\"string\">f\"Recall:    {recall_score(y_test, y_pred):.4f}\"<\/span>)\n<span class=\"output\"># Recall:    0.6061<\/span>\n\n<span class=\"keyword\">print<\/span>(<span class=\"string\">f\"F1-score:  {f1_score(y_test, y_pred):.4f}\"<\/span>)\n<span class=\"output\"># F1-score:  0.6250<\/span>\n\n<span class=\"comment\"># 5. Full classification report (with Macro\/Micro\/Weighted)<\/span>\n<span class=\"keyword\">print<\/span>(classification_report(y_test, y_pred, target_names=[<span class=\"string\">\"Negative\"<\/span>, <span class=\"string\">\"Positive\"<\/span>]))\n<span class=\"output\">#               precision  recall  f1-score  support\n#     Negative       0.95     0.96      0.95      267\n#     Positive       0.65     0.61      0.63       33\n#    accuracy                           0.92      300\n#   macro avg       0.80     0.78      0.79      300\n# weighted avg       0.92     0.92      0.92      300<\/span>\n\n<span class=\"comment\"># 6. Cross-validation with average strategy<\/span>\n<span class=\"keyword\">from<\/span> sklearn.model_selection <span class=\"keyword\">import<\/span> cross_val_score\n\nmacro_f1 = cross_val_score(model, X, y, cv=<span class=\"string\">5<\/span>, scoring=<span class=\"string\">\"f1_macro\"<\/span>)\nweighted_f1 = cross_val_score(model, X, y, cv=<span class=\"string\">5<\/span>, scoring=<span class=\"string\">\"f1_weighted\"<\/span>)\n<span class=\"keyword\">print<\/span>(<span class=\"string\">f\"Macro F1 CV:    {macro_f1.mean():.4f}\"<\/span>)\n<span class=\"keyword\">print<\/span>(<span class=\"string\">f\"Weighted F1 CV:{weighted_f1.mean():.4f}\"<\/span>)<\/pre>\n\n<h3>10.4 Common Pitfalls<\/h3>\n\n<div class=\"table-wrap\">\n  <table>\n    <caption><strong>Table 7<\/strong> Common pitfalls and corrections<\/caption>\n    <thead>\n      <tr><th>Pitfall<\/th><th>Problem<\/th><th>Correction<\/th><\/tr>\n    <\/thead>\n    <tbody>\n      <tr><td>Using only Accuracy<\/td><td>Inflated on imbalanced data<\/td><td>Pair with Precision\/Recall\/F1<\/td><\/tr>\n      <tr><td>Chasing highest F1<\/td><td>May not match business needs<\/td><td>Choose F\u03b2 based on FP\/FN cost<\/td><\/tr>\n      <tr><td>Ignoring threshold tuning<\/td><td>Default 0.5 may not be optimal<\/td><td>Use PR curve to select optimal threshold<\/td><\/tr>\n      <tr><td>Imbalanced test set<\/td><td>Biased metrics<\/td><td>Use stratified sampling or stratified CV<\/td><\/tr>\n      <tr><td>Ignoring TN effect<\/td><td>F1 excludes TN, may overestimate<\/td><td>Add MCC for extreme imbalance<\/td><\/tr>\n    <\/tbody>\n  <\/table>\n<\/div>\n\n<div class=\"info-box success\">\n  <strong>Summary:<\/strong> Accuracy, Precision, Recall, and F1-score are the cornerstones of classification evaluation. Each has its applicable scenario\u2014there is no &#8220;best metric,&#8221; only the &#8220;most appropriate metric for the current business context.&#8221; Understanding the confusion matrix is the prerequisite for mastering all of them. Choosing the right metric combination based on data balance and FP\/FN cost trade-offs is an essential skill for every ML practitioner.\n<\/div>\n\n<\/div><!-- end lang-en -->\n\n<!-- Sources -->\n<footer>\n  <div class=\"sources\">\n    <h2>Sources \/ \u53c2\u8003\u6765\u6e90<\/h2>\n    <ol>\n      <li id=\"cite-1\">\n        <span class=\"src-title\">MetricGate, How to Interpret a Confusion Matrix \u2014 Accuracy, Precision, Recall, F1 formulas and explanations.<\/span>\n        <a class=\"src-url\" href=\"https:\/\/metricgate.com\/blogs\/how-to-interpret-confusion-matrix\/\" target=\"_blank\" rel=\"noopener\">https:\/\/metricgate.com\/blogs\/how-to-interpret-confusion-matrix\/<\/a>\n      <\/li>\n      <li id=\"cite-2\">\n        <span class=\"src-title\">IBM, What is a confusion matrix? \u2014 Definition, components, and role in classification evaluation.<\/span>\n        <a class=\"src-url\" href=\"https:\/\/www.ibm.com\/think\/topics\/confusion-matrix\" target=\"_blank\" rel=\"noopener\">https:\/\/www.ibm.com\/think\/topics\/confusion-matrix<\/a>\n      <\/li>\n      <li id=\"cite-3\">\n        <span class=\"src-title\">MetricGate, How to Interpret a Confusion Matrix \u2014 Accuracy&#8217;s limitation with imbalanced classes (95% accuracy catching zero spam example).<\/span>\n        <a class=\"src-url\" href=\"https:\/\/metricgate.com\/blogs\/how-to-interpret-confusion-matrix\/\" target=\"_blank\" rel=\"noopener\">https:\/\/metricgate.com\/blogs\/how-to-interpret-confusion-matrix\/<\/a>\n      <\/li>\n      <li id=\"cite-4\">\n        <span class=\"src-title\">CSDN, Accuracy\u3001Precision\u3001Recall\u3001F1-Score\u3001ROC AUC\u8be6\u89e3 \u2014 Comprehensive guide with medical\/spam examples and metric comparison table.<\/span>\n        <a class=\"src-url\" href=\"https:\/\/blog.csdn.net\/2202_75569688\/article\/details\/151649058\" target=\"_blank\" rel=\"noopener\">https:\/\/blog.csdn.net\/2202_75569688\/article\/details\/151649058<\/a>\n      <\/li>\n      <li id=\"cite-5\">\n        <span class=\"src-title\">PLOS ONE (PMC), S2 Method. Model Performance Metrics \u2014 F1 as harmonic mean of precision and recall, mathematical formulation.<\/span>\n        <a class=\"src-url\" href=\"https:\/\/pmc.ncbi.nlm.nih.gov\/articles\/instance\/11090298\/bin\/pone.0303287.s002.pdf\" target=\"_blank\" rel=\"noopener\">https:\/\/pmc.ncbi.nlm.nih.gov\/articles\/instance\/11090298\/bin\/pone.0303287.s002.pdf<\/a>\n      <\/li>\n      <li id=\"cite-6\">\n        <span class=\"src-title\">MetricGate, AUC vs. Accuracy vs. F1 Score \u2014 Scenario-based comparison: when accuracy is misleading, when F1 or AUC is recommended.<\/span>\n        <a class=\"src-url\" href=\"https:\/\/metricgate.com\/blogs\/auc-vs-accuracy-vs-f1\/\" target=\"_blank\" rel=\"noopener\">https:\/\/metricgate.com\/blogs\/auc-vs-accuracy-vs-f1\/<\/a>\n      <\/li>\n      <li id=\"cite-7\">\n        <span class=\"src-title\">Sarwan Pasha, Model Evaluation and Selection \u2014 Multi-class metrics, Macro\/Micro F1, and real-world application examples (medical, spam, fraud).<\/span>\n        <a class=\"src-url\" href=\"https:\/\/sarwanpasha.github.io\/Courses\/ME_1.pdf\" target=\"_blank\" rel=\"noopener\">https:\/\/sarwanpasha.github.io\/Courses\/ME_1.pdf<\/a>\n      <\/li>\n    <\/ol>\n  <\/div>\n<\/footer>\n\n<\/main>\n\n<button class=\"back-top\" onclick=\"scrollToTop()\" title=\"Back to top\">\u2191<\/button>\n\n<script>\nfunction setLang(lang) {\n  document.querySelectorAll('.lang-section').forEach(s => s.classList.remove('active'));\n  document.getElementById('lang-' + lang).classList.add('active');\n  document.getElementById('btn-zh').classList.toggle('active', lang === 'zh');\n  document.getElementById('btn-en').classList.toggle('active', lang === 'en');\n  localStorage.setItem('cm-lang', lang);\n  window.scrollTo(0, 0);\n}\n\nfunction toggleTheme() {\n  const current = document.documentElement.getAttribute('data-theme');\n  const next = current === 'dark' ? 'light' : 'dark';\n  document.documentElement.setAttribute('data-theme', next === 'light' ? '' : 'dark');\n  localStorage.setItem('cm-theme', next);\n  updateThemeButton(next);\n}\n\nfunction updateThemeButton(theme) {\n  const btn = document.querySelector('.theme-toggle');\n  btn.innerHTML = theme === 'dark' ? '\u263e' : '&#9788;';\n}\n\nfunction scrollToTop() {\n  window.scrollTo({ top: 0, behavior: 'smooth' });\n}\n\nwindow.addEventListener('scroll', function() {\n  const scrolled = window.scrollY;\n  const height = document.documentElement.scrollHeight - window.innerHeight;\n  const progress = (scrolled \/ height) * 100;\n  document.getElementById('progressBar').style.width = progress + '%';\n  const backBtn = document.querySelector('.back-top');\n  if (scrolled > 300) {\n    backBtn.classList.add('visible');\n  } else {\n    backBtn.classList.remove('visible');\n  }\n});\n\n(function() {\n  const savedLang = localStorage.getItem('cm-lang');\n  if (savedLang === 'en') {\n    setLang('en');\n  }\n  const savedTheme = localStorage.getItem('cm-theme');\n  if (savedTheme === 'dark') {\n    document.documentElement.setAttribute('data-theme', 'dark');\n    updateThemeButton('dark');\n  }\n})();\n<\/script>\n<\/body>\n<\/html>\n\n","protected":false},"excerpt":{"rendered":"<p>\u5206\u7c7b\u8bc4\u4f30\u6307\u6807\u5b8c\u6574\u6307\u5357 \u00b7 Classification Metrics Guide \ud83d\udcca \u5206\u7c7b\u8bc4\u4f30\u6307\u6807 \u4e2d\u6587 E [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[],"class_list":["post-397","post","type-post","status-publish","format-standard","hentry","category-ai"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/numsimlab.com\/index.php?rest_route=\/wp\/v2\/posts\/397","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/numsimlab.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/numsimlab.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/numsimlab.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/numsimlab.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=397"}],"version-history":[{"count":1,"href":"https:\/\/numsimlab.com\/index.php?rest_route=\/wp\/v2\/posts\/397\/revisions"}],"predecessor-version":[{"id":398,"href":"https:\/\/numsimlab.com\/index.php?rest_route=\/wp\/v2\/posts\/397\/revisions\/398"}],"wp:attachment":[{"href":"https:\/\/numsimlab.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=397"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/numsimlab.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=397"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/numsimlab.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=397"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}