[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-BCG-X-Official--facet":3,"tool-BCG-X-Official--facet":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 真正成长为懂上",159267,2,"2026-04-17T11:29:14",[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":73,"owner_avatar_url":74,"owner_bio":75,"owner_company":76,"owner_location":76,"owner_email":76,"owner_twitter":77,"owner_website":78,"owner_url":79,"languages":80,"stars":96,"forks":97,"last_commit_at":98,"license":99,"difficulty_score":100,"env_os":101,"env_gpu":102,"env_ram":102,"env_deps":103,"category_tags":110,"github_topics":112,"view_count":32,"oss_zip_url":76,"oss_zip_packed_at":76,"status":17,"created_at":124,"updated_at":125,"faqs":126,"releases":156},8654,"BCG-X-Official\u002Ffacet","facet","Human-explainable AI.","Facet 是一款专注于“人类可解释性”的开源人工智能库，旨在让复杂的监督学习模型变得透明且易于理解。它主要解决了当前 AI 领域模型决策过程像“黑盒”一样难以捉摸的痛点，帮助使用者不仅知道模型预测了什么，更能清楚理解背后的原因。\n\nFacet 特别适合数据科学家、机器学习工程师以及需要向业务方解释模型逻辑的研究人员使用。其核心优势在于三大独特功能：首先，它提供先进的“模型检查”算法，能量化特征间的依赖与交互关系，弥补了主流 SHAP 方法仅关注局部解释的不足，提供了全局视角；其次，通过“模型模拟”功能，用户可以进行虚拟实验，利用自助法（bootstrapping）量化不确定性，从而找到优化预测结果的最佳场景；最后，Facet 增强了机器学习工作流，兼容并扩展了 scikit-learn 的管道范式，并引入 sklearndf 以完美支持 pandas 数据框，确保从数据输入到模型输出的全链路特征可追溯性。无论是进行深度模型诊断还是构建可信的 AI 应用，Facet 都能提供高效、透明的技术支持。",".. image:: sphinx\u002Fsource\u002F_images\u002FGamma_Facet_Logo_RGB_LB.svg\n\nFACET is an open source library for human-explainable AI.\nIt combines sophisticated model inspection and model-based simulation to enable better \nexplanations of your supervised machine learning models.\n\nFACET is composed of the following key components:\n\n+-----------------+-----------------------------------------------------------------------+\n| |spacer|        | **Model Inspection**                                                  |\n|                 |                                                                       |\n| |inspect|       | FACET introduces a new algorithm to quantify dependencies and         |\n|                 | interactions between features in ML models.                           |\n|                 | This new tool for human-explainable AI adds a new, global             |\n|                 | perspective to the observation-level explanations provided by the     |\n|                 | popular `SHAP \u003Chttps:\u002F\u002Fshap.readthedocs.io\u002Fen\u002Fstable\u002F>`__ approach.   |\n|                 | To learn more about FACET’s model inspection capabilities, see the    |\n|                 | getting started example below.                                        |\n+-----------------+-----------------------------------------------------------------------+\n| |spacer|        | **Model Simulation**                                                  |\n|                 |                                                                       |\n| |sim|           | FACET’s model simulation algorithms use ML models for                 |\n|                 | *virtual experiments* to help identify scenarios that optimise        |\n|                 | predicted outcomes.                                                   |\n|                 | To quantify the uncertainty in simulations, FACET utilises a range    |\n|                 | of bootstrapping algorithms including stationary and stratified       |\n|                 | bootstraps.                                                           |\n|                 | For an example of FACET’s bootstrap simulations, see the              |\n|                 | quickstart example below.                                             |\n+-----------------+-----------------------------------------------------------------------+\n| |spacer|        | **Enhanced Machine Learning Workflow**                                |\n|                 |                                                                       |\n| |pipe|          | FACET offers an efficient and transparent machine learning            |\n|                 | workflow, enhancing                                                   |\n|                 | `scikit-learn \u003Chttps:\u002F\u002Fscikit-learn.org\u002Fstable\u002Findex.html>`__'s       |\n|                 | tried and tested pipelining paradigm with new capabilities for model  |\n|                 | selection, inspection, and simulation.                                |\n|                 | FACET also introduces                                                 |\n|                 | `sklearndf \u003Chttps:\u002F\u002Fgithub.com\u002FBCG-X-Official\u002Fsklearndf>`__                |\n|                 | [`documentation \u003Chttps:\u002F\u002Fbcg-x-official.github.io\u002Fsklearndf\u002Findex.html>`__]|\n|                 | an augmented version of *scikit-learn* with enhanced support for      |\n|                 | *pandas* data frames that ensures end-to-end traceability of features.|\n+-----------------+-----------------------------------------------------------------------+\n\n.. Begin-Badges\n\n|pypi| |conda| |azure_build| |azure_code_cov|\n|python_versions| |code_style| |made_with_sphinx_doc| |License_badge|\n\n.. End-Badges\n\n\nInstallation\n------------\n\nFACET supports both PyPI and Anaconda.\nWe recommend to install FACET into a dedicated environment.\n\nAnaconda\n~~~~~~~~\n\n.. code-block:: sh\n\n    conda create -n facet\n    conda activate facet\n    conda install -c bcg_gamma -c conda-forge gamma-facet\n\n\nPip\n~~~\n\nmacOS and Linux:\n^^^^^^^^^^^^^^^^\n\n.. code-block:: sh\n\n    python -m venv facet\n    source facet\u002Fbin\u002Factivate\n    pip install gamma-facet\n\nWindows:\n^^^^^^^^\n\n.. code-block:: dosbatch\n\n    python -m venv facet\n    facet\\Scripts\\activate.bat\n    pip install gamma-facet\n\n\nQuickstart\n----------\n\nThe following quickstart guide provides a minimal example workflow to get you\nup and running with FACET.\nFor additional tutorials and the API reference,\nsee the `FACET documentation \u003Chttps:\u002F\u002Fbcg-x-official.github.io\u002Ffacet\u002Fdocs-version\u002F2-0>`__.\n\nChanges and additions to new versions are summarized in the\n`release notes \u003Chttps:\u002F\u002Fbcg-x-official.github.io\u002Ffacet\u002Fdocs-version\u002F2-0\u002Frelease_notes.html>`__.\n\n\nEnhanced Machine Learning Workflow\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nTo demonstrate the model inspection capability of FACET, we first create a\npipeline to fit a learner. In this simple example we will use the\n`diabetes dataset \u003Chttps:\u002F\u002Fweb.stanford.edu\u002F~hastie\u002FPapers\u002FLARS\u002Fdiabetes.data>`__\nwhich contains age, sex, BMI and blood pressure along with 6 blood serum\nmeasurements as features. This dataset was used in this\n`publication \u003Chttps:\u002F\u002Fstatweb.stanford.edu\u002F~tibs\u002Fftp\u002Flars.pdf>`__.\nA transformed version of this dataset is also available on scikit-learn\n`here \u003Chttps:\u002F\u002Fscikit-learn.org\u002Fstable\u002Fdatasets\u002Ftoy_dataset.html#diabetes-dataset>`__.\n\nIn this quickstart we will train a Random Forest regressor using 10 repeated\n5-fold CV to predict disease progression after one year. With the use of\n*sklearndf* we can create a *pandas* DataFrame compatible workflow. However,\nFACET provides additional enhancements to keep track of our feature matrix\nand target vector using a sample object (`Sample`) and easily compare\nhyperparameter configurations and even multiple learners with the `LearnerSelector`.\n\n.. code-block:: Python\n\n    # standard imports\n    import pandas as pd\n    from sklearn.model_selection import RepeatedKFold, GridSearchCV\n\n    # some helpful imports from sklearndf\n    from sklearndf.pipeline import RegressorPipelineDF\n    from sklearndf.regression import RandomForestRegressorDF\n\n    # relevant FACET imports\n    from facet.data import Sample\n    from facet.selection import LearnerSelector, ParameterSpace\n\n    # declaring url with data\n    data_url = 'https:\u002F\u002Fweb.stanford.edu\u002F~hastie\u002FPapers\u002FLARS\u002Fdiabetes.data'\n\n    #importing data from url\n    diabetes_df = pd.read_csv(data_url, delimiter='\\t').rename(\n        # renaming columns for better readability\n        columns={\n            'S1': 'TC', # total serum cholesterol\n            'S2': 'LDL', # low-density lipoproteins\n            'S3': 'HDL', # high-density lipoproteins\n            'S4': 'TCH', # total cholesterol\u002F HDL\n            'S5': 'LTG', # lamotrigine level\n            'S6': 'GLU', # blood sugar level\n            'Y': 'Disease_progression' # measure of progress since 1yr of baseline\n        }\n    )\n\n    # create FACET sample object\n    diabetes_sample = Sample(observations=diabetes_df, target_name=\"Disease_progression\")\n\n    # create a (trivial) pipeline for a random forest regressor\n    rnd_forest_reg = RegressorPipelineDF(\n        regressor=RandomForestRegressorDF(n_estimators=200, random_state=42)\n    )\n\n    # define parameter space for models which are \"competing\" against each other\n    rnd_forest_ps = ParameterSpace(rnd_forest_reg)\n    rnd_forest_ps.regressor.min_samples_leaf = [8, 11, 15]\n    rnd_forest_ps.regressor.max_depth = [4, 5, 6]\n\n    # create repeated k-fold CV iterator\n    rkf_cv = RepeatedKFold(n_splits=5, n_repeats=10, random_state=42)\n\n    # rank your candidate models by performance\n    selector = LearnerSelector(\n        searcher_type=GridSearchCV,\n        parameter_space=rnd_forest_ps,\n        cv=rkf_cv,\n        n_jobs=-3,\n        scoring=\"r2\"\n    ).fit(diabetes_sample)\n\n    # get summary report\n    selector.summary_report()\n\n.. image:: sphinx\u002Fsource\u002F_images\u002Franker_summary.png\n   :width: 600\n\nWe can see based on this minimal workflow that a value of 11 for minimum\nsamples in the leaf and 5 for maximum tree depth was the best performing\nof the three considered values.\nThis approach easily extends to additional hyperparameters for the learner,\nand for multiple learners.\n\n\nModel Inspection\n~~~~~~~~~~~~~~~~\n\nFACET implements several model inspection methods for\n`scikit-learn \u003Chttps:\u002F\u002Fscikit-learn.org\u002Fstable\u002Findex.html>`__ estimators.\nFACET enhances model inspection by providing global metrics that complement\nthe local perspective of SHAP (see\n`[arXiv:2107.12436] \u003Chttps:\u002F\u002Farxiv.org\u002Fabs\u002F2107.12436>`__ for a formal description).\n\nThe key global metrics for each pair of features in a model are:\n\n- **Synergy**\n\n  The degree to which the model combines information from one feature with\n  another to predict the target. For example, let's assume we are predicting\n  cardiovascular health using age and gender and the fitted model includes\n  a complex interaction between them. This means these two features are\n  synergistic for predicting cardiovascular health. Further, both features\n  are important to the model and removing either one would significantly\n  impact performance. Let's assume age brings more information to the joint\n  contribution than gender. This asymmetric contribution means the synergy for\n  (age, gender) is less than the synergy for (gender, age). To think about it another\n  way, imagine the prediction is a coordinate you are trying to reach.\n  From your starting point, age gets you much closer to this point than\n  gender, however, you need both to get there. Synergy reflects the fact\n  that gender gets more help from age (higher synergy from the perspective\n  of gender) than age does from gender (lower synergy from the perspective of\n  age) to reach the prediction. *This leads to an important point: synergy\n  is a naturally asymmetric property of the global information two interacting\n  features contribute to the model predictions.* Synergy is expressed as a\n  percentage ranging from 0% (full autonomy) to 100% (full synergy).\n\n- **Redundancy**\n\n  The degree to which a feature in a model duplicates the information of a\n  second feature to predict the target. For example, let's assume we had\n  house size and number of bedrooms for predicting house price. These\n  features capture similar information as the more bedrooms the larger\n  the house and likely a higher price on average. The redundancy for\n  (number of bedrooms, house size) will be greater than the redundancy\n  for (house size, number of bedrooms). This is because house size\n  \"knows\" more of what number of bedrooms does for predicting house price\n  than vice-versa. Hence, there is greater redundancy from the perspective\n  of number of bedrooms. Another way to think about it is removing house\n  size will be more detrimental to model performance than removing number\n  of bedrooms, as house size can better compensate for the absence of\n  number of bedrooms. This also implies that house size would be a more\n  important feature than number of bedrooms in the model. *The important\n  point here is that like synergy, redundancy is a naturally asymmetric\n  property of the global information feature pairs have for predicting\n  an outcome.* Redundancy is expressed as a percentage ranging from 0%\n  (full uniqueness) to 100% (full redundancy).\n\n.. code-block:: Python\n\n    # fit the model inspector\n    from facet.inspection import LearnerInspector\n    inspector = LearnerInspector(\n        pipeline=selector.best_estimator_,\n        n_jobs=-3\n    ).fit(diabetes_sample)\n\n**Synergy**\n\n.. code-block:: Python\n\n    # visualise synergy as a matrix\n    from pytools.viz.matrix import MatrixDrawer\n    synergy_matrix = inspector.feature_synergy_matrix()\n    MatrixDrawer(style=\"matplot%\").draw(synergy_matrix, title=\"Synergy Matrix\")\n\n.. image:: sphinx\u002Fsource\u002F_images\u002Fsynergy_matrix.png\n    :width: 600\n\nFor any feature pair (A, B), the first feature (A) is the row, and the second\nfeature (B) the column. For example, looking across the row for `LTG` (Lamotrigine)\nthere is hardly any synergy with other features in the model (≤ 1%).\nHowever, looking down the column for `LTG` (i.e., from the perspective of other features\nrelative with `LTG`) we find that many features (the rows) are aided by synergy with\nwith `LTG` (up to 27% in the case of LDL). We conclude that:\n\n- `LTG` is a strongly autonomous feature, displaying minimal synergy with other\n  features for predicting disease progression after one year.\n- The contribution of other features to predicting disease progression after one\n  year is partly enabled by the presence of `LTG`.\n\nHigh synergy between pairs of features must be considered carefully when investigating\nimpact, as the values of both features jointly determine the outcome. It would not make\nmuch sense to consider `LDL` without the context provided by `LTG` given close\nto 27% synergy of `LDL` with `LTG` for predicting progression after one year.\n\n**Redundancy**\n\n.. code-block:: Python\n\n    # visualise redundancy as a matrix\n    redundancy_matrix = inspector.feature_redundancy_matrix()\n    MatrixDrawer(style=\"matplot%\").draw(redundancy_matrix, title=\"Redundancy Matrix\")\n\n.. image:: sphinx\u002Fsource\u002F_images\u002Fredundancy_matrix.png\n    :width: 600\n\n\nFor any feature pair (A, B), the first feature (A) is the row, and the second feature\n(B) the column. For example, if we look at the feature pair (`LDL`, `TC`) from the\nperspective of `LDL` (Low-Density Lipoproteins), then we look-up the row for `LDL`\nand the column for `TC` and find 38% redundancy. This means that 38% of the information\nin `LDL` to predict disease progression is duplicated in `TC`. This\nredundancy is the same when looking \"from the perspective\" of `TC` for (`TC`, `LDL`),\nbut need not be symmetrical in all cases (see `LTG` vs. `TCH`).\n\nIf we look at `TCH`, it has between 22–32% redundancy each with `LTG` and `HDL`, but\nthe same does not hold between `LTG` and `HDL` – meaning `TCH` shares different\ninformation with each of the two features.\n\n\n**Clustering redundancy**\n\nAs detailed above redundancy and synergy for a feature pair is from the\n\"perspective\" of one of the features in the pair, and so yields two distinct\nvalues. However, a symmetric version can also be computed that provides not\nonly a simplified perspective but allows the use of (1 - metric) as a\nfeature distance. With this distance hierarchical, single linkage clustering\nis applied to create a dendrogram visualization. This helps to identify\ngroups of low distance, features which activate \"in tandem\" to predict the\noutcome. Such information can then be used to either reduce clusters of\nhighly redundant features to a subset or highlight clusters of highly\nsynergistic features that should always be considered together.\n\nLet's look at the example for redundancy.\n\n.. code-block:: Python\n\n    # visualise redundancy using a dendrogram\n    from pytools.viz.dendrogram import DendrogramDrawer\n    redundancy = inspector.feature_redundancy_linkage()\n    DendrogramDrawer().draw(data=redundancy, title=\"Redundancy Dendrogram\")\n\n.. image:: sphinx\u002Fsource\u002F_images\u002Fredundancy_dendrogram.png\n    :width: 600\n\nBased on the dendrogram we can see that the feature pairs (`LDL`, `TC`)\nand (`HDL`, `TCH`) each represent a cluster in the dendrogram and that `LTG` and `BMI`\nhave the highest importance. As potential next actions we could explore the impact of\nremoving `TCH`, and one of `TC` or `LDL` to further simplify the model and obtain a\nreduced set of independent features.\n\nPlease see the\n`API reference \u003Chttps:\u002F\u002Fbcg-x-official.github.io\u002Ffacet\u002Fapidoc\u002Ffacet.html>`__\nfor more detail.\n\n\nModel Simulation\n~~~~~~~~~~~~~~~~\n\nTaking the `BMI` feature as an example of an important and highly independent feature,\nwe do the following for the simulation:\n\n- We use FACET's `ContinuousRangePartitioner` to split the range of observed values of\n  `BMI` into intervals of equal size. Each partition is represented by the central value\n  of that partition.\n- For each partition, the simulator creates an artificial copy of the original sample\n  assuming the variable to be simulated has the same value across all observations –\n  which is the value representing the partition. Using the best estimator\n  acquired from the selector, the simulator now re-predicts all targets using the models\n  trained for full sample and determines the uplift of the target variable\n  resulting from this.\n- The FACET `SimulationDrawer` allows us to visualise the result; both in a\n  *matplotlib* and a plain-text style.\n\n.. code-block:: Python\n\n    # FACET imports\n    from facet.validation import BootstrapCV\n    from facet.simulation import UnivariateUpliftSimulator\n    from facet.data.partition import ContinuousRangePartitioner\n    from facet.simulation.viz import SimulationDrawer\n\n    # create bootstrap CV iterator\n    bscv = BootstrapCV(n_splits=1000, random_state=42)\n\n    SIM_FEAT = \"BMI\"\n    simulator = UnivariateUpliftSimulator(\n        model=selector.best_estimator_,\n        sample=diabetes_sample,\n        n_jobs=-3\n    )\n\n    # split the simulation range into equal sized partitions\n    partitioner = ContinuousRangePartitioner()\n\n    # run the simulation\n    simulation = simulator.simulate_feature(feature_name=SIM_FEAT, partitioner=partitioner)\n\n    # visualise results\n    SimulationDrawer().draw(data=simulation, title=SIM_FEAT)\n\n.. image:: sphinx\u002Fsource\u002F_images\u002Fsimulation_output.png\n\nWe would conclude from the figure that higher values of `BMI` are associated with\nan increase in disease progression after one year, and that for a `BMI` of 28\nand above, there is a significant increase in disease progression after one year\nof at least 26 points.\n\nContributing\n------------\n\nFACET is stable and is being supported long-term.\n\nContributions to FACET are welcome and appreciated.\nFor any bug reports or feature requests\u002Fenhancements please use the appropriate\n`GitHub form \u003Chttps:\u002F\u002Fgithub.com\u002FBCG-X-Official\u002Ffacet\u002Fissues>`_, and if you wish to do so,\nplease open a PR addressing the issue.\n\nWe do ask that for any major changes please discuss these with us first via an issue or\nusing our team email: FacetTeam@bcg.com.\n\nFor further information on contributing please see our\n`contribution guide \u003Chttps:\u002F\u002Fbcg-x-official.github.io\u002Ffacet\u002Fcontribution_guide.html>`__.\n\n\nLicense\n-------\n\nFACET is licensed under Apache 2.0 as described in the\n`LICENSE \u003Chttps:\u002F\u002Fgithub.com\u002FBCG-X-Official\u002Ffacet\u002Fblob\u002Fdevelop\u002FLICENSE>`_ file.\n\n\nAcknowledgements\n----------------\n\nFACET is built on top of two popular packages for Machine Learning:\n\n-   The `scikit-learn \u003Chttps:\u002F\u002Fscikit-learn.org\u002Fstable\u002Findex.html>`__ learners and\n    pipelining make up implementation of the underlying algorithms. Moreover, we tried\n    to design the FACET API to align with the scikit-learn API.\n-   The `SHAP \u003Chttps:\u002F\u002Fshap.readthedocs.io\u002Fen\u002Flatest\u002F>`__ implementation is used to\n    estimate the shapley vectors which FACET then decomposes into synergy, redundancy,\n    and independence vectors.\n\n\nBCG GAMMA\n---------\n\nIf you would like to know more about the team behind FACET please see the\n`about us \u003Chttps:\u002F\u002Fbcg-x-official.github.io\u002Ffacet\u002Fabout_us.html>`__ page.\n\nWe are always on the lookout for passionate and talented data scientists to join the\nBCG GAMMA team. If you would like to know more you can find out about\n`BCG GAMMA \u003Chttps:\u002F\u002Fwww.bcg.com\u002Fen-gb\u002Fbeyond-consulting\u002Fbcg-gamma\u002Fdefault>`_,\nor have a look at\n`career opportunities \u003Chttps:\u002F\u002Fwww.bcg.com\u002Fen-gb\u002Fbeyond-consulting\u002Fbcg-gamma\u002Fcareers>`_.\n\n.. |pipe| image:: sphinx\u002Fsource\u002F_images\u002Ficons\u002Fpipe_icon.png\n   :width: 100px\n   :class: facet_icon\n\n.. |inspect| image:: sphinx\u002Fsource\u002F_images\u002Ficons\u002Finspect_icon.png\n   :width: 100px\n   :class: facet_icon\n\n.. |sim| image:: sphinx\u002Fsource\u002F_images\u002Ficons\u002Fsim_icon.png\n   :width: 100px\n   :class: facet_icon\n\n.. |spacer| unicode:: 0x2003 0x2003 0x2003 0x2003 0x2003 0x2003\n\n.. Begin-Badges\n\n.. |conda| image:: https:\u002F\u002Fanaconda.org\u002Fbcg_gamma\u002Fgamma-facet\u002Fbadges\u002Fversion.svg\n    :target: https:\u002F\u002Fanaconda.org\u002FBCG_Gamma\u002Fgamma-facet\n\n.. |pypi| image:: https:\u002F\u002Fbadge.fury.io\u002Fpy\u002Fgamma-facet.svg\n    :target: https:\u002F\u002Fpypi.org\u002Fproject\u002Fgamma-facet\u002F\n\n.. |azure_build| image:: https:\u002F\u002Fdev.azure.com\u002Fgamma-facet\u002Ffacet\u002F_apis\u002Fbuild\u002Fstatus\u002FBCG-X-Official.facet?repoName=BCG-X-Official%2Ffacet&branchName=develop\n   :target: https:\u002F\u002Fdev.azure.com\u002Fgamma-facet\u002Ffacet\u002F_build?definitionId=7&_a=summary\n\n.. |azure_code_cov| image:: https:\u002F\u002Fimg.shields.io\u002Fazure-devops\u002Fcoverage\u002Fgamma-facet\u002Ffacet\u002F7\u002F2.0.x\n   :target: https:\u002F\u002Fdev.azure.com\u002Fgamma-facet\u002Ffacet\u002F_build?definitionId=7&_a=summary\n\n.. |python_versions| image:: https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython-3.7|3.8|3.9-blue.svg\n   :target: https:\u002F\u002Fwww.python.org\u002Fdownloads\u002Frelease\u002Fpython-380\u002F\n\n.. |code_style| image:: https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fcode%20style-black-000000.svg\n   :target: https:\u002F\u002Fgithub.com\u002Fpsf\u002Fblack\n\n.. |made_with_sphinx_doc| image:: https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FMade%20with-Sphinx-1f425f.svg\n   :target: https:\u002F\u002Fbcg-x-official.github.io\u002Ffacet\u002Findex.html\n\n.. |license_badge| image:: https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-Apache%202.0-olivegreen.svg\n   :target: https:\u002F\u002Fopensource.org\u002Flicenses\u002FApache-2.0\n\n.. End-Badges\n",".. image:: sphinx\u002Fsource\u002F_images\u002FGamma_Facet_Logo_RGB_LB.svg\n\nFACET 是一个面向人类可解释性 AI 的开源库。\n它结合了先进的模型检查和基于模型的仿真技术，从而能够更好地解释您的监督式机器学习模型。\n\nFACET 由以下几个关键组件组成：\n\n+-----------------+-----------------------------------------------------------------------+\n| |spacer|        | **模型检查**                                                          |\n|                 |                                                                       |\n| |inspect|       | FACET 引入了一种新算法，用于量化机器学习模型中特征之间的依赖关系和交互作用。|\n|                 | 这一面向人类可解释性 AI 的新工具为流行的 `SHAP \u003Chttps:\u002F\u002Fshap.readthedocs.io\u002Fen\u002Fstable\u002F>`__ 方法所提供的样本级解释增添了全局视角。|\n|                 | 要了解更多关于 FACET 模型检查功能的信息，请参阅下方的入门示例。          |\n+-----------------+-----------------------------------------------------------------------+\n| |spacer|        | **模型仿真**                                                          |\n|                 |                                                                       |\n| |sim|           | FACET 的模型仿真算法利用机器学习模型进行 *虚拟实验*，以帮助识别能够优化预测结果的情形。|\n|                 | 为了量化仿真的不确定性，FACET 使用了一系列自助法算法，包括平稳自助法和分层自助法。|\n|                 | 关于 FACET 自助法仿真的示例，请参阅下方的快速入门示例。                |\n+-----------------+-----------------------------------------------------------------------+\n| |spacer|        | **增强的机器学习工作流**                                              |\n|                 |                                                                       |\n| |pipe|          | FACET 提供了一个高效且透明的机器学习工作流，通过新增的模型选择、检查和仿真能力，增强了|\n|                 | `scikit-learn \u003Chttps:\u002F\u002Fscikit-learn.org\u002Fstable\u002Findex.html>`__ 经过验证的流水线范式。|\n|                 | 此外，FACET 还引入了                                                 |\n|                 | `sklearndf \u003Chttps:\u002F\u002Fgithub.com\u002FBCG-X-Official\u002Fsklearndf>`__                |\n|                 | [`文档 \u003Chttps:\u002F\u002Fbcg-x-official.github.io\u002Fsklearndf\u002Findex.html>`__]|\n|                 | 一个增强版的 *scikit-learn*，其对 *pandas* 数据框的支持更加完善，确保特征的端到端可追溯性。|\n+-----------------+-----------------------------------------------------------------------+\n\n.. Begin-Badges\n\n|pypi| |conda| |azure_build| |azure_code_cov|\n|python_versions| |code_style| |made_with_sphinx_doc| |License_badge|\n\n.. End-Badges\n\n\n安装\n----\n\nFACET 同时支持 PyPI 和 Anaconda。我们建议将 FACET 安装在一个专用的环境中。\n\nAnaconda\n~~~~~~~~\n\n.. code-block:: sh\n\n    conda create -n facet\n    conda activate facet\n    conda install -c bcg_gamma -c conda-forge gamma-facet\n\n\nPip\n~~~\n\nmacOS 和 Linux:\n^^^^^^^^^^^^^^^^\n\n.. code-block:: sh\n\n    python -m venv facet\n    source facet\u002Fbin\u002Factivate\n    pip install gamma-facet\n\nWindows:\n^^^^^^^^\n\n.. code-block:: dosbatch\n\n    python -m venv facet\n    facet\\Scripts\\activate.bat\n    pip install gamma-facet\n\n\n快速入门\n----------\n\n以下快速入门指南提供了一个最小化的示例工作流，帮助您快速上手 FACET。\n如需更多教程和 API 参考，请参阅 `FACET 文档 \u003Chttps:\u002F\u002Fbcg-x-official.github.io\u002Ffacet\u002Fdocs-version\u002F2-0>`__。\n\n新版本的变更和新增内容已在 `发布说明 \u003Chttps:\u002F\u002Fbcg-x-official.github.io\u002Ffacet\u002Fdocs-version\u002F2-0\u002Frelease_notes.html>`__ 中总结。\n\n\n增强的机器学习工作流\n~~~~~~~~~~~~~~~~~~\n\n为了演示 FACET 的模型检查功能，我们首先创建一个流水线来拟合一个学习器。在这个简单的例子中，我们将使用|\n`糖尿病数据集 \u003Chttps:\u002F\u002Fweb.stanford.edu\u002F~hastie\u002FPapers\u002FLARS\u002Fdiabetes.data>`__，\n该数据集包含年龄、性别、BMI 和血压，以及 6 项血清指标作为特征。此数据集曾被用于这篇|\n`论文 \u003Chttps:\u002F\u002Fstatweb.stanford.edu\u002F~tibs\u002Fftp\u002Flars.pdf>`__。\n该数据集的转换版本也可在 scikit-learn 上找到|\n`此处 \u003Chttps:\u002F\u002Fscikit-learn.org\u002Fstable\u002Fdatasets\u002Ftoy_dataset.html#diabetes-dataset>`__。\n\n在本快速入门中，我们将使用 10 次重复的 5 折交叉验证来训练一个随机森林回归模型，以预测一年后的疾病进展。借助|\n*sklearndf*，我们可以创建一个与 *pandas* DataFrame 兼容的工作流。然而，FACET 还提供了额外的功能，可以使用样本对象 (`Sample`) 来跟踪我们的特征矩阵和目标向量，并轻松比较超参数配置，甚至多个学习器之间的差异，这得益于 `LearnerSelector`。\n\n.. code-block:: Python\n\n    # 标准导入\n    import pandas as pd\n    from sklearn.model_selection import RepeatedKFold, GridSearchCV\n\n    # sklearndf 中的一些实用导入\n    from sklearndf.pipeline import RegressorPipelineDF\n    from sklearndf.regression import RandomForestRegressorDF\n\n    # 相关的 FACET 导入\n    from facet.data import Sample\n    from facet.selection import LearnerSelector, ParameterSpace\n\n    # 声明数据的 URL\n    data_url = 'https:\u002F\u002Fweb.stanford.edu\u002F~hastie\u002FPapers\u002FLARS\u002Fdiabetes.data'\n\n    # 从 URL 导入数据\n    diabetes_df = pd.read_csv(data_url, delimiter='\\t').rename(\n        # 重命名列以提高可读性\n        columns={\n            'S1': 'TC', # 总血清胆固醇\n            'S2': 'LDL', # 低密度脂蛋白\n            'S3': 'HDL', # 高密度脂蛋白\n            'S4': 'TCH', # 总胆固醇与 HDL 的比值\n            'S5': 'LTG', # 拉莫三嗪浓度\n            'S6': 'GLU', # 血糖水平\n            'Y': 'Disease_progression' # 与基线相比一年后的疾病进展度\n        }\n    )\n\n# 创建 FACET 示例对象\n    diabetes_sample = Sample(observations=diabetes_df, target_name=\"Disease_progression\")\n\n    # 为随机森林回归器创建一个（简单的）管道\n    rnd_forest_reg = RegressorPipelineDF(\n        regressor=RandomForestRegressorDF(n_estimators=200, random_state=42)\n    )\n\n    # 定义用于相互“竞争”的模型的参数空间\n    rnd_forest_ps = ParameterSpace(rnd_forest_reg)\n    rnd_forest_ps.regressor.min_samples_leaf = [8, 11, 15]\n    rnd_forest_ps.regressor.max_depth = [4, 5, 6]\n\n    # 创建重复 k 折交叉验证迭代器\n    rkf_cv = RepeatedKFold(n_splits=5, n_repeats=10, random_state=42)\n\n    # 根据性能对候选模型进行排名\n    selector = LearnerSelector(\n        searcher_type=GridSearchCV,\n        parameter_space=rnd_forest_ps,\n        cv=rkf_cv,\n        n_jobs=-3,\n        scoring=\"r2\"\n    ).fit(diabetes_sample)\n\n    # 获取总结报告\n    selector.summary_report()\n\n.. image:: sphinx\u002Fsource\u002F_images\u002Franker_summary.png\n   :width: 600\n\n从这个最简工作流中可以看出，对于叶节点中的最小样本数，取值 11；对于树的最大深度，取值 5，是所考虑的三个值中表现最好的。\n这种方法可以很容易地扩展到学习器的其他超参数，以及多个学习器。\n\n模型检查\n~~~~~~~~\n\nFACET 为 `scikit-learn \u003Chttps:\u002F\u002Fscikit-learn.org\u002Fstable\u002Findex.html>`__ 的估计器实现了多种模型检查方法。\nFACET 通过提供补充 SHAP 局部视角的全局指标来增强模型检查功能（有关正式描述，请参阅\n`[arXiv:2107.12436] \u003Chttps:\u002F\u002Farxiv.org\u002Fabs\u002F2107.12436>`__）。\n\n模型中每对特征的关键全局指标包括：\n\n- **协同性**\n\n  模型将一个特征的信息与另一个特征结合以预测目标的程度。例如，假设我们使用年龄和性别来预测心血管健康状况，而拟合的模型包含了两者之间复杂的交互作用。这意味着这两个特征在预测心血管健康方面具有协同性。此外，这两个特征对模型都很重要，去掉任何一个都会显著影响模型性能。假设年龄在共同贡献中比性别提供了更多的信息。这种不对称的贡献意味着 (age, gender) 的协同性低于 (gender, age) 的协同性。换一种方式来理解：把预测结果看作一个你试图到达的目标坐标。从起点出发，年龄比性别更能让你接近这个目标，然而你需要同时利用两者才能达到。协同性反映了这样一个事实：性别从年龄那里获得的帮助更多（从性别角度看协同性更高），而年龄从性别那里获得的帮助较少（从年龄角度看协同性更低），从而共同达到预测结果。*由此引出一个重要点：协同性是两个相互作用的特征为模型预测贡献的全局信息所具有的天然非对称属性。* 协同性用百分比表示，范围从 0%（完全自主）到 100%（完全协同）。\n\n- **冗余性**\n\n  模型中一个特征在预测目标时对另一个特征信息的重复程度。例如，假设我们使用房屋面积和卧室数量来预测房价。这两个特征捕捉的信息相似：卧室越多，房屋通常越大，平均价格也越高。因此，(number of bedrooms, house size) 的冗余性会大于 (house size, number of bedrooms) 的冗余性。这是因为房屋面积比卧室数量更清楚地知道后者在预测房价方面的作用，所以从卧室数量的角度来看，其冗余性更大。另一种理解方式是：移除房屋面积对模型性能的影响会比移除卧室数量更大，因为房屋面积能够更好地弥补卧室数量缺失带来的影响。这也意味着，在模型中，房屋面积的重要性可能高于卧室数量。*这里的重要点是，与协同性一样，冗余性也是特征对在预测结果方面所具有的全局信息的天然非对称属性。* 冗余性用百分比表示，范围从 0%（完全独特）到 100%（完全冗余）。\n\n.. code-block:: Python\n\n    # 拟合模型检查器\n    from facet.inspection import LearnerInspector\n    inspector = LearnerInspector(\n        pipeline=selector.best_estimator_,\n        n_jobs=-3\n    ).fit(diabetes_sample)\n\n**协同性**\n\n.. code-block:: Python\n\n    # 将协同性可视化为矩阵\n    from pytools.viz.matrix import MatrixDrawer\n    synergy_matrix = inspector.feature_synergy_matrix()\n    MatrixDrawer(style=\"matplot%\").draw(synergy_matrix, title=\"Synergy Matrix\")\n\n.. image:: sphinx\u002Fsource\u002F_images\u002Fsynergy_matrix.png\n    :width: 600\n\n对于任意特征对 (A, B)，第一个特征 (A) 代表行，第二个特征 (B) 代表列。例如，查看 `LTG`（拉莫三嗪）这一行时，它与其他特征之间的协同性几乎为零（≤ 1%）。然而，从 `LTG` 这一列往下看（即从其他特征相对于 `LTG` 的角度），我们会发现许多特征（行）受益于与 `LTG` 的协同作用（例如，LDL 最高可达 27%）。由此我们可以得出结论：\n\n- `LTG` 是一个高度自主的特征，与其他特征在预测一年后疾病进展方面的协同性极低。\n- 其他特征在预测一年后疾病进展中的贡献，部分得益于 `LTG` 的存在。\n\n当研究影响时，必须仔细考虑特征对之间的高协同性，因为两者的值共同决定了最终结果。鉴于 `LDL` 与 `LTG` 在预测一年后疾病进展方面的协同性接近 27%，单独考虑 `LDL` 而不结合 `LTG` 提供的背景信息是没有太大意义的。\n\n**冗余性**\n\n.. code-block:: Python\n\n    # 将冗余性可视化为矩阵\n    redundancy_matrix = inspector.feature_redundancy_matrix()\n    MatrixDrawer(style=\"matplot%\").draw(redundancy_matrix, title=\"Redundancy Matrix\")\n\n.. image:: sphinx\u002Fsource\u002F_images\u002Fredundancy_matrix.png\n    :width: 600\n\n\n对于任意特征对 (A, B)，第一个特征 (A) 代表行，第二个特征 (B) 代表列。例如，如果我们从 `LDL`（低密度脂蛋白）的角度来看特征对 (`LDL`, `TC`)，则在 `LDL` 行和 `TC` 列的交界处可以看到 38% 的冗余性。这意味着 `LDL` 用于预测疾病进展的信息中有 38% 在 `TC` 中被重复了。从 `TC` 的角度看待 (`TC`, `LDL`) 时，也会得到相同的冗余性，但并非所有情况都具有对称性（如 `LTG` 与 `TCH` 的例子）。\n\n如果我们来看 `TCH`，它与 `LTG` 和 `HDL` 分别有 22% 到 32% 的冗余度，但\n`LTG` 和 `HDL` 之间并不具备同样的冗余性——这意味着 `TCH` 与这两个特征分别共享不同的信息。\n\n\n**聚类冗余**\n\n如上文所述，对于一对特征而言，冗余和协同是从这对特征中其中一个“视角”来衡量的，因此会得到两个不同的值。然而，也可以计算出一种对称版本的指标，这不仅简化了分析视角，还允许将 (1 - 指标) 作为特征之间的距离使用。利用这种距离，可以应用层次聚类中的单链接法来生成树状图可视化结果。这有助于识别低距离的特征群，即那些在预测结果时“协同”工作的特征。随后，这些信息可用于将高度冗余的特征群缩减为一个子集，或者突出显示那些应始终一起考虑的高度协同特征群。\n\n让我们以冗余为例进行说明。\n\n.. code-block:: Python\n\n    # 使用树状图可视化冗余\n    from pytools.viz.dendrogram import DendrogramDrawer\n    redundancy = inspector.feature_redundancy_linkage()\n    DendrogramDrawer().draw(data=redundancy, title=\"冗余树状图\")\n\n.. image:: sphinx\u002Fsource\u002F_images\u002Fredundancy_dendrogram.png\n    :width: 600\n\n根据树状图，我们可以看到 (`LDL`, `TC`) 和 (`HDL`, `TCH`) 这两对特征各自构成了树状图中的一个簇，而 `LTG` 和 `BMI` 则具有最高的重要性。作为下一步行动，我们可以探索移除 `TCH` 以及 `TC` 或 `LDL` 中的一个对模型的影响，从而进一步简化模型并获得一组独立的特征子集。\n\n更多详细信息请参阅\n`API 参考 \u003Chttps:\u002F\u002Fbcg-x-official.github.io\u002Ffacet\u002Fapidoc\u002Ffacet.html>`__。\n\n\n模型模拟\n~~~~~~~~~~~~~~~~\n\n以 `BMI` 特征为例，它是一个重要且高度独立的特征，我们按照以下步骤进行模拟：\n\n- 我们使用 FACET 的 `ContinuousRangePartitioner` 将 `BMI` 的观测值范围划分为等大小的区间。每个区间由该区间的中心值代表。\n- 对于每个区间，模拟器会创建原始样本的人工副本，假设待模拟的变量在所有观测中都取相同的值——即代表该区间的值。然后，模拟器使用选择器获取的最佳估计器，基于全样本训练的模型重新预测所有目标值，并确定由此带来的目标变量提升。\n- FACET 的 `SimulationDrawer` 允许我们以 *matplotlib* 和纯文本两种方式可视化结果。\n\n.. code-block:: Python\n\n    # FACET 导入\n    from facet.validation import BootstrapCV\n    from facet.simulation import UnivariateUpliftSimulator\n    from facet.data.partition import ContinuousRangePartitioner\n    from facet.simulation.viz import SimulationDrawer\n\n    # 创建自助法交叉验证迭代器\n    bscv = BootstrapCV(n_splits=1000, random_state=42)\n\n    SIM_FEAT = \"BMI\"\n    simulator = UnivariateUpliftSimulator(\n        model=selector.best_estimator_,\n        sample=diabetes_sample,\n        n_jobs=-3\n    )\n\n    # 将模拟范围划分为等大小的区间\n    partitioner = ContinuousRangePartitioner()\n\n    # 运行模拟\n    simulation = simulator.simulate_feature(feature_name=SIM_FEAT, partitioner=partitioner)\n\n    # 可视化结果\n    SimulationDrawer().draw(data=simulation, title=SIM_FEAT)\n\n.. image:: sphinx\u002Fsource\u002F_images\u002Fsimulation_output.png\n\n从图中我们可以得出结论：较高的 `BMI` 值与一年后疾病进展的加剧相关，当 `BMI` 达到 28 或以上时，一年后的疾病进展显著增加，至少提高了 26 个点。\n\n贡献\n------------\n\nFACET 稳定可靠，并将持续得到长期支持。\n\n欢迎并感谢大家对 FACET 的贡献。如有任何错误报告或功能请求\u002F改进，请使用相应的\n`GitHub 表单 \u003Chttps:\u002F\u002Fgithub.com\u002FBCG-X-Official\u002Ffacet\u002Fissues>`_；如果您希望直接提交代码，请打开一个 PR 来解决相应的问题。\n\n对于任何重大更改，请先通过 issue 或发送邮件至我们的团队邮箱 FacetTeam@bcg.com 与我们讨论。\n\n有关贡献的更多信息，请参阅我们的\n`贡献指南 \u003Chttps:\u002F\u002Fbcg-x-official.github.io\u002Ffacet\u002Fcontribution_guide.html>`__。\n\n\n许可证\n-------\n\nFACET 根据 `LICENSE \u003Chttps:\u002F\u002Fgithub.com\u002FBCG-X-Official\u002Ffacet\u002Fblob\u002Fdevelop\u002FLICENSE>`_ 文件的规定，采用 Apache 2.0 许可证授权。\n\n\n致谢\n----------------\n\nFACET 构建于两个流行的机器学习库之上：\n\n- `scikit-learn \u003Chttps:\u002F\u002Fscikit-learn.org\u002Fstable\u002Findex.html>`__ 的学习算法和流水线技术构成了底层算法的实现。此外，我们还努力使 FACET 的 API 与 scikit-learn 的 API 保持一致。\n- `SHAP \u003Chttps:\u002F\u002Fshap.readthedocs.io\u002Fen\u002Flatest\u002F>`__ 的实现用于估算 Shapley 值，FACET 随后将其分解为协同、冗余和独立向量。\n\n\nBCG GAMMA\n---------\n\n如果您想了解更多关于 FACET 团队的信息，请访问\n`关于我们 \u003Chttps:\u002F\u002Fbcg-x-official.github.io\u002Ffacet\u002Fabout_us.html>`__ 页面。\n\n我们始终在寻找充满热情且才华横溢的数据科学家加入 BCG GAMMA 团队。如需了解更多信息，您可以访问\n`BCG GAMMA \u003Chttps:\u002F\u002Fwww.bcg.com\u002Fen-gb\u002Fbeyond-consulting\u002Fbcg-gamma\u002Fdefault>`__，\n或查看\n`职业机会 \u003Chttps:\u002F\u002Fwww.bcg.com\u002Fen-gb\u002Fbeyond-consulting\u002Fbcg-gamma\u002Fcareers>`__。\n\n.. |pipe| image:: sphinx\u002Fsource\u002F_images\u002Ficons\u002Fpipe_icon.png\n   :width: 100px\n   :class: facet_icon\n\n.. |inspect| image:: sphinx\u002Fsource\u002F_images\u002Ficons\u002Finspect_icon.png\n   :width: 100px\n   :class: facet_icon\n\n.. |sim| image:: sphinx\u002Fsource\u002F_images\u002Ficons\u002Fsim_icon.png\n   :width: 100px\n   :class: facet_icon\n\n.. |spacer| unicode:: 0x2003 0x2003 0x2003 0x2003 0x2003 0x2003\n\n.. Begin-Badges\n\n.. |conda| image:: https:\u002F\u002Fanaconda.org\u002Fbcg_gamma\u002Fgamma-facet\u002Fbadges\u002Fversion.svg\n    :target: https:\u002F\u002Fanaconda.org\u002FBCG_Gamma\u002Fgamma-facet\n\n.. |pypi| image:: https:\u002F\u002Fbadge.fury.io\u002Fpy\u002Fgamma-facet.svg\n    :target: https:\u002F\u002Fpypi.org\u002Fproject\u002Fgamma-facet\u002F\n\n.. |azure_build| image:: https:\u002F\u002Fdev.azure.com\u002Fgamma-facet\u002Ffacet\u002F_apis\u002Fbuild\u002Fstatus\u002FBCG-X-Official.facet?repoName=BCG-X-Official%2Ffacet&branchName=develop\n   :target: https:\u002F\u002Fdev.azure.com\u002Fgamma-facet\u002Ffacet\u002F_build?definitionId=7&_a=summary\n\n.. |azure_code_cov| image:: https:\u002F\u002Fimg.shields.io\u002Fazure-devops\u002Fcoverage\u002Fgamma-facet\u002Ffacet\u002F7\u002F2.0.x\n   :target: https:\u002F\u002Fdev.azure.com\u002Fgamma-facet\u002Ffacet\u002F_build?definitionId=7&_a=summary\n\n.. |python_versions| image:: https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython-3.7|3.8|3.9-blue.svg\n   :target: https:\u002F\u002Fwww.python.org\u002Fdownloads\u002Frelease\u002Fpython-380\u002F\n\n.. |code_style| image:: https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fcode%20style-black-000000.svg\n   :target: https:\u002F\u002Fgithub.com\u002Fpsf\u002Fblack\n\n.. |made_with_sphinx_doc| image:: https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FMade%20with-Sphinx-1f425f.svg\n   :target: https:\u002F\u002Fbcg-x-official.github.io\u002Ffacet\u002Findex.html\n\n.. |license_badge| image:: https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-Apache%202.0-olivegreen.svg\n   :target: https:\u002F\u002Fopensource.org\u002Flicenses\u002FApache-2.0\n\n.. 结束-徽章","# FACET 快速上手指南\n\nFACET 是一个开源的可解释人工智能（XAI）库，旨在通过先进的**模型检查**和**基于模型的模拟**技术，为监督学习模型提供更深入的洞察。它补充了 SHAP 等局部解释方法，提供了全局视角的特征依赖与交互量化，并增强了 scikit-learn 的工作流。\n\n## 环境准备\n\n*   **操作系统**: macOS, Linux, Windows\n*   **Python 版本**: 支持主流 Python 3.x 版本（具体兼容版本请参考 PyPI 页面）\n*   **前置依赖**:\n    *   `scikit-learn`: FACET 深度集成并增强了 scikit-learn 的功能。\n    *   `pandas`: 用于数据处理，FACET 通过 `sklearndf` 提供对 DataFrame 的原生支持。\n    *   `numpy`, `matplotlib` 等科学计算库。\n*   **推荐配置**: 建议在独立的虚拟环境中安装，以避免依赖冲突。\n\n## 安装步骤\n\nFACET 支持通过 Conda 和 Pip 进行安装。\n\n### 方式一：使用 Conda (推荐)\n\n适用于 Anaconda 或 Miniconda 用户。\n\n```bash\n# 创建名为 facet 的新环境\nconda create -n facet\n\n# 激活环境\nconda activate facet\n\n# 从 bcg_gamma 和 conda-forge 频道安装\nconda install -c bcg_gamma -c conda-forge gamma-facet\n```\n\n### 方式二：使用 Pip\n\n#### macOS 和 Linux\n\n```bash\n# 创建虚拟环境\npython -m venv facet\n\n# 激活环境\nsource facet\u002Fbin\u002Factivate\n\n# 安装 FACET\npip install gamma-facet\n```\n\n#### Windows\n\n```batch\nREM 创建虚拟环境\npython -m venv facet\n\nREM 激活环境\nfacet\\Scripts\\activate.bat\n\nREM 安装 FACET\npip install gamma-facet\n```\n\n> **注意**：国内用户若遇到下载速度慢的问题，可在 pip 命令后添加 `-i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple` 使用清华镜像源。Conda 用户可配置清华或中科大镜像通道。\n\n## 基本使用\n\n以下示例演示了如何使用 FACET 构建增强的机器学习工作流，进行模型选择，并执行模型检查（特征协同性分析）。本例使用糖尿病数据集预测疾病进展。\n\n### 1. 增强型机器学习工作流与模型选择\n\nFACET 引入 `Sample` 对象来追踪特征和目标，并使用 `LearnerSelector` 轻松比较不同的超参数配置。\n\n```python\n# 标准导入\nimport pandas as pd\nfrom sklearn.model_selection import RepeatedKFold, GridSearchCV\n\n# sklearndf 导入 (FACET 增强的 scikit-learn)\nfrom sklearndf.pipeline import RegressorPipelineDF\nfrom sklearndf.regression import RandomForestRegressorDF\n\n# FACET 核心导入\nfrom facet.data import Sample\nfrom facet.selection import LearnerSelector, ParameterSpace\n\n# 1. 加载数据\ndata_url = 'https:\u002F\u002Fweb.stanford.edu\u002F~hastie\u002FPapers\u002FLARS\u002Fdiabetes.data'\ndiabetes_df = pd.read_csv(data_url, delimiter='\\t').rename(\n    columns={\n        'S1': 'TC', 'S2': 'LDL', 'S3': 'HDL', \n        'S4': 'TCH', 'S5': 'LTG', 'S6': 'GLU', \n        'Y': 'Disease_progression'\n    }\n)\n\n# 2. 创建 FACET Sample 对象\ndiabetes_sample = Sample(observations=diabetes_df, target_name=\"Disease_progression\")\n\n# 3. 定义随机森林回归管道\nrnd_forest_reg = RegressorPipelineDF(\n    regressor=RandomForestRegressorDF(n_estimators=200, random_state=42)\n)\n\n# 4. 定义超参数搜索空间\nrnd_forest_ps = ParameterSpace(rnd_forest_reg)\nrnd_forest_ps.regressor.min_samples_leaf = [8, 11, 15]\nrnd_forest_ps.regressor.max_depth = [4, 5, 6]\n\n# 5. 设置交叉验证策略 (10 次重复的 5 折 CV)\nrkf_cv = RepeatedKFold(n_splits=5, n_repeats=10, random_state=42)\n\n# 6. 模型选择与训练\nselector = LearnerSelector(\n    searcher_type=GridSearchCV,\n    parameter_space=rnd_forest_ps,\n    cv=rkf_cv,\n    n_jobs=-3,\n    scoring=\"r2\"\n).fit(diabetes_sample)\n\n# 7. 查看最佳模型摘要\nprint(selector.summary_report())\n```\n\n### 2. 模型检查：特征协同性 (Synergy)\n\nFACET 能够量化特征之间的全局交互作用（协同性），这是 SHAP 等局部解释方法所不具备的。\n\n```python\nfrom facet.inspection import LearnerInspector\nfrom pytools.viz.matrix import MatrixDrawer\n\n# 1. 初始化并拟合检查器 (使用上一步选出的最佳模型)\ninspector = LearnerInspector(\n    pipeline=selector.best_estimator_,\n    n_jobs=-3\n).fit(diabetes_sample)\n\n# 2. 获取特征协同矩阵\nsynergy_matrix = inspector.feature_synergy_matrix()\n\n# 3. 可视化协同矩阵\n# 矩阵行表示特征 A，列表示特征 B。值表示 A 对 B 预测能力的贡献程度。\nMatrixDrawer(style=\"matplot%\").draw(synergy_matrix, title=\"Synergy Matrix\")\n```\n\n**结果解读**：\n*   **协同性 (Synergy)**: 衡量模型如何结合两个特征的信息来预测目标。该指标是**不对称**的。例如，若特征 A 能显著提升特征 B 的预测能力，但反之亦然程度较低，则 `(B, A)` 的协同值会高于 `(A, B)`。\n*   **冗余性 (Redundancy)**: 衡量一个特征在多大程度上重复了另一个特征的信息（同样是不对称的）。\n\n通过上述流程，您可以快速构建透明、可追溯的机器学习管道，并深入理解模型内部特征间的复杂交互关系。更多高级功能（如模型模拟、自助法不确定性量化）请参阅官方文档。","某金融风控团队正在构建信用卡欺诈检测模型，急需向业务部门解释为何拒绝特定客户的申请，并寻找优化审批通过率的策略。\n\n### 没有 facet 时\n- 只能依赖 SHAP 提供单一样本的局部解释，缺乏对特征间复杂交互作用的全局视角，难以回答“为什么高收入人群在特定地区反而风险更高”这类宏观问题。\n- 想要测试“如果降低年龄阈值会对整体坏账率产生什么影响”时，无法在模型内部进行安全的虚拟实验，只能依靠耗时且有风险的真实 A\u002FB 测试。\n- 模拟结果缺乏不确定性量化，无法告知管理层预测值的置信区间，导致决策层对数据驱动的建議持怀疑态度。\n- 特征工程与模型训练流程割裂，使用原生 scikit-learn 管道时，一旦数据经过转换，往往丢失原始列名，导致端到端的特征溯源困难。\n\n### 使用 facet 后\n- 利用 facet 的模型检查算法，团队清晰量化了“收入”与“地区”之间的非线性依赖关系，成功向业务方展示了全局风险模式，而不仅仅是单个案例的归因。\n- 通过模型模拟功能执行虚拟实验，快速识别出将特定客群的信用评分阈值下调 5% 可在不增加坏账的前提下提升 10% 的通过率，无需动用真实流量。\n- 内置的分层自助采样（bootstrapping）算法为每次模拟提供了精确的不确定性范围，让管理层清楚看到策略调整的潜在风险边界。\n- 借助 sklearndf 增强的流水线，整个建模过程完美保留 pandas  DataFrame 的特征名称，实现了从原始数据到最终预测的全链路透明追溯。\n\nfacet 通过将深度的模型洞察与安全的虚拟实验相结合，让黑盒模型变成了业务人员可理解、可信任且可优化的决策助手。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FBCG-X-Official_facet_b25e23e8.png","BCG-X-Official","BCG X","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FBCG-X-Official_3c71ca77.png","BCG’s tech build and design unit. We build tomorrow.",null,"bcgx_","https:\u002F\u002Fwww.bcg.com\u002Fx","https:\u002F\u002Fgithub.com\u002FBCG-X-Official",[81,85,89,93],{"name":82,"color":83,"percentage":84},"Jupyter Notebook","#DA5B0B",87.7,{"name":86,"color":87,"percentage":88},"Python","#3572A5",12.3,{"name":90,"color":91,"percentage":92},"CSS","#663399",0,{"name":94,"color":95,"percentage":92},"Shell","#89e051",531,46,"2026-04-06T10:25:45","Apache-2.0",1,"Linux, macOS, Windows","未说明",{"notes":104,"python":102,"dependencies":105},"该工具是一个用于可解释性 AI 的库，主要增强 scikit-learn 的工作流。支持通过 PyPI (pip install gamma-facet) 和 Anaconda (conda install -c bcg_gamma -c conda-forge gamma-facet) 安装。官方强烈建议在专用的虚拟环境（conda 或 venv）中安装。文档示例中使用了 GridSearchCV 和 RepeatedKFold，暗示其依赖标准的科学计算栈，但未明确指定具体的 Python 版本或硬件资源需求。",[106,107,108,109],"scikit-learn","pandas","sklearndf","pytools",[111,14,16],"其他",[113,114,115,116,117,118,119,120,121,122,123],"data-science","machine-learning","python","data-analytics","model-selection","hyperparameter-tuning","interpretability","explainable-ai","shap-vector-decomposition","statistics","simulation","2026-03-27T02:49:30.150509","2026-04-18T03:47:20.288176",[127,132,137,142,147,151],{"id":128,"question_zh":129,"answer_zh":130,"source_url":131},38763,"为什么导入 LearnerInspector 时报错 'name catboost is not defined'？","这通常是由于版本不兼容导致的。请尝试将 facet 库的版本降级或升级到稳定版本（如 1.2.1 或 1.2.2）。在 conda 环境或 pip 要求文件中，建议使用 `gamma-facet ~= 1.2.2`。注意：某些旧版本可能无法通过 pip 直接找到特定版本号，建议检查可用版本列表或使用 conda 安装。","https:\u002F\u002Fgithub.com\u002FBCG-X-Official\u002Ffacet\u002Fissues\u002F334",{"id":133,"question_zh":134,"answer_zh":135,"source_url":136},38764,"如何在使用 FACET 时支持原生的 scikit-learn 模型？","FACET 现已支持原生 scikit-learn 模型。请使用 `NativeLearnerInspector` 类代替普通的 `LearnerInspector`。示例代码如下：\n```python\nfrom facet.inspection import NativeLearnerInspector\ninspector = NativeLearnerInspector(\n    model=native_scikit_learn_model_instance,\n    n_jobs=-3\n)\n```\n其中 `native_scikit_learn_model_instance` 可以是任何 scikit-learn 模型实例（如 RandomForestRegressor）。","https:\u002F\u002Fgithub.com\u002FBCG-X-Official\u002Ffacet\u002Fissues\u002F374",{"id":138,"question_zh":139,"answer_zh":140,"source_url":141},38765,"运行 LearnerInspector.fit() 时耗时过长甚至无结果，如何解决？","建议在初始化 `LearnerInspector` 时显式指定并行任务和详细日志参数，以优化性能并排查问题。例如：\n```python\ninspector = LearnerInspector(n_jobs=-3, verbose=2)\ninspector.fit(crossfit=ranker.best_model_crossfit_)\n```\n设置 `n_jobs` 为负数（如 -3）可利用多核并行加速，`verbose=2` 可输出详细日志帮助定位卡住的原因。","https:\u002F\u002Fgithub.com\u002FBCG-X-Official\u002Ffacet\u002Fissues\u002F215",{"id":143,"question_zh":144,"answer_zh":145,"source_url":146},38766,"SHAP 摘要图中的特征值影响方向似乎反了（正相关显示为负影响），这是 Bug 吗？","对于 LGBM 分类器，这种行为是预期的，并非 Bug。SHAP 解释的是模型的原始输出（log-odds 对数几率），而非概率。在 LGBM 中，原始值表现为“负对数几率”，导致符号看起来反转。实际上，高特征值（如腰围身高比）确实增加了患病风险。维护者已通过 PR #274 确保返回正类的 SHAP 值以符合预期符号，但在查看原始输出时需理解这一机制。","https:\u002F\u002Fgithub.com\u002FBCG-X-Official\u002Ffacet\u002Fissues\u002F245",{"id":148,"question_zh":149,"answer_zh":150,"source_url":136},38767,"如何在 FACET 中构建包含 scikit-learn 模型的完整工作流示例？","可以使用 `sklearndf` 包装器或直接使用 `NativeLearnerInspector`。以下是一个基于随机森林回归的完整示例：\n1. 准备数据：将 pandas DataFrame 转换为 `Sample` 对象。\n2. 定义模型：使用 `RandomForestRegressor`。\n3. 创建检查器：\n```python\nfrom facet.data import Sample\nfrom facet.inspection import NativeLearnerInspector\nimport pandas as pd\nfrom sklearn.ensemble import RandomForestRegressor\n\n# 假设 X 和 y 已加载\nX = pd.DataFrame(X)\ny = pd.DataFrame(y)\ndiabetes_df = pd.concat([X, y], axis=1)\nsample = Sample(observations=diabetes_df, target_name=\"target\")\n\nrfr = RandomForestRegressor(n_jobs=-1)\ninspector = NativeLearnerInspector(model=rfr, n_jobs=-3)\ninspector.fit(sample=sample)\n```",{"id":152,"question_zh":153,"answer_zh":154,"source_url":155},38768,"单独构建 Sphinx 文档时因缺少 pytools 脚本而失败，如何解决？","该错误发生在 `pytools` 未位于父目录时，导致找不到 `make_base` 模块。解决方法是确保 `pytools` 库已正确安装并在 Python 路径中，或者将 `pytools` 克隆到与当前项目相同的父目录下，以满足相对导入的需求。如果是在隔离环境中构建，可能需要调整 `make.py` 中的导入路径或安装包含该脚本的开发依赖。","https:\u002F\u002Fgithub.com\u002FBCG-X-Official\u002Ffacet\u002Fissues\u002F343",[157,162,167,172,177,182,187,192,197,202,207,212,217,222,227,232,237,242,247,252],{"id":158,"version":159,"summary_zh":160,"released_at":161},314703,"2.2.2","这是 gamma-facet 的 2.2.2 版本。\n\n您可以通过以下命令升级当前的 pip 安装：\n\n    pip install --upgrade gamma-facet\n\n您的 conda 包可以通过运行以下命令来升级：\n\n    conda install -c conda-forge -c bcg_gamma gamma-facet\n\n## 更改内容：\n\n* 6fbeaf513ef6faa596de5c83b0f4d66d9f976d80 合并拉取请求 #388，来自 BCG-X-Official\u002Fdev\u002F2.2.2\n* 4667c588fcb1f9397e56c032eff18b25349e4ac3 修复：修复估计器提取逻辑中的管道解包问题\n* 3f8ba255b935d57d1ee3b52fdd337b4394b95e27 修复：允许参数覆盖 ParameterSpace 类的公共字段 (#387)\n* 3946c514afab456e61f960e401ce817e13c31461 构建：将版本更新为 2.2.2\n\n此更改列表由 [自动生成](https:\u002F\u002Fdev.azure.com\u002Fgamma-facet\u002Ffacet\u002F_build\u002Fresults?buildId=6924&view=logs)。","2025-09-12T13:36:53",{"id":163,"version":164,"summary_zh":165,"released_at":166},314704,"2.2.1","这是 gamma-facet 的 2.2.1 版本。\n\n您可以通过以下命令升级当前的 pip 安装：\n\n    pip install --upgrade gamma-facet\n\n您的 conda 包可以通过运行以下命令升级：\n\n    conda install -c conda-forge -c bcg_gamma gamma-facet\n\n## 更改内容：\n\n* 888881bc007ad1195286e1e26ef5250904a52957 合并拉取请求 #386，来自 BCG-X-Official\u002Fdev\u002F2.2.1 分支\n* 276b47443515e6edb2cdbc9f67bdb6c01b3c196e 修复：在模拟中将 pandas 分类数据类型转换为 numpy 数据类型 (#385)\n* 02434889df254d5c4cba782718fa65f6623f3f3f 将 '2.1.x' 分支合并到 2.2.x 分支\n* f59c8c82c4efb0307be6bc1e0e5f57c906aac90c 构建：将 nightly 构建分支更新至 2.2.x\n* e0af54bb18ead0bd4f2e2bdc8cd14ed1623b5681 构建：将版本号更新至 2.2.1\n\n此更改列表由 [自动生成](https:\u002F\u002Fdev.azure.com\u002Fgamma-facet\u002Ffacet\u002F_build\u002Fresults?buildId=6896&view=logs)。","2025-09-03T20:20:49",{"id":168,"version":169,"summary_zh":170,"released_at":171},314705,"2.2.0","这是 gamma-facet 的 2.2.0 版本。\n\n您可以通过以下命令升级当前的 pip 安装：\n\n    pip install --upgrade gamma-facet\n\n您的 conda 包可以通过运行以下命令升级：\n\n    conda install -c conda-forge -c bcg_gamma gamma-facet\n\n## 更改内容：\n\n* c270f474779404fea997e78b8d137af72e12d7da 合并拉取请求 #384，来自 BCG-X-Official\u002Fdev\u002F2.2.0 分支\n* a39f829af242ecc806a54c55c2beef13aeae04df 构建：将版本更新为 2.2.0\n* f02c36012412c746546338152943ce16051c0a14 修复：在 Azure Pipelines 中将 PyPi 上传密码变量恢复为 facet\n* 158c9501b7b12a123f78ccf4196609237fd87c15 构建：在 Azure Pipelines 配置中将 Python 版本更新为 3.12\n* 9cf4263f04099131af6010f820c4a34d71f7deb9 合并拉取请求 #383，来自 BCG-X-Official\u002Fdev\u002F2.2rc0 分支\n* 0dfc3a1322bcf5b962b346659485ac965503492a 构建：更新 environment.yml 中的文档构建版本以确保兼容性\n* 87edd74fafed86c89f1e484768f5692882e22e72 构建：移除 tox.ini 中的 basepython 配置；依赖于流水线配置\n* b34b2e6d8b0d9c077f68504c842014cda20a2152 重构：添加对 pytools 3.0、sklearndf 2.4、shap ≥ 0.45 和 NumPy 2.0 的支持（#376）\n* dde5c7e339a9bb5311f2d4aa1ca353e11dd5a58a 修复：使用预处理后的特征名称初始化 ShapPlotData（#381）\n* e99beeb8d1fb3e594b8a447b2d213992e3d6f38e 构建：在 2.1.x 分支上运行夜间构建\n\u003Cdetails>\u003Csummary>\u003Cb>查看更多\u003C\u002Fb>\u003C\u002Fsummary>\n\n* 1ccb55dff89c7082754c9a13f4613b3573cd2bf1 将 '2.0.x' 分支合并到 2.1.x 分支\n* 4b634d1c09e5f4cdfbdc4d5e644e102701eb97a9 BUILD：在向 2.0.x 分支推送时运行流水线\n* 6b8599a01a076f527a123995906bc5a3e7ee58de 构建：将版本更新为 2.1.2\n* 4c4b12b0b80181e16ac303d102bcdc47757e6697 构建：在针对 2.1.x 分支的 PR 上运行流水线\n* d92e81eb013d6a2c5193e611fe87d0218961a9a9 将 '2.0.x' 分支合并到 2.1.x 分支\n* 618904b4e15927ca4f9727a07ed9527fdadca994 构建：在 2.1.x 分支上运行夜间构建\n\n此更改列表由 [自动生成](https:\u002F\u002Fdev.azure.com\u002Fgamma-facet\u002Ffacet\u002F_build\u002Fresults?buildId=6783&view=logs)。*\u003C\u002Fdetails>","2025-07-25T18:14:49",{"id":173,"version":174,"summary_zh":175,"released_at":176},314706,"2.2rc0","这是 gamma-facet 的 2.2rc0 版本。\n\n您可以通过以下命令升级当前的 pip 安装：\n\n    pip install --upgrade gamma-facet\n\n您的 conda 包可以通过运行以下命令来升级：\n\n    conda install -c conda-forge -c bcg_gamma gamma-facet\n\n## 更改内容：\n\n* 9cf4263f04099131af6010f820c4a34d71f7deb9 合并拉取请求 #383，来自 BCG-X-Official\u002Fdev\u002F2.2rc0 分支\n* 0dfc3a1322bcf5b962b346659485ac965503492a 构建：更新 environment.yml 中的文档构建版本以确保兼容性\n* 87edd74fafed86c89f1e484768f5692882e22e72 构建：移除 tox.ini 中的 basepython 配置；依赖于流水线配置\n* b34b2e6d8b0d9c077f68504c842014cda20a2152 重构：添加对 pytools 3.0、sklearndf 2.4、shap ≥ 0.45 和 NumPy 2.0 的支持 (#376)\n* dde5c7e339a9bb5311f2d4aa1ca353e11dd5a58a 修复：使用预处理后的特征名称初始化 ShapPlotData (#381)\n* e99beeb8d1fb3e594b8a447b2d213992e3d6f38e 构建：在 2.1.x 分支上运行夜间构建\n* 1ccb55dff89c7082754c9a13f4613b3573cd2bf1 将 '2.0.x' 分支合并到 2.1.x\n* 4b634d1c09e5f4cdfbdc4d5e644e102701eb97a9 构建：在向 2.0.x 推送代码时运行流水线\n* 6b8599a01a076f527a123995906bc5a3e7ee58de 构建：将版本更新为 2.1.2\n* 4c4b12b0b80181e16ac303d102bcdc47757e6697 构建：在针对 2.1.x 的 Pull Request 上运行流水线\n\u003Cdetails>\u003Csummary>\u003Cb>查看更多\u003C\u002Fb>\u003C\u002Fsummary>\n\n* d92e81eb013d6a2c5193e611fe87d0218961a9a9 将 '2.0.x' 分支合并到 2.1.x\n* 618904b4e15927ca4f9727a07ed9527fdadca994 构建：在 2.1.x 分支上运行夜间构建\n\n此更改列表由 [自动生](https:\u002F\u002Fdev.azure.com\u002Fgamma-facet\u002Ffacet\u002F_build\u002Fresults?buildId=6777&view=logs) 成。\u003C\u002Fdetails>","2025-07-25T13:35:22",{"id":178,"version":179,"summary_zh":180,"released_at":181},314707,"2.1.1","这是 gamma-facet 的 2.1.1 版本。\n\n您可以通过以下命令升级当前的 pip 安装：\n\n    pip install --upgrade gamma-facet\n\n您的 conda 包可以通过运行以下命令升级：\n\n    conda install -c conda-forge -c bcg_gamma gamma-facet\n\n## 更改内容：\n\n* 66bea1574e7a05e8db13cc25b5f071a260d0f66b 合并拉取请求 #378，来自 BCG-X-Official\u002Fdev\u002F2.1.1\n* 290864b636e3edd4a2a60f0bccd9e8a67096b207 将分支 '2.1.x' 合并到 dev\u002F2.1.1\n* c0b6a15a75570fde3ac590ed23b9f6857db60369 将分支 '2.0.x' 合并到 2.1.x\n* 4f605355de3f817533803da08e453157ac22a108 将分支 'release\u002F2.0.1' 合并到 2.0.x\n* 328ee53460ffdc37b920bc91626ea9467b546b93 构建：将版本更新为 2.1.1\n* b535b161f50aebb60fc20f840fa2c773baafa93b 将分支 '2.0.x' 合并到 2.1.x\n* 55b451cfcf239e26ef9cafeb59d1fe3e07bf026a 构建：将版本更新为 2.0.2\n* 3a5da890f6de88596ea030fde71d573a7dc38f10 文档：更新发布说明\n* af062656c05c768c1f74429044eb353d2a54e3d5 将分支 '2.0.x' 合并到 2.1.x\n* 368ae42fbf0630ec473835b20e80e880f07f30c1 将分支 '2.0.x' 合并到 2.1.x\n\u003Cdetails>\u003Csummary>\u003Cb>查看更多\u003C\u002Fb>\u003C\u002Fsummary>\n\n* ba5cb980b0bb2583aaa47cde466d90a45babfe42 更新 README.rst\n* 3696daff159a19b798014616a2c1646ce18fe28d 将分支 '2.0.x' 合并到 2.1.x\n* 319ee560c0c0d72e9975bde4c749df66c0466972 将分支 '2.0.x' 合并到 2.1.x\n* 70f757f00dcf132e886645e6231fcc1f45a7ca20 合并拉取请求 #373，来自 BCG-Gamma\u002Fdev\u002F2.1.0\n* 7003f4e67b67f09be4d06842f8db3e972fccee74 构建：将版本更新为 2.1.0\n* c5d7cbffcf2e27189195f795bb94ba8ffe925a1e 合并拉取请求 #371，来自 BCG-Gamma\u002Fdev\u002F2.1rc0\n* e9efa29b2661e57d8468882980dddd333df317b3 文档：调整发布说明\n* 118a8e301580b457297ebfdc07e394e75341364c 文档：调整学习者检查器的文档字符串\n* 4ee81f600ae19bc5cddc308a1f5093bcd85b8027 修复：在 is_fitted() 中检查超类的属性\n* 03fc727913252f52f4554876bcf43999c81a52a3 构建：要求 zipp\u003C3.16，以便在 Python 3.7 上进行最小化 conda 测试\n* e880e6fbdfbf5078dc96092a24f59bb34801a1b6 测试：仅在必要时重新拟合模型\n* 921b385066e7b659d102168e6c9282e5a1e489d1 构建：要求 zipp\u003C3.16，以便在 Python 3.7 上进行最小化测试\n* c075e10a218f68e7055c8d2f6e927b93032cdcff 构建：更新最小和最大矩阵测试包的依赖项\n* e769708d10b9ee1f1a0a6814d1107a7fd947ec63 将远程跟踪分支 'origin\u002Fdev\u002F2.1rc0' 合并到 dev\u002F2.1rc0\n* 1833b3ceb35e697cdc78111e7aeec648f07893c9 修复：对 sklearn 1.0.x 进行无预处理的原生学习者检查器测试 (#372)\n* 422ea53053a4e5ea5c19da3245713db06016a789 将分支 '2.0.x' 合并到 2.1.x\n* bfa5da709b3977a715520a7db41a6de6134935c0 API：增加对原生 scikit-learn 学习者和学习者管道的检查支持 (#369) [ #370 ]\n* 5fe3110b010fff98c8944e317325553227ed853c 反馈：使用最新的 `black` 重新格式化代码\n* b9489d826b47053cfd1ec22ae6d89266707175dd 文档：更新发布说明\n* 229d32390a7b9a9fc220ad5ddcdf2897ab973154 构建：将版本更改为 2.1rc0\n\n此更改列表由[自动生成](https:\u002F\u002Fdev.azure.com\u002Fgamma-facet\u002Ffacet\u002F_build\u002Fresults?buildId=6560&view=logs)。\u003C\u002Fdetails>","2023-11-15T17:17:14",{"id":183,"version":184,"summary_zh":185,"released_at":186},314708,"2.0.1","这是 gamma-facet 的 2.0.1 版本。\n\n您可以通过以下命令升级当前的 pip 安装：\n\n    pip install --upgrade gamma-facet\n\n您的 conda 包可以通过运行以下命令升级：\n\n    conda install -c conda-forge -c bcg_gamma gamma-facet\n\n## 更改内容：\n\n* 0948ac8b5df8b8d632ce3bd7e89df727d8b9f0b1 合并拉取请求 #377，来自 BCG-X-Official\u002Fdev\u002F2.0.1\n* 093eafceb6d1febcf13e6027f2ed47e0b2c23eac 修复：在检出之前从远程仓库获取所需的文档分支\n* 9b4bae3f692fb3d6134a1cf0ae462381bd4c2de6 合并拉取请求 #375，来自 BCG-X-Official\u002Ffix\u002Fmatplotlib-3.6\n* 876c2e29bc2121f17d8069f621cb883ba1bce4b8 构建：更新 environment.yml 中的版本号\n* beecd1f9dad27c6c9cfe447ecda1d9fdbeb3ee87 构建：将 black 更新至 23.10.1\n* e673acbc2b50220300e3c4554cd21ae611716b52 修复：替换对已弃用的 Axes.get_text_heights() 方法的调用\n* a5c75ec3dd7a04a25ab1dd918b5f0052e5aaa6c1 将 GitHub 组织名称更改为 BCG-X-Official\n* 4c8e403ec179d71bd051e555cec5986e1dddbef9 将 GitHub 组织名称更改为 BCG-X-Official\n* 0f6cbf52afb153e7565239b1f323406c6e54d44d 将 GitHub 组织名称更改为 BCG-X-Official\n\n此更改列表由 [自动生成](https:\u002F\u002Fdev.azure.com\u002Fgamma-facet\u002Ffacet\u002F_build\u002Fresults?buildId=6544&view=logs)。","2023-11-14T21:30:53",{"id":188,"version":189,"summary_zh":190,"released_at":191},314709,"2.1.0","这是 gamma-facet 的 2.1.0 版本。\n\n您可以通过以下命令升级当前的 pip 安装：\n\n    pip install --upgrade gamma-facet\n\n您的 conda 包可以通过运行以下命令升级：\n\n    conda install -c conda-forge -c bcg_gamma gamma-facet\n\n## 更改内容：\n\n* 70f757f00dcf132e886645e6231fcc1f45a7ca20 合并拉取请求 #373，来自 BCG-Gamma\u002Fdev\u002F2.1.0 分支\n* 7003f4e67b67f09be4d06842f8db3e972fccee74 构建：将版本更新为 2.1.0\n* c5d7cbffcf2e27189195f795bb94ba8ffe925a1e 合并拉取请求 #371，来自 BCG-Gamma\u002Fdev\u002F2.1rc0 分支\n* e9efa29b2661e57d8468882980dddd333df317b3 文档：调整发布说明\n* 118a8e301580b457297ebfdc07e394e75341364c 文档：调整学习者检查器的文档字符串\n* 4ee81f600ae19bc5cddc308a1f5093bcd85b8027 修复：在 is_fitted() 中检查超类的属性\n* 03fc727913252f52f4554876bcf43999c81a52a3 构建：要求 zipp\u003C3.16，用于 Python 3.7 的最小 conda 测试\n* e880e6fbdfbf5078dc96092a24f59bb34801a1b6 测试：仅在必要时重新拟合模型\n* 921b385066e7b659d102168e6c9282e5a1e489d1 构建：要求 zipp\u003C3.16，用于 Python 3.7 的最小测试\n* c075e10a218f68e7055c8d2f6e927b93032cdcff 构建：更新矩阵测试包的最小和最大依赖版本\n\u003Cdetails>\u003Csummary>\u003Cb>查看更多\u003C\u002Fb>\u003C\u002Fsummary>\n\n* e769708d10b9ee1f1a0a6814d1107a7fd947ec63 将远程跟踪分支 'origin\u002Fdev\u002F2.1rc0' 合并到 dev\u002F2.1rc0 分支\n* 1833b3ceb35e697cdc78111e7aeec648f07893c9 修复：针对 sklearn 1.0.x 测试无预处理的原生学习者检查器 (#372)\n* 422ea53053a4e5ea5c19da3245713db06016a789 将 '2.0.x' 分支合并到 '2.1.x' 分支\n* b67f376fe536c9993cff14fa887e44cdab9691e7 REFACTOR：使用最新的 `black` 重新格式化代码\n* bfa5da709b3977a715520a7db41a6de6134935c0 API：添加对原生 scikit-learn 学习者和学习者流水线的检查支持 (#369) [ #370 ]\n* 5fe3110b010fff98c8944e317325553227ed853c REFACTOR：使用最新的 `black` 重新格式化代码\n* b9489d826b47053cfd1ec22ae6d89266707175dd 文档：更新发布说明\n* 229d32390a7b9a9fc220ad5ddcdf2897ab973154 构建：将版本更改为 2.1rc0\n* b9f6b73e7eca0d568e8ceb7c376f851cae1dc073 API：在 LearnerInspector 中支持简单（非流水线）的学习者 (#368)\n* 6749064167fd8b3b8fbfa115fe41a0c8d5732e7f 修复：在 LearnerInspector 异常中引用参数 model（而非 pipeline）(#367)\n* b3893932d595c4915cf87a8f30c6d7b0fdb856db 修复：为夜间构建安装 micromamba\n* ea41a47c326ecdcaf591f4a51f3dc83f98f7cbec 构建：简化开发环境\n* 1bd64edaffab95f200d813335114177e21aba9b8 构建：使用 mamba 加快 conda 构建速度 (#365)\n* 3cead7bcc1e30a918a6893d7fb9e92d594557e1d 将 '1.2.x' 分支合并到 '2.0.x' 分支\n* 1f0881ea096d546df093f927b19fb2ad5b1e0935 BUILD：将版本更新为 2.0.1\n* b481df057226ecbc45f108e93863c6ccb4ff3d68 BUILD：禁止使用 numpy >=1.24，因为它与 shap \u003C=0.40 不兼容\n* 011d472eb781c8749e28589cca23779e1b65eb0c BUILD：将 flake8 升级至 ~5.0\n* 7a062332a22ac95e25907ce3b612e040c01c2cc6 BUILD：将 flake8 仓库迁移到 GitHub\n\n此更改列表由 [自动生成](https:\u002F\u002Fdev.azure.com\u002Fgamma-facet\u002Ffacet\u002F_build\u002Fresults?buildId=6413&view=logs)。","2023-07-11T16:35:47",{"id":193,"version":194,"summary_zh":195,"released_at":196},314710,"2.1rc0","这是 gamma-facet 的 2.1rc0 版本。\n\n您可以通过以下命令升级当前的 pip 安装：\n\n    pip install --upgrade gamma-facet\n\n您的 conda 包可以通过运行以下命令升级：\n\n    conda install -c conda-forge -c bcg_gamma gamma-facet\n\n## 更改内容：\n\n* c5d7cbffcf2e27189195f795bb94ba8ffe925a1e 合并拉取请求 #371，来自 BCG-Gamma\u002Fdev\u002F2.1rc0\n* e9efa29b2661e57d8468882980dddd333df317b3 文档：调整发布说明\n* 118a8e301580b457297ebfdc07e394e75341364c 文档：调整学习器检查器的文档字符串\n* 4ee81f600ae19bc5cddc308a1f5093bcd85b8027 修复：在 is_fitted() 中检查超类的属性\n* 03fc727913252f52f4554876bcf43999c81a52a3 构建：要求 zipp\u003C3.16，用于 Python 3.7 的最小 conda 测试\n* e880e6fbdfbf5078dc96092a24f59bb34801a1b6 测试：仅在必要时重新拟合模型\n* 921b385066e7b659d102168e6c9282e5a1e489d1 构建：要求 zipp\u003C3.16，用于 Python 3.7 的最小测试\n* c075e10a218f68e7055c8d2f6e927b93032cdcff 构建：更新矩阵测试包的最小和最大依赖版本\n* e769708d10b9ee1f1a0a6814d1107a7fd947ec63 合并远程跟踪分支 'origin\u002Fdev\u002F2.1rc0' 到 dev\u002F2.1rc0\n* 1833b3ceb35e697cdc78111e7aeec648f07893c9 修复：为 sklearn 1.0.x 测试无预处理的原生学习器检查器 (#372)\n\u003Cdetails>\u003Csummary>\u003Cb>查看更多\u003C\u002Fb>\u003C\u002Fsummary>\n\n* 422ea53053a4e5ea5c19da3245713db06016a789 将分支 '2.0.x' 合并到 '2.1.x'\n* b67f376fe536c9993cff14fa887e44cdab9691e7 REFACTOR：使用最新的 `black` 重新格式化代码\n* bfa5da709b3977a715520a7db41a6de6134935c0 API：添加对原生 scikit-learn 学习器和学习器管道的检查支持 (#369) [ #370 ]\n* 5fe3110b010fff98c8944e317325553227ed853c REFACTOR：使用最新的 `black` 重新格式化代码\n* b9489d826b47053cfd1ec22ae6d89266707175dd 文档：更新发布说明\n* 229d32390a7b9a9fc220ad5ddcdf2897ab973154 构建：将版本更改为 2.1rc0\n* b9f6b73e7eca0d568e8ceb7c376f851cae1dc073 API：在 LearnerInspector 中支持简单（非管道）学习器 (#368)\n* 6749064167fd8b3b8fbfa115fe41a0c8d5732e7f 修复：在 LearnerInspector 异常中引用参数 model（而非 pipeline）(#367)\n* b3893932d595c4915cf87a8f30c6d7b0fdb856db 修复：为夜间构建安装 micromamba\n* ea41a47c326ecdcaf591f4a51f3dc83f98f7cbec 构建：简化开发环境\n* 1bd64edaffab95f200d813335114177e21aba9b8 构建：使用 mamba 加快 conda 构建速度 (#365)\n* 3cead7bcc1e30a918a6893d7fb9e92d594557e1d 将分支 '1.2.x' 合并到 '2.0.x'\n* 1f0881ea096d546df093f927b19fb2ad5b1e0935 BUILD：将版本更新为 2.0.1\n* b481df057226ecbc45f108e93863c6ccb4ff3d68 BUILD：禁止使用 numpy >=1.24，因为它与 shap \u003C=0.40 不兼容\n* 011d472eb781c8749e28589cca23779e1b65eb0c BUILD：将 flake8 升级至 ~=5.0\n* 7a062332a22ac95e25907ce3b612e040c01c2cc6 BUILD：将 flake8 仓库迁移到 GitHub\n\n此更改列表由[自动生成](https:\u002F\u002Fdev.azure.com\u002Fgamma-facet\u002Ffacet\u002F_build\u002Fresults?buildId=6410&view=logs)。*\u003C\u002Fdetails>","2023-07-11T15:47:00",{"id":198,"version":199,"summary_zh":200,"released_at":201},314711,"2.0.0","这是 gamma-facet 的 2.0.0 版本。\n\n您可以通过以下命令升级当前的 pip 安装：\n\n    pip install --upgrade gamma-facet\n\n您的 conda 包可以通过运行以下命令升级：\n\n    conda install -c conda-forge -c bcg_gamma gamma-facet\n\n## 更改内容：\n\n* bd02c4c6796256d63980d3a68fcd64d55865f22b 合并拉取请求 #362，来自 BCG-Gamma\u002Fdev\u002F2.0.0 分支\n* b9218238b0b97924545aae339827757e6d7397a9 文档：在 LaTeX 公式中将 '*' 替换为 '\\cdot'\n* c1169a7d8583abd4f38002aad52df98e557bcf75 将远程跟踪分支 'origin\u002Fdev\u002F2.0.0' 合并到 dev\u002F2.0.0 分支\n* d6d607bf71a3521d2398110600950d687de8a5c8 文档：更新 FACET 2.0 概述，并在 README.rst 中添加公告\n* ecbf8fbb33a10af38c2eca067b1c1abaecfb6ac2 文档：更新 FACET 2.0 概述，并在 README.rst 中添加公告\n* d2f500935e2f95441f8c7c1148574c9eea2a3396 文档：调整发布说明\n* 33a7a308bb4756554409a98688824d016ace44d0 修复：修复类型注解\n* 684b75deb603d7083b589537373f89e28dd2ade5 文档：BaseExplainer 中不继承 shap Explainer.__init__ 的文档字符串\n* 1fd3894c4b294754dbce5fd95eaaaaf62302af933 MERGE：在重构合并后重新引入用于 SHAP 的 numpy 黑科技\n* 9318b10c3530f382e984fdafb9b65bcce8c5b0d7 将分支 '2.0.x' 合并到 dev\u002F2.0.0 分支\n\u003Cdetails>\u003Csummary>\u003Cb>查看更多\u003C\u002Fb>\u003C\u002Fsummary>\n\n* ff921d5ff2bd5892b65b2a944c2adba41f02e5ce REFACTOR：将解释器类移动到专门的 `explainer` 子包中 (#363)\n* e19f2d0fb6726233a8e537c7c9751f592c00e6f6 DOC：调整文档字符串\n* 51538b756837ac0f72d98c41451086afff3e95fb DOC：调整发布说明\n* 7185963fac0f9e725e595018a0b52903384171a0 DOC：更新发布说明\n* ce80163dd137c1ff22cd5ca36ee937795bac5ec1 BUILD：在未压缩的情况下发布文档工件\n* 9f2e964597dc832878cb089568ad25d83f527aef BUILD：应用一项黑科技来解决 shap 与 numpy>=1.24 不兼容的问题\n* d4039182e6bd9f0a8ca7eb2563263c8f839fcf3b BUILD：应用一项黑科技来解决 shap 与 numpy>=1.24 不兼容的问题\n* d9648b4b64de69c107b745fc7f6cf194a9a3c2e8 Merge branch '1.2.x' into 2.0.x\n* 7563e57b8997cf1a6edd9339e6387c18846024fc Merge remote-tracking branch 'origin\u002Frelease\u002F1.2.3' into 1.2.x\n* 306ef591977fd4c1082ffaf29942821822a6841f BUILD：要求 pytools 2.1 和 sklearndf 2.2\n* 630ba45cf77b838e31d298ca2b66915cc88cc310 BUILD：在 mypy 检查中不要忽略 pytools\n* 1d3dfe703199c036f0fc9be4925419e3cfebcd5a API：从 `LearnerInspector` 中提取抽象基类 `ModelInspector`，并引入新的 `FunctionInspector` (#352) [ #361 ]\n* 73a4025cb016545a0934b6802ac7c7a8c055f2e7 BUILD：在 meta.yaml 中忽略可选包\n* 1ca9a6aab0703cec734f0b423614dfde5e888095 BUILD：使用 micromamba 解决 environment.yml (#360)\n* 0c5ecfac85be447e8cc865e616c6107c79905055 Merge branch '1.2.x' into 2.0.x\n* f368979dcec7a62775ff3cd785888ccca9ac8029 BUILD：将版本设置为 2.0.0\n* fb88729ea9e1697d469838bfec74fad04e47259c Merge pull request #358 from BCG-Gamma\u002Fdev\u002F2.0rc2\n* 234f1d9bc8a86858c0f3cd986a028c75133e32ff DOC：构建文档时不要检出 pytools\n* 48c896603b837ea00d51d0781a7f33afe6f61b04 DOC：bu","2023-05-17T09:21:46",{"id":203,"version":204,"summary_zh":205,"released_at":206},314712,"2.0rc2","这是 gamma-facet 的 2.0rc2 版本。\n\n您可以通过以下命令升级当前的 pip 安装：\n\n    pip install --upgrade gamma-facet\n\n您的 conda 包可以通过运行以下命令升级：\n\n    conda install -c conda-forge -c bcg_gamma gamma-facet\n\n## 更改内容：\n\n* fb88729ea9e1697d469838bfec74fad04e47259c 合并拉取请求 #358，来自 BCG-Gamma\u002Fdev\u002F2.0rc2\n* 234f1d9bc8a86858c0f3cd986a028c75133e32ff 文档：构建文档时不要检出 pytools\n* 48c896603b837ea00d51d0781a7f33afe6f61b04 文档：使用 pytools 2.1.x 构建 Sphinx 文档\n* f5b01e38a14cf1e0a4d3229d2a5a99c28ab8664e 测试：提高 check_ranking 的容差，以覆盖 sklearn 0.24 的结果\n* 9b21c3463fd90e9d8c96e627b11cc08d37ca8f63 构建：将版本设置为 2.0rc2\n* 34c503f8aad5d5d33b05cd915ffdcf2dcb474db3 修复：针对 sklearndf 2.2rc API 进行调整\n* 15a610b3458589be6803e17f7f8c00eb23a45414 构建：使用 sklearndf 2.2rc\n* 4b73d71bf606fcfce209e35d3bbf5b6224e92ef1 构建：使用 sklearndf 2.2rc\n* f017f6982fd4a04fad03b8ee16684d0e73546023 修复：修复 mypy 检查及开发包依赖项（#356）\n* c17b6c250c6d1f5dca7472e4cb6bf68248bb4332 添加指向 2.0 文档的链接\n\u003Cdetails>\u003Csummary>\u003Cb>查看更多\u003C\u002Fb>\u003C\u002Fsummary>\n\n* ad013dd531e0a6d1620deef2fab8b240b364746c API：在 simulate_feature() 中接受额外的分区器参数（#355）\n* ab3d1581edd6bedcf329c87c30d3cbd8e8b61a94 IDE：在 PyCharm 中将 facet-base 设置为默认 conda 环境\n* 95d537692546af0b02536a10e53ce8fcd21cbf44 BUILD：要求 sklearndf~=2.2.dev 用于 mypy\n* 8a1cfe031a539835414e158fd11bea611e024643 将远程跟踪分支 'origin\u002Frelease\u002F2.0rc1' 合并到 2.0.x\n* fae8b822f19862ec6dc166deba5aa043af92377d 修复：添加 CandidateEstimatorDF._get_outputs，这是 sklearndf 2.2 所需的\n* bfa3e2ff3794372958ff511c18940fc4acbbf576 BUILD：要求 sklearndf~=2.2.dev\n* 68fbd3476d539288c64d75f0adcc949862210ded BUILD：升级到 mypy 0.981\n* 3b93e2a1bc85f845be8830eef3ae823b5cfc6994 将分支 '1.2.x' 合并到 2.0.x\n* 006d0c5dce674a63fa7b860b0645ab47f6414b8d API：支持 pytools 2.1 的 `@fitted_only` 装饰器（#351）\n* a0720310eef69aae2de9c40a75d54ab2079dffa5 合并拉取请求 #350，来自 BCG-Gamma\u002Fdev\u002F2.0rc1\n* e841be4e4cc4323871a68c6a8c224333a754365b BUILD：在发布候选阶段要求 pytools ~=2.0.x\n* 642dda9b36eb9c074de9e7fdc79cfe8314a6c55c BUILD：在发布候选阶段要求 pytools ~=2.0.x\n* 4dbdd57c0c67ebf25c68bf464daba39ee2f14db5 BUILD：将版本更新为 2.0rc1\n* 87cc9ec6a3fbce3995402e38af10611b2c8c6a74 BUILD：在发布候选阶段要求 pytools ~=2.0.x\n* 7ab073274970650377643e3ff2cae03bf6186383 BUILD：将版本更新为 2.0.0\n* 537d8be4d51bf0df2ff5e1aa0432d64463b8ff55 合并拉取请求 #349，来自 BCG-Gamma\u002Fdev\u002F2.0rc0\n* fd016f6e18bd0b50ccf1c6460a7e431c8eff141d DOC：调整 docstring\n* 9cc2881afe3cd9eab08e6573d7fb1c7ede626b52 BUILD：更新 azire 流程\n* 1bdc49bd6dc037b8d839e6e42b26670cdd3ea610 API：将 `ModelSelector`重命名为 `LearnerSelector`（#348）\n* dba2d2c852b257836ca707033375d0f69b42b5df BUILD：将版本更新为 2.0rc0","2023-01-24T11:59:23",{"id":208,"version":209,"summary_zh":210,"released_at":211},314713,"1.2.3","This is the 1.2.3 release of gamma-facet.\n\nYou can upgrade your current pip installation via\n\n    pip install --upgrade gamma-facet\n\nYour conda package can be upgraded by running\n\n    conda install -c conda-forge -c bcg_gamma gamma-facet\n\n## Changes:\n\n* efac218d05bd51759b4ea7ab5d3b20692acfb295 Merge pull request #353 from BCG-Gamma\u002Fdev\u002F1.2.3\n* 2bf1e720139791302562226f0692e5fa6ae2de50 DOC: update release notes\n* 5f6bf9e8a6e4a2efab2bd832b88e00b7b1db63df DOC: disable doc build\n* 4a4361f9943ecd32b5eee1f42f1532a3ceadfdd3 BUILD: run nightly builds on branch 2.0.x\n* 97a13a92df907a1771af6c10a5a8fe41b2058d61 BUILD: pin matplotlib to \u003C 3.6 due to an incompatibility with pytools\n* db25eacd0f45315760757f5a2573687d7dd2d148 BUILD: pin scipy to \u003C 1.9 due to an incompatibility with scikit-learn\n* 14f53f6659c512ae9bd7e7bcb3d919c9e0438402 BUILD: update version to 1.2.3\n\nThis list of changes was [auto generated](https:\u002F\u002Fdev.azure.com\u002Fgamma-facet\u002Ffacet\u002F_build\u002Fresults?buildId=5983&view=logs).","2022-09-29T15:51:31",{"id":213,"version":214,"summary_zh":215,"released_at":216},314714,"2.0rc1","This is the 2.0rc1 release of gamma-facet.\n\nYou can upgrade your current pip installation via\n\n    pip install --upgrade gamma-facet\n\nYour conda package can be upgraded by running\n\n    conda install -c conda-forge -c bcg_gamma gamma-facet\n\n## Changes:\n\n* a0720310eef69aae2de9c40a75d54ab2079dffa5 Merge pull request #350 from BCG-Gamma\u002Fdev\u002F2.0rc1\n* e841be4e4cc4323871a68c6a8c224333a754365b BUILD: require pytools ~=2.0.x while we're in release candidate stage\n* 642dda9b36eb9c074de9e7fdc79cfe8314a6c55c BUILD: require pytools ~=2.0.x while we're in release candidate stage\n* 4dbdd57c0c67ebf25c68bf464daba39ee2f14db5 BUILD: update version to 2.0rc1\n* 87cc9ec6a3fbce3995402e38af10611b2c8c6a74 BUILD: require pytools ~=2.0.x while we're in release candidate stage\n* 537d8be4d51bf0df2ff5e1aa0432d64463b8ff55 Merge pull request #349 from BCG-Gamma\u002Fdev\u002F2.0rc0\n* fd016f6e18bd0b50ccf1c6460a7e431c8eff141d DOC: tweak docstrings\n* 9cc2881afe3cd9eab08e6573d7fb1c7ede626b52 BUILD: update azire pipeline\n* 1bdc49bd6dc037b8d839e6e42b26670cdd3ea610 API: Rename `ModelSelector` to `LearnerSelector` (#348)\n* dba2d2c852b257836ca707033375d0f69b42b5df BUILD: update version to 2.0rc0\n\u003Cdetails>\u003Csummary>\u003Cb>See More\u003C\u002Fb>\u003C\u002Fsummary>\n\n* 5c687eb68311fe2ef3bd2fc7e989833cc4c6da56 FIX: re-add required dependencies for mypy check\n* f67564675f2c25e676447d48161c062177d1ca00 BUILD: update code quality checker versions\n* 7ad28b947fc1662e4080b5b3ec880d5b36879394 DOC: update docs and tutorials to 2.0 (#321) [ #341 ]\n* cd5388125973e62651ba9a36d9159da4479a4ef3 BUILD: use python 3.9 with the mypy pre-commit hook\n* eeaf70d0f01bc353ae2c709f3d3223aafa193950 BUILD: require python ~=3.9 in environment.yml\n* bf747bc8a2ff5574ba57095d110f792601a836b2 BUILD: require python ~=3.9 in 'max' matrix builds\n* a140cd4e58b9587ee8416a9c41ad0235403fe581 BUILD: add pre-commit ~=2.20 to environment.yml\n* 819abe78f4eb896538feb771f396b7ff651d7104 BUILD: relax python dependency to ~=3.8\n* 690134a65052e022de1737359495cdd42c853539 DOC: enable local sphinx builds (#345)\n* f14982a3298fa2ced6edb680d5c0db09438f5d10 validation (#347)\n* e2e5cf511613e4ca9c88158481e3d3a65a7507a4 API: raise exception if the name of any Sample column is not a string (#339)\n* c9f4dd769eba2ec7347d0df069c25efac00ee4a7 REFACTOR: support mypy checks in 'strict' mode (#346)\n* 487b13d90c9323ea2f9252084542776f65bc8d69 BUILD: update package dependencies\n* 15488ec177cc58140147716e4081b5098b3f540c BUILD: update package versions for code linters\n* 99c3df46afd8b0911dafc4cf0dbd43551b1e9cd6 BUILD: use stable pytools ~=2.0,>=2.0.1\n* b19ebed305e35fbb2148ed37bdb4ad9a75bd7b2e BUILD: update pytest to ~=7.1\n* dcaed314b18d9c29a7a697ffd387e25815e6f010 BUILD: update azure-pipelines.yml in line with pytools pipeline\n* 8357c0bc1a73ddec52df71a223baeb622812215d BUILD: update build config to support updates to pytools make.py\n* 68fc0410eaf2a7e0db06f2d1fea30c4f10cd4932 TEST: tidy up unit tests (#340)\n* 52e80c4d8e82de040d4766a27c518903e500a2e5 IDE: ignore .mypy_cache folder\n* b1b98448d58a02ccf67e65461a7b6621378144a3 BUILD: use pytools 2.0\n* 812e09e140daf9105b1e4de3d81b9a98c3e40e25 BUILD: update flake8 and mypy to latest versions in pre-commit config (#342)\n* 5c832f85863b62b2432deba094ff7b630c67b2ac BUILD: update version to 2.0.dev2\n* 0182c8d0536bdef256b3cde0c640af0c8156b254 Merge remote-tracking branch 'origin\u002Frelease\u002F2.0.dev1' into 2.0.x\n* cbdef1bedafe035cfabc7262f4df31e87e6af2cd clean up after merge\n* 63a0ea56e10965a5cbb2ef196504914da53ad250 Merge branch '1.2.x' into 2.0.x\n* 14f53f6659c512ae9bd7e7bcb3d919c9e0438402 BUILD: update version to 1.2.3\n* 5e9e8a62543522b77e1cc25c4f60821e3d571e9a Merge pull request #336 from BCG-Gamma\u002Fdev\u002F2.0.dev1\n* ede0d22fd2095e86adfadfd8eb36c656d44bf09e FIX: min build (#337)\n* 5908b20062af27eaa311a75e7857d2cbe7b00d24 BUILD: use oldest-supported-numpy in build env to prevent numpy issues\n* 5f9f52f9c7b8df94fea29f4d533a7bd9bbe229bd BUILD: change scipy 1.2.3 to 1.2.1 in min build\n* c5fab3d1adc47e3d670d0a34838cab0faf5cf11a BUILD: restore scipy 1.2 support in tests\n* ca8e71ed203d9e0bc6a04fa274373cffb8f9c305 TEST: make min matrix tests work again\n* 6a5659dfbd1f7aba24c0266e4d5b34ab2606ce2e FIX: don't use zipfian distribution so test works with scipy\u003C1.7\n* f132449e5a1d77432ad52811412fe7d6a073ea07 BUILD: update scipy to min=1.4 max=1.8\n* 283b86bbacc8f7c40b5ceba457aa1a4bd70ff75b BUILD: update black to 22.3\n* cd647e8f978b258fab2204da4c5e528bc9a8bb74 API: remove class FullSampleValidator (#332)\n* 3965402f9044069ef9a775215c8dc4436946c0d2 Merge branch '2.0.x' of git@github.com:BCG-Gamma\u002Ffacet.git\n* 3ed7a27da85f24effad38392f5fa1c893b7eb6c8 FIX: typo in environment.yml\n* f91e45fa6a014c2c07df24cc7dc87243df896f62 BUILD: update azure pipeline\n* 30f6a4dae49a14d5dbacc0eb068472c2575f935b BUILD: update package requirements\n* 0cd01d0f8e13f8cc02ad917ab00f51b758554720 BUILD: add support for mypy (#324)\n* 21db1a32b0e1e0cf038b0e72327b0feb42b22e41 BUILD: update black to v22.1 (#329)\n* 4bb6494a8b3951dfdfe990b15147a38c5012eda4 API: bump min Python ve","2022-09-24T08:22:44",{"id":218,"version":219,"summary_zh":220,"released_at":221},314715,"2.0rc0","This is the 2.0rc0 release of gamma-facet.\n\nYou can upgrade your current pip installation via\n\n    pip install --upgrade gamma-facet\n\nYour conda package can be upgraded by running\n\n    conda install -c conda-forge -c bcg_gamma gamma-facet\n\n## Changes:\n\n* 537d8be4d51bf0df2ff5e1aa0432d64463b8ff55 Merge pull request #349 from BCG-Gamma\u002Fdev\u002F2.0rc0\n* fd016f6e18bd0b50ccf1c6460a7e431c8eff141d DOC: tweak docstrings\n* 9cc2881afe3cd9eab08e6573d7fb1c7ede626b52 BUILD: update azire pipeline\n* 1bdc49bd6dc037b8d839e6e42b26670cdd3ea610 API: Rename `ModelSelector` to `LearnerSelector` (#348)\n* dba2d2c852b257836ca707033375d0f69b42b5df BUILD: update version to 2.0rc0\n* 5c687eb68311fe2ef3bd2fc7e989833cc4c6da56 FIX: re-add required dependencies for mypy check\n* f67564675f2c25e676447d48161c062177d1ca00 BUILD: update code quality checker versions\n* 7ad28b947fc1662e4080b5b3ec880d5b36879394 DOC: update docs and tutorials to 2.0 (#321) [ #341 ]\n* cd5388125973e62651ba9a36d9159da4479a4ef3 BUILD: use python 3.9 with the mypy pre-commit hook\n* eeaf70d0f01bc353ae2c709f3d3223aafa193950 BUILD: require python ~=3.9 in environment.yml\n\u003Cdetails>\u003Csummary>\u003Cb>See More\u003C\u002Fb>\u003C\u002Fsummary>\n\n* bf747bc8a2ff5574ba57095d110f792601a836b2 BUILD: require python ~=3.9 in 'max' matrix builds\n* a140cd4e58b9587ee8416a9c41ad0235403fe581 BUILD: add pre-commit ~=2.20 to environment.yml\n* 819abe78f4eb896538feb771f396b7ff651d7104 BUILD: relax python dependency to ~=3.8\n* 690134a65052e022de1737359495cdd42c853539 DOC: enable local sphinx builds (#345)\n* f14982a3298fa2ced6edb680d5c0db09438f5d10 validation (#347)\n* e2e5cf511613e4ca9c88158481e3d3a65a7507a4 API: raise exception if the name of any Sample column is not a string (#339)\n* c9f4dd769eba2ec7347d0df069c25efac00ee4a7 REFACTOR: support mypy checks in 'strict' mode (#346)\n* 487b13d90c9323ea2f9252084542776f65bc8d69 BUILD: update package dependencies\n* 15488ec177cc58140147716e4081b5098b3f540c BUILD: update package versions for code linters\n* 99c3df46afd8b0911dafc4cf0dbd43551b1e9cd6 BUILD: use stable pytools ~=2.0,>=2.0.1\n* b19ebed305e35fbb2148ed37bdb4ad9a75bd7b2e BUILD: update pytest to ~=7.1\n* dcaed314b18d9c29a7a697ffd387e25815e6f010 BUILD: update azure-pipelines.yml in line with pytools pipeline\n* 8357c0bc1a73ddec52df71a223baeb622812215d BUILD: update build config to support updates to pytools make.py\n* 68fc0410eaf2a7e0db06f2d1fea30c4f10cd4932 TEST: tidy up unit tests (#340)\n* 52e80c4d8e82de040d4766a27c518903e500a2e5 IDE: ignore .mypy_cache folder\n* b1b98448d58a02ccf67e65461a7b6621378144a3 BUILD: use pytools 2.0\n* 812e09e140daf9105b1e4de3d81b9a98c3e40e25 BUILD: update flake8 and mypy to latest versions in pre-commit config (#342)\n* 5c832f85863b62b2432deba094ff7b630c67b2ac BUILD: update version to 2.0.dev2\n* 0182c8d0536bdef256b3cde0c640af0c8156b254 Merge remote-tracking branch 'origin\u002Frelease\u002F2.0.dev1' into 2.0.x\n* cbdef1bedafe035cfabc7262f4df31e87e6af2cd clean up after merge\n* 63a0ea56e10965a5cbb2ef196504914da53ad250 Merge branch '1.2.x' into 2.0.x\n* 14f53f6659c512ae9bd7e7bcb3d919c9e0438402 BUILD: update version to 1.2.3\n* 5e9e8a62543522b77e1cc25c4f60821e3d571e9a Merge pull request #336 from BCG-Gamma\u002Fdev\u002F2.0.dev1\n* ede0d22fd2095e86adfadfd8eb36c656d44bf09e FIX: min build (#337)\n* 5908b20062af27eaa311a75e7857d2cbe7b00d24 BUILD: use oldest-supported-numpy in build env to prevent numpy issues\n* 5f9f52f9c7b8df94fea29f4d533a7bd9bbe229bd BUILD: change scipy 1.2.3 to 1.2.1 in min build\n* c5fab3d1adc47e3d670d0a34838cab0faf5cf11a BUILD: restore scipy 1.2 support in tests\n* ca8e71ed203d9e0bc6a04fa274373cffb8f9c305 TEST: make min matrix tests work again\n* 6a5659dfbd1f7aba24c0266e4d5b34ab2606ce2e FIX: don't use zipfian distribution so test works with scipy\u003C1.7\n* f132449e5a1d77432ad52811412fe7d6a073ea07 BUILD: update scipy to min=1.4 max=1.8\n* 283b86bbacc8f7c40b5ceba457aa1a4bd70ff75b BUILD: update black to 22.3\n* cd647e8f978b258fab2204da4c5e528bc9a8bb74 API: remove class FullSampleValidator (#332)\n* 3965402f9044069ef9a775215c8dc4436946c0d2 Merge branch '2.0.x' of git@github.com:BCG-Gamma\u002Ffacet.git\n* 3ed7a27da85f24effad38392f5fa1c893b7eb6c8 FIX: typo in environment.yml\n* f91e45fa6a014c2c07df24cc7dc87243df896f62 BUILD: update azure pipeline\n* 30f6a4dae49a14d5dbacc0eb068472c2575f935b BUILD: update package requirements\n* 0cd01d0f8e13f8cc02ad917ab00f51b758554720 BUILD: add support for mypy (#324)\n* 21db1a32b0e1e0cf038b0e72327b0feb42b22e41 BUILD: update black to v22.1 (#329)\n* 4bb6494a8b3951dfdfe990b15147a38c5012eda4 API: bump min Python version to 3.7 and max python version to 3.9 (#328)\n* 1a7859bc97b3082c0eea446050773d489334a657 API: make method FittableMixin.ensure_fitted public (#330)\n* ae895fe4997b5ab71a6beab9222782961118ca5d Merge branch '1.2.x' into 2.0.x\n* 93b7cd38575b0f9cedba1cee3e10baf98f943fc2 Merge branch '1.2.x' into 2.0.x\n* 3421073013b9c506b1d2d472d8c33a5e537a0e16 BUILD: rename GitHub connection to github-release\n* 328f997da79bca9f3eef9fcae911909e0e1679d3 API: run LearnerRanker using single model instead of CrossFit (#317)\n","2022-09-19T17:57:59",{"id":223,"version":224,"summary_zh":225,"released_at":226},314716,"1.2.2","This is the 1.2.2 release of gamma-facet.\n\nYou can upgrade your current pip installation via\n\n    pip install --upgrade gamma-facet\n\nYour conda package can be upgraded by running\n\n    conda install -c conda-forge -c bcg_gamma gamma-facet\n\n## Changes:\n\n* ef2c918a279d35d9b2e036c38b231ceeaaa8eac6 Merge pull request #338 from BCG-Gamma\u002Fdev\u002F1.2.2\n* 8e64e0b82680289650f06cc6d259b7e61dcdff16 BUILD: pin typing-extensions to \u003C4.2\n* 6cae388fcc85c767ee9ba1e8c5dfbe429a082a5b BUILD: pin typing-extensions to \u003C4.2\n* f61ed19ac99754fbf2c0e12018936cb6c24068d2 Merge branch '1.1.x' into 1.2.x\n* 978bfe439c5b285bcb20becab10866f0d321afab BUILD: pin click at version 8.0.*\n* 182261f714ba4f0bf4248c8ad02e0c4dd2e9e7db Revert version to 1.2.2, yet to be released\n* 51fb94156863f50d703c4bf9fb526170d17b25f4 Merge branch '1.1.x' into 1.2.x\n* 74f4ac8043c05621a8317788ab869cabfd8de64c FIX: address Azure bug that could add a \\' to the end of version tags\n* 3a4f33ba904aa8b904080b5076b70420f41f51ad Merge branch '1.1.x' into 1.2.x\n* 43dc6d4ad2abd10d68072c5f2622770e80437b0b FIX: passing package path to get_package_version() in Azure pipeline\n\u003Cdetails>\u003Csummary>\u003Cb>See More\u003C\u002Fb>\u003C\u002Fsummary>\n\n* 31cb293cebd23da308a48e37c39442f1323c4471 BUILD: update GitHub connection\n* b68d1d22f79d72eb5393b6e1a4fe92c870466c35 Merge branch '1.1.x' into 1.2.x\n* f5467892c2606d3be1c9c0f9c095e1eecdac24a4 BUILD: update version to 1.1.3\n* b24f131f6424379f74bab9eca50f0776a4f6f159 BUILD: update conda build\u002Ftest requirements in meta.yaml\n* c3b8124a28e4472021f3566ec9af08f1e8843b33 Merge remote-tracking branch 'origin\u002Frelease\u002F1.2.2' into 1.2.x\n* a92afa904cb40ed445b69e3900eeb3dba1658b1e Merge branch '1.1.x' into 1.2.x\n* 27da89524137b003ef39e459d099d6cd00d33bd3 Merge remote-tracking branch 'origin\u002Frelease\u002F1.1.2' into 1.1.x\n* 3492f0bc1b64d4e8006c182884a435c2e0aab30e Merge branch '1.1.x' into 1.2.x\n* 808a480dbd7fadf309f3431f94f24bd69a52d6c8 Merge remote-tracking branch 'origin\u002Frelease\u002F1.1.2' into 1.1.x\n* 1053fb4e9a2b81c11226c91a3fdd79e1db63a988 DOC: update release notes\n* 75ebc963bf555aa3dbce73d49ab7d812093bcad8 Merge branch '1.1.x' into 1.2.x\n* 6a9eb767fbe603fea830a573e61744fc82a65f77 Merge branch '1.1.x' into 1.2.x\n* 15ace864ec9afaff7b9a02ace567542d4b07138c Merge branch '1.1.x' into 1.2.x\n* d1140f982f044feeb1a443cabba9de8a605c94b3 DOC: update code coverage badges in README.rst\n* 3a389cc83700a346c7b3ec11a6ba1abeebc8e636 Merge branch '1.1.x' into 1.2.x\n* 3fd49a27b551ed19b092527f783e56f3305a08dd Merge branch '1.1.x' into 1.2.x\n* 6c859e34b7404ed120d311d562646f06a131f23e DOC: adjust \"critical\" BMI threshold in getting started notebook\n* 06a4d67e24703b28a3c0fa93f2b7291811996f32 Auto load data for readme (#310)\n* 671b1dd9d85d78d150d65d4ced57f8cc4f994cb4 Merge branch '1.1.x' into 1.2.x\n* baba14066a82e662ea61fa1da3fcef271f72e72d BUILD: update version to 1.2.2\n* 42f6bcd66e0ce40d6b651018004c38d6998731e3 Merge branch '1.1.x' into 1.2.x\n* 02eab61ee5c93d3d261b20dfb33c78d56aee0ae9 Merge branch '1.1.x' into 1.2.x\n* 1286e56233598f6c9fbbc551cdf4d25fc490f787 BUILD: downgrade nbsphinx to ~=0.7.1\n* c77916e90d9f03bd4a82b288b5dd19d2606092e0 Merge pull request #305 from BCG-Gamma\u002Fdev\u002F1.2.1\n* 46579027379aa1e0f44212a22203d86400662776 DOC: update release notes\n* 4b231ea39b1e94e5914a0016a1187a8b70407102 Merge remote-tracking branch 'origin\u002F1.2.x' into 1.2.x\n* 15f5f02a163061f72c68220dc1f08e2f3900e37b Merge branch '1.1.x' into 1.2.x\n* d50418c3b9425bd0d6b454cc3728787fb853c243 FIX: do not use subsample index to get actual targets in UnivariateProbabilitySimulator (#303)\n* 4dafa4d38361357cb7d7d17aca37ae5c8e8ed055 TEST: tidy up after merge from 1.1.x\n* 19f9f396cba4b44de6dadfd6dfb2565dc4f7bb27 Merge branch '1.1.x' into 1.2.x\n* fe18153be04e336791544fa25d7dee92136d6646 BUILD: update version to 1.2.1\n* ff0c006db9a079738817336b8cf48898aca9c61e Merge pull request #293 from BCG-Gamma\u002Fdev\u002F1.2.0\n* 33eabfeba08f3946a490b51fd454977b68aaf6e6 Merge branch '1.2.x' into dev\u002F1.2.0\n* bd43dbaef498ee9638b658e1262cfdce69935fb8 Merge branch '1.1.x' into 1.2.x\n* 26e3c0199a5ebe8717b00de92472aae72f5c0cc0 BUILD: relax max requirement for packaging package\n* 4b19ad575ef6452ce1a3d803219b864c83c1c80f FIX: add back facet\u002Fdata\u002F__init__.py\n* fe170f008b44882add4d66f2652f52fa104c746a BUILD: change version number back to 1.2.0\n* adfae18ea645df5d1bc04d42b950e2971f32a3c9 Merge branch '1.2.x' into dev\u002F1.2.0\n* 6c37c4abdbfca66c14b4ede0a4800ba98c530710 Merge remote-tracking branch 'origin\u002Frelease\u002F1.2.0rc1' into 1.2.x\n* 8f41196247eba646ce476e8720128792dc67e861 BUILD: release FACET 1.2.0rc1 (#298) [ #286, #287, #288, #289, #292, #295, #296, #297 ]\n* cd31e04da5fbd57e0954ec5aad54e1a1e7c1743f Update __init__.py\n* 43c7136fd14e2baddf57c2ccd57fa364dbf2c2d8 API: implement full sample simulation as experimental feature (#297)\n* 545ade531ecfa617bad346ebef12955afa876cca DEV: update package requirements for facet-develop conda environment\n* e988bb508b13c227f8ee744991a11c1662314f8a FIX: don't require arg y in non-stratified bootstraps\n* 0e697812b1ad8c125da5f19b635a5a98a0f53","2022-04-25T09:53:42",{"id":228,"version":229,"summary_zh":230,"released_at":231},314717,"2.0.dev1","This is the 2.0.dev1 release of gamma-facet.\n\nYou can upgrade your current pip installation via\n\n    pip install --upgrade gamma-facet\n\nYour conda package can be upgraded by running\n\n    conda install -c conda-forge -c bcg_gamma gamma-facet\n\n## Changes:\n\n* 5e9e8a62543522b77e1cc25c4f60821e3d571e9a Merge pull request #336 from BCG-Gamma\u002Fdev\u002F2.0.dev1\n* ede0d22fd2095e86adfadfd8eb36c656d44bf09e FIX: min build (#337)\n* 5908b20062af27eaa311a75e7857d2cbe7b00d24 BUILD: use oldest-supported-numpy in build env to prevent numpy issues\n* 5f9f52f9c7b8df94fea29f4d533a7bd9bbe229bd BUILD: change scipy 1.2.3 to 1.2.1 in min build\n* c5fab3d1adc47e3d670d0a34838cab0faf5cf11a BUILD: restore scipy 1.2 support in tests\n* ca8e71ed203d9e0bc6a04fa274373cffb8f9c305 TEST: make min matrix tests work again\n* 6a5659dfbd1f7aba24c0266e4d5b34ab2606ce2e FIX: don't use zipfian distribution so test works with scipy\u003C1.7\n* f132449e5a1d77432ad52811412fe7d6a073ea07 BUILD: update scipy to min=1.4 max=1.8\n* 283b86bbacc8f7c40b5ceba457aa1a4bd70ff75b BUILD: update black to 22.3\n* cd647e8f978b258fab2204da4c5e528bc9a8bb74 API: remove class FullSampleValidator (#332)\n\u003Cdetails>\u003Csummary>\u003Cb>See More\u003C\u002Fb>\u003C\u002Fsummary>\n\n* 3965402f9044069ef9a775215c8dc4436946c0d2 Merge branch '2.0.x' of git@github.com:BCG-Gamma\u002Ffacet.git\n* 3ed7a27da85f24effad38392f5fa1c893b7eb6c8 FIX: typo in environment.yml\n* f91e45fa6a014c2c07df24cc7dc87243df896f62 BUILD: update azure pipeline\n* 30f6a4dae49a14d5dbacc0eb068472c2575f935b BUILD: update package requirements\n* 0cd01d0f8e13f8cc02ad917ab00f51b758554720 BUILD: add support for mypy (#324)\n* 21db1a32b0e1e0cf038b0e72327b0feb42b22e41 BUILD: update black to v22.1 (#329)\n* 4bb6494a8b3951dfdfe990b15147a38c5012eda4 API: bump min Python version to 3.7 and max python version to 3.9 (#328)\n* 1a7859bc97b3082c0eea446050773d489334a657 API: make method FittableMixin.ensure_fitted public (#330)\n* ae895fe4997b5ab71a6beab9222782961118ca5d Merge branch '1.2.x' into 2.0.x\n* 51fb94156863f50d703c4bf9fb526170d17b25f4 Merge branch '1.1.x' into 1.2.x\n* 74f4ac8043c05621a8317788ab869cabfd8de64c FIX: address Azure bug that could add a \\' to the end of version tags\n* 93b7cd38575b0f9cedba1cee3e10baf98f943fc2 Merge branch '1.2.x' into 2.0.x\n* 3a4f33ba904aa8b904080b5076b70420f41f51ad Merge branch '1.1.x' into 1.2.x\n* 43dc6d4ad2abd10d68072c5f2622770e80437b0b FIX: passing package path to get_package_version() in Azure pipeline\n* 31cb293cebd23da308a48e37c39442f1323c4471 BUILD: update GitHub connection\n* 3421073013b9c506b1d2d472d8c33a5e537a0e16 BUILD: rename GitHub connection to github-release\n* b68d1d22f79d72eb5393b6e1a4fe92c870466c35 Merge branch '1.1.x' into 1.2.x\n* f5467892c2606d3be1c9c0f9c095e1eecdac24a4 BUILD: update version to 1.1.3\n* b24f131f6424379f74bab9eca50f0776a4f6f159 BUILD: update conda build\u002Ftest requirements in meta.yaml\n* c3b8124a28e4472021f3566ec9af08f1e8843b33 Merge remote-tracking branch 'origin\u002Frelease\u002F1.2.2' into 1.2.x\n* a92afa904cb40ed445b69e3900eeb3dba1658b1e Merge branch '1.1.x' into 1.2.x\n* 27da89524137b003ef39e459d099d6cd00d33bd3 Merge remote-tracking branch 'origin\u002Frelease\u002F1.1.2' into 1.1.x\n* 3492f0bc1b64d4e8006c182884a435c2e0aab30e Merge branch '1.1.x' into 1.2.x\n* 808a480dbd7fadf309f3431f94f24bd69a52d6c8 Merge remote-tracking branch 'origin\u002Frelease\u002F1.1.2' into 1.1.x\n* 328f997da79bca9f3eef9fcae911909e0e1679d3 API: run LearnerRanker using single model instead of CrossFit (#317)\n* 43895df9f70b08fed3beefde030a9464eefed454 FIX: add support for pandas 1.4 for 2.0.x (#319)\n* ecd7b43e540648bb5ba9bc523d837c44a113c00e API: run LearnerInspector using single model instead of CrossFit (#313)\n* 3efe2fa0e4d3edda259e162b43437a4424a20829 API: run simulations using single model instead of CrossFit (#314)\n* 02574563a08f00d46817b1249f0441cddb017d50 BUILD: update conda-build to ~=3.21\n* 2fc00f77e96d88c1d50a05d281ebbfefc7ed64e0 Merge branch '1.2.x' into 2.0.x\n* 1053fb4e9a2b81c11226c91a3fdd79e1db63a988 DOC: update release notes\n* 75ebc963bf555aa3dbce73d49ab7d812093bcad8 Merge branch '1.1.x' into 1.2.x\n* e2be664e2f273274b1df620719524be66cb3ce03 Merge branch '1.2.x' into 2.0.x\n* 6a9eb767fbe603fea830a573e61744fc82a65f77 Merge branch '1.1.x' into 1.2.x\n* 66cec0f9c919112da005085f78800ca44f78cc5a Merge branch '1.2.x' into 2.0.x\n* 15ace864ec9afaff7b9a02ace567542d4b07138c Merge branch '1.1.x' into 1.2.x\n* 15276c281cb873f38589df23d890c55ee192520c DOC: update code coverage badges in README.rst\n* f66142de267181380173f38c9c06d88c0ede8ffc Merge branch '1.2.x' into 2.0.x\n* d1140f982f044feeb1a443cabba9de8a605c94b3 DOC: update code coverage badges in README.rst\n* 3a389cc83700a346c7b3ec11a6ba1abeebc8e636 Merge branch '1.1.x' into 1.2.x\n* 7351fad0b99417f42de5141d6f59d3e4c04e0910 DOC: update release notes\n* e2760c44599656cb0e93b854b22cf10636de4aec API: move bounds arguments from RangePartitioner.__init__() to .fit() (#315)\n* 637246742c6111105f8617a4f7e1a2c4ef3aa70e BUILD: set VM image to 'Ubuntu-latest'\n* d700cfd6d7c489ef47a2e7175e54f94a8832035c API: adopt revised design of pytools vi","2022-04-22T15:39:38",{"id":233,"version":234,"summary_zh":235,"released_at":236},314718,"1.1.2","This is the 1.1.2 release of gamma-facet.\n\nYou can upgrade your current pip installation via\n\n    pip install --upgrade gamma-facet\n\nYour conda package can be upgraded by running\n\n    conda install -c conda-forge -c bcg_gamma gamma-facet\n\n## Changes:\n\n* 095b35bef4f28ad1516e9e64982aecd647c1c37e Merge pull request #327 from BCG-Gamma\u002Fdev\u002F1.1.2\n* fb5ba8ffd4f9670c3bb395dd2a291887c395a0f9 BUILD: fix version specs for numpy and ipython\n* 8286e3c4bbb342c0a73072513430a62a3db09d4d BUILD: pin down min build matrix further\n* 368ad36a3cda87ddc8d6080e315cf8cb4b8f79f5 BUILD: move non-essential requirements from build to test in meta.yaml\n* 30dedbb0e7bf9ed3fc099dcbae0725c632d330cd Merge remote-tracking branch 'origin\u002Fdev\u002F1.1.2' into dev\u002F1.1.2\n* 3ba66e3284d32c84d97913f5bf77847a0e7f5a1f FIX: numpy requirement for build.matrix.min\n* 369b96c792d4e9cf93e5b785b34aa8ab7306359f Merge branch 'release\u002F1.1.2' into dev\u002F1.1.2\n* b20fcdc1096791fa8cde1b47aea5cf8952668d17 BUILD: pin markupsafe to \u003C 2.1; tweak environment.yml\n* bc28e66b19fc0050cae1f7073c1472cfa5a01bd3 BUILD: update RELEASE_NOTES.rst\n* c9f7e24774fd546752f1bf146d9744d68fe36788 BUILD: fix max matrix test build with tox (#326)\n\u003Cdetails>\u003Csummary>\u003Cb>See More\u003C\u002Fb>\u003C\u002Fsummary>\n\n* 50f572e26d315034fc85bafc646f46b631d45cc7 BUILD: use numpy 1.22 in max matrix test\n* 1775d9846e99f55a14d11b7a505ffc1eedbbbec9 BUILD: limit pytools and sklearndf to 1.1.x\n* 9ab891f1ee9577e24c6ac5a6f76a4c6b3d696cb2 BUILD: relax numpy dependency to \u003C2a\n* b1ac41ddc527dfefadc7038f74de15f6bda9bae2 BUILD: use conda-build~=3.21 in azure-pipelines.yml\n* a510872a1b8cc9829e27491867dab6ace288f4f7 FIX: update pandas option name (#322)\n* 2630317e1b4f06b2780b8483b2055a8d89c993a5 DOC: update release notes\n* 05ba729f7e37932f091ad859c90172c92cda31cd FIX: change parameter used in if statement in _FitModelOnFullData (#316)\n* 07891f94d18a71de105fa4b96916e198edbf25cd Merge branch 'develop' into 1.1.x\n* d114ecf46fa3af8757afd654055ca56a9f800103 BUILD: globally set Ubuntu-latest as VM image for azure builds\n* 3c026c416b19e0d323ca0915aea47b4b7b0e6fed BUILD: globally set Ubuntu-latest as VM image for azure builds\n* 0dced64eb0bfb9f3993e544b1901e612ceb59d3e DOC: fix code coverage badge in README.rst\n* 159ce33624191249370c871cf4c93d0ea3aac440 DOC: backport update of getting started notebook from v1.2 (#311)\n* 5deea5eea0e1f2dc86e7ceea3b5f8a5d188a8772 FIX: import catboost module if present, else create local module mockup (#306)\n* 2bc8c2318a78ab563495271f022907444bf6e730 BUILD: update version to 1.1.2\n* 034db07f95d40f22fc4adca435cce4c411b9a2c7 DOC: move api_landing.rst to _templates\u002F\n* 0be136dfae7de1cc754e09cfedf7bdd50d4220d7 DOC: remove reference to obsolete tutorial\n* db5d0f590bd4cf5e96fffabc624f31a2342d5adf DOC: fix a typo in the release notes\n* ad5e19735a17221b2678ace8806e4b0b1b53e406 Merge pull request #304 from BCG-Gamma\u002Fdev\u002F1.1.1\n* d4ba6aff61888b454d7ae97a633af707bf3bad53 BUILD: disable nightly builds on develop branch\n\nThis list of changes was [auto generated](https:\u002F\u002Fdev.azure.com\u002Fgamma-facet\u002Ffacet\u002F_build\u002Fresults?buildId=5059&view=logs).\u003C\u002Fdetails>","2022-02-22T08:55:36",{"id":238,"version":239,"summary_zh":240,"released_at":241},314719,"1.2.1","This is the 1.2.1 release of gamma-facet.\n\nYou can upgrade your current pip installation via\n\n    pip install --upgrade gamma-facet\n\nYour conda package can be upgraded by running\n\n    conda install -c conda-forge -c bcg_gamma gamma-facet\n\n## Changes:\n\n* c77916e90d9f03bd4a82b288b5dd19d2606092e0 Merge pull request #305 from BCG-Gamma\u002Fdev\u002F1.2.1\n* 46579027379aa1e0f44212a22203d86400662776 DOC: update release notes\n* 4b231ea39b1e94e5914a0016a1187a8b70407102 Merge remote-tracking branch 'origin\u002F1.2.x' into 1.2.x\n* 15f5f02a163061f72c68220dc1f08e2f3900e37b Merge branch '1.1.x' into 1.2.x\n* d50418c3b9425bd0d6b454cc3728787fb853c243 FIX: do not use subsample index to get actual targets in UnivariateProbabilitySimulator (#303)\n* 4dafa4d38361357cb7d7d17aca37ae5c8e8ed055 TEST: tidy up after merge from 1.1.x\n* 19f9f396cba4b44de6dadfd6dfb2565dc4f7bb27 Merge branch '1.1.x' into 1.2.x\n* fe18153be04e336791544fa25d7dee92136d6646 BUILD: update version to 1.2.1\n* ff0c006db9a079738817336b8cf48898aca9c61e Merge pull request #293 from BCG-Gamma\u002Fdev\u002F1.2.0\n* 33eabfeba08f3946a490b51fd454977b68aaf6e6 Merge branch '1.2.x' into dev\u002F1.2.0\n\u003Cdetails>\u003Csummary>\u003Cb>See More\u003C\u002Fb>\u003C\u002Fsummary>\n\n* bd43dbaef498ee9638b658e1262cfdce69935fb8 Merge branch '1.1.x' into 1.2.x\n* 26e3c0199a5ebe8717b00de92472aae72f5c0cc0 BUILD: relax max requirement for packaging package\n* 4b19ad575ef6452ce1a3d803219b864c83c1c80f FIX: add back facet\u002Fdata\u002F__init__.py\n* fe170f008b44882add4d66f2652f52fa104c746a BUILD: change version number back to 1.2.0\n* adfae18ea645df5d1bc04d42b950e2971f32a3c9 Merge branch '1.2.x' into dev\u002F1.2.0\n* 6c37c4abdbfca66c14b4ede0a4800ba98c530710 Merge remote-tracking branch 'origin\u002Frelease\u002F1.2.0rc1' into 1.2.x\n* 8f41196247eba646ce476e8720128792dc67e861 BUILD: release FACET 1.2.0rc1 (#298) [ #286, #287, #288, #289, #292, #295, #296, #297 ]\n* cd31e04da5fbd57e0954ec5aad54e1a1e7c1743f Update __init__.py\n* 43c7136fd14e2baddf57c2ccd57fa364dbf2c2d8 API: implement full sample simulation as experimental feature (#297)\n* 545ade531ecfa617bad346ebef12955afa876cca DEV: update package requirements for facet-develop conda environment\n* e988bb508b13c227f8ee744991a11c1662314f8a FIX: don't require arg y in non-stratified bootstraps\n* 0e697812b1ad8c125da5f19b635a5a98a0f5300e TEST: add unit test for StratifiedBootstrapCV\n* eb1ab17e2bdf80af1f9c13ebc338d363eabdd6ac API: improve parameter checking for StratifiedBootstrapCV\n* ba5dede21ef0360afc14fdf9fd9f60095541a589 BUILD: relax upper bounds of package requirements (#296)\n* b5a53b0c0e7da9882679c7608b912a3360a7644d BUILD: tweaks for 1.2.0 release (#295)\n* 02bc3ba7d28dfa7b31c9ec378e98ec20aa8ce0c1 BUILD: remove conda dependencies with boruta\n* 7eda1a977160108a30d9b669c5631d7b1a2dbcd4 Merge branch '1.2.x' into dev\u002F1.2.0\n* 1c854d58b61c50aec9ed7a698e8a4d3cc688a74e Merge branch '1.1.x' into 1.2.x\n* 454ac6a53bc4cf1c897794edc316baf4ec6a24b4 Merge branch '1.1.x' into 1.2.x\n* 2090223952fc494294ab0ae49dc346e500dd6633 BUILD: make min requirements more specific to speed up build time\n* 9bd518a2a7f3363b3353e2fc72e46a7a53ab8415 FIX: change boruta_py back into boruta for tox builds (but not conda)\n* f65fd7c5ce248b60aee585729be9becf6a1956dc FIX: change boruta into boruta_py\n* 1428bec263d00eb76ae91dc9fc68e34655ee6591 BUILD: add inherited requirements so we can use them for testing\n* 9581ddd095f1baa6b150e5292c15acdf98b847a0 BUILD: change matplotlib==3 back to matplotlib==3.* for tox\n* 247d473072422a6a05c60cae7d31533c8bf0995a BUILD: set matplotlib to 3.4 in max test\n* 8c5e060d3b759f3b9f03366385dc73d28ec83d95 BUILD: add missing version requirements to conda run config\n* c9c733f58032b93eb16b3963be9a137b9244b9d4 BUILD: remove unneeded trailing .* from pyproject.toml\n* d008c86d29eb40fc4c30a9853fa0ff7494e1d748 BUILD: use python 3.8 in host requirements\n* 27da609dd31f3262576e93136b9647be18b6153e FIX: build sklearndf 1.2.x in azure-pipelines.yml\n* e49e7c50f4401f8332bd3d67aa0ba7ab2ec72e16 FIX: rephrase max numpy requirement due to possible bug in conda-build\n* 29c102054620dcc6b17bfbec70142838a01c33ff BUILD: remove dev\u002F* from azure pipeline triggers\n* dea4c2cbcbd26f674330f0476d70a1c7dcd910ed BUILD: require numpy 1.17\n* 190d2dbb0a8ecea7a52e91f6051d3220bbf16d1c Merge remote-tracking branch 'origin\u002Frelease\u002F1.2.0' into dev\u002F1.2.0\n* 94004c96ed35c7a02e49b674feb639897b895963 BUILD: require pytools ~=1.2 and sklearndf ~= 1.2\n* 11682f20cf7fc572c1fda94917ad100610d7bef1 DOC: update RELEASE_NOTES.rst\n* 5dd20d935dd4cb59595bd692284cf94808c61969 Merge branch '1.1.x' into 1.2.x\n* 94e73d10e2a16b7bb81362a52190d31386ca5863 API: remove FACET 1.0 legacy inspections (#288)\n* d42ffb7754db8065c2e4dd73c3742bd49231d735 Update version number to 1.2.0\n* e0d92455cefcdcb4efa9b8b0ea28f1288a91f726 Merge branch '1.1.x' into 1.2.x\n* 472daf94063216c1a5b18135aa1018fa8b5610d8 BUILD: release Facet 1.2.0rc0\n* dbce0d5f3c409515e828eb1474e532948ae583b3 FIX: correct shap version spec in pyproject.toml\n* fbafd6ae9afb8e29bad30e65e5cd74acbf2edb67 BUILD: fix max matrix versions at maximum\n* 3d8fcda76d4d2","2021-09-22T18:53:11",{"id":243,"version":244,"summary_zh":245,"released_at":246},314720,"1.1.1","This is the 1.1.1 release of gamma-facet.\n\nYou can upgrade your current pip installation via\n\n    pip install --upgrade gamma-facet\n\nYour conda package can be upgraded by running\n\n    conda install -c conda-forge -c bcg_gamma gamma-facet\n\n## Changes:\n\n* ad5e19735a17221b2678ace8806e4b0b1b53e406 Merge pull request #304 from BCG-Gamma\u002Fdev\u002F1.1.1\n* 4dad887a572767d39a667ca2aa92c2375b778952 DOC: update release notes\n* 29bb928f1180d3954a3ebb4d79bdcaa11534c658 Merge pull request #302 from BCG-Gamma\u002Ffix\u002Funivariate_probability_simulator_expected_output\n* fe744b1c2701bfc379d4df1b2446ad3fbe094709 DOC: update release notes\n* 509a39f8f26ae2a98164db984e6f3a6ae0ea14ea TEST: add unit test for class UnivariateProbabilitySimulator\n* 0f9bc0b99194aa430a892871a7fe428cbdc16149 TEST: move classifier fixtures to conftest.py\n* 0e1dba4eb09f126314952813d6cf75471de1d90f FIX: correctly count positive class frequency in univ. probability sim.\n\nThis list of changes was [auto generated](https:\u002F\u002Fdev.azure.com\u002Fgamma-facet\u002Ffacet\u002F_build\u002Fresults?buildId=4530&view=logs).","2021-09-22T18:26:09",{"id":248,"version":249,"summary_zh":250,"released_at":251},314721,"2.0.dev0","This is the 2.0.dev0 release of gamma-facet.\n\nYou can upgrade your current pip installation via\n\n    pip install --upgrade gamma-facet\n\nYour conda package can be upgraded by running\n\n    conda install -c conda-forge -c bcg_gamma gamma-facet\n\n## Changes:\n\n* 819f0ad7d68b16fa5d95da35703feb189559cd5c Merge pull request #300 from BCG-Gamma\u002Fdev\u002F2.0.dev0\n* c2f960bb1fa1b6fc1d0abafe5ad6faa28cbcb8d8 BUILD: set min requirement for sklearndf to ~=2.0.dev0\n* c2853d2c336e8b798e311791af02807d0bcd52d7 API: update code for updated pytools.parallelization API (#301)\n* c852e6c3bbfe8bd3344ad7a7582252a104e74703 BUILD: change version to 2.0.dev0\n* ca1e69cc4cfe25c1523c65a17261205b92017ce3 TEST: replace test_package_version.py with version check in make.py\n* f9a4ef9e2574020903c5ed93719d90cc46a00634 BUILD: install 'packaging' when running make.py\n* b5caadb635510093e3c4ff1778a2aa217c5ea0e9 API: add function pytools.build.validate_release_version()\n* 6d4486f020e212d5741737d0c2362be7afc02f93 BUILD: publish development releases as pre-releases\n* 0d7c0dfb2b4856ca7427f43bd8c1077e6a153324 FIX: change github option from isPreRelease to isPrerelease\n* 0737b0dd914f7fb5559d7e78599b552bbee3bec5 Merge branch '1.2.x' into 2.0.x\n\u003Cdetails>\u003Csummary>\u003Cb>See More\u003C\u002Fb>\u003C\u002Fsummary>\n\n* fe18153be04e336791544fa25d7dee92136d6646 BUILD: update version to 1.2.1\n* c5b7c48549f7c4361c7982914def532aab3d8b32 API: replace MatplotStyle.renderer with get_renderer()\n* bfbf50714ac00a719e3e3cc2487ce59a0d705bd3 BUILD: start 2.0.x development branch\n\nThis list of changes was [auto generated](https:\u002F\u002Fdev.azure.com\u002Fgamma-facet\u002Ffacet\u002F_build\u002Fresults?buildId=4485&view=logs).\u003C\u002Fdetails>","2021-09-16T21:50:31",{"id":253,"version":254,"summary_zh":255,"released_at":256},314722,"1.2.0","This is the 1.2.0 release of gamma-facet.\n\nYou can upgrade your current pip installation via\n\n    pip install --upgrade gamma-facet\n\nYour conda package can be upgraded by running\n\n    conda install -c conda-forge -c bcg_gamma gamma-facet\n\n## Changes:\n\n* ff0c006db9a079738817336b8cf48898aca9c61e Merge pull request #293 from BCG-Gamma\u002Fdev\u002F1.2.0\n* 33eabfeba08f3946a490b51fd454977b68aaf6e6 Merge branch '1.2.x' into dev\u002F1.2.0\n* bd43dbaef498ee9638b658e1262cfdce69935fb8 Merge branch '1.1.x' into 1.2.x\n* 26e3c0199a5ebe8717b00de92472aae72f5c0cc0 BUILD: relax max requirement for packaging package\n* 4b19ad575ef6452ce1a3d803219b864c83c1c80f FIX: add back facet\u002Fdata\u002F__init__.py\n* faa636133894b80cb0640ffd82222e674ca4a332 DOC: add reference to FACET research paper on the project landing page (#299)\n* fe170f008b44882add4d66f2652f52fa104c746a BUILD: change version number back to 1.2.0\n* adfae18ea645df5d1bc04d42b950e2971f32a3c9 Merge branch '1.2.x' into dev\u002F1.2.0\n* 6c37c4abdbfca66c14b4ede0a4800ba98c530710 Merge remote-tracking branch 'origin\u002Frelease\u002F1.2.0rc1' into 1.2.x\n* 8f41196247eba646ce476e8720128792dc67e861 BUILD: release FACET 1.2.0rc1 (#298) [ #286, #287, #288, #289, #292, #295, #296, #297 ]\n\u003Cdetails>\u003Csummary>\u003Cb>See More\u003C\u002Fb>\u003C\u002Fsummary>\n\n* cd31e04da5fbd57e0954ec5aad54e1a1e7c1743f Update __init__.py\n* 43c7136fd14e2baddf57c2ccd57fa364dbf2c2d8 API: implement full sample simulation as experimental feature (#297)\n* 545ade531ecfa617bad346ebef12955afa876cca DEV: update package requirements for facet-develop conda environment\n* e988bb508b13c227f8ee744991a11c1662314f8a FIX: don't require arg y in non-stratified bootstraps\n* 0e697812b1ad8c125da5f19b635a5a98a0f5300e TEST: add unit test for StratifiedBootstrapCV\n* eb1ab17e2bdf80af1f9c13ebc338d363eabdd6ac API: improve parameter checking for StratifiedBootstrapCV\n* ba5dede21ef0360afc14fdf9fd9f60095541a589 BUILD: relax upper bounds of package requirements (#296)\n* b5a53b0c0e7da9882679c7608b912a3360a7644d BUILD: tweaks for 1.2.0 release (#295)\n* 02bc3ba7d28dfa7b31c9ec378e98ec20aa8ce0c1 BUILD: remove conda dependencies with boruta\n* 7eda1a977160108a30d9b669c5631d7b1a2dbcd4 Merge branch '1.2.x' into dev\u002F1.2.0\n* 1c854d58b61c50aec9ed7a698e8a4d3cc688a74e Merge branch '1.1.x' into 1.2.x\n* 5a9e8286de4034ee9f8ee5e8cdbe56fb86a8cd2f BUILD: disable nightly builds on 1.1.x branch\n* 454ac6a53bc4cf1c897794edc316baf4ec6a24b4 Merge branch '1.1.x' into 1.2.x\n* ebda24850b48aefc6d4ce21830206959e867d8ba FIX: joblib version in min matrix build\n* 644cefc74436d0a5e8f98bca51274a39c24c0c22 Merge remote-tracking branch 'origin\u002F1.1.x' into 1.1.x\n* 45adcc46f8f50754b82abf37a794ea6da5f79d7c BUILD: fix pytools minimum versions in pyproject.toml\n* 8ac4b3891b85c2a291b247bb05a96470e5e130e4 FIX: re-remove _balancer.py\n* d58cc7cbd075d0e721cf637e20dbd653746c0800 Merge branch 'develop' into 1.1.x\n* 26b8c53c8fe5b7679f3ead879f8a1e3cf8b7feb0 BUILD: standardize azure pipeline across BCG Gamma repos (#292)\n* 2090223952fc494294ab0ae49dc346e500dd6633 BUILD: make min requirements more specific to speed up build time\n* 9bd518a2a7f3363b3353e2fc72e46a7a53ab8415 FIX: change boruta_py back into boruta for tox builds (but not conda)\n* f65fd7c5ce248b60aee585729be9becf6a1956dc FIX: change boruta into boruta_py\n* 1428bec263d00eb76ae91dc9fc68e34655ee6591 BUILD: add inherited requirements so we can use them for testing\n* 9581ddd095f1baa6b150e5292c15acdf98b847a0 BUILD: change matplotlib==3 back to matplotlib==3.* for tox\n* 247d473072422a6a05c60cae7d31533c8bf0995a BUILD: set matplotlib to 3.4 in max test\n* 8c5e060d3b759f3b9f03366385dc73d28ec83d95 BUILD: add missing version requirements to conda run config\n* c9c733f58032b93eb16b3963be9a137b9244b9d4 BUILD: remove unneeded trailing .* from pyproject.toml\n* d008c86d29eb40fc4c30a9853fa0ff7494e1d748 BUILD: use python 3.8 in host requirements\n* 27da609dd31f3262576e93136b9647be18b6153e FIX: build sklearndf 1.2.x in azure-pipelines.yml\n* e49e7c50f4401f8332bd3d67aa0ba7ab2ec72e16 FIX: rephrase max numpy requirement due to possible bug in conda-build\n* 29c102054620dcc6b17bfbec70142838a01c33ff BUILD: remove dev\u002F* from azure pipeline triggers\n* dea4c2cbcbd26f674330f0476d70a1c7dcd910ed BUILD: require numpy 1.17\n* 190d2dbb0a8ecea7a52e91f6051d3220bbf16d1c Merge remote-tracking branch 'origin\u002Frelease\u002F1.2.0' into dev\u002F1.2.0\n* 94004c96ed35c7a02e49b674feb639897b895963 BUILD: require pytools ~=1.2 and sklearndf ~= 1.2\n* 11682f20cf7fc572c1fda94917ad100610d7bef1 DOC: update RELEASE_NOTES.rst\n* 5dd20d935dd4cb59595bd692284cf94808c61969 Merge branch '1.1.x' into 1.2.x\n* d1b62410af9045a6fd58c17c00ed6741d6d9c565 Merge branch 'develop' into 1.1.x\n* 24793284908061344217417e66dfb60f69240fba BUILD: pin jinja2 to ~=2.11 to prevent incompatibility with sphinx (#289)\n* 94e73d10e2a16b7bb81362a52190d31386ca5863 API: remove FACET 1.0 legacy inspections (#288)\n* 149b9da1cb299c2ece2cc226f58875922442f90f DEV: pin scipy to 1.5 in environment.yml (#287)\n* d3e00bbf173867acec1911385a54022a0b5378e8 Update version to 1.0.4\n* d42ffb7754db8065c2","2021-09-08T18:01:54"]