[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-koaning--doubtlab":3,"tool-koaning--doubtlab":64},[4,23,32,40,48,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":22},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,2,"2026-04-05T10:45:23",[13,14,15,16,17,18,19,20,21],"图像","数据工具","视频","插件","Agent","其他","语言模型","开发框架","音频","ready",{"id":24,"name":25,"github_repo":26,"description_zh":27,"stars":28,"difficulty_score":29,"last_commit_at":30,"category_tags":31,"status":22},2234,"scikit-learn","scikit-learn\u002Fscikit-learn","scikit-learn 是一个基于 Python 构建的开源机器学习库，依托于 SciPy、NumPy 等科学计算生态，旨在让机器学习变得简单高效。它提供了一套统一且简洁的接口，涵盖了从数据预处理、特征工程到模型训练、评估及选择的全流程工具，内置了包括线性回归、支持向量机、随机森林、聚类等在内的丰富经典算法。\n\n对于希望快速验证想法或构建原型的数据科学家、研究人员以及 Python 开发者而言，scikit-learn 是不可或缺的基础设施。它有效解决了机器学习入门门槛高、算法实现复杂以及不同模型间调用方式不统一的痛点，让用户无需重复造轮子，只需几行代码即可调用成熟的算法解决分类、回归、聚类等实际问题。\n\n其核心技术亮点在于高度一致的 API 设计风格，所有估算器（Estimator）均遵循相同的调用逻辑，极大地降低了学习成本并提升了代码的可读性与可维护性。此外，它还提供了强大的模型选择与评估工具，如交叉验证和网格搜索，帮助用户系统地优化模型性能。作为一个由全球志愿者共同维护的成熟项目，scikit-learn 以其稳定性、详尽的文档和活跃的社区支持，成为连接理论学习与工业级应用的最",65628,1,"2026-04-05T10:10:46",[20,18,14],{"id":33,"name":34,"github_repo":35,"description_zh":36,"stars":37,"difficulty_score":10,"last_commit_at":38,"category_tags":39,"status":22},3364,"keras","keras-team\u002Fkeras","Keras 是一个专为人类设计的深度学习框架，旨在让构建和训练神经网络变得简单直观。它解决了开发者在不同深度学习后端之间切换困难、模型开发效率低以及难以兼顾调试便捷性与运行性能的痛点。\n\n无论是刚入门的学生、专注算法的研究人员，还是需要快速落地产品的工程师，都能通过 Keras 轻松上手。它支持计算机视觉、自然语言处理、音频分析及时间序列预测等多种任务。\n\nKeras 3 的核心亮点在于其独特的“多后端”架构。用户只需编写一套代码，即可灵活选择 TensorFlow、JAX、PyTorch 或 OpenVINO 作为底层运行引擎。这一特性不仅保留了 Keras 一贯的高层易用性，还允许开发者根据需求自由选择：利用 JAX 或 PyTorch 的即时执行模式进行高效调试，或切换至速度最快的后端以获得最高 350% 的性能提升。此外，Keras 具备强大的扩展能力，能无缝从本地笔记本电脑扩展至大规模 GPU 或 TPU 集群，是连接原型开发与生产部署的理想桥梁。",63927,"2026-04-04T15:24:37",[20,14,18],{"id":41,"name":42,"github_repo":43,"description_zh":44,"stars":45,"difficulty_score":10,"last_commit_at":46,"category_tags":47,"status":22},2403,"crawl4ai","unclecode\u002Fcrawl4ai","Crawl4AI 是一款专为大语言模型（LLM）设计的开源网络爬虫与数据提取工具。它的核心使命是将纷繁复杂的网页内容转化为干净、结构化的 Markdown 格式，直接服务于检索增强生成（RAG）、智能体构建及各类数据管道，让 AI 能更轻松地“读懂”互联网。\n\n传统爬虫往往面临反爬机制拦截、动态内容加载困难以及输出格式杂乱等痛点，导致后续数据处理成本高昂。Crawl4AI 通过内置自动化的三级反机器人检测、代理升级策略以及对 Shadow DOM 的深度支持，有效突破了这些障碍。它能智能移除同意弹窗，处理深层链接，并具备长任务崩溃恢复能力，确保数据采集的稳定与高效。\n\n这款工具特别适合开发者、AI 研究人员及数据工程师使用。无论是需要为本地模型构建知识库，还是搭建大规模自动化信息采集流程，Crawl4AI 都提供了极高的可控性与灵活性。作为 GitHub 上备受瞩目的开源项目，它完全免费开放，无需繁琐的注册或昂贵的 API 费用，让用户能够专注于数据价值本身而非采集难题。",63242,"2026-04-02T22:29:19",[14,17],{"id":49,"name":50,"github_repo":51,"description_zh":52,"stars":53,"difficulty_score":10,"last_commit_at":54,"category_tags":55,"status":22},193,"meilisearch","meilisearch\u002Fmeilisearch","Meilisearch 是一个开源的极速搜索服务，专为现代应用和网站打造，开箱即用。它能帮助开发者快速集成高质量的搜索功能，无需复杂的配置或额外的数据预处理。传统搜索方案往往需要大量调优才能实现准确结果，而 Meilisearch 内置了拼写容错、同义词识别、即时响应等实用特性，并支持 AI 驱动的混合搜索（结合关键词与语义理解），显著提升用户查找信息的体验。\n\nMeilisearch 特别适合 Web 开发者、产品团队或初创公司使用，尤其适用于需要快速上线搜索功能的场景，如电商网站、内容平台或 SaaS 应用。它提供简洁的 RESTful API 和多种语言 SDK，部署简单，资源占用低，本地开发或生产环境均可轻松运行。对于希望在不依赖大型云服务的前提下，为用户提供流畅、智能搜索体验的团队来说，Meilisearch 是一个高效且友好的选择。",56964,"2026-04-05T08:19:14",[13,17,14,20,16,18],{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":10,"last_commit_at":62,"category_tags":63,"status":22},223,"Made-With-ML","GokuMohandas\u002FMade-With-ML","Made-With-ML 是一个面向实战的开源项目，旨在帮助开发者系统掌握从设计、开发到部署和迭代生产级机器学习应用的完整流程。它解决了许多人在学习机器学习时“会训练模型但不会上线”的痛点，强调将软件工程最佳实践与 ML 技术结合，构建可靠、可维护的端到端系统。\n\n该项目特别适合三类人群：一是希望将模型真正落地的开发者（包括软件工程师、数据科学家）；二是刚毕业、想补齐工业界所需技能的学生；三是需要理解技术边界以更好推动产品的技术管理者或产品经理。\n\nMade-With-ML 的亮点在于注重第一性原理讲解，避免盲目调包；同时覆盖 MLOps 关键环节（如实验跟踪、模型测试、服务部署、CI\u002FCD 等），并支持在 Python 生态内平滑扩展训练与推理任务，无需切换语言或复杂基础设施。课程内容结构清晰，配有详细代码示例和视频导览，兼顾理论深度与工程实用性。",47108,"2026-04-05T10:42:55",[19,18,14,16,20],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":69,"readme_en":70,"readme_zh":71,"quickstart_zh":72,"use_case_zh":73,"hero_image_url":74,"owner_login":75,"owner_name":76,"owner_avatar_url":77,"owner_bio":78,"owner_company":79,"owner_location":80,"owner_email":81,"owner_twitter":82,"owner_website":83,"owner_url":84,"languages":85,"stars":94,"forks":95,"last_commit_at":96,"license":97,"difficulty_score":29,"env_os":98,"env_gpu":98,"env_ram":98,"env_deps":99,"category_tags":104,"github_topics":81,"view_count":10,"oss_zip_url":81,"oss_zip_packed_at":81,"status":22,"created_at":105,"updated_at":106,"faqs":107,"releases":138},3801,"koaning\u002Fdoubtlab","doubtlab","Doubt your data, find bad labels. ","doubtlab 是一个专为数据科学家和机器学习开发者设计的开源工具，旨在帮助用户快速识别数据集中的错误标签或噪声数据。在投入大量时间进行模型调优之前，先用 doubtlab 检查数据质量，往往能事半功倍。\n\n该工具的核心理念是为每一行数据定义“怀疑理由”。通过内置的多种检测逻辑，doubtlab 能自动筛选出值得人工复核的样本，并生成排序列表。其技术亮点在于提供了丰富的预置“理由”模块：分类任务中，它能捕捉模型预测置信度低、预测结果与标签不符、或多模型意见不一致的情况；回归任务中，它能基于绝对误差或相对误差发现异常；此外，还支持基于离群点检测及集成 cleanlab 算法的高级过滤方式。用户只需几行代码，即可将这些逻辑组合成流水线，直观地定位数据问题。\n\n无论是正在清洗数据的研究人员，还是希望提升模型鲁棒性的工程师，doubtlab 都能以轻量、灵活的方式融入现有工作流，让“质疑数据”变得简单高效，从而避免在低质量数据上浪费计算资源。","\u003C!--- BADGES: START --->\n[![GitHub - License](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fkoaning\u002Fdoubtlab?logo=github&style=flat&color=green)][#github-license]\n[![PyPI - Python Version](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fpyversions\u002Fdoubtlab?logo=pypi&style=flat&color=blue)][#pypi-package]\n[![PyPI - Package Version](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fdoubtlab?logo=pypi&style=flat&color=orange)][#pypi-package]\n[![Conda - Platform](https:\u002F\u002Fimg.shields.io\u002Fconda\u002Fpn\u002Fconda-forge\u002Fdoubtlab?logo=anaconda&style=flat)][#conda-forge-package]\n[![Conda (channel only)](https:\u002F\u002Fimg.shields.io\u002Fconda\u002Fvn\u002Fconda-forge\u002Fdoubtlab?logo=anaconda&style=flat&color=orange)][#conda-forge-package]\n[![Docs - GitHub.io](https:\u002F\u002Fimg.shields.io\u002Fstatic\u002Fv1?logo=github&style=flat&color=pink&label=docs&message=doubtlab)][#docs-package]\n\n\n[#github-license]: https:\u002F\u002Fgithub.com\u002Fkoaning\u002Fdoubtlab\u002Fblob\u002Fmain\u002FLICENSE\n[#pypi-package]: https:\u002F\u002Fpypi.org\u002Fproject\u002Fdoubtlab\u002F\n[#conda-forge-package]: https:\u002F\u002Fanaconda.org\u002Fconda-forge\u002Fdoubtlab\n[#docs-package]: https:\u002F\u002Fkoaning.github.io\u002Fdoubtlab\u002F\n\u003C!--- BADGES: END --->\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fkoaning_doubtlab_readme_afb1f8875308.png\" width=140 height=140 align=\"right\">\n\n### doubtlab\n\n> A lab for bad labels. Learn more [here](https:\u002F\u002Fcalmcode.io\u002Fbad-labels\u002Fintroduction.html).\n\nThis repository contains general tricks that may help you find bad, or noisy, labels in your dataset. The hope is that this repository makes it easier for folks to quickly check their own datasets before they invest too much time and compute on gridsearch.\n\n## Install\n\nYou can install the tool via `pip` or `conda`.\n\n**Install with pip**\n\n```\npython -m pip install doubtlab\n```\n\n**Install with conda**\n\n```\nconda install -c conda-forge doubtlab\n```\n\n## Quickstart\n\nDoubtlab allows you to define \"reasons\" for a row of data to deserve another look. These reasons can form a pipeline which can be used to retreive a sorted list of examples worth checking again.\n\n```python\nfrom sklearn.datasets import load_iris\nfrom sklearn.linear_model import LogisticRegression\n\nfrom doubtlab.ensemble import DoubtEnsemble\nfrom doubtlab.reason import ProbaReason, WrongPredictionReason\n\n# Let's say we have some dataset\u002Fmodel already\nX, y = load_iris(return_X_y=True)\nmodel = LogisticRegression(max_iter=1_000)\nmodel.fit(X, y)\n\n# Next we can add reasons for doubt. In this case we're saying\n# that examples deserve another look if the associated proba values\n# are low or if the model output doesn't match the associated label.\nreasons = {\n    'proba': ProbaReason(model=model),\n    'wrong_pred': WrongPredictionReason(model=model)\n}\n\n# Pass these reasons to a doubtlab instance.\ndoubt = DoubtEnsemble(**reasons)\n\n# Get the ordered indices of examples worth checking again\nindices = doubt.get_indices(X, y)\n# Get dataframe with \"reason\"-ing behind the sorting\npredicates = doubt.get_predicates(X, y)\n```\n\n## Features\n\nThe library implemented many \"reasons\" for doubt.\n\n### General Reasons\n\n- `RandomReason`: assign doubt randomly, just for sure\n- `OutlierReason`: assign doubt when the model declares a row an outlier\n\n### Classification Reasons\n\n- `ProbaReason`: assign doubt when a models' confidence-values are low for any label\n- `WrongPredictionReason`: assign doubt when a model cannot predict the listed label\n- `ShortConfidenceReason`: assign doubt when the correct label gains too little confidence\n- `LongConfidenceReason`: assign doubt when a wrong label gains too much confidence\n- `DisagreeReason`: assign doubt when two models disagree on a prediction\n- `CleanlabReason`: assign doubt according to [cleanlab](https:\u002F\u002Fgithub.com\u002Fcleanlab\u002Fcleanlab)\n- `MarginConfidenceReason`: assign doubt when there's a small difference between the top two class confidences\n\n### Regression Reasons\n\n- `AbsoluteDifferenceReason`: assign doubt when the absolute difference is too high\n- `RelativeDifferenceReason`: assign doubt when the relative difference is too high\n- `StandardizedErrorReason`: assign doubt when the absolute standardized residual is too high\n\n## Feedback\n\nIt is early days for the project. The project should be plenty useful as-is, but we\nprefer to be honest. Feedback and anecdotes are very welcome!\n\n## Related Projects\n\n- The [cleanlab](https:\u002F\u002Fgithub.com\u002Fcleanlab\u002Fcleanlab) project was an inspiration for this one. They have a great heuristic for bad label detection but I wanted to have a library that implements many. Be sure to check out their work on the [labelerrors.com](https:\u002F\u002Flabelerrors.com) project.\n- My former employer, [Rasa](https:\u002F\u002Frasa.com\u002F), has always had a focus on data quality. Some of that attitude is bound to have seeped in here. Be sure to check the [Conversation Driven Development](https:\u002F\u002Frasa.com\u002Fdocs\u002Frasa\u002Fconversation-driven-development\u002F) approach and [Rasa X](https:\u002F\u002Frasa.com\u002Fdocs\u002Frasa-x\u002F) if you're working on virtual assistants.\n- My current employer, [Explosion](https:\u002F\u002Fexplosion.ai\u002F), has a neat labelling tool called [Prodigy](https:\u002F\u002Fprodi.gy). I'm currently investigating how tools like doubtlab might lead to better labels when combined with this (very like-able) annotation tool. \n","\u003C!--- 徽章：开始 --->\n[![GitHub - 许可证](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fkoaning\u002Fdoubtlab?logo=github&style=flat&color=green)][#github-license]\n[![PyPI - Python 版本](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fpyversions\u002Fdoubtlab?logo=pypi&style=flat&color=blue)][#pypi-package]\n[![PyPI - 包版本](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fdoubtlab?logo=pypi&style=flat&color=orange)][#pypi-package]\n[![Conda - 平台](https:\u002F\u002Fimg.shields.io\u002Fconda\u002Fpn\u002Fconda-forge\u002Fdoubtlab?logo=anaconda&style=flat)][#conda-forge-package]\n[![Conda（仅频道）](https:\u002F\u002Fimg.shields.io\u002Fconda\u002Fvn\u002Fconda-forge\u002Fdoubtlab?logo=anaconda&style=flat&color=orange)][#conda-forge-package]\n[![文档 - GitHub.io](https:\u002F\u002Fimg.shields.io\u002Fstatic\u002Fv1?logo=github&style=flat&color=pink&label=docs&message=doubtlab)][#docs-package]\n\n\n[#github-license]: https:\u002F\u002Fgithub.com\u002Fkoaning\u002Fdoubtlab\u002Fblob\u002Fmain\u002FLICENSE\n[#pypi-package]: https:\u002F\u002Fpypi.org\u002Fproject\u002Fdoubtlab\u002F\n[#conda-forge-package]: https:\u002F\u002Fanaconda.org\u002Fconda-forge\u002Fdoubtlab\n[#docs-package]: https:\u002F\u002Fkoaning.github.io\u002Fdoubtlab\u002F\n\u003C!--- 徽章：结束 --->\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fkoaning_doubtlab_readme_afb1f8875308.png\" width=140 height=140 align=\"right\">\n\n### doubtlab\n\n> 一个用于处理不良标签的实验室。更多信息请参见 [这里](https:\u002F\u002Fcalmcode.io\u002Fbad-labels\u002Fintroduction.html)。\n\n该仓库包含一些通用技巧，可以帮助您在数据集中找到不良或有噪声的标签。希望这个仓库能让大家在投入大量时间和计算资源进行网格搜索之前，更轻松地检查自己的数据集。\n\n## 安装\n\n您可以使用 `pip` 或 `conda` 来安装此工具。\n\n**使用 pip 安装**\n\n```\npython -m pip install doubtlab\n```\n\n**使用 conda 安装**\n\n```\nconda install -c conda-forge doubtlab\n```\n\n## 快速入门\n\nDoubtlab 允许您定义某些“理由”，以决定某一行数据是否值得进一步检查。这些理由可以组成一个管道，用于检索需要再次检查的示例的排序列表。\n\n```python\nfrom sklearn.datasets import load_iris\nfrom sklearn.linear_model import LogisticRegression\n\nfrom doubtlab.ensemble import DoubtEnsemble\nfrom doubtlab.reason import ProbaReason, WrongPredictionReason\n\n# 假设我们已经有了数据集和模型\nX, y = load_iris(return_X_y=True)\nmodel = LogisticRegression(max_iter=1_000)\nmodel.fit(X, y)\n\n# 接下来我们可以添加怀疑的理由。在这里，我们说如果某个样本的预测概率值较低，或者模型的输出与实际标签不符，则该样本值得再次检查。\nreasons = {\n    'proba': ProbaReason(model=model),\n    'wrong_pred': WrongPredictionReason(model=model)\n}\n\n# 将这些理由传递给 Doubtlab 实例。\ndoubt = DoubtEnsemble(**reasons)\n\n# 获取值得再次检查的示例的有序索引\nindices = doubt.get_indices(X, y)\n# 获取带有排序依据的 DataFrame\npredicates = doubt.get_predicates(X, y)\n```\n\n## 功能\n\n该库实现了许多用于怀疑的理由。\n\n### 通用理由\n\n- `RandomReason`: 随机分配怀疑，以防万一\n- `OutlierReason`: 当模型将某一行数据判定为异常时，分配怀疑\n\n### 分类理由\n\n- `ProbaReason`: 当模型对任何标签的置信度较低时，分配怀疑\n- `WrongPredictionReason`: 当模型无法预测列出的标签时，分配怀疑\n- `ShortConfidenceReason`: 当正确标签获得的置信度过低时，分配怀疑\n- `LongConfidenceReason`: 当错误标签获得的置信度过高时，分配怀疑\n- `DisagreeReason`: 当两个模型对预测结果不一致时，分配怀疑\n- `CleanlabReason`: 根据 [cleanlab](https:\u002F\u002Fgithub.com\u002Fcleanlab\u002Fcleanlab) 的方法分配怀疑\n- `MarginConfidenceReason`: 当前两个类别置信度之间的差距较小时，分配怀疑\n\n### 回归理由\n\n- `AbsoluteDifferenceReason`: 当绝对差异过大时，分配怀疑\n- `RelativeDifferenceReason`: 当相对差异过大时，分配怀疑\n- `StandardizedErrorReason`: 当标准化残差的绝对值过大时，分配怀疑\n\n## 反馈\n\n该项目尚处于早期阶段。尽管目前的版本已经非常实用，但我们仍希望保持诚实。欢迎提供反馈和经验分享！\n\n## 相关项目\n\n- [cleanlab](https:\u002F\u002Fgithub.com\u002Fcleanlab\u002Fcleanlab) 项目是本项目的灵感来源。他们有一个非常好的检测不良标签的启发式方法，但我希望有一个能够实现多种方法的库。请务必查看他们在 [labelerrors.com](https:\u002F\u002Flabelerrors.com) 项目上的工作。\n- 我的前雇主 [Rasa](https:\u002F\u002Frasa.com\u002F) 一直注重数据质量。这种态度无疑也渗透到了本项目中。如果您正在开发虚拟助手，请务必了解 [对话驱动开发](https:\u002F\u002Frasa.com\u002Fdocs\u002Frasa\u002Fconversation-driven-development\u002F) 方法以及 [Rasa X](https:\u002F\u002Frasa.com\u002Fdocs\u002Frasa-x\u002F)。\n- 我目前的雇主 [Explosion](https:\u002F\u002Fexplosion.ai\u002F) 拥有一款名为 [Prodigy](https:\u002F\u002Fprodi.gy) 的优秀标注工具。我目前正在研究像 doubtlab 这样的工具如何与这款非常优秀的标注工具结合使用，从而生成更好的标签。","# doubtlab 快速上手指南\n\n`doubtlab` 是一个用于检测数据集中“坏标签”（错误标注或噪声标签）的 Python 工具库。它通过定义多种“怀疑理由”（Reasons），帮助开发者在投入大量算力进行模型调优前，快速筛选出值得复查的数据样本。\n\n## 环境准备\n\n- **操作系统**：Linux、macOS 或 Windows\n- **Python 版本**：支持 Python 3.7 及以上版本\n- **前置依赖**：\n  - `scikit-learn`：用于构建和评估机器学习模型\n  - `pandas` \u002F `numpy`：用于数据处理（内部自动处理）\n\n> **注意**：国内用户若遇到网络延迟，建议在安装时指定国内镜像源（如清华源或阿里源）。\n\n## 安装步骤\n\n你可以选择通过 `pip` 或 `conda` 进行安装。\n\n### 方式一：使用 pip 安装（推荐）\n\n使用国内镜像源加速安装：\n\n```bash\npython -m pip install doubtlab -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n或使用官方源：\n\n```bash\npython -m pip install doubtlab\n```\n\n### 方式二：使用 conda 安装\n\n```bash\nconda install -c conda-forge doubtlab\n```\n\n## 基本使用\n\n以下示例演示了如何加载数据集、训练模型，并利用 `doubtlab` 找出可能存在标签错误的样本。\n\n### 1. 导入依赖与数据\n\n```python\nfrom sklearn.datasets import load_iris\nfrom sklearn.linear_model import LogisticRegression\n\nfrom doubtlab.ensemble import DoubtEnsemble\nfrom doubtlab.reason import ProbaReason, WrongPredictionReason\n\n# 加载示例数据集\nX, y = load_iris(return_X_y=True)\n\n# 训练一个基础模型\nmodel = LogisticRegression(max_iter=1_000)\nmodel.fit(X, y)\n```\n\n### 2. 定义“怀疑理由”\n\n我们可以组合多种规则来标记可疑数据。例如：\n- **ProbaReason**：模型预测置信度低时。\n- **WrongPredictionReason**：模型预测结果与真实标签不一致时。\n\n```python\nreasons = {\n    'proba': ProbaReason(model=model),\n    'wrong_pred': WrongPredictionReason(model=model)\n}\n```\n\n### 3. 创建检测器并获取结果\n\n将定义好的理由传入 `DoubtEnsemble`，即可生成按可疑程度排序的索引列表。\n\n```python\n# 初始化怀疑集成器\ndoubt = DoubtEnsemble(**reasons)\n\n# 获取值得复查的样本索引（按可疑度排序）\nindices = doubt.get_indices(X, y)\n\n# 获取详细的判断依据数据框\npredicates = doubt.get_predicates(X, y)\n\n# 打印前 5 个最可疑的样本索引\nprint(indices[:5])\n```\n\n通过 `indices` 你可以定位到具体需要人工复核的数据行，从而提升数据集质量。","某电商公司的数据科学团队正在构建一个基于用户评论的情感分析模型，以自动识别产品差评，但训练数据中包含大量由众包标注产生的错误标签。\n\n### 没有 doubtlab 时\n- 团队只能盲目信任原始数据集，花费数周时间进行超参数网格搜索，却发现模型准确率始终无法突破瓶颈。\n- 人工排查脏数据如同大海捞针，标注人员难以从十万级评论中快速定位那些“标错”或“模棱两可”的样本。\n- 模型将大量精力浪费在拟合错误的标签上，导致对真实业务场景中的负面反馈识别率低下，误报频发。\n- 缺乏量化依据来解释模型为何在某些样本上表现糟糕，调试过程主要依靠猜测和经验。\n\n### 使用 doubtlab 后\n- 团队利用 `WrongPredictionReason` 和 `ProbaReason` 快速构建了怀疑管道，自动筛选出模型预测与标签不符或置信度极低的可疑样本。\n- 通过 `get_indices` 生成的排序列表，标注团队优先复核了前 5% 最可疑的数据，仅用半天就修正了数千条错误标签。\n- 重新训练后的模型不再被噪声数据干扰，在测试集上的 F1 分数显著提升，能更精准地捕捉真实的用户不满。\n- `get_predicates` 提供了每个样本被标记为“可疑”的具体理由（如置信度低、预测冲突），让数据清洗过程透明且可解释。\n\ndoubtlab 的核心价值在于将模糊的数据质量直觉转化为可执行的代码逻辑，帮助团队在投入巨大算力前低成本地“质疑”并净化数据。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fkoaning_doubtlab_f5c5266b.png","koaning","vincent d warmerdam ","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fkoaning_4705094b.jpg","Solving problems involving data. AskMeAnything[tm]. ","@marimo-team","Amsterdam",null,"fishnets88","https:\u002F\u002Fkoaning.io","https:\u002F\u002Fgithub.com\u002Fkoaning",[86,90],{"name":87,"color":88,"percentage":89},"Python","#3572A5",98.2,{"name":91,"color":92,"percentage":93},"Makefile","#427819",1.8,516,18,"2026-03-08T05:49:34","MIT","未说明",{"notes":100,"python":101,"dependencies":102},"该工具主要用于检测数据集中的错误标签，支持通过 pip 或 conda 安装。核心功能依赖于 scikit-learn 模型，部分功能可选依赖 cleanlab 库。README 中未提及具体的操作系统、GPU 或内存硬性要求，通常取决于用户所加载的数据集大小及使用的底层机器学习模型。","3.8+",[25,103],"cleanlab",[14],"2026-03-27T02:49:30.150509","2026-04-06T05:16:46.139117",[108,113,118,123,128,133],{"id":109,"question_zh":110,"answer_zh":111,"source_url":112},17408,"如何基于熵（Entropy）来定义怀疑理由？","可以通过计算模型预测概率的熵来衡量不确定性：低熵表示模型非常“自信”，高熵（如均匀分布）表示高度不确定。虽然该功能已在 v0.24 中通过 PR #24 修复并加入，但在多分类场景下需注意：如果概率分布为 0-0.5-0.5-0，熵可能无法有效识别错误标签。建议的解决方案是使用 One-vs-Rest 方案，或者使用 Hoover 指数代替熵，因为 Hoover 指数计算更简单，范围始终在 0-1 之间，且解释性更强（0 代表平等\u002F均匀，1 代表不平等）。","https:\u002F\u002Fgithub.com\u002Fkoaning\u002Fdoubtlab\u002Fissues\u002F11",{"id":114,"question_zh":115,"answer_zh":116,"source_url":117},17409,"如何避免在大型数据集上重复计算预测结果以提升性能？","从 v0.1.4 版本开始，库支持直接传入预计算的预测概率（probas），而不仅仅是 sklearn 模型对象。这对于基于阈值的理由和大型数据集可以节省大量时间和计算资源，允许更快的迭代，并支持使用 sklearn 以外的模型。用户可以在初始化 Reason 类时选择传入 `model` 或 `probas` 参数。具体实现逻辑为：如果传入了 `probas` 则直接使用，否则调用 `model.predict_proba(X)` 进行计算。","https:\u002F\u002Fgithub.com\u002Fkoaning\u002Fdoubtlab\u002Fissues\u002F21",{"id":119,"question_zh":120,"answer_zh":121,"source_url":122},17410,"当多个怀疑理由高度重叠时，如何公平地对数据进行排序？","如果多个理由（例如 5 个中有 4 个重叠）导致某些理由被忽略，可以尝试构建一个额外的分类器来解决排序问题。具体方法是：利用原始数据集 (X, y) 创建一个新数据集 (X', y')，其中 y' 是一个二元标签，表示“标签看起来正常”还是“标签看起来有问题”。X' 是 `DoubtEnsemble` 的输出。然后训练一个分类器，并使用其 `predict_proba` 得分降序排列结果。这种方法可以将怀疑信号转化为新的特征来进行更智能的排序，但建议在将其集成到库之前先验证其有效性。","https:\u002F\u002Fgithub.com\u002Fkoaning\u002Fdoubtlab\u002Fissues\u002F9",{"id":124,"question_zh":125,"answer_zh":126,"source_url":127},17411,"是否支持针对回归任务（Regression Tasks）的怀疑理由？","目前库主要关注分类任务，但对于回归任务，社区建议可以添加基于统计学的理由，例如“高杠杆点理由”（HighLeveragePointReason）和“学生化残差理由”（HighStudentizedResidualReason）。高杠杆点衡量自变量值与其他观测值的距离，而学生化残差是残差与其标准差估计值的商，常用于检测异常值。此外，维护者计划合并绘图功能，用户可以通过残差图（对不同颜色的怀疑\u002F非怀疑点进行区分）来检查回归结果。","https:\u002F\u002Fgithub.com\u002Fkoaning\u002Fdoubtlab\u002Fissues\u002F28",{"id":129,"question_zh":130,"answer_zh":131,"source_url":132},17412,"如何利用未标记数据与已标记数据的差异性来分配怀疑度？","当目标变量 `y` 包含 `NaN`（表示未标记）时，可以设计一种策略来优先选择那些与已标记数据点差异显著的 `NaN` 样本。这种方法的目的是采样更多样化的数据点。虽然具体的查询策略（特别是针对文本或图像）可能需要特定实现，但该思路已被认为非常有价值，未来可能会在库中托管特定的查询策略，或结合其他工具（如 Modal Python）来实现。","https:\u002F\u002Fgithub.com\u002Fkoaning\u002Fdoubtlab\u002Fissues\u002F12",{"id":134,"question_zh":135,"answer_zh":136,"source_url":137},17413,"是否可以考虑标签的元数据（如标注者可靠性、标签层级）作为怀疑理由？","是的，真实数据往往不平衡，长尾标签更容易出错。可以基于元数据创建专门的 Reason 类。例如：1. 标签的层级结构（如 ImageNet 中的狗品种类别）可能预示标签准确性；2. 标注者的可靠性历史；3. 标注时间阶段（某些阶段产生的错误标签较多）。这实际上是在建模预测为真的可能性。未来的方向可能是将 Prodigy 和 Doubtlab 结合，进行关于“标签是否正确”的主动学习（Active Learning），并使用基于树的方法处理数值和类别特征来修正标签。","https:\u002F\u002Fgithub.com\u002Fkoaning\u002Fdoubtlab\u002Fissues\u002F51",[139,144,149,154,159,164,169,174],{"id":140,"version":141,"summary_zh":142,"released_at":143},103225,"0.2.4","新增对假阳性和假阴性原因的支持，通过 `WrongPredictionReason` 实现。","2022-11-25T16:07:25",{"id":145,"version":146,"summary_zh":147,"released_at":148},103226,"0.2.3","支持 CleanLab v2。","2022-04-22T12:29:33",{"id":150,"version":151,"summary_zh":152,"released_at":153},103227,"0.2.2","通过向量化加速了基于置信度的推理过程。在文档处理中，进一步提升了基于概率的方法的优先级。","2022-04-14T20:47:07",{"id":155,"version":156,"summary_zh":157,"released_at":158},103228,"0.1.5","添加了 `StandardizedErrorReason` https:\u002F\u002Fgithub.com\u002Fkoaning\u002Fdoubtlab\u002Fpull\u002F29。感谢 @FBruzzesi！","2021-12-21T08:24:39",{"id":160,"version":161,"summary_zh":162,"released_at":163},103229,"0.1.4","添加了基于熵和 `from_proba` 风格方法的理由。","2021-12-15T21:08:26",{"id":165,"version":166,"summary_zh":167,"released_at":168},103230,"0.1.3","修复了一个与保证金原因相关的 bug。详情请见：https:\u002F\u002Fgithub.com\u002Fkoaning\u002Fdoubtlab\u002Fpull\u002F22","2021-12-07T11:45:25",{"id":170,"version":171,"summary_zh":172,"released_at":173},103231,"0.1.2","添加了 `MarginConfidenceReason`。","2021-11-23T21:29:56",{"id":175,"version":176,"summary_zh":81,"released_at":177},103232,"0.1.0","2021-11-09T11:28:27"]