[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-skrub-data--skrub":3,"tool-skrub-data--skrub":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 真正成长为懂上",157379,2,"2026-04-15T23:32:42",[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":66,"readme_en":67,"readme_zh":68,"quickstart_zh":69,"use_case_zh":70,"hero_image_url":71,"owner_login":72,"owner_name":72,"owner_avatar_url":73,"owner_bio":74,"owner_company":75,"owner_location":75,"owner_email":75,"owner_twitter":76,"owner_website":75,"owner_url":77,"languages":78,"stars":98,"forks":99,"last_commit_at":100,"license":101,"difficulty_score":102,"env_os":103,"env_gpu":104,"env_ram":104,"env_deps":105,"category_tags":108,"github_topics":110,"view_count":32,"oss_zip_url":75,"oss_zip_packed_at":75,"status":17,"created_at":122,"updated_at":123,"faqs":124,"releases":153},8079,"skrub-data\u002Fskrub","skrub","Machine learning with dataframes","skrub 是一个专为简化机器学习流程而设计的 Python 库，其核心理念是让开发者能够直接基于 DataFrame 高效构建模型。它前身是知名的 dirty_cat 项目，主要致力于解决现实世界中“脏数据”带来的挑战。在实际应用中，原始数据往往包含缺失值、格式不统一或高基数类别特征等问题，传统方法通常需要繁琐且易错的手工清洗步骤，而 skrub 提供了一套强大的工具链，能够自动处理这些复杂的表格数据预处理任务，显著降低从原始数据到可用特征的门槛。\n\n这款工具特别适合数据科学家、机器学习工程师以及需要处理结构化数据的研究人员使用。无论是进行快速原型开发，还是构建稳健的生产级管道，skrub 都能无缝集成到现有的 scikit-learn 生态系统中。其独特的技术亮点在于提供了如 TableVectorizer 等智能组件，能够自动识别并编码各类特征，无需用户编写大量自定义转换代码。通过 skrub，用户可以更专注于模型策略与业务逻辑，将原本耗时的数据清洗工作转化为流畅、自动化的标准流程，从而提升整体开发效率与模型表现。","skrub\n=====\n\n.. image:: https:\u002F\u002Fskrub-data.github.io\u002Fstable\u002F_static\u002Fskrub.svg\n   :align: center\n   :width: 50 %\n   :alt: skrub logo\n\n\n|py_ver| |pypi_var| |pypi_dl| |codecov| |circleci| |black|\n\n.. |py_ver| image:: https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fpyversions\u002Fskrub\n.. |pypi_var| image:: https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fskrub?color=informational\n.. |pypi_dl| image:: https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fdm\u002Fskrub\n.. |codecov| image:: https:\u002F\u002Fimg.shields.io\u002Fcodecov\u002Fc\u002Fgithub\u002Fskrub-data\u002Fskrub\u002Fmain\n.. |circleci| image:: https:\u002F\u002Fimg.shields.io\u002Fcircleci\u002Fbuild\u002Fgithub\u002Fskrub-data\u002Fskrub\u002Fmain?label=CircleCI\n.. |black| image:: https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fcode%20style-black-000000.svg\n\n\n**skrub** (formerly *dirty_cat*) is a Python\nlibrary that facilitates machine learning with dataframes.\n\nIf you like the package, spread the word and ⭐ this repository!\nYou can also join the `Discord server \u003Chttps:\u002F\u002Fdiscord.gg\u002FABaPnm7fDC>`_.\n\nWebsite: https:\u002F\u002Fskrub-data.org\u002F\n\nSee our `examples \u003Chttps:\u002F\u002Fskrub-data.org\u002Fstable\u002Fauto_examples>`_, or check out\nthe `learning materials \u003Chttps:\u002F\u002Fskrub-data.org\u002Fskrub-materials\u002Findex.html>`_.\n\nInstallation\n------------\n\nskrub can easily be installed via ``pip`` or ``conda``. For more installation information, see\nthe `installation instructions \u003Chttps:\u002F\u002Fskrub-data.org\u002Fstable\u002Finstall.html>`_.\n\nContributing\n------------\n\nThe best way to support the development of skrub is to spread the word!\n\nAlso, if you already are a skrub user, we would love to hear about your use cases and challenges in the `Discussions \u003Chttps:\u002F\u002Fgithub.com\u002Fskrub-data\u002Fskrub\u002Fdiscussions>`_ section.\n\nTo report a bug or suggest enhancements, please\n`open an issue \u003Chttps:\u002F\u002Fdocs.github.com\u002Fen\u002Fissues\u002Ftracking-your-work-with-issues\u002Fcreating-an-issue>`_.\n\nIf you want to contribute directly to the library, then check the\n`how to contribute \u003Chttps:\u002F\u002Fskrub-data.org\u002Fstable\u002FCONTRIBUTING.html>`_ page on\nthe website for more information.\n","skrub\n=====\n\n.. image:: https:\u002F\u002Fskrub-data.github.io\u002Fstable\u002F_static\u002Fskrub.svg\n   :align: center\n   :width: 50 %\n   :alt: skrub logo\n\n\n|py_ver| |pypi_var| |pypi_dl| |codecov| |circleci| |black|\n\n.. |py_ver| image:: https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fpyversions\u002Fskrub\n.. |pypi_var| image:: https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fskrub?color=informational\n.. |pypi_dl| image:: https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fdm\u002Fskrub\n.. |codecov| image:: https:\u002F\u002Fimg.shields.io\u002Fcodecov\u002Fc\u002Fgithub\u002Fskrub-data\u002Fskrub\u002Fmain\n.. |circleci| image:: https:\u002F\u002Fimg.shields.io\u002Fcircleci\u002Fbuild\u002Fgithub\u002Fskrub-data\u002Fskrub\u002Fmain?label=CircleCI\n.. |black| image:: https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fcode%20style-black-000000.svg\n\n\n**skrub**（前身为 *dirty_cat*）是一个用于在数据框上进行机器学习的 Python 库。\n\n如果你喜欢这个库，请帮忙宣传，并为本仓库点个赞！你也可以加入我们的 `Discord 服务器 \u003Chttps:\u002F\u002Fdiscord.gg\u002FABaPnm7fDC>`_。\n\n官网：https:\u002F\u002Fskrub-data.org\u002F\n\n查看我们的 `示例 \u003Chttps:\u002F\u002Fskrub-data.org\u002Fstable\u002Fauto_examples>`_，或浏览我们的 `学习资料 \u003Chttps:\u002F\u002Fskrub-data.org\u002Fskrub-materials\u002Findex.html>`_。\n\n安装\n----\n\nskrub 可以通过 `pip` 或 `conda` 轻松安装。更多安装信息，请参阅 `安装说明 \u003Chttps:\u002F\u002Fskrub-data.org\u002Fstable\u002Finstall.html>`_。\n\n贡献\n----\n\n支持 skrub 开发的最佳方式就是让更多人了解它！\n\n此外，如果你已经是 skrub 的用户，欢迎在 `讨论区 \u003Chttps:\u002F\u002Fgithub.com\u002Fskrub-data\u002Fskrub\u002Fdiscussions>`_ 分享你的使用场景和遇到的挑战。\n\n如需报告 bug 或提出改进建议，请 `新建一个议题 \u003Chttps:\u002F\u002Fdocs.github.com\u002Fen\u002Fissues\u002Ftracking-your-work-with-issues\u002Fcreating-an-issue>`_。\n\n如果你想直接为库做出贡献，请访问官网上的 `如何贡献 \u003Chttps:\u002F\u002Fskrub-data.org\u002Fstable\u002FCONTRIBUTING.html>`_ 页面获取更多信息。","# skrub 快速上手指南\n\n**skrub**（前身为 *dirty_cat*）是一个专为 DataFrame 设计的 Python 库，旨在简化机器学习流程，特别擅长处理现实世界中“脏”或复杂的表格数据。\n\n## 环境准备\n\n在开始之前，请确保您的开发环境满足以下要求：\n\n*   **操作系统**：Windows、macOS 或 Linux\n*   **Python 版本**：3.8 及以上版本\n*   **前置依赖**：建议安装 `scikit-learn`、`pandas` 和 `numpy`（安装 skrub 时通常会自动解决依赖）\n\n## 安装步骤\n\n您可以使用 `pip` 或 `conda` 进行安装。国内开发者推荐使用国内镜像源以加速下载。\n\n### 方式一：使用 pip 安装（推荐）\n\n使用清华大学开源软件镜像源进行安装：\n\n```bash\npip install skrub -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n### 方式二：使用 conda 安装\n\n如果您使用 Anaconda 或 Miniconda，可以通过 conda-forge 渠道安装：\n\n```bash\nconda install -c conda-forge skrub\n```\n\n## 基本使用\n\nskrub 的核心优势在于能够轻松将包含字符串、缺失值或非数值类型的 DataFrame 转换为机器学习模型可用的数值特征矩阵。以下是最简单的使用示例：\n\n```python\nimport pandas as pd\nfrom skrub import TableVectorizer\nfrom sklearn.linear_model import LogisticRegression\n\n# 1. 创建一个包含混合类型数据的简单 DataFrame\ndata = {\n    \"age\": [25, 30, 35, None],\n    \"department\": [\"HR\", \"Engineering\", \"HR\", \"Sales\"],\n    \"salary\": [50000, 80000, 60000, 45000],\n    \"performance\": [\"Good\", \"Excellent\", \"Average\", \"Good\"]\n}\ndf = pd.DataFrame(data)\n\n# 2. 使用 TableVectorizer 自动处理分类变量和缺失值\nvectorizer = TableVectorizer()\nX_transformed = vectorizer.fit_transform(df)\n\n# 3. 直接连接机器学习模型进行训练\n# 假设我们有一个目标变量 y (此处仅为示例占位)\ny = [0, 1, 1, 0] \n\nmodel = LogisticRegression()\nmodel.fit(X_transformed, y)\n\nprint(\"数据转换成功，模型训练完成！\")\nprint(f\"转换后的特征形状: {X_transformed.shape}\")\n```\n\n在这个示例中，`TableVectorizer` 自动识别了数值列（如 `age`, `salary`）和分类列（如 `department`, `performance`），并对它们进行了适当的编码和处理，无需手动编写预处理代码。","某电商数据分析师需要利用包含大量非标准化文本（如用户评论、杂乱的商品类别）的历史订单数据，构建一个预测客户流失率的机器学习模型。\n\n### 没有 skrub 时\n- 面对“手机\u002F智能手机\u002F手提电话”这类语义相同但写法各异的类别列，只能手动编写复杂的映射字典或正则表达式进行清洗，耗时且容易遗漏。\n- 处理包含拼写错误和变体的自由文本特征时，缺乏自动化的向量化手段，往往被迫直接丢弃这些富含信息的列，导致模型精度受限。\n- 预处理流程与建模步骤割裂，每次更新数据都需要重新运行冗长的清洗脚本，难以将整个流程封装为统一的管道进行交叉验证。\n- 对于高基数分类变量，传统独热编码会导致维度爆炸，而手动选择编码策略（如目标编码）极易引发数据泄露风险。\n\n### 使用 skrub 后\n- 利用 `TableVectorizer` 自动识别并处理脏数据，智能地将相似的非标准类别聚合，无需人工干预即可生成高质量数值特征。\n- 通过内置的字符串编码器（如 MinHashEncoder），直接将杂乱的文本列转化为稠密向量，保留了原本可能被丢弃的关键语义信息。\n- 将数据清洗与模型训练无缝集成到单一的 Scikit-Learn 管道中，实现了从原始 DataFrame 到模型预测的一键式流转，大幅提升了迭代效率。\n- 针对高基数特征自动应用安全的编码策略，在有效控制特征维度的同时，彻底规避了训练集与验证集之间的数据泄露问题。\n\nskrub 让数据科学家能够直接在原始的“脏”DataFrame 上构建强大的机器学习管道，将原本数天的数据清洗工作缩短为几分钟的自动化流程。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fskrub-data_skrub_2a8cbc23.png","skrub-data","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fskrub-data_2e67daf0.png","Prepping data for analytics",null,"skrub_data","https:\u002F\u002Fgithub.com\u002Fskrub-data",[79,83,87,91,94],{"name":80,"color":81,"percentage":82},"Python","#3572A5",92.1,{"name":84,"color":85,"percentage":86},"JavaScript","#f1e05a",3.4,{"name":88,"color":89,"percentage":90},"HTML","#e34c26",2.1,{"name":92,"color":93,"percentage":32},"CSS","#663399",{"name":95,"color":96,"percentage":97},"Shell","#89e051",0.5,1592,213,"2026-04-14T17:16:13","BSD-3-Clause",1,"","未说明",{"notes":106,"python":104,"dependencies":107},"README 中未详细列出具体的运行环境需求（如操作系统、GPU、内存、具体依赖版本等），仅指出可通过 pip 或 conda 安装，并建议访问官方文档查看详细的安装说明。",[],[16,14,109],"其他",[111,112,113,114,115,116,117,118,119,120,121],"machine-learning","data-science","data-cleaning","data","data-preparation","data-preprocessing","data-analysis","dirty-data","data-wrangling","dataframe","dataframes","2026-03-27T02:49:30.150509","2026-04-16T15:50:51.625545",[125,130,135,140,145,149],{"id":126,"question_zh":127,"answer_zh":128,"source_url":129},36165,"如何编写自定义转换器并将其应用于 DataFrame 的特定列？","您可以继承 `SingleColumnTransformer` 类来编写处理单个 Series 的自定义转换器，并结合 `ApplyToCols` 使用。如果列不符合转换条件，可以抛出 `RejectColumn` 异常，这样 `ApplyToCols` 会保留该列不变。\n\n示例代码：\n```python\nimport pandas as pd\nimport skrub.selectors as s\nfrom skrub import DropCols, ApplyToCols\nfrom skrub._table_vectorizer import SingleColumnTransformer # 注意：具体导入路径可能随版本变化，参考最新文档\n\ndf = pd.DataFrame({\"a\": [None, None, None, 1], \"b\": [1,2,3,4]})\n\nclass MyTransformer(SingleColumnTransformer):\n    def fit_transform(self, col, y=None):\n        return col * 10\n\nresult = ApplyToCols(MyTransformer()).fit_transform(df)\n```\n这将把数值列乘以 10，同时保持其他列（如包含 NaN 的列，如果被拒绝）不变。","https:\u002F\u002Fgithub.com\u002Fskrub-data\u002Fskrub\u002Fissues\u002F1730",{"id":131,"question_zh":132,"answer_zh":133,"source_url":134},36166,"DatetimeEncoder 是否支持提取季节性特征（如一年中的季节、一天中的时段）和节假日特征？","是的，`DatetimeEncoder` 已经增强了相关功能。\n1. **季节性模式**：已通过引入样条变换（splines）和循环编码（circular encoding）支持，可以捕捉一年中或一天内的周期性模式。\n2. **节假日特征**：该功能也在开发或追踪中（参考相关 Issue #710），旨在利用第三方库或类似 Polars 的业务日特性来识别节假日。\n如果您需要更细粒度的控制，也可以考虑组合使用 `SeasonalFeaturizer`（如果可用）来分别指定“每天的小时”或“每年的天数”等周期。","https:\u002F\u002Fgithub.com\u002Fskrub-data\u002Fskrub\u002Fissues\u002F907",{"id":136,"question_zh":137,"answer_zh":138,"source_url":139},36167,"在交互式会话（如 Jupyter 或 VS Code）中重新运行单元格时，遇到 \"ValueError: Choice and node names must be unique\" 错误怎么办？","这个错误通常是因为在交互式环境中重复执行了定义 Skrub 表达式（如 `skrub.choose_int` 或 `skrub.choose_from`）的单元格，导致图中节点名称冲突。\n\n**解决方案：**\n1. **重启内核**：最简单的方法是重启 Python 内核并重新按顺序运行所有单元格。\n2. **避免重复执行**：在修改超参数选择范围后，尽量避免只重新运行部分单元格，而是重置环境。\n3. **注意变量复用**：检查是否在同一变量名下重复赋值了不同的 Skrub 表达式对象。\n维护者计划改进错误提示信息以更好地指导用户，但在当前版本中，确保每个表达式节点名称唯一或在干净的环境中运行是主要解决手段。","https:\u002F\u002Fgithub.com\u002Fskrub-data\u002Fskrub\u002Fissues\u002F1306",{"id":141,"question_zh":142,"answer_zh":143,"source_url":144},36168,"如何为项目贡献代码以确保文档字符串（docstrings）符合 numpydoc 规范？","贡献者可以通过以下步骤修复文档字符串以通过 numpydoc 验证：\n1. **安装依赖**：确保已安装开发依赖和文档依赖（参考项目的 `CONTRIBUTING.rst` 指南）。\n2. **认领任务**：在相关 Issue 列表中选择一个函数或类，并在 Issue 下留言说明您正在处理它，以避免重复工作。\n3. **创建分支**：在修改文件前，从 `main` 分支创建一个新的独立分支。\n4. **修复与测试**：修改选定的函数\u002F类的文档字符串，使其符合 numpydoc 格式（例如：使用三引号、首句以句号结尾、无多余空行等），然后运行本地测试确认不再报错。\n5. **提交 PR**：提交您的更改并发起 Pull Request。","https:\u002F\u002Fgithub.com\u002Fdirty-cat\u002Fdirty_cat\u002Fissues\u002F345",{"id":146,"question_zh":147,"answer_zh":148,"source_url":139},36169,"Skrub 如何处理高基数类别特征的编码？有哪些可用的编码器？","Skrub 提供了多种专门用于处理高基数类别特征的编码器，通常在 `TableVectorizer` 中自动调用或单独使用：\n1. **MinHashEncoder**：适用于非常大量的类别，通过哈希技巧降低维度。\n2. **StringEncoder (或 SimilarityEncoder)**：基于字符串相似度进行编码。\n3. **动态选择**：您可以使用 `skrub.choose_from` 在超参数搜索中自动比较不同编码器（如 MinHash 和 LSA\u002FStringEncoder）的效果。\n\n示例配置：\n```python\nn = skrub.choose_int(5, 15, log=True, name=\"n_components\")\nencoder = skrub.choose_from(\n    {\n        \"MinHash\": skrub.MinHashEncoder(n_components=n),\n        \"LSA\": skrub.StringEncoder(n_components=n),\n    },\n    name=\"encoder\",\n)\nvectorizer = skrub.TableVectorizer(high_cardinality=encoder)\n```\n这允许您在管道中自动搜索最佳的编码器类型及其参数。",{"id":150,"question_zh":151,"answer_zh":152,"source_url":134},36170,"如何在 Skrub 中组合不同的日期时间特征提取策略（例如同时提取小时和年份特征）？","虽然 `DatetimeEncoder` 正在集成更多自动化功能，但如果您需要手动组合不同的周期性特征，可以使用 `make_union` 将多个特征提取器结合起来。例如，您可以分别定义针对“一天内小时”和“一年内天数”的特征化器：\n\n```python\nfrom sklearn.compose import make_union\n# 假设 SeasonalFeaturizer 是可用的组件或自定义实现\nfeaturizer = make_union(\n    SeasonalFeaturizer(date_col=\"datetime\", kind=\"hour_per_day\", knots=24),\n    SeasonalFeaturizer(date_col=\"date\", kind=\"day_of_year\", knots=12)\n)\n```\n这种方法让您能灵活地控制每个时间周期的分辨率（knots 数量），特别适合对特征工程有精细要求的场景。未来的 `DatetimeEncoder` 可能会根据输入数据类型（datetime vs date）自动推断这些设置。",[154,159,164,169,174,179,184],{"id":155,"version":156,"summary_zh":157,"released_at":158},288930,"0.8.0","# ✨ skrub 0.8.0 版本已发布 ✨\n\n\n## 主要变更\n* ApplyToCols 转换器已被简化，现可覆盖 ApplyToCols 和 ApplyToFrame 的功能。因此，后两者已被移除。由 @rcap107 提供。\n* Polars 的最低支持版本已从 0.20 提升至 1.5。Polars 仍为可选依赖项。由 @rcap107 提供。\n* 通过新增 `eager_data_ops` 配置参数，提升了大型 DataOps 计划的性能，由 @jeromedockes 提供。\n* DataOps 报告已得到改进，提供更多详细信息，由 @jeromedockes 提供。\n* SingleColumnTransformer 和 RejectColumn 类现已成为公开类，可用于构建自定义转换器，由 @emassoulie 提供。\n* `has_nulls` 选择器现可接受空值数量阈值，由 @gabrielapgomezji 提供。\n* Cleaner 现在会将 \"none\" 和 \"None\" 视为空字符串，并可使用用户指定的空值，由 @lisaleemcb 提供。\n* 现在可以在 Data Ops 中向 CV 拆分器传递关键字参数，例如为 CV 拆分器提供分组信息。由 @jeromedockes 提供。\n* TableReport 自定义筛选器界面已简化并扩展，由 @lisaleemcb 提供。\n* 配置参数 `use_table_report` 已被移除，由 @rcap107 提供。\n* 为保持一致性，库中不再对 Polars 延迟框架执行任何收集操作。由 @MuditAtrey 提供。\n\n## 新贡献者\n* @augustebaum 在 https:\u002F\u002Fgithub.com\u002Fskrub-data\u002Fskrub\u002Fpull\u002F1921 中完成了首次贡献。\n* @MuditAtrey 在 https:\u002F\u002Fgithub.com\u002Fskrub-data\u002Fskrub\u002Fpull\u002F1940 中完成了首次贡献。\n* @nightcityblade 在 https:\u002F\u002Fgithub.com\u002Fskrub-data\u002Fskrub\u002Fpull\u002F1938 中完成了首次贡献。\n* @lisaleemcb 在 https:\u002F\u002Fgithub.com\u002Fskrub-data\u002Fskrub\u002Fpull\u002F1952 中完成了首次贡献。\n* @DCchoudhury15 在 https:\u002F\u002Fgithub.com\u002Fskrub-data\u002Fskrub\u002Fpull\u002F1963 中完成了首次贡献。\n* @satishkc7 在 https:\u002F\u002Fgithub.com\u002Fskrub-data\u002Fskrub\u002Fpull\u002F1985 中完成了首次贡献。\n\n**完整更新日志**: https:\u002F\u002Fgithub.com\u002Fskrub-data\u002Fskrub\u002Fcompare\u002F0.7.2...0.8.0","2026-03-25T13:18:42",{"id":160,"version":161,"summary_zh":162,"released_at":163},288931,"0.7.2","# ✨ skrub 0.7.2 版本已发布 ✨\n\n在本次发布中，我们修复了更多 bug，改进了 API 文档，并新增了一个示例。\n\n**主要变更：**\n\n- StringEncoder 现在公开了 vocabulary 参数，以便将其传递给底层的 TfidfVectorizer。\n- 将 compute_ngram_distance 函数设为私有，以减少代码冗余。\n- 通过移除部分用于基准测试的材料，减小了仓库的 wheel 包体积。\n\n## 变更内容\n* @siddharthbaleja7 在 https:\u002F\u002Fgithub.com\u002Fskrub-data\u002Fskrub\u002Fpull\u002F1838 中将 compute_ngram_distance 重命名为 _compute_ngram_distance\n* @emassoulie 在 https:\u002F\u002Fgithub.com\u002Fskrub-data\u002Fskrub\u002Fpull\u002F1819 中向 StringEncoder 公开了 \"vocabulary\" 参数\n* @Faith-Nchifor 在 https:\u002F\u002Fgithub.com\u002Fskrub-data\u002Fskrub\u002Fpull\u002F1854 中为加州住房数据集添加了“磁盘占用大小”信息\n* DOC - @e-strauss 在 https:\u002F\u002Fgithub.com\u002Fskrub-data\u002Fskrub\u002Fpull\u002F1880 中提供了使用 PyTorch 结合 DataOps（通过 skorch）的新示例\n* @rcap107 在 https:\u002F\u002Fgithub.com\u002Fskrub-data\u002Fskrub\u002Fpull\u002F1893 中将基准测试移至一个独立的仓库\n\n## 新贡献者\n* @Soham-47 在 https:\u002F\u002Fgithub.com\u002Fskrub-data\u002Fskrub\u002Fpull\u002F1808 中做出了首次贡献\n* @Faith-Nchifor 在 https:\u002F\u002Fgithub.com\u002Fskrub-data\u002Fskrub\u002Fpull\u002F1811 中做出了首次贡献\n* @siddharthbaleja7 在 https:\u002F\u002Fgithub.com\u002Fskrub-data\u002Fskrub\u002Fpull\u002F1838 中做出了首次贡献\n* @Eshaan-byte 在 https:\u002F\u002Fgithub.com\u002Fskrub-data\u002Fskrub\u002Fpull\u002F1839 中做出了首次贡献\n* @techy4shri 在 https:\u002F\u002Fgithub.com\u002Fskrub-data\u002Fskrub\u002Fpull\u002F1820 中做出了首次贡献\n* @PredictiveManish 在 https:\u002F\u002Fgithub.com\u002Fskrub-data\u002Fskrub\u002Fpull\u002F1858 中做出了首次贡献\n* @josselinonduty 在 https:\u002F\u002Fgithub.com\u002Fskrub-data\u002Fskrub\u002Fpull\u002F1826 中做出了首次贡献\n* @sabasiddique1 在 https:\u002F\u002Fgithub.com\u002Fskrub-data\u002Fskrub\u002Fpull\u002F1888 中做出了首次贡献\n* @e-strauss 在 https:\u002F\u002Fgithub.com\u002Fskrub-data\u002Fskrub\u002Fpull\u002F1880 中做出了首次贡献\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fskrub-data\u002Fskrub\u002Fcompare\u002F0.7.1...0.7.2","2026-02-10T13:20:33",{"id":165,"version":166,"summary_zh":167,"released_at":168},288932,"0.7.1","# 版本 0.7.1\n\n## 新特性\n\n- 在 `skrub.datasets` 模块中新增了一个数据集 `fetch_california_housing()`，它提供了对 scikit-learn 中 `fetch_california_housing()` 函数的冗余副本。[#1830](https:\u002F\u002Fgithub.com\u002Fskrub-data\u002Fskrub\u002Fpull\u002F1830)，由 [Guillaume Lemaitre](https:\u002F\u002Fgithub.com\u002Fglemaitre) 提供。\n\n## 错误修复\n\n- [DropCols](https:\u002F\u002Fskrub-data.org\u002Fstable\u002Freference\u002Fgenerated\u002Fskrub.DropCols.html#skrub.DropCols) 和 SelectCols：为遵循 scikit-learn 中用于判断估计器是否已拟合的惯例，将属性名改为以下划线结尾。[#1813](https:\u002F\u002Fgithub.com\u002Fskrub-data\u002Fskrub\u002Fpull\u002F1813)，由 [Auguste Baum](https:\u002F\u002Fgithub.com\u002Fauguste-probabl) 提供。","2026-01-06T15:30:59",{"id":170,"version":171,"summary_zh":172,"released_at":173},288933,"0.7.0","# 发布版本 0.7.0\n\n## ✨ 亮点\n\n- Data Ops 现在可以使用 [Optuna](https:\u002F\u002Foptuna.readthedocs.io\u002Fen\u002Fstable\u002F) 进行调参。\n- 现在可以通过 `DataOps.skb.apply` 向估计器传递额外的命名参数。\n- `TableReport` 现在支持 NumPy 数组。\n- 最低支持的 Python 版本已提升至 3.10，而 scikit-learn 和 requests 的最低支持版本分别提升至 1.4.2 和 2.27.1。\n- 增加了对即将发布的 Pandas 3.0 的支持。\n- 修复了大量的 bug。\n\n共有 16 位新贡献者参与了本次发布 🎉\n\n## 新特性\n\n- 现在可以使用 [Optuna](https:\u002F\u002Foptuna.readthedocs.io\u002Fen\u002Fstable\u002F) 对 `DataOp` 中的选择进行调参。#1661，由 @jeromedockes 提供。\n- `DataOp.skb.apply` 现在允许通过 `fit_kwargs`、`predict_kwargs` 等参数向估计器的方法传递额外的命名参数。#1642，由 @jeromedockes 提供。\n- `TableReport` 现在会显示布尔型列的均值统计信息。#1647，由 @abenechehab 提供。\n- `DataOp.skb.get_vars` 允许检查 `DataOp` 中的所有变量或所有命名数据操作。这使得我们可以轻松了解应包含在传递给 `DataOp.skb.eval` 或 `SkrubLearner.fit`、`SkrubLearner.predict` 等方法的 `environment` 字典中的键。#1646，由 @jeromedockes 提供。\n- `DataOp.skb.iter_cv_splits` 会遍历交叉验证拆分器生成的训练和测试环境——类似于 `DataOp.skb.train_test_split`，但适用于多个交叉验证拆分。#1653，由 @jeromedockes 提供。\n- `TableReport` 现在支持 `np.array`。#1676，由 @Nismamjad1 提供。\n- `DataOp.skb.full_report` 现在接受一个名为 `title` 的新参数，该参数会显示在 HTML 报告中。#1654，由 @MarieSacksick 提供。\n- `TableReport` 现在包含 `open_tab` 参数，允许用户选择在渲染 `TableReport` 时应打开哪个标签页。#1737，由 @rcap107 提供。\n\n## 变更\n\n- 最低支持的 Python 版本已提升至 3.10。此外，scikit-learn 和 requests 的最低支持版本分别为 1.4.2 和 2.27.1。同时增加了对 Python 3.14 的支持。#1572，由 @rcap107 提供。\n- `DataOp.skb.full_report` 方法现在会在 7 天后删除使用 `output_dir=None` 创建的报告。#1657，由 @dierickxsimon 提供。\n- `tabular_pipeline` 在使用线性模型时，会使用 `SquashingScaler` 而不是 `StandardScaler` 来对数值特征进行中心化和标准化。#1644，由 @dierickxsimon 提供。\n- 之前称为 `ToFloat32` 的转换器 `ToFloat` 现在已公开。#1687，由 @MarieSacksick 提供。\n- 改进了当将 Polars lazyframe 传递给 `TableReport` 时抛出的错误信息，明确指出必须先调用 `.collect()`。#1767，由 @fatiben2002 提供。\n- `TableReport` 中关联性的计算现在是确定性的，并且可以通过全局配置的新参数 `subsampling_seed` 进行控制。#1775，由 @thomass-dev 提供。\n- 向 `Cleaner` 添加了 `cast_to_str` 参数，以防止列表\u002F对象类列被意外转换为字符串。","2025-12-12T09:40:49",{"id":175,"version":176,"summary_zh":177,"released_at":178},288934,"0.6.2","**新功能**\n- `DataOp.skb.full_report()` 现在会显示每个节点的评估耗时。[#1596](https:\u002F\u002Fgithub.com\u002Fskrub-data\u002Fskrub\u002Fpull\u002F1596)，由 [Jérôme Dockès](https:\u002F\u002Fgithub.com\u002Fjeromedockes) 提供。\n- 用户指南已重新整理并扩充。\n\n**变更与弃用**\n- Ken 嵌入现已弃用。[#1546](https:\u002F\u002Fgithub.com\u002Fskrub-data\u002Fskrub\u002Fpull\u002F1546)，由 [Vincent Maladiere](https:\u002F\u002Fgithub.com\u002FVincent-Maladiere) 提供。\n- `.skb.apply()` 方法参数 `how` 的可接受值已更改。新的取值为 \"auto\"、\"cols\"、\"frame\" 和 \"no_wrap\"。[#1628](https:\u002F\u002Fgithub.com\u002Fskrub-data\u002Fskrub\u002Fpull\u002F1628)，由 [Jérôme Dockès](https:\u002F\u002Fgithub.com\u002Fjeromedockes) 提供。\n- `.skb.train_test_split()` 方法的参数 `splitter` 已更名为 `split_func`。[#1630](https:\u002F\u002Fgithub.com\u002Fskrub-data\u002Fskrub\u002Fpull\u002F1630)，由 [Jérôme Dockès](https:\u002F\u002Fgithub.com\u002Fjeromedockes) 提供。\n\n**主要修复**\n- 修复了 DataOp 对象在 Google Colab 单元格输出中的显示问题。[#1590](https:\u002F\u002Fgithub.com\u002Fskrub-data\u002Fskrub\u002Fpull\u002F1590)，由 [Jérôme Dockès](https:\u002F\u002Fgithub.com\u002Fjeromedockes) 提供。\n- 修复了当 `log=False` 且 `n_steps` 为 `None` 时，`choose_float()` 和 `choose_int()` 在何处采样数值的问题。此前范围是 `low` 到 `low + high`，现更正为 `low` 到 `high`。[#1603](https:\u002F\u002Fgithub.com\u002Fskrub-data\u002Fskrub\u002Fpull\u002F1603)，由 [Jérôme Dockès](https:\u002F\u002Fgithub.com\u002Fjeromedockes) 提供。\n- [SkrubLearner](https:\u002F\u002Fskrub-data.org\u002Fstable\u002Freference\u002Fgenerated\u002Fskrub.SkrubLearner.html#skrub.SkrubLearner) 曾在调用 `fit()` 时对训练集进行预测，此问题现已修复。[#1610](https:\u002F\u002Fgithub.com\u002Fskrub-data\u002Fskrub\u002Fpull\u002F1610)，由 [Jérôme Dockès](https:\u002F\u002Fgithub.com\u002Fjeromedockes) 提供。\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fskrub-data\u002Fskrub\u002Fcompare\u002F0.6.1...0.6.2","2025-09-26T08:31:56",{"id":180,"version":181,"summary_zh":182,"released_at":183},288935,"0.6.1","## Bug修复\n- 当 [GapEncoder](https:\u002F\u002Fskrub-data.org\u002Fdev\u002Freference\u002Fgenerated\u002Fskrub.GapEncoder.html#skrub.GapEncoder)、[DropCols](https:\u002F\u002Fskrub-data.org\u002Fdev\u002Freference\u002Fgenerated\u002Fskrub.DropCols.html#skrub.DropCols) 以及 SelectCols 在 scikit-learn 的 Pipeline 中使用时，`get_feature_names_out` 现已正常工作。此外，[DropCols](https:\u002F\u002Fskrub-data.org\u002Fdev\u002Freference\u002Fgenerated\u002Fskrub.DropCols.html#skrub.DropCols) 的 `get_feature_names_out` 方法现在返回的是未被删除的列名，而非被删除的列名。[#1543](https:\u002F\u002Fgithub.com\u002Fskrub-data\u002Fskrub\u002Fpull\u002F1543)，由 [Riccardo Cappuzzo](https:\u002F\u002Fgithub.com\u002Frcap107) 提交。\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002Fskrub-data\u002Fskrub\u002Fcompare\u002F0.6.0...0.6.1","2025-08-20T07:49:07",{"id":185,"version":186,"summary_zh":187,"released_at":188},288936,"0.6.0","## 🚀 亮点  \n* 重大功能！Skrub DataOps 是一种强大的全新方法，可将跨多个表的数据框转换与机器学习流水线相结合。DataOps 可以组合成完整的数据方案，用于训练和调优机器学习模型。随后，这些 DataOps 方案可导出为 Learners（[skrub.SkrubLearner](https:\u002F\u002Fskrub-data.org\u002Fdev\u002Freference\u002Fgenerated\u002Fskrub.SkrubLearner.html#skrub.SkrubLearner)），即独立的对象，可在新数据上直接使用。有关 DataOps 的更多详细信息，请参阅[用户指南](https:\u002F\u002Fskrub-data.org\u002Fdev\u002Fuserguide_data_ops.html#userguide-data-ops)以及[示例](https:\u002F\u002Fskrub-data.org\u002Fdev\u002Fauto_examples\u002Fdata_ops\u002Findex.html#data-ops-examples-ref)。\n* [TableReport](https:\u002F\u002Fskrub-data.org\u002Fdev\u002Freference\u002Fgenerated\u002Fskrub.TableReport.html#skrub.TableReport) 已经得到多项改进，新增了大量功能。现在直接支持 Series。当数据框中的列数超过用户自定义的阈值时，可以跳过计算列关联并生成图表。此外，高基数列和已排序列现在会在报告中被突出显示。\n* 现已提供 [selectors](https:\u002F\u002Fdocs.python.org\u002F3\u002Flibrary\u002Fselectors.html#module-selectors)、[ApplyToCols](https:\u002F\u002Fskrub-data.org\u002Fdev\u002Freference\u002Fgenerated\u002Fskrub.ApplyToCols.html#skrub.ApplyToCols) 和 [ApplyToFrame](https:\u002F\u002Fskrub-data.org\u002Fdev\u002Freference\u002Fgenerated\u002Fskrub.ApplyToFrame.html#skrub.ApplyToFrame)，这些工具可灵活地选择应应用转换器的列。更多详情请参阅[用户指南](https:\u002F\u002Fskrub-data.org\u002Fdev\u002Fuserguide_selectors.html#userguide-selectors)及[示例](https:\u002F\u002Fskrub-data.org\u002Fdev\u002Fauto_examples\u002F10_apply_on_cols.html#sphx-glr-auto-examples-10-apply-on-cols-py)。\n* 新增了 [SquashingScaler](https:\u002F\u002Fskrub-data.org\u002Fdev\u002Freference\u002Fgenerated\u002Fskrub.SquashingScaler.html#skrub.SquashingScaler)：该 scaler 能够稳健地重新缩放并平滑裁剪数值列，从而在神经网络中更稳健地处理数值列。请参阅[示例](https:\u002F\u002Fskrub-data.org\u002Fdev\u002Fauto_examples\u002F11_squashing_scaler.html#sphx-glr-auto-examples-11-squashing-scaler-py)。\n\n### 🎆 新功能  \n- Skrub DataOps 是一种全新的机制，用于构建可处理多表的机器学习流水线，并能轻松描述其超参数空间。主要 PR：[#1233](https:\u002F\u002Fgithub.com\u002Fskrub-data\u002Fskrub\u002Fpull\u002F1233)，由 [Jérôme Dockès](https:\u002F\u002Fgithub.com\u002Fjeromedockes) 提交。其他贡献者的额外工作可在此处查看：[此处](https:\u002F\u002Fgithub.com\u002Fskrub-data\u002Fskrub\u002Fissues?q=merged%3A%3C2025-07-24%20label%3Adata_ops)：[Vincent Maladiere](https:\u002F\u002Fgithub.com\u002FVincent-Maladiere) 在众多用例和数据集上试用了 DataOps，提供了反馈并提出了改进建议，同时完善了示例（包括制作所有示例中的图表）并在平行坐标图中添加了抖动效果；[Riccardo Cappuzzo](h","2025-08-20T07:46:25"]