任务1.2 - 模型构建之集成模型,预测贷款用户是否会逾期
2019-01-05 21:07
831 查看
【任务1.2 - 模型构建之集成模型】
说明:对上一篇Task1.1模型构建,预测贷款用户是否会逾期代码的补充,需在上一篇代码之后运行
构建随机森林、GBDT、XGBoost和LightGBM这4个模型,并对每一个模型进行评分,评分方式任意,例如准确度和auc值。
关键点:4个模型和对应的评分结果
石墨链接 https://shimo.im/docs/jse5ZZhdvEQR4siC
模型构建
#导入库 from sklearn.ensemble import RandomForestClassifier from sklearn.ensemble import GradientBoostingClassifier from xgboost import XGBClassifier from lightgbm import LGBMClassifier import matplotlib.pyplot as plt #4个模型 rf = RandomForestClassifier().fit(x_train, y_train) GBDT = GradientBoostingClassifier().fit(x_train, y_train) XGBoost = XGBClassifier().fit(x_train, y_train) LightGBM = LGBMClassifier().fit(x_train, y_train)
4个模型对应的评分
#放到dict里,后面直接for循环 models = {'RF': rf, 'GBDT': GBDT, 'XGBoost': XGBoost, 'LightGBM': LightGBM} df_result = pd.DataFrame(columns=('Model', 'Accuracy', 'Precision', 'Recall', 'F1 score', 'AUC','AUC1')) row = 0 for name,clf in models.items(): y_test_pred = clf.predict(x_test) acc = metrics.accuracy_score(y_test, y_test_pred) p = metrics.precision_score(y_test, y_test_pred) r = metrics.recall_score(y_test, y_test_pred) f1 = metrics.f1_score(y_test, y_test_pred) y_test_proba = clf.predict_proba(x_test) fpr, tpr, thresholds = metrics.roc_curve(y_test, y_test_proba[:, 1]) auc = metrics.auc(fpr, tpr) auc1 = metrics.roc_auc_score(y_test, y_test_proba[:, 1]) # auc求法2 df_result.loc[row] = [name, acc, p, r, f1, auc,auc1] row += 1 print(df_result)
Model Accuracy Precision Recall F1 score AUC AUC1 0 RF 0.770848 0.601266 0.264624 0.367505 0.718992 0.718992 1 GBDT 0.780659 0.611650 0.350975 0.446018 0.763828 0.763828 2 LightGBM 0.770147 0.570136 0.350975 0.434483 0.757402 0.757402 3 XGBoost 0.785564 0.630542 0.356546 0.455516 0.771363 0.771363
4个模型的ROC曲线
def plot_roc_curve(fpr, tpr, label=None): plt.plot(fpr, tpr, label=label) plt.figure() for name, model in models.items(): proba = model.predict_proba(x_test)[:,1] fpr, tpr, thresholds = metrics.roc_curve(y_test, proba) plot_roc_curve(fpr, tpr, label=name) plt.plot([0, 1], [0, 1], 'k--')# 对角线 plt.axis([0, 1, 0, 1]) plt.xlabel('False Positive Rate') plt.ylabel('True Positive Rate') plt.show()
相关文章推荐
- 【算法实践2】利用金融数据预测用户是否会逾期-(模型构建之集成模型)
- 算法实践(二)【任务1.2 - 模型构建之集成模型】
- 【算法实践】利用金融数据预测用户是否会逾期
- 基于R语言构建的电影评分预测模型
- 用机器学习构建模型,进行信用卡反欺诈预测
- 基于R语言构建的电影评分预测模型
- 『Kaggle』分类任务_决策树&集成模型&DataFrame向量化操作
- 【python】Logistics模型预测银行贷款违约
- 利用 TensorFlow 一步一步构建一个多任务学习模型
- 建模揭秘,第 2 部分: 构建用户模型
- 【Scikit-Learn 中文文档】模型评估: 量化预测的质量 - 模型选择和评估 - 用户指南 | ApacheCN
- 贷款自动审批模型的构建
- 【Scikit-Learn 中文文档】模型评估: 量化预测的质量 - 模型选择和评估 - 用户指南 | ApacheCN
- 【Scikit-Learn 中文文档】30 模型评估: 量化预测的质量 - 模型选择和评估 - 用户指南 | ApacheCN
- 基于R语言的用户征信行为分类预测模型搭建总结
- 一周算法实践---金融贷款逾期模型
- 基于时间序列的用户预测模型
- 建模揭秘----构建用户模型
- 用户贷款风险预测之Top10初体验
- 如何判断LSTM模型中的过拟合和欠拟合 By 机器之心2017年10月02日 11:09 判断长短期记忆模型在序列预测问题上是否表现良好可能是一件困难的事。也许你会得到一个不错的模型技术得分,但了解