模型融合———预测贷款用户是否会逾期
程序员文章站
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]
上一篇: python-unittest,使用断言进行代码自测
下一篇: 操作系统 — 浅析信号
推荐阅读