决策树:案例实战 -信用卡精准营销模型

决策树:案例实战 -信用卡精准营销模型

数据

(信用卡精准营销模型.xlsx)
特征变量:年龄,月收入,月消费,性别,月消费/月收入;
目标变量:响应;
在这里插入图片描述

工具

jupyter notebook

建模

(1)读取代码所在文件夹中的“信用卡精准营销模型.xlsx”;

import pandas as pd
df = pd.read_excel(r'信用卡精准营销模型.xlsx')
df.head()

在这里插入图片描述
2)提取特征变量和目标变量;

X = df.drop(columns = '响应')
y = df['响应']

(3)划分训练集和测试集数据(其中

test_size=0.2);
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2, random_state=123)

4)建立决策树模型(使用默认参数);

from sklearn.tree import DecisionTreeClassifier
model = DecisionTreeClassifier()
model.fit(X_train, y_train)

(5)预测数据结果(预测测试集结果),并通过DataFrame进行展示前5行数据;

y_pred = model.predict(X_test)
a = pd.DataFrame()
a['预测值'] = list(y_pred)
a['实际值'] = list(y_test)
a.head(5)

在这里插入图片描述
6)预测概率,并通过DataFrame进行展示前5行数据;

y_pred_proba = model.predict_proba(X_test)
b = pd.DataFrame(y_pred_proba,columns=['响应概率','不响应概率'])
b.head(5)

在这里插入图片描述
7)查看模型预测准确度;

from sklearn.metrics import accuracy_score
score = accuracy_score(y_pred,y_test)
score

在这里插入图片描述
(8)绘制模型ROC曲线;

from sklearn.metrics import roc_curve
fpr,tpr,thres = roc_curve(y_test,y_pred_proba[:,1])
a = pd.DataFrame()
a['阈值'] = list(thres)
a['假警报率'] = list(fpr)
a['命中率'] = list(tpr)
import matplotlib.pyplot as plt 
plt.plot(fpr, tpr)
plt.show()

在这里插入图片描述
(9)计算模型AUC值;

from sklearn.metrics import roc_auc_score
score = roc_auc_score(y_test,y_pred_proba[:,1])
score

在这里插入图片描述
(10)查看此时模型各个特征的特征重要性;

features = X.columns
importances = model.feature_importances_
importances_df = pd.DataFrame()
importances_df['特征名称'] = features
importances_df['特征重要性'] = importances
importances_df.sort_values("特征重要性",ascending = False)

在这里插入图片描述

决策树的可视化

使用Graphviz

from sklearn.tree import export_graphviz
import graphviz
import os
os.environ['PATH'] = os.pathsep + r'D:\Grapgviz\Graphviz\bin'
dot_data = export_graphviz(model, out_file=None, class_names = ['0','1'])
graph = graphviz.Source(dot_data)
graph.render("result")

在这里插入图片描述

—关于Graphviz的安装见后一篇博客—

参数调优

from sklearn.model_selection import GridSearchCV
parameters = {'max_depth': [1,3,5,7,9]}
model = DecisionTreeClassifier()
grid_search = GridSearchCV(model,parameters,scoring='roc_auc',cv=5)
grid_search.fit(X_train,y_train)
grid_search.best_params_

在这里插入图片描述

model = DecisionTreeClassifier(max_depth=7)
model.fit(X_train,y_train)
y_pred = model.predict(X_test)
from sklearn.metrics import accuracy_score
score = accuracy_score(y_pred,y_test)
score

在这里插入图片描述

y_pred_proba = model.predict_proba(X_test)
from sklearn.metrics import roc_auc_score
score_new = roc_auc_score(y_test.values,y_pred_proba[:,1])
score_new

在这里插入图片描述

print("调优前AUC值:"+ str(score))
print("调优后AUC值:"+ str(score_new))

在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用决策树和决策森林进行信用分析的案例代码: ```python # 导入必要的库 import pandas as pd import numpy as np from sklearn.tree import DecisionTreeClassifier from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score # 读取数据 data = pd.read_csv('credit_data.csv') # 数据预处理 data = data.dropna() features = data[['income','age','loan']] target = data['default'] # 划分数据集 X_train, X_test, y_train, y_test = train_test_split(features, target, test_size=0.3, random_state=42) # 使用决策树进行建模 dt_model = DecisionTreeClassifier(max_depth=3) dt_model.fit(X_train, y_train) dt_pred = dt_model.predict(X_test) dt_accuracy = accuracy_score(y_test, dt_pred) # 使用决策森林进行建模 rf_model = RandomForestClassifier(n_estimators=100, max_depth=3) rf_model.fit(X_train, y_train) rf_pred = rf_model.predict(X_test) rf_accuracy = accuracy_score(y_test, rf_pred) # 打印结果 print('决策树确率:', dt_accuracy) print('决策森林确率:', rf_accuracy) ``` 这段代码使用了决策树和决策森林两种算法来进行信用分析,其中: - 决策树模型使用`DecisionTreeClassifier`类进行建模,并将最大深度设置为3; - 决策森林模型使用`RandomForestClassifier`类进行建模,并将树的数量设置为100,最大深度设置为3; - 使用`train_test_split`函数将数据集划分为训练集和测试集; - 使用`accuracy_score`函数计算模型确率,并将结果打印输出。 注意:这段代码中的数据集`credit_data.csv`需要根据实际情况进行替换。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值