logo
1
0
Login
更新 README.md 中的依赖说明,将 pyppeteer 替换为 playwright

神经网络实验: 银行营销数据集

概述:

  • 项目用途: 该文件夹用于金融科技(FinTech)学生的神经网络与机器学习实验,基于“银行营销”数据集(已经按训练/验证/测试拆分,放在 data/ 目录下)。

研究问题(建议):

  • 目标预测: 能否准确预测客户是否会认购定期存款(目标变量为 yyes/no)。
  • 特征重要性: 哪些特征对认购决策影响最大(例如 duration, balance, poutcome 等)?
  • 模型比较: 比较不同模型(逻辑回归、决策树/随机森林、梯度提升树、简单神经网络等)在此任务上的表现。

数据目录:

  • data/train.csv : 训练集
  • data/test.csv : 测试集
  • data/val_unlabeled.csv : 验证/未标注集(可用于半监督或上机考察)

数据字典:

  • age: 年龄(数值) — 客户年龄,整数,通常 18–95。
  • job: 职业(类别) — 如 admin., blue-collar, entrepreneur, management, retired, student 等;含 unknown 表示未知。
  • marital: 婚姻状况(类别) — 如 married, single, divorced
  • education: 教育程度(类别) — 如 primary, secondary, tertiary, unknown
  • default: 是否有违约记录(类别) — yesno
  • balance: 年均账户余额(数值,欧元) — 可为负值;建模前请查看极端值并考虑截断或变换。
  • housing: 是否有住房贷款(类别) — yes / no
  • loan: 是否有个人贷款(类别) — yes / no
  • contact: 联系方式(类别) — unknown, telephone, cellular
  • day: 当月最后一次联系的日(数值) — 1–31。
  • month: 最后一次联系的月份(类别) — 三字母缩写 jandec
  • duration: 最后一次联系通话时长(数值,秒) — 对 y 有强影响,但注意在实际预测中通话可能尚未发生。
  • campaign: 本次活动中联系次数(数值) — 当前活动期间的联系次数。
  • pdays: 自上次接触以来的天数(数值) — 未接触为 -1
  • previous: 之前联系次数(数值) — 非负整数。
  • poutcome: 上一次活动结果(类别) — unknown, other, failure, success
  • y: 目标变量(类别) — yes 表示认购,no 表示未认购。

建议实验与分析流程:

  • 数据探索: 缺失值与异常值检测、类别分布、数值特征的分位数和箱线图,重点检查 balanceduration 的极端值。
  • 特征工程: 类别编码(one-hot / target encoding)、数值标准化/归一化、构造交互项或分箱(例如 agebalance)。
  • 样本不均衡处理: 若 y 严重不平衡,尝试过采样/欠采样、加权损失、或评价以 AUC/F1 为主。
  • 基线模型: 逻辑回归(带正则化)、决策树、随机森林、XGBoost/LightGBM、以及一个简单的多层感知机(MLP)。
  • 模型评估: 使用交叉验证或验证集,主要指标包括 准确率 (Accuracy)精确率 (Precision)召回率 (Recall)F1-scoreROC AUC;同时查看混淆矩阵和校准曲线。
  • 特征重要性与解释: 使用树模型的特征重要性、SHAP 值或 LIME 来分析哪些特征影响最大,关注 duration 的偏倚问题并在报告中说明。
  • 复现实验: 固定随机种子、记录依赖(requirements.txt)、用 git 提交 Notebook 与结果。

交付物与提交要求:

  • 代码/笔记本: 提交一个包含数据预处理、建模、评估和结论的 Jupyter Notebook(如 bank_marketing_experiment.ipynb)。
  • PDF 报告: 使用 jupyter nbconvert --to webpdf 将 Notebook 导出为 PDF(见下方说明以确保环境正确)。
  • 版本控制: 使用 git 管理作业,提交时包含 Notebook、任何脚本、以及 requirements.txt。示例提交命令:
git add . git commit -m "Add bank marketing experiment notebook and requirements" git push

如何生成可打印的 PDF(建议):

  • 首选:使用 nbconvertwebpdf 导出(通常生成效果较好)。在命令行中运行:
jupyter nbconvert --to webpdf bank_marketing_experiment.ipynb
  • 依赖与注意事项:webpdf 需要 Chromium/Chrome 可用并可能需要 playwright。如果遇到问题,可以:

    • 安装依赖: pip install playwright nbconvert[webpdf]
    • 或者在没有浏览器支持时使用 LaTeX 路径 --to pdf,此方式需安装 TeX 发行版(如 TeX Live 或 MikTeX)。

建议的 Python 依赖(示例):

  • 在项目根目录创建 requirements.txt,包含(示例):
pandas numpy scikit-learn matplotlib seaborn notebook jupyter nbconvert[webpdf] pyppeteer lightgbm xgboost shap
  • 安装示例(Bash):
python -m pip install -r requirements.txt

实现与实验小贴士:

  • duration 警告: duration 在数据集中对 y 预测极强,但在真实任务中通话发生之前不可知。做模型和报告时请分别展示“包含 duration”与“不包含 duration”两类结果。
  • 可重复性: 在 Notebook 开头固定随机种子(numpy、scikit-learn、torch 等),并说明软件环境与包版本。
  • 结果可视化: 提供 ROC 曲线、PR 曲线、特征重要性条形图和 SHAP 值可视化。

评估标准(教师参考):

  • 实验完整性: 数据预处理、验证方法与评价指标是否合理。
  • 模型比较: 是否对多种模型进行了公平比较(相同的特征集与评估协议)。
  • 解释性: 是否讨论了特征影响、偏差来源(例如 duration)及商业意义。
  • 可复现性与代码质量: Notebook 是否能复现结果、是否包含环境说明与依赖文件。

-- 祝你实验顺利!

About

基于银行营销数据的实验