参考网址:http://archive.ics.uci.edu/ml/datasets/Bank+Marketing
银行营销数据集 下载:数据文件夹,数据集描述摘要:该数据与葡萄牙银行机构的直接营销活动(电话)有关。分类目标是预测客户是否会订购定期存款(变量y)。 | |
---|---|
**数据集特征: ** | 多元 | 实例数: | 45211 | 区: | 商业 |
---|---|---|---|---|---|
属性特征: | 真实 | 属性数量: | 17 | 捐赠日期 | 2012-02-14 |
相关任务: | 分类 | 缺少价值观? | N / A | 网页点击次数: | 675101 |
资源:
[Moro et al。,2014] S. Moro,P。Cortez和P. Rita。一种预测银行电话营销成功的数据驱动方法。决策支持系统,Elsevier,62:22-31,2014年6月
数据集信息:
该数据与葡萄牙银行机构的直接营销活动有关。营销活动基于电话。通常,如果产品(银行定期存款)是(’是’)或不是(’否’)订阅,则需要多个联系到同一客户。 有四个数据集: 1)bank-additional-full.csv包含所有示例(41188)和20个输入,按日期排序(从2008年5月到2010年11月),非常接近于[Moro et al。,2014]中分析的数据] 2)bank-additional.csv,其中10%的示例(4119),从1)中随机选择,以及20个输入。 3)bank-full.csv包含所有示例和17个输入,按日期排序(此数据集的旧版本具有较少的输入)。 4)bank.csv具有10%的示例和17个输入,从3中随机选择(具有较少输入的该数据集的旧版本)。 提供最小的数据集以测试计算要求更高的机器学习算法(例如,SVM)。 分类目标是预测客户是否订阅(是/否)定期存款(变量y)。
属性信息:
输入变量: #bank客户数据: 1 - 年龄(数字) 2 - 工作:工作类型(分类:’管理员’,’蓝领’,’企业家’,’女佣’,’管理’,’退休’ ,’自雇人员’,’服务’,’学生’,’技师’,’失业’,’未知’) 3 - 婚姻:婚姻状况(分类:’离婚’,’已婚’,’单身’,’未知’;注意:’离婚’意味着离婚或丧偶) 4 - 教育(分类:’basic.4y’,’basic.6y’,’basic.9y’,’high.school’,’illiterate’,’professional.course ‘,’university.degree’,’未知’) 5 - 默认:默认信用?(分类:’不’,’ 是’,’未知’)
6 - 住房:有住房贷款吗?(分类:’不’,’是’,’未知’) 7 - 贷款:有个人贷款吗?(分类:’不’,’是’,’未知’) #与当前广告系列的最后一次联系相关: 8 - 联系人:联系人沟通类型(分类:’手机’,’电话’) 9个月:上一个联系月份(分类:’jan’,’feb’,’ mar’,…,’nov’,’dec’) 10 - day_of_week:一周的最后一个联系日(分类:’mon’,’tue’,’wed’,’thu’,’fri’) 11 -持续时间:上次联系持续时间,以秒为单位(数字)。重要提示:此属性会严重影响输出目标(例如,如果持续时间= 0,则y =’否’)。然而,在执行呼叫之前不知道持续时间。此外,在通话结束后,显然已知y。从而,此输入仅应包含在基准目的中,如果打算采用现实的预测模型,则应将其丢弃。 #其他属性: 12 - 广告系列:此广告系列期间和此客户端执行的联系人数量(数字,包括最后一次联系) 13 - pdays:上一次广告系列上次联系客户端后经过的天数(数字; 999表示客户端不是先前已联系过) 14 - 上一篇:此活动之前和此客户之间执行的联系人数量(数字)
15 - poutcome:上一次营销活动的结果(分类:’失败’,’不存在’,’成功’)#social
and economic上下文属性 16 - emp.var.rate:就业变化率 - 季度指标(数字) 17 - cons.price.idx:消费者价格指数 - 月度指标(数字) 18 - cons.conf.idx:消费者信心指数 - 月度指标(数字) 19 - euribor3m:euribor 3个月费率 - 每日指标(数字) 20 - nr.employed:员工人数 - 季度指标(数字) 输出变量(需要)目标): 21 - y - 客户是否订购了定期存款?(二进制:’是’,’不’)
相关论文:
S. Moro,P。Cortez和P. Rita。一种预测银行电话营销成功的数据驱动方法。决策支持系统,Elsevier,62:22-31,2014年6月 S. Moro,R。Laureano和P. Cortez。使用数据挖掘进行银行直复营销:CRISP-DM方法论的应用。在P. Novais等人。(编辑),欧洲模拟与建模会议论文集 - ESM’2011,第117-121页,吉马良斯,葡萄牙,2011年10月.EUROSIS。[bank.zip]
引文要求:
该数据集可供公众研究。细节在[Moro等,2014]中描述。 如果您打算使用此数据库,请包括此引文: [Moro et al。,2014] S. Moro,P。Cortez和P. Rita。一种预测银行电话营销成功的数据驱动方法。决策支持系统,Elsevier,62:22-31,2014年6月
具体实践:
1 .查看数据:
import pandas as pd
input_path = "E:\分类问题\数据集\\bank-additional\\bank-additional\\bank-additional-full.csv"
data = pd.read_csv(input_path, sep=';')
data.info()
data.describe()
数据查看结果:
D:\1b\Anoconda\setup\set\envs\tensorflow\python.exe E:/python_workspace/ML/TextClassification/bankClassification.py
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 41188 entries, 0 to 41187
Data columns (total 21 columns):
age 41188 non-null int64
job 41188 non-null object
marital 41188 non-null object
education 41188 non-null object
default 41188 non-null object
housing 41188 non-null object
loan 41188 non-null object
contact 41188 non-null object
month 41188 non-null object
day_of_week 41188 non-null object
duration 41188 non-null int64
campaign 41188 non-null int64
pdays 41188 non-null int64
previous 41188 non-null int64
poutcome 41188 non-null object
emp.var.rate 41188 non-null float64
cons.price.idx 41188 non-null float64
cons.conf.idx 41188 non-null float64
euribor3m 41188 non-null float64
nr.employed 41188 non-null float64
y 41188 non-null object
dtypes: float64(5), int64(5), object(11)
memory usage: 6.6+ MB
age duration campaign pdays previous \
count 41188.00000 41188.000000 41188.000000 41188.000000 41188.000000
mean 40.02406 258.285010 2.567593 962.475454 0.172963
std 10.42125 259.279249 2.770014 186.910907 0.494901
min 17.00000 0.000000 1.000000 0.000000 0.000000
25% 32.00000 102.000000 1.000000 999.000000 0.000000
50% 38.00000 180.000000 2.000000 999.000000 0.000000
75% 47.00000 319.000000 3.000000 999.000000 0.000000
max 98.00000 4918.000000 56.000000 999.000000 7.000000
emp.var.rate cons.price.idx cons.conf.idx euribor3m nr.employed
count 41188.000000 41188.000000 41188.000000 41188.000000 41188.000000
mean 0.081886 93.575664 -40.502600 3.621291 5167.035911
std 1.570960 0.578840 4.628198 1.734447 72.251528
min -3.400000 92.201000 -50.800000 0.634000 4963.600000
25% -1.800000 93.075000 -42.700000 1.344000 5099.100000
50% 1.100000 93.749000 -41.800000 4.857000 5191.000000
75% 1.400000 93.994000 -36.400000 4.961000 5228.100000
max 1.400000 94.767000 -26.900000 5.045000 5228.100000
Process finished with exit code 0
2. 缺失值处理: «««< HEAD =======
查看unknown值的变量
for i in data.columns:
if type(data[i][0]) is str:
print("unknown value count in "+i+":\t" + str(data[data[i]=="unknown"]['y'].count()))
print(data.columns)第一行的数据
"""
Index(['age', 'job', 'marital', 'education', 'default', 'housing', 'loan',
'contact', 'month', 'day_of_week', 'duration', 'campaign', 'pdays',
'previous', 'poutcome', 'emp.var.rate', 'cons.price.idx',
'cons.conf.idx', 'euribor3m', 'nr.employed', 'y'],
dtype='object')
"""
结果
unknown value count in job: 330
unknown value count in marital: 80
unknown value count in education: 1731
unknown value count in default: 8597
unknown value count in housing: 990
unknown value count in loan: 990
unknown value count in contact: 0
unknown value count in month: 0
unknown value count in day_of_week: 0
unknown value count in poutcome: 0
unknown value count in y: 0
f63106675d03661cc06186a61af504096d689591