数据挖掘(六):模型融合

数据挖掘(六):模型融合

# 导入包
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.model_selection import KFold
from vecstack import stacking
from sklearn.model_selection import GridSearchCV,ParameterGrid
from sklearn.svm import SVC
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from xgboost import XGBClassifier
from sklearn.ensemble import GradientBoostingClassifier
from sklearn import metrics
import warnings

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
warnings.filterwarnings('ignore')
# 导入数据
org_data = pd.read_csv("org_data.csv", encoding = 'gbk')
print(org_data.shape)

变量处理及单模型的构建见本系列前一篇,此处略处

# 模型融合
model_list = [Lr_cv, svc_cv, dt_cv,  rf_cv, xgb_cv]
S_train, S_test = stacking(model_list, x_train, y_train,  x_test, regression=False, n_folds=5)

# # Initialize 2-nd level model
model = GradientBoostingClassifier(learning_rate = 0.1, n_estimators = 100, max_depth = 3)

# # Fit 2-nd level model
model_s = model.fit(S_train, y_train)

# # Predict
y_pred = model_s.predict(S_test)

# Final prediction score
# print('Final prediction score: [%.8f]' % metrics.accuracy_score(y_test, y_pred))
acc_score_test = metrics.accuracy_score(y_pred, y_test)
precision_score_test = metrics.precision_score(y_pred, y_test)
recall_score_test = metrics.recall_score(y_pred, y_test)
f1_score_test = metrics.f1_score(y_pred, y_test)
roc_auc_score_test = metrics.roc_auc_score(y_pred, y_test)

print('Final 测试集准确率:{}\n'.format(acc_score_test))
print('Final 测试集精确率:{}\n'.format(precision_score_test))
print('Final 测试集召回率:{}\n'.format(recall_score_test))
print('Final 测试集f1评分:{}\n'.format(f1_score_test))
print('Final 测试集AUC值:{}\n'.format(roc_auc_score_test))
        
        

# model_est(model_dict_s, x_train, x_test, y_train, y_test) 

Final 测试集准确率:0.7701471618780659

Final 测试集精确率:0.24512534818941503

Final 测试集召回率:0.6068965517241379

Final 测试集f1评分:0.3492063492063492

Final 测试集AUC值:0.6977540480929582
# 
from mlxtend.classifier import StackingClassifier
sclf = StackingClassifier(classifiers=[Lr_cv, dt_cv, rf_cv, xgb_cv, svc_cv],
                          meta_classifier=xgb_cv)
model_dict_mlxtend = {'融合模型':sclf}
model_est(model_dict_mlxtend, x_train, x_test, y_train, y_test)
融合模型 训练集准确率:0.8935978358881875
融合模型 测试集准确率:0.7764540995094604

融合模型 训练集精确率:0.6390887290167866
融合模型 测试集精确率:0.3342618384401114

融合模型 训练集召回率:0.909556313993174
融合模型 测试集召回率:0.6

融合模型 训练集f1评分:0.7507042253521128
融合模型 测试集f1评分:0.42933810375670844

融合模型 训练集AUC值:0.8998711887368278
融合模型 测试集AUC值:0.7026079869600651

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值