Chronic Kidney Disease (UCI) (chronic-kidney-disease-uci) — AI-Ready Wikipedia

UCI 机器学习仓库 ID 336——印度泰米尔纳德邦 Apollo Hospitals 2015 年捐赠的 400 例肾内科检验表格数据集,24 项临床指标+ckd/notckd 二分类标签,缺失率 10.12%、零缺失完整行仅 39.5%,机器学习教科书级小数据与 99%+ 准确率通胀现象的活标本

来源 Apollo Hospitals(印度泰米尔纳德邦)肾内科患者 24 项临床检验/体格检查指标(人口学、尿液检查、血生化、血液学、合并症五组)+ 临床诊断二分类标签 class(ckd/notckd);官方唯一机读格式 data.csv(45,092 字节,401 行×25 列)发布时间: 2026-09-29最后更新: 2026-09-29 阅读 8
Chronic Kidney Disease (UCI) (chronic-kidney-disease-uci) — AI-Ready Wikipedia

信息速览

数据集名称Chronic Kidney Disease (UCI) (chronic-kidney-disease-uci) — AI-Ready Wikipedia
数据类型原始数据,临床检验,含缺失值,二分类标签
规模400 例患者(ckd 250 / notckd 150,归一后口径;原样含 2 例 ckd\t 脏标签;年龄 2-90 岁,均值 51.48±17.17)
接入方式Apollo Hospitals(印度泰米尔纳德邦)肾内科患者 24 项临床检验/体格检查指标(人口学、尿液检查、血生化、血液学、合并症五组)+ 临床诊断二分类标签 class(ckd/notckd);官方唯一机读格式 data.csv(45,092 字节,401 行×25 列)
AI 就绪度

INFOBOX — Chronic Kidney Disease (UCI) 一屏速览

维度 内容
本质 400 例肾内科患者的 24 项临床检验/体格检查指标 + 1 个二分类标签(ckd/notckd)的表格数据集
出处 UCI Machine Learning Repository ID 336;DOI 10.24432/C5G020;license CC BY 4.0
捐赠 L. Rubini、P. Soundarapandian、P. Eswaran,2015-07-02 捐赠;2024-03-04 元数据更新
医院 Apollo Hospitals(印度泰米尔纳德邦);城市三源三口径(Managiri/Manamadurai/Karaikudi,见坑 6)
规模 401 行×25 列 CSV(45,092 字节);24 特征+class;五组特征体系(人口学/尿液/血生化/血液学/合并症)
标签 ckd 250 / notckd 150(归一口径 62.5%/37.5%,中度不平衡);原样含 2 例 ckd\t 脏标签
缺失 1012/10000 格 = 10.12%;24 列全有缺失;零缺失完整行仅 158(39.5%);重复行 0
极端值 bgr 22 mg/dl、sc 76 mg/dl、pot 47 mEq/L 等(疑小数点错位,官方未注,见坑 7)
基准 无官方伴生论文、无官方榜单;社区基准 Qin 2019 RF 99.75%/集成 99.83%(被引 379+)、Chittora 2021 DNN 99.6%、ANFIS-PSO 2026 单分割 100% vs 5 折 CV 87.00%
数据学真相 150 例 notckd 在 al/su/htn/dm/cad/appet/pe/ane 等 9 列上取值完全规则——任务近乎规则可分,是 99%+ 论文扎堆的根源(§5.4)
获取 官方页/API/data.csv 三通道全通(§6);旧版 .arff 路径全 404,官方 zip 内是 .rar(坑 5)
教学定位 与 Iris、Heart Disease、Pima 同级的教科书级小数据;"缺失值+不平衡+特征工程"三合一教学样本
库内互链 parkinsons-voice-uci (444)、drug-reviews-uci (485)、mimic-iv-clinical-database (4)、mimic-iii (106)、stroke-scale-mimic-iii (596)

Chronic Kidney Disease 是一个"被引用了数千次、却连一份官方论文都没有"的传奇小数据集:印度泰米尔纳德邦 Apollo Hospitals 的 400 名肾内科患者,24 项常规检验指标,加一个"是/否慢性肾病"的诊断标签,2015 年 7 月捐赠给 UCI 机器学习仓库。它体积不到 45 KB,却在谷歌学术上支撑了至少一篇被引 379+ 的 IEEE Access 论文,衍生文献总量以千计。它同时是机器学习教学里最锋利的反面教材之一——10.12% 的缺失率、只剩 39.5% 的完整行、2 例带着隐藏制表符的脏标签、几个疑似小数点错位的极端值,以及"随便跑个模型就 99%"的基准通胀奇观,全都在这 400 行数据里。

导语读法五则:

  1. 只想下数据:直奔 §6 获取与许可——认准 data.csv 一条路,教程里的旧版 .arff 链接全是死路(坑 5)。
  2. 想跑出"像论文里那样"的高准确率:先读 §5.4 的 notckd 判别模式分析再动手——你会明白 99% 从哪里来、又为什么不可信。
  3. 做缺失值/不平衡方法研究:直奔 §3 与 §4——10.12% 的非随机缺失加 62.5%/37.5% 的类分布,是天然的方法学试验田。
  4. 不确定从哪开始:直奔 §9 使用指南——教学者、方法研究者、临床信息学入门者、数据工程师四类读者各有现成的行动清单。
  5. 要引用或再分发:直奔 §6.4 引用格式与附录 O 数据卡模板——CC BY 4.0 的义务只有署名,但署名要署对。

§0 导读:这个数据集解决什么问题

慢性肾病(Chronic Kidney Disease, CKD)是全球性的公共卫生负担:起病隐匿、早期几无症状、一旦进入终末期即需透析或移植。临床识别 CKD 靠的不是单一金指标,而是一组常规检查的组合信号——尿常规里的蛋白尿与血尿、血生化里的肌酐与尿素、血常规里的血红蛋白与红细胞压积,再加上高血压、糖尿病等合并症史。这套"多指标组合判别"恰好是机器学习二分类的原型场景:特征都是表格里的数值或等级,标签是临床医生给出的二值结论,任务清晰、指标可算、结果可解释。

Chronic Kidney Disease 数据集(下文简称 CKD-UCI)把上述场景压缩进了一张 400 行的表格。它是 UCI Machine Learning Repository 中与 Iris、Heart Disease、Pima Indians Diabetes 并列的"教科书级"医疗小数据:每个学过机器学习的人几乎都见过它,每个讲"缺失值处理"或"分类不平衡"的教程都爱用它。2015 年 7 月 2 日由 L. Rubini、P. Soundarapandian、P. Eswaran 三人捐赠,采集医院为 Apollo Hospitals(印度泰米尔纳德邦),官方摘要称采集期约两个月。数据本体是 25 列 CSV:24 个特征列横跨人口学(age、bp)、尿液检查(sg、al、su、rbc、pc、pcc、ba)、血生化(bgr、bu、sc、sod、pot)、血液学(hemo、pcv、wbcc、rbcc)、合并症与症状(htn、dm、cad、appet、pe、ane)五组,第 25 列 class 是二分类标签。

但 CKD-UCI 的真正价值,一半在数据本身,一半在它无意间成为的"方法学显微镜"。

第一重显微镜照向缺失数据。400 例 × 24 特征 = 9600 个特征格,加上 400 个标签格共 10000 格,其中 1012 格缺失(10.12%)。缺失不是均匀的:尿液镜检的红细胞(rbc,38.0% 缺失)、红细胞计数(rbcc,32.75%)、白细胞计数(wbcc,26.5%)缺得最狠,而食欲(appet)、足部水肿(pe)、贫血(ane)只缺 1 格。这意味着"删除含缺失行"的朴素策略会把样本砍到只剩 158 例(39.5%)——六成信息灰飞烟灭;而"均值插补"则会把 38% 缺失的 rbc 列插成一个常数柱。CKD-UCI 因此成为缺失机制讨论(MCAR/MAR/MNAR)与插补方法评测(KNN 插补、MICE、迭代插补)的天然演武场。

第二重显微镜照向基准通胀。这个数据集没有官方伴生论文、没有官方训练/测试划分、没有榜单——但社区基准论文数量惊人:随机森林 99.75%(Qin et al. 2019,IEEE Access,被引 379+)、DNN 99.6%(Chittora et al. 2021)、单次分割 100%(Sossi et al. 2019 XGBoost、ANFIS-PSO 2026)……而 ANFIS-PSO 2026 同一模型在 5 折交叉验证下只有 87.00%±3.59%——单分割与交叉验证之间隔着 13 个百分点。§5.4 会给出数据学解释:150 例 notckd 患者在 9 个特征列上取值完全规则(尿蛋白全 0、尿糖全 0、无高血压、无糖尿病……),这个任务在很大程度上是"规则可分"的,高准确率是数据构造的产物,而非模型智能的证明。

第三重显微镜照向数据卫生。官方 data.csv 的 class 列里藏着 2 例 ckd\t——末尾一个制表符,足以让不清洗的脚本把二分类变成三分类;dm 列里藏着 1 例 \tno;缺失值以字面量字符串 “NaN” 表示,手写 CSV 解析器会把它当成合法取值。这些"地雷"分布在具体行上(行 37、行 230、行 188),本条目逐一存照(§4 坑 1、坑 2、坑 3),让后来者不必再踩。

§0 读法三则:

  1. 这个条目是"数据+基准史+方法学批判"三合一:本体是 400 行 CSV,衍生物是数百篇基准论文与数千个教学 notebook,副产品是关于"数据质量决定结论上限"的一整套警示。
  2. 全文统计数字均出自本编辑部对官方 data.csv 的实测(45,092 字节版本,2026-09-29 下载);论文自报数字一律标注出处与"自报口径"。
  3. 检索时注意:“chronic-kidney-disease” 在不同平台指向不同资源——UCI 旧版页面、Kaggle 镜像、各大学课程镜像的内容与脏值可能互不一致,本条目一切以 UCI ID 336 的官方 data.csv 为准(坑 5)。

§1 数据集速览:十问十答

Q1:这份数据里到底有什么?
400 名肾内科患者,每人 24 项检查结果加 1 个诊断标签。24 项分五组:人口学与体格 2 项(年龄、血压)、尿液检查 7 项(比重、白蛋白、糖、红细胞、脓细胞、白细胞团、细菌)、血生化 5 项(随机血糖、尿素、肌酐、钠、钾)、血液学 4 项(血红蛋白、红细胞压积、白细胞计数、红细胞计数)、合并症与症状 6 项(高血压、糖尿病、冠脉疾病、食欲、足部水肿、贫血)。标签 class 取值 ckd(慢性肾病)或 notckd(非慢性肾病)。

Q2:400 例里病人和健康人各占多少?
归一后 ckd 250 例(62.5%)、notckd 150 例(37.5%)——中度不平衡。注意"归一"二字:官方 data.csv 原样是 ckd 248 例 + ckd\t 2 例 + notckd 150 例,那 2 例只是标签末尾多了个制表符(data.csv 行 37 与行 230),不清洗的话你的 value_counts 会数出 3 个类别(坑 1)。

Q3:数据是谁、在哪里、什么时候采的?
采集医院为 Apollo Hospitals——印度最大的私立医院集团之一,位于泰米尔纳德邦。捐赠者/创建者为 L. Rubini、P. Soundarapandian、P. Eswaran 三人(UCI API creators 字段原样),2015 年 7 月 2 日捐赠 UCI。官方摘要原文称采集"nearly 2 months of period",即采集期约两个月。至于 Apollo 具体在泰邦哪座城市——三份文献给出三个答案,官方未载(坑 6)。

Q4:特征都是什么类型?
官方 data.csv 里只有两种存储形态:数值列 11 个(age、bp、bgr、bu、sc、sod、pot、hemo、pcv、wbcc、rbcc)与字符串/等级列 14 个。但语义上更细:sg(比重)名义上是连续量、实际只取 1.005/1.010/1.015/1.020/1.025 五个离散值;al(尿白蛋白)与 su(尿糖)是 0-5 的六个等级;rbc/pc/pcc/ba/htn/dm/cad/appet/pe/ane 是二值类别;class 是目标。UCI 官方把 feature_types 统一标为 “Real”,这是平台级的粗粒度口径,别照抄进你的预处理代码。

Q5:缺失有多严重?缺在哪?
全表 10000 格缺 1012 格(10.12%),而且 24 个特征列无一幸免全有缺失。最缺的三列都在检验科室:rbc 缺 152 格(38.0%)、rbcc 缺 131 格(32.75%)、wbcc 缺 106 格(26.5%);最不缺的是症状三兄弟:appet/pe/ane 各缺 1 格。整行零缺失的"完整病例"只有 158 例(39.5%)——你的 dropna() 会把这 400 例砍成 158 例(坑 4)。

Q6:缺失值在文件里长什么样?
官方 data.csv 用字面量字符串 “NaN” 表示缺失。pandas read_csv 默认会把 “NaN” 解析成浮点 NaN,所以用 pandas 的人感觉不到它的存在;但手写 CSV 解析器、或把 CSV 先转成其他格式再读的工具链,会把 “NaN” 当成一个合法的字符串取值——于是你的名义列会多出一个 “NaN” 类别(坑 3)。

Q7:标签是怎么定的?
标签即临床诊断结论(ckd/notckd),但判定标准官方未注明——是否按 KDIGO 指南、是否用 eGFR 与分期口径、诊断由谁复核,UCI 页面与 API 均无一字。这是本数据集最大的悬案之一:意味着"ckd"标签的操作化定义不可追溯,也意味着它不适合做 CKD 分期或多级分类研究(它只有二分类,没有分期)。

Q8:为什么这么多论文报告 99%+ 的准确率?
因为 150 例 notckd 患者在 9 个特征列上取值完全规则:尿白蛋白全部为 0、尿糖全部为 0、无高血压、无糖尿病、无冠脉疾病、食欲全部 good、无足部水肿、无贫血、红细胞与脓细胞形态全部正常,尿比重只取 1.020/1.025 两档。换句话说,notckd 类近乎"规则可分",任何能学会"这些列全正常→notckd"的模型都能拿高分。这是数据构造的产物(§5.4 详析),拿它证明"我的模型比你的强"没有意义。

Q9:许可与获取方式?
UCI 官方口径 CC BY 4.0——商用允许、需署名,对 AI 训练与再分发非常友好。获取认准一条正路:UCI 官方页(ID 336)→ data.csv(45,092 字节,唯一官方机读格式)。旧版 .arff 文件时代的一切路径已 404;官方下载包里的 zip 解开后是个 .rar(官方页面自己也这么标),Linux 默认没有 unrar——直接走 data.csv,别跟压缩包纠缠(坑 5)。

Q10:引用格式是什么?
UCI 官方口径:Rubini, L., Soundarapandian, P., & Eswaran, P. Chronic Kidney Disease [Dataset]. UCI Machine Learning Repository. https://doi.org/10.24432/C5G020 。注意三点:DOI 10.24432/C5G020 是 2023 年平台改版后分配的;引用体量最大的社区基准论文是 Qin et al. 2019(IEEE Access,被引 379+),但它不是官方伴生论文——本数据集压根没有官方伴生论文(UCI API intro_paper: null)。

§2 数据构成:25 列逐列详解

2.0 总体档案

指纹项 实测值(2026-09-29,UCI 官方 data.csv)
文件 data.csv(https://archive.ics.uci.edu/static/public/336/data.csv)
体积 45,092 字节
行数 401 行 = 1 表头 + 400 数据行
列数 25 列 = 24 特征 + 1 标签(UCI API num_features: 24;不少论文写"25 attributes"是把 class 也算进去了——两口径都存照)
缺失表示 字面量字符串 “NaN”(坑 3)
全表缺失 1012 / 10000 格 = 10.12%
零缺失完整行 158 例(39.5%)
重复行 0
主键 无患者 ID 列,行序即唯一标识
分隔符 英文逗号;无引号包裹字段;脏值 ckd\t、\tno 内嵌制表符(坑 1、坑 2)

UCI 官方元数据口径:area=Other;tasks=Classification;characteristics=Multivariate;feature_types=Real;demographics=Age;target_col=class。其中 “feature_types=Real” 是平台级粗口径——实际只有 11 列是真数值,14 列是字符串/等级(§2.2 起逐列辨析);“demographics=Age” 也只登记了年龄,未登记性别——本数据集没有性别列,这也是常被文献忽略的一点(不少论文臆测"男女比例",实无此列可算)。

2.1 特征体系总览:五组 24 列

组 列 类型(实测) UCI API 单位 缺失(格 / %)
人口学与体格 age 数值-整数 无(demographic=Age) 9 / 2.25%
人口学与体格 bp 数值-整数 mm/Hg 12 / 3.0%
尿液检查 sg 等级(5 档离散值) 无(Categorical) 47 / 11.75%
尿液检查 al 等级(0-5) 无(Categorical) 46 / 11.5%
尿液检查 su 等级(0-5) 无(Categorical) 49 / 12.25%
尿液检查 rbc 二值 无(Binary) 152 / 38.0%
尿液检查 pc 二值 无(Binary) 65 / 16.25%
尿液检查 pcc 二值 无(Binary) 4 / 1.0%
尿液检查 ba 二值 无(Binary) 4 / 1.0%
血生化 bgr 数值-整数 mgs/dl 44 / 11.0%
血生化 bu 数值(含小数) mgs/dl 19 / 4.75%
血生化 sc 数值-连续 mgs/dl 17 / 4.25%
血生化 sod 数值(含小数) mEq/L 87 / 21.75%
血生化 pot 数值-连续 mEq/L 88 / 22.0%
血液学 hemo 数值-连续 gms 52 / 13.0%
血液学 pcv 数值-整数 无 units 字段(坑 9) 71 / 17.75%
血液学 wbcc 数值-整数 cells/cmm 106 / 26.5%
血液学 rbcc 数值-连续 millions/cmm 131 / 32.75%
合并症与症状 htn 二值 无(Binary) 2 / 0.5%
合并症与症状 dm 二值(含 1 脏值) 无(Binary) 2 / 0.5%
合并症与症状 cad 二值 无(Binary) 2 / 0.5%
合并症与症状 appet 二值 无(Binary) 1 / 0.25%
合并症与症状 pe 二值 无(Binary) 1 / 0.25%
合并症与症状 ane 二值 无(Binary) 1 / 0.25%
目标 class 二值(含 2 脏值) — 0

元数据与实测的两处小不符(本编辑部实测,供较真者参考):UCI API 把 bu、sod 标为 Integer,但实测 bu 最小值 1.5、sod 最小值 4.5,均存在小数取值——API 类型标注同样是粗口径。下列逐列详解中,"实测"均指对官方 data.csv 的直接统计。

2.2 人口学与体格组(2 列)

age — 年龄

数值列,实测 n=391(缺 9),均值 51.48±17.17,范围 [2, 90]。以中老年为主体的分布,与 CKD 的流行病学画像吻合;但最小值 2 岁、最大值 90 岁说明样本并未设年龄下限——data.csv 行 188 是一名 8 岁患儿(hemo 12.2,dm 列脏值 \tno 的所在行,见坑 2),2 岁患者亦在列。做"成人 CKD"叙事的论文请先查自己有没有把儿科病例一起算进去。UCI demographics 字段仅登记 Age,无性别列。

bp — 血压(mm/Hg)

数值列,实测 n=388(缺 12),均值 76.47±13.68,范围 [50, 180]。按临床惯例 bp 在这里指舒张压(diastolic),正常参考约 60-90;max 180 已达高血压急症级别。双口径存照:PLOS ONE 2024 论文(DOI 10.1371/journal.pone.0295234)报告 bp 均值 76.175,与本编辑部实算 76.47 差 0.295——推测系论文侧做过清洗或插补后重算;本条目正文按官方 data.csv 实算口径 76.47 书写。该列缺失仅 3.0%,是体格检查里记录最完整的一项。

2.3 尿液检查组(7 列)

sg — 尿比重(specific gravity)

名义上连续、实测离散:1.005×7 / 1.010×84 / 1.015×75 / 1.020×106 / 1.025×81,NaN 47(缺 11.75%)。五档取值对应尿液浓缩能力的梯度——肾脏浓缩功能受损时比重趋向低档固定。CKD 患者常见 1.005-1.015 的低固定比重,而 notckd 子集只取 {1.020, 1.025} 两档(§5.4)。建模时当序数变量处理比当连续变量更稳。

al — 尿白蛋白(albumin),0-5 等级

等级列,实测计数:0×199 / 1×44 / 2×43 / 3×43 / 4×24 / 5×1,NaN 46(缺 11.5%)。0=无蛋白尿,5=最重。这是 CKD 判别的核心特征之一:ckd 组 al 均值显著偏高,而 notckd 组 150 例全部为 0。等级取 5 的只有 1 例,建模时注意尾部分类稀疏。

su — 尿糖(sugar),0-5 等级

等级列,实测计数:0×290 / 1×13 / 2×18 / 3×14 / 4×13 / 5×3,NaN 49(缺 12.25%)。与 al 同构的六级等级,反映尿中葡萄糖;notckd 组 150 例同样全部为 0。分布高度右偏(0 占非缺失的 82.6%),做统计检验时注意其本质是序数而非连续。

rbc — 尿红细胞(red blood cells)

二值列:normal 201 / abnormal 47,NaN 152(缺 38.0%,全表缺失冠军)。血尿(abnormal)是肾小球损伤的经典信号,但近四成缺失使它更像一张"做了镜检才有"的检查单——缺失机制大概率与临床决策相关(非随机缺失,MNAR 嫌疑),插补前先想清楚"为什么缺"。

pc — 尿脓细胞(pus cell)

二值列:normal 259 / abnormal 76,NaN 65(缺 16.25%)。脓尿提示尿路感染或炎症;与 pcc(白细胞团)临床相关但缺失率相差四倍(16.25% vs 1.0%),推测二者分属不同检验子项的记录习惯。

pcc — 尿白细胞团(pus cell clumps)

二值列:notpresent 354 / present 42,NaN 4(缺 1.0%)。记录极其完整,与 ba 一样属于"医生问诊/化验单必填"风格的字段。

ba — 尿细菌(bacteria)

二值列:notpresent 374 / present 22,NaN 4(缺 1.0%)。细菌尿阳性仅 22 例,类分布极端偏斜(94.4% notpresent),单独用作特征的信息量有限,但与 pcc/pc 组合后构成"感染证据链"。

2.4 血生化组(5 列)

bgr — 随机血糖(blood glucose random,mgs/dl)

数值列,实测 n=356(缺 44),均值 148.04±79.28,范围 [22, 490]。均值落在糖尿病偏高区间,max 490 为重度高血糖;而 min 22 mg/dl 是生理上几乎不可能存活的严重低血糖——大概率是录入错误(如漏敲首位数字,22 或为 122/220 之误),官方无说明(坑 7)。该列与 dm(糖尿病合并症)临床呼应,是"代谢轴"的主特征。

bu — 血尿素(blood urea,mgs/dl)

数值列,实测 n=381(缺 19),均值 57.43±50.50,范围 [1.5, 391]。尿素氮升高是肾功能失代偿的直接标志(正常参考约 7-20 mg/dl);max 391 对应终末期肾病水平,min 1.5 偏低但非不可能。注意 UCI API 类型标 Integer 而实测含 1.5 这类小数——又一处元数据粗口径。标准差 50.50 超过均值,右偏极重,建模建议先取对数。

sc — 血清肌酐(serum creatinine,mgs/dl)

数值列,实测 n=383(缺 17),均值 3.07±5.74,范围 [0.4, 76]。肌酐是 CKD 分期基石(eGFR 由它算起):正常约 0.6-1.2 mg/dl,ckd 组均值 4.41 vs notckd 组 0.87——本数据集里判别力最强的单变量之一。max 76 mg/dl 生理上近乎离谱(终末期通常也就 10-20 量级),疑似小数点错位(76 或为 7.6 之误),官方未注(坑 7);std 5.74 被这一个点大幅拉高。与 bu 一样强烈建议对数变换后再用。

sod — 血钠(sodium,mEq/L)

数值列,实测 n=313(缺 87),均值 137.53±10.41,范围 [4.5, 163]。正常参考 135-145;ckd 组 133.90 vs notckd 组 141.73,低钠血症倾向与肾功能减退相关。min 4.5 mEq/L 为严重电解质紊乱不可能存活值,疑小数点错位(45 之误?),同样无官方说明(坑 7)。API 类型标 Integer 而实测有 4.5——类型标注失真第三例。

pot — 血钾(potassium,mEq/L)

数值列,实测 n=312(缺 88),均值 4.63±3.19,范围 [2.5, 47]。高钾血症是 CKD 的致命并发症(正常参考 3.5-5.0);max 47 mEq/L 远超心搏骤停阈值(约 8-10),疑为 4.7 之误的小数点错位,官方未注(坑 7)。std 3.19 同样被极端值主导。这一列是"极端值清洗必要性"的最佳教具:留着 47,你的标准化会把健康人的 4.5 全压成零附近。

2.5 血液学组(4 列)

hemo — 血红蛋白(hemoglobin,gms)

数值列,实测 n=348(缺 52),均值 12.53±2.91,范围 [3.1, 17.8]。肾性贫血是 CKD 进展的标志事件(促红细胞生成素分泌不足);ckd 组均值 10.65 vs notckd 组 15.19,组间落差近 4.5 gms,判别力仅次于 sc。min 3.1 为极重度贫血(可危急),但临床上确可出现,未必是错值。

pcv — 红细胞压积(packed cell volume)

数值列,实测 n=329(缺 71),均值 38.88±8.99,范围 [9, 54]。与 hemo 物理上强相关(压积≈血红蛋白×约 3 倍关系),共线性预警:同时喂给线性模型时二者近乎冗余。UCI API 对该列没有 units 字段——24 列中唯一缺单位标注的一列(坑 9);临床惯例 PCV 以百分比报告(正常约 36-50%),实测范围 [9, 54] 与百分比口径吻合。ckd 组 32.94 vs notckd 组 46.34。

wbcc — 白细胞计数(white blood cell count,cells/cmm)

数值列,实测 n=294(缺 106),均值 8406.12±2944.47,范围 [2200, 26400]。正常参考约 4000-11000;max 26400 提示重度感染/白血病样反应,生理上仍属可能区间,但需结合 pcc/ba 判断是否真有感染佐证。缺失 26.5%,与 rbc/rbcc 同属"血常规缺失三兄弟"。

rbcc — 红细胞计数(red blood cell count,millions/cmm)

数值列,实测 n=269(缺 131,缺 32.75%),均值 4.71±1.03,范围 [2.1, 8]。ckd 组 3.95 vs notckd 组 5.38——贫血轴的又一员。与 rbc(形态学二值列)是两个不同变量:一个数数量、一个看形态,建模时别把二者混淆。社区教程盛传旧版 .arff 的 pcv/wbcc/rbcc 列存在 \t? 型制表符脏值("17 处"之说),旧版已 404 无法实证,本条目仅对官方 data.csv 负责:实测数值列除 NaN 外无任何非数值脏值(附录 D 存照)。

2.6 合并症与症状组(6 列)

htn — 高血压(hypertension)

二值列:no 251 / yes 147,NaN 2。高血压既是 CKD 的因也是果;ckd 组 yes 占比显著更高。notckd 组 150 例全部 no(§5.4 规则可分链条的一环)。双口径存照:一些教程写"htn 列出现过 2.5"——那是误把 data.csv 行 37 的 rbcc=2.5 读到 htn 列上(0 基索引 r[17]=rbcc 而非 htn,htn 在 r[18]);实测 htn 列除 NaN 外只有 yes/no。

dm — 糖尿病(diabetes mellitus)

二值列:no 260 / yes 137,NaN 2,外加 1 例脏值 \tno(data.csv 行 188,age=8 的患儿行)——把"no"写成了制表符+no(坑 2)。与前述 bgr/su 构成糖代谢证据链。notckd 组 150 例同样全部为 no。

cad — 冠脉疾病(coronary artery disease)

二值列:no 364 / yes 34,NaN 2。极度偏斜(yes 仅 8.5%);心血管合并症与 CKD 互为危险因素,但本列信息密度受偏斜限制。notckd 组全部 no。

appet — 食欲(appetite)

二值列:good 317 / poor 82,NaN 1。全表记录最完整的列之一(仅缺 1 格)。尿毒症毒素蓄积导致食欲减退是 CKD 的经典非特异症状;notckd 组全部 good。

pe — 足部水肿(pedal edema)

二值列:no 323 / yes 76,NaN 1。水钠潴留的体表征象;notckd 组全部 no。与 hemo/pcv 的贫血轴、sc/bu 的肾功轴并列,构成"症状轴"。

ane — 贫血(anemia,问诊判定)

二值列:no 339 / yes 60,NaN 1。注意与 hemo/rbcc 的区别:ane 是临床问诊判定(是否诊断贫血),hemo/rbcc 是化验数值——同一轴上的"定性+定量"双记录。notckd 组全部 no。

2.7 目标列 class

原样取值计数:ckd 248 / notckd 150 / ckd\t 2(data.csv 行 37 与行 230,见坑 1);归一后 ckd 250(62.5%)/ notckd 150(37.5%)。零缺失。中度不平衡比 5:3——用准确率单指标评测时要配合灵敏度/特异度与混淆矩阵(ckd 是正类时应看漏诊率)。标签的医学判定标准官方未注明(§1 Q7),一切"ckd"标签均应理解为"该患者被接诊医生判定为慢性肾病"这一黑箱结论。

2.8 ckd vs notckd 分组均值速览(自算口径)

列 ckd 组(n=250) notckd 组(n=150) 组间落差解读
sc 血清肌酐 (mg/dl) 4.41 0.87 最强单变量:肾滤过功能直接证据
hemo 血红蛋白 (g) 10.65 15.19 肾性贫血轴
pcv 红细胞压积 (%) 32.94 46.34 与 hemo 同轴冗余
bgr 随机血糖 (mg/dl) 175.42 107.72 代谢/合并症轴
rbcc 红细胞计数 (M/cmm) 3.95 5.38 贫血轴定量侧
sod 血钠 (mEq/L) 133.90 141.73 电解质调节能力

六列均呈现 ckd 恶化方向的一致位移;但请注意这些均值本身已被极端值(坑 7)污染——比如 sc 组间差部分来自 76 这个疑错点。均值差异显著 ≠ 单列可独判:真正把两类分开的是 §5.4 揭示的"notckd 规则可分"结构。

2.9 临床参考区间对照:把数值放回医学刻度

前面各节是"数据侧"的画像;本节把关键数值列放回临床参考区间,给读者一面"医学侧"的镜子。表中参考区间均经至少三个独立来源交叉确认(Medscape 参考区间表、MedlinePlus 医学百科、Kidney Education 临床教材;见尾注 11-12),用途是帮助读者快速判断"这个值在临床上意味着什么"——它们不是诊疗依据,也不替代任何临床指南。

列 UCI 官方单位 实测范围(本条目实算) 临床参考区间(三源口径) 区间外实测点的临床解读
age 岁 [2, 90] 成人参照为主,儿科须单独口径 行 188 为 8 岁患儿(附录 A);无性别列使成人/儿科细判受限
bp mm/Hg [50, 180] 舒张压 60-90(Bristol 注释版口径:本列 “presumably diastolic”,UCI 官方未注明缩/舒) min 50 低血压;max 180 高血压急症级别
bgr mgs/dl [22, 490] —(本条目未三源复核随机血糖区间,不列) min 22 生理不可存活(坑 7);max 490 重度高血糖
bu mgs/dl [1.5, 391] 见下方警示框一:bu≠BUN,勿直接套 BUN 区间 max 391 终末期量级
sc mgs/dl [0.4, 76] 男 0.6-1.3 / 女 0.5-1.2 ckd 组均值 4.41 已远超上限;max 76 疑错位(坑 7)
sod mEq/L [4.5, 163] 135-145 min 4.5 不可存活疑错位;max 163 严重高钠
pot mEq/L [2.5, 47] 3.5-5.0 max 47 超心搏骤停阈值(约 8-10),疑错位
hemo gms [3.1, 17.8] 约 12-17(性别而异) min 3.1 极重度贫血(危急但临床确可出现)
pcv 无官方单位(按 % 解读,坑 9) [9, 54] 约 36-50%(临床惯例口径) min 9 极重度;与 hemo 经验比例约 3:1
wbcc cells/cmm [2200, 26400] 5000-10000 max 26400 重度感染样反应;min 2200 白细胞减少
rbcc millions/cmm [2.1, 8] 约 4.0-6.0(性别而异) min 2.1 与肾性贫血轴吻合

警示框一:bu 不是 BUN——本数据集最常见的单位错位。 UCI 官方变量表把 bu 标注为 “blood urea”(血尿素,单位 mgs/dl),而临床惯用指标是 BUN(blood urea nitrogen,血尿素氮)。尿素分子含两个氮原子,BUN ≈ 尿素 × 0.467,反过来尿素 ≈ BUN × 2.14。因此"BUN 正常 7-20 mg/dL"翻译到本数据集的 bu 口径约为 15-40。大量教程直接把 bu 当 BUN 并套用 7-20 的参考区间,等于把参考上限压低了一半以上——一批肾功能正常者的 bu 值会被误读为"显著升高"。实测 bu 全体均值 57.43(ckd 组更高):按尿素口径解读,与 CKD 人群的构成吻合;若误按 BUN 口径解读,则"严重得离谱"。读任何一篇用本数据集的文献时,先看作者把 bu 当成了哪个指标。

警示框二:sg 的低档与"等渗尿"。 尿比重临床参考:随机尿 1.003-1.035,晨尿 1.015-1.025;比重固定于 1.010±0.003 的"等渗尿"提示肾浓缩与稀释功能严重受损。ckd 组的 sg 分布向 1.005-1.015 低档集中(§2.3),与该临床画像吻合;notckd 组只取 1.020/1.025 两档(§5.4)。这也是 §2.3 建议"按序数处理"的临床依据:档位本身就是浓缩能力的等级。

警示框三:al 的 0-5 等级 ≠ KDIGO 的 ACR 分级。 本数据集 al 是 0-5 的半定量等级(试纸法/镜检传统的分级口径);KDIGO 2024 指南的白蛋白尿分级用的是 ACR(尿白蛋白/肌酐比值)定量体系:A1 <30、A2 30-300、A3 >300 mg/g。二者测量对象相关但不可互相换算——把"al=3"写成"A3 期"是审稿中真实出现过的错误类型。

背景知识框:KDIGO 2024 CGA 分期与本数据集的距离。 KDIGO 2024 官方口径:CKD 定义为肾脏结构或功能异常持续 ≥3 个月且影响健康;分期按 CGA 三轴——病因(Cause)、GFR 分期 G1(≥90)/G2(60-89)/G3a(45-59)/G3b(30-44)/G4(15-29)/G5(<15,单位 mL/min/1.73m²)、白蛋白尿分级 A1(<30)/A2(30-300)/A3(>300 mg/g)。NIDDK 补充口径:G2 期若无肾损伤标志物(蛋白尿、血尿、影像学异常等)不视作 CKD。本数据集无 eGFR 列、无病程时间维度、无 ACR 定量——无法映射到该分期体系,它能支撑的只是"疑似 CKD vs 非 CKD"的二分类判别(§1 Q7、FAQ F22)。

另注:无性别列不仅让"男女比例"叙事无源(§1 Q4),也使 eGFR 复算不可行——主流 eGFR 公式(CKD-EPI 等)需要性别与年龄作为输入,本数据集只有年龄。这意味着读者无法从 sc 列自行推算 eGFR 来对齐 KDIGO 分期,"标签判定是否按 KDIGO"的悬案(附录 E 第 1 条)也因此无法用数据侧手段侧面验证。

§3 缺失值体系:10.12% 缺失的完整解剖

3.1 全表缺失账本

400 行 × 24 特征 = 9600 个特征格;加上 400 个标签格共 10000 格;缺失 1012 格,缺失率 10.12%。标签列 class 零缺失,全部缺失集中在特征侧。24 个特征列每一列都有缺失——不存在"至少有这一列是全的"的安慰。与此对照,行方向的账更触目:零缺失完整行仅 158 例(39.5%),即六成患者至少漏了一项检查(坑 4)。

3.2 逐列缺失降序表(实测)

排名 列 缺失格数 缺失率 临床语义
1 rbc 尿红细胞 152 38.0% 镜检子项,做不做看医生
2 rbcc 红细胞计数 131 32.75% 血常规子项
3 wbcc 白细胞计数 106 26.5% 血常规子项
4 pot 血钾 88 22.0% 生化子项
5 sod 血钠 87 21.75% 生化子项
6 pcv 红细胞压积 71 17.75% 血常规子项
7 pc 尿脓细胞 65 16.25% 镜检子项
8 hemo 血红蛋白 52 13.0% 血常规子项
9 su 尿糖 49 12.25% 尿干化学子项
10 sg 尿比重 47 11.75% 尿干化学子项
11 al 尿白蛋白 46 11.5% 尿干化学子项
12 bgr 随机血糖 44 11.0% 生化子项
13 bu 血尿素 19 4.75% 生化子项
14 sc 血清肌酐 17 4.25% 生化子项
15 bp 血压 12 3.0% 体格检查
16 age 年龄 9 2.25% 登记
17 pcc 白细胞团 4 1.0% 镜检子项
17 ba 尿细菌 4 1.0% 镜检子项
19 htn 高血压 2 0.5% 问诊
19 dm 糖尿病 2 0.5% 问诊
19 cad 冠脉疾病 2 0.5% 问诊
22 appet 食欲 1 0.25% 问诊
22 pe 足部水肿 1 0.25% 问诊
22 ane 贫血 1 0.25% 问诊

榜单自上而下几乎就是"检验科室的层级":越是需要专门仪器与人工镜检的项目缺得越多,越是问诊桌面上一句话能问出来的项目缺得越少。这个梯度本身就是缺失机制的线索(3.4)。

3.3 行级视角:缺失不是散点,是整块

从行方向看,缺失高度聚集:rbc 缺的 152 格并非均匀散布在 152 个不同行——大量行是"镜检整项没做"(rbc 与 pc 同缺)或"血常规整项没做"(wbcc/rbcc/pcv/hemo 成片同缺)。这意味着插补时要警惕"同一行多个格子同时编造"造成的虚假样本:用 KNN 插补 rbc 时,如果它的近邻恰好也是靠插补补出来的行,你就是在用编造数据校准编造数据。一个朴素但有效的自查:对"缺失列组合"(missingness pattern)做去重计数,观察前几大模式各占多少行,再决定插补策略——本编辑部实测缺失模式高度集中于少数几种"整块缺"组合,而非数百种随机组合。

3.4 缺失机制讨论:大概率不是 MCAR

统计学把缺失分三型:MCAR(完全随机)、MAR(依可观测变量而定)、MNAR(依缺失值本身而定)。CKD-UCI 的缺失梯度(镜检>血生化>问诊)与"整块缺失"结构强烈暗示这不是 MCAR:

  • 检查项目缺失与病情轻重相关——轻症/复诊患者可能只做基础盘,重症才上全套,也可能是早期录入时段检验项目不全;缺 rbc 的行是不是系统性地更"健康"或更"重"?值得用"缺失指示变量与 class 的相关"快速检验。
  • 问诊字段近乎全记录(appet/pe/ane 各缺 1 格)说明表格的问诊部分经过了较认真的填写,而检验部分是从化验单批量转录——两段数据的采集动机不同。

对建模者的含义:任何把缺失当随机的插补(朴素均值/中位数)都会系统性地扭曲组间分布;更稳的做法是把"是否缺失"本身当特征(缺失指示列),或使用能原生处理缺失的树模型(XGBoost/LightGBM 的 NaN 通道),让模型自己学缺失的含义。Qin et al. 2019 用 KNN 插补后拿到 99.75%——插补方法在这里对最终指标的影响,远小于 §5.4 揭示的任务可分性。

3.5 处理策略菜单(按保守到激进)

  1. 删除派:dropna() 一刀切 → 剩 158 例(39.5%),且删剩的子集分布偏斜(整块缺的行被系统性剔除)。除非你明确要"检验齐全子集"的结论,否则不推荐。
  2. 单插补派:均值/中位数/众数插补 → 快,但把 rbc 这种 38% 缺失的列插成一根常数柱,方差被系统性低估。
  3. 模型插补派:KNN 插补(Qin 2019 口径)、MICE/迭代插补、missForest → 效果通常更好,但要小心 3.3 的"编造套编造",并对插补后的样本做分布对照。
  4. 缺失即特征派:加缺失指示列,或用 XGBoost/LightGBM 原生 NaN 通道 → 表格数据上最省心且诚实的做法,树模型会自动学到"缺 rbc 本身有没有信息"。
  5. 分而治之派:问诊块(缺失≈0)与检验块(高缺失)分别处理,或在完整行子集(158 例)上做敏感性分析,与全样本结果对照报告。

无论选哪派,请在论文里报告插补前后的类别分布与特征分布对照——CKD-UCI 的缺失梯度意味着不同插补策略可能产生可观测的指标差异,这正是它作为方法学教学样本的价值。

§4 数据质量坑点清单:九坑全景

以下九坑全部经本编辑部对官方 data.csv 实测确认(除坑 6 为文献口径问题、坑 8 为文献方法学问题外),每坑给出"踩法—后果—躲法"。

坑 1:class 列的 2 例 ckd\t 脏标签(行 37 与行 230)

踩法:df['class'].value_counts() 直接看结果,或用 if x == 'ckd' 做标签映射。
实测存照:data.csv 行 37(age=72, rbcc=2.5, htn=yes, class=ckd\t)与行 230(age=65, hemo/pcv/rbcc 均 NaN, class=ckd\t)——标签末尾各藏一个制表符。原样计数 ckd 248 / ckd\t 2 / notckd 150。
后果:不清洗则类别数从 2 变 3;LabelEncoder 会给 ckd\t 单独编号;若你把 ckd\t 行整行丢弃,等于白扔 2 例正类;更隐蔽的是某些 train/test 切分脚本按类别分层时会因 3 类而报错或产生畸变折。
躲法:读入后第一时间 df['class'] = df['class'].str.strip(),顺手把全表所有 object 列都 strip 一遍(坑 2 同源)。归一后口径 ckd 250 / notckd 150。

坑 2:dm 列的 1 例 \tno 脏值(行 188,8 岁患儿行)

踩法:假设 dm 列只有 {yes, no} 两个取值,做 map({'yes':1,'no':0})。
实测存照:data.csv 行 188——age=8 的患儿(hemo 12.2),dm=\tno(制表符+no)。原样计数 no 260 / yes 137 / \tno 1 / NaN 2。
后果:map 后该行变 NaN(若 map 未指定其他值),一行数据无声损失;或被当作第三类别喂进独热编码,多出一列常数 0/1 特征。
躲法:同坑 1 的全表 strip 即可归一为 no。注意这行同时是儿科样本(8 岁)——如果你做的是成人研究,这行要按年龄标准剔除而非当异常值丢。

坑 3:缺失以字面量字符串 “NaN” 表示

踩法:手写 CSV 解析器逐字段 split;或把 CSV 导入不认识 “NaN” 字面量的数据库/BI 工具后再分析。
实测存照:官方 data.csv 中缺失单元格写作字符串 NaN(不是空串、不是 ?、不是 NA)。pandas read_csv 默认识别,使用者无感;其他工具链则可能把它当合法取值。
后果:名义列多出 “NaN” 类别(独热编码多一列);数值列类型推断失败整列变 object;"缺失率 10.12%"在你手里变成 0%。
躲法:pandas 用户无感可跳过;其他工具链请显式声明 NaN 为缺失标记(如 SQL 导入时 NULLIF(val,'NaN')),或先经 pandas 清洗再落库。

坑 4:零缺失完整行仅 158 例(39.5%),dropna() 灰飞烟灭

踩法:df.dropna() 后开始训练,并在论文里写"n=158"或干脆不写 n。
实测存照:400 例中整行零缺失仅 158 例;被删的 242 行里包含大量"仅缺 1-2 格"的高价值样本。
后果:样本量蒸发六成;更糟的是被删行不是随机的——整块缺检验的行有自己的临床画像(3.3),删完后你的"158 例结论"不再代表原始人群;部分论文的"高准确率"正是在这个小而偏的子集上刷出来的。
躲法:永远报告 dropna 前后的 n 与类别分布;优先用 §3.5 的 4 号策略(缺失即特征/树模型原生通道)。

坑 5:旧版 .arff 时代路径全 404,官方 zip 里是 .rar

踩法:从 2015-2022 年间的教程、书籍或博客复制下载链接(chronic_kidney_disease.arff、chronic_kidney_disease_full.arff、Chronic_Kidney_Disease.csv 等),或下载官方 zip 后在 Linux 上 unzip 完卡住。
实测存照(2026-09-29):上述旧版路径全部 404;UCI 2023 平台改版后官方分发仅剩 data.csv(45,092 字节);官方下载包 zip 解开后是 Chronic_Kidney_Disease.rar(18.8 KB),与官方页面自标一致——Linux/macOS 默认无 unrar。
后果:链接失效浪费半小时是小事;大事是部分教程自带"清洗过的"镜像 CSV,与官方 data.csv 内容不一定一致(有的镜像已把脏值洗掉、有的反而引入新问题),你在镜像上跑出的数字无法与官方口径对话。
躲法:认准 https://archive.ics.uci.edu/static/public/336/data.csv 一条路;引用数字时注明"data.csv 口径"。

坑 6:Apollo 医院的城市三口径(Managiri / Manamadurai / Karaikudi)

踩法:在论文或报告里写"Apollo Hospitals, Karaikudi"(或其他任一城市)并当作确证事实。
实测存照:UCI 官方页只写 Apollo Hospitals(泰米尔纳德邦),不写城市;三份二手来源各执一词——PLOS ONE 2024(DOI 10.1371/journal.pone.0295234)写 Managiri;ANFIS-PSO 2026(DOI 10.62762/bish.2026.692582)写 Manamadurai;Bristol 大学课程页(uob-ds.github.io,Matthew Brett 维护)写 “Karaikudi (maybe)”,作者自己加注不确定。
后果:地理信息错误本身危害有限,但它是本数据集"元数据可靠性"的缩影——连采集城市都三说不一,更别提标签判定标准、抽样方式这类真正要紧的元数据。
躲法:正文只写"Apollo Hospitals(印度泰米尔纳德邦)";需要城市时三口径并列存照并注明来源。

坑 7:生理可疑的极端值(pot 47 / sc 76 / bgr 22 / sod 4.5)

踩法:数据直接标准化/训练,或反过来看到极端值就删行。
实测存照:pot 最大 47 mEq/L(心搏骤停阈值量级的 5 倍,疑 4.7 错位)、sc 最大 76 mg/dl(终末期罕见量级,疑 7.6 错位)、bgr 最小 22 mg/dl(致死性低血糖,疑 122/220 漏位)、sod 最小 4.5 mEq/L(不可存活,疑 45 错位);另有 bu 391、wbcc 26400 等生理上勉强可解释的高值。官方对这些值无任何注释。
后果:一个 47 就能把 pot 列的标准差拉大到失真(实测 std 3.19,均值 4.63),z-score 后健康人全被压成一团的零附近;树模型对它不敏感但线性模型与神经网络会被带偏;而"看到大数就删"则会误删真病人(sc 76 若为真值,那是必须透析的危重患者——医疗数据里极端值常常是病情本身)。
躲法:区分"不可能值"(违反生理存活底线的 pot 47、sod 4.5——按疑错处理或按缺失处理并注明)与"罕见但可能值"(sc 10+、bu 391——保留并可加稳健变换);一切处理在论文中逐值列出并给理由。医疗数据里,"离群值=录入错误"的假设必须逐例辩护。

坑 8:单分割 100% 的论文通胀 vs 5 折 CV 87%

踩法:train_test_split(test_size=0.3) 一次,跑出 100% 准确率,写成论文标题。
实测存照:Sossi et al. 2019(XGBoost)与 ANFIS-PSO 2026 均报单分割 100%;ANFIS-PSO 2026 同一方法改 5 折交叉验证即降为 87.00%±3.59%——13 个百分点的落差发生在同一篇论文里。更广的图景见 §5:单分割 99-100% 与认真交叉验证后 87-99% 并存,是本数据集文献的一体两面。
后果:数据集近乎规则可分(§5.4)+ 单次随机分割 → 测试集里尽是"规则样本",任何不坏的平台模型都能满分;100% 从此成为"此人没做交叉验证"的强信号。
躲法:分层 k 折交叉验证(k≥5)+ 多随机种子重复,报告均值±标准差;与文献对比时先确认对方口径(单分割还是 CV、是否 SMOTE 后再切分——后者是另一类泄漏,见 §5.3)。

坑 9:元数据粗口径三连——pcv 无单位字段、属性数 24 vs 25、API 类型失真

踩法:盲信 UCI API 的元数据字段做自动化的 schema 生成或数据字典。
实测存照:三处失真——其一,UCI API 变量表中 pcv 是 24 列里唯一没有 units 字段的列(临床惯例为百分比);其二,API num_features=24(不含 class),大量论文写"25 attributes"(含 class),两口径长期并存;其三,API 把 bu、sod 标为 Integer,实测却各有小数取值(1.5 与 4.5),把 sg、al、su 标为 Categorical 倒是对的,但 feature_types 汇总字段又写 “Real”。
后果:自动化管线生成的数据字典出现"无单位列"与错误类型;论文间"24 还是 25 个属性"的无谓之争;新手按 “Real” 把等级列 al/su/sg 当连续变量送进线性模型。
躲法:以本条目 §2.1 的实测五组表为数据字典基线(并回溯官方 API 复核);属性数首次出现时注明"24 特征+1 标签";等级列按序数处理。

§5 机器学习基准综述:一个"没有官方基准"的数据集如何被基准化

5.0 先说清楚:本数据集没有官方基准

UCI API 的 intro_paper 字段为 null——CKD-UCI 是"直接捐赠"型数据集,没有伴生论文、没有官方推荐的训练/测试划分、没有榜单、没有固定评测协议。你在文献里看到的每一个"基准数字",都是作者自己选择预处理、分割与指标的结果,互相之间不可直接比较。这一节按时间线梳理被引最高的几篇社区基准论文,再给出数据学解释(5.4)与使用守则(5.5)。

5.1 社区基准代表论文全景表(数字均为论文自报口径)

论文 出处/DOI 方法要点 自报最佳成绩 备注
Qin et al. 2019 IEEE Access 8:20991-21002;10.1109/ACCESS.2019.2963053 KNN 插补缺失;六算法对比;LR+RF 感知机集成,十次仿真平均 RF 99.75%;集成 99.83% 被引 379+(2026-09 Google Scholar 口径),本数据集被引最高文献
Chittora et al. 2021 IEEE Access 9:17312-17334;10.1109/ACCESS.2021.3053763 七分类器 × 六种特征选择/SMOTE 组合的系统网格 DNN 99.6%;LSVM-L2 98.86%(SMOTE+全特征)/ 98.46%(SMOTE+LASSO) 预处理组合矩阵做得最系统的一篇
ANFIS-PSO 2026 10.62762/bish.2026.692582 ANFIS + PSO 调参;SMOTE 平衡 单分割 100%;5 折 CV 87.00%±3.59% 同文两口径相差 13 个百分点,基准通胀活标本(坑 8);其医院口径写 Apollo Manamadurai
Sossi et al. 2019 (转引口径) IBM SPSS XGBoost(linear booster) 100%(单分割) 单分割满分阵营
Gunarathne et al. 2017 (转引口径) Azure ML Decision Forest 99.1% 云平台流水线代表
Al Imran et al. 2019 (转引口径) FF-ANN 前馈神经网络 f1 0.99 报 f1 而非 accuracy 的少数派
Sharma et al. 2016 (转引口径) 决策树 98.60% 早期树模型代表
Charleonnan et al. 2016 (转引口径) SVM 98.3%(灵敏度 0.99 / 特异度 0.98) 早期 SVM 代表
PLOS ONE 2024 10.1371/journal.pone.0295234 SMOTE 平衡 + 常规分类器组合 — 其描述统计口径 bp 均值 76.175(vs 本条目实算 76.47,见 §2.2 双口径存照);医院口径写 Apollo Managiri

注:标注"转引口径"的五篇,其数字系经由综述性文献的 related work 章节转引获得,本编辑部未逐篇复核原文,引用时请回溯原文确认;Qin/Chittora/ANFIS-PSO/PLOS 四篇为本编辑部直接核验(IEEE Xplore、DOI 解析或开放学术索引交叉确认)。

5.2 Qin et al. 2019:379+ 引用是怎么炼成的

Qin et al.(西南大学与九州大学合作)2019-12-30 发表于 IEEE Access,是这个数据集事实上的"门面论文"。方法侧做对了三件事:其一,用 KNN 插补处理缺失而不是 dropna(保住 400 例样本量);其二,六个算法同台(LR/KNN/NB/DT/RF/SVM)统一协议对比,而非单模型自夸;其三,报告十次仿真的平均而非单次运气。结果是 RF 99.75%、自构的 LR+RF 感知机集成 99.83%。它成为引用锚点的原因不难猜:数字高、协议看起来干净、开放获取。但请注意——即便协议如此规范,99.83% 这个数字仍应在 5.4 的"规则可分"背景下解读:它证明的是"在近乎可分的数据上,集成方法把边缘样本也磨平了",而不是"该模型能推广到真实临床"。

5.3 Chittora et al. 2021 与"预处理组合矩阵"

Chittora et al.(Manipal University Jaipur 等)2021-01-22 发表于 IEEE Access,把工程做成了网格:七个分类器(LR/KNN/NB/DT/RF/SVM 变体/DNN)× 六种特征工程组合(全特征、LASSO、RFE、SMOTE 及其组合),共 42 组配置的系统对照。标志性结论:LSVM-L2 在 SMOTE+全特征下 98.86%,SMOTE+LASSO 下 98.46%;DNN 最高 99.6%。这篇论文的价值在"矩阵"本身——读者可以直接读出每个预处理选择带来的边际变化,也正因如此它暴露了该数据集的另一个坑:SMOTE 应该只施加在训练折内部。若先把全集 SMOTE 再切分,合成样本会把训练集的信息"过继"给测试集,指标进一步虚高。阅读一切"SMOTE 后 99%+"的数字时,先问一句:SMOTE 放在哪一步?

5.4 数据学核心:notckd 类的"规则可分"结构

本编辑部对官方 data.csv 的实测给出了文献高准确率的最简解释。150 例 notckd 患者在下列列上无一例外:

列 notckd 150 例的取值 ckd 组对照(混合取值)
al 尿白蛋白 全部 0 0-5 六档均有分布
su 尿糖 全部 0 0-5 六档均有分布
htn 高血压 全部 no yes 147 例(几乎全在 ckd 组)
dm 糖尿病 全部 no yes 137 例
cad 冠脉疾病 全部 no yes 34 例
appet 食欲 全部 good poor 82 例
pe 足部水肿 全部 no yes 76 例
ane 贫血 全部 no yes 60 例
rbc 尿红细胞 全部 normal abnormal 47 例
pc 尿脓细胞 全部 normal abnormal 76 例
sg 尿比重 只取 五档全用(1.005-1.020 集中在 ckd)

十一列、每列都是完美或近乎完美的类边界。换个说法:一条 11 条件的合取规则——“al=0 且 su=0 且 htn=no 且 dm=no 且 cad=no 且 appet=good 且 pe=no 且 ane=no 且 rbc=normal 且 pc=normal 且 sg≥1.020”——大概率就能把 notckd 一网打尽(规则在 ckd 组内的误伤率需实测,但方向上成立)。任何能学到这条规则的模型——决策树几个结点就够——都会在这个数据集上拿 95%+ 的准确率。99% 是数据的属性,不是模型的属性。

这同时解释了三个文献现象:

  1. 单分割 100% 扎堆(5.1):随机测试集里几乎全是规则样本,满分轻松;
  2. 交叉验证后跌到 87-99%:每一折里总有若干"不守规则"的 ckd 患者被规则误判为 notckd——这些"难样本"决定了分数下限;
  3. 模型间差距很小:Qin 六算法、Chittora 七分类器的高分段密集分布在 98-99.8% 之间——平台期由数据决定,算法差异被压缩在最后 1 个百分点里。

5.5 基准使用守则(写给想在这份数据上发论文/交作业的你)

  1. 先报口径再报数字:分割方式(单分割/k 折)、随机种子数、SMOTE 位置、插补方法、是否 dropna——五要素缺一,数字无意义。
  2. 分层 k 折(k≥5)× 多种子重复是底线:报告均值±标准差;单分割 100% 只能说明你跑了 once。
  3. 别把高准确率当临床能力:本数据集的 notckd 规则可分结构(5.4)意味着它无法检验模型对"非典型 CKD"(如 al=0 的肾小管间质病)的识别力;向临床叙事过渡前请明确此局限。
  4. 对比文献时对齐口径:跟 Qin 的 99.83% 对比前,先确认你也做了 KNN 插补+十次仿真平均;跟 ANFIS-PSO 的 87% 对比前,确认那是 5 折 CV 口径。
  5. 报告类不平衡的完整指标:62.5%/37.5% 的不平衡不重,但准确率之外请给灵敏度/特异度/混淆矩阵——医疗场景里漏诊(ckd→notckd)与误诊代价不对称。

5.6 文献数字须回源核验:一次 wbcc 范围错误存照

本编辑部在交叉核对文献描述统计与官方 data.csv 实算时,捕获一例值得存照的错误:一篇发表于 PeerJ Computer Science 的基准论文在描述本数据集时,自报白细胞计数范围 “(2,200 to 4,800)”(尾注 14)——而本条目对官方 data.csv 的实测为 [2200, 26400]、均值 8406.12(§2.5)。4,800 与 26,400 相差五倍有余,最可能的解释是排版丢位(如 24,800 或 26,400 丢成 4,800)或作者使用了自行清洗的子集;同文其余特征的描述范围与实算一致,说明这是孤例而非系统性错误。

但孤例足以误导。任何读者若把"wbcc 上限约 4,800"当作数据画像,会把实测分布中约六成的正常值判为"异常偏高"——因为 4,800 连临床参考下限(5,000)都不到。这个案例的方法学教训有三条:

  1. 文献描述统计不可直接搬用:引用任何"数据集范围/均值"前,回源到官方文件实算一次(本条目附录 F 提供复算脚本);
  2. 跨文献数字打架时以官方文件为准:两条文献口径冲突不是"各有一理",通常一方存在排版或清洗口径问题——先复算,再裁决;
  3. 转引必须标注:本条目 §5.1 中五篇早期文献的数字即转引口径、已如实标注"未逐篇复核"——这是同一纪律的另一面。

5.7 两篇 IEEE Access 基准的确证档案与被引对照

§5.2/§5.3 叙述了两篇旗舰基准的方法;这里给出可直接核验的完整书目档案与被引对照(2026-09-29 口径):

项 Qin et al. 2019 Chittora et al. 2021
DOI 10.1109/ACCESS.2019.2963053 10.1109/ACCESS.2021.3053763
出处 IEEE Access 卷 8,页 20991-21002 IEEE Access 卷 9,页 17312-17334
出版日 2019-12-30 2021-01-22
机构 西南大学(重庆)×九州大学(日本) Manipal University Jaipur 等
预处理 KNN 插补(保 400 例样本量) 七分类器×六种特征选择/SMOTE 组合矩阵(42 组配置)
自报最佳 RF 99.75%;LR+RF 感知机集成 99.83%(十次仿真平均) DNN 99.6%;LSVM-L2+SMOTE 98.86%;LSVM-L2+LASSO+SMOTE 98.46%
Google Scholar 被引 379 378
贡献类型 协议干净的高分锚点(被引锚) 预处理边际效应矩阵(工程参照)

两篇被引几乎持平(379 vs 378),但贡献类型不同:Qin 的角色是"数字锚点"——后续论文需要一个可比的最高分时引用它;Chittora 的角色是"工程手册"——后续作者选择预处理组合时引用它。引用它们时应当说清引用的是哪一类贡献;只引一个 99.83% 或 99.6% 的数字而不提协议(KNN 插补、十次平均、SMOTE 位置),正是 §8.1 审稿人五问里第 4 问的典型失分场景。

§6 获取与许可:三通道、版本链与 DAIMS 评估

6.1 获取三通道(2026-09-29 实测全通)

通道 URL 实测状态 用途
官方页面 https://archive.ics.uci.edu/dataset/336/chronic+kidney+disease HTTP 200(212 KB HTML 实抓) 元数据、变量说明、引用格式、citation 面板
API https://archive.ics.uci.edu/api/dataset?id=336 HTTP 200(JSON 6,786 字节) 自动化元数据拉取(含 data_url、creators、num_features 等)
数据本体 https://archive.ics.uci.edu/static/public/336/data.csv HTTP 200(45,092 字节) 唯一官方机读格式,本条目一切实测的对象

下载包里的 zip(19,410 字节)解开后是 Chronic_Kidney_Disease.rar(18.8 KB)——官方页面自己也这么标;Linux/macOS 默认无 unrar,别纠缠,直接走 data.csv(坑 5)。

6.2 版本链与断代史

  • 2015:数据集创建(API year_of_dataset_creation: 2015);2015-07-02 捐赠 UCI(官方页口径)。
  • 旧版布局时代(2015-2023):以 .arff(Weka 格式)与 .csv 分发,社区熟知的 chronic_kidney_disease.arff / chronic_kidney_disease_full.arff 属于这一代;大量教程的脏值传说(\t? 型脏值"17 处"之说)源自这一代文件。
  • 2023:UCI 平台改版,分配 DOI 10.24432/C5G020,旧版文件路径全部下线(实测 404)。
  • 2024-03-04:元数据更新(API last_updated 字段口径),非数据内容变更。
  • 现在:仅提供 data.csv。注意断代风险:你拿到的若是旧教程镜像的 ARFF 转换版,其行序、脏值、甚至列名可能与官方 data.csv 不一致——数字对不上时先查版本(坑 5)。

6.3 License:CC BY 4.0

UCI 官方口径 CC BY 4.0:允许商用、允许再分发与衍生、唯一义务是署名。对 AI-Ready 场景(模型训练、数据集混合、管线再分发)几乎没有摩擦点。署名实践按 UCI 官方引用格式(6.4)。无附加限制层;旧版衍生镜像(各大学课程页、Kaggle 镜像)的再分发许可随官方口径,但内容保真度自行验证。

6.4 引用格式(UCI 官方口径)

Rubini, L., Soundarapandian, P., & Eswaran, P. Chronic Kidney Disease [Dataset]. UCI Machine Learning Repository. https://doi.org/10.24432/C5G020 .

6.5 DAIMS AI-Ready 评估表(本编辑部评定,2026-09-29)

维度 得分 评语
D — Documentation 文档完备度 3/5 有官方摘要、变量表、引用格式;但无伴生论文、标签判定标准未注、采样方式未载、医院城市三口径(坑 6)
A — Accessibility 可获取性 5/5 CC BY 4.0 无注册门槛;官方页/API/data.csv 三通道全通;45 KB 单文件即取即用
I — Interoperability 互操作性 4/5 标准 CSV、列名简短;扣分项:NaN 字面量需清洗(坑 3)、ckd\t/\tno 脏值(坑 1/坑 2)、等级列语义需人工对齐
M — Metadata quality 元数据质量 2/5 pcv 缺单位字段、bu/sod 类型标 Integer 实测含小数、feature_types 汇总失真(坑 9);API 与页面口径基本一致但粒度粗
S — Sustainability 可持续性 4/5 UCI 官方长期托管、DOI 固定、2024 年仍有维护动作;扣分项:旧版布局整体断代(坑 5),历史链接不可追溯
合计 18/25 AI-Ready 定级:良好——获取零摩擦、清洗有地雷、元数据靠本条目补课

§7 生态位:教科书级小数据的江湖地位

7.1 在 UCI 系里的位置

CKD-UCI 与 Iris(1936)、Heart Disease(1988)、Pima Indians Diabetes(1990)并列 UCI 的"教科书四天王"级别存在——它们的共同特征:小样本、混合类型特征、二分类/多分类清晰、够简单到能在一节课里完整走完"加载-清洗-建模-评测"闭环。CKD-UCI 在其中的差异化生态位是**"缺失值处理+不平衡分类+特征工程"三合一**:Iris 无缺失、Pima 缺失伪装成 0、Heart Disease 缺失用 “?”,而 CKD-UCI 的 10.12% 显式缺失加脏值三连(坑 1-3),使它成为讲缺失工程时最合适的活体教材。

7.2 引用体量旁证

无官方伴生论文的数据集,引用体量挂在社区论文上:仅 Qin et al. 2019 一篇即 379+ 引用(2026-09 口径);以"chronic kidney disease dataset"为关键词的文献横跨 IEEE Access、Applied Soft Computing、BMC Nephrology、PLOS ONE 等刊,衍生文献总量估计以千计。Kaggle 上存在多个镜像版本(最热门镜像获数万次下载与数百个公开 notebook),教程生态(Medium/CSDN/GitHub notebook)中出现频率极高。

7.3 教学中的三个经典用法

  1. 缺失值工程课:10.12% 缺失 + 整块缺失结构(§3.3)→ 演示 dropna 的代价、插补策略对比、缺失指示列技巧;
  2. 不平衡与评测课:62.5%/37.5% + 规则可分结构(§5.4)→ 演示准确率失真、混淆矩阵、为什么"99% 但不临床";
  3. 数据清洗实战课:脏值三连 + 极端值四连(坑 1/2/3/7)→ 演示 value_counts 体检法、逐列 strip、医疗数据极端值的"逐例辩护"原则。

7.4 库外的近亲数据集

与 CKD-UCI 常被放在一起比较的库外数据:Pima Indians Diabetes(UCI 768 例、同样"小而脏"的代谢病表格)、Heart Disease(Cleveland 303 例、同样多指标组合判别)、Chronic Kidney Disease 的 Kaggle 衍生镜像(多含社区清洗版——口径漂移风险见坑 5)。库内直系与近邻见 §10。

7.5 四天王对比:一页看懂差异化生态位

维度 CKD-UCI(本条目) Iris (1936) Pima Indians Diabetes (1990) Heart Disease (1988, Cleveland)
规模 400×25 150×5 768×9 303×14
任务 二分类(ckd/notckd) 三分类(鸢尾种) 二分类(糖尿病) 二分类(心脏病)
特征类型 11 数值 + 14 等级/二值 全数值 全数值 数值+类别混合
缺失 10.12% 显式 NaN 无 缺失伪装成 0(隐形) “?” 显式标记(轻度)
脏值 3 处(含制表符) 无 无 无
教学卖点 缺失工程+不平衡+基准通胀 纯入门第一课 隐形缺失与域偏移 多指标组合判别
著名陷阱 99% 基准通胀(规则可分,§5.4) 一类线性可分 0 值当真值 多仓库版本口径混杂

注:Iris / Pima / Heart Disease 三列的规模与特征类型为社区通用口径,本条目未逐项复测,引用请以各自官方页为准;本表仅用于生态位对照。四份数据的对照价值在于:"缺失"这一维度上四者恰好构成四级梯度(无缺失 → 隐形缺失 → 轻度显式缺失 → 重度显式缺失)——按这个梯度组织系列课,正好把缺失值工程从浅到深讲透,CKD-UCI 永远是压轴的那份。

§8 方法学批判指南:如何审阅一篇用 CKD-UCI 的论文

8.1 审稿人五问

  1. n 是多少? 原始 400、dropna 后 158、还是插补后 400——n 变了,人群就变了(坑 4)。凡未报告 n 的,一律按最可疑口径质疑。
  2. SMOTE 放在哪一步? 切分前 SMOTE = 标签泄漏(5.3);正确做法是只对每个训练折内部施加。论文未说明 SMOTE 位置时,99%+ 数字自动降权。
  3. 分割协议是什么? 单分割 100% vs 5 折 CV 87% 的 13 个百分点落差(坑 8)意味着:没有交叉验证与多种子的论文,不具备对话资格。
  4. 对比对象口径一致吗? 跟 99.83%(Qin,KNN 插补+十次平均)比,还是跟 87%(ANFIS-PSO,5 折 CV)比?不同口径的差距不是模型优劣,是协议差异。
  5. 临床叙事越界了吗? "该模型可用于 CKD 筛查"与"该模型在 400 例近乎规则可分的样本上准确率 99%"之间隔着一整条推广性鸿沟(8.3)。

8.2 数据规模的现实边界

n=400(其中 notckd 仅 150)意味着什么:单折测试集约 80 例,其中 notckd 约 30 例——测试集里 notckd 侧每错 1 例就是 3 个百分点的波动;按类分层后做亚组分析(老年 vs 儿科、糖尿病 vs 非糖尿病)几乎必然落入稀疏格。因此本数据集适合支撑的结论类型是:方法学演示、教学、原型验证(proof of concept)、插补/特征工程方法的相对比较;不适合支撑的结论类型是:临床性能声明、人群流行率推断、亚组差异检验、对真实患病率的任何外推。

8.3 从表格基准到临床落地的距离

三道鸿沟,一道比一道宽。第一道是人群:本样本来自单一医院集团、约两个月采集窗、抽样方式未载——对其他地区、其他就诊结构的人群无代表性证据。第二道是标签:ckd/notckd 判定标准不可追溯(§1 Q7),真实临床 CKD 诊断依赖 eGFR 与病程(K trace 需 ≥3 个月的证据),而本数据集无 eGFR、无时间维度、无分期——模型学的是"这批医生的判断",不是 CKD 本身。第三道是特征可得性:现实筛查场景未必有 24 项全检,而本数据集恰恰在"检验齐全"与"只有问诊"两种场景间没有做任何分层——一个在 wbcc/rbcc 缺失 30% 的数据上训练的模型,如何面对只做了问诊的患者?这些不是数据集的"缺陷",而是它作为教学样本的边界;越界使用才是缺陷。

§9 使用指南:三类读者的行动清单

INFOBOX 与 §1 回答"这是什么",本节回答"我该从哪一步开始"。按三类典型读者给出可执行清单;所有步骤都指向本条目已有的节与附录,不引入外部依赖。

9.1 教学者:把 45 分钟课拆成四个演示包

时间 演示包 用到的数据事实 条目锚点
0-10 min 加载与体检 value_counts 后 class 出现 3 个"类别"(ckd 248 / ckd\t 2 / notckd 150) 坑 1、附录 A
10-25 min 缺失工程 dropna 400→158;rbc 缺 38%;缺失模式整块化 §3.1-§3.3、坑 4
25-40 min 建模与协议 单分割 100% vs 5 折 87.00%±3.59%(ANFIS-PSO 2026 同文两口径) 坑 8、§5.1
40-45 min 反思讨论 notckd 十列规则可分 → “99% 是数据的属性,不是模型的属性” §5.4

备课三件套:附录 B(清洗要点代码)、附录 F(核心数字复算脚本,课前跑一遍确认你的 data.csv 与本条目实测同源)、附录 G(十大反模式,可作课后测验题库)。

9.2 方法研究者:五步协议(缺失/插补/不平衡研究适用)

  1. 冻结口径:跑附录 F 脚本,逐条断言通过后再开始——确保你的 data.csv 与本条目实测同源(45,092 字节、1012 缺失格、158 完整行、三处脏值行号、四连极端值)。
  2. 先做缺失机制分析再做插补:对缺失模式聚类(§3.3 的"整块缺失"结构),报告缺失指示变量与 class 的相关;这一步的结论决定插补策略的合法性(§3.4)。
  3. 至少三臂对比:朴素插补 / 模型插补(KNN、MICE)/ 原生 NaN 通道(XGBoost、LightGBM),统一评测协议(第 4 步),并对插补前后分布做对照(§3.5)。
  4. 严格协议:分层 5 折 × ≥10 随机种子;插补、SMOTE、特征选择全部只进训练折(用 Pipeline 实现);报告均值±标准差与每折混淆矩阵(坑 8、§5.3)。
  5. 结论边界声明:按 §8.2 的"适合/不适合"清单声明你的结论类型;涉及临床叙事时逐条对照 §8.3 的三道鸿沟。

9.3 临床信息学入门者:三遍读法

  • 第一遍(15 分钟):INFOBOX → §0 导读 → §1 十问十答。建立"400 行表格、五组特征、10.12% 缺失、62.5%/37.5% 类分布"的全景。
  • 第二遍(30 分钟):§2.9 临床参考区间 → §3 缺失解剖 → §4 九坑全景。理解每个数字背后的医学刻度与每颗地雷的精确位置。
  • 第三遍(45 分钟):§5.4 规则可分 → §8 方法学批判 → FAQ。理解"为什么 99% 不可信",以及如何审一篇用了这份数据的论文。
  • 延伸路径:库内互链见 §10——去 mimic-iv-clinical-database (4) 与 mimic-iii (106) 看同一批化验指标(肌酐/尿素/电解质/血常规)在真实 EHR 规模下的形态,对照本集"单时点快照"的方法学局限(§8.3)。

9.4 数据工程师:入库前五道门禁

  1. strip 全表 object 列(军规 1),断言 class 仅剩 {ckd, notckd}、dm 仅剩 {yes, no};
  2. 显式声明 “NaN” 字面量为缺失(军规 3)——非 pandas 工具链(SQL/BI/自研解析器)必做;
  3. 极端值四连(pot 47 / sc 76 / bgr 22 / sod 4.5)逐例处置并留痕(军规 7);
  4. 入库后回读断言:行数 400、列数 25、缺失率 10.12%——与附录 F 同源;
  5. 数据目录标注:“UCI ID 336,data.csv 口径,CC BY 4.0,引用格式见 §6.4”。

§10 库内互链:在千方病案医数集里的位置

以下 rid 均为 2026-09-29 库内实查结果。

库内条目 rid 互链类型 互链理由
parkinsons-voice-uci 444 UCI 直系兄弟 同为 UCI 捐赠型教学级医疗小样本基准(语音学任务);同为"捐赠者直捐、无伴生论文"模式;对比"小样本医疗基准的两种形态"(表格 vs 信号)
drug-reviews-uci 485 UCI 直系兄弟 同为 UCI 捐赠型医疗数据(患者用药评价文本+评分);对比"UCI 医疗数据的脏值与清洗负担"议题
mimic-iv-clinical-database 4 规模两极对照 EHR 化验检验库(数十万住院 vs 本集 400 例);同一批检验指标(肌酐/尿素/电解质/血常规)在两种规模下的建模形态
mimic-iii 106 规模两极对照 同上;且 mimic 系的"单元/时序"结构可反衬本集"单时点快照"的方法学局限(8.3)
stroke-scale-mimic-iii 596 方法学近邻 临床表格变量+临床量表评分的建模任务;缺失值处理与"临床判定 vs 化验数值"双记录结构(ane vs hemo)两边同构

建议的互链叙事:UCI 教学系(444/485,“小数据的纪律”)、EHR 规模对照(4/106,“同一批化验指标的两极”)、方法学议题(缺失值/不平衡/基准通胀,与本条目 §3/§4/§5 三节互文)。

§11 避坑清单:十条军规速查

序 军规 触发的坑
1 读入后全表 str.strip(),第一件事 坑 1(ckd\t)、坑 2(\tno)
2 value_counts() 逐列体检,类别数对不上表就停 坑 1、坑 2、坑 3
3 确认 “NaN” 字面量被你的工具链识别为缺失 坑 3
4 永远报告 dropna 前后的 n 与类别分布 坑 4
5 下载认准 static/public/336/data.csv,镜像内容先 diff 再用 坑 5
6 医院城市写"泰米尔纳德邦",城市三口径只做存照 坑 6
7 极端值逐例辩护:不可能值按疑错处理、罕见可能值保留,处理过程逐值记录 坑 7
8 分层 k 折(k≥5)× 多随机种子,报均值±标准差 坑 8
9 SMOTE 只进训练折;插补只进训练折 坑 8、§5.3
10 属性数写"24 特征+1 标签";等级列(sg/al/su)按序数处理 坑 9

§12 总结

Chronic Kidney Disease (UCI) 是 400 行代码都嫌短的表格数据集,却是机器学习医学应用的一面高清镜子。它的"好"干净利落:CC BY 4.0 零摩擦获取、45 KB 即取即用、24 个特征横跨五组临床检查体系、类别与任务定义清晰。它的"坏"也干净利落:10.12% 的非随机缺失、仅 39.5% 的完整行、脏值三连、四个疑似错位的极端值、以及一个官方从未解释过的标签黑箱。而它的"最深"在于:notckd 类近乎规则可分的结构,让它成了"基准通胀"现象最诚实的标本——在这里,99% 是数据的属性,不是模型的属性。

本编辑部定级:AI-Ready 良好(DAIMS 18/25,§6.5 逐维详注见附录 M)。教学与基准方法学研究的一等公民;临床叙事与真实世界推断的禁区。

三句临别赠言:给教学者——§9.1 的四个演示包,每一个都能在一节课内引爆一次"原来如此";给研究者——先跑附录 F 再写第一行插补代码,口径冻结是方法学研究的第一美德;给临床信息学入门者——把 §2.9 的三个警示框贴在显示器边上,比任何长文都管用。

FAQ:三十八个高频问题

F1:我可以用这个数据集训练一个真的给医院用的 CKD 诊断模型吗?
不可以把它当作临床就绪证据。标签判定标准不可追溯、人群单一医院、无 eGFR 与时间维度、无分期信息——它适合教学与原型验证,临床落地需要前瞻性、多中心、标签口径明确的数据(对比库内 mimic-iv-clinical-database (4) 的 EHR 路径)。

F2:我该 dropna 吗?
默认不要。dropna 后只剩 158 例(39.5%),且被删行非随机(§3.3)。优先用缺失指示列或树模型原生 NaN 通道;若必须 dropna,报告前后 n 与分布对照(坑 4)。

F3:为什么我跑出来只有 85%,论文里都是 99%?
先查四件事:是否 dropna 掉了样本、是否用了分层 k 折(论文的单分割分数普遍虚高)、SMOTE 放在哪一步、极端值是否处理过。如果你的 85% 是认真 5 折 CV 的结果,它比论文里的单分割 100% 更值得信任(坑 8、§5.4)。

F4:SMOTE 到底放在哪一步?
只放在每个训练折内部:先切分,再对训练折 SMOTE,测试折保持原分布。先对全集 SMOTE 再切分会让合成样本"过继"信息给测试集,属于标签泄漏(§5.3)。

F5:这份数据有性别列吗?
没有。UCI demographics 只登记 Age。任何论文里的"男女比例"叙述都是无源之水。

F6:有儿童患者吗?
有。age 最小 2 岁、最大 90 岁(实测 n=391);data.csv 行 188 是 8 岁患儿(也是 dm 脏值 \tno 的所在行,坑 2)。做成人研究时按年龄标准剔除,别当异常值丢。

F7:al 和 su 的 0-5 是什么单位?
不是单位,是等级(ordinal):0=无,5=最重。al 是尿白蛋白等级、su 是尿糖等级。建模按序数处理,别当连续变量。

F8:pcv 的单位是什么?
UCI API 没有给 pcv 单位字段(24 列中唯一,坑 9)。临床惯例 PCV(红细胞压积)以百分比报告,实测范围 [9, 54] 与百分比口径吻合。使用时自行注明"按 % 解读"。

F9:哪个单特征判别力最强?
血清肌酐 sc:ckd 组均值 4.41 vs notckd 组 0.87(§2.8),且它是 eGFR 的输入变量、临床意义直接。但注意 max 76 疑似小数点错位(坑 7),用前先处理。

F10:能做 CKD 分期任务吗?
不能。标签只有 ckd/notckd 二值,无 1-5 期信息,官方也未提供 eGFR 或肌酐清除率列。分期研究请转向 EHR 类数据(库内 mimic-iii (106))。

F11:旧版 .arff 和现在的 data.csv 有什么区别?
旧版是 Weka ARFF 格式,2023 平台改版后路径全部 404;社区教程传说的 \t? 型脏值("17 处"之说)属于旧版文件,现已无法实证。官方现仅提供 data.csv,本条目一切实测以它为准(坑 5、附录 D 存照)。

F12:引用时的 DOI 是什么?
DOI 10.24432/C5G020(2023 年平台改版后分配)。完整引用格式见 §6.4。

进阶问题(F13-F38,按主题分五组)

组 A:数据本体与口径

F13:为什么 45 KB 的数据集值得一条百科条目?
体积小,方法学密度高。三个理由:其一,它是缺失工程的完备标本——10.12% 缺失、整块缺失结构、三处脏值、字面量 “NaN”,几乎每个缺失值议题都能在它身上演示;其二,它是基准通胀的活体样本——同一篇论文里单分割 100% 与 5 折 CV 87% 并存(坑 8),“99% 是数据的属性"这句话在别的数据集上要论证半天,在这里一眼看穿;其三,CC BY 4.0 零摩擦获取使它成为公共讨论的"地板”——人人拿得到同一份文件,数字对不上就能当面对质。

F14:data.csv 的行号怎么数?
本条目行号一律为 pandas read_csv 后的 DataFrame 0 基索引(数据行序号,不含表头行):“行 37” 是第 38 条数据记录,对应 df.iloc[37],对应文本文件的第 39 物理行。跨文献对照行号时先对齐口径——"0 基不含表头 / 1 基不含表头 / 含表头"三种口径各差一位,是行号引用混乱的根源(附录 C)。

F15:有患者 ID 吗?隐私上要注意什么?
没有 ID、姓名、性别、日期列,天然低再识别风险。但"CKD 诊断 + 特定检验组合"在小人群下仍有重识别可能,CC BY 4.0 许可不豁免机构伦理评估义务——再分发或公开演示前按你所在机构的流程过一遍。

F16:同一列会不会有多种编码形态?
官方 data.csv 的 rbc/pc 列实测只有 {normal, abnormal} 两种取值(NaN 除外),没有传闻中的 1/0 数值形态混录(本编辑部逐值实测;早年间社区教程描述的混合编码属于旧版 ARFF 文件,已断代无法实证,见坑 5)。清洗时仍建议对全部 object 列做取值集合断言,防止镜像文件引入形态混杂。

F17:sg 为什么只有五档?
官方按 Categorical 登记,实测 1.005/1.010/1.015/1.020/1.025 五档(计数 7/84/75/106/81,NaN 47)。对应比重计读数的固定档位习惯与两位小数的存储精度。建模按序数处理(§2.3、§2.9 警示框二)。

F18:bu 和 BUN 是一回事吗?
不是。bu=血尿素(blood urea);BUN=血尿素氮 ≈ 尿素 × 0.467,换算回去尿素 ≈ BUN × 2.14。临床"BUN 正常 7-20 mg/dL"翻译到本数据集 bu 口径约为 15-40。大量教程把 bu 直接当 BUN 套 7-20 区间,会把参考上限压低一半以上。详见 §2.9 警示框一。

组 B:临床语义

F19:血清肌酐多少算异常?
男 0.6-1.3 / 女 0.5-1.2 mg/dL(三源口径,尾注 11-12);本数据集 ckd 组均值 4.41 已远超上限,最强单变量(§2.8)。另注意:主流 eGFR 公式(CKD-EPI 等)需要性别输入,本数据集无性别列,读者无法从 sc 自行复算 eGFR。

F20:什么是等渗尿?和 sg 列什么关系?
尿比重固定于 1.010±0.003 的"等渗尿"提示肾浓缩与稀释功能严重受损。ckd 组 sg 向 1.005-1.015 低档集中,与该临床画像吻合;notckd 组只取 1.020/1.025 两档(§5.4)。

F21:al 的 0-5 等级和 KDIGO 的 ACR 分级是一回事吗?
不是。al 是 0-5 半定量等级;ACR 是 mg/g 定量体系(A1 <30 / A2 30-300 / A3 >300)。二者不可换算,把"al=3"写成"A3 期"是审稿中真实出现过的错误(§2.9 警示框三)。

F22:KDIGO 的 CGA 分期是什么?这份数据能做分期吗?
CGA 三轴=病因(Cause)+GFR 分期(G1 ≥90 / G2 60-89 / G3a 45-59 / G3b 30-44 / G4 15-29 / G5 <15 mL/min/1.73m²)+白蛋白尿(A1/A2/A3),KDIGO 2024 官方口径。本数据集无 eGFR 列、无病程时间维度、无 ACR 定量——无法映射,只能做"疑似 CKD vs 非 CKD"二分类(§2.9 背景框)。

F23:hemo/pcv/rbcc 三个贫血指标什么关系?
同一贫血轴的三种测量:hemo 血红蛋白浓度(g/dL)、pcv 红细胞压积(%,经验上≈hemo×3)、rbcc 红细胞计数(百万/µL)。三者强共线,线性模型慎同喂(§2.5)。ane 是问诊判定的定性记录,与三者的"定量"侧构成双记录结构(§2.6)。

F24:wbcc 的正常范围是多少?文献里的 4,800 是怎么回事?
临床参考 5000-10000/mm³;官方 data.csv 实测范围 [2200, 26400]、均值 8406.12。有论文自报 “(2,200 to 4,800)”,与实算相差五倍,疑排版丢位(§5.6 存照)——文献描述统计必须回源核验。

组 C:清洗实操

F25:strip 之后还有哪些体检动作?
逐列 dtype 与取值集合复核(军规 2):object 列的取值集合与 §2.1 表逐列对照;数值列的小数/整数口径核对(bu 实测含 1.5、sod 实测含 4.5,而 API 标 Integer,坑 9);等级列档位完整性(sg 五档、al/su 0-5)。

F26:极端值应该删掉还是保留?
按坑 7 原则分两类:违反生理底线的(pot 47、sod 4.5、bgr 22——心搏骤停阈值与不可存活值)按疑错处置(置缺失并留痕);罕见但可能的(sc 10+、bu 391)保留并做稳健变换。逐例记录理由,禁止"见大数就删"——医疗数据里极端值常常是病情本身。

F27:缺失指示列怎么做?
df.isna().astype(int) 后加 _missing 后缀加回特征矩阵;或直接用 XGBoost/LightGBM 的原生 NaN 通道让模型自学缺失含义(§3.5 第 4 派)。指示列本身也要纳入 §5.5 的口径报告。

F28:均值插补还有什么坑?
其一,SimpleImputer 必须放进 Pipeline 只在训练折 fit——全表 fit 是泄漏(§5.3);其二,38% 缺失的 rbc 列会被插成一根常数柱,方差被系统性低估(§3.5);其三,插补后必须做分布对照(F29)。

F29:怎么验证清洗没有改变人群画像?
清洗前后各跑一遍附录 F 断言脚本 + 逐列均值±标准差对照表;类别分布、缺失率、极端值处置清单三项有任何漂移即回查。附录 F 脚本可直接跑两遍对比输出。

组 D:建模与评测

F30:规则可分结构怎么自己验证?
两条路:其一,对 notckd 150 例断言十列规则(附录 F 已含此断言——150 例在 al/su/htn/dm/cad/appet/pe/ane/rbc/pc 十列上零违反);其二,限深 3-4 层训练一棵决策树,检查学到的分裂是否就是 §5.4 的合取规则。量化补充:ckd 组 250 例中十列规则零违反的有 17 例(含行 188 患儿),其中 14 例靠 sg 低档(1.005-1.015)与 notckd 区分开。

F31:报告哪些指标才够专业?
准确率之外:灵敏度/特异度、按类精确率/召回/F1、混淆矩阵、ROC-AUC;分层 5 折×≥10 种子的均值±标准差;n 与清洗口径(400 / 158 / 插补后)必须随行。医疗场景里漏诊(ckd→notckd)与误诊代价不对称,混淆矩阵不可省(§5.5)。

F32:深度学习在这个数据集上有意义吗?
样本量上无优势:Chittora DNN 99.6% 与 RF/LSVM 98-99% 的高分密集带差距在种子噪声内(§5.7);400 例表格数据不足以支撑深度网络的容量优势。意义限于框架教学;用本数据集论证"深度学习更强"是反模式(附录 G-9)。

F33:怎么切分才不泄漏?
先切分;插补、SMOTE、特征选择只进训练折;分层保持类比;固定 ≥10 种子报告分布。口诀:任何跨训练/测试的信息流动都按泄漏处理(§5.3、坑 8)。切分前 strip 与极端值处置属于"数据卫生"可以全表做——但基于全表统计的变换(标准化、目标编码)不行。

F34:和 Pima、Heart Disease 比,教学上怎么选?
纯入门选 Iris;讲缺失工程选 CKD-UCI(显式 NaN + 整块缺失 + 脏值三连,教材最完备);讲代谢病叙事选 Pima(缺失伪装成 0 的另一类典型);讲多指标组合判别选 Heart Disease。CKD-UCI 的差异化生态位="缺失+不平衡+特征工程"三合一(§7.1)。

组 E:获取与引用

F35:想引用被引最高的基准论文怎么写?
Qin, C. et al., IEEE Access 8:20991-21002, 2019-12-30, DOI 10.1109/ACCESS.2019.2963053。引用时注明它是社区基准、非官方伴生(本数据集无官方论文,API intro_paper: null),并在对比数字前写清其协议(KNN 插补 + 十次仿真平均)。

F36:能把 data.csv 重新分发吗?
CC BY 4.0 允许,义务仅署名(§6.3)。再分发时附 UCI 官方引用(§6.4)并注明你做过的任何清洗——清洗版与原样的差异必须在数据卡里写清,否则复现者会在你的口径上浪费半天(坑 5 的镜像教训)。

F37:有官方 train/test 划分吗?
没有。官方只分发 data.csv 一个文件;你见到的任何"官方划分"都是社区自制。引用对比时须注明划分协议,无法确认协议的数字不具备对话资格(§5.0、§5.5)。

F38:有"画像像健康人却标 ckd"的样本吗?
有,且可以精确量化:ckd 组 250 例中有 17 例在十列规则上零违反(df 索引 6、64、102、105、110、117、119、131、174、182、188、192、209、211、216、218、220),其中 3 例 sg 也落在 notckd 的 1.020 档——仅凭十列+sg 规则会被判为 notckd。它们是"标签黑箱"(附录 E 第 1 条)与 §5.4 "难样本"的真实实体:要么标签判定用了本数据集之外的信息(如 eGFR 病程),要么存在误标——官方未载,无法裁决。正确姿势是把这 17 个索引存照引用,而不是替官方编一个解释。

F39:想复现 Qin 2019 的 99.83%,具体步骤?
先说结论:不可完全复原——论文未公开切分种子、KNN 插补的 k 值等全部细节。最小可信复现路径:官方 data.csv → strip 清洗 → KNN 插补 → 分层 5 折 × 10 种子 → RF 与你关心的模型同台 → 报告自己的分布。你的分布大概率落在 97-99.5% 区间,与 99.83% 同层即可视为协议一致;逐点对齐单次数字没有意义(§5.5)。

F40:审稿人问"为什么用这么小的数据集"怎么回应?
三层回应框架:其一,定位——方法学演示与教学,非临床性能声明(§8.2);其二,理由——规则可分结构使它成为基准通胀的标准测试床,附录 G 十大反模式都能在它身上复现,这是 400 例能买到的独特方法论价值;其三,补强——承认单一局限,补一组大规模 EHR 对照实验(如库内 mimic-iv-clinical-database (4)),展示同一方法在真实规模下的行为差异。

F41:能自己采数据把它扩充吗?
可以,但别混。新数据必须自带标签口径说明(否则重演"标签黑箱");合并产物是"新数据集"而非"CKD-UCI 扩充版"——两个来源的采样机制、检验方法、标签标准都不同,混采会让 10.12% 缺失结构的分析失效。正确姿势:分开发布、各自引用,实验部分做"CKD-UCI 单独 / 新集单独 / 合并"三臂报告(F36 的数据卡纪律同样适用于新集)。

F42:儿科样本怎么处理?
实测 age<18 有 19 例(2-17 岁),age≥18 共 372 例,另有 9 例年龄缺失。成人研究按 df[df.age>=18] 剔除即可,剔除后重跑附录 F 断言并报告前后分布;把 8 岁患儿当"异常值"丢是语义错误——他不是错值,是儿科患者(FAQ F6、坑 2)。

F43:为什么不直接用 t 检验看组间差异?
可以看(§2.8 就是分组均值),但三件事让它不稳:极端值(坑 7)破坏正态与方差齐性;等级列(sg/al/su)不是连续变量;组间差异大 ≠ 单列可判——判别力来自列的组合(§5.4)。更稳的组合:Mann-Whitney U + 效应量(如 Cliff’s delta),等级列用秩检验。

F44:三位创建者的机构归属有官方说法吗?
没有。UCI 页面与 API 都只给姓名(L. Rubini、P. Soundarapandian、P. Eswaran),机构归属官方未载(附录 E-3);文献转述一般认为 Soundarapandian 对应 Apollo 医院方,但无官方确认。引用时照 §6.4 官方格式写姓名即可,机构归属留空。

事实清单:三十八条硬事实速查

  1. UCI Machine Learning Repository 数据集 ID 336;slug chronic-kidney-disease-uci。
  2. DOI 10.24432/C5G020;license CC BY 4.0。
  3. 官方 data.csv 45,092 字节,401 行 = 表头 + 400 数据行,25 列。
  4. 24 特征 + 1 标签;UCI API num_features: 24;论文"25 attributes"口径含 class。
  5. 捐赠者:L. Rubini、P. Soundarapandian、P. Eswaran(API creators 原样)。
  6. 捐赠日 2015-07-02;创建年 2015;元数据最后更新 2024-03-04。
  7. 采集医院 Apollo Hospitals(印度泰米尔纳德邦);城市三口径:Managiri / Manamadurai / Karaikudi(maybe)。
  8. 官方摘要原文称采集期 “nearly 2 months of period”。
  9. 无官方伴生论文(API intro_paper: null);无官方划分与榜单。
  10. 类别原样:ckd 248 + ckd\t 2 + notckd 150;归一 250/150(62.5%/37.5%)。
  11. 脏标签行:data.csv 行 37 与行 230(class=ckd\t)。
  12. dm 脏值行:行 188(dm=\tno,age=8 患儿,hemo 12.2)。
  13. 全表缺失 1012/10000 格 = 10.12%;缺失以字面量字符串 “NaN” 表示。
  14. 24 个特征列全部存在缺失;缺失冠军 rbc 152 格(38.0%)。
  15. 零缺失完整行仅 158 例(39.5%);重复行 0。
  16. 数值列 11 个、字符串/等级列 14 个;sg 实测仅 5 个离散值(1.005-1.025)。
  17. al 等级计数:0×199 / 1×44 / 2×43 / 3×43 / 4×24 / 5×1(NaN 46)。
  18. su 等级计数:0×290 / 1×13 / 2×18 / 3×14 / 4×13 / 5×3(NaN 49)。
  19. age 实测 51.48±17.17,范围 [2, 90],n=391。
  20. bp 实测 76.47±13.68,范围 [50, 180];PLOS ONE 2024 论文口径 76.175(双口径存照)。
  21. sc 实测 3.07±5.74,范围 [0.4, 76];76 疑似 7.6 错位。
  22. pot 实测 4.63±3.19,范围 [2.5, 47];47 疑似 4.7 错位。
  23. bgr 范围 [22, 490];22 为生理不可存活值,疑漏位。
  24. pcv 是 UCI API 变量表中唯一无 units 字段的列。
  25. ckd vs notckd 分组均值:sc 4.41/0.87;hemo 10.65/15.19;pcv 32.94/46.34;bgr 175.42/107.72。
  26. 150 例 notckd 在 al/su/htn/dm/cad/appet/pe/ane/rbc/pc 十列上取值完全规则,sg 只取 {1.020, 1.025}——任务近乎规则可分。
  27. 社区基准:Qin et al. 2019 RF 99.75%/集成 99.83%(IEEE Access 8:20991-21002,被引 379+);Chittora et al. 2021 DNN 99.6%(IEEE Access 9:17312-17334)。
  28. ANFIS-PSO 2026:单分割 100% vs 5 折 CV 87.00%±3.59%(DOI 10.62762/bish.2026.692582)。
  29. 旧版 .arff 路径全 404(2023 平台改版);官方 zip 内为 Chronic_Kidney_Disease.rar(18.8 KB)。
  30. UCI 生态位:与 Iris / Heart Disease / Pima 同级的教学四天王;"缺失值+不平衡+特征工程"三合一教学样本。
  31. 临床参考区间(三源口径,尾注 11-12):sc 男 0.6-1.3 / 女 0.5-1.2 mg/dL;sod 135-145、pot 3.5-5.0 mEq/L;hemo 约 12-17 g/dL;wbcc 5000-10000/mm³;rbcc 约 4.0-6.0 millions/cmm。
  32. bu≠BUN:UCI 官方标 bu 为 blood urea;BUN ≈ 尿素 × 0.467(尿素 = BUN × 2.14);临床 BUN 7-20 mg/dL → bu 口径约 15-40(§2.9 警示框一)。
  33. KDIGO 2024 CGA 分期:G1 ≥90 / G2 60-89 / G3a 45-59 / G3b 30-44 / G4 15-29 / G5 <15(mL/min/1.73m²);A1 <30 / A2 30-300 / A3 >300 mg/g;本数据集无 eGFR/病程/ACR,不可映射。
  34. 规则可分量化:notckd 150 例十列规则零违反;ckd 250 例中零违反 17 例(df 索引 6/64/102/105/110/117/119/131/174/182/188/192/209/211/216/218/220),其中 14 例靠 sg 低档区分、3 例 sg=1.020 与 notckd 档重叠。
  35. PeerJ CS 基准论文自报 wbcc “(2,200 to 4,800)” vs 实测 [2200, 26400]——文献描述统计须回源核验(§5.6)。
  36. 行号口径:本条目行号 = pandas DataFrame 0 基索引(不含表头行);脏值三行 df 索引 37/230/188 对应文本物理行 39/232/190(1 基)。
  37. 附录 A 三行存照为 2026-09-29 逐字段实测口径;早期草稿对 df 索引 37 的"健康画像"描述有误,已更正并存照(附录 A 更正声明)。
  38. 附录 F 复算脚本全部断言经本编辑部在官方文件(45,092 字节)上实测跑通(2026-09-29)。

术语表

术语 释义
CKD(慢性肾病) 肾脏结构或功能异常持续 ≥3 个月的临床综合征;本数据集标签 ckd 的医学对象
eGFR 估算肾小球滤过率,由血清肌酐等推算的肾功能核心指标;本数据集未提供,标签判定标准不可追溯
血清肌酐(sc) 肌肉代谢产物,经肾排泄;血中浓度升高提示肾滤过功能下降,本数据集最强单变量
血尿素(bu) 蛋白质代谢终产物;升高见于肾功能失代偿、高分解代谢等
PCV / pcv(红细胞压积) 红细胞占全血容积百分比;UCI API 未给单位字段,临床惯例为 %
尿比重(sg) 尿液浓缩能力指标;实测仅 1.005-1.025 五档离散值
蛋白尿 / al 尿白蛋白等级 0-5;CKD 诊断与分期的核心证据之一
脓细胞(pc) 尿中变性白细胞的形态学描述,normal/abnormal 二值
MNAR 非随机缺失(缺失依赖于值本身);本数据集检验列缺失的嫌疑机制
SMOTE 少数类过合成技术;须只在训练折内使用,否则构成标签泄漏
规则可分 两类样本可被有限条合取规则完全区分的数据结构;notckd 类在本数据集近于此
基准通胀 单分割/泄漏协议下评测分数系统性高于严格协议的现象;本数据集文献的 100% vs 87% 落差即标本
k 折交叉验证 数据分 k 份轮换测试的评测协议;报告均值±标准差方为严格口径
ARFF Weka 使用的属性-关系文件格式;本数据集旧版分发格式,已断代
UCI ML Repository 加州大学欧文分校维护的公开机器学习数据集库,本数据集的官方托管方
DOI 数字对象唯一标识符;本数据集 10.24432/C5G020
CC BY 4.0 知识共享署名 4.0 许可:允许商用与衍生,义务仅署名
DAIMS 本编辑部 AI-Ready 五维评估体系:Documentation/Accessibility/Interoperability/Metadata/Sustainability
归一口径 对原始脏值做 strip 清洗后的统计口径(ckd 250/notckd 150),与"原样口径"(248+2+150)相对
双口径存照 同一事实存在两个可信来源口径时,条目同时记录两者并注明出处与取舍的编辑实践
BUN / 血尿素氮 blood urea nitrogen;≈血尿素 × 0.467,临床参考 7-20 mg/dL;与本数据集 bu 列差一换算(§2.9 警示框一)
ACR(尿白蛋白/肌酐比值) albumin-to-creatinine ratio,KDIGO 白蛋白尿分级(A1/A2/A3)的定量基础;与本数据集 al 等级不可互换
CGA 分期 KDIGO 的 CKD 三轴分期:病因 Cause + GFR 分期 G1-G5 + 白蛋白尿 A1-A3(KDIGO 2024 口径)
等渗尿 isosthenuria;尿比重固定 1.010±0.003,提示肾浓缩稀释功能严重受损(§2.9)
缺失模式 missingness pattern;一行内缺失列的组合,本数据集实测 105 种(附录 L)
数据卡 data card;再分发数据集时说明来源/改动/指纹/已知问题的随行文档(附录 O.2)
单分割 single train/test split;一次随机切分的弱评测协议,本数据集上易得虚高满分(坑 8)
分层切分 stratified split;按类别比例分配折内样本的切分方式,不平衡数据评测的底线

附录 A:三处脏值行全字段存照(官方 data.csv;行号 = DataFrame 0 基索引,不含表头行)

df 索引 37(class 脏值第一例):age=72, bp=80, sg=NaN, al=NaN, su=NaN, rbc=NaN, pc=NaN, pcc=notpresent, ba=notpresent, bgr=137, bu=65, sc=3.4, sod=141, pot=4.7, hemo=9.7, pcv=28, wbcc=6900, rbcc=2.5, htn=yes, dm=yes, cad=no, appet=poor, pe=no, ane=yes, class=ckd\t——典型 CKD 画像(sc 3.4 与 bu 65 显著升高、hemo 9.7 与 pcv 28 偏低、appet poor、ane yes)伴五格检验缺失(sg/al/su/rbc/pc),标签与画像一致;本行的教学价值在于脏标签本身而非标签疑点。

df 索引 230(class 脏值第二例):age=65, bp=60, sg=1.010, al=2, su=0, rbc=normal, pc=abnormal, pcc=present, ba=notpresent, bgr=192, bu=17, sc=1.7, sod=130, pot=4.3, hemo=NaN, pcv=NaN, wbcc=9500, rbcc=NaN, htn=yes, dm=yes, cad=no, appet=poor, pe=no, ane=no, class=ckd\t——血常规三项全缺(hemo/pcv/rbcc;wbcc 9500 在列)+ 蛋白尿(al=2)+ 高血压 + 糖尿病 + 脓尿(pc abnormal、pcc present),临床画像与 ckd 标签一致;strip 归一后为正类样本。

df 索引 188(dm 脏值行):age=8, bp=NaN, sg=NaN, al=NaN, su=NaN, rbc=NaN, pc=NaN, pcc=notpresent, ba=notpresent, bgr=80, bu=66, sc=2.5, sod=142, pot=3.6, hemo=12.2, pcv=38, wbcc=NaN, rbcc=NaN, htn=no, dm=\tno, cad=no, appet=good, pe=no, ane=no, class=ckd——8 岁患儿,dm 列制表符前缀;八格缺失(bp/sg/al/su/rbc/pc/wbcc/rbcc),残余画像(sc 2.5、bu 66)支持 ckd 标签。注意本行同时是"十列规则零违反"的 17 例 ckd 样本之一(FAQ F38):dm strip 后为 no,问诊与尿液两轴全合规,是 §5.4 难样本与标签黑箱的交汇点。

行号口径存照:本条目行号一律为 pandas read_csv 后的 DataFrame 0 基索引(数据行序,不含表头行)。三行对应的文本文件物理行号(1 基)分别为 39、232、190;"含表头 0 基"口径则为 38、231、189——三种口径各差一位,跨文献对照行号先对齐口径(FAQ F14)。

更正声明:本条目早期草稿曾将 df 索引 37 描述为"临床画像更像健康/边缘人却被标 ckd"。经 2026-09-29 对官方 data.csv 的逐字段复测,该描述有误——37 号行的 sc/bu/hemo/pcv/appet/ane 均为典型 CKD 方向(见上方实测存照),特此更正;真正呈现"标签与规则画像张力"的是 FAQ F38 所列 17 例零违反样本。实测为本条目一切行级描述的唯一依据。

附录 B:清洗要点参考代码(Python/pandas)

import pandas as pd
from sklearn.model_selection import StratifiedKFold

df = pd.read_csv("data.csv")          # pandas 默认识别 "NaN" 字面量

# 军规 1:全表 strip,清除 ckd\t 与 \tno
for c in df.columns:
    if df[c].dtype == object:
        df[c] = df[c].str.strip()

# 军规 2:逐列体检——类别数与取值集合核对
for c in df.columns:
    print(c, df[c].value_counts(dropna=False).to_dict())
# 期望:class -> {ckd: 250, notckd: 150};dm -> {no: 261, yes: 137, nan: 2}

# 军规 7:极端值逐例处理(示例:疑错值按缺失处理并记录)
suspect = {"pot": 47, "sc": 76, "sod": 4.5, "bgr": 22}
for col, val in suspect.items():
    mask = df[col] == val
    df.loc[mask, col] = float("nan")
    print(f"{col}=={val}: {mask.sum()} 处置为缺失")

# 军规 8/9:分层 k 折 + 插补/SMOTE 只进训练折
X, y = df.drop(columns=["class"]), (df["class"] == "ckd").astype(int)
skf = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)
for tr, te in skf.split(X, y):
    pass  # 在 tr 内拟合插补器与 SMOTE,在 te 上只 transform/predict

附录 C:本文实测方法说明

  • 数据对象:UCI 官方 data.csv(https://archive.ics.uci.edu/static/public/336/data.csv),2026-09-29 下载,45,092 字节,401 行×25 列。
  • 统计口径:除特别注明"论文自报口径"外,本条目全部统计(缺失账本、逐列计数、均值±标准差、范围、分组均值、规则可分检验)均由本编辑部对该文件直接计算得出;行号一律为 pandas read_csv 后的 DataFrame 0 基索引(数据行序,不含表头行;详见附录 A 行号口径存照)。
  • 元数据口径:UCI 官方页 HTML 实抓(212 KB)与 API JSON(6,786 字节,/api/dataset?id=336)双源核对。
  • 文献口径:Qin 2019 与 Chittora 2021 经 IEEE Xplore 官方页与开放学术索引交叉确认;ANFIS-PSO 2026 与 PLOS ONE 2024 经 DOI 解析确认;五篇早期文献为综述转引口径,未逐篇复核原文(§5.1 注);临床参考区间三源与 PeerJ CS-2899 存照见尾注 11-14。
  • 核验时点:2026-09-29(链接可达性、Google Scholar 被引数均为该时点口径,会随时间漂移)。

附录 D:双口径存照汇总

事实 口径 A 口径 B 本条目取舍
采集医院城市 Managiri(PLOS ONE 2024) Manamadurai(ANFIS-PSO 2026);Karaikudi “maybe”(Bristol 课程页) 正文只写"泰米尔纳德邦",三口径存照(坑 6)
bp 均值 76.175(PLOS ONE 2024 报告) 76.47±13.68(官方 data.csv 实算) 按实算 76.47 书写,论文口径注明
类别数 248+2+150(原样口径,含 ckd\t) 250/150(归一口径) 正文按归一 250/150,原样口径同步存照
属性数 24(API num_features,不含 class) 25(部分论文口径,含 class) 写"24 特征+1 标签",两口径注明
UCI 官方摘要英语 原样引用(“nearly 2 months of period”) 善意解读为"采集期约两个月" 原样存照+解读注明
旧版 ARFF 脏值 社区教程传 \t? 型脏值"17 处" 官方 data.csv 实测数值列无脏值(脏值仅 3 处字符串) 只写实测 3 处,传说列入遗留疑点

附录 E:遗留疑点清单(官方未载、本轮无法核实的六件事)

  1. 标签判定标准:ckd/notckd 是否按 KDIGO 口径、是否基于 eGFR 与病程、由谁复核——无任何官方说明;FAQ F38 所列 17 例十列规则零违反的 ckd 样本加深了这一疑点——它们与 notckd 在问诊与尿液两轴完全同构却被标 ckd,要么标签判定使用了本数据集之外的信息,要么存在误标。
  2. 抽样方式:门诊/住院构成、连续入组还是配对抽样、两个月窗口的入组流程——无记载。
  3. 创建者三人:L. Rubini / P. Soundarapandian / P. Eswaran 的完整姓名与机构归属,UCI 页面与 API 均未载;文献转述一般认为 Soundarapandian 对应 Apollo 医院方,未获官方确认。
  4. 脏值成因:两处 ckd\t 与一处 \tno 是否源系统导出缺陷、是否曾有人向捐赠者求证——无记载。
  5. 极端值成因:pot 47、sc 76、bgr 22、sod 4.5 是否录入错误——官方无说明,本条目只能按生理底线做"疑错"推断(坑 7)。
  6. 化验方法:各检验列的具体方法/试剂/单位标准(尤其 pcv 无单位字段)未注明;旧版 ARFF 的 \t? 脏值传说因旧版断代无法实证。

以上疑点若未来获得官方回应或新证据,应以官方口径为准更新本条目。

附录 F:核心数字复算脚本(Python/pandas 断言版)

把本脚本与官方 data.csv 放同一目录运行(python3.11 ckd_recheck.py [data.csv]),全部断言通过即说明你手里的文件与本条目实测同源——这是引用本条目任何数字前的第一步(§9.2 第 1 步)。断言数字均为本编辑部 2026-09-29 对官方 data.csv(45,092 字节)的实测口径。

#!/usr/bin/env python3.11
"""CKD-UCI 官方 data.csv 核心数字复算:全部断言通过 = 与千方病案条目实测同源。"""
import sys
import pandas as pd

CSV = sys.argv[1] if len(sys.argv) > 1 else "data.csv"

# ---- 文件指纹 ----
raw = open(CSV, "rb").read()
assert len(raw) == 45092, f"字节数 {len(raw)} != 45092"
lines = raw.decode("utf-8").splitlines()
assert len(lines) == 401, f"物理行数 {len(lines)} != 401(1 表头 + 400 数据)"

df = pd.read_csv(CSV)
assert df.shape == (400, 25), f"shape {df.shape} != (400, 25)"

# ---- 缺失账本(§3.1)----
total_missing = int(df.isna().sum().sum())
assert total_missing == 1012, f"缺失格 {total_missing} != 1012"
rate = total_missing / (df.shape[0] * df.shape[1]) * 100
assert abs(rate - 10.12) < 0.005, f"缺失率 {rate:.4f} != 10.12%"
assert int(df.notna().all(axis=1).sum()) == 158, "零缺失完整行 != 158"
assert int(df.duplicated().sum()) == 0, "存在重复行"

# ---- 缺失冠军三兄弟(§3.2)----
mc = df.isna().sum()
assert int(mc["rbc"]) == 152 and int(mc["rbcc"]) == 131 and int(mc["wbcc"]) == 106
assert int(mc["appet"]) == 1 and int(mc["pe"]) == 1 and int(mc["ane"]) == 1

# ---- 标签与脏值(坑 1/坑 2;行号 = DataFrame 0 基索引,不含表头)----
vc = df["class"].value_counts()
assert vc.get("ckd") == 248 and vc.get("notckd") == 150 and vc.get("ckd\t") == 2
assert sorted(df.index[df["class"] == "ckd\t"].tolist()) == [37, 230]
assert df.index[df["dm"] == "\tno"].tolist() == [188]
assert df.loc[188, "age"] == 8 and abs(df.loc[188, "hemo"] - 12.2) < 1e-9
assert set(df["rbc"].dropna()) == {"normal", "abnormal"}   # 无混合编码
assert set(df["pc"].dropna()) == {"normal", "abnormal"}

# ---- 极端值四连(坑 7)----
assert float(df["pot"].max()) == 47.0
assert float(df["sc"].max()) == 76.0
assert float(df["bgr"].min()) == 22.0
assert float(df["sod"].min()) == 4.5

# ---- 等级列档位(§2.3)----
assert sorted(df["sg"].dropna().unique().tolist()) == [1.005, 1.01, 1.015, 1.02, 1.025]
assert df["sg"].value_counts().to_dict() == {1.02: 106, 1.01: 84, 1.025: 81, 1.015: 75, 1.005: 7}
assert df["al"].value_counts().to_dict() == {0.0: 199, 1.0: 44, 2.0: 43, 3.0: 43, 4.0: 24, 5.0: 1}
assert df["su"].value_counts().to_dict() == {0.0: 290, 1.0: 13, 2.0: 18, 3.0: 14, 4.0: 13, 5.0: 3}

# ---- 数值列画像(附录 J)----
stats = {
    "age":  (391, 51.48, 17.17,   2.0,   90.0),
    "bp":   (388, 76.47, 13.68,  50.0,  180.0),
    "bgr":  (356, 148.04, 79.28, 22.0,  490.0),
    "bu":   (381, 57.43, 50.50,   1.5,  391.0),
    "sc":   (383, 3.07,  5.74,    0.4,   76.0),
    "sod":  (313, 137.53, 10.41,  4.5,  163.0),
    "pot":  (312, 4.63,  3.19,    2.5,   47.0),
    "hemo": (348, 12.53, 2.91,    3.1,   17.8),
    "pcv":  (329, 38.88, 8.99,    9.0,   54.0),
    "wbcc": (294, 8406.12, 2944.47, 2200.0, 26400.0),
    "rbcc": (269, 4.71,  1.03,    2.1,    8.0),
}
for col, (n, m, s, lo, hi) in stats.items():
    sr = df[col].dropna()
    assert len(sr) == n, f"{col} n={len(sr)} != {n}"
    assert abs(sr.mean() - m) < 0.005, f"{col} mean={sr.mean():.4f} != {m}"
    assert abs(sr.std() - s) < 0.005, f"{col} std={sr.std():.4f} != {s}"
    assert abs(sr.min() - lo) < 1e-9 and abs(sr.max() - hi) < 1e-9, f"{col} 范围不符"

# ---- 分组均值(§2.8)----
g = df.assign(cls=df["class"].str.strip()).groupby("cls")
pairs = {"sc": (4.41, 0.87), "hemo": (10.65, 15.19), "pcv": (32.94, 46.34),
         "bgr": (175.42, 107.72), "rbcc": (3.95, 5.38), "sod": (133.90, 141.73)}
for col, (ckd_m, nckd_m) in pairs.items():
    assert abs(g[col].mean()["ckd"] - ckd_m) < 0.005, f"{col} ckd 组均值不符"
    assert abs(g[col].mean()["notckd"] - nckd_m) < 0.005, f"{col} notckd 组均值不符"

# ---- 规则可分结构(§5.4)----
nc = df[df["class"] == "notckd"]
assert set(nc["al"].dropna()) == {0} and set(nc["su"].dropna()) == {0}
for c in ["htn", "dm", "cad", "pe", "ane"]:
    assert set(nc[c].dropna()) == {"no"}, f"notckd 组 {c} 不规则"
assert set(nc["appet"].dropna()) == {"good"}
assert set(nc["rbc"].dropna()) == {"normal"} and set(nc["pc"].dropna()) == {"normal"}
assert set(nc["sg"].dropna()) <= {1.02, 1.025}

# ckd 组十列规则零违反样本 = 17 例(FAQ F38)
strip = lambda s: s.str.strip() if s.dtype == object or str(s.dtype) == "str" else s
ckd = df[df["class"].str.strip() == "ckd"].copy()
for c in ["htn", "dm", "cad", "appet", "pe", "ane", "rbc", "pc"]:
    ckd[c] = strip(ckd[c])
viol = (ckd["al"].ne(0) & ckd["al"].notna()).astype(int)
viol += (ckd["su"].ne(0) & ckd["su"].notna()).astype(int)
for c, want in [("htn", "no"), ("dm", "no"), ("cad", "no"), ("appet", "good"),
                ("pe", "no"), ("ane", "no"), ("rbc", "normal"), ("pc", "normal")]:
    viol += (ckd[c].ne(want) & ckd[c].notna()).astype(int)
assert int((viol == 0).sum()) == 17, f"零违反 ckd 样本 {int((viol==0).sum())} != 17"

print("全部断言通过:你手里的 data.csv 与千方病案条目实测同源(2026-09-29 口径)。")

脚本使用两条提示:其一,ckd\t 的断言依赖你的终端/编辑器不吞制表符——直接复制本脚本后若报标签断言错,先检查 \t 字面量是否被转成真制表符或被展开;其二,均值/标准差断言容差 0.005 是为本条目的四舍五入口径(两位小数)设置的,若你用更高精度报表可自行收紧。

附录 G:十大反模式清单(CKD-UCI 专用)

每条给出"反模式—典型症状—代价—正解"四段式,可直接作为代码评审或课堂测验题库。

# 反模式 典型症状 代价 正解
1 dropna() 一刀切 论文里 n 无声变成 158 样本蒸发六成,且被删行非随机(整块缺失有临床画像) 缺失指示列 / 树模型原生 NaN 通道;必删时报前后分布(坑 4)
2 全集 SMOTE 后再切分 SMOTE 后 99%+ 且测试集分数完美 合成样本把训练信息"过继"给测试集,标签泄漏 SMOTE 只进训练折(§5.3)
3 单分割跑出 100% 就收工 “our model achieved 100%” 13 个百分点的通胀(100% vs 5 折 87%) 分层 5 折 × ≥10 种子,报均值±标准差(坑 8)
4 盲信 feature_types=Real 把 sg/al/su 送进线性模型当连续变量 等级档位被线性外推,系数不可解释 按 §2.1 实测类型表处理:等级列按序数(坑 9)
5 均值插补 38% 缺失列 rbc 列插补后直方图一根柱 方差系统性低估,下游检验失效 模型插补或原生通道;插补前后分布对照(§3.5)
6 极端值直接 z-score pot 列标准化后健康人全压在 0 附近 47 这个疑错值绑架整列分布 不可能值按疑错处置、罕见可能值稳健变换,逐例留痕(坑 7)
7 不 strip 直接 map({'yes':1,'no':0}) \tno 行静默变 NaN,或 ckd\t 变第三类 样本无声损失 / 类别数畸变 全表 strip + 类别数断言(军规 1/2,附录 B)
8 拿 Kaggle 镜像跑分与官方口径对话 你的 99.2% 与文献 99.75% “只差 0.5” 镜像可能已清洗/改行序,数字不可比 认准 static/public/336/data.csv,引用注明 data.csv 口径(坑 5)
9 用 400 例论证"深度学习更强" "DNN 优于传统 ML"结论 差距在种子噪声内,样本量差两个数量级 结论边界声明:本集只能支撑方法学演示(§8.2、FAQ F32)
10 把 al 等级写成 ACR 分期 / bu 当 BUN “al=3 即 A3 期”“bu 25 已超标” 医学语义错位,审稿一票否决级错误 读 §2.9 三个警示框;临床口径换算先查系数

十条的共同根源只有一个:把"表格能读出来"当成了"数据已经理解"。CKD-UCI 的每个坑都藏在"能读出来但没看"的地方——制表符藏在标签末尾、错位藏在极值里、规则结构藏在 value_counts 里。先复算(附录 F)、再体检(军规 2)、后建模,是这个数据集教给每个建模者的完整一课。

附录 H:时间线大事记(2015-2026)

以官方元数据与本条目直接核验的文献为节点;标"转引"者为综述转引口径(§5.1 注)。

时间 事件 出处口径
2015 数据集创建(API year_of_dataset_creation: 2015);官方摘要称采集期 “nearly 2 months of period” UCI API
2015-07-02 L. Rubini、P. Soundarapandian、P. Eswaran 捐赠 UCI UCI 官方页
2015-2023 旧版布局时代:.arff/.csv 分发;教学 notebook 与教程生态爆发;\t? 型脏值"17 处"传说在此期流传 坑 5、附录 E-6
2016 Sharma et al.(决策树 98.60%);Charleonnan et al.(SVM 98.3%,灵敏度 0.99/特异度 0.98)——早期基准 转引
2017 Gunarathne et al.(Azure ML Decision Forest 99.1%)——云平台流水线代表 转引
2019 Sossi et al.(SPSS XGBoost 单分割 100%);Al Imran et al.(FF-ANN f1 0.99)——单分割满分阵营成形 转引
2019-12-30 Qin et al. 发表 IEEE Access 8:20991-21002(KNN 插补;RF 99.75%;LR+RF 感知机集成 99.83%);日后成为被引锚点(379,2026-09 口径) IEEE Xplore 直核
2021-01-22 Chittora et al. 发表 IEEE Access 9:17312-17334(七分类器×六组合矩阵;DNN 99.6%;被引 378) IEEE Xplore 直核
2023 UCI 平台改版:分配 DOI 10.24432/C5G020;旧版文件路径全部下线(实测 404);官方分发仅剩 data.csv(45,092 字节) 坑 5、§6.2
2024-03-04 元数据更新(API last_updated),非数据内容变更 UCI API
2024 PLOS ONE 2024(DOI 10.1371/journal.pone.0295234):SMOTE 平衡;bp 均值 76.175 口径;医院城市写 Managiri DOI 解析直核
2026 ANFIS-PSO 2026(DOI 10.62762/bish.2026.692582):单分割 100% vs 5 折 CV 87.00%±3.59%;医院城市写 Manamadurai——同文两口径成为基准通胀活标本 DOI 解析直核
2026-09-29 本条目实测:data.csv 全量复算(缺失 1012/10.12%、完整行 158、脏值 3 处、极端值 4 连、规则可分 11 列);临床参考区间与基准文献三源补核 FACTS.md §10

附录 I:一句话速答卡(18 问)

  1. 这是什么?——400 例肾内科患者的 24 项检验指标 + 1 个 ckd/notckd 标签的 CSV。
  2. 多大?——45 KB;401 行×25 列(1 表头+400 数据,24 特征+1 标签)。
  3. 谁的?——Apollo Hospitals(印度泰米尔纳德邦)患者;Rubini/Soundarapandian/Eswaran 三人捐赠。
  4. 什么时候?——2015-07-02 捐赠 UCI;采集期约两个月。
  5. 许可?——CC BY 4.0:可商用、可再分发,义务仅署名。
  6. 怎么下载?——认准 archive.ics.uci.edu/static/public/336/data.csv 一条路;旧版 .arff 全 404。
  7. 缺失多吗?——1012/10000 格(10.12%);24 列全有缺失;零缺失完整行仅 158(39.5%)。
  8. 有脏数据吗?——2 例 ckd\t(df 索引 37/230)、1 例 \tno(df 索引 188);缺失写作字面量 “NaN”。
  9. 有可疑值吗?——pot 47、sc 76、bgr 22、sod 4.5,疑小数点错位,官方未注。
  10. 平衡吗?——ckd 250 vs notckd 150(62.5%/37.5%),中度不平衡。
  11. 能跑多高?——认真 5 折 CV 约 87-99%;单分割 100% 常见但无意义。
  12. 为什么人人都 99%?——notckd 150 例在十列上取值完全规则,任务近乎规则可分;99% 是数据的属性。
  13. 能做临床模型吗?——不能当临床就绪证据;教学与原型验证可以。
  14. 能做 CKD 分期吗?——不能:无 eGFR、无病程时间维度、标签只有二值。
  15. 有性别列吗?——没有;"男女比例"叙事皆无源之水。
  16. 有官方论文吗?——没有(intro_paper: null);最高被引社区基准是 Qin 2019(379+)。
  17. 怎么引用?——Rubini, L., Soundarapandian, P., & Eswaran, P. Chronic Kidney Disease [Dataset]. UCI ML Repository. DOI 10.24432/C5G020。
  18. 一句话总结?——小、脏、经典:缺失值+不平衡+基准通胀的三合一教学标本。

附录 J:数值列统计画像速查(11 列,实测口径)

与 §2.1 的五组总览互补:本表只收数值列,便于建模前快速核对分布形态。全部数字为本编辑部对官方 data.csv 的实算(2026-09-29)。

列 临床含义 n 均值 标准差 min max 分布注记
age 年龄(岁) 391 51.48 17.17 2 90 中老年为主体;含 2-8 岁儿科样本
bp 血压(mm/Hg,舒张压口径) 388 76.47 13.68 50 180 max 180 高血压急症级
bgr 随机血糖(mg/dl) 356 148.04 79.28 22 490 右偏重;min 22 疑错位
bu 血尿素(mg/dl) 381 57.43 50.50 1.5 391 std>mean 的重右偏;建议对数变换
sc 血清肌酐(mg/dl) 383 3.07 5.74 0.4 76 max 76 疑错位,std 被其拉高
sod 血钠(mEq/L) 313 137.53 10.41 4.5 163 min 4.5 不可存活疑错位
pot 血钾(mEq/L) 312 4.63 3.19 2.5 47 max 47 疑 4.7 错位
hemo 血红蛋白(g/dL) 348 12.53 2.91 3.1 17.8 双峰倾向(贫血轴组间落差 4.5)
pcv 红细胞压积(%) 329 38.88 8.99 9 54 与 hemo 强共线(经验比约 3:1)
wbcc 白细胞计数(cells/cmm) 294 8406.12 2944.47 2200 26400 max 26400 重度感染样反应
rbcc 红细胞计数(millions/cmm) 269 4.71 1.03 2.1 8 贫血轴定量侧;缺失最重(32.75%)

注记三条:其一,bu/sc/pot/bgr 四列的均值与标准差均受坑 7 极端值影响,复核时对照附录 F 断言;其二,n 的差异即缺失梯度(269-391),任何"全样本均值"声称都应先问是哪列的 n;其三,sod/pot 是电解质轴、hemo/pcv/rbcc 是贫血轴、bgr/bu/sc 是肾功-代谢轴——三条生理轴与 §5.4 的规则列(问诊轴)一起构成 24 特征的完整语义地图。

附录 K:投稿前 12 项检查单(用了 CKD-UCI 的论文自查)

# 检查项 对应条目锚点
1 全表 strip 已执行;class 仅剩 {ckd, notckd}、dm 仅剩 {yes, no} 的断言通过 军规 1/2、附录 B
2 n 报告了清洗各阶段数值(400 / dropna 后 / 插补后),类别分布随行 坑 4、§8.1 问 1
3 分割协议写明:分层 5 折以上 × ≥10 种子,报均值±标准差 坑 8、§5.5
4 SMOTE / 插补 / 特征选择的位置写明且只在训练折内 §5.3、§8.1 问 2
5 sg/al/su 按序数处理;未当连续变量 坑 9
6 未把 al 等级写成 ACR A1-A3;未把 bu 当 BUN 套 7-20 区间 §2.9 警示框、FAQ F18/F21
7 极端值四连(pot 47 / sc 76 / bgr 22 / sod 4.5)的处置逐例有交代 坑 7
8 与文献对比前已对齐口径(单分割 vs CV、插补方法、SMOTE 位置) §8.1 问 4、§5.7
9 未出现"临床可用/可用于筛查"类越界叙事,或已附 §8.3 三道鸿沟的局限声明 §8.1 问 5、§8.3
10 结论类型在 §8.2 的"适合"清单内(方法学演示/教学/原型验证) §8.2
11 数据来源标注:UCI ID 336、data.csv 口径、DOI 10.24432/C5G020、CC BY 4.0 §6.1/§6.3/§6.4
12 引用的社区基准注明"非官方伴生论文"且给出协议细节 §5.0、§5.7、FAQ F35

12 项全过,你的论文至少在"数据使用纪律"上站得住;至于方法创新是否成立,那不是这个数据集能裁决的(§5.4)。

K.2 这张表的三种用法

  • 自查:投稿前逐项打钩,12 项全过再提交;
  • 审稿:审别人用 CKD-UCI 的论文时按表索骥,缺哪项问哪项(与 §8.1 审稿人五问配合使用);
  • 教学:作为课程作业的评分 rubric——每项 1 分,满分 12,及格线设 10 分。

附录 L:缺失模式明细(105 种组合的实测画像)

L.1 模式总量与前十二大模式

把每行的缺失列组合(missingness pattern)当作一个 ID,全表 400 行只出现 105 种组合——远少于随机散布的理论数;前 12 大模式覆盖 269 行(67.25%)。§3.3 的"整块缺失"判断由此有了精确数字。

行数 缺失列组合 解读
158 (无缺失) 完整行——dropna 后的幸存者
31 rbc 单缺镜检形态学:最大的非平凡模式
11 hemo,pcv,wbcc,rbcc 血常规四件套整单缺
10 rbc,sod,pot 镜检 + 电解质
10 sod,pot 电解质两项
10 sg,al,su,rbc,pc 尿检五件套整单缺
9 wbcc,rbcc 血细胞计数两项
7 sg,al,su,rbc,pc,wbcc,rbcc 尿检五件套 + 血细胞计数
6 rbc,pc 镜检两项
6 rbc,wbcc,rbcc 镜检 + 血细胞计数
6 rbc,hemo,pcv,wbcc,rbcc 镜检 + 血常规
5 bgr 单缺血糖
合计 269 其余 93 种模式合计 131 行

头部模式清一色是"检验子项成组缺"——血常规四件套、尿检五件套、电解质两项——而非随机散点。这与"检验科室的层级"梯度(§3.2)互为表里:缺失的单位不是格子,而是检查单。

L.2 行级缺失深度分布

按行统计 24 个特征格中的非缺失格数:

非缺失格数 24 23 22 21 20 19 18 17 16 15 14 13
行数 158 45 33 37 31 33 12 20 8 12 4 7

三个读数:其一,仅缺 1-2 格的行有 78 行(45+33)——它们是信息最接近完整的样本,却是 dropna 的最大牺牲品(坑 4 的精确注脚);其二,缺 5 格及以上的行共 96 行,构成"重缺失带";其三,最重的 7 行缺 11 格(df 索引 59、86、104、148、165、222、228),仅剩 13 个特征可用——它们通常是被整单转录失败或危重抢救病例,插补时值得单独标记。

L.3 对插补与建模研究的四条含义

  1. 整块缺失主导:105 种模式、前 12 覆盖 2/3 样本,意味着插补时同行的多个缺失格会互相校准——KNN/MICE 的近邻里充满同模式行,"编造套编造"风险(§3.3)是结构性的,不是个例。
  2. 31 行单缺 rbc 是两难样本:按列删丢一个判别特征,按行删丢 31 例——正解是缺失指示列或树模型原生 NaN 通道。
  3. 缺失模式本身可作特征:前 12 大模式的 one-hot(“缺失模式 ID”)比逐列缺失指示更强——它直接编码"这个患者做了哪套检查"的临床决策信号。
  4. 复现只要两行:pat = df.drop(columns=['class']).isna().apply(lambda r: tuple(r), axis=1); pat.value_counts().head(12)。

附录 M:DAIMS 评估逐维详注(§6.5 的证据底稿)

M.1 D 文档完备度 3/5

有:官方摘要(含采集期 “nearly 2 months”)、25 列变量表(24 列有单位/类型标注,唯 pcv 缺 units 字段)、引用格式面板、CC BY 4.0 声明、API 全字段机读。缺:伴生论文(intro_paper: null)、标签判定标准、抽样方式、医院城市(三口径,坑 6)、化验方法与试剂。提分路径:官方补一份 data card(标签口径 + 采样说明 + 城市确认)即可 +2。

M.2 A 可获取性 5/5

三通道全通(§6.1 实测 HTTP 200);无注册、无申请流程;仅一版现行格式(data.csv),无版本困惑;45 KB 即取即用;CC BY 4.0 商用允许。唯一摩擦是下载包 zip 内 rar(坑 5),不影响 data.csv 主通道。

M.3 I 互操作性 4/5

标准 CSV、列名简短、五组特征体系语义分明。扣分项:NaN 字面量(坑 3)、脏值三连(坑 1/坑 2)、sg/al/su 的档位含义只有一句话级说明(需读者自行对齐临床语义,§2.3、附录 N)。

M.4 M 元数据质量 2/5

三处元数据失真(pcv 无 units、bu/sod 标 Integer 实测含小数、feature_types 汇总失真,坑 9)+ 城市三口径 + 类型粒度粗。元数据是本数据集最弱一环——也是本条目补课价值最大的一环(§2.1 实测表即替代数据字典)。

M.5 S 可持续性 4/5

UCI 官方长期托管、DOI 固定、2024-03 仍有维护动作。扣分:旧版布局整体断代(旧链接 404、旧文件无官方存档索引),教程生态的口径漂移无官方仲裁机制。

M.6 18/25 的含义

A 满分、D+M 合计仅 5/10——“拿到手极容易,用好极考功夫”。对 AI-Ready 场景的操作性结论:直接喂模型没问题(先过附录 B/F 两关);引用数字必须带"data.csv 口径"标签;做自动化管线时不要信任 API 元数据,以本条目实测表为准。

附录 N:术语中英对照与检索提示(全 24 特征 + 任务术语)

检索英文文献或写英文论文时的列名对照表;"提示"栏给出本条目已核验的关键口径。

中文 英文 / 缩写 本数据集列名 提示
年龄 age age demographics 唯一登记项;无性别列
血压 blood pressure bp 舒张压口径(Bristol 注释版推断,UCI 未注明)
尿比重 specific gravity sg 五档离散值;按序数处理
尿白蛋白 albumin al 0-5 半定量等级;≠ACR A1-A3
尿糖 sugar su 0-5 半定量等级
尿红细胞 red blood cells rbc 形态学二值;缺失 38.0% 全表之冠
尿脓细胞 pus cell pc 形态学二值
尿白细胞团 pus cell clumps pcc present/notpresent
尿细菌 bacteria ba present/notpresent
随机血糖 blood glucose random bgr min 22 疑错位(坑 7)
血尿素 blood urea bu ≠BUN;换算 ×2.14(§2.9 警示框一)
血清肌酐 serum creatinine sc eGFR 输入变量;最强单变量(§2.8)
血钠 sodium sod 参考 135-145 mEq/L
血钾 potassium pot 参考 3.5-5.0 mEq/L;max 47 疑错位
血红蛋白 hemoglobin hemo 贫血轴定量
红细胞压积 packed cell volume pcv 无官方单位;按 % 解读(坑 9)
白细胞计数 white blood cell count wbcc cells/cmm;§5.6 存照当事列
红细胞计数 red blood cell count rbcc millions/cmm;缺失 32.75%
高血压 hypertension htn yes/no
糖尿病 diabetes mellitus dm yes/no;含 1 例 \tno(坑 2)
冠脉疾病 coronary artery disease cad yes/no
食欲 appetite appet good/poor
足部水肿 pedal edema pe yes/no
贫血(问诊) anemia ane 与 hemo/rbcc 构成定性+定量双记录
诊断标签 class class ckd/notckd;2 例 ckd\t(坑 1)
规则可分 rule-separable — §5.4 核心概念;十列合取规则
基准通胀 benchmark inflation — 单分割 100% vs 5 折 87% 现象
缺失模式 missingness pattern — 附录 L;实测 105 种组合
等渗尿 isosthenuria — sg 固定 1.010±0.003(§2.9 警示框二)
标签泄漏 label leakage — 全集 SMOTE 后切分即触发(§5.3)

附录 O:检索、镜像与再分发实操

O.1 你在找什么 vs 该去哪

意图 去哪 警告
下载数据本体 archive.ics.uci.edu/static/public/336/data.csv 唯一官方机读格式;45,092 字节即文件指纹
拉元数据 官方页 + /api/dataset?id=336 存在粗口径三连(坑 9),勿自动信任字段
找旧版 ARFF 已 404 断代,别再找(坑 5)
找教程/notebook Kaggle / Medium / CSDN / GitHub 镜像口径漂移:先 diff 再用(坑 5)
找基准数字 本条目 §5.1 + §5.7 区分直核/转引;协议五要素齐全才有对话资格
找引用格式 官方页 citation 面板 DOI 10.24432/C5G020(§6.4)
找库内近亲 本条目 §10 互链表 UCI 兄弟(444/485)与 EHR 对照(4/106)

O.2 再分发数据卡模板(CC BY 4.0 署名义务的最小实现)

# CKD-UCI 清洗版数据卡
- 来源: UCI Machine Learning Repository ID 336, DOI 10.24432/C5G020, CC BY 4.0
- 原始文件: data.csv(45,092 B,401 行×25 列),下载日期: ____
- 本清洗版改动: 1) 全表 strip;2) 极端值处置: ____;3) 插补: ____
- 已验证指纹(未改动项): 缺失 1012 格 / 完整行 158 / class 归一 250-150
- 行号口径: DataFrame 0 基索引(不含表头行)
- 已知问题(原样继承): 标签判定标准未载;元数据粗口径见条目坑 9
- 版本: 本卡日期 ____;引用: Rubini, L., Soundarapandian, P., & Eswaran, P.
  Chronic Kidney Disease [Dataset]. UCI ML Repository. DOI 10.24432/C5G020

数据卡的意义不止于合规:它是你清洗决策的"存照"——一年后有人(多半是你自己)拿着你的清洗版问"47 你是怎么处置的",答案必须在这张卡上,而不是在你的记忆里(坑 7 的逐例留痕纪律在再分发环节的延伸)。

附录 P:类别列 value_counts 全存照(14 列,逐列体检对照表)

“军规 2”(value_counts 逐列体检)的完整对照底稿:14 个类别/等级/标签列的原样取值计数(NaN 计入;含全部脏值)。数值列 11 列的画像见附录 J。全部为本编辑部对官方 data.csv 的实测(2026-09-29)。

列 原样取值计数(含 NaN 与脏值) 清洗后期望
sg 1.02×106, 1.01×84, 1.025×81, 1.015×75, NaN×47, 1.005×7 五档不变,NaN 47
al 0×199, NaN×46, 1×44, 2×43, 3×43, 4×24, 5×1 六档不变,NaN 46
su 0×290, NaN×49, 2×18, 3×14, 4×13, 1×13, 5×3 六档不变,NaN 49
rbc normal×201, NaN×152, abnormal×47 二值,NaN 152
pc normal×259, abnormal×76, NaN×65 二值,NaN 65
pcc notpresent×354, present×42, NaN×4 二值,NaN 4
ba notpresent×374, present×22, NaN×4 二值,NaN 4
htn no×251, yes×147, NaN×2 二值,NaN 2
dm no×260, yes×137, NaN×2, \tno×1 no×261(\tno 归一), yes×137, NaN 2
cad no×364, yes×34, NaN×2 二值,NaN 2
appet good×317, poor×82, NaN×1 二值,NaN 1
pe no×323, yes×76, NaN×1 二值,NaN 1
ane no×339, yes×60, NaN×1 二值,NaN 1
class ckd×248, notckd×150, ckd\t×2 ckd×250(ckd\t 归一), notckd×150

P.2 体检对照法

拿到任何一份"CKD 数据"(无论自称官方还是镜像),把你的 value_counts(dropna=False) 输出与上表逐列对照,三分钟内即可判定文件身份:其一,逐格一致 = 与官方 data.csv 同源,可引用本条目全部数字;其二,某些列少了 NaN 或脏值消失 = 清洗过的镜像,数字不可与官方口径混用(坑 5);其三,多出未知取值或行数不等于 400 = 来源不明,丢弃或回溯。这一对照法也是本条目"以磁盘为准"纪律的交接界面——后人拿到的新文件,与 2026-09-29 实测存照只有"一致/不一致"两种关系,不存在第三种解释空间。

数值列的同款对照用附录 J 的 n/均值/标准差/范围四元组:任何一列的四个数字全对上,基本可排除"同列名不同清洗"的静默漂移;有出入时先查极端值处置(坑 7 的 pot 47 / sc 76 / bgr 22 / sod 4.5 四值最易被清洗者动手)。

版本与变更记录(扩写存照)

  • v1(775 行版):初稿覆盖 §0-§11、FAQ 十二问、事实清单三十条、附录 A-E。
  • v2(本版,2026-09-29):扩写至 1400 行级。新增:§2.9 临床参考区间对照(三源口径)、§5.6 文献数字回源核验存照、§5.7 基准确证档案与被引对照、§7.5 四天王对比、§9 使用指南(三类读者行动清单)、FAQ F13-F44(32 个进阶问题)、事实清单 31-38 条、术语表扩充 8 条、附录 F-P(核心数字复算脚本 / 十大反模式 / 时间线大事记 / 一句话速答卡 / 数值列画像 / 投稿检查单 / 缺失模式明细 / DAIMS 逐维详注 / 术语中英对照 / 检索与再分发实操 / 类别列 value_counts 全存照)。
  • 更正:附录 A 三行脏值行存照按 2026-09-29 逐字段实测重写——早期草稿对 df 索引 37 的"健康画像"描述有误,已在附录 A 更正声明中存照;全文行号口径统一为 pandas DataFrame 0 基索引(不含表头行,FAQ F14)。
  • 扩写纪律:新增事实全部来自官方 data.csv 逐字段实测(附录 F 脚本可一键复算)或经三源交叉确认的临床/文献口径(尾注 11-14);未引入任何未经核验的新数字;规则可分结构的量化补充(ckd 组 17 例零违反)系本编辑部本轮实测新增存照。

尾注与来源

  1. UCI Machine Learning Repository — Chronic Kidney Disease 官方页:https://archive.ics.uci.edu/dataset/336/chronic+kidney+disease(2026-09-29 实抓,HTTP 200)。
  2. UCI 官方 API:https://archive.ics.uci.edu/api/dataset?id=336(JSON 6,786 字节,2026-09-29 实抓;intro_paper: null、num_features: 24、creators 三人、DOI 与 license 字段出处)。
  3. UCI 官方数据本体:https://archive.ics.uci.edu/static/public/336/data.csv(45,092 字节,2026-09-29 下载;本条目全部实测统计对象)。
  4. Qin, C. et al. IEEE Access 8:20991-21002, 2019-12-30, DOI 10.1109/ACCESS.2019.2963053(RF 99.75%/集成 99.83%;Google Scholar 被引 379+,2026-09 口径)。
  5. Chittora, P. et al. IEEE Access 9:17312-17334, 2021-01-22, DOI 10.1109/ACCESS.2021.3053763(DNN 99.6%;LSVM-L2 98.86%)。
  6. ANFIS-PSO 2026 论文,DOI 10.62762/bish.2026.692582(单分割 100% vs 5 折 CV 87.00%±3.59%;Apollo Manamadurai 口径出处)。
  7. PLOS ONE 2024 论文,DOI 10.1371/journal.pone.0295234(SMOTE 平衡;bp 均值 76.175;Apollo Managiri 口径出处)。
  8. Charleonnan et al. 2016(SVM 98.3%)、Gunarathne et al. 2017(99.1%)、Sharma et al. 2016(DT 98.60%)、Al Imran et al. 2019(FF-ANN f1 0.99)、Sossi et al. 2019(XGBoost 100%)——综述转引口径,见 §5.1 注。
  9. Bristol 大学课程注释版(uob-ds.github.io,Matthew Brett 维护)——Karaikudi “(maybe)” 口径出处。
  10. 本编辑部实测档案:FACTS.md(writing/chronic-kidney-disease-uci/FACTS.md,抓取时点 2026-09-29),含全部双口径存照与遗留疑点的第一手记录。
  11. Medscape 临床参考区间表;MedlinePlus 医学百科(kidney function tests 等词条);Kidney Education 临床教材——sc(男 0.6-1.3 / 女 0.5-1.2 mg/dL)、sod(135-145 mEq/L)、pot(3.5-5.0 mEq/L)、hemo(约 12-17 g/dL)、wbcc(5000-10000/mm³)等参考区间的三源交叉口径(2026-09 检索,§2.9)。
  12. 腾讯医典(血常规/肾功能/电解质词条)——中文侧第四源核对口径(2026-09 检索)。
  13. KDIGO CKD 2024 指南官方 PDF(kdigo.org)——CKD 定义(结构或功能异常 ≥3 个月且影响健康)、CGA 分期 G1-G5 与 A1-A3 口径;NIDDK(niddk.nih.gov)CKD 词条——"G2 无肾损伤标志物不算 CKD"的补充口径(§2.9 背景框)。
  14. PeerJ Computer Science 基准论文——自报 wbcc 范围 “(2,200 to 4,800)” 原文存照;本条目实测 [2200, 26400](均值 8406.12)与之相悖,疑排版丢位(§5.6)。

相关数据集导航

以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:

  • framingham — 共享标签:电子健康记录 / 队列研究 / 流行病学
  • charls — 共享标签:电子健康记录 / 队列研究 / 流行病学
  • opensafely — 共享标签:电子健康记录 / 队列研究 / 真实世界数据
  • cprd — 共享标签:电子健康记录 / 队列研究 / 真实世界数据
  • twosides — 共享标签:电子健康记录 / 真实世界数据 / 评测基准
  • qresearch — 共享标签:电子健康记录 / 队列研究 / 流行病学
  • epic-cosmos — 共享标签:电子健康记录 / 真实世界数据 / 流行病学
  • iqvia-disease-analyzer — 共享标签:电子健康记录 / 真实世界数据 / 流行病学
  • gepard — 共享标签:电子健康记录 / 队列研究 / 真实世界数据
  • clif — 共享标签:电子健康记录 / 队列研究 / 评测基准

导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

返回 AI-Ready 数据集