版本 1.1.X#

版本 1.1.2#

部署日期:2021年8月31日

贡献者#

  • Soledad Galli

这个小版本修复了当参数 drop_last_binary 设置为 True 时,OneHotEncoder 处理二元分类变量的一个错误。它还确保 OneHotEncoder.encoder_dict_ 中的值是类别列表而不是数组。这些错误是在 v1.1.0 中引入的。

Bug 修复#

  • OneHotEncoder: 当 drop_last_binary 设置为 true 时,现在每个二元变量输出 1 个虚拟变量

版本 1.1.1#

部署日期:2021年8月6日

贡献者#

  • 米格尔·特雷马·马鲁福

  • 尼古拉斯·加利

  • Soledad Galli

在此版本中,我们添加了一个新的转换器,扩展了另外两个转换器的功能,并将仓库迁移到其自己的组织中!

市长变动#

新变压器#

  • LogCpTransformer:在添加常数后应用对数变换(Miguel Trema Marrufo

小改动#

  • 扩展了 DropCorrelatedFeaturesSmartCorrelationSelectionFeature 的功能,使其接受可调用对象作为相关性函数(Miguel Trema Marrufo

  • 为转换模块中的所有转换器添加了 inverse_transform 方法(Nicolas Galli)。

文档#

版本 1.1.0#

部署日期:2021年6月22日

贡献者#

  • Hector Patino

  • 安德鲁·谭

  • 舒布迈·波特达尔

  • 奥古斯丁·菲尔波

  • Indy Navarro Vidal

  • 阿肖克·库马尔

  • 克里斯·萨米乌拉

  • Soledad Galli

在此版本中,我们通过将 check_estimator 测试添加到包中的 所有转换器 来强制与 Scikit-learn 的兼容性。

为了通过测试,我们需要修改 Feature-engine 转换器的一些内部功能并创建新的属性。我们尽可能地避免破坏向后兼容性。

市长变动#

  • 大多数转换器现在都有一个额外的属性 variables_,其中包含将被修改的变量。之前的属性 variables 仍然保留。variables_ 几乎总是与 variables 相同,除非转换器是用 variables=None 初始化的。

  • 在 SklearnTransformerWrapper 中的参数 transformer 和在 SelectBySingleFeaturePerformance、SelectByShuffling、RecursiveFeatureElimination 以及 RecursiveFeatureAddition 中的参数 estimator 需要一个强制输入,并且在初始化转换器时不能留空。

  • 分类编码器现在支持被转换为 category 以及 object 的变量(Shubhmay Potdar 和 Soledad Galli

  • 分类编码器现在有了参数 ignore_format,允许转换器处理任何变量类型,而不仅仅是对象或分类类型。

  • CategoricalImputer 现在有了 ignore_format 参数,允许转换器处理任何变量类型,而不仅仅是对象或分类类型。

  • 所有转换器现在都有一个新的属性 n_features_in,它捕获了用于训练转换器的数据集中的特征数量(在 fit() 期间)。

小改动#

  • 特征选择转换器现在支持 cv 参数中的所有交叉验证方案,而不仅仅是一个整数。也就是说,你可以用 LOOCV 或 StratifiedCV 等来初始化转换器。

  • OneHotEncoder 包含额外的功能,可以仅为包含两个类别的分类变量返回一个虚拟变量。在新属性 variables_binary_ 中,您可以识别原始的二元变量。

  • MathematicalCombinator 现在支持使用包含空值的数据框(Agustin Firpo)。

新变压器#

  • CyclicalTransformer:对数值变量应用周期性变换(Hector Patino

代码改进#

  • 所有转换器中添加了来自 check_estimator 的测试

  • 在 circleCI 中添加了对 Python 3.9 的兼容性测试 (Chris Samiullah 和 Soledad Galli)

  • 自动添加了 black8 和 linting 到 tox

  • 额外的代码修复(Andrew Tan 和 Indy Navarro Vidal)。

文档#

  • 用于填补器和编码器的附加比较表。

  • 使用新的徽章和资源更新了Readme。

  • 在 Jupyter 笔记本中扩展的 SklearnWrapper 演示。

  • 在 Jupyter 笔记本中扩展了异常值转换器演示(Ashok Kumar

  • 在 Jupyter 笔记本中扩展的管道演示。

社区#

  • 创建了Gitter社区以支持用户并促进知识交流

版本 1.0.2#

部署日期:2021年1月22日

贡献者#

  • 尼古拉斯·加利

  • Pradumna Suryawanshi

  • Elamraoui Sohayb

  • Soledad Galli

新的变压器#

  • CombineWithReferenceFeatures:在一组变量和参考变量之间应用数学运算(由Nicolas Galli提供

  • DropMissingData:从数据集中移除缺失的观测值(Pradumna Suryawanshi

Bug 修复#

  • 修复 SelectByTargetMeanPerformance 中的错误。

  • 修复文档和Jupyter笔记本的拼写错误。

教程#

  • 创建: 更新了如何将变量组合成新特征的“如何做”示例(由 Elamraoui Sohayb 和 Nicolas Galli 完成

  • Kaggle Kernels: 包含指向 Kaggle 内核的链接

版本 1.0.1#

部署日期:2021年1月11日

Bug 修复#

  • 修复 SelectBySingleFeaturePerformance 和 SelectByTargetMeanPerformance 中对 r2 的使用。

  • 修复文档在 readthedocs 中无法正确显示的问题。

版本 1.0.0#

部署日期:2020年12月31日

贡献者#

  • 阿肖克·库马尔

  • 克里斯托弗·萨米尤拉

  • 尼古拉斯·加利

  • Nodar Okroshiashvili

  • Pradumna Suryawanshi

  • Sana Ben Driss

  • Tejash Shah

  • Tung Lee

  • Soledad Galli

在这个版本中,我们对包进行了重大改进,包括整个代码库的代码质量提升、属性和方法的统一、新增了新的转换器以及扩展了文档。请阅读以下内容了解更多详情。

特征选择的新变换器#

我们引入了一个全新的模块,其中包含多个用于选择特征的转换器。

  • DropConstantFeatures: 从数据框中移除常量和准常量特征(由 Tejash Shah 提供

  • DropDuplicateFeatures: 从数据集中移除重复的特征(由 Tejash Shah 和 Soledad Galli 提供

  • DropCorrelatedFeatures: 移除相关联的特征 (由 Nicolas Galli 提供)

  • SmartCorrelationSelection:根据特定标准从一组相关特征中选择特征(by Soledad Galli

  • ShuffleFeaturesSelector: 通过随机打乱特征值后机器学习模型性能的下降来选择特征(由 Sana Ben Driss 提供

  • SelectBySingleFeaturePerformance: 根据单个特征训练的ML模型的性能选择特征(由Nicolas Galli提供

  • SelectByTargetMeanPerformance: 选择编码类别或区间为目标均值的特征,并将其用作性能的代理(由Tung Lee和Soledad Galli提供

  • 递归特征消除:递归地选择特征,评估从最不重要到最重要的特征对机器学习性能的影响(由Sana Ben Driss提供

  • 递归特征添加:递归地选择特征,评估从最重要的特征到最不重要的特征对机器学习性能的提升(由Sana Ben Driss提出

模块重命名#

Feature-engine 转换器已经被分类到子模块中,以简化包的开发并缩短用户的导入语法。

  • 模块插补:缺失数据插补器现在从 feature_engine.imputation 导入,而不是从 feature_engine.missing_data_imputation 导入。

  • 模块编码:分类变量编码器现在从 feature_engine.encoding 导入,而不是从 feature_engine_categorical_encoders 导入。

  • 模块离散化: 离散化转换器现在从 feature_engine.discretisation 导入,而不是从 feature_engine.discretisers 导入。

  • 模块转换: 转换器现在从 feature_engine.transformation 导入,而不是从 feature_engine.variable_transformers 导入。

  • 模块异常值:用于移除或审查异常值的转换器现在从 feature_engine.outliers 导入,而不是从 feature_engine.outlier_removers 导入。

  • 模块选择:新模块提供了转换器,用于从数据集中选择或移除变量。

  • 模块创建:新模块包含将变量通过数学或其他操作组合成新特征的转换器。

类名重命名#

我们缩短了分类编码器的名称,并且还重命名了其他类以简化导入语法。

  • 编码器: 类名中删除了 Categorical 这个词。现在,MeanCategoricalEncoder 类被命名为 MeanEncoderRareLabelCategoricalEncoder 被命名为 RareLabelEncoder,以此类推。请查看编码器文档以获取更多详情。

  • 填充器CategoricalVariableImputer 现在被称为 CategoricalImputer

  • 离散器UserInputDiscretiser 现在被称为 ArbitraryDiscretiser

  • 创建: MathematicalCombinator 没有被命名为 MathematicalCombination

  • WoEEncoder 和 PRatioEncoder: WoEEncoder 现在仅应用证据权重编码。要应用概率比编码,请使用不同的转换器:PRatioEncoder (由 Nicolas Galli 提供)。

参数重命名#

我们对一些参数进行了重命名,以统一整个包的命名规范。

  • EndTailImputer: 参数 distribution 现在被重命名为 imputation_method 以统一插补器的命名规范。要使用 IQR 进行插补,我们现在需要传递 imputation_method="iqr" 而不是 imputation_method="skewed"

  • AddMissingIndicator: 参数 missing_only 现在接受布尔值 TrueFalse

  • Winzoriser 和 OutlierTrimmer:参数 distribution 现在更名为 capping_method,以统一 Feature-engine 转换器的命名。

教程#

  • 插补:更新了缺失数据插补的“如何做”示例(由 Pradumna Suryawanshi 提供

  • 编码器:新的和更新的分类编码“如何做”示例(由 Ashok Kumar 提供

  • 离散化:新的和更新的离散化“如何做”示例(由Ashok Kumar提供

  • 变量转换:更新了如何对变量应用数学变换的“如何做”示例(由 Pradumna Suryawanshi 提供

对于贡献者和开发者#

代码架构#

  • 子模块: 转换器已被分组到相关的子模块和模块中。

  • 单个测试:测试类已被细分为单个测试

  • 代码风格: 我们采用了 flake8 进行代码检查和 PEP8 风格检查,并使用 black 进行代码的自动重构。

  • 类型提示:我们在类和函数中全面使用了类型提示(由 Nodar Okroshiashvili、Soledad Galli 和 Chris Samiullah 完成

文档#

  • 完全切换到 numpydoc,不再使用 Napoleon

  • 按照 numpydoc 文档字符串风格,包含了关于方法、参数、返回值和异常的更多细节(由 Nodar Okroshiashvili, Soledad Galli 提供

  • 链接到github仓库的文档

  • 改进的布局

其他更改#

  • 更新文档: 文档反映了当前使用 Feature-engine 转换器的情况

  • 拼写修正:感谢所有参与拼写修正的人员(Tim Vink,Github用户@piecot)