Bootstrap

【机器学习 | Python】mlxtend 包的使用指南

一、mlxtend 包的介绍

https://rasbt.github.io/mlxtend/

Mlxtend是一个Python库,用于机器学习和数据科学任务中的扩展功能。它提供了一系列方便实用的工具和函数,可用于特征选择、模型评估、数据可视化等任务。以下是Mlxtend库的一些主要功能和特点:

  1. 特征选择:Mlxtend提供了多种特征选择的方法,包括基于特征重要性的方法、递归特征消除以及基于特征子集搜索的方法。
  2. 模型评估:该库提供了交叉验证、网格搜索以及模型性能评估的功能。可以使用交叉验证来评估模型的泛化能力,并使用网格搜索来寻找最佳的超参数组合。
  3. 集成学习:Mlxtend支持集成学习方法,如投票分类器、堆叠分类器和Adaboost等。这些方法可以提高模型的准确性和稳定性。
  4. 关联规则挖掘:Mlxtend包含了Apriori算法,用于发现数据集中的频繁项集和关联规则。这对于市场篮子分析和推荐系统等任务非常有用。
  5. 数据可视化:Mlxtend提供了多种绘图工具,可用于数据集的可视化和结果的呈现。它支持绘制分类边界、特征重要性图和学习曲线等。

总而言之,Mlxtend是一个功能强大且易于使用的机器学习扩展库,为数据科学家和机器学习实践者提供了丰富的工具和函数,以加速开发和改进机器学习模型的过程。

二、Mlxtend API介绍

2.1 mlxtend.classifier

https://rasbt.github.io/mlxtend/api_subpackages/mlxtend.classifier/
  1. Adaline(自适应线性神经元分类器):Adaline是一种自适应线性神经元分类器,它可以用于二元分类任务。它具有参数eta(学习速率)、epochs(迭代次数)、minibatches(小批量样本数)、random_seed(随机种子)等。
  2. EnsembleVoteClassifier(集成投票分类器):EnsembleVoteClassifier是一个用于scikit-learn估计器的软投票/多数表决分类器。它可以使用多个分类器,并根据不同的投票策略进行预测。
  3. LogisticRegression(逻辑回归分类器):LogisticRegression是一个逻辑回归分类器,用于处理二元分类问题。它具有参数eta(学习速率)、epochs(迭代次数)、l2_lambda(L2正则化参数)、minibatches(小批量样本数)、random_seed(随机种子)等。
  4. MultiLayerPerceptron(多层感知机分类器):MultiLayerPerceptron是一个多层感知机分类器,使用逻辑sigmoid激活函数。它具有参数eta(学习速率)、epochs(迭代次数)、hidden_layers(隐藏层大小列表)、momentum(动量参数)、l1(L1正则化参数)、l2(L2正则化参数)等。
  5. OneRClassifier(OneR分类器):OneRClassifier是一个使用One Rule算法的分类器。One Rule算法是一种简单但有效的规则学习算法,用于生成基于单个特征的决策规则。
  6. Perceptron(感知器分类器):Perceptron是一个感知器分类器,用于处理二元分类任务。它具有参数eta(学习速率)、epochs(迭代次数)、random_seed(随机种子)等。
  7. SoftmaxRegression(Softmax回归分类器):SoftmaxRegression是一个Softmax回归分类器,用于多类别分类。它具有参数eta(学习速率)、epochs(迭代次数)、l2(L2正则化参数)、minibatches(小批量样本数)等。
  8. StackingCVClassifier(交叉验证堆叠分类器):StackingCVClassifier是一个用于scikit-learn估计器的交叉验证堆叠分类器。它将多个分类器作为基本分类器,并使用元分类器对其预测结果进行堆叠。
  9. StackingClassifier(堆叠分类器):StackingClassifier是一个用于分类任务的堆叠分类器。它使用多个分类器作为基本分类器,并使用元分类器对其预测结果进行堆叠。

2.2 mlxtend.cluster

https://rasbt.github.io/mlxtend/api_subpackages/mlxtend.cluster/

mlxtend中的Kmeans类实现了K-means聚类算法,具有以下参数:

  1. k:指定要形成的簇的数量。
  2. max_iter:最大迭代次数,控制算法的收敛性。
  3. convergence_tolerance:收敛容差,当质心的变化小于此阈值时,算法停止迭代。
  4. random_seed:随机种子,用于控制随机初始化的一致性。
  5. print_progress:打印算法进度的选项。

2.3 mlxtend.data

https://rasbt.github.io/mlxtend/api_subpackages/mlxtend.data/
  1. autompg_data:Auto MPG数据集。
  2. boston_housing_data:波士顿房价数据集。
  3. iris_data:鸢尾花数据集。
  4. loadlocal_mnist:从ubyte文件中读取MNIST数据集。
  5. make_multiplexer_dataset:创建一个二进制n位多路复用器数据集。
  6. mnist_data:来自MNIST手写数字数据集的5000个样本。
  7. three_blobs_data:用于聚类的三个二维斑点数据集。
  8. wine_data:葡萄酒数据集。

2.4 mlxtend.evaluate

https://rasbt.github.io/mlxtend/api_subpackages/mlxtend.evaluate/
  1. BootstrapOutOfBag:用于基于自助法进行模型评估的方法。
  2. GroupTimeSeriesSplit:用于处理分组时间序列数据的交叉验证方法。
  3. PredefinedHoldoutSplit:用于指定训练/验证集划分的方法,可与sklearn的GridSearchCV等函数配合使用。
  4. RandomHoldoutSplit:用于随机划分训练/验证集的方法,可与sklearn的GridSearchCV等函数配合使用。
  5. accuracy_score:计算准确率的方法。
  6. bias_variance_decomp:计算偏差-方差分解的方法。
  7. bootstrap:实现普通非参数自助法的方法。
  8. cochrans_q:用于比较2个或多个模型的Cochran’s Q检验方法。
  9. combined_ftest_5x2cv:用于比较两个模型性能的5x2cv组合F检验方法。
  10. confusion_matrix:计算混淆矩阵/列联表的方法。
  11. create_counterfactual:实现反事实方法的方法。
  12. feature_importance_permutation:通过置换重要性计算特征重要性的方法。
  13. ftest:用于比较2个或多个模型的F-Test检验方法。
  14. lift_score:计算提升度的方法。
  15. mcnemar:用于配对名义数据的McNemar检验方法。
  16. mcnemar_table:计算McNemar检验的2x2列联表的方法。
  17. mcnemar_tables:计算McNemar检验或Cochran’s Q检验的多个2x2列联表的方法。
  18. paired_ttest_5x2cv:用于比较两个模型性能的5x2cv配对t检验方法。
  19. paired_ttest_kfold_cv:用于比较两个模型性能的k-fold配对t检验方法。
  20. paired_ttest_resampled:用于比较两个模型性能的重采样配对t检验方法。
  21. permutation_test:非参数置换检验的方法。
  22. proportion_difference:计算比例差异检验的方法。
  23. scoring:计算监督学习中的评分指标的方法。

2.5 mlxtend.feature_extraction

https://rasbt.github.io/mlxtend/api_subpackages/mlxtend.feature_extraction/
  1. LinearDiscriminantAnalysis:线性判别分析(Linear Discriminant Analysis,LDA)类。
  2. PrincipalComponentAnalysis:主成分分析(Principal Component Analysis,PCA)类。
  3. RBFKernelPCA:径向基核主成分分析(RBF Kernel Principal Component Analysis)类,用于降低数据维度。

2.6 mlxtend.feature_selection

https://rasbt.github.io/mlxtend/api_subpackages/mlxtend.feature_selection/
  1. ColumnSelector:用于从数据集中选择特定列的对象。可以根据指定的列索引或列名来选择需要的列数据。
  2. ExhaustiveFeatureSelector:用于进行穷举特征选择的方法。该方法通过遍历所有可能的特征组合来选择最佳的特征子集,以提高模型性能。
  3. SequentialFeatureSelector:用于进行顺序特征选择的方法。该方法通过迭代地添加或删除特征来选择最佳的特征子集,以提高模型性能。可以使用前向选择(forward)、后向选择(backward)或浮动选择(floating)策略。

2.7 mlxtend.file_io

https://rasbt.github.io/mlxtend/api_subpackages/mlxtend.file_io/
  1. find_filegroups:用于从不同目录中查找和收集文件的方法。可以根据指定的路径、文件名子字符串、文件扩展名等条件,在不同目录中查找符合条件的文件,并将它们收集到一个Python字典中。
  2. find_files:用于在指定目录中根据文件名子字符串进行文件查找的方法。可以根据指定的子字符串匹配条件,在指定的目录中查找符合条件的文件,并返回匹配的文件列表。

2.8 mlxtend.frequent_patterns

https://rasbt.github.io/mlxtend/api_subpackages/mlxtend.frequent_patterns/
  1. apriori:从一个独热编码的DataFrame中获取频繁项集。该方法基于Apriori算法,根据最小支持度筛选出频繁项集,可以用于发现数据中频繁出现的组合。
  2. association_rules:生成关联规则的DataFrame,包括指标如’支持度’、'置信度’和’提升度’等。可以根据指定的关联规则评价指标和最小阈值筛选出具有一定关联性的规则。
  3. fpgrowth:从一个独热编码的DataFrame中获取频繁项集。该方法基于FP-Growth算法,使用FP树数据结构高效地挖掘频繁项集,适用于大规模数据集。
  4. fpmax:从一个独热编码的DataFrame中获取极大频繁项集。与频繁项集不同,极大频繁项集是指不再有超集是频繁项集的项集,具有更高的抽象度和概括性。
  5. hmine:从一个独热编码的DataFrame中获取频繁项集。该方法基于Hash算法,以哈希表为基础实现高效的频繁项集挖掘。

2.9 mlxtend.image

https://rasbt.github.io/mlxtend/api_subpackages/mlxtend.image/
  1. EyepadAlign:人脸图像对齐/变换类,基于眼睛对齐的方法。该类可用于将人脸图像对齐到面部特征点,以实现标准化的人脸对齐操作。
  2. extract_face_landmarks:用于提取人脸特征点的函数。该函数接受一个图像作为输入,并返回检测到的人脸特征点的位置。通过提取人脸特征点,可以进一步应用于人脸分析、表情识别、人脸识别等任务。

2.10 mlxtend.plotting

https://rasbt.github.io/mlxtend/api_subpackages/mlxtend.plotting/
  1. category_scatter:绘制散点图,可以使用不同的颜色和标记样式表示不同的类别。
  2. checkerboard_plot:通过matplotlib绘制棋盘图表/热图。
  3. ecdf:绘制经验累积分布函数(ECDF)图。
  4. enrichment_plot:绘制堆叠条形图。
  5. heatmap:通过matplotlib绘制热图。
  6. plot_confusion_matrix:绘制混淆矩阵图。
  7. plot_decision_regions:绘制分类器的决策边界。
  8. plot_learning_curves:绘制分类器的学习曲线。
  9. plot_linear_regression:绘制线性回归拟合线。
  10. plot_pca_correlation_graph:计算主成分分析(PCA)并绘制相关性图。
  11. plot_sequential_feature_selection:绘制特征选择结果图。
  12. remove_borders:从matplotlib图中去除边框。
  13. scatter_hist:绘制散点图,并沿轴绘制各个特征的直方图。
  14. scatterplotmatrix:绘制散点图矩阵。
  15. stacked_barplot:绘制堆叠条形图。

2.11 mlxtend.regressor

https://rasbt.github.io/mlxtend/api_subpackages/mlxtend.regressor/
  1. LinearRegression:最小二乘线性回归模型。它使用普通最小二乘法来拟合线性模型。
  2. StackingCVRegressor:用于回归问题的堆叠交叉验证回归器。它基于scikit-learn估计器实现了堆叠回归模型,可以通过交叉验证进行性能评估和模型选择。
  3. StackingRegressor:用于回归问题的堆叠回归器。它基于scikit-learn估计器实现了堆叠回归模型,可以通过将多个基本回归模型的预测结果作为输入,使用元回归模型进行集成。

2.12 mlxtend.preprocessing

https://rasbt.github.io/mlxtend/api_subpackages/mlxtend.preprocessing/
  1. CopyTransformer:返回输入数组的副本的转换器。
  2. DenseTransformer:将稀疏数组转换为密集数组的转换器。
  3. MeanCenterer:对向量和矩阵进行列中心化的转换器。
  4. TransactionEncoder:用于Python列表中事务数据的编码器类。
  5. minmax_scaling:对pandas DataFrame进行最小-最大缩放。
  6. one_hot:对类别标签进行独热编码。
  7. shuffle_arrays_unison:同时打乱NumPy数组的转换器。
  8. standardize:对pandas DataFrame中的列进行标准化。

2.13 mlxtend.text

https://rasbt.github.io/mlxtend/api_subpackages/mlxtend.text/
  1. generalize_names:将人的姓和名进行泛化处理,返回格式为<姓><分隔符><名字的第一个或几个字母>的姓名字符串。
  2. generalize_names_duplcheck:对DataFrame中的姓名列进行泛化处理并去除重复值。默认情况下,使用mlxtend.text.generalize_names方法对姓和名进行泛化处理,并根据是否存在重复值选择使用更多的名字字母进行泛化。
  3. tokenizer_emoticons:从文本中提取出表情符号(emoticons)。
  4. tokenizer_words_and_emoticons:将文本转换为小写的单词和表情符号(emoticons)。

2.14 mlxtend.utils

https://rasbt.github.io/mlxtend/api_subpackages/mlxtend.utils/
  1. Counter:用于显示for循环迭代器的进度。可以在循环中使用该类来跟踪迭代器的进度,并显示进度条。
  2. assert_raises:用于检查特定异常是否被引发,并验证异常消息是否与预期相符。可以使用该方法来进行单元测试,确保特定代码段引发了预期的异常。
  3. format_kwarg_dictionaries:用于合并默认的关键字参数字典和用户指定的关键字参数字典。该方法可以帮助在函数或方法中处理和组合不同来源的关键字参数,例如默认参数和用户提供的参数。
;