0. 写在前面
作为一个重度社恐的老萌新,决定单枪匹马的来参加这个练习赛,也是我参加的第一个此类比赛。
本次练习赛虽然最终成绩真的很普通,欢迎提提高意见,非常感谢。
不过收获真的很多,尝试了很多没接触过的东西。
希望有同学看到这段话,带我打打更大比赛!我可以
1.问题描述
数据选自UCI机器学习库中的「银行营销数据集(Bank Marketing Data Set)」
这些数据与葡萄牙银行机构的营销活动相关。这些营销活动以电话为基础,一般,银行的客服人员需要联系客户至少一次,以此确认客户是否将认购该银行的产品(定期存款)。
因此,与该数据集对应的任务是「分类任务」,「分类目标」是预测客户是(' 1 ')或者否(' 0 ')购买该银行的产品。
2.字段描述
字段说明
NO | 字段名称 | 数据类型 | 字段描述 |
---|---|---|---|
1 | ID | Int | 客户唯一标识 |
2 | age | Int | 客户年龄 |
3 | job | String | 客户的职业 |
4 | marital | String | 婚姻状况 |
5 | education | String | 受教育水平 |
6 | default | String | 是否有违约记录 |
7 | balance | Int | 每年账户的平均余额 |
8 | housing | String | 是否有住房贷款 |
9 | loan | String | 是否有个人贷款 |
10 | contact | String | 与客户联系的沟通方式 |
11 | day | Int | 最后一次联系的时间(几号) |
12 | month | String | 最后一次联系的时间(月份) |
13 | duration | Int | 最后一次联系的交流时长 |
14 | campaign | Int | 在本次活动中,与该客户交流过的次数 |
15 | pdays | Int | 距离上次活动最后一次联系该客户,过去了多久(999表示没有联系过) |
16 | previous | Int | 在本次活动之前,与该客户交流过的次数 |
17 | poutcome | String | 上一次活动的结果 |
18 | y | Int | 预测客户是否会订购定期存款业务 |
3.数据预处理
这部分内容比较冗长,虽然不是重点但仔细了解指标,有助于下一节的特征工程,对结果有很大帮助。
3.1数据概览
import numpy as np
import pandas as pd
#导入数据集
def load_data():
home_path = r"..." #输入数据所在位置
train_path = os.path.join(home_path, "train_set.csv")
test_path = os.path.join(home_path, "test_set.csv")
train_data = pd.read_csv(train_path)
test_data = pd.read_csv(test_path)
return train_data, test_data
trainData, testData = load_data()
print('train Data:{} testData:{}'.format(trainData.shape, testData.shape))
print(trainData.describe())
训练集(25317, 18),测试集(10852, 17)
age | balance | day | duration | campaign | pdays | previous | y | |
count | 25317.000000 |