欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

模型融合———预测贷款用户是否会逾期

程序员文章站 2022-07-12 12:08:43
...

一、学习要求

用目前评分最高的模型作为基准模型,和其他模型进行stacking融合,得到最终模型及评分

二、基础知识

我们使用 m 个算法,分别求出对于我们数据而言,相对的预测结果 P1、P2 … Pm,我们不直接使用这三个预测结果进行综合来得到预测结果。而是将这个 m 个预测结果作为输入,再添加一层算法 Meta-Classifer,训练一个新的模型,用这个新的模型的输出作为我们最终的预测结果。

三、实现过程

使用我们在上个博客得到的最优模型进行stacking

from sklearn import datasets

from sklearn import svm
from sklearn.svm import LinearSVC
from sklearn import model_selection
from sklearn.linear_model import LogisticRegression
from sklearn.neighbors import KNeighborsClassifier
from sklearn.naive_bayes import GaussianNB 
from xgboost import XGBClassifier
from lightgbm  import LGBMClassifier
from sklearn.ensemble import RandomForestClassifier
from mlxtend.classifier import StackingClassifier
import numpy as np
 
clf1 = svm.SVC(kernel = 'linear', probability=True)
clf2 = svm.SVC(kernel='poly', probability=True)
clf3 = LinearSVC(C=0.05, penalty='l2', dual=True)
clf4 = RandomForestClassifier(n_estimators=40, criterion='gini', max_depth=9)
clf5 = XGBClassifier(learning_rate=0.1, max_depth=3, n_estimators=50)
clf6 = LGBMClassifier(boosting_type='gbdt', learning_rate=0.01, max_depth=5, n_estimators=250, num_leaves=90)

lr = LogisticRegression(penalty='l1', C = 0.1)


sclf = StackingClassifier(classifiers=[clf1, clf2, clf3, clf4, clf5, clf6], 
                          meta_classifier=lr)
 
print('5-fold cross validation:\n')
 
for clf, label in zip([clf1, clf2, clf3, clf4, clf5, clf6, sclf], 
                      ['svm.SVC_linear', 
                       'svm.SVC_poly', 
                       'LinearSVC',
                       'RandomForestClassifier',
                       'xgb.XGBClassifier',
                       'lgb.LGBMClassifier', 
                       'StackingClassifier',
                      ]):
 
    scores = model_selection.cross_val_score(clf, X_train, y_train, 
                                              cv=5, scoring='accuracy')
    print("Accuracy: %0.2f (+/- %0.2f) [%s]" 
          % (scores.mean(), scores.std(), label))

得到结果

5-fold cross validation:

Accuracy: 0.79 (+/- 0.01) [svm.SVC_linear]
Accuracy: 0.76 (+/- 0.01) [svm.SVC_poly]
Accuracy: 0.79 (+/- 0.02) [LinearSVC]
Accuracy: 0.79 (+/- 0.01) [RandomForestClassifier]
Accuracy: 0.80 (+/- 0.01) [xgb.XGBClassifier]
Accuracy: 0.80 (+/- 0.01) [lgb.LGBMClassifier]
Accuracy: 0.78 (+/- 0.01) [StackingClassifier]

引用:
详解stacking过程
集成方法总结&Stacking方法详解

相关标签: 模型融合