开发者指南# 贡献 贡献方式 自动化贡献政策 提交错误报告或功能请求 如何提交有效的错误报告 贡献代码 视频资源 如何贡献 拉取请求清单 持续集成 (CI) 停滞的拉取请求 停滞和无人认领的问题 适合新贡献者的问题 文档 构建文档 GitHub Actions 上生成的文档 测试和改进测试覆盖率 监控性能 问题跟踪器标签 维护向后兼容性 弃用 更改参数的默认值 代码审查指南 阅读现有代码库 为 scikit-learn 创建最小可重现的示例 良好实践 提供带有最小注释的失败代码示例 将您的脚本简化为尽可能小的内容 不要报告您的数据,除非绝对必要 使用 Markdown 格式 合成数据集 NumPy Pandas make_regression make_classification make_blobs 数据集加载工具 开发 scikit-learn 估计器 scikit-learn 对象的 API 不同的对象 估计器 实例化 拟合 估计属性 可选参数 通用属性 创建自己的估计器 get_params 和 set_params 参数和 init 克隆 管道兼容性 估计器类型 特定模型 估计器标签 用于 set_output 的开发者 API 用于 check_is_fitted 的开发者 API 用于 HTML 表示的开发者 API 编码指南 输入验证 随机数 测试中的数值断言 开发者提示和技巧 提高生产力和保持理智的技巧 在拉取请求中折叠和展开过时的差异 将拉取请求检出为远程跟踪分支 在拉取请求中显示代码覆盖率 有用的 pytest 别名和标志 标准的审查回复 使用 valgrind 调试 Cython 中的内存错误 在 x86_64 机器上为 ARM64 平台构建和测试 Meson 构建后端 开发者工具 验证工具 高效的线性代数和数组操作 高效的随机采样 用于稀疏矩阵的有效例程 图例程 测试函数 多类和多标签实用函数 辅助函数 哈希函数 警告和异常 如何优化速度 Python、Cython 还是 C/C++? 分析 Python 代码 内存使用分析 使用 Cython 分析编译后的扩展 使用 yep 和 gperftools 使用调试器 gdb 使用 gprof 使用 valgrind / callgrind / kcachegrind kcachegrind 使用 joblib.Parallel 进行多核并行 一个简单的算法技巧:热重启 Cython 最佳实践、约定和知识 在 scikit-learn 中使用 Cython 开发的技巧 简化开发的技巧 提高性能的技巧 使用 OpenMP 类型 安装 scikit-learn 的开发版本 安装 nightly builds 从源代码构建 依赖项 运行时依赖项 构建依赖项 测试依赖项 从标签构建特定版本 特定平台的说明 Windows macOS 来自 conda-forge 的 macOS 编译器 来自 Homebrew 的 macOS 编译器 Linux 来自系统的 Linux 编译器 来自 conda-forge 的 Linux 编译器 FreeBSD 替代编译器 错误分类和问题管理 处理问题以改进它们 处理 PR 以帮助审查 核心和贡献者体验团队成员的分类操作 分类问题的典型工作流程 维护者/核心开发者信息 发布 发布前 准备发布 PR 主要版本发布 次要版本发布(也称为错误修复发布) 发布 发布清单 合并拉取请求 scikit-learn.org 网站 实验性功能 使用绘图 API 进行开发 绘图 API 概述 使用多个轴绘图