发行说明
当前开发版本的变更日志可在以下链接找到: https://github.com/rasbt/mlxtend/blob/master/docs/sources/CHANGELOG.md。
版本 0.23.1(2024年1月5日)
下载
变更
-
更新了对 distutils 的依赖,以支持 Python 3.12 及以上版本(#1072 通过 peanutsee)
-
mlxtend.feature_selection.ExhaustiveFeatureSelector
和SequentialFeatureSelector
现在也支持feature_groups
,其行为与上述描述类似。(#957 和 #965 通过 Nima Sarajpoor)
变更
- 由于冗余和简化代码库的原因,
ExhaustiveFeatureSelector
中的custom_feature_names
参数已被移除。ExhaustiveFeatureSelector
文档 展示了如何使用 pandas DataFrame 实现相同的行为和结果。(#957)
错误修复
- 无
版本 0.20.0 (2022年5月26日)
下载
新功能和增强
mlxtend.evaluate.bootstrap_point632_score
现在支持fit_params
。(#861)mlxtend/plotting/decision_regions.py
函数现在有一个contourf_kwargs
参数,用于 matplotlib 更改决策边界的外观(如果需要)。(#881 通过 pbloem)- 在
mlxtend.plotting.plot_confusion_matrix
中添加了norm_colormap
参数,以允许归一化颜色映射,例如使用matplotlib.colors.LogNorm()
。(#895) - 添加了新的
GroupTimeSeriesSplit
类,用于支持自定义组和附加参数的时间序列任务评估,与 scikit-learn 的TimeSeriesSplit
相比。(#915 通过 Dmitry Labazkin)
变更
- 由于与较新包版本的兼容性问题,已移除 six.py 中的某些函数,因此 mlxtend 可能不再支持 Python 2.7。
- 为了加快单元测试,内部变更现在通过 GitHub 工作流程进行单元测试,并移除了 Travis CI 和 Appveyor 钩子。
- 改进了
mlxtend.plotting.heatmap
和mlxtend.plotting.plot_confusion_matrix
中的轴标签旋转。(#872) - 修复了 McNemar 指南中的各种拼写错误。
- 如果在频繁模式函数
apriori
、fpmax
和fpgrowth
中使用了非布尔数组,则会发出警告。(#934 通过 NimaSarajpoor)
错误修复
- 修复了在某些颜色映射下
heatmap
中标签不可读的问题。(#852) - 修复了在
mlxtend.plotting.plot_confusion_matrix
中传递字符串类名时的问题。(#894)
版本 0.19.0 (2021年9月2日)
下载
新功能
- 在
evaluate.accuracy_score
中添加了第二种“平衡准确率”解释(“balanced”),除了现有的“average”选项外,还可以计算 scikit-learn 风格的平衡准确率。(#764) - 在
mlxtend.plotting
中添加了新的scatter_hist
函数,用于生成散点直方图。(#757 通过 Maitreyee Mhasaka) evaluate.permutation_test
函数现在接受一个paired
参数,以指定支持配对排列/随机化测试。(#768)StackingCVRegressor
现在也支持多维目标,类似于StackingRegressor
,通过StackingCVRegressor(..., multi_output=True)
。(#802 通过 Marco Tiraboschi)
变更
- 更新了单元测试以兼容 scikit-learn 0.24.1。(#774)
StackingRegressor
现在需要设置StackingRegressor(..., multi_output=True)
,如果目标是多维的;这允许更好的输入验证。(#802)- 从
plot_decision_regions
中移除了已弃用的res
参数。(#803) - 在
plot_learning_curves
中添加了title_fontsize
参数,用于控制标题字体大小;现在绘图样式为 matplotlib 默认样式。(#818) - 在
mlxtend.plotting.plot_decision_regions
的散点图高亮中,使用'c': 'none'
代替'c': ''
,以保持与 Matplotlib 3.4 及更高版本的兼容性。(#822) - 在
mlxtend.plotting.plot_confusion_matrix
函数中添加了fontcolor_threshold
参数,作为手动确定字体颜色截断的附加选项。(#827) frequent_patterns.association_rules
现在会在传递空频繁项集 DataFrame 时引发ValueError
。(#843)mlxtend.evaluate.bootstrap_point632_score
函数中实现的 .632 和 .632+ 自助法现在使用整个训练集进行重替换加权项,而不是每轮使用新的自助样本作为内部训练集。(#844)
错误修复
- 修复了 SequentialFeatureSelector 文档中的拼写错误 (#835 通过 João Pedro Zanlorensi Cardoso)
版本 0.18.0 (2020-11-25)
下载
新功能
bias_variance_decomp
函数现在支持对拟合于自助样本的估计器使用可选的fit_params
。(#748)bias_variance_decomp
函数现在支持 Keras 估计器。(#725 通过 @hanzigs)- 添加了新的
mlxtend.classifier.OneRClassifier
(One Rule Classfier) 类,这是一个简单的基于规则的分类器,通常用作性能基线或简单的可解释模型。(#726 - 添加了新的
create_counterfactual
方法,用于创建反事实以解释模型预测。(#740)
变更
permutation_test
(mlxtend.evaluate.permutation
) 修正为给出统计量至少与观察到的统计量一样极端的排列比例。(#721 通过 Florian Charlier)- 修复了 McNemar 混淆矩阵布局,使其符合惯例(和文档),交换了左上角和右下角的单元格。(#744 通过 mmarius)
错误修复
LogisticRegression
中用于日志记录的损失在权重向量中的第一个权重(这不是偏置单元)中没有包含 L2 惩罚。然而,由于这个损失函数仅用于日志记录目的,并且梯度保持正确,因此这不会影响主代码。(#741)- 修复了
bias_variance_decomp
中的一个错误,当使用mse
损失时,向下转换为整数会导致小数字的结果不精确。(#749)
版本 0.17.3 (2020-07-27)
下载
新功能
- 在自助法方法中添加了
predict_proba
关键字参数,以允许对接受概率值的评分函数进行自助法。(#700 通过 Adam Li) - 在
mlxtend.plotting.heatmap()
中添加了cell_values
参数,通过设置cell_values=False
可以选择性地抑制单元格注释。(#703
变更
- 为
EnsembleVoteClassifier
和StackingClassifier
实现了use_clones
和fit_base_estimators
(之前在EnsembleVoteClassifier
中为refit
)。(#670 通过 Katrina Ni) - 在
mlxtend.text
中切换到使用原始字符串进行正则表达式,以防止 Python 3.8 中的弃用警告。(#688) - 在顺序前向选择中切片数据后再发送到并行后端,减少内存消耗。
错误修复
- 修复了 matplotlib v3.1.0 及更高版本中的轴 DeprecationWarning。(#673)
- 修复了
bootstrap_point632_score
函数中用于 .632+ 估计的no_information_rate
函数中使用meshgrid
的问题。(#688) - 修复了
fpmax
中的一个问题,可能导致支持值不正确。(#692 通过 Steve Harenberg)
版本 0.17.2 (2020-02-24)
下载
新功能
- -
变更
- 之前已弃用的
OnehotTransactions
已被移除,取而代之的是TransactionEncoder
。 - 在频繁模式挖掘函数中移除了对
SparseDataFrame
的支持,转而采用 pandas >=1.0 处理稀疏数据的新方式。如果你使用了SparseDataFrame
格式,请参阅 pandas 的迁移指南:https://pandas.pydata.org/pandas-docs/stable/user_guide/sparse.html#migrating。(#667) plot_confusion_matrix.py
现在还可以接受一个 matplotlib 图形和轴作为输入,以便将混淆矩阵图添加到其中。(#671 由 Vahid Mirjalili 提供)
错误修复
-
-
-
对现有的
iris_data()
进行了增强,使其能够加载UCI仓库版本的鸢尾花数据集以及修正后的原始版本数据集(与Fisher的论文一致;这与R中的版本相同),这两个数据点略有不同。(通过 #539 由 janismdhanbad 提供) - 在
SequentialFeatureSelector
和ExhaustiveFeatureSelector
的fit()
方法中添加了可选的groups
参数,用于转发到sklearn的CV。(#537 由 arc12 提供) - 在
mlxtend.plotting
子模块中添加了一个新的plot_pca_correlation_graph
函数,用于绘制PCA相关图。(#544 由 Gabriel-Azevedo-Ferreira 提供) - 在
mlxten.plotting.plot_decision_region
函数中添加了一个zoom_factor
参数,允许用户放大和缩小决策区域图。(#545) - 添加了一个实现FP-Growth算法以挖掘频繁项集的
fpgrowth
函数,作为现有apriori
算法的替代品。(#550 由 Steve Harenberg 提供) - 在
mlxtend.plotting
中新增了heatmap
函数。(#552) - 添加了一个实现FP-Max算法以挖掘最大项集的
fpmax
函数,作为fpgrowth
算法的替代品。(#553 由 Steve Harenberg 提供) - 在
mlxtend.plotting
的plot_decision_regions
函数中新增了figsize
参数。(#555 由 Mirza Hasanbasic 提供) - 为
apriori
频繁项集生成函数新增了low_memory
选项。设置low_memory=False
(默认)使用了一个显著优化的算法版本,比原始实现快3-6倍(low_memory=True
)。(#567 由 jmayse 提供) - 在
mlxtend.regressor.linear_regression
的LinearRegression
中添加了使用QR分解
和奇异值分解
(SVD)方法的数值稳定OLS方法。(#575 由 PuneetGrov3r 提供)
变更
- 现在在底层使用最新的joblib库进行多进程处理,而不是
sklearn.externals.joblib
。(#547) - 对
StackingCVClassifier
和StackingCVRegressor
进行了更改,使得第一级模型可以生成非数值类型的输出。(#562)
错误修复
- 在
iris.py
下的iris_data()
文档中添加了关于R和UCI机器学习仓库中鸢尾花数据差异的说明。 - 确保在使用PCA的
'svd'
模式时,特征值的数量与使用'eigen'
时相同(在这种情况下追加0)。(#565)
版本 0.16.0 (2019-05-12)
下载
新特性
StackingCVClassifier
和StackingCVRegressor
现在支持random_state
参数,与shuffle
一起控制cv分割中的随机性。(#523 由 Qiang Gu 提供)StackingCVClassifier
和StackingCVRegressor
现在有一个新的drop_last_proba
参数。如果为True
,它会丢弃特征集中的最后一个“概率”列,因为它冗余:p(y_c) = 1 - p(y_1) + p(y_2) + ... + p(y_{c-1})。这对于对完全共线特征敏感的元分类器很有用。(#532)- 其他堆叠估计器,包括
StackingClassifier
、StackingCVClassifier
和StackingRegressor
,支持对regressors
甚至单个基础回归器进行网格搜索。(#522 由 Qiang Gu 提供) - 为
StackingCVClassifier
添加了多进程支持。(#522 由 Qiang Gu 提供) - 为
StackingCVRegressor
添加了多进程支持。(#512 由 Qiang Gu 提供) - 现在,
StackingCVRegressor
也支持对regressors
进行网格搜索,甚至可以对单个基础回归器进行网格搜索。当存在层级混合参数时,GridSearchCV
将尝试自上而下地替换超参数(详见文档中的示例细节)。(#515 由 Qiang Gu 提供) - 为
apriori
添加了verbose
参数,以显示当前迭代次数以及当前正在采样的项集大小。(#519) - 为混淆矩阵函数添加了一个可选的
class_name
参数,以在轴上显示类名作为刻度标记。(#487 由 sandpiturtle 提供) - 为 PCA 添加了
pca.e_vals_normalized_
属性,用于存储归一化形式的特征值;这通常被称为解释方差比。#545
变更
- 由于新功能、重构以及对 scikit-learn 更好的支持(例如
GridSearchCV
等),StackingCVRegressor
的元回归器现在通过参数网格中的'meta_regressor__*
进行访问。例如,如果之前通过'randomforestregressor__n_estimators'
调整了RandomForestRegressor
作为元回归器,现在已更改为'meta_regressor__n_estimators'
。(#515 由 Qiang Gu 提供) - 上述变更现在也适用于其他堆叠估计器,包括
StackingClassifier
、StackingCVClassifier
和StackingRegressor
。(#522 由 Qiang Gu 提供) - 自动为 PCA 求解器 'SVD' 进行均值中心化,使得使用 SVD 始终等同于使用协方差矩阵方法 #545
错误修复
feature_selection.ColumnSelector
现在也支持类型为int
的列名(除了str
名称),如果输入是 pandas DataFrame。(#500 由 tetrar124 提供)- 修复了在
show_absolute=True
和show_normed=True
时,plot_confusion_matrix
对于不平衡数据集的标签不可读的问题。(#504) - 如果传递给
apriori
的SparseDataFrame
具有不以0
开头的整数列名,由于 pandas 中SparseDataFrame
实现的当前限制,将引发更具信息性的错误。(#503) - SequentialFeatureSelector 现在支持所有操作模式(前向/后向/浮动)的 DataFrame 输入。#506
mlxtend.evaluate.feature_importance_permutation
现在正确接受具有适当函数签名的评分函数作为metric
参数。#528
版本 0.15.0 (2019-01-19)
下载
新功能
- 在
mlxtend.image
中添加了一个新的转换器类EyepadAlign
,该类基于眼睛位置对齐人脸图像。(#466 由 Vahid Mirjalili 提供) - 添加了一个新函数
mlxtend.evaluate.bias_variance_decomp
,该函数将回归器或分类器的损失分解为偏差和方差项。(#470) - 为
PrincipalComponentAnalysis
添加了一个whitening
参数,以可选地对变换后的数据进行白化,使得特征具有单位方差。(#475)
变更
- 将
PrincipalComponentAnalysis
中的默认求解器从'eigen'
更改为'svd'
,以提高数值稳定性。(#474) mlxtend.image.extract_face_landmarks
现在在没有检测到面部标志时返回None
,而不是返回全零数组。(#466)
错误修复
- 在某些边缘情况下,如果求解器为
'eigen'
,PrincipalComponentAnalysis
和LinearDiscriminantAnalysis
中的特征向量可能未排序。(#477, #478)
版本 0.14.0 (2018-11-09)
下载
- 源代码 (zip)
- 源代码 (tar.gz)
- 在
plotting
模块中添加了scatterplotmatrix
函数。(#437) - 在
StackingRegressor
、StackingClassifier
、StackingCVRegressor
、StackingCVClassifier
、EnsembleVoteClassifier
中添加了sample_weight
选项。(#438) - 在
SequentialFeatureSelector
、scikit-learn 的GridSearchCV
等中添加了RandomHoldoutSplit
类,用于执行不带旋转的随机训练/验证分割。(#442) - 在
SequentialFeatureSelector
、scikit-learn 的GridSearchCV
等中添加了PredefinedHoldoutSplit
类,用于基于用户指定的索引执行不带旋转的训练/验证分割。(#443) - 创建了一个新的
mlxtend.image
子模块,用于处理与图像处理相关的任务。(#457) - 在
mlxtend.image
中添加了一个基于dlib
的新便捷函数extract_face_landmarks
。(#458) - 在
mlxtend.evaluate.bootstrap_point632_score
方法中添加了method='oob'
选项,用于计算经典的袋外引导估计。(#459) - 在
mlxtend.evaluate.bootstrap_point632_score
方法中添加了method='.632+'
选项,用于计算 .632+ 引导估计,该估计解决了 .632 引导的乐观偏差问题。(#459) - 添加了一个新的
mlxtend.evaluate.ftest
函数,用于对两个或多个分类模型的准确性进行 F 检验。(#460) - 添加了一个新的
mlxtend.evaluate.combined_ftest_5x2cv
函数,用于对两个模型的性能进行组合的 5x2cv F 检验。(#461) - 添加了一个新的
mlxtend.evaluate.difference_proportions
测试,用于比较两个比例(例如,分类器准确性)。(#462)
变更
- 解决了 NumPy 0.15 中的弃用警告。(#425)
- 由于 PR (#459) 中的复杂性,现在已放弃 Python 2.7;由于 Python 软件基金会对 Python 2.7 的官方支持将在大约 12 个月后结束,这一重新聚焦将有望在不需担心向后兼容性的情况下释放一些开发时间。
错误修复
- 修复了
mlxtend.plotting.plot_confusion_matrix
中缺少导入的问题。(#428)
版本 0.13.0 (2018-07-20)
下载
新功能
- 当使用交叉验证生成器与
SequentialFeatureSelector
时,现在会抛出一个有意义的错误信息。(#377) SequentialFeatureSelector
现在通过fit
方法接受自定义特征名称,以生成更具解释性的特征子集报告。(#379)SequentialFeatureSelector
现在也兼容 Pandas DataFrame,并使用 DataFrame 列名生成更具解释性的特征子集报告。(#379)ColumnSelector
现在可以与 Pandas DataFrame 列一起使用。(#378 由 Manuel Garrido 贡献)mlxtend.feature_selection
中的ExhaustiveFeatureSelector
估计器现在可以通过 control+c 安全地在中途停止。(#380)- 在
mlxtend.math
中添加了两个新函数vectorspace_orthonormalization
和vectorspace_dimensionality
,分别用于使用 Gram-Schmidt 过程将一组线性无关的向量转换为一组标准正交基向量,并计算向量空间的维度。(#382) mlxtend.frequent_patterns.apriori
现在支持 pandas 的SparseDataFrame
生成频繁项集。(#404 由 Daniel Morales 贡献)plot_confusion_matrix
函数现在可以显示归一化的混淆矩阵系数,以及带有或不带有颜色条的绝对混淆矩阵系数。文本显示方法已更改,以便使用色图的完整范围。默认大小也根据类的数量进行了设置。- 在
StackingRegressor
中添加了对将元特征与原始输入特征合并的支持(通过use_features_in_secondary
),就像在其他 Stacking 类中已经支持的那样。(#418) - 为
association_rules
函数添加了support_only
参数,允许在输入的 DataFrame 不包含完整的 antecedent 和 consequent 支持值的情况下,基于支持度指标构建关联规则。(#421)
变更
- 使用
apriori
生成的项集现在为frozenset
。(#393 由 William Laney 和 #394) - 现在,如果输入到
apriori
的 DataFrame 包含非 0、1、True、False 的值,则会引发错误。(#419)
错误修复
- 允许通过 scikit-learn 的
clone
函数克隆 mlxtend 估计器。(#374) - 修复了
StackingRegressor
和StackingCVRegressor
中refit=False
的正确使用问题。(#384 和 (#385) 由 selay01) - 允许
StackingClassifier
在use_features_in_secondary=True
时处理稀疏矩阵。(#408 由 Floris Hoogenbook) - 允许
StackingCVRegressor
在use_features_in_secondary=True
时处理稀疏矩阵。(#416) - 允许
StackingCVClassifier
在use_features_in_secondary=True
时处理稀疏矩阵。(#417)
版本 0.12.0 (2018-21-04)
下载
新功能
- 新增
feature_importance_permuation
函数,通过 permutation importance 方法计算分类器和回归器的特征重要性。(#358) ExhaustiveFeatureSelector
的 fit 方法现在可选地接受用于特征选择的估计器的**fit_params
。(#354 由 Zach Griffith)SequentialFeatureSelector
的 fit 方法现在可选地接受用于特征选择的估计器的**fit_params
。(#350 由 Zach Griffith)
变更
- 将
plot_decision_regions
的颜色替换为色盲友好的调色板,并为决策区域添加等高线。(#348) - 所有堆叠估计器现在在调用推理方法之前如果没有拟合估计器,则会引发
NonFittedErrors
。(#353) - 将
StackingClassifier
和StackingCVClassifier
的refit
参数重命名为use_clones
,以更明确且减少误导。(#368)
错误修复
- 文档和文档工具中的各种更改以修复格式问题。(#363)
- 修复了
StackingCVClassifier
的元特征在shuffle=True
时未按原始顺序存储的错误。(#370) - 许多文档改进,包括在 API 文档中添加用户指南链接。(#371)
版本 0.11.0 (2018-03-14)
下载
新功能
- 新增函数实现重采样配对 t 检验程序 (
paired_ttest_resampled
),用于比较两个模型的性能。(#323) - 新增函数实现 k 折配对 t 检验程序 (
paired_ttest_kfold_cv
),用于比较两个模型的性能(也称为 k 折留一配对 t 检验)。(#324) - 新增函数实现 5x2cv 配对 t 检验程序 (
paired_ttest_5x2cv
),由 Dieterrich (1998) 提出,用于比较两个模型的性能。(#325) - 在堆叠类中添加了
refit
参数(类似于EnsembleVoteClassifier
中的refit
参数),以支持遵循 scikit-learn API 但不兼容 scikit-learn 的clone
函数的分类器和回归器。(#322) ColumnSelector
现在有一个drop_axis
参数,用于在带有CountVectorizers
的管道中使用。(#333)
变更
- 如果在
StackingRegressor
和StackingCVRegressor
中调用predict
或predict_meta_features
方法之前未调用fit
方法,则会引发一个信息丰富的错误消息。(#315) plot_decision_regions
函数现在会根据特征维度自动确定最佳设置,并支持抗锯齿。旧的res
参数已被弃用。(#309 由 Guillaume Poirier-Morency 提供)- 由于
onehot transformation
的优化以及apriori
算法生成的候选数量减少,Apriori 代码运行速度更快。(#327 由 Jakub Smid 提供) OnehotTransactions
类(通常与apriori
函数结合用于关联规则挖掘)现在更加节省内存,因为它使用布尔数组而不是整数数组。此外,OnehotTransactions
类现在可以提供sparse
参数,以生成onehot
矩阵的稀疏表示,从而进一步提高内存效率。(#328 由 Jakub Smid 提供)OneHotTransactions
已被弃用,并被TransactionEncoder
取代。(#332)plot_decision_regions
函数现在有三个新参数scatter_kwargs
、contourf_kwargs
和scatter_highlight_kwargs
,可用于修改绘图样式。(#342 由 James Bourbeau 提供)
Bug Fixes
- 修复了当
refit
设置为false
时,向EnsembleVoteClassifier
提供类别标签时的问题。(#322) - 允许在
plot_decision_regions
函数中使用 16 位和 32 位精度的数组。(#337) - 修复了在使用 conviction 指标计算关联规则时,如果项目数量 <= 1 时引发的索引错误。(#340)
(#262)
- utils.Counter
现在接受一个名称变量,以帮助区分多个计数器,时间精度可以通过 'precision' kwarg 设置,新属性 end_time 保存最后一次迭代完成的时间。(#278 通过 Mathew Savage)
错误修复
- 修复了在使用 SciPy 1.0 时 McNemar 测试中出现的弃用错误。(#283)
版本 0.9.0 (2017-10-21)
下载
新功能
- 添加了
evaluate.permutation_test
,用于假设检验(或 A/B 测试)的排列测试,以测试两个样本是否来自同一分布。换句话说,这是一种测试两个组是否显著不同的程序(例如,治疗组和对照组)。(#250) - 在
frequent_patterns.association_rules
函数中添加了'leverage'
和'conviction'
作为评估指标。(#246 & #247) - 在
PrincipalComponentAnalysis
中添加了loadings_
属性,以计算特征在主成分上的因子载荷。(#251) - 允许在集成和堆叠估计器中对分类器/回归器进行网格搜索。(#259)
- 新增
make_multiplexer_dataset
函数,该函数创建一个由 n 位布尔多路复用器生成的数据集,用于评估监督学习算法。(#263) - 添加了一个新的
BootstrapOutOfBag
类,实现了用于评估监督学习算法的袋外引导法。(#265) StackingClassifier
、StackingCVClassifier
、StackingRegressor
、StackingCVRegressor
和EnsembleVoteClassifier
的参数现在可以使用 scikit-learn 的GridSearchCV
进行调优。(#254 通过 James Bourbeau)
变更
frequent_patterns.association_rules
返回的'support'
列已更改为计算“前件并集后件”的支持度,并添加了新的'前件支持'
和'后件支持'
列以避免歧义。(#245)- 允许通过 scikit-learn 的
clone
函数克隆OnehotTransactions
,这是 scikit-learn 的FeatureUnion
或GridSearchCV
所必需的(通过 Iaroslav Shcherbatyi)。(#249)
错误修复
- 修复了
_IterativeModel
子类中self._init_time
参数的问题。(#256) - 修复了在 Python 2.7 上运行
plot_ecdf
时出现的精度错误。(264) PrincipalComponentAnalysis
中的 SVD 向量现在被缩放,以便通过solver='eigen'
和solver='svd'
存储的特征值具有相同的量级。(#251)
版本 0.8.0 (2017-09-09)
下载
新功能
- 添加了
mlxtend.evaluate.bootstrap
,实现了普通的非参数引导法,用于引导单个统计量(例如,均值、中位数、回归拟合的 R^2 等)。#232 SequentialFeatureSelecor
的k_features
现在接受字符串参数 "best" 或 "parsimonious",用于更“自动化”的特征选择。例如,如果提供了 "best",特征选择器将返回具有最佳交叉验证性能的特征子集。如果提供了 "parsimonious" 作为参数,将选择交叉验证性能在一个标准误差内的最小特征子集。#238
变更
SequentialFeatureSelector
现在使用np.nanmean
而不是普通的均值,以支持可能返回np.nan
的评分器。#211(通过 mrkaiser)- 从
SequentialFeatureSelector
中移除了skip_if_stuck
参数,取而代之的是更高效的实现,通过比较条件包含/排除结果(在浮动版本中)与之前缓存的特征集的性能。#237 ExhaustiveFeatureSelector
经过修改,大幅减少了内存消耗 #195(通过 Adam Erickson)
Bug Fixes
- 修复了
SequentialFeatureSelector
选择特征子集大于通过k_features
元组最大值指定的问题 #213
版本 0.7.0 (2017-06-22)
- 如果估计器在调用
predict
之前未被fit
,EnsembleVoteClassifier
现在会引发NotFittedError
。(通过 Anton Loss) - 添加了新的 TensorFlow 变量初始化语法,以确保与 TensorFlow 1.0 的兼容性
Bug Fixes
- 修复了
SequentialFeatureSelector
中k_features
的默认值错误 - 在
SequentialFeautureSelector
中将选定的特征子集强制转换为集合,以防止迭代器在k_idx
是相同组合的不同排列时卡住(通过 Zac Wellmer) - 修复了学习曲线的问题,导致性能指标被反转(通过 ipashchenko)
-
修复了在
SequentialFeatureSelector
中可能出现的错误,如果浮动变体中有同样表现良好的子集(通过 Zac Wellmer) -
修复了当
SequentialFeatureSelector
的k_features
参数提供元组范围且评分指标小于 -1(例如 scikit-learn 的 MSE 评分函数)时的问题 (wahutch](https://github.com/wahutch)) - 修复了
StackingClassifier
中verbose
> 1 时的AttributeError
问题 - 修复了
classifier.SoftmaxRegression
中的一个错误,该错误使用偏移量的均值而不是总和来更新偏置单元 - 修复了 MLP
_layer_mapping
函数中的罕见错误,该错误导致在初始化权重和偏置时随机数生成种子发生交换
版本 0.4.1 (2016-05-01)
下载
新功能
- 新的线性回归 TensorFlow 估计器 (
tf_regressor.TfLinearRegression
) - 新的 k-means 聚类估计器 (
cluster.Kmeans
) - 新的 TensorFlow k-means 聚类估计器 (
tf_cluster.Kmeans
)
变更
- 由于估计器类的重构,
fit
方法的init_weights
参数全局重命名为init_params
- 由于代码清理和重构,估计器的整体性能有所提升
- 增加了对正确数组类型的额外检查和更有意义的异常信息
- 在
tf_classifier.TfMultiLayerPerceptron
分类器中增加了可选的dropout
用于正则化 - 在
tf_classifier.TfMultiLayerPerceptron
分类器中增加了可选的decay
参数,通过指数衰减学习率 eta 进行自适应学习 - 用更简洁的
MultiLayerPerceptron
(classifier.MultiLayerPerceptron
) 替换了旧的NeuralNetMLP
;现在输出层也包含 softmax 和分类交叉熵损失 - 统一了
fit
函数的init_params
参数,以继续训练算法离开的地方(如果支持)
版本 0.4.0 (2016-04-09)
新功能
- 使用 Tensorflow 的新
TfSoftmaxRegression
分类器 (tf_classifier.TfSoftmaxRegression
) - 新的
SoftmaxRegression
分类器 (classifier.SoftmaxRegression
) - 使用 Tensorflow 的新
TfMultiLayerPerceptron
分类器 (tf_classifier.TfMultiLayerPerceptron
) - 新的
StackingRegressor
(regressor.StackingRegressor
) - 新的
StackingClassifier
(classifier.StackingClassifier
) - 用于类标签独热编码的新函数 (
preprocessing.one_hot
) - 为
SequentialFeatureSelector
增加了GridSearch
支持 (feature_selection/.SequentialFeatureSelector
) evaluate.plot_decision_regions
改进:- 如果数组类型为
float
,函数现在可以正确处理类 y-类标签 - 正确处理输入参数
markers
和colors
- 通过
ax
参数接受现有的Axes
- 如果数组类型为
- 为所有广义模型和多层神经网络增加了
print_progress
参数,用于打印当前 epoch 的时间、ETA 和当前成本 - 为
classifier.LogisticRegression
、classifier.Adaline
和regressor.LinearRegression
增加了小批量学习,并简化了 API - 通过
mlxtend.feature_extraction.PrincipalComponentAnalysis
增加了新的主成分分析类 - 通过
mlxtend.feature_extraction.RBFKernelPCA
增加了新的 RBF 核主成分分析类 - 通过
mlxtend.feature_extraction.LinearDiscriminantAnalysis
增加了新的线性判别分析类
变更
mlxtend.preprocessing.standardize
中的column
参数现在默认为None
,以便更方便地标准化所有列
版本 0.3.0 (2016-01-31)
下载
新功能
- 为
classifier.NeuralNetMLP
增加了进度条跟踪器 - 增加了用于评分预测与目标类标签的函数
evaluate.scoring
- 增加了用于创建 (
evaluate.confusion_matrix
) 和绘制 (evaluate.plot_confusion_matrix
) 混淆矩阵的函数 - 在
mlxtend.evaluate.plot_learning_curves
中增加了新的样式参数和改进的轴缩放 - 在
mlxtend.data
中增加了loadlocal_mnist
,用于将 MNIST 从本地字节文件流式传输到 numpy 数组 - 新的
NeuralNetMLP
参数:random_weights
、shuffle_init
、shuffle_epoch
- 新增
SFS
功能,如生成 pandasDataFrame
结果表和绘图功能(带有置信区间、标准差和标准误差条) - 在
SFS
中添加了对回归估计器的支持 - 添加了波士顿
住房数据集
- 为
classifier.NeuralNetMLP
添加了新的shuffle
参数
变更
mlxtend.preprocessing.standardize
函数现在可以选择性地返回从数组中估计的参数,以便重复使用。进一步的改进使standardize
函数更智能,以避免零除错误- 对
evaluate.plot_decision_regions
函数进行了美化改进,例如隐藏绘图轴 - 将
classifier.EnsembleClassfier
重命名为classifier.EnsembleVoteClassifier
- 改进了
Perceptron
、Adaline
、LinearRegression
和LogisticRegression
中的随机权重初始化 - 将
mlxtend.classifier.Adaline
的learning
参数更改为solver
,并添加了“正规方程”作为闭式解求解器 - 在一维评估中隐藏
mlxtend.evaluate.plot_decision_regions
中的 y 轴标签 - 将顺序特征选择算法统一为一个带有参数的
SequentialFeatureSelector
类,以启用浮动选择并切换前向和后向选择 - 对 MNIST 进行分层采样(现在从每个数字类别中随机抽取 500 个样本)
- 将
mlxtend.plotting
重命名为mlxtend.general_plotting
,以区分一般绘图函数和专用实用函数,如evaluate.plot_decision_regions
版本 0.2.9 (2015-07-14)
下载
新功能
- 顺序特征选择算法:SFS、SFFS、SBS 和 SFBS
变更
- 将
LogisticRegression
中的regularization
和lambda
参数更改为单个参数l2_lambda
版本 0.2.8 (2015-06-27)
- API 变更:
mlxtend.sklearn.EnsembleClassifier
->mlxtend.classifier.EnsembleClassifier
mlxtend.sklearn.ColumnSelector
->mlxtend.feature_selection.ColumnSelector
mlxtend.sklearn.DenseTransformer
->mlxtend.preprocessing.DenseTransformer
mlxtend.pandas.standardizing
->mlxtend.preprocessing.standardizing
mlxtend.pandas.minmax_scaling
->mlxtend.preprocessing.minmax_scaling
mlxtend.matplotlib
->mlxtend.plotting
- 为
mlxtend.classifier.NeuralNetMLP
添加了动量学习参数(alpha 系数)。 - 为
mlxtend.classifier.NeuralNetMLP
添加了自适应学习率(减少常数)。 mlxtend.pandas.minmax_scaling
变为mlxtend.preprocessing.minmax_scaling
,现在也支持 NumPy 数组mlxtend.pandas.standardizing
变为mlxtend.preprocessing.standardizing
,现在支持 NumPy 数组和 pandas DataFrame;此外,现在可以使用ddof
参数设置计算标准差时的自由度
版本 0.2.7 (2015-06-20)
- 添加了多层感知器(前馈人工神经网络)分类器作为
mlxtend.classifier.NeuralNetMLP
。 - 将 MNIST 手写数字数据集中的 5000 个带标签的训练样本添加到
mlxtend.data
版本 0.2.6 (2015-05-08)
- 添加了使用不同求解器(梯度下降和随机梯度下降,以及闭式解(正规方程))的普通最小二乘回归
- 为逻辑回归分类器添加了随机权重初始化选项,并更新了 l2 正则化
- 将
wine
数据集添加到mlxtend.data
- 为
mlxtend.matplotlib.enrichtment_plot
添加了invert_axes
参数,以选择性地将“Count”绘制在 x 轴上 - 由 Alejandro C. Bahnsen 为
mlxtend.sklearn.EnsembleClassifier
添加了新的verbose
参数 - 添加了
mlxtend.pandas.standardizing
以标准化 Pandas DataFrame 中的列 - 为
mlxtend.matplotlib.enrichment_plot
添加了linestyles
和markers
参数 mlxtend.regression.lin_regplot
自动添加 np.newaxis 并适用于 Python 列表- 添加了分词器:
mlxtend.text.extract_emoticons
和mlxtend.text.extract_words_and_emoticons
版本 0.2.5 (2015-04-17)
- 添加了顺序后向选择 (mlxtend.sklearn.SBS)
- 为
mlxtend.evaluate.plot_decision_regions
添加了X_highlight
参数,用于突出显示测试数据点。 - 添加了 mlxtend.regression.lin_regplot 以绘制线性回归的拟合线。
- 添加了 mlxtend.matplotlib.stacked_barplot,以便使用 pandas
DataFrame
方便地生成堆积条形图。 - 添加了 mlxtend.matplotlib.enrichment_plot
版本 0.2.4 (2015-03-15)
- 为
mlxtend.evaluate.learning_curves
添加了scoring
(由用户 pfsq 提供) - 修复了由缺少 README.html 文件引起的 setup.py 错误
- matplotlib.category_scatter 适用于 pandas DataFrame 和 Numpy 数组
版本 0.2.3 (2015-03-11)
- 添加了逻辑回归
- 梯度下降和随机梯度下降感知器更改为Adaline(自适应线性神经元)
- 适用于{0, 1}类别的感知器和Adaline
- 添加了
mlxtend.preprocessing.shuffle_arrays_unison
函数,用于打乱一个或多个NumPy数组。 - 为随机梯度下降分类器添加了打乱和随机种子参数。
- 为
mlxtend.file_io.find_filegroups
添加了rstrip
参数,以允许修剪基本名称。 - 为
mlxtend.file_io.find_filegroups
和find_files
添加了ignore_substring
参数。 - 在
mlxtend.file_io.find_filegroups
中用更强大的正则表达式替换了.rstrip。 - 为
mlxtend.sklearn.EnsembleClassifier
添加了网格搜索支持。
版本 0.2.2 (2015-03-01)
- 改进了EnsembleClassifier的鲁棒性。
- 扩展了plot_decision_regions()功能,以绘制1D决策边界。
- 函数matplotlib.plot_decision_regions被重构为evaluate.plot_decision_regions。
- 添加了evaluate.plot_learning_curves()函数。
- 添加了Rosenblatt、梯度下降和随机梯度下降感知器。
版本 0.2.1 (2015-01-20)
- 添加了mlxtend.pandas.minmax_scaling - 一个用于重新缩放pandas DataFrame列的函数。
- 对EnsembleClassifier接口进行了轻微更新(添加了
voting
参数) - 修复了EnsembleClassifier,使其在类标签不是从0到n的整数时返回正确的类标签。
- 添加了新的matplotlib函数,用于绘制分类器的决策区域。
版本 0.2.0 (2015-01-13)
- 改进了mlxtend.text.generalize_duplcheck,以去除重复项并防止无限循环问题。
- 为mlxtend.file_io.find_files添加了
recursive
搜索参数。 - 为mlxtend.file_io.find_files添加了
check_ext
参数,以基于文件扩展名进行搜索。 - 默认参数忽略mlxtend.file_io.find的不可见文件。
- 为
EnsembleClassifier
添加了transform
和fit_transform
。 - 添加了mlxtend.file_io.find_filegroups函数。
版本 0.1.9 (2015-01-10)
- 实现了scikit-learn的EnsembleClassifier(多数投票规则)类。
版本 0.1.8 (2015-01-07)
- 改进了mlxtend.text.generalize_names,以处理某些荷兰姓氏前缀(van, van der, de等)。
- 添加了mlxtend.text.generalize_name_duplcheck函数,以在不创建重复项的情况下将mlxtend.text.generalize_names函数应用于pandas DataFrame。
版本 0.1.7 (2015-01-07)
- 添加了文本工具和名称泛化函数。
- 添加了file_io工具。
版本 0.1.6 (2015-01-04)
- 添加了组合和排列估计器。
版本 0.1.5 (2014-12-11)
- 添加了用于管道和网格搜索的
DenseTransformer
。
版本 0.1.4 (2014-08-20)
mean_centering
函数现在是一个类,创建MeanCenterer
对象,可以通过fit
方法拟合数据,并通过transform
和fit_transform
方法将数据中心化到列均值。
版本 0.1.3 (2014-08-19)
- 添加了
preprocessing
模块和mean_centering
函数。
版本 0.1.2 (2014-08-19)
- 添加了
matplotlib
工具和remove_borders
函数。
版本 0.1.1 (2014-08-13)
- 简化了ColumnSelector的代码。