[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-IBM--differential-privacy-library":3,"tool-IBM--differential-privacy-library":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",150720,2,"2026-04-11T11:33:10",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108322,"2026-04-10T11:39:34",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[52,13,15,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":32,"last_commit_at":59,"category_tags":60,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[52,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":67,"readme_en":68,"readme_zh":69,"quickstart_zh":70,"use_case_zh":71,"hero_image_url":72,"owner_login":73,"owner_name":74,"owner_avatar_url":75,"owner_bio":76,"owner_company":77,"owner_location":77,"owner_email":77,"owner_twitter":78,"owner_website":79,"owner_url":80,"languages":81,"stars":86,"forks":87,"last_commit_at":88,"license":89,"difficulty_score":90,"env_os":91,"env_gpu":92,"env_ram":92,"env_deps":93,"category_tags":101,"github_topics":102,"view_count":32,"oss_zip_url":77,"oss_zip_packed_at":77,"status":17,"created_at":107,"updated_at":108,"faqs":109,"releases":135},6660,"IBM\u002Fdifferential-privacy-library","differential-privacy-library","Diffprivlib: The IBM Differential Privacy Library","differential-privacy-library 是 IBM 开源的一款通用差分隐私库，旨在帮助开发者和研究人员轻松探索和应用差分隐私技术。在数据分析和机器学习日益普及的今天，如何在挖掘数据价值的同时严格保护个人隐私成为一大挑战，differential-privacy-library 正是为解决这一难题而生。它通过向算法中添加可控的随机噪声，确保模型训练过程不会泄露任何单个样本的敏感信息，从而在数据效用与隐私安全之间找到平衡。\n\n这款工具特别适合数据科学家、算法工程师以及高校研究人员使用。无论是想快速验证差分隐私对模型精度的影响，还是希望原型化自己的隐私保护算法，differential-privacy-library 都能提供极大便利。其最大的技术亮点在于高度的兼容性：它设计了与主流机器学习库 scikit-learn 几乎一致的接口。这意味着用户无需重写大量代码，只需将普通的分类器或回归模型替换为库中对应的差分隐私版本（如 GaussianNB），并设定隐私预算参数 epsilon，即可立即获得具备隐私保护能力的模型。虽然目前主要面向科研与教育场景，但它凭借低门槛和实用性","differential-privacy-library 是 IBM 开源的一款通用差分隐私库，旨在帮助开发者和研究人员轻松探索和应用差分隐私技术。在数据分析和机器学习日益普及的今天，如何在挖掘数据价值的同时严格保护个人隐私成为一大挑战，differential-privacy-library 正是为解决这一难题而生。它通过向算法中添加可控的随机噪声，确保模型训练过程不会泄露任何单个样本的敏感信息，从而在数据效用与隐私安全之间找到平衡。\n\n这款工具特别适合数据科学家、算法工程师以及高校研究人员使用。无论是想快速验证差分隐私对模型精度的影响，还是希望原型化自己的隐私保护算法，differential-privacy-library 都能提供极大便利。其最大的技术亮点在于高度的兼容性：它设计了与主流机器学习库 scikit-learn 几乎一致的接口。这意味着用户无需重写大量代码，只需将普通的分类器或回归模型替换为库中对应的差分隐私版本（如 GaussianNB），并设定隐私预算参数 epsilon，即可立即获得具备隐私保护能力的模型。虽然目前主要面向科研与教育场景，但它凭借低门槛和实用性，已成为全球差分隐私社区广泛采用的基准工具。","# Diffprivlib v0.6\n\n[![Python versions](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fpyversions\u002Fdiffprivlib.svg)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fdiffprivlib\u002F)\n[![Downloads](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FIBM_differential-privacy-library_readme_15e4ac05d41f.png)](https:\u002F\u002Fpepy.tech\u002Fproject\u002Fdiffprivlib)\n[![PyPi version](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fdiffprivlib.svg)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fdiffprivlib\u002F)\n[![PyPi status](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fstatus\u002Fdiffprivlib.svg)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fdiffprivlib\u002F)\n[![General tests](https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Factions\u002Fworkflows\u002Fgeneral.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Factions\u002Fworkflows\u002Fgeneral.yml)\n[![Documentation Status](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FIBM_differential-privacy-library_readme_13d664e1afd7.png)](https:\u002F\u002Fdiffprivlib.readthedocs.io\u002Fen\u002Flatest\u002F?badge=latest)\n[![CodeQL](https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Factions\u002Fworkflows\u002Fcodeql.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Factions\u002Fworkflows\u002Fcodeql.yml)\n[![codecov](https:\u002F\u002Fcodecov.io\u002Fgh\u002FIBM\u002Fdifferential-privacy-library\u002Fbranch\u002Fmain\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FIBM\u002Fdifferential-privacy-library)\n\nDiffprivlib is a general-purpose library for differential privacy (DP). Use diffprivlib if you are looking to:\n\n- Experiment with differential privacy\n- Explore the impact of differential privacy on machine learning and data analytics applications \n- Prototype your own differential privacy algorithms\n\nSince its initial release in 2019, diffprivlib has proven to be an invaluable resource for the DP community, with hundreds of citations, stars, forks and deployments. The library has lowered the barrier to entry for new scientists and engineers working in and learning about DP, spawned new research, and served as a benchmark for new algorithms and libraries.\n\n__Note:__ The public release of diffprivlib is intended for research and education purposes only. Please reach out to us if you are interested in using diffprivlib in a production environment. \n\n## Getting started: [Machine learning with differential privacy in 30 seconds](https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Fblob\u002Fmain\u002Fnotebooks\u002F30seconds.ipynb)\nWe're using the [Iris dataset](https:\u002F\u002Farchive.ics.uci.edu\u002Fml\u002Fdatasets\u002Firis), so let's load it and perform an 80\u002F20 train\u002Ftest split.\n\n```python\nfrom sklearn import datasets\nfrom sklearn.model_selection import train_test_split\n\ndataset = datasets.load_iris()\nX_train, X_test, y_train, y_test = train_test_split(dataset.data, dataset.target, test_size=0.2)\n```\n\nNow, let's train a differentially private naive Bayes classifier. Our classifier __runs just like an `sklearn` classifier__, so you can get up and running quickly.\n\n`diffprivlib.models.GaussianNB` can be run __without any parameters__, although this will throw a warning (we need to specify the `bounds` parameter to avoid this). The privacy level is controlled by the parameter `epsilon`, which is passed to the classifier at initialisation (e.g. `GaussianNB(epsilon=0.1)`). The default is `epsilon = 1.0`.\n\n```python\nfrom diffprivlib.models import GaussianNB\n\nclf = GaussianNB()\nclf.fit(X_train, y_train)\n```\n\nWe can now classify unseen examples, knowing that the trained model is differentially private and preserves the privacy of the 'individuals' in the training set (flowers are entitled to their privacy too!).\n\n```python\nclf.predict(X_test)\n```\n\nEvery time the model is trained with `.fit()`, a different model is produced due to the randomness of differential privacy. The accuracy will therefore change, even if it's re-trained with the same training data. Try it for yourself to find out!\n\n```python\nprint(\"Test accuracy: %f\" % clf.score(X_test, y_test))\n```\n\nWe can easily evaluate the accuracy of the model for various `epsilon` values and plot it with `matplotlib`.\n\n```python\nimport numpy as np\nimport matplotlib.pyplot as plt\n\nepsilons = np.logspace(-2, 2, 50)\nbounds = ([4.3, 2.0, 1.1, 0.1], [7.9, 4.4, 6.9, 2.5])\naccuracy = list()\n\nfor epsilon in epsilons:\n    clf = GaussianNB(bounds=bounds, epsilon=epsilon)\n    clf.fit(X_train, y_train)\n    \n    accuracy.append(clf.score(X_test, y_test))\n\nplt.semilogx(epsilons, accuracy)\nplt.title(\"Differentially private Naive Bayes accuracy\")\nplt.xlabel(\"epsilon\")\nplt.ylabel(\"Accuracy\")\nplt.show()\n```\n\n![Differentially private naive Bayes](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FIBM_differential-privacy-library_readme_5b78b00ca1a6.png)\n\nCongratulations, you've completed your first differentially private machine learning task with the Differential Privacy Library!  Check out more examples in the [notebooks](https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Fblob\u002Fmain\u002Fnotebooks\u002F) directory, or [dive straight in](https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Fblob\u002Fmain\u002Fdiffprivlib\u002F).\n\n## Contents\n\nDiffprivlib is comprised of four major components:\n1. __Mechanisms:__ These are the building blocks of differential privacy, and are used in all models that implement differential privacy. Mechanisms have little or no default settings, and are intended for use by experts implementing their own models. They can, however, be used outside models for separate investigations, etc.\n1. __Models:__ This module includes machine learning models with differential privacy. Diffprivlib currently has models for clustering, classification, regression, dimensionality reduction and pre-processing.\n1. __Tools:__ Diffprivlib comes with a number of generic tools for differentially private data analysis. This includes differentially private histograms, following the same format as [Numpy's histogram function](https:\u002F\u002Fdocs.scipy.org\u002Fdoc\u002Fnumpy\u002Freference\u002Fgenerated\u002Fnumpy.histogram.html).\n1. __Accountant:__ The `BudgetAccountant` class can be used to track privacy budget and calculate total privacy loss using advanced composition techniques. \n\n\n## Setup\n\n### Installation with `pip`\n\nThe library is designed to run with Python 3.\nThe library can be installed from the PyPi repository using `pip` (or `pip3`):\n\n```bash\npip install diffprivlib\n```\n\n### Manual installation\n\nFor the most recent version of the library, either download the source code or clone the repository in your directory of choice:\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\n```\n\nTo install `diffprivlib`, do the following in the project folder (alternatively, you can run `python3 -m pip install .`):\n```bash\npip install .\n```\n\nThe library comes with a basic set of unit tests for `pytest`. To check your install, you can run all the unit tests by calling `pytest` in the install folder:\n\n```bash\npytest\n```\n\n## Citing diffprivlib\nIf you use diffprivlib for research, please consider citing the following reference paper:\n```\n@article{diffprivlib,\n  title={Diffprivlib: the {IBM} differential privacy library},\n  author={Holohan, Naoise and Braghin, Stefano and Mac Aonghusa, P{\\'o}l and Levacher, Killian},\n  year={2019},\n  journal = {ArXiv e-prints},\n  archivePrefix = \"arXiv\",\n  volume = {1907.02444 [cs.CR]},\n  primaryClass = \"cs.CR\",\n  month = jul\n}\n```\n\n## References\n\n* Holohan, N., Antonatos, S., Braghin, S. and Mac Aonghusa, P., 2018. [The Bounded Laplace Mechanism in Differential privacy](https:\u002F\u002Fdoi.org\u002F10.29012\u002Fjpc.715). *Journal of Privacy and Confidentiality 10 (1).*\n* Holohan, N., Braghin, S., Mac Aonghusa, P. and Levacher, K., 2019. [Diffprivlib: the IBM Differential Privacy Library](https:\u002F\u002Farxiv.org\u002Fabs\u002F1907.02444). *ArXiv e-prints 1907.02444 [cs.CR].*\n* Ludwig, H., Baracaldo, N., Thomas, G., Zhou, Y., Anwar, A., Rajamoni, S., Ong, Y., Radhakrishnan, J., Verma, A., Sinn, M. and Purcell, M., 2020. [IBM Federated Learning: an Enterprise Framework White Paper v0.1](https:\u002F\u002Fdoi.org\u002F10.48550\u002FarXiv.2007.10987). *ArXiv e-prints 2007.10987 [cs.LG].*\n* Holohan, N. and Braghin, S., 2021. [Secure Random Sampling in Differential Privacy](https:\u002F\u002Fdoi.org\u002F10.1007\u002F978-3-030-88428-4_26). *In Computer Security–ESORICS 2021: 26th European Symposium on Research in Computer Security, Darmstadt, Germany, October 4–8, 2021, Proceedings, Part II 26 (pp. 523-542). Springer International Publishing.*\n* Holohan, N., 2023. [Random Number Generators and Seeding for Differential Privacy](https:\u002F\u002Fdoi.org\u002F10.48550\u002FarXiv.2307.03543). *ArXiv e-prints 2307.03543 [cs.CR].*\n* Holohan, N., Braghin, S. and Suliman, M., 2024. [Securing Floating-Point Arithmetic for Noise Addition](https:\u002F\u002Fdoi.org\u002F10.1145\u002F3658644.3690347). *In Proceedings of the 2024 on ACM SIGSAC Conference on Computer and Communications Security (pp. 1954-1966).*\n\n## Acknowledgement\nWork in this repository was partially supported by the European Union's Horizon research and innovation programme under grant numbers 951911 (AI4Media) and 101070473 (FLUIDOS).\n","# Diffprivlib v0.6\n\n[![Python版本](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fpyversions\u002Fdiffprivlib.svg)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fdiffprivlib\u002F)\n[![下载量](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FIBM_differential-privacy-library_readme_15e4ac05d41f.png)](https:\u002F\u002Fpepy.tech\u002Fproject\u002Fdiffprivlib)\n[![PyPi版本](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fdiffprivlib.svg)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fdiffprivlib\u002F)\n[![PyPi状态](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fstatus\u002Fdiffprivlib.svg)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fdiffprivlib\u002F)\n[![通用测试](https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Factions\u002Fworkflows\u002Fgeneral.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Factions\u002Fworkflows\u002Fgeneral.yml)\n[![文档状态](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FIBM_differential-privacy-library_readme_13d664e1afd7.png)](https:\u002F\u002Fdiffprivlib.readthedocs.io\u002Fen\u002Flatest\u002F?badge=latest)\n[![CodeQL](https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Factions\u002Fworkflows\u002Fcodeql.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Factions\u002Fworkflows\u002Fcodeql.yml)\n[![Codecov](https:\u002F\u002Fcodecov.io\u002Fgh\u002FIBM\u002Fdifferential-privacy-library\u002Fbranch\u002Fmain\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FIBM\u002Fdifferential-privacy-library)\n\nDiffprivlib 是一个用于差分隐私（DP）的通用库。如果您希望：\n\n- 尝试差分隐私技术\n- 探索差分隐私对机器学习和数据分析应用的影响\n- 原型设计您自己的差分隐私算法\n\n自 2019 年首次发布以来，diffprivlib 已被证明是差分隐私社区中不可或缺的资源，获得了数百次引用、星标、分支和部署。该库降低了新科学家和工程师进入差分隐私领域并进行学习的门槛，催生了新的研究，并成为新算法和新库的基准。\n\n__注意：__ diffprivlib 的公开发布仅用于研究和教育目的。如果您有意在生产环境中使用 diffprivlib，请与我们联系。\n\n## 入门：[30 秒内实现差分隐私的机器学习](https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Fblob\u002Fmain\u002Fnotebooks\u002F30seconds.ipynb)\n我们使用 [Iris 数据集](https:\u002F\u002Farchive.ics.uci.edu\u002Fml\u002Fdatasets\u002Firis)，让我们加载它并进行 80\u002F20 的训练\u002F测试集划分。\n\n```python\nfrom sklearn import datasets\nfrom sklearn.model_selection import train_test_split\n\ndataset = datasets.load_iris()\nX_train, X_test, y_train, y_test = train_test_split(dataset.data, dataset.target, test_size=0.2)\n```\n\n现在，让我们训练一个差分隐私朴素贝叶斯分类器。我们的分类器 __运行方式与 `sklearn` 分类器完全相同__，因此您可以快速上手。\n\n`diffprivlib.models.GaussianNB` 可以 __无需任何参数__ 运行，尽管这会触发警告（我们需要指定 `bounds` 参数来避免此情况）。隐私级别由参数 `epsilon` 控制，该参数在分类器初始化时传入（例如 `GaussianNB(epsilon=0.1)`）。默认值为 `epsilon = 1.0`。\n\n```python\nfrom diffprivlib.models import GaussianNB\n\nclf = GaussianNB()\nclf.fit(X_train, y_train)\n```\n\n现在我们可以对未见过的样本进行分类，同时确信训练好的模型是差分隐私的，并且保护了训练集中“个体”的隐私（毕竟，花朵也有隐私权嘛！）。\n\n```python\nclf.predict(X_test)\n```\n\n每次调用 `.fit()` 训练模型时，由于差分隐私的随机性，都会生成不同的模型。因此，即使使用相同的训练数据重新训练，准确率也会有所变化。不妨亲自尝试一下，看看结果吧！\n\n```python\nprint(\"测试准确率：%f\" % clf.score(X_test, y_test))\n```\n\n我们可以轻松评估不同 `epsilon` 值下的模型准确率，并使用 `matplotlib` 绘制图表。\n\n```python\nimport numpy as np\nimport matplotlib.pyplot as plt\n\nepsilons = np.logspace(-2, 2, 50)\nbounds = ([4.3, 2.0, 1.1, 0.1], [7.9, 4.4, 6.9, 2.5])\naccuracy = list()\n\nfor epsilon in epsilons:\n    clf = GaussianNB(bounds=bounds, epsilon=epsilon)\n    clf.fit(X_train, y_train)\n    \n    accuracy.append(clf.score(X_test, y_test))\n\nplt.semilogx(epsilons, accuracy)\nplt.title(\"差分隐私朴素贝叶斯准确率\")\nplt.xlabel(\"epsilon\")\nplt.ylabel(\"准确率\")\nplt.show()\n```\n\n![差分隐私朴素贝叶斯](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FIBM_differential-privacy-library_readme_5b78b00ca1a6.png)\n\n恭喜您！您已经使用差分隐私库完成了您的第一个差分隐私机器学习任务！更多示例请查看 [notebooks](https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Fblob\u002Fmain\u002Fnotebooks\u002F) 目录，或直接深入 [源码](https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Fblob\u002Fmain\u002Fdiffprivlib\u002F)。\n\n## 内容\n\nDiffprivlib 由四个主要组件组成：\n1. __机制：__ 这些是差分隐私的构建模块，所有实现差分隐私的模型都会使用它们。机制几乎没有默认设置，主要供专家在实现自有模型时使用。不过，它们也可以独立于模型用于单独的研究等。\n1. __模型：__ 本模块包含具有差分隐私功能的机器学习模型。目前，Diffprivlib 提供聚类、分类、回归、降维和预处理等模型。\n1. __工具：__ Diffprivlib 配备了多种用于差分隐私数据分析的通用工具。其中包括差分隐私直方图，其格式与 [Numpy 的 histogram 函数](https:\u002F\u002Fdocs.scipy.org\u002Fdoc\u002Fnumpy\u002Freference\u002Fgenerated\u002Fnumpy.histogram.html) 相同。\n1. __预算管理器：__ `BudgetAccountant` 类可用于跟踪隐私预算，并利用高级组合技术计算总隐私损失。\n\n\n## 安装\n\n### 使用 `pip` 安装\n\n该库专为 Python 3 设计。\n可以通过 PyPI 仓库使用 `pip`（或 `pip3`）安装：\n\n```bash\npip install diffprivlib\n```\n\n### 手动安装\n\n要获取最新版本的库，您可以下载源代码或将仓库克隆到您选择的目录中：\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\n```\n\n要在项目文件夹中安装 `diffprivlib`，请执行以下操作（或者您也可以运行 `python3 -m pip install .`）：\n```bash\npip install .\n```\n\n该库附带一组基本的 `pytest` 单元测试。要检查您的安装是否正常，可以在安装目录中运行所有单元测试：\n\n```bash\npytest\n```\n\n## 引用 diffprivlib\n如果您在研究中使用 diffprivlib，请考虑引用以下参考文献：\n```\n@article{diffprivlib,\n  title={Diffprivlib：{IBM} 差分隐私库},\n  author={Holohan, Naoise and Braghin, Stefano and Mac Aonghusa, P{\\'o}l and Levacher, Killian},\n  year={2019},\n  journal = {ArXiv e-prints},\n  archivePrefix = \"arXiv\",\n  volume = {1907.02444 [cs.CR]},\n  primaryClass = \"cs.CR\",\n  month = jul\n}\n```\n\n## 参考文献\n\n* Holohan, N., Antonatos, S., Braghin, S. 和 Mac Aonghusa, P., 2018. [差分隐私中的有界拉普拉斯机制](https:\u002F\u002Fdoi.org\u002F10.29012\u002Fjpc.715). *隐私与保密期刊 第10卷第1期.*\n* Holohan, N., Braghin, S., Mac Aonghusa, P. 和 Levacher, K., 2019. [Diffprivlib：IBM 差分隐私库](https:\u002F\u002Farxiv.org\u002Fabs\u002F1907.02444). *ArXiv e-prints 1907.02444 [cs.CR].*\n* Ludwig, H., Baracaldo, N., Thomas, G., Zhou, Y., Anwar, A., Rajamoni, S., Ong, Y., Radhakrishnan, J., Verma, A., Sinn, M. 和 Purcell, M., 2020. [IBM 联邦学习：企业级框架白皮书 v0.1](https:\u002F\u002Fdoi.org\u002F10.48550\u002FarXiv.2007.10987). *ArXiv e-prints 2007.10987 [cs.LG].*\n* Holohan, N. 和 Braghin, S., 2021. [差分隐私中的安全随机采样](https:\u002F\u002Fdoi.org\u002F10.1007\u002F978-3-030-88428-4_26). *载于《计算机安全—ESORICS 2021：第26届欧洲计算机安全研究研讨会，德国达姆施塔特，2021年10月4日至8日，论文集，第二部分 第26章（第523–542页）。Springer International Publishing.*\n* Holohan, N., 2023. [用于差分隐私的随机数生成器与种子设置](https:\u002F\u002Fdoi.org\u002F10.48550\u002FarXiv.2307.03543). *ArXiv e-prints 2307.03543 [cs.CR].*\n* Holohan, N., Braghin, S. 和 Suliman, M., 2024. [为噪声添加提供保障的浮点运算](https:\u002F\u002Fdoi.org\u002F10.1145\u002F3658644.3690347). *载于2024年ACM SIGSAC计算机与通信安全会议论文集（第1954–1966页）。*\n\n## 致谢\n本仓库中的工作部分得到了欧盟“地平线”研究与创新计划的资助，资助编号分别为951911（AI4Media）和101070473（FLUIDOS）。","# Diffprivlib 快速上手指南\n\nDiffprivlib 是 IBM 开源的通用差分隐私（Differential Privacy, DP）库，旨在降低研究人员和工程师进入差分隐私领域的门槛。它提供了与 `scikit-learn` 兼容的机器学习模型、基础机制及隐私预算跟踪工具，适用于实验、原型开发及数据分析。\n\n> **注意**：该库主要用于研究和教育目的。若需在生产环境中使用，请联系官方团队。\n\n## 环境准备\n\n- **操作系统**：Linux, macOS, Windows\n- **Python 版本**：Python 3.6 及以上\n- **核心依赖**：\n  - `numpy`\n  - `scikit-learn`\n  - `matplotlib` (用于绘图示例)\n  - `pytest` (可选，用于运行测试)\n\n确保已安装 Python 3 及 pip 包管理工具。\n\n## 安装步骤\n\n### 方式一：通过 PyPI 安装（推荐）\n\n使用 pip 直接安装稳定版：\n\n```bash\npip install diffprivlib\n```\n\n*国内用户加速建议*：如果下载速度较慢，可使用国内镜像源（如清华源）：\n\n```bash\npip install diffprivlib -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n### 方式二：从源码安装（获取最新版本）\n\n克隆仓库并本地安装：\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\ncd differential-privacy-library\npip install .\n```\n\n### 验证安装\n\n安装完成后，可运行内置单元测试检查环境是否正常：\n\n```bash\npytest\n```\n\n## 基本使用\n\nDiffprivlib 的设计理念是与 `scikit-learn` 保持接口一致。以下示例展示如何在 30 秒内训练一个具有差分隐私保护的朴素贝叶斯分类器。\n\n### 1. 数据准备\n\n加载经典的 Iris 数据集并进行训练集\u002F测试集划分：\n\n```python\nfrom sklearn import datasets\nfrom sklearn.model_selection import train_test_split\n\ndataset = datasets.load_iris()\nX_train, X_test, y_train, y_test = train_test_split(dataset.data, dataset.target, test_size=0.2)\n```\n\n### 2. 训练差分隐私模型\n\n导入 `GaussianNB` 模型。该模型用法与普通 sklearn 模型完全相同。\n- **epsilon**: 控制隐私保护强度（默认 1.0，值越小隐私性越强，但准确率可能下降）。\n- **bounds**: 数据边界范围（强烈建议指定以消除警告并提高准确性）。\n\n```python\nfrom diffprivlib.models import GaussianNB\n\n# 定义数据边界 (根据 Iris 数据集特征范围)\nbounds = ([4.3, 2.0, 1.1, 0.1], [7.9, 4.4, 6.9, 2.5])\n\n# 初始化并训练模型\nclf = GaussianNB(bounds=bounds, epsilon=1.0)\nclf.fit(X_train, y_train)\n```\n\n### 3. 预测与评估\n\n使用训练好的模型进行预测，并计算准确率。由于差分隐私引入了随机噪声，每次运行 `.fit()` 得到的模型和准确率都会略有不同。\n\n```python\n# 预测\npredictions = clf.predict(X_test)\n\n# 评估准确率\nprint(\"Test accuracy: %f\" % clf.score(X_test, y_test))\n```\n\n### 4. 进阶：探索隐私预算对准确率的影响\n\n可以通过循环不同的 `epsilon` 值，观察隐私保护强度与模型性能之间的权衡关系：\n\n```python\nimport numpy as np\nimport matplotlib.pyplot as plt\nfrom diffprivlib.models import GaussianNB\n\nepsilons = np.logspace(-2, 2, 50)\nbounds = ([4.3, 2.0, 1.1, 0.1], [7.9, 4.4, 6.9, 2.5])\naccuracy = list()\n\nfor epsilon in epsilons:\n    clf = GaussianNB(bounds=bounds, epsilon=epsilon)\n    clf.fit(X_train, y_train)\n    accuracy.append(clf.score(X_test, y_test))\n\nplt.semilogx(epsilons, accuracy)\nplt.title(\"Differentially private Naive Bayes accuracy\")\nplt.xlabel(\"epsilon\")\nplt.ylabel(\"Accuracy\")\nplt.show()\n```\n\n更多详细示例（如聚类、回归、直方图统计等）请参考项目官方 `notebooks` 目录。","某医疗科技公司的数据科学团队需要在不泄露患者隐私的前提下，利用敏感的临床记录训练疾病预测模型。\n\n### 没有 differential-privacy-library 时\n- **隐私泄露风险高**：直接训练机器学习模型可能导致模型“记忆”特定患者的独特特征，攻击者可通过模型反推还原个人病历。\n- **算法实现门槛极高**：团队需从零研究复杂的差分隐私数学原理并手动编写噪声注入代码，开发周期长达数月且极易出错。\n- **隐私与效用难平衡**：缺乏标准化工具来量化隐私预算（epsilon），难以评估添加多少噪声能在保护隐私的同时保持模型准确率。\n- **合规审计困难**：无法向监管机构提供标准化的隐私保护证明，导致项目因不符合数据安全法规（如 HIPAA 或 GDPR）而被搁置。\n\n### 使用 differential-privacy-library 后\n- **原生隐私保护**：直接调用 `diffprivlib.models` 中的分类器（如高斯朴素贝叶斯），在训练过程中自动注入数学证明安全的噪声，从源头阻断隐私泄露。\n- **无缝集成现有流程**：该库接口完全兼容 Scikit-learn，团队无需重写代码，仅需替换导入语句即可在 30 秒内将普通模型升级为隐私保护模型。\n- **可控的隐私预算**：通过简单设置 `epsilon` 参数即可精确控制隐私保护强度，并能快速绘制\"epsilon-准确率”曲线以找到最佳平衡点。\n- **加速合规落地**：基于 IBM 开源且经过社区广泛验证的算法，团队能迅速生成符合学术与工业标准的安全报告，推动项目顺利上线。\n\ndifferential-privacy-library 将高深的隐私保护理论转化为开箱即用的工程能力，让开发者在严守数据伦理的同时释放人工智能的价值。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FIBM_differential-privacy-library_5b78b00c.png","IBM","International Business Machines","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FIBM_251be740.jpg","Open Source @ IBM",null,"ibmdeveloper","https:\u002F\u002Fwww.ibm.com\u002Fopensource\u002F","https:\u002F\u002Fgithub.com\u002FIBM",[82],{"name":83,"color":84,"percentage":85},"Python","#3572A5",100,911,207,"2026-04-01T17:28:08","MIT",1,"","未说明",{"notes":94,"python":95,"dependencies":96},"该库主要用于研究和教育目的，生产环境使用需联系作者。安装可通过 pip 或源码克隆。代码示例依赖 scikit-learn 进行数据加载和模型评估，依赖 matplotlib 进行绘图。未明确指定具体的操作系统、GPU 或内存需求，表明其可能适用于通用的 Python 运行环境。","3.x",[97,98,99,100],"scikit-learn","numpy","matplotlib","pytest",[16,14],[103,104,105,106],"differential-privacy","data-privacy","machine-learning","python","2026-03-27T02:49:30.150509","2026-04-11T23:23:13.201461",[110,115,120,125,130],{"id":111,"question_zh":112,"answer_zh":113,"source_url":114},30084,"差分隐私随机森林分类器（RandomForestClassifier）在调用 predict 函数时报错 \"ValueError: can only convert an array of size 1 to a Python scalar\"，如何解决？","该问题通常由分类变量（categorical variables）的处理方式引起。如果测试集和训练集在某个分类特征上的取值不一致，就会抛出此错误。\n解决方案：\n1. 推荐方案：重新实现的模型要求输入必须是数值型数组（numerical array），这与 scikit-learn 的行为一致。请确保数据已预处理为数值格式。\n2. 变通方案：如果必须识别分类特征，可以在初始化时直接指定 `feature_domains` 参数，明确列出该特征所有可能的分类值，以确保涵盖所有情况。\n3. 注意：对于连续变量（如 'capital-gain'），不要将其定义为列表，而应定义为区间。","https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Fissues\u002F62",{"id":116,"question_zh":117,"answer_zh":118,"source_url":119},30085,"如何生成一个带有拉普拉斯噪声的向量（noisy vector）？","最佳做法是使用 `Laplace` 机制的实例来生成拉普拉斯噪声向量。例如，生成长度为 10 的噪声向量代码如下：\n```python\nfrom diffprivlib.mechanisms import Laplace\nlap = Laplace(epsilon=1, sensitivity=1)\nvec = [lap.randomise(0) for i in range(10)]\n```\n不建议直接修改底层分布实现，而是通过调用机制的 `randomise` 方法来构建向量。","https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Fissues\u002F39",{"id":121,"question_zh":122,"answer_zh":123,"source_url":124},30086,"库中是否支持差分隐私百分位数（percentiles）计算？如果有，如何使用？","是的，该功能已计划并实现。如果您想立即使用，无需等待正式发布，可以通过克隆仓库并从该目录运行 `pip install .` 来安装最新版本。正式版通常在计划后的下个月发布。","https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Fissues\u002F26",{"id":126,"question_zh":127,"answer_zh":128,"source_url":129},30087,"运行官方提供的 logistic_regression.ipynb 示例笔记本时，结果与预期不符（准确率随 epsilon 变化不明显），该怎么办？","这通常是由于环境差异或缓存数据导致的。建议采取以下步骤排查：\n1. 创建一个全新的干净 Python 环境（例如使用 conda 新建环境）。\n2. 重新安装 `diffprivlib` 和相关依赖。\n3. 清除数据集缓存（缓存文件通常位于笔记本所在的同一文件夹中）。\n4. 如果问题依旧，尝试在虚拟机（VM）中运行以排除系统特定配置的影响。维护者在相同版本下无法复现该问题，因此环境清洁度是关键。","https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Fissues\u002F97",{"id":131,"question_zh":132,"answer_zh":133,"source_url":134},30088,"在 quantiles.py 中发现潜在的 \"Array index out of bounds\"（数组索引越界）错误，官方确认了吗？","是的，这是一个已确认的代码逻辑错误。当随机数大于所有概率值时，索引计算会导致访问超出数组范围的元素。官方确认修复方案是将相关行的索引计算修正为 `idx = len(self._probabilities) - 1`，以防止访问 `array[len(array)]`。该修复已通过 Pull Request 合并。","https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Fissues\u002F49",[136,141,146,151,156,161,166,171,176,181,186,191,196,201,206],{"id":137,"version":138,"summary_zh":139,"released_at":140},207871,"0.6.6","diffprivlib 的本次发布是一个次要更新，用于修复 `LogisticRegressionClassifier` 中的一个错误，并保持与 [Scikit-Learn v1.6](https:\u002F\u002Fgithub.com\u002Fscikit-learn\u002Fscikit-learn\u002Freleases\u002Ftag\u002F1.6.0) 的兼容性。\n\n该版本的 diffprivlib 支持 Python 3.9 至 3.13。\n\n## 变更内容\n* [BUG] @naoise-h 在 https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Fpull\u002F98 中修复了与 Scikit-Learn 1.6 和 LogisticRegressionClassifier 相关的问题。\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Fcompare\u002F0.6.5...0.6.6","2025-04-10T14:03:26",{"id":142,"version":143,"summary_zh":144,"released_at":145},207872,"0.6.5","diffprivlib 的本次发布是一个次要更新，用于修复因 [Numpy v2.0](https:\u002F\u002Fgithub.com\u002Fnumpy\u002Fnumpy\u002Freleases\u002Ftag\u002Fv2.0.0) 和 [Scikit-Learn v1.5](https:\u002F\u002Fgithub.com\u002Fscikit-learn\u002Fscikit-learn\u002Freleases\u002Ftag\u002F1.5.0) 发布而出现的 bug。\n\n## 变更内容\n* [MNT] 为 Numpy 2.0 和 Scikit-Learn 1.5 做准备，由 @naoise-h 在 https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Fpull\u002F92 中完成。\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Fcompare\u002F0.6.4...0.6.5","2024-10-10T12:47:04",{"id":147,"version":148,"summary_zh":149,"released_at":150},207873,"0.6.4","diffprivlib 的本次发布是一个小版本更新，用于修复部分 `tools` 模块中的 bug，并保持与新发布的 [Scikit-Learn v1.4](https:\u002F\u002Fgithub.com\u002Fscikit-learn\u002Fscikit-learn\u002Freleases\u002Ftag\u002F1.4.0) 的兼容性。\n\n# 修复\n* 由 Scikit-Learn v1.4 发布引入的若干小 bug\n* `tools` 模块中支持 NaN 的统计函数中边界计算不正确的问题 (#87)\n\n# 新增\n* 对 Python 3.12 的支持\n\n# 已合并的 Pull Request\n* [DOC] 由 @naoise-h 在 https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Fpull\u002F89 中完成的文档更新\n* [BUG] 由 @naoise-h 在 https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Fpull\u002F90 中修复的 nanmean 等函数的边界计算问题\n* [BUG] 由 @naoise-h 在 https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Fpull\u002F91 中完成的针对 Scikit-Learn v1.4 的修复\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Fcompare\u002F0.6.3...0.6.4","2024-01-31T11:04:47",{"id":152,"version":153,"summary_zh":154,"released_at":155},207874,"0.6.3","diffprivlib 的本次发布是一个次要更新，旨在保持与新发布的 [Scikit-Learn v1.3](https:\u002F\u002Fgithub.com\u002Fscikit-learn\u002Fscikit-learn\u002Freleases\u002Ftag\u002F1.3.0) 的兼容性。\n\n# 修复\n* 由于 Scikit-Learn v1.3 的发布导致 `DecisionTreeClassifier` 和 `RandomForestClassifier` 中出现的 bug\n\n## 已合并的 Pull 请求\n* 更新 README，添加 @stefano81 的已知发表文献，详见 https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Fpull\u002F78\n* 【BUG】由 @naoise-h 提交，修复了适用于 Scikit-Learn v1.3 的 `_Node` 类，详见 https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Fpull\u002F86\n* 【BUG】由 @naoise-h 提交，修复了 `quantile` 中的 `random_state` bug，详见 https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Fpull\u002F85\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Fcompare\u002F0.6.2...0.6.3","2023-06-30T15:40:48",{"id":157,"version":158,"summary_zh":159,"released_at":160},207875,"0.6.2","diffprivlib 的本次发布是对 0.6.1 版本的次要更新，旨在保持与新发布的 [Scikit-learn 1.2](https:\u002F\u002Fgithub.com\u002Fscikit-learn\u002Fscikit-learn\u002Freleases\u002Ftag\u002F1.2.0) 的兼容性，同时新增对 Python 3.11 的显式支持。\n\n# 新增\n* 支持 Python 3.11\n\n# 修复\n* 为支持 Scikit-learn 新的 [参数验证](https:\u002F\u002Fgithub.com\u002Fscikit-learn\u002Fscikit-learn\u002Fpull\u002F22722) 所做的小幅改动\n* 受近期 Scikit-learn 废弃 API 影响，对 `PCA` 和 `RandomForestClassifier` 做出的小幅调整\n\n# 已合并的 Pull Request\n* [MNT] Diffprivlib 0.6.2，由 @naoise-h 在 https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Fpull\u002F77 中提交\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Fcompare\u002F0.6.1...0.6.2","2022-12-09T15:17:12",{"id":162,"version":163,"summary_zh":164,"released_at":165},207876,"0.6.1","本次发布是一个小的 bug 修复，用于支持即将发布的 NumPy 1.24.0。\n\n## 修复\n* NumPy 的 `histogramdd` 已弃用 `normed` 关键字，该关键字现已从 diffprivlib 中移除。\n\n## 合并的 Pull Request\n* [MNT] diffprivlib 0.6.1，由 @naoise-h 在 https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Fpull\u002F75 中提交。\n\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Fcompare\u002F0.6.0...0.6.1","2022-11-24T17:35:57",{"id":167,"version":168,"summary_zh":169,"released_at":170},207877,"0.6.0","diffprivlib 的此版本支持 Python 3.8 至 3.10。\n\n## 变更\n\n**破坏性变更：**\n* `RandomForestClassifier` 已被大幅重写，以修复此前报告的错误并提升性能。它现在接受一个 `bounds` 参数（与其他模型类似），而非之前的 `feature_domains` 参数 (#70)。\n\n**非破坏性变更：**\n* 所有 diffprivlib 模型和工具现在都接受 `random_state` 参数，用于指定随机数生成器 (RNG) 的种子，或指定要使用的 RandomState 实例。其实现与 scikit-learn 非常接近，更多详情请参阅 PR #72。\n* 为解决在 Windows 上安装时遇到的困难，`crlibm` 现已成为可选依赖项。(#67)\n\n## 已合并的拉取请求\n* [BUG] 将 crlibm 设为可选依赖项，由 @naoise-h 在 https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Fpull\u002F67 中提出\n* [ENH] 重构 RandomForestClassifier，由 @naoise-h 在 https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Fpull\u002F70 中提出\n* [ENH] 为 diffprivlib 添加随机状态支持，由 @naoise-h 在 https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Fpull\u002F72 中提出\n* [MNT] diffprivlib 0.6，由 @naoise-h 在 https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Fpull\u002F74 中提出\n\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Fcompare\u002F0.5.2...0.6.0","2022-10-21T15:26:32",{"id":172,"version":173,"summary_zh":174,"released_at":175},207878,"0.5.2","这是 diffprivlib 的一个次要版本更新，新增了截断机制，并修复了由 Scikit-learn 1.1.0 引入的 bug。\n\n# 新增\n* 截断机制，`Snapping` (#46，由 @danrr 贡献)\n\n# 修复\n* 由 Scikit-learn 1.1.0 版本发布引入的 `LinearRegression`、`LogisticRegression` 和 `RandomForestClassifier` 中的 bug (#65)\n\n## 新贡献者\n* @danrr 在 https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Fpull\u002F46 中完成了首次贡献\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Fcompare\u002F0.5.1...0.5.2","2022-05-13T13:07:24",{"id":177,"version":178,"summary_zh":179,"released_at":180},207879,"0.5.1","diffprivlib 的本次发布是对 0.5 版本的次要更新，新增了对 Python 3.10 的显式支持。\n\n# 新增\n* 支持 Python 3.10 (#61)\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Fcompare\u002F0.5.0...0.5.1","2022-01-17T12:33:24",{"id":182,"version":183,"summary_zh":184,"released_at":185},207880,"0.5.0","diffprivlib 的本次发布包含多项新增功能、修复和改进。该版本支持 Python 3.7 至 3.9。\n\n# 新增\n- 在 `models` 模块中新增了一个差分隐私随机森林分类器 `RandomForestClassifier` (#41，由 [mismayil](https:\u002F\u002Fgithub.com\u002Fmismayil) 提供)\n- `Exponential` 和 `PermuteAndFlip` 机制现在支持将 `monotonic` 效用函数作为输入参数 (08c4d98)\n- 为问题和拉取请求添加了模板 (#52，由 [stefano81](https:\u002F\u002Fgithub.com\u002Fstefano81) 提供)\n- 我们正在过渡到使用 GitHub Actions 进行测试和其他检查 (#54)\n\n# 变更\n**破坏性变更：**\n- 借鉴 scikit-learn 的相应行为（自 0.23 版本起），diffprivlib 模型的大多数参数现在必须以关键字参数的形式指定。如果未按要求指定，将引发 `TypeError`。(5fa781e)\n\n**非破坏性变更：**\n- `Laplace`、`Gaussian`、`Vector` 和 `Bingham` 分布现在采用安全采样方法，以防止因浮点数表示而导致隐私泄露 (#47)\n- diffprivlib 现在要求使用 scikit-learn 0.23、numpy 1.19 和 scipy 1.5 或更高版本 (#51)\n\n# 修复\n- 修复了均匀分布数据下 `quantile` 的 bug (#43，d5ac459)\n- 优化了 `var` 的上界 (#45，由 [justanotherlad](https:\u002F\u002Fgithub.com\u002Fjustanotherlad) 提供)\n- 修复了 `Exponential` 机制中的 bug (#50，由 [justanotherlad](https:\u002F\u002Fgithub.com\u002Fjustanotherlad) 提供)\n- `histogramdd` 和 `histogram2d` 现在会优先使用 `bins` 中的 bin 边界，而非 `range`。(96ef33c)\n\n# 移除\n- 移除了 `Wishart` 机制 (#42，eeae0d7)","2021-10-01T12:00:47",{"id":187,"version":188,"summary_zh":189,"released_at":190},207881,"0.4.1","This release of diffprivlib is a minor update to v0.4 to fix a bug in `models.LinearRegression`.\r\n\r\n# Fixed\r\n- Bug in `models.LinearRegression` which incorrectly calculated the sensitivity for the objective (#35)","2021-01-29T17:41:02",{"id":192,"version":193,"summary_zh":194,"released_at":195},207882,"0.4.0","This release of diffprivlib includes a number of changes and additions to the existing codebase. A number of the changes may break existing code. This version of diffprivlib supports Python versions 3.6 to 3.8.\r\n\r\n# Added\r\n- `Exponential` and `PermuteAndFlip` mechanisms for differentially private selection.  The previous (categorical) exponential mechanism has now been renamed `ExponentialCategorical`.\r\n- `Bingham` mechanism to produce a differentially private estimate of the first eigenvector of a covariance matrix.\r\n- `median`, `quantile` and `percentile` functions.\r\n\r\n# Changed\r\n**Breaking:**\r\n- The `mechanisms` module has been comprehensively refactored, with all mechanism parameters now being specified at initialisation. For example, where previously the Laplace mechanism would have been instantiated by `Laplace().set_epsilon(1).set_sensitivity(1)`, it is now instantiated by `Laplace(epsilon=1, sensitivity=1)`.\r\n- The `Wishart` mechanism has been deprecated and will be removed in version 0.5. The Wishart mechanism is known not to satisfy differential privacy, and is therefore not recommended for use.\r\n\r\n**Non-breaking:**\r\n- The `PCA` model's algorithm has been modified, by using eigenvector sampling (through the `Bingham` mechanism) to estimate a dataset's principal components. Paper: [Amin et al, 2019](http:\u002F\u002Famin.kareemx.com\u002Fpubs\u002FDPCovarianceEstimation.pdf)\r\n- The `LinearRegression` model now uses objective perturbation to satisfy differential privacy. Paper: [Zhang et al, 2012](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1208.0219.pdf)","2020-12-18T11:45:34",{"id":197,"version":198,"summary_zh":199,"released_at":200},207883,"0.3.0","This release of diffprivlib includes a number of new additions, as well as various fixes to existing functionality. Some changes break backward compatibility with previous versions of the library. This version of diffprivlib supports Python 3.5 through 3.8.\r\n\r\nThe updates are summarised as follows.\r\n\r\n# Added\r\n- `BudgetAccountant` class to keep track of privacy budget spent in a script (and associated [notebook](https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Fblob\u002Fmaster\u002Fnotebooks\u002Faccountant.ipynb)).\r\n- `Budget` class to allow easy comparison (with `\u003C`, `>`, etc) between privacy budgets of the form `(epsilon, delta)`.\r\n- `count_nonzero`, `sum` and `nansum` functions to calculate a differentially private count and sum on an array or list.\r\n- `GaussianDiscrete` mechanism, the discrete analogue to the Gaussian mechanism.\r\n- `clip_to_bounds` and `clip_to_norm` to clip input data to the given bounds\u002Fnorm; used in tools and models as appropriate.\r\n- Notebook demonstrating [data exploration and visualisation](https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Fblob\u002Fmaster\u002Fnotebooks\u002Fexploration.ipynb) capabilities.\r\n\r\n# Changed\r\n**Breaking:**\r\n- The form\u002Fsyntax of the `bounds` parameter passed to tools and models has changed; it is now specified as a tuple of the form `(min, max)`. `min` and `max` can be scalars or 1-dimensional arrays.\r\nBounds can typically be converted to the new form with `new_bounds = ([l for l, _ in bounds], [u for _, u in bounds])`.\r\n- All functions (other than histogram functions) that previously required a `range` parameter now requires `bounds` instead (e.g. `models.LinearRegression`, `models.StandardScaler`, `tools.mean`, etc.).\r\n\r\n**Non-breaking:**\r\n- Diffprivlib now requires scikit-learn version 0.22 or later.\r\n- `Geometric` mechanism now has default `sensitivity=1`.This reflects the typical use of the geometric mechanism on count queries with sensitivity 1.\r\n- All mechanisms now support zero sensitivity.\r\n\r\n# Fixed\r\n- The publicly-exposed class counts in `models.GaussianNB` now satisfy differential privacy. The `class_count_` attribute is therefore noisy, and care must be taken in relying on these values for testing or other purposes.\r\n- `mean`, `std` and `var` tools, no longer require numpy array inputs, and can take all array-like inputs (e.g. scalars, lists and tuples).\r\n- Sensitivity calculation when randomising scalar-valued `var` output.","2020-06-26T06:19:31",{"id":202,"version":203,"summary_zh":204,"released_at":205},207884,"0.2.1","This release of diffprivlib includes a number of fixes to maintain compatibility with Scikit-learn version 0.23.\r\n\r\n# Fixed\r\n- Minor fixes to `GaussianNB`, `StandardScaler` and `KMeans` models to ensure continuing compatibility with sckit-learn versions 0.20.3 through 0.23.\r\n","2020-05-13T09:12:47",{"id":207,"version":208,"summary_zh":209,"released_at":210},207885,"0.2.0","This release of diffprivlib includes a number of newly supported models and functions, as well as minor fixes to existing features.\r\n\r\n# Added\r\n* Principal components analysis (class `models.PCA`)\r\n* Linear regression (class `models.LinearRegression`)\r\n* Standard scaler (class `models.StandardScaler`)\r\n* Wishart mechanism (class `mechanisms.Wishart`)\r\n* Mean, standard deviation and variance with `NaN` support (functions `tools.nanmean`, `tools.nanstd`, `tools.nanvar`)\r\n* Version accessibility at `diffprivlib.__version__`\r\n* Notebooks covering [linear regression](https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Fblob\u002Fmaster\u002Fnotebooks\u002Flinear_regression.ipynb) and [pipelines](https:\u002F\u002Fgithub.com\u002FIBM\u002Fdifferential-privacy-library\u002Fblob\u002Fmaster\u002Fnotebooks\u002Fpipeline.ipynb)\r\n\r\n# Fixed\r\n* Gaussian naive Bayes (class `models.GaussianNB`) no longer allows `sample_weight` to be specified when fitting the model to data (with thanks to Chris Clifton)","2020-01-06T10:59:01"]