Python机器学习

改善ML模型性能(上)

Pytnon机器学习改善ML模型的性能详细操作教程

通过集成提高演奏效果

集成可以通过组合多种模型来提高机器学习效果。基本上,集成模型由几个单独训练的监督学习模型组成,并且与单个模型相比,它们的结果以各种方式合并以实现更好的预测性能。合奏方法可以分为以下两组-

顺序合奏方法

顾名思义,在这种集成方法中,基础学习器是顺序生成的。这种方法的动机是利用基础学习者之间的依赖性。

并行合奏方法

顾名思义,在这种集成方法中,基础学习器是并行生成的。这种方法的动机是利用基础学习者之间的独立性。

集成学习方法

以下是最受欢迎的整体学习方法,即用于组合来自不同模型的预测的方法-

装袋

术语装袋也称为引导聚合。在装袋方法中,集成模型试图通过组合在随机生成的训练样本上训练的各个模型的预测来提高预测准确性并减少模型方差。集合模型的最终预测将通过计算来自各个估计量的所有预测的平均值来给出。套袋方法的最好例子之一是随机森林。

提升

在提升方法中,构建集成模型的主要原理是通过顺序地训练每个基本模型估计量来逐步构建它。顾名思义,它基本上是结合几个星期的学习者,并在多次迭代的训练数据上依次进行训练,以建立强大的整体。在每周基本学习者的培训中,较高的权重分配给了那些较早分类错误的学习者。增强方法的示例是AdaBoost。

投票

在此集成学习模型中,建立了不同类型的多个模型,并使用一些简单的统计量(如计算均值或中位数等)来组合预测。该预测将作为培训做出最终预测的附加输入。

袋装合奏算法

以下是三种套袋集成算法-
袋装决策树 随机森林 拓展树

提升合奏算法

以下是最常见的两种增强合奏算法-
AdaBoost 随机梯度提升

投票合奏算法

如前所述,投票首先从训练数据集中创建两个或多个独立模型,然后投票分类器将模型包装起来,并在需要新数据时获取子模型的预测平均值。
在以下Python食谱中,我们将通过在Pima Indians糖尿病数据集上使用sklearn的VotingClassifier类来构建用于分类的Voting集成模型。我们将逻辑回归,决策树分类器和SVM的预测结合在一起,以解决如下分类问题-
首先,按如下所示导入所需的程序包-
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-26
from pandas import read_csv
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.svm import SVC
from sklearn.ensemble import VotingClassifier
现在,我们需要像之前的示例一样加载Pima糖尿病数据集-
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-26
path = r"C:\pima-indians-diabetes.csv"
headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names = headernames)
array = data.values
X = array[:,0:8]
Y = array[:,8]
接下来,如下所示进行10倍交叉验证的输入-
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-26
kfold = KFold(n_splits = 10, random_state = 7)
接下来,我们需要创建如下子模型-
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-26
estimators = []
model1 = LogisticRegression()
estimators.append(('logistic', model1))
model2 = DecisionTreeClassifier()
estimators.append(('cart', model2))
model3 = SVC()
estimators.append(('svm', model3))
现在,通过组合上面创建的子模型的预测来创建投票合奏模型。
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-26
ensemble = VotingClassifier(estimators)
results = cross_val_score(ensemble, X, Y, cv = kfold)
print(results.mean())
输出
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-26
0.7382262474367738
上面的输出表明,我们的投票分类器集成模型的准确性约为74%。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4