news 2026/5/1 13:18:42

大数据课程实践:基于朴素贝叶斯算法的购车意向预测分析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
大数据课程实践:基于朴素贝叶斯算法的购车意向预测分析

一、项目概述与背景

1.1 项目简介

本项目是《大数据数据分析与应用》课程的实践环节,旨在通过真实的汽车客户数据集,应用朴素贝叶斯分类算法构建购车意向预测模型,展示从数据预处理到模型评估的完整机器学习流程。

1.2 技术栈

  • 编程语言:Python 3

  • 开发环境:Jupyter Notebook

  • 核心库:pandas, numpy, scikit-learn

  • 算法:高斯朴素贝叶斯(GaussianNB)

1.3 项目目标

  1. 掌握数据处理与特征工程的基本方法

  2. 理解朴素贝叶斯算法的原理与实现

  3. 完成一个端到端的机器学习项目

  4. 分析模型性能并提出改进方案


二、数据准备与探索性分析

2.1 数据加载与查看

输出结果:

  • 数据形状:(30, 7) - 共30条记录,7个特征

  • 特征包括:user_id, age, gender, annual_income, marital_status, is_local, buy_car_sign

2.2 数据分布统计

1. 年龄分布分析

text

30- 9人(30.0%) 31-40 8人(26.7%) 41-50 7人(23.3%) 51+ 6人(20.0%)

2. 性别分布

text

男性:63.3% 女性:36.7%

3. 收入分布

python

income_dist = data['annual_income'].value_counts() print("年收入分布:") print(income_dist)

text

21-40w:15人(50.0%) 41w+:8人(26.7%) 10-20w:7人(23.3%)

4. 目标变量分布

python

target_dist = data['buy_car_sign'].value_counts() print("购车意向分布:") print(f"无购车意向:{target_dist['否']}人") print(f"有购车意向:{target_dist['是']}人")

text

无购车意向:16人(53.3%) 有购车意向:14人(46.7%)

2.3 初步数据洞察

通过上述分析发现:

  • 数据集规模较小,可能影响模型泛化能力

  • 特征多为分类变量,需要进行编码转换

  • 目标变量相对平衡,无需进行过采样或欠采样


三、特征工程与数据预处理

3.1 特征与标签分离

3.2 类别特征编码

由于朴素贝叶斯算法需要数值输入,使用OrdinalEncoder进行有序编码:

编码映射关系:

text

age: [(0, '30-'), (1, '31-40'), (2, '41-50'), (3, '51+')] gender: [(0, 'female'), (1, 'male')] annual_income: [(0, '10-20w'), (1, '21-40w'), (2, '41w+')] marital_status: [(0, '否'), (1, '是')] is_local: [(0, '否'), (1, '是')]

3.3 数据集划分


四、模型构建与训练

4.1 高斯朴素贝叶斯模型原理

朴素贝叶斯算法基于贝叶斯定理,假设特征之间相互独立。对于连续特征,高斯朴素贝叶斯假设每个类别的特征服从正态分布:

P(xi∣y)=12πσy2exp⁡(−(xi−μy)22σy2)P(xi​∣y)=2πσy2​​1​exp(−2σy2​(xi​−μy​)2​)

4.2 模型训练


五、模型评估与结果分析

5.1 基础性能评估

python

# 在测试集上评估模型 test_accuracy = model.score(test_x, test_y) train_accuracy = model.score(train_x, train_y) print(f"训练集准确率:{train_accuracy:.2%}") print(f"测试集准确率:{test_accuracy:.2%}")

实际运行结果:

text

训练集准确率:62.50% 测试集准确率:50.00%

5.2 详细分类报告

python

# 生成预测结果 y_pred = model.predict(test_x) # 输出分类报告 print("朴素贝叶斯分类报告:") print("=" * 50) print(classification_report(test_y, y_pred, target_names=['不购车', '购车']))

分类报告结果:

text

朴素贝叶斯分类报告: ================================================== precision recall f1-score support 不购车 0.50 0.67 0.57 3 购车 0.50 0.33 0.40 3 accuracy 0.50 6 macro avg 0.50 0.50 0.49 6 weighted avg 0.50 0.50 0.49 6

5.3 性能指标解读

  1. 准确率(Accuracy):50.00%

    • 模型整体预测正确的比例

    • 当前结果与随机猜测相当

  2. 精确率(Precision)

    • "不购车"类别:50.00%(预测为不购车的客户中,实际不购车的比例)

    • "购车"类别:50.00%(预测为购车的客户中,实际购车的比例)

  3. 召回率(Recall)

    • "不购车"类别:66.67%(实际不购车的客户中,被正确预测的比例)

    • "购车"类别:33.33%(实际购车的客户中,被正确预测的比例)

5.4 性能分析

模型性能不理想的主要原因:

  1. 数据量不足:仅30条样本,6条测试样本,统计意义有限

  2. 特征信息有限:现有特征可能无法充分区分购车意向

  3. 特征独立性假设:现实中的特征往往存在相关性

  4. 编码方式影响:Ordinal编码可能引入错误的序关系


六、模型应用与预测实例

6.1 新客户预测

python

# 定义新客户特征 new_customer_features = { 'age': '31-40', 'gender': 'female', 'annual_income': '21-40w', 'marital_status': '否', 'is_local': '是' } # 转换为模型输入格式 new_customer_array = [[ new_customer_features['age'], new_customer_features['gender'], new_customer_features['annual_income'], new_customer_features['marital_status'], new_customer_features['is_local'] ]] # 特征编码 new_customer_encoded = encoder.transform(new_customer_array) # 进行预测 prediction = model.predict(new_customer_encoded) print(f"新客户购车意向预测结果:{prediction[0]}")

预测结果:

text

新客户购车意向预测结果:否

6.2 预测概率分析

python

# 获取预测概率 prediction_proba = model.predict_proba(new_customer_encoded) print("预测概率详情:") for i, class_name in enumerate(model.classes_): probability = prediction_proba[0][i] print(f"{class_name}({['不购车','购车'][i]})的概率:{probability:.2%}")

概率分布:

text

预测概率详情: 否(不购车)的概率:84.61% 是(购车)的概率:15.39%

6.3 业务解读

对于该女性客户:

  • 模型预测其无购车意向的置信度较高(84.61%)

  • 可能原因:年龄31-40岁,收入中等,未婚状态

  • 业务建议:可提供试驾体验或针对性促销,激发购车兴趣


七、项目总结与改进建议

7.1 项目成果总结

  1. 技术流程完整性:完成了数据探索、预处理、建模、评估、预测的全流程

  2. 算法理解深入:深入理解了朴素贝叶斯的原理、假设和局限性

  3. 实践技能提升:掌握了scikit-learn库的使用和模型评估方法

  4. 问题分析能力:学会了分析模型性能不足的原因并提出改进方案

7.2 改进方案建议

1. 数据层面改进

python

# 建议收集更多特征 suggested_features = [ '现有车辆数', '家庭成员数', '通勤距离', '职业类型', '教育程度', '购车预算', '品牌偏好', '车型偏好' ]

2. 特征工程优化

  • 尝试One-Hot编码替代Ordinal编码

  • 创建组合特征(如年龄×收入)

  • 特征选择(使用卡方检验、互信息等)

  • 考虑特征离散化处理

3. 模型选择与优化

python

# 可尝试的替代模型 from sklearn.linear_model import LogisticRegression from sklearn.tree import DecisionTreeClassifier from sklearn.ensemble import RandomForestClassifier from sklearn.svm import SVC # 模型集成方法 from sklearn.ensemble import VotingClassifier from sklearn.ensemble import BaggingClassifier

4. 评估方法改进

  • 使用K折交叉验证(K=5或10)

  • 设置更合理的评估指标(AUC-ROC, F1-score)

  • 学习曲线分析,判断是否需要更多数据

5. 业务层面建议

  • 收集更多样本数据(建议500+条)

  • 进行更详细的客户画像分析

  • 结合业务规则和专家经验

7.3 学习心得与体会

通过本项目实践,我深刻认识到:

  1. 数据质量决定模型上限:充足且高质量的数据是模型成功的基础

  2. 特征工程至关重要:合适的特征表示能显著提升模型性能

  3. 模型选择需因地制宜:没有最好的算法,只有最适合的算法

  4. 业务理解不可或缺:机器学习项目需要技术与业务的深度融合

  5. 持续迭代优化:模型开发是一个不断改进的过程

7.4 课程收获

《大数据数据分析与应用》课程让我系统学习了:

  • 大数据处理的基本概念和技术架构

  • 常用机器学习算法的原理与实现

  • 数据预处理和特征工程的方法

  • 模型评估和优化的策略

  • 实际项目的完整开发流程


八、附录

8.1 环境配置

bash

# 所需Python库 pip install pandas numpy scikit-learn jupyter matplotlib seaborn

8.2 代码结构

text

购车意向预测项目/ ├── data/ │ └── ods_bye_car_investigation_info.csv ├── notebooks/ │ └── naive_bayes_car_prediction.ipynb ├── src/ │ ├── data_preprocessing.py │ ├── model_training.py │ └── evaluation.py └── README.md

8.3 参考文献

  1. 《机器学习》周志华 著

  2. 《Python机器学习实战》Sebastian Raschka 著

  3. scikit-learn官方文档:https://scikit-learn.org/

  4. 朴素贝叶斯算法详解:李航《统计学习方法》

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 8:31:30

Remotion Lambda云渲染:突破本地硬件限制的分布式视频生成方案

Remotion Lambda云渲染:突破本地硬件限制的分布式视频生成方案 【免费下载链接】remotion 🎥 Make videos programmatically with React 项目地址: https://gitcode.com/gh_mirrors/re/remotion 在当今数字化内容爆炸的时代,视频制作需…

作者头像 李华
网站建设 2026/4/22 10:15:48

20万内混动SUV:大空间高舒适度家庭车型首选

在家庭出行场景下,空间宽敞、乘坐舒适、动力平顺且油耗低的混动SUV越来越受到关注。尤其是经常带家人和孩子出门的家庭,对车内空间、后备箱容量以及长途出行舒适度有较高要求。经常带家人孩子出门,想要空间大、坐着舒服的,有哪些2…

作者头像 李华
网站建设 2026/4/30 11:36:54

5步构建企业微信考勤系统:告别传统打卡的烦恼

还在为员工考勤管理而烦恼吗?每天面对迟到早退的统计、异地打卡的验证、复杂排班的配置,这些看似简单的考勤问题往往消耗着大量管理精力。企业微信的开放能力结合EasyWeChat SDK,让你能够快速搭建一套智能化的考勤解决方案,彻底告…

作者头像 李华
网站建设 2026/4/26 2:25:42

如何用3步快速搭建表情包智能搜索工具:VVQuest终极指南

如何用3步快速搭建表情包智能搜索工具:VVQuest终极指南 【免费下载链接】VVQuest 项目地址: https://gitcode.com/gh_mirrors/vv/VVQuest 你是否曾在社交媒体聊天时,想要找一个合适的表情包却翻遍相册都找不到?或者作为内容创作者&am…

作者头像 李华
网站建设 2026/4/24 23:42:38

Scrollytelling终极指南:快速构建惊艳滚动叙事动画

Scrollytelling终极指南:快速构建惊艳滚动叙事动画 【免费下载链接】scrollytelling A library for creating Scrollytelling animations, powered by React & GSAP. 项目地址: https://gitcode.com/gh_mirrors/sc/scrollytelling 想要在网页中实现流畅的…

作者头像 李华
网站建设 2026/4/27 17:13:02

Sandboxie终极优化指南:5分钟解决卡顿和资源占用问题

Sandboxie终极优化指南:5分钟解决卡顿和资源占用问题 【免费下载链接】Sandboxie Sandboxie Plus & Classic 项目地址: https://gitcode.com/gh_mirrors/sa/Sandboxie Sandboxie是一款强大的沙箱隔离工具,能够在不影响主机系统的情况下安全运…

作者头像 李华