利用Bank Marketing数据集,实现逻辑回归二分类
时间: 2024-03-03 17:43:12 浏览: 154
「二分类算法」提供银行精准营销解决方案数据集
5星 · 资源好评率100%
1. 数据集简介
Bank Marketing数据集是一个关于银行市场营销活动的数据集,包含了一系列客户的特征和目标变量。目标变量是二分类变量,指示客户是否订阅了银行的定期存款。
数据集包含了45211个样本和17个特征:
- age:年龄
- job:职业
- marital:婚姻状况
- education:教育程度
- default:是否有信用违约记录
- balance:账户余额
- housing:是否有住房贷款
- loan:是否有个人贷款
- contact:联系方式
- day:最后一次联系的日期
- month:最后一次联系的月份
- duration:最后一次联系的通话时长
- campaign:此次活动期间与该客户联系的次数
- pdays:距离上次联系该客户的时间
- previous:此次活动期间与该客户联系的次数
- poutcome:上次活动的结果
- y:是否订阅定期存款
2. 数据集预处理
首先需要将数据集导入Python中,并进行数据预处理。具体包括以下几个步骤:
- 导入必要的库和数据集
- 查看数据集的基本信息、缺失值和重复值
- 对非数值型变量进行编码
- 将数据集划分为训练集和测试集
代码如下:
```python
# 导入必要的库和数据集
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
bank = pd.read_csv('bank.csv', delimiter=';')
# 查看数据集的基本信息、缺失值和重复值
print(bank.info())
print(bank.isnull().sum())
print(bank.duplicated().sum())
# 对非数值型变量进行编码
le = LabelEncoder()
bank['job'] = le.fit_transform(bank['job'])
bank['marital'] = le.fit_transform(bank['marital'])
bank['education'] = le.fit_transform(bank['education'])
bank['default'] = le.fit_transform(bank['default'])
bank['housing'] = le.fit_transform(bank['housing'])
bank['loan'] = le.fit_transform(bank['loan'])
bank['contact'] = le.fit_transform(bank['contact'])
bank['month'] = le.fit_transform(bank['month'])
bank['poutcome'] = le.fit_transform(bank['poutcome'])
bank['y'] = le.fit_transform(bank['y'])
# 将数据集划分为训练集和测试集
X = bank.iloc[:, :-1]
y = bank.iloc[:, -1]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)
```
3. 构建逻辑回归模型
构建逻辑回归模型需要完成以下几个步骤:
- 导入必要的库
- 创建逻辑回归模型对象
- 将训练集数据拟合到模型中
- 使用测试集数据评估模型的性能
代码如下:
```python
# 导入必要的库
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, confusion_matrix, classification_report
# 创建逻辑回归模型对象
logreg = LogisticRegression()
# 将训练集数据拟合到模型中
logreg.fit(X_train, y_train)
# 使用测试集数据评估模型的性能
y_pred = logreg.predict(X_test)
print('Accuracy score:', accuracy_score(y_test, y_pred))
print('Confusion matrix:\n', confusion_matrix(y_test, y_pred))
print('Classification report:\n', classification_report(y_test, y_pred))
```
4. 结果分析
运行上述代码后,可以得到模型的性能指标。以本例为例,模型的准确率为89.8%,混淆矩阵如下:
```
[[11574 380]
[ 1055 658]]
```
可以看出,在测试集上,模型预测正确的正样本有658个,预测错误的正样本有1055个;预测正确的负样本有11574个,预测错误的负样本有380个。同时,分类报告可以帮助我们更好地了解模型的性能:
```
precision recall f1-score support
0 0.92 0.97 0.94 11954
1 0.63 0.38 0.47 1713
accuracy 0.90 13667
macro avg 0.77 0.68 0.71 13667
weighted avg 0.88 0.90 0.89 13667
```
可以看出,模型的精确度为0.63,召回率为0.38,F1值为0.47。这表明模型的性能有待进一步提高。
阅读全文