模型融合1

一、模型融合:与集成算法一样,都是训练多个评估器,并将多个评估器以某种方式结合起来解决问题的机器学习办法。但是区别是模型融合能够再经典集成模型的基础上进一步提升分数,使用模型融合ji融合:与集成算法一样,都是训练多个评估器,并将多个评估器以某种方式结合起来解决问题的机器学习办法。但是区别是模型融合能够再经典集成模型的基础上进一步提升分数,使用模型融合
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
软投票前提是要求模型能够输出概率。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
模型融合要求对算法非常熟悉

from sklearn.neighbors import KNeighborsClassifier as KNNC
from sklearn.neighbors import KNeighborsRegressor as KNNR
from sklearn.tree import DecisionTreeRegressor as DTR
from sklearn.tree import DecisionTreeClassifier as DTC
from sklearn.linear_model import LinearRegression as LR
from sklearn.linear_model import LogisticRegression as LogiR
from sklearn.ensemble import RandomForestRegressor as RFR
from sklearn.ensemble import RandomForestClassifier as RFC
from sklearn.ensemble import GradientBoostingRegressor as GBR
from sklearn.ensemble import GradientBoostingClassifier as GBC
from sklearn.naive_bayes import GaussianNB
#import xgboost as xgb
#融合模型
from sklearn.ensemble import VotingClassifier
from sklearn.ensemble import VotingRegressor
data=load_digits()
X=data.data
y=data.target
Xtrain,Xtest,ytrain,ytest=train_test_split(X,y,test_size=0.2,random_state=1214)
#定义交叉验证所需要的函数,对模型融合中每个评估器做交叉验证,对单一评估器的表现进行评估
def individual_estimators(estimators):
    for estimator in estimators:
        cv=KFold(n_splits=5,shuffle=True,random_state=1214)
        results=cross_validate(estimator[1],Xtrain,ytrain
                              ,cv=cv
                              ,scoring="accuracy"
                              ,n_jobs=-1
                              ,return_train_score=True
                              ,verbose=False
                              )
        test=estimator[1].fit(Xtrain,ytrain).score(Xtest,ytest)
        print(estimator[0],"\n train_score:{}".format(results["train_score"].mean())
             ,"\n cv_mean:{}".format(results["test_score"].mean())
            ,"\n test_score:{}".format(test)
              ,"\n"
             )
'''
返回:
scores:形状浮点数组的字典 (n_splits,)
每次交叉验证运行的估计器分数数组。
返回包含每个记分器的分数/时间数组的数组字典。此 dict 的可能键是:

test_score
每个 cv 拆分的测试分数的分数数组。如果评分参数中有多个评分指标,则 test_score 中的后缀 _score 更改为特定指标,例如 test_r2 或 test_auc。

train_score
每个 cv 拆分的火车分数的分数数组。如果评分参数中有多个评分指标,则 train_score 中的后缀 _score 更改为特定指标,例如 train_r2 或 train_auc。这仅在 return_train_score 参数为 True 时可用。

fit_time
为每个 cv 拆分在训练集上拟合估计器的时间。

score_time
为每个 cv 拆分在测试集上对估计器进行评分的时间。 (注意即使 return_train_score 设置为 True,也不包括在训练集上评分的时间

estimator
每个 cv 拆分的估计器对象。这仅在 return_estimator 参数设置为 True 时可用。
'''
#对融合模型做交叉验证,对融合模型的表现进行评估
def fusion_estimators(clf):
    cv=KFold(n_splits=5,shuffle=True,random_state=1214)
    results=cross_validate(clf,Xtrain,ytrain
                                  ,cv=cv
                                  ,scoring="accuracy"
                                  ,n_jobs=-1
                                  ,return_train_score=True
                                  ,verbose=False
                                  )
    test=clf.fit(Xtrain,ytrain).score(Xtest,ytest)#测试集上的结果
    print(" train_score:{}".format(results["train_score"].mean())#再训练集上的结果
                 ,"\n cv_mean:{}".format(results["test_score"].mean())#再五折交叉验证上的结果
                ,"\n test_score:{}".format(test)#再测试集上的结果
                  ,"\n"
             )
#在Python中,换行符"\n"是一个特殊的字符,用于在字符串中插入一个换行
logi=LogiR(max_iter=3000,n_jobs=8)
fusion_estimators(logi)
#构建多组分类器,进行融合
clf1=LogiR(max_iter=3000,random_state=1214,n_jobs=8)
clf2=RFC(n_estimators=100,random_state=1214,n_jobs=8)
clf3=GBC(n_estimators=100,random_state=1214)#没有n_jobs是因为没有并行树的,一棵树是依赖上一颗树的
estimators=[("Logisitic Regression",clf1),("RandomForest",clf2),("GBDT",clf3)]
clf=VotingClassifier(estimators,voting="soft")
fusion_estimators(clf)

在这里插入图片描述

  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python模型融合是一种将多个模型组合在一起以提高整体表现的技术。在机器学习比赛中,特别是团队参与的比赛中,模型融合是一个重要的手段,可以在模型相差较大但表现良好的情况下显著提升结果。 在Python中,有几种常见的模型融合方法。其中一种是投票法(Voting),它通过集成多个模型的预测结果,并根据多数投票的原则来确定最终的预测结果。在使用Python进行投票法模型融合时,可以使用`sklearn.ensemble.VotingClassifier`类来实现。 另一种常见的模型融合方法是堆叠法(Stacking),它通过训练一个元模型来融合多个基模型的预测结果。在Python中,可以使用`mlxtend.classifier.StackingClassifier`类来实现堆叠法模型融合。 除了投票法和堆叠法,还有其他的模型融合方法,如加权平均、Bagging等。这些方法都可以在Python中通过相应的库和函数来实现。选择何种方法取决于具体的问题和数据集的特点。 总结起来,Python模型融合是一种将多个模型组合在一起以提高整体表现的技术。投票法和堆叠法是常见的模型融合方法,在Python中可以使用相应的库和函数来实现。具体选择哪种方法需要根据问题和数据集的特点来决定。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [模型融合](https://blog.csdn.net/Lemon_pudding/article/details/108813638)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Python数据科学竞赛模型融合](https://blog.csdn.net/qq_43240913/article/details/110822100)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值