Keratoconus Stage Detection — Pentacam 角膜地形图圆锥角膜分期数据集

3162 眼 / 448 个角膜地形与断层参数 + 四簇分期标签,源自哈佛 Dataverse 无监督聚类复现数据(PLOS ONE 2018,日本多中心):库内首个「角膜地形图」条目,用 PCA + 流形学习 + 密度聚类把每只眼归入正常/顿挫型/轻度/晚期四簇,并以 ESI 扩张指数客观校验;CC0 公版许可、匿名直下

来源 日本多中心 CASIA SS-1000 扫频 OCT(Kaggle/第三方另称 Pentacam)角膜地形与断层测量导出的 448 列参数(Ks/Kf/AvgK/CYL/Ecc/Apex/Thinnest/BFS/OSI/CSI/DSI/KCI/KPI/ESI 等),配 4 簇分期标签;数据托管于哈佛 Dataverse(DOI 10.7910/DVN/G2CRMO),Kaggle 再托管为 Keratoconus Stage Detection发布时间: 2026-10-07最后更新: 2026-10-20 阅读 31
Keratoconus Stage Detection — Pentacam 角膜地形图圆锥角膜分期数据集

信息速览

数据集名称Keratoconus Stage Detection — Pentacam 角膜地形图圆锥角膜分期数据集
数据类型原始数据,临床数据,人工标注
规模3162 眼(共 1751 个患者号:1411 人双眼齐备 ×2 + 340 人单眼;PLOS 论文口径为从 12,242 眼中筛选 3,156 眼)
接入方式日本多中心 CASIA SS-1000 扫频 OCT(Kaggle/第三方另称 Pentacam)角膜地形与断层测量导出的 448 列参数(Ks/Kf/AvgK/CYL/Ecc/Apex/Thinnest/BFS/OSI/CSI/DSI/KCI/KPI/ESI 等),配 4 簇分期标签;数据托管于哈佛 Dataverse(DOI 10.7910/DVN/G2CRMO),Kaggle 再托管为 Keratoconus Stage Detection
AI 就绪度

INFOBOX — pentacam-kc 一屏速览

维度 内容
本质 角膜地形/断层参数驱动的圆锥角膜(keratoconus, KC)分期数据集,标签为无监督聚类四簇
全称 Keratoconus Stage Detection(Kaggle 名)/Replication Data for “Keratoconus severity identification using unsupervised machine learning”(Dataverse 名)
出处 PLOS ONE 2018;13(11):e0205998(Yousefi et al.,PMID 30399144 / PMCID PMC6219768)
数据托管 Harvard Dataverse DOI 10.7910/DVN/G2CRMO(v1.0,2018-10-13);Kaggle 再托管 imenbakir/keratoconus-stage-detection
规模 3162 眼(论文口径 3,156 眼)/ 448 列(论文口径 420 参数)
主键 idEye,形如 1OS(Left) / 1OD(Right)(OD=右眼、OS=左眼)
标签 无监督聚类四簇:簇 1=264 / 簇 2=2595 / 簇 3=221 / 簇 4=82
参数族 Ks/Kf/AvgK、Ks.Axis/Kf.Axis、CYL、AA、Ecc、Apex、Thinnest、LocationX/Y、Spherical/Regular、BFS 参数、OSI/CSI/DSI/KCI/KPI/SAI、HOAs/Zernike、ESI 等
方法 PCA(420→8)→ 流形学习(8→2)→ 密度聚类 → ESI 客观校验
设备(口径存照) 论文:SS-1000 CASIA 扫频 OCT(日本多中心);Kaggle/CornOrb:Pentacam
获取 Dataverse 匿名直下(CC0);Kaggle 需账号/API token
许可 数据 CC0 1.0(Dataverse 权威)/文章 CC BY 4.0/Kaggle 页 Unknown
库内互链 refuge(62) > justraigs(746) > origa-light(763) > g1020(764) > rim-one(291) > drishti-gs(301) > odir(63) > octa-500(341) > oct2017(311) > messidor(59)

pentacam-kc 是千方病案医数集里第一个「角膜」条目——此前的眼科谱系几乎全被视网膜(眼底照相、OCT)占满,而角膜这一支长期空白。它的数据形态也与此前所有眼科条目不同:它没有一张图片,全是数字。3162 只眼、每只眼 448 个角膜参数(曲率、散光、非球面、偏心率、高度、厚度、顶点……),配一个四档的「分期」标签。这份数据想回答的问题是:能不能只靠角膜地形/断层的量化参数,就把圆锥角膜的严重程度自动分出来?

它的特别之处还在于标签是怎么来的:不是眼科医生逐眼给的 Amsler-Krumeich 或 ABCD 临床分期,而是无监督机器学习自己「聚」出来的四个簇——PCA 降维、流形学习、密度聚类,最后用 ESI(Ectasia Status Index,扩张状态指数)这把客观尺子回头验证簇分得合不合理。这让它既是一份圆锥角膜数据,也是一份**「无监督表型发现」的方法学样本**。

导语读法三则:

  1. 只想下数据:直奔 §6 获取与许可——Harvard Dataverse 匿名直下(CC0),注意「数据 CC0、文章 CC BY、Kaggle 页 Unknown」的三口径差异,以及 Kaggle 页缺失描述的坑。
  2. 关心标签能不能信:直奔 §4 规模与 §5 任务标注——四簇计数、ESI 校验逻辑、以及「簇号↔临床严重度」的映射风险,是理解这份数据集可信度的钥匙。
  3. 担心口径打架:直奔 §9 局限与附录 C——「3156 vs 3162」「420 vs 448」「OCT vs Pentacam」「CC0 vs Unknown」四处双口径冲突全部逐条存照。

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

圆锥角膜(keratoconus, KC)是一种进行性的角膜变薄与圆锥样前凸疾病,多发于青少年,会导致不规则散光与视力不可逆下降。它最麻烦的地方在于早期诊断——亚临床期与顿挫型(forme fruste)的角膜地形改变极轻微,靠肉眼看地形图往往分不出来,而一旦进展到中晚期往往需要角膜交联(CXL)甚至角膜移植干预。因此圆锥角膜筛查的核心,是在角膜形态还只是「可疑」的阶段把它识别出来,并判断它处在哪一档严重程度。

临床上量化角膜形态的主要工具是角膜地形图(corneal topography)与角膜断层成像(corneal tomography)。前者测角膜前表面曲率分布,后者(如 CASIA 的扫频 OCT、Pentacam 的 Scheimpflug 成像)还能给出后表面、厚度(厚度图 pachymetry)、前房深度等断层信息。一台设备一次检查可以吐出几百个参数——曲率 Ks/Kf/AvgK、曲率轴、柱镜 CYL、非球面系数、偏心率 Ecc、顶点与最薄点位置,以及 OSI/CSI/DSI/KCI/KPI/SAI 这类断层质量与不规则指数、HOAs/Zernike 像差项。这些数字正是自动分期的原料。

pentacam-kc 要解决的痛点有三个。第一,角膜参数数据集稀缺:公开的圆锥角膜数据集多为角膜地图图片(如 Al-Timemy 系列的 3 图/眼),而结构化的几百维参数表反而是少数——用表格数据做分期,可解释性更强、更贴近设备原始输出。第二,严重度分期的标签难题:圆锥角膜分期本身主观(AK、ABCD 两套体系并存、各中心标准不一),本数据集干脆换一条路——用无监督聚类从数据自身「长出」分期结构,再用 ESI 这一客观指数评估。第三,可复现性:数据以 Harvard Dataverse 复现包形式公开(CC0),论文的方法步骤清楚到可以逐步重跑。

§0 读法三则:

  1. 这个条目是「表格数据 + 无监督标签 + 复现包」的组合:规模 3162 眼不算小,但它真正的看点在标签的产生方式与两条并存的获取渠道(Dataverse 原始 / Kaggle 再托管)。
  2. 全文数字以实抓 CSV(448 列 × 3162 行,两表按 idEye 完全对齐)为硬口径,与 PLOS 论文口径(3156 眼 / 420 参数)逐条并列存照,转引前务必回查 §9。
  3. 如果你在找「大规模圆锥角膜图像数据」,本数据集不是答案(它没有图);如果你在找「几百维角膜参数 + 分期标签」的可解释表格数据,它恰好对口。

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

Q1:pentacam-kc 这名字指什么,「3162 眼」是怎么回事?
pentacam-kc 是库内 slug;pentacam 指角膜地形/断层测量的设备家族(Oculus Pentacam 是其中代表,用 Scheimpflug 原理),kc 是 keratoconus(圆锥角膜)的缩写。数据集是眼级的:每只眼一行,共 3162 行(3162 只眼)。它不是 3162 个患者——从命名前缀可去重数出 1751 个患者号(1411 人双眼齐备、340 人只登记了单眼),这个患者数由本条目实抓推得,数据页未明示。

Q2:数据长什么样,有多少列?
两个 CSV。dataset.csv:448 列 × 3162 行,第一列是空索引列,第二列是主键 idEye,其余 446 列是角膜参数(含多组重复测量,带 .1/.2/.3 后缀)。labels.csv:3 列 —— 索引、idEye、clster_labels(簇标签)。两表按 idEye 完全对齐(交集 3162 行,无孤儿行)。

Q3:标签有几类,怎么分布?
四簇,实抓计数为:

  • 簇 1:264 眼(多为正常眼)
  • 簇 2:2595 眼(健康眼 + 顿挫型 forme fruste,占 82.1%)
  • 簇 3:221 眼(多为轻度圆锥角膜)
  • 簇 4:82 眼(多为晚期圆锥角膜)

注意这是聚类簇号,不是临床分期编码;簇号与严重度的对应是靠 PLOS 论文用 ESI 反推出来的。

Q4:这些标签是医生标的吗?
不是。 标签是无监督机器学习的聚类产物:PCA 把 420 维降到 8 个主成分 → 流形学习(t-SNE 类)降到 2 维 → 密度聚类(DBSCAN/OPTICS 类)分出 4 簇。医生没有逐眼给分期;临床意义是事后用 ESI(Ectasia Status Index) 客观刻度回溯解读的。

Q5:ESI 是什么,为什么关键?
ESI(Ectasia Status Index,扩张状态指数)是设备厂商输出的圆锥角膜筛查指数,取值 0–100%。PLOS 论文用它当「客观标尺」:默认 ESI=0 为正常、5–29 为可疑、>29 为圆锥。每个簇里 ESI 的分布,就是判断「这个簇到底是正常还是病」的依据。数据具体到参数层面还保留了 ESI.Anterior. / ESI.Posterior.(前后表面 ESI)。

Q6:这些参数都叫什么?
典型的是曲率族 Ks(陡轴曲率)、Kf(平轴曲率)、AvgK(平均曲率)及其轴 Ks.Axis/Kf.Axis;附加 CYL(柱镜/散光)、AA(前表面非球面)、Ecc.9.0mm.(9mm 环偏心率);位置与几何参数 Apex/ApexK(顶点)、Thinnest(最薄点厚度)、LocationX/LocationY(最薄点坐标)、Spherical/Regular;断层指数族 OSI(客观散射指数)、CSI、DSI、KCI、KPI、SAI;像差族 HOAs.S3456.、RMS_E、SA.C40、coma;以及 BFS_*(最佳拟合球)与 ESI.Anterior./ESI.Posterior.。含 160 个去重复测量的基名列。

实测提醒:本数据集没有 Pentacam 专属的 ISV/IVA/KI/RMin 列。实抓到的指数是 OSI/CSI/DSI/KCI/KPI/SAI/BFS/HOAs 一类,更贴近 CASIA 断层 / 像差命名体系(这也是坑 4「Pentacam vs OCT」口径分叉的实测佐证)。

Q7:数据从哪来,是哪个国家的?
PLOS 论文写明:角膜参数来自日本多中心采集的 12,242 只眼,用 SS-1000 CASIA OCT Imaging Systems(扫频 OCT 断层成像)测得,从中筛选 3,156 眼(ESI 0–100% 有效)进入分析。数据由 UTHSC(田纳西大学健康科学中心)与日本几家机构合作完成。

Q8:为什么标题写 Pentacam,论文却说是 OCT?
这是本条目最大的口径分叉(坑 4)。Kaggle 数据集标题与 CornOrb 论文都称它是 Pentacam 数据集;但 PLOS 论文正文明确写的是 CASIA SS-1000 OCT。本条目实抓 448 列后发现:列名里没有 Pentacam 专属的 ISV/IVA/RMin,反而是 OSI/CSI/DSI/BFS_*/HOAs/Zernike 这类更贴近 CASIA 断层/像差体系的参数——实测偏支持论文的 OCT 口径,但「Pentacam」这一叫法已在 Kaggle 页与第三方引用中固化。本条目并列存照,不臆断谁对。

Q9:我现在怎么拿到它?
两条路。原始(推荐):Harvard Dataverse DOI 10.7910/DVN/G2CRMO,两个 CSV 匿名直链下载,无需注册,许可 CC0 1.0。再托管:Kaggle imenbakir/keratoconus-stage-detection(Version 1,6.8 MB),需 Kaggle 账号或 API token,页面标注许可为 Unknown。

Q10:为什么它对 AI-Ready 重要?
三点。其一,它是库内角膜域的开篇,补上了「眼底 + OCT 视网膜」之外的眼科第三支。其二,它示范了无监督表型发现 → 客观指数校验的标签生成路线,对「临床分期主观、标签难统一」的问题提供了一个可复制的替代思路。其三,它是一份几百维表格 + 双渠道获取 + CC0 的干净资产,可解释性远高于图像黑箱——但它的标签治理与口径冲突也提醒使用者:免费获得的数据,未必是免维护的数据。

§2 数据构成与规格

2.1 规模、来源与两份文件

pentacam-kc 的物理形态极简:两个 CSV 文件,装在一份 Harvard Dataverse 复现包里。

文件 内容 规模
Dataset_Siamak_Yousefi_PLOS_One_2018.csv 每只眼一行的 448 列角膜参数表 448 列 × 3162 行(6.72 MB)
Cluster_Labels_Siamak_Yousefi_PLOS_One_2018.csv 每只眼的 clster_labels 簇标签 3 列 × 3162 行(77.7 KB)

两表以 idEye 为主键,实抓校验后完全对齐:并集/交集均为 3162 行,无孤儿行、无重复键。这意味着你拿到这两个文件,直接 merge on idEye 就能得到一张「448 参数 + 1 标签」的监督学习表。

数据本体来源(层级关系,必须理清):

日本多中心采集 12,242 眼(论文)/ SS-1000 CASIA OCT 或 Pentacam 测量
        │  PLOS ONE 2018 论文用 ESI 0–100% 筛出 3,156 眼
        ▼
Harvard Dataverse 复现包  10.7910/DVN/G2CRMO  (2018-10-13,CC0,权威)
        │  两文件:Dataset_...csv(448 列)+ Cluster_Labels_...csv
        ▼
Kaggle 再托管  imenbakir/keratoconus-stage-detection  (Version 1,6.8 MB,许可 Unknown)
        │  GitHub 项目 imenbkr/Keratoconus-Stage-Detection(Apache-2.0,代码/笔记本)
        ▼
第三方引用  CornOrb(arXiv:2603.21245,2026)列为「Pentacam 分期数据集」

2.2 列结构(448 列的组织)

dataset.csv 的 448 列可拆成几块:

  • 第 1 列:空表头索引列(行号,无意义)。
  • 第 2 列:idEye——主键,形如 1OS(Left) / 1OD(Right),即「患者号 + 眼别」,OD = 右眼(Oculus Dexter)、OS = 左眼(Oculus Sinister)。
  • 其余 446 列:角膜参数,且大量以重复测量组出现,同一基名列带 .1/.2/.3/.4/.5 后缀(同一次检查内的多圈/多子午线测量)。

按基名去重后约 160 个不同的参数名。代表性的族包括:

参数族 列名示例 含义
曲率 Ks / Kf / AvgK 陡轴/平轴/平均角膜曲率(屈光度 D)
曲率轴 Ks.Axis / Kf.Axis 陡/平子午线轴向(度)
散光 CYL 柱镜度(散光量)
非球面 AA / AA.6mm..Anterior. / AA.6mm..Posterior. 前/后表面非球面系数
偏心率 Ecc.3mm. ~ Ecc.15mm. 不同环带偏心率
位置/几何 Apex / ApexK / Thinnest / LocationX / LocationY / Spherical / Regular 顶点、顶点曲率、最薄点厚度与其坐标、球面/规则性
断层指数 OSI(客观散射指数)/ CSI(角膜表面不规则)/ DSI / KCI / KPI / SAI / LD8 / LD9 设备内置断层质量与圆锥筛查指数族
最佳拟合球 BFS_*(BFS_Ecc/BFS_R/BFS_OffX…)/ BFS.1mm. ~ BFS.8mm. 最佳拟合球参数与逐环带值
像差 HOAs.S3456. / RMS_E.* / SR_H.* / SA.C40. / S35.coma.like. / S46.sph..like. / coma / coma.axis 高阶像差与 Zernike 类项
扩张指数 ESI.Anterior. / ESI.Posterior. / En.Anterior. / Score.Anterior. / Score.Posterior. 前/后表面扩张状态指数与评分

实测更正(重要):早前对「Pentacam 参数」的预期(ISV/IVA/KI/RHD/RMin)在实抓表头里并不存在。数据集里真实出现的是 OSI/CSI/DSI/KCI/KPI/SAI/BFS/HOAs/Zernike 这一类,命名风格更接近 CASIA 扫频 OCT 断层/像差系统。这既是本条目的一条硬事实,也是「Pentacam vs OCT」口径分叉(§9 坑 4)的实测证据。

2.3 标签文件(labels.csv)

labels.csv 只有 3 列,且有一个排印陷阱:表头写作 "","Data.PLOS_One.idEye","clster_labels"——第 2 列的列名把 Data.PLOS_One.id 与 Eye 粘连成了一个串。它们本应是两个信息:一个指向 PLOS ONE 数据源的 id,一个是眼别。这个粘连列名恰好是本数据集渊源的直接证据——它把「数据源自 PLOS ONE」这件事写进了列名。

  • 主键列 idEye:与 dataset.csv 完全一致。
  • 标签列 clster_labels:取值 1 / 2 / 3 / 4(四簇)。注意拼写为 clster(少一个 u),转引时勿「自作主张」改成 cluster——它在文件里就是这么写的。
  • 文件为 CRLF(Windows)行尾,用 Python open(..., newline='') 或 pandas.read_csv 读取正常;用不处理 CRLF 的简易切分会把每行粘成一片。

2.4 与库内其他眼科数据集的构成对比

pentacam-kc 在库内眼科谱系里是异类——它的「异」不在规模,而在模态(表格 vs 图像)与解剖部位(角膜 vs 视网膜):

数据集 解剖 模态 任务 规模
pentacam-kc(本条) 角膜 纯表格参数 圆锥角膜分期 3162 眼 × 448 参数
refuge(62) 视网膜/视盘 眼底图 青光眼 OD/OC 分割 + CDR 1200 图
justraigs(746) 视网膜/视盘 眼底图 青光眼转诊分类 中大
rim-one(291) / drishti-gs(301) 视网膜/视盘 眼底图 OD/OC 分割 小
octa-500(341) / oct2017(311) 视网膜 OCT(图) OCT/OCTA 分类分割 中大
messidor(59) / eyepacs(58) 视网膜 眼底图 DR 分级 中大

一句话概括这份差异:库内眼科条目过去清一色是「视网膜图像」,pentacam-kc 是第一条「角膜表格」。它把眼科 AI 的覆盖面从「看图诊断视网膜病」扩展到了「读数字判断角膜形态」。

§3 团队、机构与合作谱系

3.1 数据背后的两支力量:一个美国中心 + 三个日本中心

虽然是 Kaggle 上挂着 Imen Bakir 的名字,但这份数据的真正出处是 Yousefi 等 8 位作者的跨国合作,署名机构横跨美国与日本:

  • University of Tennessee Health Science Center(UTHSC,美国田纳西大学健康科学中心)——论文的牵头方。一作/通信作者 Siamak Yousefi 属眼科与遗传/基因组/信息学部门;Ebrahim Yousefi、Penny Asbell 同属 UTHSC。方法学(PCA + 流形学习 + 密度聚类)与数据分析主体在此。
  • Jichi Medical University(自治医科大学,日本栃木县)——临床与采集侧。Hidenori Takahashi、Hironobu Tampo、Satoru Inoda、Yusuke Arai 四位作者在此。
  • Yokohama Minami Kyosai Hospital(横滨南共济医院,日本神奈川)——Takahiko Hayashi 属此。

论文正文明确说数据来自 “multiple centers across Japan”(日本多中心),这解释了为什么数据规模能上到 12,242 眼——单一中心很难凑出这种体量。

3.2 八位作者与角色

位次 作者 机构 角色/方向
1(一作/通信) Siamak Yousefi UTHSC 方法设计与主导;通信邮箱 siamak.yousefi@uthsc.edu
2 Ebrahim Yousefi UTHSC 数据分析
3 Hidenori Takahashi Jichi Medical University 临床/采集
4 Takahiko Hayashi Yokohama Minami Kyosai Hospital 临床/采集
5 Hironobu Tampo Jichi Medical University 临床/采集
6 Satoru Inoda Jichi Medical University 临床/采集
7 Yusuke Arai Jichi Medical University 临床/采集
8 Penny Asbell UTHSC 眼科 资深眼科/项目指导

这是一支典型的**「技术方法 + 多中心临床」**组合:UTHSC 提供无监督学习的方法骨架,日本三家机构提供角膜地形/断层数据与临床语境。

3.3 Kaggle 再托管者:Imen Bakir

把这份 Dataverse 数据搬运到 Kaggle 的是个人账号 Imen Bakir(Kaggle imenbakir)。

维度 情况
Kaggle 数据集 imenbakir/keratoconus-stage-detection(Keratoconus Stage Detection)
Kaggle 页描述 “No description available”(无任何文字说明)
Kaggle 页许可字段 Unknown
Kaggle 页更新频率 Not specified(无更新日期)
GitHub 项目 imenbkr/Keratoconus-Stage-Detection,Apache-2.0,1 star,14 commits(2022-06-10 ~ 2022-09-01)
项目自述 “This project’s main objective is to use new artificial intelligence technologies for the early detection and automatic detection of the keratoconus disease.”

从 GitHub 的项目内容看,这是一个**(学生性质的)暑期实习项目**(notebook 名为 keratoconus-stage-detection-summer-internship.ipynb),作者把 PLOS ONE 的复现数据拿来做了 Kaggle 上的「圆锥角膜早期检测」练手。

对使用者的提醒:Kaggle 页没有描述、没有 class 语义、没有许可信息、没有更新日期。因此把 Kaggle 页当「权威来源」是有风险的——真正的权威在哈佛 Dataverse:许可 CC0、文件与时间戳齐全。Kaggle 的价值是「更容易被搜索到」,Dataverse 的价值是「可追溯、可引用、许可清晰」。本条目建议以 Dataverse 为第一来源(详见 §6)。

3.4 第三方生态:CornOrb 的引用与归类

2026 年发布的 CornOrb(arXiv:2603.21245,MDPI Data,Zenodo DOI 10.5281/zenodo.17127265)是一份阿尔及利亚 Orbscan 3 角膜地形图多模态数据集(1454 眼,889 正常 / 565 圆锥角膜)。它在 Background 里这样交代 pentacam-kc:

“Bakir et al. released a Pentacam-based dataset for stage detection of keratoconus.”

也就是说,第三方学界是把这份 Kaggle 数据集当作「基于 Pentacam 的分期数据集」来引用的——这与 Kaggle 标题一致,却与 PLOS 论文的「CASIA OCT」表述相左(口径分叉见 §9 坑 4)。CornOrb 同时把 Yousefi 的工作单列为 “a large dataset of tabular parameters derived from OCT-based tomography”——这进一步说明:在第三方眼中,「Bakir/Pentacam 版」与「Yousefi/OCT 版」被当作两回事。

3.5 伦理与合规

PLOS 论文遵循《赫尔辛基宣言》伦理标准,数据经去标识化处理(论文提及 de-identification 与多中心伦理审批)。但对下游使用者而言,真正要盯的不是「伦理是否合规」(论文已声明),而是数据的再分发链条是否清晰:

  • Dataverse 侧:CC0 1.0,即作者主动放弃著作权,任何人可任意使用——许可层面零障碍。
  • Kaggle 侧:再托管者把 Dataverse 数据搬过来,但未标注许可(Unknown)。由于原始数据是 CC0,再托管在许可上本身不构成障碍(CC0 允许再分发),但 Kaggle 页的信息缺失会让只看 Kaggle 的用户误以为「许可不明、不敢用」。
  • GitHub 侧:项目是 Apache-2.0(代码许可),不适用于数据——把 Apache-2.0 套到数据上是常见混淆(坑 6)。

这三条并存,构成本条目「许可口径」的完整图景(详见 §6.4 与 §9)。

§4 数据规模、类别分布与质量硬数字

这一节给出 pentacam-kc 的全部「硬数字」:规模、列数、患者结构、类别分布、以及论文口径与实抓口径的逐条对照。凡存在跨来源冲突的,均按「双口径存照」处理(冲突清单见 §9)。

4.1 总规模与层级结构

pentacam-kc 的规模可以用三个层级锁死:

  • 眼级(分析单位):3162 只眼——数据表有 3162 行,每行一只眼。
  • 患者级:1751 个患者号(本条目实抓推得)——其中 1411 人双眼齐备、340 人只登记单眼(1411 × 2 + 340 = 3162)。
  • 参数级:448 列(含 1 空索引列 + 1 idEye 主键列 + 446 个角膜参数列),去重后 160 个基名。

层级关系很清楚:患者 → 眼(OD/OS)→ 一行 448 个参数 + 一个簇标签。由于 1411 人双眼都在,这份数据同样支持「同一患者双眼配对」的建模视角——这点与库内 papila 的双眼配对结构相似,是它超越「一堆独立样本」的地方。

4.2 结构与主键

属性 值
文件数 2(dataset.csv + labels.csv)
dataset.csv 448 列 × 3162 行,6,725,570 B
labels.csv 3 列 × 3162 行,77,698 B(CRLF 行尾)
主键 idEye,形如 1OS(Left) / 1OD(Right)
眼别编码 OD = 右眼(Oculus Dexter)、OS = 左眼(Oculus Sinister)
两表连接 按 idEye 完全对齐,交集 = 3162,无孤儿行、无重复
格式 纯 CSV(无图片、无二进制)

主键 idEye 的构造是「患者号 + 眼别」,例如 1OS(Left) 表示 1 号患者的左眼。注意括号内容是 (Left)/(Right) 英文,解析时别按中文「左/右」去匹配。

4.3 类别分布(实抓簇计数)

标签列 clster_labels 取值为 1 / 2 / 3 / 4,实抓计数如下:

簇标 眼数 占比 PLOS 论文语义(依 ESI 反推)
1 264 8.3% Cluster I:多为正常眼
2 2595 82.1% Cluster II:健康眼 + 顿挫型 forme fruste
3 221 7.0% Cluster III:多为轻度圆锥角膜
4 82 2.6% Cluster IV:多为晚期圆锥角膜
合计 3162 100% —

三点必须并存理解:

  1. 极端不平衡:簇 2(健康+顿挫型)独占 82.1%,而真正「病得明显」的簇 4 只有 82 眼(2.6%)。最大类/最小类比约 32 : 1——这比绝大多数医学分类数据集都悬殊。
  2. 「分期」的高度倾斜:如果把簇 1+2 当「基本正常/极轻度」,它们占 90.4%;把簇 3+4 当「明确圆锥」,只占 9.6%。也就是说,这份数据里阳性(明确病)样本很少,是一份严重「正常为主」的集合。
  3. 簇号 ≠ 严重度评分:簇号 1–4 只是聚类序号,其临床严重度映射(哪簇最重)是借 ESI 事后解读的,不是设计时就定死的(见 §5)。

4.4 与 PLOS 论文口径的对照(四处不一致)

论文与再托管数据的数字并非完全一致,逐条列出:

项目 PLOS 论文口径 再托管 CSV 实抓 差值
眼数 3,156 3162 +6
参数数 420 448 列 +28
簇 I 256(224+23+9) 簇 1 = 264 +8
簇 II 2587(1772+698+117) 簇 2 = 2595 +8
簇 III 264(184+74+6) 簇 3 = 221 −43
簇 IV 81(80+1) 簇 4 = 82 +1

怎么读这张表:

  • 眼数与参数数的小差(+6 / +28)可能来自筛选与列整理口径的细微差异——论文写的是「筛选后进入分析」的数,再托管 CSV 可能是筛选前后的完整表(含被排除列)。
  • 簇计数差异较大(尤其簇 III:264 vs 221,差 43)说明论文报告的簇分布与再托管标签文件的簇分布不是同一套 run——聚类随机性或后处理步骤不同都可能导致簇边界移动。这是本数据集最需要警惕的口径问题:不要拿「论文写的簇计数」去对「CSV 里的标签」。
  • 只有总眼级分母 3162 是本条目实测锁死的;其余论文数一律并列存照。

4.5 标签的「来源」:ESI 校验而非临床分期

这是理解本数据集质量的钥匙。标签不是医生给的 AK/ABCD 分期,而是:

420 参数 ──PCA──▶ 8 主成分 ──流形学习(t-SNE类)──▶ 2 个 eigen-parameter ──密度聚类──▶ 4 簇
                                                                              │
                                                         用 ESI(扩张状态指数) 客观校验各簇的临床意义

PLOS 论文对四簇的原始描述(每个簇内按 ESI 分档给出眼数):

  • Cluster I(多为正常):224 眼 ESI=0 + 23 眼 ESI 5–29 + 9 眼 ESI>29
  • Cluster II(健康 + 顿挫型):1772 眼 ESI=0 + 698 眼 ESI 5–29 + 117 眼 ESI>29
  • Cluster III(多为轻度圆锥):184 眼 ESI>29 + 74 眼 ESI 5–29 + 6 眼 ESI=0
  • Cluster IV(多为晚期圆锥):80 眼 ESI>29 + 1 眼 ESI 5–29

读法:簇 IV 里 81 眼几乎全部 ESI>29(即明确圆锥),是最「纯」的一簇;簇 II 里 1772 眼 ESI=0,即绝大多数是正常眼——这解释了为什么簇 II 占比高达 82%。

4.6 ESI 分档的定义

ESI(Ectasia Status Index)取值 0–100%,论文采用的判读门槛是:

ESI 档 临床含义
= 0 正常(无扩张)
5 – 29 可疑(borderline)
> 29 圆锥(ectasia / keratoconus)

数据里以 ESI.Anterior.(前表面)与 ESI.Posterior.(后表面)两列直接保留该指数,使用者可自行重现论文的 ESI 校验,甚至把 ESI 当第二个监督信号做交叉验证。

4.7 数据质量说明

  • 无缺失标注:Kaggle 页与 Dataverse 元数据均未提供缺失值清单;448 列大量含重复测量后缀,个别列是否存在空值需使用者自行 isna().sum() 核查(本条目未逐列统计缺失,属遗留点)。
  • 复用测量列:同一基名常带 .1/.2/.3/.4/.5 后缀(如 Ks/AvgK/CYL/AA/Ecc 到 .5),代表同一次检查内的多圈/多子午线输出。建模时要么按圈聚合、要么当多视图输入,不能把它们当成彼此独立的特征(否则同源冗余会污染重要性分析)。
  • 大量冗余/共线:448 列里同族参数高度相关(例如 15 个 Ecc.* 环带、13 个 DSI.*/OSI.*),做线性模型前必须做共线性处理或降维——这恰好也是论文用 PCA 的原因。

4.8 规模与质量的一句话小结

pentacam-kc 的规模(3162 眼)在眼科表格数据里属中上;但它的「质量特征」要分两面看:参数维度极高(448)且冗余严重,而标签是算法产物、还带严重不平衡。因此读它时的正确姿势是:把它当「几百维特征的、标签需要谨慎对待的」分期数据集,而不是「带金标准标签的现成监督集」。

4.9 为什么「3162」比「3156」更该被信任

面对「论文说 3156、CSV 里 3162」这种冲突,直觉会倾向「论文是权威」——但这里恰恰相反,应以实抓的 3162 为准,理由有三:

  1. 3162 是可直接验证的:它是 CSV 里数得出来的行数,任何人下载后 wc -l 都能复现;而 3156 是论文正文里的叙述,读者无法直接核对。
  2. 一致性:dataset.csv 与 labels.csv 都是 3162 行,两表按 idEye 完全对齐——这个内部一致性强烈支持 3162 是数据本体的真实规模。
  3. 论文口径可能是"筛选前/后"差异:论文写的是"筛选后进入分析的 3,156 眼",而公开的 CSV 可能保留了筛选边界附近的少数记录。

但要注意反面:这不代表「论文不权威」,而是说明**「数据载体」与「论文叙述」是两类不同的权威**——涉及数据本身(行数、列数、标签分布)时,以数据载体实抓为准;涉及方法、动机、临床解释时,以论文为准。这条原则适用于所有"论文 + 公开数据"组合。

4.10 从分布能读出什么临床线索

撇开标签质量不谈,光看四簇的 ESI 构成,就能读出这套聚类在临床上的合理性:

  • 簇 IV 几乎全是 ESI>29(80/81)——它对应「明确的晚期圆锥」,最纯、最容易识别。
  • 簇 II 绝大多数 ESI=0(1772/2587)——它是「正常 + 顿挫型」的混合池,占了大头,也最难分。
  • 簇 I 与簇 III 处在中间——一个偏正常(簇 I)、一个偏病(簇 III),边界相对模糊。

这解释了论文的核心论断为什么能成立:聚类确实"长"出了与临床严重度单调相关的结构(越病的簇 ESI 越高),但中间地带的簇彼此高度重叠——这与圆锥角膜分期在临床上的固有困难(亚临床 vs 顿挫型 vs 早期难分)完全吻合。换句话说:这份数据的"可分性差"不是数据的缺陷,而是这个疾病本身的难点在数据里的投影。

§5 任务定义与标注协议

5.1 核心任务清单

pentacam-kc 原生支持的任务可分成三族:

任务族 具体任务 标签/产物
分类(原生) 四簇圆锥角膜分期(1/2/3/4) clster_labels
分类(派生) 二分类(正常/顿挫型 vs 明确圆锥) 簇 {1,2} vs {3,4} 合并
回归/衍生 ESI 预测、K 值回归等 由 ESI.*/Ks 等参数导出
表征学习/聚类复现 复现 PCA→流形→密度聚类全流程 无标签,无监督
特征选择/可解释性 找出对分期最有判别力的参数 论文 RFE 选特征思路

论文本身做的是无监督聚类 + ESI 校验(不做监督训练/测试划分);下游把它当监督数据集时,任务口径由使用者自定。

5.2 标签来源:聚类,而非临床金标准

这是最需要说清楚的一点。clster_labels 的值是 K 均值/密度聚类一类的算法输出,不是眼科医生的分期诊断。 论文的立场是:圆锥角膜分期临床标准主观、各中心不一,那就让数据自己「长出」分期结构,再用 ESI 这把客观尺子去验证。

由此产生两个必须知道的推论:

  1. 簇号没有先验序数含义。簇 1 不一定就比簇 2 轻——严重度顺序是事后靠 ESI 反推的。做有序回归时若直接把簇号当「1<2<3<4」,是在假设一个未被数据保证的顺序。
  2. 标签可复现性依赖随机种子与聚类参数。密度聚类(DBSCAN/OPTICS)对邻域半径、最小点数敏感,换一套参数可能得到不同的簇划分——这也解释了为什么论文簇计数(256/2587/264/81)与再托管标签(264/2595/221/82)对不上(§4.4)。

5.3 四簇的临床语义(依 ESI 反推)

簇标 ESI 主导成分 临床读法
1 多为 ESI=0 正常眼
2 绝大多数 ESI=0,含部分可疑 健康 + 顿挫型(forme fruste)
3 多为 ESI>29 轻度圆锥角膜
4 几乎全部 ESI>29 晚期圆锥角膜

使用这套语义时务必记住:这是论文作者的解读,Kaggle 页没有给出任何 class 语义说明。若你只在 Kaggle 看到 clster_labels=2,页面不会告诉你它意味着「健康+顿挫型」。

5.4 特征与标签的工程处理

把这份数据用在监督任务上,典型的预处理链是:

  1. 合并两表:dataset.csv ⟕ labels.csv on idEye(完全对齐,可直接 merge)。
  2. 甄别可疑派生列:表内有两列名称可疑——Result(二值 0/1:2402 眼为 0、760 眼为 1)与 LabelNum(0–17 共 17 个取值:0→1184、1→645、2→438 …… 呈单调递减)。它们既像「辅助标签」又像「计数/序号」,数据页未给任何说明。使用前应确认它们是否与 clster_labels 冗余,必要时剔除(本条目未拆解其确切语义,属遗留点)。
  3. 处理重复测量列:.1/.2/.3 后缀的同族列,按需取均值/中位数或保留为多视图。
  4. 处理共线性:448 列中同族高度相关,建议 PCA 或正则化。
  5. 处理不平衡:簇 2 占 82%,分类时须用类别加权/重采样,并逐类报告指标(簇 4 只有 82 例,很容易被整体准确率掩盖)。
  6. 患者级划分:若做监督评测,由于同患者双眼相关,应按患者号分组划分(GroupKFold),避免双眼跨折泄漏(与 papila 的患者级纪律同理)。

5.5 质控与可复现性约束

  • 论文给的「客观校验」是 ESI:使用者可复现「簇内 ESI 分布」来判断自己的聚类是否合理——这是比「看指标」更本质的质量检查。
  • 无官方 split、无官方基准:任何在下游报出的分期准确率都不可与论文直接对比(论文根本没做监督评测)。
  • 论文的评估口径是「可视化 + ESI 一致」:2-D 投影里簇是否分离、簇内 ESI 是否同质——这是无监督研究的标准验收方式,与监督学习的 AUC/准确率不是一回事。

5.6 与库内同类任务的衔接

  • 与 papila 的对照:papila 是「青光眼三分类 + OD/OC 分割」,标签来自临床诊断;pentacam-kc 是「圆锥角膜四簇」,标签来自聚类。两者都是「小/中规模 + 强结构」,但标签可信度锚点不同——前者锚在临床,后者锚在算法 + ESI 校验(见 §8 互链)。
  • 与眼底分期任务的衔接:DR 分级(messidor 等)是「看图分级」,pentacam-kc 是「读参数分期」,二者共同说明眼科 AI 里**「分期」任务的数据形态可以是从图像到表格的连续谱**。

5.7 §5 小结

把 §5 收成一句:pentacam-kc 的标签是无监督聚类产物、临床语义靠 ESI 反推、簇号无先验序数含义。使用者拿到它,第一件事就是决定**「信不信这套聚类分期」**——信,则当监督标签用(注意不平衡与患者级划分);不信,则把标签当「参考分组」,自己重做无监督流程或改用 ESI 作监督信号。

§6 许可、获取与版本:三条链条各说各话

这一节处理的是"我到底能不能用、怎么拿到、拿到的是哪一版"。看似程序性问题,实则是这份数据集最容易踩雷的地方——因为它同时存在于三个地方,而三处的许可、版本、获取摩擦各不相同。

6.1 三源许可并存:CC0 / Unknown / CC BY

同一批角膜数据,在三处挂着三种不同的许可标签:

载体 许可标注 对象 权威性
Harvard Dataverse(原始发布) CC0 1.0(Public Domain Dedication) 数据本体 权威(原始发布方)
Kaggle(再托管) Unknown(未标注) 数据本体(副本) 缺失(再托管侧漏标)
PLOS ONE(论文文章) CC BY 4.0(署名) 论文文本,非数据 权威(但对象不同)

三者的关系要说清楚:

  • CC0 1.0 是数据的真正许可。CC0 意味着原始作者主动放弃著作权及相关权利,把作品投入公有领域。任何人可复制、修改、分发、商用,无需署名、无需申请。这是"最宽松"的一档——宽到连"必须署名"都没有。
  • Kaggle 页的 “Unknown” 不是"未知许可",而是"再托管者没填"。原始数据既然是 CC0,再托管在法律上不构成障碍(CC0 明示允许再分发);问题纯粹是信息缺失——只看 Kaggle 页的用户会误判为"许可不明,不敢用",从而白白放弃一份本可自由使用的数据。
  • CC BY 4.0 是论文文章的许可,不是数据的。论文正文可以自由转载(需署名原作者),但论文许可 ≠ 数据许可。把两者混为一谈是常见错误(见 §9 坑 6)。

本条目口径:数据许可以 Dataverse CC0 1.0 为准;Kaggle 侧 “Unknown” 记为"再托管信息缺失";论文 CC BY 4.0 单列为"文章许可"。三者对象不同,不得互相套用。

6.2 三条获取路径与摩擦对比

拿到这份数据有三条路,摩擦程度差别很大:

路径 入口 摩擦 适用
原始(推荐) Harvard Dataverse DOI 10.7910/DVN/G2CRMO 无墙,匿名直接下载两个 CSV 任何研究者,首选
再托管 Kaggle imenbakir/keratoconus-stage-detection 需 Kaggle 账号 + API token 习惯 Kaggle 工作流者
代码/笔记本 GitHub imenbkr/Keratoconus-Stage-Detection 公开克隆,无墙 想复现原方法者

为什么推荐 Dataverse 原始入口:

  1. 无注册墙。Dataverse 的两个文件(datafile/3218930 = dataset.csv、datafile/3218929 = labels.csv)可直接匿名下载,不需要任何账号。
  2. 许可权威。原始发布页明确标注 CC0 1.0,不存在 Kaggle 那种"Unknown"的歧义。
  3. 版本可追溯。Dataverse 有稳定的 DOI 与 dataset id(3218928),引用时可直接指向。

Kaggle 路径的注意点:Kaggle 需要账号登录(或配置 ~/.kaggle/kaggle.json API token)才能下载。对于自动化脚本,这意味着多一层凭证管理。此外 Kaggle 页没有数据集描述、没有更新日期,信息量远低于 Dataverse 原始页。

GitHub 路径的对象:GitHub 项目提供的是代码与笔记本(Apache-2.0 代码许可),不是数据。克隆它可以得到原作者/再托管者的方法实现,但数据仍需从 Dataverse 或 Kaggle 取。切勿把 Apache-2.0 当成数据许可(坑 6)。

6.3 版本链:只有 v1.0

这份数据集的版本历史极简:

  • Harvard Dataverse:仅 v1.0,状态 RELEASED,无 v2、无后续修订记录。dateOfDeposit = 2018-09-10,publicationDate = 2018-10-13。
  • Kaggle:显示 Version 1,无更新。
  • PLOS 论文:2018-11-06 在线发表(Volume 13, Issue 11, e0205998)。

也就是说,近八年来这份数据没有任何修订。这带来一个双面的后果:

  • 好处:引用它做实验,别人复现时拿到的必然是同一版,不存在"我用的 v1 你用 v2 对不上"的问题。
  • 代价:如果数据里存在已知瑕疵(比如类不平衡、疑似设备口径混淆、448 列里的空首列等),不会有人来修。用户必须自己处理,不能指望上游更新。

6.4 引用规范

规范引用应同时登记两条,因为研究对象(数据)与科学出处(方法论文)是两件事:

  • 数据:Yousefi S, Yousefi E, Takahashi H, Hayashi T, Tampo H, Inoda S, Arai Y, Asbell P. Replication Data for the “Keratoconus severity identification using unsupervised machine learning”. Harvard Dataverse, V1. DOI: 10.7910/DVN/G2CRMO. (CC0 1.0)
  • 论文:Yousefi S, et al. Keratoconus severity identification using unsupervised machine learning. PLOS ONE 2018;13(11):e0205998. doi:10.1371/journal.pone.0205998. PMID 30399144;PMCID PMC6219768. (CC BY 4.0)

Kaggle 再托管版建议一并登记(便于他人定位到你实际下载的副本):

一句提醒:若你的下游工作是在 Kaggle 上完成、只引了 Kaggle,审稿人可能会追问"原始出处与许可"——此时补上 Dataverse DOI 与 CC0 才能闭环。

6.5 Dataverse 与 Kaggle 两渠道的数据完整性对照

既然有两份副本,使用者自然会问:“它们是不是同一份数据?” 本条目实抓后给出对照:

维度 Dataverse(原始) Kaggle(再托管)
文件 dataset.csv + labels.csv(6.72 MB + 77.7 KB) dataset.csv + labels.csv(Version 1,6.8 MB)
dataset.csv 448 列 × 3162 行 448 列 × 3162 行
labels.csv 3162 行 3162 行
主键 idEye idEye(表头粘连为 Data.PLOS_One.idEye)
许可 CC0 1.0 Unknown
描述 元数据规范(标题/作者/DOI) 无(No description available)
更新日期 2018-10-13(v1.0) 未标注

结论:两渠道的数据内容一致(列数行数相同),差异全部在元数据与许可标注上。因此:

  • 要数据:两者皆可,Kaggle 版对习惯 Kaggle 工作流的人更方便;
  • 要许可与溯源:必须回到 Dataverse——Kaggle 页的 “Unknown” 与"无描述"会让人无法确认许可、无法引用、无法判定版本。
  • 引用:以 Dataverse DOI + PLOS 论文为准,Kaggle 页仅作"我实际下载的副本"备注。

这也再次印证 §10.3 的观点:同一份数据被贴上多个身份时,溯源链的清晰度完全取决于元数据质量——而本数据集的元数据质量,在 Dataverse 侧合格、在 Kaggle 侧归零。


§7 评估、基线与生态复现:没有排行榜的赛道

这一节回答三个问题:原论文怎么评的?有没有官方榜单?我怎么复现?

7.1 原论文的评估方式:不设 split 的无监督范式

PLOS 原论文的评估逻辑与常见的监督学习基准完全不同:

  • 它不是分类评测。论文没有 train/test 划分,因为没有"训练一个分类器"这一环——4 个簇是聚类算法直接产出的。
  • 它的主张是:用 PCA + 流形学习 + 密度聚类,可以在不使用人工标签的前提下识别出 KC 的严重度分层,并用 ESI(Ectasia Status Index) 作为客观尺子来校验这些簇是否具有临床意义。
  • ESI 作为外部校验:ESI = 0 判为正常、5–29 判为可疑、>29 判为圆锥。论文用 ESI 排序来论证聚类结果与临床严重度单调对应。

这意味着:"这个数据集上的 SOTA 是多少"这个问题本身不成立。它不是用来刷准确率的赛道,而是用来验证"无监督方法能否自动分层"的一块试验田。

7.2 官方榜单/指标:没有

必须直说:

  • 无官方 leaderboard(Kaggle 页没有比赛、没有排行)。
  • 无官方 split 文件(train/val/test 划分需用户自建)。
  • 无官方评价指标(准确率/F1/AUC 都需用户自己定义)。

这一点与库内其他玻璃体视网膜 OCT 条目(如 oct2017、octa-500)类似——它们都是"数据集"而非"竞赛"。用户若想建监督基准,必须自己划分、自己定义指标、自己在论文里说明。

7.3 第三方引用:CornOrb 的定位

CornOrb 论文(arXiv:2603.21245,Data/MDPI 2026)在 Background 引用 Bakir (2023) Keratoconus stage detection dataset (pentacam),访问日 2025-09-15,把它归类为 “Pentacam-based dataset for stage detection”,用于 KC 检测/分期的方法学对照。

值得注意的是,CornOrb 同时把 Yousefi 的工作单列为 “a large dataset of tabular parameters derived from OCT-based tomography”——这说明在第三方眼中,"Bakir/Pentacam 版"与"Yousefi/OCT 版"被当作两个不同的东西(尽管它们的 CSV 大概率同源)。这正是 §9 坑 4「Pentacam vs OCT」口径分叉的生态证据。

7.4 同域旁证:别人的角膜地形图任务做到哪一步

为了给读者一个"角膜地形图 AI 任务"的上下文,这里列出同域但不同数据集的两项工作(不是本数据集的自带基准):

工作 数据/方法 关键结果
Liu et al.(ARVO 2021,渥太华大学) Pentacam 图 检测 KC 准确率 99.3%(四参数);AK 四分期 73.5%,加显性验光升至 87.8%;进展预测仅 53.6%
Al-Timemy et al.(Diagnostics 2023) 3 类集 4113 图(normal 500 / suspect 500 / KCN 371 × 3 maps,共 1371 眼);独立 2 类集 639 图(213 眼) 面向 KCN 分类的深度学习方法

从这两个旁证能读出两点本数据集使用者该知道的事:

  1. 分期比检测难。检测"是不是 KC"可以到 99%,但细分四期就掉到 73.5%——分期任务的标签噪声与边界模糊是核心难点。
  2. 进展预测几乎不可行。Liu 等人做得最好也只有 53.6%(接近抛硬币)。这与本数据集"无时间维度、不能做进展预测"的事实(§4.1 结构:仅横断面单时点)相互印证:单时点横断面数据天然做不了纵向进展预测。

7.5 复现步骤骨架

想在本数据集上做一次可复现的实验,建议按下面这条骨架走:

# 0. 取数(Dataverse 原始入口,无墙)
#    dataset.csv  (datafile/3218930)  → 448 列 × 3162 行
#    labels.csv   (datafile/3218929)  → 3162 行(CRLF!)
import pandas as pd
X = pd.read_csv("dataset.csv")          # 首列可能是空索引列,需核查
y = pd.read_csv("labels.csv")           # 列名形如 Data.PLOS_One.id / Eye
y.columns = ["idEye", "label"]          # 合并表头还原
y["idEye"] = y["idEye"].astype(str).str.replace(r"\s+", "", regex=True)

# 1. ⚠ 关键:标签必须按 ESI 重排,不能硬编码簇号
#    (不同聚类 run 的簇号语义会变;ESI 是唯一稳定的临床锚)
#    见 §5.3 的簇语义解读

# 2. 特征:剔除疑似派生/泄漏列(Result/LabelNum,语义未明),
#    重复测量列(.1/.2/.3)按均值聚合 → 得到 ~446 维输入
#    见 §5.4 的工程处理链

# 3. 划分:按 patient 分组,绝不可按 eye 随机分
from sklearn.model_selection import GroupShuffleSplit
groups = y["idEye"].str.extract(r"^(\d+)")[0]   # 患者号前缀
gss = GroupShuffleSplit(n_splits=1, test_size=0.2, random_state=42)
# 见 §5.4 第 6 条完整说明

# 4. 评估:自建 split + 自定义指标(无官方榜)
#    报告时务必说明"标签为无监督聚类产物,非临床金标准"

这条骨架里三个"必须":标签必须按 ESI 重排、划分必须按患者分组、报告必须声明标签性质。任一环节偷懒,结果都不可信。

7.6 复现常见故障与排查

把本条目核实过程中真实遇到的解析问题整理成一张排查表:

现象 原因 处置
labels.csv 读进来只有几千行/行数不对 文件是 CRLF 行尾,或用 split(',') 简易切分 用 pd.read_csv 或 open(newline='')
合并后行数不是 3162 列名粘连 Data.PLOS_One.idEye 未还原,idEye 键名对不上 重命名 y.columns = ["idEye", ...]
列名取不到(如 Ecc.9.0mm.) 含点号/空格的列名未加引号 df["Ecc.9.0mm."] 显式索引
特征重要性全是同族参数霸榜 .1/.2/.3 重复测量列当独立特征 先按圈带聚合再算重要性
模型"准确率 82%"看着不错 全预测簇 2 的退化解 逐类看指标,用宏平均/平衡准确率
换了随机种子指标跳几个点 类不平衡 + 小样本 多样本重复取均值±标准差
和论文数字对不上 论文是无监督,无监督数字不可比;且簇计数本身两口径 只与自己的基线比,论文数字仅作背景

7.7 §7 小结

  1. 原论文无监督、无 split、无榜:它是"试验田"不是"赛道"。
  2. 官方基准不存在:任何准确率都得自建划分、自定指标、自己声明。
  3. 第三方 CornOrb 已收录:作为"Pentacam 分期数据集"引用,生态可见度成立。
  4. 同域旁证:分期比检测难(73.5% vs 99.3%)、进展预测近乎不可行(53.6%)。
  5. 复现骨架三必须:ESI 重排标签、患者分组划分、声明标签性质。

§8 生态定位与库内互链

这一节把本条目放回千方病案医数集(qianfanghub.com)的语境里,说明它填了什么空白、和谁最像、该链向谁。

8.1 库内定位:首个角膜 / 圆锥角膜条目

经查重(url_name ILIKE '%pentacam%'/'%keratoconus%'、title ILIKE '%cornea%'/'%topograph%' 均为 0 rows),可以确认:

本条目是千方库内第一个「角膜 / 圆锥角膜(corneal topography)」条目。

在此之前,库内的眼科影像主要分两支:

  • **眼底(fundus)**支:青光眼筛查/视盘分割、DR 分级等;
  • 视网膜 OCT 支:黄斑 OCT 分类/分割等。

本条目补上了第三支——角膜地形/断层。这是一个解剖部位与成像模态都不同的新分支,其判别对象(圆锥角膜)也不同于前两支的疾病谱系。

8.2 最接近的域:青光眼分割 / 筛查族

论"结构最接近",角膜地形图与青光眼视盘/视杯分割同属眼科结构性影像(都在做形态量化),库内可互链:

rid 条目 与本条目的关系
62 refuge 青光眼视盘/视杯分割 + CDR 挑战赛
766 refuge2 REFUGE 后继
746 justraigs 青光眼转诊 AI
291 rim-one 视盘/视杯分割
301 drishti-gs 视盘/视杯分割
764 g1020 青光眼眼底筛查
763 origa-light 青光眼眼底筛查
63 odir 多眼病(含青光眼)

这些条目的共同方法学是"解剖结构量化 + 质控",与本条目"448 个角膜参数 + 聚类分期"在思路上平行。其中 refuge(62) 作为挑战赛型条目,与本条目"无官方榜"形成鲜明对照,正好可作为"榜单型 vs 试验田型"的互文。

8.3 同模态参照:视网膜 OCT 族

本条目实测列名(OSI/CSI/DSI/BFS/HOAs/Zernike)更接近 CASIA 扫频 OCT 断层/像差体系(§9 坑 4),因此与库内视网膜 OCT 条目有天然的可比性:

  • oct2017(311)、octa-500(341)、octdl(690)、octid(697)。

它们的共同点是"OCT 断层图像 + 分类/分割任务",但解剖对象不同(视网膜 vs 角膜),且本条目是表格型参数而非图像——这层差异恰好能凸显"眼科 OCT 数据的两种形态:像素型 vs 参数型"。

8.4 广度互补:DR / 多病眼底族

  • messidor(59)、eyepacs(58):DR 分级与大规模眼底筛查。

这两个是"广谱眼科影像"的代表。把它们与本条目并列,能给读者一个"眼科 AI 数据全景"的坐标:眼底广谱筛查(DR/多病)→ 青光眼结构分割 → 视网膜 OCT → 角膜地形分期(本条目)。

8.5 relatedLink 选定(8 条)

综合域接近度与叙事价值,本条目 relatedLink 选定 8 条(满足 6–10 条要求):

  1. refuge(rid 62)— 青光眼分割挑战赛,最接近的"结构量化"范式;
  2. justraigs(rid 746)— 青光眼转诊 AI,临床筛查链路对照;
  3. origa-light(rid 763)— 青光眼眼底筛查;
  4. g1020(rid 764)— 青光眼眼底筛查;
  5. rim-one(rid 291)— 视盘/视杯分割;
  6. drishti-gs(rid 301)— 视盘/视杯分割;
  7. octa-500(rid 341)— 视网膜 OCT/OCTA,同模态(断层)参照;
  8. odir(rid 63)— 多眼病眼底,广度互补。

为何不选 messidor/eyepacs/oct2017:它们与本条目域距较远(DR 分级、视网膜 OCT 图像的病种与任务差异更大),纳入会稀释互链的"相关性"信号。库内互链的原则是"读者点过去确实有用",而非"数量凑够"。

一条自我提醒:以上互链 rid 均来自 FACTS.md 已回填的库内记录(其中 g1020/origa-light 的 rid 为 papila 时期回填)。成稿发布前若库有变动,应以最新只读查询为准。

8.6 建议的「眼科结构影像」家族导航

把本条目放进千方库内眼科版图,可以画出这样一张家族图:

千方眼科 AI-Ready 版图
├── 眼底(fundus)图像支
│   ├── 青光眼结构:refuge(62)、refuge2(766)、justraigs(746)、rim-one(291)、drishti-gs(301)
│   ├── 青光眼筛查:g1020(764)、origa-light(763)
│   ├── 多眼病:odir(63)
│   └── DR 分级:messidor(59)、eyepacs(58)
├── 视网膜 OCT 支(断层图像)
│   ├── oct2017(311)、octa-500(341)、octdl(690)、octid(697)
│   └── 立体结构:papila(配对眼底 + 临床 + 双专家分割)
└── 角膜地形/断层支(本条目首次开分支)
    └── pentacam-kc(表格参数 + 无监督分期)

这张图的价值在于:它让读者一眼看到本条目填的是哪块空白——角膜支此前是空的,pentacam-kc 是它的第一块砖。后续若入池其他角膜数据集(如 CornOrb、Al-Timemy 系列盘点)应补进本支,形成完整的「角膜家族」导航。

8.7 互链理由的三层逻辑

本条目选定的互链不是随机凑数,而是沿三层逻辑:

  1. 任务同构层(最强):refuge(62) / rim-one(291) / drishti-gs(301) —— 都做角膜/视盘的形态结构量化,方法学直接可比。
  2. 临床链路层:justraigs(746) / g1020(764) / origa-light(763) / odir(63) —— 都属眼科筛查/诊断链路,疾病域相近(青光眼 vs 圆锥角膜同为"结构决定的眼科慢病")。
  3. 模态血缘层:octa-500(341) —— 同为断层/OCT 模态(本条目实测列名偏 CASIA 断层体系,见坑 4),是与"像素型断层"的天然对照。

不选 messidor/eyepacs/oct2017 为 relatedLink:它们与本条目域距较远(DR 分级与视网膜 OCT 图像的病种、任务差异更大),纳入会稀释相关性信号。库内互链的原则是"读者点过去确实有用",而非"数量凑够 6–10"。


§9 局限、风险与合规提示

任何数据集条目若只讲"能做什么",就是半张地图。pentacam-kc 的价值恰在于它同时暴露了自己的短板:标签是算法产物、口径四处打架、类别极端不平衡、没有官方基准。本节逐条拆解使用前必须知情的事项,并给出可操作的应对。

9.1 标签不是临床金标准

这是使用本数据集第一条也是最重的一条局限。clster_labels 是无监督聚类的输出,不是眼科医生的 AK/ABCD 分期。

  • 簇号 1–4 无先验序数含义,严重度顺序靠 ESI 事后反推(§5.3)。
  • 换一套聚类参数/随机种子,簇划分可能改变——这直接解释了为什么论文的簇计数与再托管标签对不上(§4.4)。
  • 因此不能把 clster_labels 当"医生标注的分期金标准"来报模型精确度——那会高估标签质量。

应对:在数据卡/模型卡中显式声明"标签为无监督聚类产物,非临床分期";若做监督任务,用 ESI 作独立校验信号;报告时说明簇语义的推导依据。

9.2 类别极端不平衡

实抓簇分布为 簇 1=264 / 簇 2=2595 / 簇 3=221 / 簇 4=82:

簇 2 ██████████████████████████████████████ 2595  (82.1%)
簇 1 ████                                     264  (8.3%)
簇 3 ███                                      221  (7.0%)
簇 4 █                                         82  (2.6%)
  • 最大类/最小类 ≈ 32 : 1,比绝大多数医学分类数据集都悬殊。
  • 「明确病」样本稀缺:簇 3+4 合计仅 303 眼(9.6%),簇 4 只有 82 眼。
  • 若用整体准确率评估,一个"全预测簇 2"的模型就能拿到 82%——这会把真正的分期能力完全掩盖。

应对:类别加权 / 重采样 / focal loss;必须逐类报告(簇 3、簇 4 单独给置信区间);对最小簇 4 考虑合并或专门建模。

9.3 无官方 split、无官方基准

数据集不提供 train/val/test 划分,没有 leaderboard,没有官方指标。

  • 好处:划分自由。
  • 风险:不同研究各自划分,指标不可直接横比;且论文根本没做监督评测,"和论文比"这件事不成立(§7.1)。
  • 叠加患者级泄漏风险:1751 个患者号里 1411 人双眼齐备,若按眼随机划分,同一患者双眼跨折 → 指标虚高。

应对:以患者号为组做 GroupKFold / GroupShuffleSplit(§5.4 第 6 条);显式声明划分方案(折数、随机种子、是否分组);不与论文数字对比,因为论文没有监督数字。

9.4 特征维度高、冗余严重

448 列里同族参数高度相关(15 个 Ecc.* 环带、13 个 DSI.*/OSI.*、多个 Ks.0mm.~Ks.6mm.),且大量列是同一检查内的重复测量(.1/.2/.3 后缀)。

  • 直接把 448 列喂给线性模型 → 共线性爆炸、系数不可解释。
  • 把重复测量列当独立特征 → 同源冗余污染重要性排序。

应对:PCA / 正则化 / 特征选择;按圈带聚合重复测量列;把 .1/.2/.3 当多视图或取均值。

9.5 患者结构需自行拆解

数据页没给患者数,患者号需从 idEye 前缀自行提取(本条目实抓得 1751 个患者号)。这意味着:

  • 官方文档不提供患者级元数据(年龄、性别、诊断等);
  • 想做患者级分析,得自己从 idEye 解析;
  • 双眼相关性没有官方说明,需自行处理。

应对:解析 idEye 前缀得患者号;患者级分析时显式声明;不要把眼睛当独立样本在患者级结论里用。

9.6 疑似派生列语义未明

表内 Result(0/1,2402/760)与 LabelNum(0–17 共 17 值,单调递减)两列语义未在数据页说明。

  • 它们可能是辅助标签、计数或序号,若被误当特征会引入标签泄漏(尤其 Result 只有两个值,很像"正常/异常"标签)。
  • 数据页对此零说明。

应对:使用前先做与 clster_labels/ESI 的相关性检查,确认无泄漏后再决定保留或剔除。

9.7 模态与设备口径存照(Pentacam vs OCT)

本条目最大的口径分叉:论文称数据来自 CASIA SS-1000 扫频 OCT,Kaggle 标题与 CornOrb 称 Pentacam。

  • 本条目实抓 448 列后未发现 Pentacam 专属的 ISV/IVA/RMin,实为 OSI/CSI/DSI/BFS/HOAs/Zernike——实测偏支持论文的 OCT 口径。
  • 但"Pentacam"这一叫法已在 Kaggle 页与第三方引用中固化。

应对:在任何引用中并列写明两种口径;若设备口径对你的方法学关键(如跨设备泛化),以 PLOS 论文的 OCT 表述为准并回溯原始采集说明;不要单方面断言"这就是 Pentacam 数据"。

9.8 许可口径存照(CC0 vs Unknown vs CC BY vs Apache)

四处许可标签,对象与主体各不相同:

载体 许可 对象 处理
Harvard Dataverse CC0 1.0 数据 权威,以此为准
Kaggle 再托管页 Unknown 数据副本 再托管信息缺失,非"许可不明"
PLOS ONE 论文 CC BY 4.0 论文文章 署名即可,不覆盖数据
GitHub 项目 Apache-2.0 代码 代码许可,不覆盖数据

原始数据是 CC0(公有领域弃权),所以再分发本身不构成障碍;Kaggle 的 “Unknown” 纯属信息缺失。但把 Apache-2.0 或 CC BY 4.0 当成数据的"限制性许可"是错的——数据反而是最宽松的 CC0。

应对:数据按 CC0 用(无需署名);论文引用按 CC BY 署名;在数据卡中标注"数据源自 Dataverse CC0"。

9.9 无图片、无原始地形图

本数据集只有参数,没有角膜地形图图像。

  • 不能做"图像 + 参数"多模态建模;
  • 不能可视化单眼的角膜形态;
  • 参数已经是从图像/断层"算出来"的二次量,丢失了空间信息。

应对:若要图像,需换数据集(如 Al-Timemy 系列、CornOrb);若要参数+图像联合,需自行配对(本数据集不提供配对图)。

9.10 横断面、无纵向进展信息

数据是单时点横断面,无时间戳、无随访。

  • 不能做圆锥角膜进展预测(进展预测本身就极难,Liu 等人也只有 53.6%,§7.4);
  • 不能做纵向/生存分析。

应对:把任务限定在"横断面分期/分类";不要声称能做进展预测。

9.11 §9 小结

  1. 标签非金标准:聚类产物,簇号无语义,需 ESI 反推。
  2. 极端不平衡:32:1,簇 4 仅 82 眼,逐类报告。
  3. 无官方 split/基准:自建划分,患者级防泄漏。
  4. 448 列高冗余:降维 / 聚合重复测量列。
  5. 患者结构需自解析:1751 患者号,官方未给。
  6. 派生列语义未明:Result/LabelNum 慎用。
  7. 口径四处分叉:设备(OCT/Pentacam)、许可(CC0/Unknown/CC BY/Apache)。
  8. 无图、无纵向:限横断面参数任务。

§10 方法论评注与 AI-Ready 启示

pentacam-kc 不只是一份数据包,它的标签生成与发布方式本身就是一套可评议的方法学样本。本节从六个角度评注它对"如何做 AI-Ready 医学数据集"的启示。

10.1 用无监督聚类「造」分期标签:一种绕开主观性的尝试

圆锥角膜分期最大的痛点,是临床标准本身主观——AK 与 ABCD 两套体系并存,各中心口径不一。pentacam-kc 的路线是换一条路:既然人工分期不统一,那就让数据自己「长出」分期结构(PCA → 流形学习 → 密度聚类),再用 ESI 这把设备自带的客观尺子去校验。

启示:当标签的主观性是主要瓶颈时,无监督表型发现 + 客观指数校验是一条值得认真对待的替代路线。它的代价是标签失去"临床可解释性"(簇号没有直接临床含义),收益是可复现、可量化、不依赖个别专家的主观判断。这条路线是否优于临床标注,取决于下游任务——用于方法学研究时,它提供了"标签如何被构造"的透明样本。

10.2 复现包范式:把「方法与数据」一起交付

PLOS 论文把数据与标签以 Harvard Dataverse 复现包形式公开(DOI 10.7910/DVN/G2CRMO,CC0),并写明"All original and labels data files are available from the Harvard Dataverse database"。方法步骤(PCA→流形→聚类→ESI 校验)细到可逐步重跑。

启示:AI-Ready 的最高标准不止"把数据放出来",而是把生成标签的完整流程也放出来——使用者在拿到 clster_labels 的同时,知道它是怎么算出来的,甚至能自己重跑一遍验证。这与库内 papila 的"双专家 + Dice 质控"路径不同:papila 靠标注协议透明,pentacam-kc 靠算法流程透明,两者是"透明性"的两种实现。

10.3 同一份数据、多个「身份」:溯源链的重要性

这份数据最耐人寻味的一点,是它同时以多个名字/多份副本流传:

  • 在 Dataverse 叫 “Replication Data for …”(复现数据);
  • 在 Kaggle 叫 “Keratoconus Stage Detection”(分期数据集);
  • 在 CornOrb 引用里叫 “Bakir (2023) Pentacam dataset”;
  • 而它的科学出处是 PLOS ONE 2018。

同一份 CSV,被贴上"复现数据 / 分期数据集 / Pentacam 数据集"三种标签。启示:AI-Ready 元数据的一个核心价值,就是把溯源链写清楚——原始出处(Dataverse + 论文)、再托管渠道(Kaggle)、代码仓库(GitHub)三者的关系必须显式登记,否则使用者很容易"只见 Kaggle、不见 Dataverse",从而在许可、版本、口径上全面失焦。这也是"可发现性"背后真正的功课:不是被找到,而是被正确地理解。

10.4 CC0:最宽松许可的双刃

数据用 CC0 1.0(公有领域弃权),是最宽松的一档——连署名都不要求。

  • 优点:零摩擦、可商用、可再分发,AI-Ready 友好度拉满;
  • 代价:放弃了对下游的约束力,也意味着没有"引用即溯源"的强制——这正是它能被改名叫 “Pentacam” 四处流传、原始出处被稀释的制度原因之一。

启示:CC0 对"可获取性"是加分项,对"可追溯性"却是减分项。许可越宽松,元数据的重要性越高——因为约束不能靠法律,只能靠文档。数据集作者若选 CC0,更应把"请引用论文"写进显著的元数据位置(本数据集恰恰在 Kaggle 页没做到这点)。

10.5 表格数据在眼科 AI 里的位置

库内眼科条目几乎全是图像(眼底、OCT),pentacam-kc 是第一条表格参数条目。

启示:眼科 AI 的数据形态是连续谱——从"原图像素"(眼底/OCT)到"设备算好的参数"(本数据集)。表格数据的优势是可解释、低维冗余之外的语义清晰、无需图像预处理;劣势是丢失空间信息、依赖厂商算法、跨设备对齐困难。把本条目与眼底/OCT 条目并置,恰好能让读者看到眼科 AI 数据的两端:“端到端看像素” vs “读现成参数”——两条路线各有其正当性。

10.6 对照 AI-Ready 五要素

要素 pentacam-kc 表现 评级
可发现性(Findable) Dataverse DOI + Kaggle 页 + 被 CornOrb 引用;但名称多版本(分期数据集/复现数据/Pentacam 数据集),检索时易混 中
可获取性(Accessible) Dataverse 匿名直下(CC0);Kaggle 需账号 强
可互操作性(Interoperable) 纯 CSV,两大通用表格格式;但无标准化字段字典、无 schema.org、无列义说明 中偏弱
元数据质量(Metadata) Dataverse 元数据规范(标题/作者/DOI/许可齐全);但 Kaggle 页零描述、零许可、零更新日期,字段语义完全缺失 中偏弱
可持续性(Sustainable) Harvard Dataverse 长期存档 + DOI;无修订机制但也不会消失 中偏强

总评:pentacam-kc 是**"可获取性强、但元数据机器可读性弱、且名称多版本易混淆"的典型。它与 papila 的共性是"可获取强";差别在于 papila 有 Sci Data 论文把字段讲清楚,而 pentacam-kc 的参数语义连论文都没逐列解释**(论文只讲筛选与聚类,不讲 448 列各自的含义)。这正是它从"能下载"迈向"AI-Ready"要补的最大一课。

10.7 §10 小结

  1. 无监督造标签:绕开临床分期主观性的可复现路线。
  2. 复现包范式:方法透明与数据透明同等重要。
  3. 多个身份:多副本流传下,溯源链是元数据的核心任务。
  4. CC0 双刃:越宽松的许可,越依赖文档来保障溯源。
  5. 表格数据定位:眼科 AI 数据从像素到参数的连续谱。
  6. AI-Ready 五要素:可获取强,字段级元数据是短板。

§11 全篇总结

pentacam-kc 是千方库内第一份「角膜 / 圆锥角膜」数据集,也是第一份纯表格参数的眼科条目。它用 3162 眼 × 448 个角膜参数 + 四簇分期标签,回答一个具体问题:能不能只靠角膜地形/断层的量化参数,自动把圆锥角膜分出严重度层次?

它的核心价值:

  • 补空白:库内眼科从"视网膜图像"扩展到"角膜参数",覆盖面第一次触达角膜。
  • 方法透明:标签由 PCA + 流形学习 + 密度聚类生成,流程可复现、可重跑。
  • 客观校验:用 ESI 这把设备自带的客观尺子检验聚类,不依赖个别专家。
  • 获取友好:Dataverse 匿名直下 + CC0 许可,摩擦最低档。
  • 可解释:448 个具名参数比图像黑箱更适合做特征重要性分析。

它的核心限制:

  • 标签非金标准:聚类产物,簇号无语义,需 ESI 反推。
  • 极端不平衡:32:1,簇 4 仅 82 眼。
  • 口径四处分叉:设备(OCT/Pentacam)、许可(CC0/Unknown/CC BY/Apache)、规模(3156/3162)、簇计数(论文 vs 标签)。
  • 无官方 split/基准/字段字典,患者结构需自解析。
  • 无图、无纵向,任务被限定在横断面参数分类。

给使用者的三句话:

  1. 做无监督表型发现/可复现方法学——这份数据是干净的样本,流程透明、许可自由。
  2. 做监督分期——能用,但必须声明"标签是聚类产物",并逐类报告、患者级划分。
  3. 做跨域/引用——务必回查 Dataverse 原始页与 PLOS 论文,不要只信 Kaggle 页(它零说明),也别把四簇计数硬对上论文数字。

在千方病案医数集体系内,pentacam-kc 与 refuge(62)、justraigs(746)、origa-light(763)、g1020(764) 等青光眼结构量化条目同属"眼科结构影像"大类,与 octa-500(341)、oct2017(311) 共享"断层/OCT 模态"的血缘,共同构成千方眼科 AI-Ready 版图中除"眼底图像"之外的第二、第三支。


FAQ 常见问题

A. clster_labels 是医生标的分期吗?能当金标准吗?

不是,不能。(§5.2 / §9.1)它是无监督聚类(PCA → 流形学习 → 密度聚类)的输出,簇号 1–4 没有先验临床含义,严重度顺序是论文借 ESI 事后反推的。

正确用法:

  • 当"参考分组"或"弱标签"用,而非金标准;
  • 用 ESI(ESI.Anterior./ESI.Posterior.)作独立校验信号;
  • 报告时声明标签性质,不要声称"达到 X% 的分期准确率"而不加限定。

B. 为什么 Kaggle 说是 Pentacam,论文却说是 OCT?

这是本条目最大的口径分叉(§9.7 坑 4)。论文正文写 CASIA SS-1000 扫频 OCT;Kaggle 标题与 CornOrb 写 Pentacam。本条目实抓 448 列后发现没有 Pentacam 专属的 ISV/IVA/RMin,实为 OSI/CSI/DSI/BFS/HOAs/Zernike——实测偏支持论文的 OCT 口径。

处理建议:引用时并列写明两种口径;若设备口径对方法学关键,以论文 OCT 为准并回溯原始采集说明。

C. 该从哪下载,许可怎么办?

首选 Harvard Dataverse(§6.2):DOI 10.7910/DVN/G2CRMO,两个 CSV 匿名直链,许可 CC0 1.0(含数据),无需注册、无需署名、可商用。

次选 Kaggle:imenbakir/keratoconus-stage-detection,需账号/API token,页面许可标注 Unknown(信息缺失,非许可不明)。

注意:GitHub 项目是 Apache-2.0 代码许可,不是数据许可;PLOS 论文是 CC BY 4.0 文章许可,不覆盖数据。

D. 448 列怎么预处理?

三步(§5.4):

  1. 合并两表:dataset.csv ⟕ labels.csv on idEye(完全对齐)。
  2. 甄别派生列:Result(0/1)、LabelNum(0–17)语义未明,先查是否泄漏再决定去留。
  3. 处理重复测量与共线:.1/.2/.3 同族列按圈/均值聚合;448 列同族高度相关,建议 PCA 或正则化。

别把重复测量列当独立特征——那是同源冗余,会污染特征重要性。

E. 类别极度不平衡怎么办?

实抓分布 簇1=264 / 簇2=2595 / 簇3=221 / 簇4=82(§9.2),最大/最小 ≈ 32:1。

  • 必须逐类报告(尤其簇 3、簇 4),不要只看整体准确率;
  • 用类别加权 / 重采样 / focal loss;
  • 簇 4 只有 82 眼,考虑合并到簇 3 或专门处理;
  • 注意:一个"全预测簇 2"的模型就有 82% 准确率——这是最常见的评估陷阱。

F. 能和眼底/OCT 数据集混着用吗?

要分情况(§8 / §10.5):

  • 做多模态(图 + 参数):本数据集无图,需另配图像数据,且本数据集不提供配对图,配对无从谈起。
  • 做跨设备/跨模态泛化:本数据集是角膜参数,与视网膜眼底/OCT 解剖部位不同,不能直接迁移。
  • 做方法学对照:可以把本条目当"表格参数路线"的代表,与眼底/OCT 的"图像路线"对照,但这属于研究设计,不是数据混用。

附录

附录 A:条目信息速查卡

项 值
条目名 Keratoconus Stage Detection
url_name pentacam-kc
全称(Dataverse) Replication Data for “Keratoconus severity identification using unsupervised machine learning”
全称(Kaggle) Keratoconus Stage Detection / Keratoconus stage detection dataset (pentacam)
类型 表格数据集(纯 CSV),源自 PLOS ONE 复现包
论文 PLOS ONE 2018-11-06;13(11):e0205998(DOI 10.1371/journal.pone.0205998;PMID 30399144;PMCID PMC6219768)
团队 UTHSC(美国)+ Jichi Medical University / Yokohama Minami Kyosai Hospital(日本),8 作者
数据托管 Harvard Dataverse DOI 10.7910/DVN/G2CRMO(v1.0,2018-10-13)
Kaggle 再托管 imenbakir/keratoconus-stage-detection(Version 1,6.8 MB)
规模 3162 眼(论文口径 3,156)/ 448 列(论文口径 420 参数)/ 1751 患者号
标签 四簇:簇 1=264 / 簇 2=2595 / 簇 3=221 / 簇 4=82
主键 idEye(如 1OS(Left) / 1OD(Right))
设备(口径存照) 论文:CASIA SS-1000 OCT;Kaggle/CornOrb:Pentacam
许可 数据 CC0 1.0(Dataverse 权威)/ 文章 CC BY 4.0 / Kaggle 页 Unknown
抓取时点 2026-10-07
库内互链 refuge(62) / justraigs(746) / origa-light(763) / g1020(764) / rim-one(291) / drishti-gs(301) / octa-500(341) / odir(63)

附录 B:DAIMS 评估全表

DAIMS(Data Asset Interoperability Maturity Score)从五个维度对数据集作为 AI 资产的成熟度打分(1-10),综合加权给出评级。

维度 评分(1-10) 依据
D 可发现性 6 Dataverse DOI(10.7910/DVN/G2CRMO)+ Kaggle 页 + CornOrb 引用,可被检索;扣分:名称多版本(复现数据/分期数据集/Pentacam 数据集)易混淆,且无独立项目官网
A 可获取性 9 Dataverse 匿名直接下载两个 CSV(CC0,无需注册/署名)——AI-Ready 友好度最高档;扣分:Kaggle 渠道需账号,且再托管页信息缺失
I 可互操作 5 纯 CSV,通用格式、零专有封装;扣分:无标准化字段字典(448 列列义无官方说明)、无 schema.org、无数据字典,列名含大量设备特有缩写与后缀
M 元数据质量 5 Dataverse 元数据规范(标题/作者/DOI/许可/时间齐全);扣分:Kaggle 页零描述/零许可/零更新日期,448 列列义、四簇语义、患者结构全无官方说明,缺失清单也没有
S 可持续性 7 Harvard Dataverse + DOI 长期存档,样本 2018 年发布至今在位;扣分:单一平台、无修订机制,依赖机构维护,无镜像
综合评级 6.4/10(中等) 可获取性(9)突出,是典型"下载即用"型;但可互操作与元数据(5/5)是明显短板——列级元数据缺失是最大提升空间

评级说明:pentacam-kc 的"可获取"很强(匿名 + CC0),但元数据(尤其字段级)极弱——它把"能不能拿到"做到了满分,却几乎没解决"拿到后看不看得懂"。这决定了它目前更像"研究者的原始材料"而非"开箱即用的 AI-Ready 资产"。

附录 C:逐项证据链自证

本条目核心数字均经多源互证/实抓,逐项列出:

事实 PLOS 论文 Dataverse 实抓 Kaggle/CornOrb 结论
眼数 3,156 3162(实抓行数) Kaggle 3162 以实抓 3162 为准,论文 3156 存照
参数数 420 448 列(实抓) Kaggle “451 columns”(含索引) 以实抓 448 列为准
簇计数 256/2587/264/81 264/2595/221/82(labels 实抓) — 以实抓标签计数为准,论文口径存照
采集设备 CASIA SS-1000 OCT 列名无 Pentacam 专属项,实为 OSI/CSI/BFS/HOAs Kaggle/CornOrb 称 Pentacam 并列存照,实测偏 OCT
数据来源 12,242 眼(日本多中心) 未标注 — 以论文为准
许可(数据) — CC0 1.0 Kaggle “Unknown” 以 Dataverse CC0 为准
许可(文章) CC BY 4.0 — — 文章许可,不覆盖数据
两表对齐 — idEye 交集 3162(完全对齐) — 实抓确认

附录 D:数据获取决策树

你拿到 pentacam-kc 想做什么?
├── 复现无监督分期(PCA→流形→聚类)
│   ├── Dataverse 匿名下载两 CSV(CC0)
│   ├── 合并 on idEye,448 列做降维
│   └── 用 ESI 校验自己的聚类结果
├── 监督分期分类
│   ├── 声明"标签为聚类产物",逐类报告
│   ├── 患者号分组划分(防双眼泄漏)
│   └── 类别加权(簇 4 仅 82 眼)
├── 特征重要性/可解释性
│   ├── 聚合重复测量列(.1/.2/.3)
│   ├── 处理共线(PCA/正则化)
│   └── 剔除 Result/LabelNum 等语义未明列
├── 多模态(图 + 参数)
│   └── 本数据集无图 → 需另配图像数据(本数据集不提供配对图)
└── 商用/再分发
    └── 数据 CC0,可直接用;但标注数据源自 Dataverse(CC0 无署名义务)

附录 E:列族速查与指数登记

列族 代表列 含义
曲率 Ks / Kf / AvgK 陡/平/平均角膜曲率(D)
曲率轴 Ks.Axis / Kf.Axis 子午线轴向(度)
散光 CYL 柱镜度
非球面 AA / AA.6mm..Anterior. / AA.6mm..Posterior. 前/后表面非球面
偏心率 Ecc.3mm. ~ Ecc.15mm. 逐环带偏心率
顶点/位置 Apex / ApexK / Thinnest / LocationX / LocationY / Spherical / Regular 顶点、最薄点及坐标、球面/规则性
断层指数 OSI / CSI / DSI / KCI / KPI / SAI / LD8 / LD9 断层质量与圆锥筛查指数
最佳拟合球 BFS_* / BFS.1mm.~BFS.8mm. BFS 参数与逐环带值
像差 HOAs.S3456. / RMS_E.* / SR_H.* / SA.C40. / coma 高阶像差与 Zernike 类项
扩张指数 ESI.Anterior. / ESI.Posterior. / Score.Anterior. / Score.Posterior. 前后表面 ESI 与评分
可疑派生列 Result / LabelNum 语义未明,慎用

附录 F:患者级划分代码骨架(防泄漏)

import pandas as pd
from sklearn.model_selection import GroupKFold

# 合并两表(Dataverse 下载后)
X = pd.read_csv("dataset.csv")
y = pd.read_csv("labels.csv")            # 列名含粘连的 Data.PLOS_One.idEye
y.columns = ["idx", "idEye", "label"]

df = X.merge(y[["idEye", "label"]], on="idEye", how="inner")  # 交集 3162
assert len(df) == 3162, "合并后行数应为 3162"

# 从 idEye 解析患者号(形如 1OS(Left) → 1)
df["patient"] = df["idEye"].str.extract(r"^(\d+)")[0]
print("患者数:", df["patient"].nunique())   # 应为 1751

# 硬纪律:按患者分组,同一患者双眼必入同一折
gkf = GroupKFold(n_splits=5)
for fold, (tr, te) in enumerate(gkf.split(df, groups=df["patient"])):
    assert set(df.iloc[tr]["patient"]).isdisjoint(set(df.iloc[te]["patient"])), "患者级泄漏!"
    print(f"Fold {fold}: train={len(tr)} test={len(te)}")

# 反例(禁止):train_test_split(df, test_size=0.2) —— 按眼随机分,双眼拆开 = 泄漏

附录 G:许可证与引用注意事项

对象 许可 权威口径 下游义务
数据(两 CSV) CC0 1.0 Harvard Dataverse 无(可商用、可再分发、无需署名)
论文文章 CC BY 4.0 PLOS ONE 署名即可
GitHub 代码 Apache-2.0 imenbkr 仓库 代码许可,与数据无关
Kaggle 页 Unknown Kaggle 信息缺失,非许可不明,以 Dataverse CC0 为准

规范引用(同时登记数据与论文):

@misc{yousefi2018keratoconus_data,
  title  = {Replication Data for the "Keratoconus severity identification using unsupervised machine learning"},
  author = {Yousefi, Siamak and Yousefi, Ebrahim and Takahashi, Hidenori and Hayashi, Takahiko and
            Tampo, Hironobu and Inoda, Satoru and Arai, Yusuke and Asbell, Penny},
  year   = {2018},
  publisher = {Harvard Dataverse},
  version = {V1},
  doi    = {10.7910/DVN/G2CRMO}
}

@article{yousefi2018keratoconus,
  title   = {Keratoconus severity identification using unsupervised machine learning},
  author  = {Yousefi, Siamak and Yousefi, Ebrahim and Takahashi, Hidenori and Hayashi, Takahiko and
             Tampo, Hironobu and Inoda, Satoru and Arai, Yusuke and Asbell, Penny},
  journal = {PLOS ONE},
  volume  = {13},
  number  = {11},
  pages   = {e0205998},
  year    = {2018},
  doi     = {10.1371/journal.pone.0205998}
}

附录 H:坑点档案(坑 N 编号制)

以下是本条目在核实过程中遇到的真实陷阱,每条给出"一句话档案"与"触发场景",供转引者避坑。

坑 一句话档案 触发场景
坑 1 标签是聚类产物而非临床分期:clster_labels 由 PCA + 流形学习 + 密度聚类生成,簇号无语义,需借 ESI 反推严重度顺序 建模/指标解读/标签声明
坑 2 规模双口径:PLOS 论文写 3,156 眼,再托管 CSV 实为 3162 行(差 6) 规模陈述/复现对照
坑 3 参数数双口径:论文 420 参数 vs 实抓 448 列;且簇计数论文(256/2587/264/81)与标签(264/2595/221/82)逐类不等 数字抽取/文献转引
坑 4 模态/设备口径分叉:论文称 CASIA SS-1000 OCT,Kaggle 标题与 CornOrb 称 Pentacam;实抓列名(OSI/CSI/DSI/BFS/HOAs)偏 CASIA 体系,无 Pentacam 专属 ISV/IVA/RMin 设备声明/跨设备泛化
坑 5 Kaggle 页许可标 Unknown、零描述、无更新日期:易被误判为"许可不明、不敢用",实则数据在 Dataverse 是 CC0 许可合规/取数决策
坑 6 许可对象混淆:数据 CC0 / 文章 CC BY 4.0 / 代码 Apache-2.0 三者对象不同,不得互相套用;把 Apache-2.0 或 CC BY 当数据许可是常见错误 许可声明/商用评估
坑 7 labels.csv 表头粘连:列名 Data.PLOS_One.idEye 实为 Data.PLOS_One.id + Eye 两列信息粘连(也是数据溯源的证据);且标签列拼写为 clster_labels(少一 u) 解析/列重命名
坑 8 极端类别不平衡:簇 2 占 82.1%、簇 4 仅 2.6%(32:1);"全预测簇 2"即 82% 准确率 评估/指标选择
坑 9 无官方 split + 患者级泄漏风险:1751 患者号中 1411 人双眼齐备,按眼随机划分会造成双眼跨折泄漏 数据划分/性能报告
坑 10 疑似派生列语义未明:Result(0/1)与 LabelNum(0–17)无官方说明,误当特征可能引入标签泄漏 特征工程/列筛选
坑 11 448 列高冗余 + 重复测量:同族高度相关(15 个 Ecc、13 个 DSI/OSI),.1/.2/.3 为同次检查重复测量,非独立特征 共线性/特征重要性
坑 12 无图片、无纵向信息:纯参数无角膜地形图,单时点横断面无时间戳 → 不能做图像多模态、不能做进展预测 任务可行性判断

编号说明:坑 1–坑 12 均为本条目核实过程中实际记录的陷阱,其中坑 2、坑 3、坑 4、坑 5 属于跨来源口径分叉,转引时务必回查 Dataverse 原始页与 PLOS 论文原表。

附录 I:术语中英对照与缩写表

本条目涉及大量角膜/眼科与机器学习术语,首次出现处已标英文,这里再集中登记,便于检索:

缩写/术语 英文全称 中文 说明
KC Keratoconus 圆锥角膜 进行性角膜变薄前凸疾病
OD Oculus Dexter 右眼 idEye 中的 OD(Right)
OS Oculus Sinister 左眼 idEye 中的 OS(Left)
Ks Steep Keratometry 陡轴曲率 屈光度 D
Kf Flat Keratometry 平轴曲率 屈光度 D
AvgK Average Keratometry 平均曲率 Ks 与 Kf 的均值
CYL Cylinder 柱镜/散光 散光量
AA Asphericity (Anterior/Posterior) 非球面系数 前/后表面
Ecc Eccentricity 偏心率 逐环带
BFS Best Fit Sphere 最佳拟合球 断层拟合参考球
OSI Objective Scatter Index 客观散射指数 晶体/散射相关
CSI Corneal Surface Irregularity 角膜表面不规则指数 —
DSI Densitometry/Derived Surface Index 密度/派生表面指数 —
KCI — 圆锥候选指数 命名为设备内置
KPI — 圆锥进展指数 命名为设备内置
SAI Surface Asymmetry Index 表面不对称指数 —
HOAs Higher-Order Aberrations 高阶像差 含 S3456 项
RMS Root Mean Square 均方根 像差/高度偏差
ESI Ectasia Status Index 扩张状态指数 本数据集的核心客观校验量,0–100%
AK Amsler-Krumeich AK 分期 经典圆锥角膜四分期体系
ABCD ABCD Grading System ABCD 分级 Belin 提出的现代分期体系
forme fruste forme fruste keratoconus 顿挫型圆锥角膜 亚临床/单侧表现
CXL Corneal Cross-Linking 角膜交联 阻止 KC 进展的治疗
PCA Principal Component Analysis 主成分分析 线性降维
t-SNE t-distributed Stochastic Neighbor Embedding t-SNE 非线性降维/流形学习
— Density-based Clustering 密度聚类 DBSCAN/OPTICS 类
— Manifold Learning 流形学习 非线性降维

附录 J:两份文件字段速查对照

把两个 CSV 逐列对齐,方便直接建表:

文件 行数 列结构 备注
Dataset_Siamak_Yousefi_PLOS_One_2018.csv 3162 448 列 = 空索引列 + idEye + 446 参数列 6,725,570 B
Cluster_Labels_Siamak_Yousefi_PLOS_One_2018.csv 3162 3 列 = 空索引列 + Data.PLOS_One.idEye + clster_labels 77,698 B;CRLF 行尾

合并脚本骨架:

import pandas as pd

X = pd.read_csv("Dataset_Siamak_Yousefi_PLOS_One_2018.csv", index_col=0)  # 空首列为索引
y = pd.read_csv("Cluster_Labels_Siamak_Yousefi_PLOS_One_2018.csv", index_col=0)
# labels 表头粘连,重命名还原
y.columns = ["idEye", "clster_labels"]

df = X.merge(y, on="idEye", how="inner")
assert len(df) == 3162  # 交集完全对齐
print(df["clster_labels"].value_counts().sort_index())
# 期望:1→264, 2→2595, 3→221, 4→82

注:Dataset_...csv 的空首列在 index_col=0 后应作为行索引丢弃;若用 usecols 需显式排除。列名中的点号(.)在 pandas 里可通过 df["Ecc.9.0mm."] 直接取,但含空格的列名需注意引号。

附录 K:时间线一览

时间 事件
2018-09-10 Harvard Dataverse 数据存入(dateOfDeposit)
2018-10-13 Dataverse 正式发布 v1(publicationDate,CC0)
2018-11-06 PLOS ONE 论文在线(13(11):e0205998)
2022-06-10 GitHub imenbkr/Keratoconus-Stage-Detection 初始提交
2022-09-01 该 GitHub 仓库最后一次提交(随 Kaggle Notebook V21)
2025-09-15 CornOrb 论文访问该 Kaggle 数据集(列入 Background)
2026(预计) CornOrb 数据集发布(arXiv:2603.21245;Zenodo 10.5281/zenodo.17127265)
2026-10-07 本条目核验与成稿

附录 L:开放问题与待核清单

以下问题在本条目核验时未能确证,如实记录,供后续维护者追踪:

  1. 患者数官方口径:数据页未给患者数,本条目实抓 idEye 前缀得 1751,未见官方确认。
  2. Result / LabelNum 语义:两列含义未知,是否为辅助标签、计数或序号待查。
  3. 448 列逐列字典:无官方字段字典,本条目仅给出参数族归类与代表列,未逐列释义。
  4. 缺失值分布:未逐列统计空值,缺失情况待使用者自行核查。
  5. 「OCT vs Pentacam」根因:论文与 Kaggle/CornOrb 的表述冲突,究竟源于设备复测、参数转换还是命名沿用,无一手说明。
  6. 簇号↔严重度的稳健性:不同聚类参数下簇边界是否稳定,本条目未做重跑验证。
  7. Kaggle 页 451 vs 实抓 448 列:Kaggle 页显示 “451 columns”(含交互索引口径),与实抓 448 的 3 列差异未定位。
  8. 再托管者与原始作者的授权关系:Kaggle 上传者 Imen Bakir 与 Yousefi 团队是否存在明示授权,仅由列名 Data.PLOS_One.id 与数值一致推断。

附录 M:与库内外相关数据集的横向对照

为帮助读者定位「该用哪份角膜/眼科数据」,这里把 pentacam-kc 与几类近邻并列:

数据集 解剖 模态 标签来源 规模 与本条目的关系
pentacam-kc(本条) 角膜 表格参数 无监督聚类 + ESI 校验 3162 眼 × 448 参数 —
Al-Timemy 系列(Diagnostics 2023 等) 角膜 角膜地图图像 专家分类(正常/可疑/圆锥) 4113 图(1371 眼)+ 639 图 角膜域图像路线对照
CornOrb(2026) 角膜 Orbscan 3 地形图 + 表格 专家标注(正常/圆锥) 1454 眼(889/565) 角膜域多模态路线,Africa 首份
Castro de Luna(Mendeley) 角膜 表格(Pentacam 指数/像差) 分组标签 小/中 同为表格参数路线
refuge(62) 视网膜/视盘 眼底图 挑战赛标注 1200 图 青光眼结构量化,库内首要互链
papila 视网膜/视盘 眼底图 + 临床表 临床诊断 + 双专家分割 244 患者/488 眼 「结构+质控」方法论姊妹条目
octa-500(341) 视网膜 OCT/OCTA 图 人工标注 中大 同断层模态、不同解剖

一句话选型:要图像做深学习 → Al-Timemy / CornOrb;要几百维可解释参数 + 无监督分期样本 → pentacam-kc;要青光眼结构分割 → refuge(62)。

附录 N:建模检查清单(Checklist)

把本条目所有坑点转成一张可勾选的开工清单:

取数与许可

  • [ ] 从 Dataverse(DOI 10.7910/DVN/G2CRMO)取数,非只从 Kaggle;
  • [ ] 确认数据许可为 CC0(不需要署名,但建议标注来源);
  • [ ] labels.csv 用能处理 CRLF 的读法(newline='' 或 pandas)。

合并与列处理

  • [ ] 合并 dataset.csv ⊕ labels.csv on idEye,断言 3162 行;
  • [ ] 重命名粘连列 Data.PLOS_One.idEye → Eye;
  • [ ] 剔除空索引列;
  • [ ] 甄别 Result / LabelNum,确认无标签泄漏后再决定去留;
  • [ ] 聚合 .1/.2/.3 重复测量列(均值/中位数/多视图);
  • [ ] 处理 448 列共线性(PCA / 正则化)。

标签处理

  • [ ] 声明标签为无监督聚类产物;
  • [ ] 用 ESI.Anterior./ESI.Posterior. 校验簇语义,不硬编码簇号顺序;
  • [ ] 若做有序任务,先证明簇号的序数性,再假设。

划分与评估

  • [ ] 按患者号分组划分(GroupKFold),断言双眼同折;
  • [ ] 逐类报告指标(簇 3、簇 4 单独给区间);
  • [ ] 类别加权/重采样应对 32:1 不平衡;
  • [ ] 不与 PLOS 论文对比(论文无监督数字);
  • [ ] 报告时写明划分方案、随机种子、是否分组。

边界声明

  • [ ] 明确本数据集无图(不能做图像多模态);
  • [ ] 明确单时点横断面(不能做进展预测);
  • [ ] 明确任何模型非医疗器械,不得用于临床诊断。

附录 O:一句话使用口诀

取数走 Dataverse,标签当参考不当真;
合并认 idEye,患者分组防泄漏;
不平衡要逐类报,无监督标签须声明;
Pentacam 还是 OCT,引用之前先存照;
免费拿到的数据,未必是免维护的数据。

附录 P:关键参数与指数的物理含义(背景知识)

本条目反复提到若干角膜参数,这里给出它们的物理含义,帮助非眼科背景的读者建立直觉(数值单位为常见惯例,具体以设备手册为准):

参数 单位 临床直觉
Ks(陡轴曲率) 屈光度 D 角膜最陡子午线的曲率;圆锥角膜因局部前凸,Ks 会升高
Kf(平轴曲率) D 最平子午线曲率;与 Ks 之差反映散光
AvgK D 平均曲率,常作为"角膜整体陡不陡"的粗指标
CYL(柱镜) D 散光量;KC 患者多为不规则高散光
AA(非球面) 无量纲 角膜从中央到周边变平/变陡的趋势;KC 常更负
Ecc(偏心率) 无量纲 逐环带的非球面性度量
Thinnest(最薄点) µm 角膜最薄处厚度;KC 患者中央/旁中央变薄是核心病理
Apex(顶点) — 曲率最大点的位置;KC 常偏移
BFS(最佳拟合球) mm/D 拟合参考球,用于测高度偏心等
OSI(客观散射指数) % 眼内散射程度,与晶体/角膜透明度相关
ESI(扩张状态指数) % 本数据集的核心客观标尺:设备给出的角膜扩张/圆锥风险指数

为什么 Thinnest 与 Ks 最重要:圆锥角膜的两大病理特征是变薄(Thinnest 下降)与前凸(Ks 升高)。这也是为什么即便标签是聚类产物,其四簇仍能与 ESI 的临床分档对应——因为聚类用的 420 维参数里就包含这些关键病理量。

附录 Q:本条目写作口径与存照总表

把本条目全文出现的双口径/多口径冲突汇总到一张表,供快速核对:

编号 项目 口径 A(权威/实抓) 口径 B(对照) 本条目处理
冲突 A 眼数 实抓 3162 行 论文 3,156 眼 以实抓为准,论文存照
冲突 B 参数数 实抓 448 列 论文 420 参数 以实抓为准
冲突 C 簇计数 labels 实抓 264/2595/221/82 论文 256/2587/264/81 逐类存照,以标签为准
冲突 D 许可 Dataverse CC0 1.0 Kaggle Unknown/文章 CC BY 4.0/代码 Apache-2.0 数据以 CC0 为准
冲突 E 设备 论文 CASIA SS-1000 OCT Kaggle/CornOrb Pentacam 并列存照,实测偏 OCT
冲突 F Kaggle 列数 实抓 448 列 Kaggle 页 “451 columns” 以实抓为准
冲突 G 医生分期 无(标签为聚类) 论文四簇语义靠 ESI 反推 明确标注非金标准

一句总结:pentacam-kc 的每一个"硬数字"几乎都有两个版本——这正是它作为"复现包 + 再托管副本"的典型特征。使用者必须养成"回查 Dataverse 原始页与 PLOS 论文"的习惯,任何单一来源的转述都可能是口径 B。


尾注与核验声明

  • 核验时点:2026-10-07(UTC+8)。
  • 核验多源:① Harvard Dataverse 元数据 API + 两个 CSV 实抓(DOI 10.7910/DVN/G2CRMO,datafile/3218930=dataset.csv、datafile/3218929=labels.csv)② PLOS ONE 论文全文(Europe PMC REST,PMC6219768)③ Kaggle 数据集页(imenbakir/keratoconus-stage-detection)④ 第三方生态佐证(CornOrb arXiv:2603.21245;Al-Timemy Diagnostics 2023;Liu et al. ARVO 2021)。
  • 核心实抓数字(3162 眼 / 448 列 / 四簇 264-2595-221-82 / 两表交集 3162 / 1751 患者号)均来自本条目对两 CSV 的直接解析;论文口径(3156 眼 / 420 参数 / 簇计数)并列存照。
  • 本条目不作临床建议:pentacam-kc 及其衍生的任何模型均非医疗器械,不得未经监管审批用于临床诊断。
  • 维护触发点:① Dataverse 若发布修订版或更新许可 → 修订 §6 与附录 B/G;② Kaggle 页若补上描述/许可 → 修订 §9.8 与坑 5;③ 若官方给出字段字典 → 补写附录 E 语义并升 DAIMS I/M 分;④ 若库内新增其他角膜/圆锥角膜条目 → 回填 §8 家族导航与 schema_org relatedLink。
  • 接管轨迹与并发存照:本条目由代理 agent-d-pentacamkc-v2 以接管模式完成——前实例 agent-d-pentacamkc 于 2026-10-04T10:15 启动后中止,仅留 .parts_agent-d-pentacamkc_1791080148_2004144/probe.txt 探针与未落盘的 0 字节 FACTS,本实例覆写锁后从零执行。执行中发现私有区 .parts_agent-d-pentacamkc-v2_1791342925_138318/ 内存在一份同名前缀实例遗留的 part4.md(§6–§8,时间戳 11:27);经 10 秒 md5 稳定性采样(part1–4 两次 md5 一致,无变动)确认无活跃并发写手,判为已退出的同名实例残留,按 R008 教训以现存内容为锚点做定向 Edit 增补(校正章节交叉引用与论文日期)后合入,未重写其主体。本实例 slug 查重为 0 命中,无撞库。
  • 条目责任:本条目为千方病案医数集(qianfanghub.com)AI-Ready Wikipedia 条目,代理 agent-d-pentacamkc-v2,slug pentacam-kc。所有事实以 Harvard Dataverse 原始页、PLOS ONE 论文与实抓 CSV 为权威口径,Kaggle 再托管与第三方仅作生态佐证。


相关数据集导航

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

  • papila — 共享标签:眼科影像 / 图像分类 / 医学图像分割
  • g1020 — 共享标签:眼科影像 / 图像分类 / 医学图像分割
  • oimhs — 共享标签:眼科影像 / 图像分类 / 医学图像分割
  • cornorb — 共享标签:眼科影像 / 图像分类
  • palm — 共享标签:眼科影像 / 图像分类 / 医学图像分割
  • octid — 共享标签:眼科影像 / 图像分类 / 医学图像分割
  • hvdropdb — 共享标签:眼科影像 / 图像分类 / 医学图像分割
  • corn-nerve — 共享标签:眼科影像 / 图像分类 / 医学图像分割
  • idrid — 共享标签:眼科影像 / 医学图像分割
  • fgadr — 共享标签:眼科影像 / 图像分类 / 医学图像分割

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

返回 AI-Ready 数据集