头歌——机器学习——集成学习案例

第1关:基于集成学习模型的应用案例

任务描述

本次任务我们将会使用银行营销数据集(来源于UCI数据集:UCI Machine Learning Repository ),该数据集共45211条数据,涉及葡萄牙银行机构的营销活动,通过一些与葡萄牙银行机构营销活动(电话)有关的数据,来预测客户是否会订阅定期存款(变量Y)。这在真实场景下是有意义的,可以通过这个预测结果对未来的工作进行一个初步规划,即对某些用户是否会订阅定期存款提供一个预测参照; 我们整个课程会建立一个分类模型,实现是否订阅产品的预测,该过程包括数据处理与特征工程,模型选取与训练,指标衡量与测试几个部分。

相关知识

数据处理与特征工程

首先,我们来了解一下我们的数据,从而进一步明确任务,并作出针对性的分析。银行营销数据集是一个分类问题,目的是确认客户是否会订阅银行推出的产品,对应我们所需要的标签,这在数据集中以yes,no来进行表示;除此之外,数据包含了用于判断该决定的相关信息,对应我们所需要的特征,这些特征一共有16个。特征与标签的表示如下:

  • Age:年龄
  • Job:工作,工作类型(分类:“行政管理”、“蓝领”、“企业家”、“女佣”、“管理”、 “退休”、“个体户”、“服务”、“学生”、“技术员”、“失业”、“未知”)
  • Marital:婚姻,婚姻状况(分类:离婚,已婚,单身,未知)(注:“离婚”指离婚或丧偶)
  • Education:教育(分类:‘基本.4y’,‘Basy.6y’,‘Basy.9y’’,‘Health.学校’,‘文盲’,‘专业’课程,‘大学学位’,‘未知’)
  • Default:违约,信用违约吗?(分类:“不”,“是”,“不知道”)
  • Housing:房,有住房贷款吗?(分类:“不”,“是”,“不知道”)
  • Loan:贷款,有个人贷款吗?((分类:“不”,“是”,“不知道”)
  • Contact:接触方式(分类:“移动电话”,“固定电话”)
  • Month:月,最后一个联系月份(分类:‘MAR’,…,‘NOV’,’DEC’)
  • Day_of_week:每周的天数,最后一周的联系日(分类):“Mon”、“Tee”、“We”、“TUU”、“FRI”
  • Duration:持续时间,最后的接触持续时间,以秒为单位
  • Campaign:在这次战役和这个客户联系的执行人数量
  • Pdays:客户上次从上次活动中联系过去之后的天数(数字;999表示以前没有联系过客户)
  • Previous:本次活动之前和本客户端的联系人数(数字)
  • Proutcome:前一次营销活动的结果(分类:失败,不存在,成功)

Y -客户是否会定期存款?“是”、“否” 我们可以通过以下代码,进行数据预览:

  •  import numpy as np
  • import pandas as pd
  • import matplotlib.pyplot as plt
  • from matplotlib.pyplot import MultipleLocator
  • import seaborn as sns
  • data_path ='/data/shixunfiles/e6b0ca77f3f200ec5428e04dd104da53_1612443396928.csv'
  • df = pd.read_csv(data_path,sep=';')
  • print(df.head(5)) # 用于查看前五行数据
  • df.info()
  • df.describe()# 用于查看各个特征的统计分布信息 

结果如下图:

,

,

从上述对数据的预览我们可以看到得到这样的几个问题:

  • 字符型特征中存在unkwown值,unknown值是缺失值。
  • 部分特征为字符串格式,无法放到模型训练,后期需要该字段需要进行离散型特征编码。
  • 我们观察到days(最后一次联系的时间(几号))和month(最后一次联系的时间(月份))与pdays(距离上次活动最后一次联系该客户,过去了多久(999表示没有联系过))之间存在特征重合,因此我们之后使用中只保留pdays特征即可。

在分析出这些问题后我们使用代码逐步对数据进行处理:

  • #查找字符型属性缺失情况
  • for col in df.columns:
  • if df[col].dtype == object:
  • print("Percentage of \"unknown\" in %s:" %col ,df[df[col] == "unknown"][col].count(),"/",df[col].count())

结果输出如图:

,

以上就是对缺省值进行的处理,在处理完之后我们便可以开始进行探究特征与结果之间的相互联系。 首先我们先对label进行分析:

  • # 将label编码
  • df['y'] = df['y'].replace(to_replace=['no', 'yes'], value=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花来❀勿Q

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值