版本 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日
市长变动#
Feature-engine 现在托管在其 自己的 Github 组织 中
新变压器#
LogCpTransformer:在添加常数后应用对数变换(Miguel Trema Marrufo)
小改动#
扩展了
DropCorrelatedFeatures
和SmartCorrelationSelectionFeature
的功能,使其接受可调用对象作为相关性函数(Miguel Trema Marrufo)为转换模块中的所有转换器添加了
inverse_transform
方法(Nicolas Galli)。
文档#
将主仓库迁移到 Feature-engine 的 Github 组织
将示例 Jupyter 笔记本迁移到 单独的仓库。
添加路线图
版本 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
类被命名为MeanEncoder
。RareLabelCategoricalEncoder
被命名为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
现在接受布尔值True
或False
。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)