开发者指南# 贡献 贡献方式 自动化贡献策略 提交错误报告或功能请求 如何撰写有效的错误报告 贡献代码 视频资源 如何贡献 拉取请求清单 持续集成 (CI) 提交信息标记 构建锁文件 解决锁文件冲突 停滞的拉取请求 停滞和无人认领的问题 适合新贡献者的问题 文档 构建文档 GitHub Actions 上生成的文档 测试和改进测试覆盖率 监控性能 问题跟踪器标签 保持向后兼容性 弃用 更改参数的默认值 代码审查指南 阅读现有代码库 为 scikit-learn 创建最小可重现的示例 良好实践 提供一个带有最少注释的失败代码示例 将您的脚本精简到尽可能小的程度 请勿 报告您的数据,除非绝对必要 使用 Markdown 格式 合成数据集 NumPy Pandas make_regression make_classification make_blobs 数据集加载实用程序 开发 scikit-learn 估计器 scikit-learn 对象的 API 不同的对象 估计器 实例化 拟合 估计属性 通用属性 创建您自己的估计器 get_params 和 set_params 克隆 估计器类型 估计器标签 用于 set_output 的开发者 API 用于 check_is_fitted 的开发者 API 用于 HTML 表示的开发者 API 编码指南 输入验证 随机数 测试中的数值断言 开发者技巧和窍门 提高效率和保持理智的小技巧 在拉取请求中折叠和展开过时的差异 将拉取请求检出为远程跟踪分支 在拉取请求中显示代码覆盖率 有用的 pytest 别名和标志 审查的标准回复 调试 CI 问题 使用锁文件获取接近 CI 的环境 使用 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 的开发版本 安装每日构建版本 从源代码构建 依赖项 运行时依赖项 构建依赖项 测试依赖项 从标签构建特定版本 特定平台的说明 Windows macOS 来自 conda-forge 的 macOS 编译器 来自 Homebrew 的 macOS 编译器 Linux 来自系统的 Linux 编译器 来自 conda-forge 的 Linux 编译器 FreeBSD 错误分类和问题管理 处理问题以改进它们 处理 PR 以帮助审查 核心和贡献者体验团队成员的分类操作 问题分类的典型工作流程 维护者信息 发布 参考步骤 更新作者列表 合并拉取请求 scikit-learn.org 网站 实验性功能 使用绘图 API 进行开发 绘图 API 概述 使用多个轴进行绘图