《机器学习Python实战》课件 13-项目6 项目拓展 预测客户是否续订定期存款产品_第1页
《机器学习Python实战》课件 13-项目6 项目拓展 预测客户是否续订定期存款产品_第2页
《机器学习Python实战》课件 13-项目6 项目拓展 预测客户是否续订定期存款产品_第3页
《机器学习Python实战》课件 13-项目6 项目拓展 预测客户是否续订定期存款产品_第4页
《机器学习Python实战》课件 13-项目6 项目拓展 预测客户是否续订定期存款产品_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

机器学习

项目6拓展项目——预测客户是否续订定期存款产品16.3预测客户是否续订定期存款产品目录CONTENTS016.3预测客户是否续订定期存款产品任务分析1.背景与目标背景:银行营销数据集(BankMarketingDataset)来源于葡萄牙某银行机构的电话营销活动记录。该数据集记录了客户的基本信息(如年龄、职业、教育程度等)以及营销结果(是否订阅定期存款产品)。目标:基于银行营销数据集,使用朴素贝叶斯分类算法构建预测模型,预测客户是否会续订(订阅)定期存款产品。通过模型的训练和评估,帮助银行精准定位潜在客户,提高营销效率,降低营销成本。数据集说明:bank-full.csv包含45211条记录,16个特征字段和1个目标字段(y)。目标字段y有两个值:yes(已订阅)和no(未订阅)。特征包括:age,job,marital,education,default,balance,housing,loan,contact,day,month,duration,campaign,pdays,previous,poutcome。数据准备1.数据集读取与查看#读取数据importpandasaspd#用pandas打开csv文件df=pd.read_csv('bank-full.csv',sep=';')print('bank文件的数据形状:',df.shape)print('输出数据的前5行:')display(df.head())输出结果:bank文件的数据形状:(45211,17)输出数据的前5行:age:年龄job:职业marital:婚姻状况education:教育程度default:是否违约balance:账户余额housing:房贷loan:个人贷款contact:联系方式duration:通话时长campaign:联系次数poutcome:上次营销结果y:是否订阅(目标变量)图6-20

查看BankMarketing数据集信息数据准备2.样本不平衡分析#根据"y"进行分组group_y=df.groupby(by='y')y_no=dict([xforxingroup_y])['no']y_yes=dict([xforxingroup_y])['yes']print('y=no的样本数量:',y_no.shape[0])print('y=yes的样本数量:',y_yes.shape[0])分析:数据集中y=no有39922条记录,y=yes有5289条记录,两类样本数量严重不平衡。如果不进行处理,模型会偏向多数类(no),导致少数类(yes)的预测效果很差。解决方案:对多数类样本进行欠采样,取y=no的前10000条记录,与全部y=yes记录合并,使两类样本数量相对均衡,提高模型的泛化能力和预测准确率。图6-22

选取数据集的前10行数据样本数据准备3.数据合并与欠采样#合并数据分组并排序data=pd.concat([y_no[:10000],y_yes],axis=0)data=data.sort_index()print('数据集形状:',data.shape)print('输出数据集前10行:')display(data[:10])处理结果:•合并后数据集形状:(15289,17)•y=no样本:10000条•y=yes样本:5289条•两类样本比例约1.89:1•相比原始数据7.55:1的比例,样本分布更加均衡数据准备4.数据转换与编码处理fromsklearn.preprocessingimportLabelEncoder#假设job,marital,education,default,housing,loan,contact,month,poutcome是类别型categorical_cols=['job','marital','education','default','housing','loan','contact','month','poutcome']le_dict={}forcolincategorical_cols:le=LabelEncoder()data[col]=le.fit_transform(data[col])le_dict[col]=le#将目标变量y编码为0/1le_y=LabelEncoder()data['y_encoded']=le_y.fit_transform(data['y'])#'no'->0,'yes'->1编码说明:LabelEncoder将字符串类型的特征转换为数值编码,例如:•job:'admin.'→0'blue-collar'→1'technician'→2...•marital:'divorced'→0'married'→1'single'→2•y:'no'→0'yes'→1共9个类别型字段完成编码转换数据准备5.划分特征与标签特征字段列表(16个):age,job,marital,education,default,balance,housing,loan,contact,day,month,duration,campaign,pdays,previous,poutcome#划分特征X和标签yX=data.drop(columns=['y','y_encoded'])#或者drop其他不用的非特征列y=data['y_encoded']print('特征形状:{},标签形状:{}'.format(X.shape,y.shape))图6-23

类别编码结果高斯朴素贝叶斯建模1.数据集划分与模型训练#拆分数据集为训练集和测试集X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3,random_state=5,stratify=y)#数值特征标准化scaler=StandardScaler()numeric_cols=X_train.select_dtypes(include=['int64','float64']).columnsX_train_num=scaler.fit_transform(X_train[numeric_cols])X_test_num=scaler.transform(X_test[numeric_cols])#对类别列不做标准化X_train_encoded=X_train.copy()X_train_encoded[numeric_cols]=X_train_numX_test_encoded=X_test.copy()X_test_encoded[numeric_cols]=X_test_num#使用高斯朴素贝叶斯拟合数据gnb=GaussianNB()gnb.fit(X_train_encoded,y_train)#输出模型评分print('训练集得分:{:.3f}'.format(gnb.score(X_train_encoded,y_train)))print('测试集得分:{:.3f}'.format(gnb.score(X_test_encoded,y_test)))关键参数说明:•test_size=0.3:30%测试集•random_state=5:随机种子•stratify=y:分层抽样•StandardScaler:标准化数值特征•GaussianNB:高斯朴素贝叶斯图6-24

模型评分结果高斯朴素贝叶斯建模2.模型评估结果训练集得分:0.964测试集得分:0.971结果分析:1.训练集得分0.964,测试集得分0.971,表明模型在训练集和测试集上都表现良好。2.测试集得分略高于训练集得分,说明模型没有出现过拟合现象,泛化能力强。3.高斯朴素贝叶斯适用于连续型特征的分类任务,假设特征之间相互独立。4.通过StandardScaler标准化数值特征后,模型性能得到了保障。模型预测1.选取测试样本进行预测#假设抽取3条测试样本test_samples=X_test_encoded.iloc[:3,:]true_labels=y_test.iloc[:3]print('测试样本:')display(test_samples)#模型预测pred_encoded=gnb.predict(test_samples)pred_original=le_y.inverse_transform(pred_encoded)print('真实标签:',le_y.inverse_transform(true_labels))print('预测标签:',pred_original)图6-25

模型预测结果项目小结1.数据读取使用pandas读取bank-full.csv数据集,共45211条记录、17个字段,目标变量为y(yes/no)。2.样本平衡发现y=no(39922)与y=yes(5289)严重不平衡,对多数类欠采样取前10000条与全部yes合并。3.数据编码使用LabelEncoder对9个类别型特征进行数值编码,目标变量y编码为0(no)和1(yes)。4.特征标准化使用St

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论