Task5--模型融合

模型融合的方法介绍

简单加权平均

平均法(Averaging)(针对回归问题)

平均法分为简单算术平均与加权算术平均法
简单算术平均法:对多个模型预测结果进行平均:在这里插入图片描述
加权算术平均法:对模型的重要度设置不同的权重:在这里插入图片描述

投票法(Voting)(针对分类问题)

投票法指的是:针对分类问题,在基学习器上得到一个投票的分类器,将票数最多的类作为预测的结果
绝对多数投票法:最终结果占投票一半以上
相对多数投票法:最终结果在投票中票数最多
加权投票法:对模型结果的相对重要度设置权重,计算最终结果
硬投票:不区分模型结果的相对重要度,最终投票数最多的类为最终被预测的类
软投票:为不同模型设置不同的权重,区别模型的不同重要度
sklearn中的投票法示例:

from sklearn.tree import DecisionTreeClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import VotingClassifier
model1 = LogisticRegression(random_state=2020)
model2 = DecisionTreeClassifier(random_state=2020)
model = VotingClassifier(estimators=[('lr', model1), ('dt', model2)], voting='hard')

boosting/bagging方法

Bagging采用有放回的采样方法选取训练集,进行T轮采样,采集到T个包含m个样本的数据集,从而训练出T个基学习器,最终对这T个基学习器的输出进行结合。
boosting方法:增加了前一个基学习器在训练过程中预测错误样本的权重

stacking/blending方法

堆叠法(Stacking)
利用初始训练数据学习若干基学习器,将这几个学习器的预测结果作为新的训练集,训练新的学习器
针对各个模型的讲解
https://blog.csdn.net/abcdefg90876/article/details/105383890?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161926669516780255245370%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=161926669516780255245370&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-4-105383890.first_rank_v2_pc_rank_v29&utm_term=%E7%AE%80%E5%8D%95%E5%8A%A0%E6%9D%83%E8%9E%8D%E5%90%88

代码部分

导入所需包:

import pandas as pd
import numpy as np
from sklearn.metrics import classification_report, f1_score
from sklearn.model_selection import StratifiedKFold, KFold, train_test_split
from sklearn.ensemble import RandomForestClassifier,RandomForestRegressor
from sklearn.ensemble import VotingClassifier
import lightgbm as lgb
from sklearn.linear_model import LogisticRegression
数据转换,处理Dataframe的内存
'''
数据转换,处理大数据节省内存
'''
def reduce_mem_usage(df):
    start_mem = df.memory_usage().sum() / 1024 ** 2
    print('Memory usage of dataframe is {:.2f} MB'.format(start_mem))
    for col in df.columns:
        col_type = df[col].dtype
        
        if col_type != object:
            c_min = df[col].min()
            c_max = df[col].max()
            if str(col_type)[: 3] == 'int'
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值