[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-google--yggdrasil-decision-forests":3,"tool-google--yggdrasil-decision-forests":64},[4,17,27,35,43,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},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,3,"2026-04-05T11:01:52",[13,14,15],"开发框架","图像","Agent","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":23,"last_commit_at":24,"category_tags":25,"status":16},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 真正成长为懂上",138956,2,"2026-04-05T11:33:21",[13,15,26],"语言模型",{"id":28,"name":29,"github_repo":30,"description_zh":31,"stars":32,"difficulty_score":23,"last_commit_at":33,"category_tags":34,"status":16},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 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107662,"2026-04-03T11:11:01",[13,14,15],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":23,"last_commit_at":41,"category_tags":42,"status":16},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[13,26],{"id":44,"name":45,"github_repo":46,"description_zh":47,"stars":48,"difficulty_score":23,"last_commit_at":49,"category_tags":50,"status":16},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,"2026-04-05T10:45:23",[14,51,52,53,15,54,26,13,55],"数据工具","视频","插件","其他","音频",{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":10,"last_commit_at":62,"category_tags":63,"status":16},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,"2026-04-04T04:44:48",[15,14,13,26,54],{"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":79,"owner_email":80,"owner_twitter":81,"owner_website":82,"owner_url":83,"languages":84,"stars":123,"forks":124,"last_commit_at":125,"license":126,"difficulty_score":127,"env_os":128,"env_gpu":129,"env_ram":129,"env_deps":130,"category_tags":135,"github_topics":136,"view_count":23,"oss_zip_url":79,"oss_zip_packed_at":79,"status":16,"created_at":153,"updated_at":154,"faqs":155,"releases":185},2016,"google\u002Fyggdrasil-decision-forests","yggdrasil-decision-forests","A library to train, evaluate, interpret, and productionize decision forest models such as Random Forest and Gradient Boosted Decision Trees. ","Yggdrasil Decision Forests 是一个用于训练、评估和部署决策树森林模型的开源库，支持随机森林、梯度提升树、CART 和孤立森林等多种算法。它帮助用户从数据中构建高性能的机器学习模型，尤其擅长处理结构化表格数据，如用户行为、金融记录或医疗数据。相比传统方法，Yggdrasil Decision Forests 在保持模型可解释性的同时，兼顾了训练速度与预测精度，解决了复杂模型“黑箱”难调试、部署效率低的问题。无论是数据科学家、机器学习工程师，还是希望快速验证模型效果的研究人员，都能轻松上手。它提供 Python 和 C++ 双接口，支持一键保存模型、自动分析特征重要性、生成可视化报告，并内置推理性能基准测试功能。项目由 Google 团队开发，代码开源、文档完善，已在 KDD 2023 被学术界认可为高效可扩展的决策森林解决方案。适合需要稳定、高效、可解释模型的实战场景。","\u003Cp align=\"center\">\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fgoogle_yggdrasil-decision-forests_readme_c517dc414890.png\"  \u002F>\n\u003C\u002Fp>\n\n[![PyPI](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fydf.svg?style=flat-square)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fydf\u002F)\n[![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-Apache_2.0-blue.svg?style=flat-square)](https:\u002F\u002Fopensource.org\u002Flicenses\u002FApache-2.0)\n[![Static](https:\u002F\u002Fimg.shields.io\u002Fstatic\u002Fv1?label=docs&message=stable&style=flat-square)](https:\u002F\u002Fydf.readthedocs.io\u002F)\n[![Static](https:\u002F\u002Fimg.shields.io\u002Fstatic\u002Fv1?label=docs&message=dev&style=flat-square)](https:\u002F\u002Fydf.readthedocs.io\u002Fen\u002Flatest\u002F)\n[![PyPI Downloads](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fdm\u002Fydf?style=flat-square)](https:\u002F\u002Fpepy.tech\u002Fproject\u002Fydf)\n\n**YDF** (Yggdrasil Decision Forests) is a library to train, evaluate, interpret,\nand serve Random Forest, Gradient Boosted Decision Trees, CART and Isolation\nforest models.\n\nSee the [documentation](https:\u002F\u002Fydf.readthedocs.org\u002F) for more information on\nYDF.\n\n## Installation\n\nTo install YDF from [PyPI](https:\u002F\u002Fpypi.org\u002Fproject\u002Fydf\u002F), run:\n\n```shell\npip install ydf -U\n```\n\n## Usage example\n\n[![Open in Colab](https:\u002F\u002Fcolab.research.google.com\u002Fassets\u002Fcolab-badge.svg)](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fgoogle\u002Fyggdrasil-decision-forests\u002Fblob\u002Fmain\u002Fdocumentation\u002Fpublic\u002Fdocs\u002Ftutorial\u002Fusage_example.ipynb)\n\n```python\nimport ydf\nimport pandas as pd\n\n# Load dataset with Pandas\nds_path = \"https:\u002F\u002Fraw.githubusercontent.com\u002Fgoogle\u002Fyggdrasil-decision-forests\u002Fmain\u002Fyggdrasil_decision_forests\u002Ftest_data\u002Fdataset\u002F\"\ntrain_ds = pd.read_csv(ds_path + \"adult_train.csv\")\ntest_ds = pd.read_csv(ds_path + \"adult_test.csv\")\n\n# Train a Gradient Boosted Trees model\nmodel = ydf.GradientBoostedTreesLearner(label=\"income\").train(train_ds)\n\n# Look at a model (input features, training logs, structure, etc.)\nmodel.describe()\n\n# Evaluate a model (e.g. roc, accuracy, confusion matrix, confidence intervals)\nmodel.evaluate(test_ds)\n\n# Generate predictions\nmodel.predict(test_ds)\n\n# Analyse a model (e.g. partial dependence plot, variable importance)\nmodel.analyze(test_ds)\n\n# Benchmark the inference speed of a model\nmodel.benchmark(test_ds)\n\n# Save the model\nmodel.save(\"\u002Ftmp\u002Fmy_model\")\n```\n\nExample with the C++ API.\n\n```c++\nauto dataset_path = \"csv:train.csv\";\n\n\u002F\u002F List columns in training dataset\nDataSpecification spec;\nCreateDataSpec(dataset_path, false, {}, &spec);\n\n\u002F\u002F Create a training configuration\nTrainingConfig train_config;\ntrain_config.set_learner(\"RANDOM_FOREST\");\ntrain_config.set_task(Task::CLASSIFICATION);\ntrain_config.set_label(\"my_label\");\n\n\u002F\u002F Train model\nstd::unique_ptr\u003CAbstractLearner> learner;\nGetLearner(train_config, &learner);\nauto model = learner->Train(dataset_path, spec);\n\n\u002F\u002F Export model\nSaveModel(\"my_model\", model.get());\n```\n\n(based on [examples\u002Fbeginner.cc](examples\u002Fbeginner.cc))\n\n## Next steps\n\nCheck the\n[Getting Started tutorial 🧭](https:\u002F\u002Fydf.readthedocs.io\u002Fen\u002Fstable\u002Ftutorial\u002Fgetting_started\u002F).\n\n## Citation\n\nIf you us Yggdrasil Decision Forests in a scientific publication, please cite\nthe following paper:\n[Yggdrasil Decision Forests: A Fast and Extensible Decision Forests Library](https:\u002F\u002Fdoi.org\u002F10.1145\u002F3580305.3599933).\n\n**Bibtex**\n\n```\n@inproceedings{GBBSP23,\n  author       = {Mathieu Guillame{-}Bert and\n                  Sebastian Bruch and\n                  Richard Stotz and\n                  Jan Pfeifer},\n  title        = {Yggdrasil Decision Forests: {A} Fast and Extensible Decision Forests\n                  Library},\n  booktitle    = {Proceedings of the 29th {ACM} {SIGKDD} Conference on Knowledge Discovery\n                  and Data Mining, {KDD} 2023, Long Beach, CA, USA, August 6-10, 2023},\n  pages        = {4068--4077},\n  year         = {2023},\n  url          = {https:\u002F\u002Fdoi.org\u002F10.1145\u002F3580305.3599933},\n  doi          = {10.1145\u002F3580305.3599933},\n}\n```\n\n**Raw**\n\nYggdrasil Decision Forests: A Fast and Extensible Decision Forests Library,\nGuillame-Bert et al., KDD 2023: 4068-4077. doi:10.1145\u002F3580305.3599933\n\n## Contact\n\nYou can contact the core development team at\n[decision-forests-contact@google.com](mailto:decision-forests-contact@google.com).\n\n## Credits\n\nYggdrasil Decision Forests and TensorFlow Decision Forests are developed by:\n\n-   Mathieu Guillame-Bert (gbm AT google DOT com)\n-   Richard Stotz (richardstotz AT google DOT com)\n-   Jan Pfeifer (janpf AT google DOT com)\n-   Sebastian Bruch (sebastian AT bruch DOT io)\n-   Arvind Srinivasan (arvnd AT google DOT com)\n\n## Contributing\n\nContributions to TensorFlow Decision Forests and Yggdrasil Decision Forests are\nwelcome. If you want to contribute, check the\n[contribution guidelines](CONTRIBUTING.md).\n\n## License\n\n[Apache License 2.0](LICENSE)\n","\u003Cp align=\"center\">\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fgoogle_yggdrasil-decision-forests_readme_c517dc414890.png\"  \u002F>\n\u003C\u002Fp>\n\n[![PyPI](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fydf.svg?style=flat-square)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fydf\u002F)\n[![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-Apache_2.0-blue.svg?style=flat-square)](https:\u002F\u002Fopensource.org\u002Flicenses\u002FApache-2.0)\n[![Static](https:\u002F\u002Fimg.shields.io\u002Fstatic\u002Fv1?label=docs&message=stable&style=flat-square)](https:\u002F\u002Fydf.readthedocs.io\u002F)\n[![Static](https:\u002F\u002Fimg.shields.io\u002Fstatic\u002Fv1?label=docs&message=dev&style=flat-square)](https:\u002F\u002Fydf.readthedocs.io\u002Fen\u002Flatest\u002F)\n[![PyPI Downloads](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fdm\u002Fydf?style=flat-square)](https:\u002F\u002Fpepy.tech\u002Fproject\u002Fydf)\n\n**YDF**（尤格德拉希尔决策森林）是一个用于训练、评估、解释和部署随机森林、梯度提升决策树、CART 和孤立森林模型的库。\n\n更多关于 YDF 的信息，请参阅 [文档](https:\u002F\u002Fydf.readthedocs.org\u002F)。\n\n## 安装\n\n要从 [PyPI](https:\u002F\u002Fpypi.org\u002Fproject\u002Fydf\u002F) 安装 YDF，请运行：\n\n```shell\npip install ydf -U\n```\n\n## 使用示例\n\n[![在 Colab 中打开](https:\u002F\u002Fcolab.research.google.com\u002Fassets\u002Fcolab-badge.svg)](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fgoogle\u002Fyggdrasil-decision-forests\u002Fblob\u002Fmain\u002Fdocumentation\u002Fpublic\u002Fdocs\u002Ftutorial\u002Fusage_example.ipynb)\n\n```python\nimport ydf\nimport pandas as pd\n\n# 使用 Pandas 加载数据集\nds_path = \"https:\u002F\u002Fraw.githubusercontent.com\u002Fgoogle\u002Fyggdrasil-decision-forests\u002Fmain\u002Fyggdrasil_decision_forests\u002Ftest_data\u002Fdataset\u002F\"\ntrain_ds = pd.read_csv(ds_path + \"adult_train.csv\")\ntest_ds = pd.read_csv(ds_path + \"adult_test.csv\")\n\n# 训练一个梯度提升树模型\nmodel = ydf.GradientBoostedTreesLearner(label=\"income\").train(train_ds)\n\n# 查看模型（输入特征、训练日志、结构等）\nmodel.describe()\n\n# 评估模型（例如 ROC、准确率、混淆矩阵、置信区间）\nmodel.evaluate(test_ds)\n\n# 生成预测\nmodel.predict(test_ds)\n\n# 分析模型（例如部分依赖图、变量重要性）\nmodel.analyze(test_ds)\n\n# 测量模型的推理速度\nmodel.benchmark(test_ds)\n\n# 保存模型\nmodel.save(\"\u002Ftmp\u002Fmy_model\")\n```\n\n使用 C++ API 的示例。\n\n```c++\nauto dataset_path = \"csv:train.csv\";\n\n\u002F\u002F 列出训练数据集中的列\nDataSpecification spec;\nCreateDataSpec(dataset_path, false, {}, &spec);\n\n\u002F\u002F 创建训练配置\nTrainingConfig train_config;\ntrain_config.set_learner(\"RANDOM_FOREST\");\ntrain_config.set_task(Task::CLASSIFICATION);\ntrain_config.set_label(\"my_label\");\n\n\u002F\u002F 训练模型\nstd::unique_ptr\u003CAbstractLearner> learner;\nGetLearner(train_config, &learner);\nauto model = learner->Train(dataset_path, spec);\n\n\u002F\u002F 导出模型\nSaveModel(\"my_model\", model.get());\n```\n\n（基于 [examples\u002Fbeginner.cc](examples\u002Fbeginner.cc)）\n\n## 下一步\n\n请查看 [入门教程 🧭](https:\u002F\u002Fydf.readthedocs.io\u002Fen\u002Fstable\u002Ftutorial\u002Fgetting_started\u002F)。\n\n## 引用\n\n如果您在科学出版物中使用了尤格德拉希尔决策森林，请引用以下论文：\n[Yggdrasil Decision Forests：一种快速且可扩展的决策森林库](https:\u002F\u002Fdoi.org\u002F10.1145\u002F3580305.3599933)。\n\n**Bibtex**\n\n```\n@inproceedings{GBBSP23,\n  author       = {Mathieu Guillame{-}Bert and\n                  Sebastian Bruch and\n                  Richard Stotz and\n                  Jan Pfeifer},\n  title        = {Yggdrasil Decision Forests: {A} Fast and Extensible Decision Forests\n                  Library},\n  booktitle    = {Proceedings of the 29th {ACM} {SIGKDD} Conference on Knowledge Discovery\n                  and Data Mining, {KDD} 2023, Long Beach, CA, USA, August 6-10, 2023},\n  pages        = {4068--4077},\n  year         = {2023},\n  url          = {https:\u002F\u002Fdoi.org\u002F10.1145\u002F3580305.3599933},\n  doi          = {10.1145\u002F3580305.3599933},\n}\n```\n\n**原始**\n\n尤格德拉希尔决策森林：一种快速且可扩展的决策森林库，Guillame-Bert 等人，KDD 2023：4068-4077。doi：10.1145\u002F3580305.3599933\n\n## 联系方式\n\n您可以通过 [decision-forests-contact@google.com](mailto:decision-forests-contact@google.com) 联系核心开发团队。\n\n## 致谢\n\n尤格德拉希尔决策森林和 TensorFlow Decision Forests 由以下人员开发：\n\n-   Mathieu Guillame-Bert (gbm AT google DOT com)\n-   Richard Stotz (richardstotz AT google DOT com)\n-   Jan Pfeifer (janpf AT google DOT com)\n-   Sebastian Bruch (sebastian AT bruch DOT io)\n-   Arvind Srinivasan (arvnd AT google DOT com)\n\n## 贡献\n\n欢迎为 TensorFlow Decision Forests 和尤格德拉希尔决策森林做出贡献。如果您想参与贡献，请查看 [贡献指南](CONTRIBUTING.md)。\n\n## 许可证\n\n[Apache 许可协议 2.0](LICENSE)","# Yggdrasil Decision Forests 快速上手指南\n\n## 环境准备\n\n- **系统要求**：支持 Windows、macOS、Linux\n- **前置依赖**：Python 3.7+（推荐使用 Python 3.8 或以上）\n- 推荐使用 `pip` 安装，无需额外编译依赖\n\n> 国内用户可使用清华镜像加速安装：  \n> `pip install ydf -U -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple`\n\n## 安装步骤\n\n```shell\npip install ydf -U\n```\n\n## 基本使用\n\n```python\nimport ydf\nimport pandas as pd\n\n# 加载数据集\nds_path = \"https:\u002F\u002Fraw.githubusercontent.com\u002Fgoogle\u002Fyggdrasil-decision-forests\u002Fmain\u002Fyggdrasil_decision_forests\u002Ftest_data\u002Fdataset\u002F\"\ntrain_ds = pd.read_csv(ds_path + \"adult_train.csv\")\ntest_ds = pd.read_csv(ds_path + \"adult_test.csv\")\n\n# 训练梯度提升树模型\nmodel = ydf.GradientBoostedTreesLearner(label=\"income\").train(train_ds)\n\n# 查看模型信息\nmodel.describe()\n\n# 评估模型性能\nmodel.evaluate(test_ds)\n\n# 生成预测\nmodel.predict(test_ds)\n\n# 保存模型\nmodel.save(\"\u002Ftmp\u002Fmy_model\")\n```","某金融科技公司风控团队正在构建一个信贷违约预测模型，用于实时评估个人贷款申请人的还款风险。团队需要快速迭代模型、解释特征重要性，并将模型部署到生产环境，但受限于现有工具链的复杂性和低效性。\n\n### 没有 yggdrasil-decision-forests 时\n- 需要手动整合多个库（如scikit-learn、XGBoost、LightGBM），代码碎片化，维护成本高。\n- 模型训练后难以快速生成特征重要性分析和部分依赖图，业务方无法理解“为什么拒绝某笔贷款”。\n- 模型导出格式不统一，部署到线上服务需额外封装，耗时2–3天。\n- 缺乏内置的推理性能基准测试，线上服务响应延迟波动大，影响用户体验。\n- 模型版本管理混乱，回滚和对比实验困难，导致上线风险高。\n\n### 使用 yggdrasil-decision-forests 后\n- 仅用一行代码即可训练梯度提升树模型，支持Pandas数据直接输入，开发效率提升70%。\n- 通过 `model.analyze()` 一键生成变量重要性、偏依赖图和置信区间，风控经理可直观理解模型决策逻辑。\n- 模型可直接保存为标准格式（如SavedModel），并自动兼容TensorFlow Serving，部署时间从3天缩短至2小时。\n- 内置 `model.benchmark()` 快速测试推理速度，确保每笔请求响应低于50ms，满足实时风控要求。\n- 模型版本自动记录训练参数与评估指标，支持多版本并行测试，上线前可快速回滚至最优版本。\n\nyggdrasil-decision-forests 让风控团队从“模型搬运工”转变为“可解释决策设计师”，实现从实验到生产的无缝衔接。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fgoogle_yggdrasil-decision-forests_c517dc41.png","google","Google","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fgoogle_c4bedcda.png","Google ❤️ Open Source",null,"opensource@google.com","GoogleOSS","https:\u002F\u002Fopensource.google\u002F","https:\u002F\u002Fgithub.com\u002Fgoogle",[85,89,93,97,101,105,109,113,116,120],{"name":86,"color":87,"percentage":88},"C++","#f34b7d",71.8,{"name":90,"color":91,"percentage":92},"Python","#3572A5",19,{"name":94,"color":95,"percentage":96},"Starlark","#76d275",4.4,{"name":98,"color":99,"percentage":100},"Go","#00ADD8",2.7,{"name":102,"color":103,"percentage":104},"JavaScript","#f1e05a",0.8,{"name":106,"color":107,"percentage":108},"Shell","#89e051",0.5,{"name":110,"color":111,"percentage":112},"TypeScript","#3178c6",0.3,{"name":114,"color":115,"percentage":112},"Java","#b07219",{"name":117,"color":118,"percentage":119},"HTML","#e34c26",0.1,{"name":121,"color":122,"percentage":119},"Batchfile","#C1F12E",646,76,"2026-04-01T11:53:40","Apache-2.0",1,"Linux, macOS, Windows","未说明",{"notes":131,"python":132,"dependencies":133},"支持通过 pip 安装，提供 Python 和 C++ API；建议使用官方 Colab 教程快速上手；模型可保存并跨平台部署，无强制 GPU 要求，推理可在 CPU 上运行。","3.8+",[134],"pandas",[53,13],[137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152],"cpp","cli","tensorflow","machine-learning","ml","decision-trees","decision-forest","random-forest","gradient-boosting","cart","interpretability","distributed-computing","go","javascript","pypi","python","2026-03-27T02:49:30.150509","2026-04-06T07:13:58.368705",[156,161,165,170,175,180],{"id":157,"question_zh":158,"answer_zh":159,"source_url":160},9138,"Yggdrasil 决策森林模型是否可以与 TensorFlow 模型一样在 Go 应用中使用 tfgo 进行预测？","目前 Yggdrasil 的 Go 端口不支持直接通过 tfgo 或 TensorFlow 的 inference.so 进行预测，且尚未支持多分类功能。建议等待官方 Go 端口完善后再使用，或暂时使用 C++ 接口进行推理。","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fyggdrasil-decision-forests\u002Fissues\u002F19",{"id":162,"question_zh":163,"answer_zh":164,"source_url":160},9139,"如何解决 Bazel 构建时出现的 'Unrecognized option: --incompatible_restrict_string_escapes=false' 错误？","该错误是由于 Bazel 5.1.1 不再支持 --incompatible_restrict_string_escapes 选项。解决方案是删除 .bazelrc 文件中该行配置，或升级到支持该选项的 Bazel 版本。建议检查 .bazelrc 并移除或注释掉该行。",{"id":166,"question_zh":167,"answer_zh":168,"source_url":169},9140,"为什么 Go 模块无法正确导入，go.mod 中显示的是虚拟版本号而非发布标签？","因为 Go 模块被放在子目录中，go get 无法正确识别发布标签。建议将 go.mod 移至仓库根目录，并确保 Go 代码位于顶层。目前可通过创建子目录专用标签（如 yggdrasil_decision_forests\u002Fport\u002Fgo\u002Fv1.0.0）临时改善，但长期方案是将 Go 代码独立为单独仓库。","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fyggdrasil-decision-forests\u002Fissues\u002F53",{"id":171,"question_zh":172,"answer_zh":173,"source_url":174},9141,"是否支持将 Scikit-Learn 或 ONNX 模型转换为 Yggdrasil 格式进行推理？","目前 Yggdrasil 不直接支持从 Scikit-Learn 或 ONNX 加载模型。用户需先将模型导出为 Yggdrasil 支持的格式（如 TensorFlow Decision Forests 或原始模型文件），再通过其 C++\u002FPython API 加载。官方暂无内置转换工具，建议使用第三方工具（如 onnx2tf）先转为 TFDF 格式。","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fyggdrasil-decision-forests\u002Fissues\u002F25",{"id":176,"question_zh":177,"answer_zh":178,"source_url":179},9142,"Yggdrasil 是否支持直接使用 uint8 类型特征进行训练和预测，而无需转换为字符串或 float？","支持 8 位精度推理。可参考官方示例代码 https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fyggdrasil-decision-forests\u002Fblob\u002Fmain\u002Fexamples\u002Ffast_8bits_numerical.cc，使用 SetNumerical8Bit 接口直接传入 uint8 数据。训练时需确保特征被正确离散化，但当前实现可能影响精度，建议验证结果。","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fyggdrasil-decision-forests\u002Fissues\u002F20",{"id":181,"question_zh":182,"answer_zh":183,"source_url":184},9143,"在 Windows 上构建 Yggdrasil 时出现 'use of designated initializers requires at least '\u002Fstd:c++20'' 错误，如何解决？","该错误是因为使用了 C++20 的设计初始化器语法，但编译器配置为 C++17。解决方案是在 Bazel 构建配置中将 --cxxopt=\u002Fstd:c++20 添加到 .bazelrc 文件中，或修改构建命令为：bazel build \u002F\u002F... --cxxopt=\u002Fstd:c++20。","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fyggdrasil-decision-forests\u002Fissues\u002F33",[186,191,196,201,206,211,216,221,226,231,236,241,246,251,256,261,266,271,276,281],{"id":187,"version":188,"summary_zh":189,"released_at":190},106536,"pydf_0.16.1","# 0.16.1 - 2026-03-26\r\n\r\n## Fix\r\n\r\n-   Fix Python protobuf dependency\r\n\r\n## Release music\r\n\r\nPräludium und Fuge Es-Dur BWV 552, für Orchester gesetzt. Johann Sebastian Bach (arr. Arnold Schönberg)\r\n","2026-03-26T17:13:01",{"id":192,"version":193,"summary_zh":194,"released_at":195},106537,"pydf_0.16.0","# 0.16.0 - 2026-03-17\r\n\r\n## Features\r\n\r\n-   Training on numerical features, esp. when using oblique splits, is now much\r\n    faster, >60% for some datasets.\r\n-   Import Monotonic in the top-level namespace.\r\n-   Update Protobuf \u002F Abseil dependencies.\r\n\r\n## Fix\r\n\r\n-   Fix weighted SHAP for models with hessian splits.\r\n-   Fix training logs crash.\r\n\r\n## Release music\r\n\r\nPräludium und Fuge Es-Dur BWV 552. Johann Sebastian Bach","2026-03-17T16:02:55",{"id":197,"version":198,"summary_zh":199,"released_at":200},106538,"pydf_0.15.0","# 0.15.0 - 2026-02-04\r\n\r\n## API Changes\r\n\r\n-   Export to Tensorflow now uses the ydf-tf package instead of TF-DF.\r\n    Tensorflow Decision Forests is no longer required for exporting to\r\n    TensorFlow SavedModel.\r\n-   `model.to_tensorflow_saved_model(mode=\"keras\")` is now strongly discouraged\r\n    and will be removed in a future version. This mode still requires\r\n    Tensorflow Decision Forests (TF-DF) to be installed.\r\n\r\n## Fix\r\n\r\n-   Fixed compatibility with Pandas 3.0\r\n\r\n## Release music\r\n\r\nAllegretto, op. 1. Louis Vierne","2026-02-04T21:25:40",{"id":202,"version":203,"summary_zh":204,"released_at":205},106539,"pydf_0.14.0","# 0.14.0 - 2026-01-09\r\n\r\n## API Changes\r\n\r\n-   The `Uplift` task is not currently compatible with the `honest=True`\r\n    hyperparameter. Support for honest uplift trees is not yet implemented.\r\n    Training an uplift model with `honest=True` will now raise an error. Please\r\n    reach out to the YDF team if you have a use case for this functionality.\r\n-   Removed support for Python 3.8\r\n-   Moved Python package and Docker to manylinux_2_28.\r\n\r\n## Feature\r\n\r\n-   Added new versions of the hyperparameter templates for Random Forests with\r\n    `winner_take_all=False`. The new version generally has better quality\r\n-   Add `learner.in_bag_example_indices(num_examples, tree_idx)` to Random\r\n    Forest Learner to retrieve the indices of the in-bag samples used for\r\n    training each tree.\r\n-   Add export to standalone Java.\r\n-   The output_logits option is now explicitly exposed in the Python API for GBT\r\n    models.\r\n-   Added SHAP value computation support for weighted models.\r\n-   Added support for integerized numerical features in the Python port.\r\n-   Added a new inference engine for QuickScorer based on the Highway SIMD\r\n    library. This engine provides up to a 70% speedup on AVX3 machines and\r\n    maintains high performance on modern ARM and AVX2 architectures.\r\n\r\n## Fixes\r\n\r\n-   Removed Pandas as a hard dependency (it is now optional for dataset\r\n    ingestion).\r\n-   Model descriptions now group multi-dimensional features together for better\r\n    readability.\r\n-   Support for missing features for standalone models.\r\n-   Fixed a rare undefined behavior bug in oblique splits caused by incorrect\r\n    initialization of the binomial distribution.\r\n\r\n## Release music\r\n\r\nSortie en mi bémol majeur, L’Organiste Moderne, vol. 11. Louis James Alfred Lefébure-Wély\r\n","2026-01-09T11:56:03",{"id":207,"version":208,"summary_zh":209,"released_at":210},106540,"pydf_0.13.0","# 0.13.0 - 2025-07-15\r\n\r\n## API Changes\r\n\r\n-   For Random Forest models, `.out_of_bag_evaluations()` now returns a\r\n    TrainingLogs object. The content is identical to the object previously\r\n    returned, but the `number_of_trees` property has been renamed to\r\n    `iteration` for consistency with Gradient Boosted Trees Training Logs.\r\n-   `mode=\"tf\"` is now the default on `model.to_tensorflow_saved_model()`. The\r\n    previous default is still available by setting `mode=\"keras\"`.\r\n-   `model.label()` returns None for models trained without a label.\r\n-   Remove deprecated `evaluation_task` argument for `model.evaluate()`. Use\r\n    `task` instead.\r\n\r\n## Feature\r\n\r\n-   Add standalone C++ export with `model.to_standalone_cc()`. Standalone models\r\n    are super flexible, fast and memory-efficient. They only depend on the C++\r\n    standard library.\r\n-   Add `model.training_logs()` method to return the training logs of the model.\r\n-   Expose Mean Average Precision for Ranking tasks.\r\n-   Add hyperparameters\r\n    `numerical_vector_sequence_enable_closer_than_conditions` and\r\n    `numerical_vector_sequence_enable_projected_more_than_conditions`.\r\n-   Clear error messages when attempting to evaluate models without label.\r\n-   Faster training with sparse oblique splits for datasets with many numerical\r\n    features\r\n-   Many documentation improvements.\r\n-   Increase default number of threads to 256 or number of CPU cores.\r\n-   Enable cross-validation for hyperparameter tuning.\r\n-   Add thresholds to classification plots.\r\n-   Explicitly disable custom losses for hyperparameter tuning.\r\n-   Disable parallel evaluation for cross-validation custom losses.\r\n\r\n## Fix\r\n\r\n-   Distributed Training: `recvmsg: Connection reset to isTransientError`.\r\n-   Enable SHAP values when training with BEST_FIRST_GLOBAL.\r\n-   Predictions with cross-entropy LambdaMART no longer need the slow engine.\r\n-   Disable the generic engine for oblique splits without global imputation. \r\n    This may fix a very rare bug in the way predictions are computed.\r\n\r\n## Release music\r\n\r\nSinfonie Nr. 4 in A-Dur, op. 90. Felix Mendelssohn","2025-07-15T16:05:20",{"id":212,"version":213,"summary_zh":214,"released_at":215},106541,"pydf_0.12.0","# 0.12.0 - 2025-05-20\r\n\r\n## Feature\r\n\r\n-   Enable support for Python 3.13.\r\n-   Add custom fields to model metadata.\r\n-   Add SHAP value variable importances with `model.analyze()`.\r\n-   Add SHAP values for a dataset with `model.predict_shap()`.\r\n-   Speed-up (up to 20x) training of models with CATEGORICAL_SET features.\r\n-   Add hyper-parameter to limit the mask size for CATEGORICAL_SET features.\r\n-   Add hyper-parameter `total_max_num_nodes` to limit the total number of nodes in a model.\r\n-   Add support for na_replacements in python tree editor API.\r\n-   Add support for include_all_columns in FeatureSelector.\r\n-   Add the `ydf.utils.LogBook` to manage and track experiments.\r\n-   Speed-up training of NDCG ranking model when a single example per group\r\n    is non-zero.\r\n-   Speed-up training on datasets with few columns on a computer with a\r\n    large amount of cores.\r\n-   Speed-up loss computation multi-threading code.\r\n-   Improve distributed training error messages.\r\n-   Remove need for label columns for deep learning models.\r\n\r\n## Fix\r\n\r\n-   Log message if early stopping is not used.\r\n-   Fix force_numerical_discretization errors and documentation.\r\n-   Fix handling of empty list columns in the dataset.\r\n\r\n## Release music\r\n\r\nTe Deum in D major, H.146. Marc-Antoine Charpentier","2025-05-20T14:11:40",{"id":217,"version":218,"summary_zh":219,"released_at":220},106542,"v1.11.0","# 1.11.0 - 2025-03-12\r\n\r\n## Features\r\n\r\n-   Speed-up training of GBT models by ~10%.\r\n-   Support for categorical and boolean features in Isolation Forests.\r\n-   Rename LAMBDA_MART_NDCG5 to LAMBDA_MART_NDCG. The old name is deprecated but\r\n    can still be used.\r\n-   Allow configuring the truncation of NDCG losses.\r\n-   Add support for distributed training for ranking gradient boosted tree\r\n    models.\r\n-   Add support for NUMERICAL_VECTOR_SEQUENCE features.\r\n-   Add support for AVRO data file using the \"avro:\" prefix.\r\n-   Additional hyperparameters restricting weights of sparse oblique splits\r\n    to integers or powers of 2.\r\n-   Facilitate training on VertexAI.\r\n-   Deprecated `SparseObliqueSplit.binary_weights` hyperparameter in favor of\r\n    `SparseObliqueSplit.weights`.\r\n-   Add Gzip-compressed BLOB_SEQUENCE serialization\r\n-   Enable Poisson loss for model analysis and fast inference.\r\n-   Add config for compatibility with protobuf lite.\r\n\r\n## Fix\r\n\r\n-   Fix structural variable importances for oblique splits.\r\n-   Deflake tests.\r\n-   Remove CHECK\u002FFATAL from training code.\r\n-   Fix crash in YDF distributed training.\r\n\r\n## Misc\r\n\r\n-   Loss options are now defined\r\n    model\u002Fgradient_boosted_trees\u002Fgradient_boosted_trees.proto (previously\r\n    learner\u002Fgradient_boosted_trees\u002Fgradient_boosted_trees.proto)\r\n-   Remove C++14 support.\r\n-   Various documentation improvements.","2025-03-12T13:45:39",{"id":222,"version":223,"summary_zh":224,"released_at":225},106543,"pydf_0.11.0","#  0.11.0 - 2025-03-12\r\n\r\n## Feature\r\n\r\n-   Expose losses for distributed training.\r\n-   Add `class_weights` parameter to the learners.\r\n-   Support for Google Cloud paths for datasets and model IO.\r\n-   Add utility to facilitate distributed training on VertexAI.\r\n-   Improved support for non-unicode data in categorical features.\r\n-   Add support for saving and analyzing deep models.\r\n\r\n## Fix\r\n\r\n-   Fix incorrectly transposed confusion table in HTML.\r\n-   Various documentation fixes.\r\n-   Better requirements management.\r\n\r\n## Documentation\r\n\r\n-   Add tutorial for Categorical Set features.\r\n-   Add tutorial for training on VertexAI.\r\n\r\n## Release music\r\n\r\n3\\. Sinfonie in d-Moll. Gustav Mahler","2025-03-12T13:47:14",{"id":227,"version":228,"summary_zh":229,"released_at":230},106544,"pydf_0.10.0","# 0.10.0 - 2025-02-11\r\n\r\n## Feature\r\n\r\n-   Expose `model.save(..., pure_serving=True)` for saving a model without debug\r\n    information.\r\n-   Allow users to provide a training proto configuration to the learner.\r\n-   Add vector sequence feature support.\r\n-   Add Variable importances for Isolation Forest Models.\r\n-   Add `ydf.help.loading_data()` to print information about the type of\r\n    supported dataset formats.\r\n-   Add experimental Tabular Transformer implementation.\r\n-   Add gzipped blob sequence as new model format (still optional).\r\n-   Enabled Poisson Loss for model analysis and fast inference.\r\n\r\n## Fix\r\n\r\n-   Fix recognition of multidimensional features for Numpy arrays of type\r\n    object.\r\n-   Fix subsample count for small number of training examples for Isolation \r\n    Forests.\r\n-   Fix NUM_NODES variable importance for oblique splits.\r\n\r\n## Other\r\n\r\n-   Updated OSS dependencies of protobuf, grpc and abseil.\r\n\r\n## Release music\r\n\r\n3. Sinfonie in Es-Dur \"Sinfonia Eroica\", op. 55. Ludwig van Beethoven","2025-02-11T13:32:55",{"id":232,"version":233,"summary_zh":234,"released_at":235},106545,"pydf_0.9.0","# 0.9.0 - 2024-12-02\r\n\r\n## Breaking\r\n\r\n-   Classification Label classes are now consistently ordered lexicographically\r\n    (for string labels) or increasingly (for integer labels).\r\n-   Change typo partial_depepence_plot to partial_dependence_plot on\r\n    model.analyze().\r\n\r\n## Feature\r\n\r\n-   Add support for Avro file for path \u002F distributed training with the \"avro:\"\r\n    prefix.\r\n-   Add support for discretized numerical features for in-memory datasets.\r\n-   Expose MRR for ranking models.\r\n-   Add `model.predict_class` to generate the most likely predicted class of\r\n    classification models.\r\n-   Add support for automatic feature selection with the `feature_selector`\r\n    learner constructor argument. See the [feature selection tutorial]() for\r\n    more details.\r\n-   Add standalone prediction evaluation `ydf.evaluate_predictions()`.\r\n-   Add new hyperparameter `sparse_oblique_max_num_projections`.\r\n-   Add options \"POWER_OF_TWO\" and \"INTEGER\" for sparse oblique weights.\r\n-   Emit proper errors when using lists for multi-dimensional features.\r\n\r\n## Fix\r\n\r\n-   Regression and Ranking CEPs scaling corrected.\r\n\r\n## Release music\r\n\r\nThe John B. Sails. Traditional","2024-12-02T16:02:15",{"id":237,"version":238,"summary_zh":239,"released_at":240},106546,"pydf_0.8.0","# 0.8.0 - 2024-09-23\r\n\r\n## Breaking\r\n\r\n-   Disallow positional parameters for the learners, except for label and task.\r\n-   Remove the unsupported \u002F invalid hyperparameters from the Isolation Forest\r\n    learner.\r\n-   Remove parameters for distributed training and resuming training from\r\n    learners that do not support these capabilities.\r\n-   By default, `model.analyze` for a maximum of 20 seconds (i.e.\r\n    `maximum_duration=20` by default).\r\n-   Convert boolean values in categorical sets to lowercase, matching the\r\n    treatment of categorical features.\r\n\r\n## Feature\r\n\r\n-   Warn if training on a VerticalDataset and fail if attempting to modify the\r\n    columns in a VerticalDataset during training.\r\n-   User can override the model's task, label or group during evaluation.\r\n-   Add `num_examples_per_tree()` method to Isolation Forest models.\r\n-   Expose the slow engine for debugging predictions and evaluations with\r\n    `use_slow_engine=True`.\r\n-   Speed-up training of GBT models by ~10%.\r\n-   Support for categorical and boolean features in Isolation Forests.\r\n-   Add `ydf.util.read_tf_record` and `ydf.util.write_tf_record` to facilitate\r\n    TF Record datasets usage.\r\n-   Rename LAMBDA_MART_NDCG5 to LAMBDA_MART_NDCG. The old name is deprecated but\r\n    can still be used.\r\n-   Allow configuring the truncation of NDCG losses.\r\n-   Enable multi-threading when using `model.predict` and `model.evaluate`.\r\n-   Default number of threads of `model.analyze` is equal to the number of\r\n    cores.\r\n-   Add multi-threaded results in `model.benchmark`.\r\n-   Add argument to control the maximum duration of `model.analyze`.\r\n-   Add support for Unicode strings, normalize categorical set values in the\r\n    same way as categorical values, and validate their types.\r\n-   Add support for distributed training for ranking gradient boosted tree\r\n    models.\r\n\r\n## Fix\r\n\r\n-   Fix labels of regression evaluation plots\r\n-   Improved errors if Isolation Forest training fails.\r\n\r\n## Release music\r\n\r\nPerpetuum Mobile \"Ein musikalischer Scherz\", Op. 257. Johann Strauss (Sohn)","2024-09-23T16:49:42",{"id":242,"version":243,"summary_zh":244,"released_at":245},106547,"v1.10.0","## 1.10.0 - 2024-08-21\r\n\r\n### Features\r\n\r\n-   Add support for Isolation Forests model.\r\n-   The default value of `num_candidate_attributes` in the CART learner is\r\n    changed from 0 (Random Forest style sampling) to -1 (no sampling). This is\r\n    the generally accepted logic of CART.\r\n-   Added support for GCS for file I\u002FO.","2024-08-21T19:51:19",{"id":247,"version":248,"summary_zh":249,"released_at":250},106548,"pydf_0.7.0","## Python API 0.7.0 - 2024-08-21\r\n\r\n### Feature\r\n\r\n-   Expose `validate_hyperparameters()` on the learner.\r\n-   Clarify which parameters in the learner are optional.\r\n-   Add support in JAX FeatureEncoder for non-string categorical feature values.\r\n-   Improve performance of Isolation Forests.\r\n-   Models can be serialized\u002Fdeserialized to\u002Ffrom bytes with `model.serialize()`\r\n    and `ydf.deserialize_model`.\r\n-   Models can be pickled safely.\r\n-   Native support for Xarray as a dataset format for all operations (e.g.,\r\n    training, evaluation, predictions).\r\n-   The output of `model.to_jax_function` can be converted to a TensorFlow Lite\r\n    model.\r\n-   Change the default number of examples to scan when training on files to\r\n    determine the semantic and dictionaries of columns from 10k to 100k.\r\n-   Various improvements of error messages.\r\n-   Evaluation for Anomaly Detection models.\r\n-   Oblique splits for Anomaly Detection models.\r\n\r\n### Fix\r\n\r\n-   Fix parsing of multidimensional ragged inputs.\r\n-   Fix isolation forest hyperparameter defaults.\r\n-   Fix bug causing distributed training to fail on a sharded dataset containing\r\n    an empty shard.\r\n-   Handle unordered categorical sets in training.\r\n-   Fix dataspec ignoring definitions of unrolled columns, such as\r\n    multidimensional categorical integers.\r\n-   Fix error when defining categorical sets for non-ragged multidimensional\r\n    inputs.\r\n-   MacOS: Fix compatibility with other protobuf-using libraries such as\r\n    Tensorflow.\r\n\r\n#### Release music\r\n\r\nRondo Alla ingharese quasi un capriccio \"Die Wut über den verlorenen Groschen\",\r\nOp. 129. Ludwig van Beethoven","2024-08-21T19:47:55",{"id":252,"version":253,"summary_zh":254,"released_at":255},106549,"pydf_v0.6.0","### Feature\r\n\r\n-   `model.to_jax_function` now always outputs a FeatureEncoder to help feeding\r\n    data to the JAX model.\r\n-   The default value of `num_candidate_attributes` in the CART learner is\r\n    changed from 0 (Random Forest style sampling) to -1 (no sampling). This is\r\n    the generally accepted logic of CART.\r\n-   `model.to_tensorflow_saved_model` support preprocessing functions which have\r\n    a different signature than the YDF model.\r\n-   Improve error messages when feeding wrong size Numpy arrays.\r\n-   Add option for weighted evaluation in `model.evaluate`.\r\n\r\n### Fix\r\n\r\n-   Fix display of confusion matrix with floating point weights.\r\n\r\n### Known issues\r\n\r\n-   MacOS build is broken.","2024-07-26T13:57:01",{"id":257,"version":258,"summary_zh":259,"released_at":260},106550,"pydf_0.5.0","### Feature\r\n\r\n-   Add support for Isolation Forests model.\r\n-   Add `max_depth` argument to `model.print_tree`.\r\n-   Add `verbose` argument to `train` method which is equivalent but sometime\r\n    more convenient than`ydf.verbose`.\r\n-   Add SKLearn to YDF model converter: `ydf.from_sklearn`.\r\n-   Improve error messages when calling the model with non supported data.\r\n-   Add support for numpy 2.0.\r\n\r\n### Tutorials\r\n\r\n-   Add anomaly detection tutorial.\r\n-   Add YDF and JAX model composition tutorial.\r\n\r\n### Fix\r\n\r\n-   Fix error when plotting oblique trees (`model.plot_tree`) in colab.","2024-06-18T07:20:32",{"id":262,"version":263,"summary_zh":264,"released_at":265},106551,"pydf_0.4.3","## Python API - Changelog\r\n\r\n### Feature\r\n\r\n-   Add `model.to_jax_function()` function to convert a YDF model into a JAX\r\n    function that can be combined with other JAX operations.\r\n-   Print warnings when categorical features look like numbers.\r\n-   Add support for Python 3.12.\r\n\r\n### Fix\r\n\r\n-   Fix cross-validation for non-classification learners.\r\n-   Fix missing ydf\u002Fmodel\u002Ftree\u002Fplotter.js\r\n-   Solve dependency collision of YDF Proto between PYDF and TF-DF.","2024-05-08T13:53:15",{"id":267,"version":268,"summary_zh":269,"released_at":270},106552,"pydf_v0.4.1","## Python API - Changelog\r\n\r\n### Fix\r\n\r\n-   Solve dependency collision to YDF between PYDF and TF-DF. If TF-DF is\r\n    installed after PYDF, importing YDF will fails with a `has no attribute\r\n    'DType'` error.\r\n-   Allow for training on cached TensorFlow dataset.","2024-04-19T13:21:40",{"id":272,"version":273,"summary_zh":274,"released_at":275},106553,"pydf_v0.4.0","## Python API - 0.4.0 - 2024-04-10\r\n\r\n### Feature\r\n\r\n-   Multi-dimensional features can be selected \u002F configured with the `features=`\r\n    training argument.\r\n-   Programmatic access to partial dependence plots and variable importances.\r\n-   Add `model.to_tensorflow_function()` function to convert a YDF model into a\r\n    TensorFlow function that can be combined with other TensorFlow operations.\r\n    This function is compatible with Keras 2 and Keras 3.\r\n-   Add arguments `servo_api=False` and `feed_example_proto=False` for\r\n    `model.to_tensorflow_function(mode=\"tf\")` to export TensorFlow SavedModel\r\n    following respectively the Servo API and consuming serialized TensorFlow\r\n    Example protos.\r\n-   Add `pre_processing` and `post_processing` arguments to the\r\n    `model.to_tensorflow_function` function to pack pre\u002Fpost processing\r\n    operations in a TensorFlow SavedModel.\r\n\r\n### Tutorials\r\n\r\n-   Add tutorial\r\n    [Vertex AI with TF Serving](https:\u002F\u002Fydf.readthedocs.io\u002Fen\u002Flatest\u002Ftutorial\u002Ftf_serving\u002F)\r\n-   Add tutorial\r\n    [Deep-learning with YDF and TensorFlow](https:\u002F\u002Fydf.readthedocs.io\u002Fen\u002Flatest\u002Ftutorial\u002Fcompose_with_tf\u002F)","2024-04-12T20:41:33",{"id":277,"version":278,"summary_zh":279,"released_at":280},106554,"yggdrasil_decision_forests\u002Fport\u002Fpython\u002Fv0.3.0","# Python API 0.3.0 - 2024-03-15\r\n\r\n## Breaking\r\n\r\n-   Custom losses now require to provide the gradient, instead of the negative\r\n    of the gradient.\r\n-   Clarified that YDF may modify numpy arrays returned by a custom loss\r\n    function.\r\n\r\n## Features\r\n\r\n-   Allow using Jax for custom loss definitions.\r\n-   Allow setting `may_trigger_gc` on custom losses.\r\n-   Add support for MHLD oblique decision trees.\r\n-   Expose hyperparameter `sparse_oblique_max_num_projections`.\r\n-   HTML plots for trees with `model.plot_tree()`.\r\n-   Fix protobuf version to 4.24.3 to fix some incompatibilities when using\r\n    conda.\r\n-   Allow to list compatible engines with `model.list_compatible_engines()`.\r\n-   Allow to choose a fast engine with `model.force_engine(...)`.\r\n\r\n## Fix\r\n\r\n-   Fix slow engine creation for some combination of oblique splits.\r\n-   Improve error message when feeding multi-dimensional labels.\r\n\r\n## Documentation\r\n\r\n-   Clarified documentation of hyperparameters for oblique splits.\r\n-   Fix plots, typos.\r\n\r\n### Release music\r\n\r\nDoctor Gradus ad Parnassum from \"Children's Corner\" (L. 113). Claude Debussy\r\n","2024-03-15T20:15:28",{"id":282,"version":283,"summary_zh":284,"released_at":285},106555,"v1.9.0","# 1.9.0 - 2024-03-12\r\n\r\n## Feature\r\n\r\n-   Add \"parallel_trials\" parameter in the hyper-parameter tuner to control the number of trials to run in parallel.\r\n-   Add support for custom losses.","2024-03-12T16:15:44"]