Python集成学习之Blending算法详解

 更新时间:2021年05月13日 11:33:57   作者:GoAl的博客  
集成学习(又称模型融合)就是结合若干个体分类器(基学习器)进行综合预测,各个个体学习器通常是弱学习器.集成学习相较于个体学习在预测准确率以及稳定性上都有很大的提高.文中有非常详细的代码示例哦,需要的朋友可以参考下

一、前言

普通机器学习:从训练数据中学习一个假设。

集成方法:试图构建一组假设并将它们组合起来,集成学习是一种机器学习范式,多个学习器被训练来解决同一个问题。

集成方法分类为:

Bagging(并行训练):随机森林

Boosting(串行训练):Adaboost; GBDT; XgBoost

Stacking:

Blending:

或者分类为串行集成方法和并行集成方法

1.串行模型:通过基础模型之间的依赖,给错误分类样本一个较大的权重来提升模型的性能。

2.并行模型的原理:利用基础模型的独立性,然后通过平均能够较大地降低误差

二、Blending介绍

训练数据划分为训练和验证集+新的训练数据集和新的测试集

将训练数据进行划分,划分之后的训练数据一部分训练基模型,一部分经模型预测后作为新的特征训练元模型。
测试数据同样经过基模型预测,形成新的测试数据。最后,元模型对新的测试数据进行预测。Blending框架图如下所示:
注意:其是在stacking的基础上加了划分数据

三、Blending流程图

在这里插入图片描述

  • 第一步:将原始训练数据划分为训练集和验证集。
  • 第二步:使用训练集对训练T个不同的模型。
  • 第三步:使用T个基模型,对验证集进行预测,结果作为新的训练数据。
  • 第四步:使用新的训练数据,训练一个元模型。
  • 第五步:使用T个基模型,对测试数据进行预测,结果作为新的测试数据。
  • 第六步:使用元模型对新的测试数据进行预测,得到最终结果。

在这里插入图片描述

四、案例

相关工具包加载

import numpy as np
import pandas as pd 
import matplotlib.pyplot as plt
plt.style.use("ggplot")
%matplotlib inline
import seaborn as sns



创建数据

from sklearn import datasets 
from sklearn.datasets import make_blobs
from sklearn.model_selection import train_test_split
data, target = make_blobs(n_samples=10000, centers=2, random_state=1, cluster_std=1.0 )
## 创建训练集和测试集
X_train1,X_test,y_train1,y_test = train_test_split(data, target, test_size=0.2, random_state=1)
## 创建训练集和验证集
X_train,X_val,y_train,y_val = train_test_split(X_train1, y_train1, test_size=0.3, random_state=1)
print("The shape of training X:",X_train.shape)
print("The shape of training y:",y_train.shape)
print("The shape of test X:",X_test.shape)
print("The shape of test y:",y_test.shape)
print("The shape of validation X:",X_val.shape)
print("The shape of validation y:",y_val.shape)
 

设置第一层分类器

from sklearn.svm import SVC
from sklearn.ensemble import RandomForestClassifier
from sklearn.neighbors import KNeighborsClassifier

clfs = [SVC(probability=True),RandomForestClassifier(n_estimators=5,n_jobs=-1,criterion='gini'),KNeighborsClassifier()]



设置第二层分类器

from sklearn.linear_model import LinearRegression
lr = LinearRegression()



第一层

val_features = np.zeros((X_val.shape[0],len(clfs)))
test_features = np.zeros((X_test.shape[0],len(clfs)))

for i,clf in enumerate(clfs):
    clf.fit(X_train,y_train)
    val_feature = clf.predict_proba(X_val)[:,1]
    test_feature = clf.predict_proba(X_test)[:,1]
    val_features[:,i] = val_feature
    test_features[:,i] = test_feature



第二层

lr.fit(val_features,y_val)



输出预测的结果

lr.fit(val_features,y_val)
from sklearn.model_selection import cross_val_score
cross_val_score(lr,test_features,y_test,cv=5)
 

到此这篇关于Python集成学习之Blending算法详解的文章就介绍到这了,更多相关Python Blending算法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python实现E-Mail收集插件实例教程

    Python实现E-Mail收集插件实例教程

    这篇文章主要给大家介绍了关于Python实现E-Mail收集插件的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧
    2019-02-02
  • Python OpenCV超详细讲解读取图像视频和网络摄像头

    Python OpenCV超详细讲解读取图像视频和网络摄像头

    OpenCV用C++语言编写,它具有C ++,Python,Java和MATLAB接口,并支持Windows,Linux,Android和Mac OS,OpenCV主要倾向于实时视觉应用,并在可用时利用MMX和SSE指令,本篇文章带你了解OpenCV读取图像视频与网络摄像头的方法
    2022-04-04
  • Python如何通过手肘法实现k_means聚类详解

    Python如何通过手肘法实现k_means聚类详解

    K-means聚类算法是一种常见的无监督学习算法,用于将数据集分成k个不同的簇,下面这篇文章主要给大家介绍了关于Python如何通过手肘法实现k_means聚类的相关资料,需要的朋友可以参考下
    2023-04-04
  • Pandas拼接concat使用方法

    Pandas拼接concat使用方法

    当我们需要将两个Pandas DataFrame对象合并为一个时,就需要使用Pandas拼接函数,本文主要介绍了Pandas拼接concat使用方法,感兴趣的可以了解一下
    2023-12-12
  • OpenCV使用KNN完成OCR手写体识别

    OpenCV使用KNN完成OCR手写体识别

    这篇文章主要为大家介绍了OpenCV使用KNN完成OCR手写体识别示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • Python中使用插入排序算法的简单分析与代码示例

    Python中使用插入排序算法的简单分析与代码示例

    这篇文章主要介绍了Python使用插入排序算法的简单分析与代码示例,插入算法的平均时间复杂度为O(n^2),需要的朋友可以参考下
    2016-05-05
  • Python中表示字符串的三种方法

    Python中表示字符串的三种方法

    这篇文章主要介绍了Python中表示字符串的三种方法的相关资料,需要的朋友可以参考下
    2017-09-09
  • Python 3.x 新特性及10大变化

    Python 3.x 新特性及10大变化

    这篇文章主要介绍了Python 3.x 新特性及10大变化,本文讲解了Python之父Guido van Rossum谈到了Python 3.0的构思,Python3版本的一些变化如print() and exec() 函数、整数及除法、input()代替raw_input()等,需要的朋友可以参考下
    2015-06-06
  • PyCharm中配置PySide2的图文教程

    PyCharm中配置PySide2的图文教程

    这篇文章主要介绍了PyCharm中配置PySide2的教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • 浅谈python3.6的tkinter运行问题

    浅谈python3.6的tkinter运行问题

    今天小编就为大家分享一篇浅谈python3.6的tkinter运行问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02

最新评论