【浙工商期末报告】研一Python期末作业B题(思路分享+源代码分享+原报告分享)

news2024/12/23 15:15:59

目录:研一Python期末作业B题(思路分享)

  • 一、题目介绍
    • 1.1 A题
    • 1.2 B题
  • 二、B题思路讲解
    • 2.1 问题的引入
    • 2.2 不平衡数据集
      • 2.2.1 不平衡数据的实例
      • 2.2.2 不平衡数据集导致的问题
      • 2.2.3 不平衡数据集的主要处理方法
      • 2.2.4 不平衡(均衡)数据集常用的处理方法实战
    • 2.3 检查是否存在空值
    • 2.4 数据分析过程
    • 2.5 数据编码
    • 2.7 数据集采样
    • 2.8 模型的建立与求解
    • 2.9 最后的29个算法模型比较
    • 2.10 模型的预测
  • 三、源代码和报告展示
  • 五、代码和报告的分享地址

一、题目介绍

本次期末报告分为A和B两题,这里介绍一下两题:

1.1 A题

通过 Python 对数据集 orders.csv 进行数据分析。这个数据集包含某商店关于多种产品的销售数据,以及与地理、产品类别、销售收入和利润、消费者细分等相关信息。希望通过数据分析从数据中获取到有意义的见解,以改善市场和销售策略,其中必须包含但不限于可视化分析。

1.2 B题

提供一个与某金融机构的营销活动有关的数据集,这些营销活动是基于电话的。通常情况下,需要对同一客户进行一次以上的联系,以便了解该金融产品是否会被认购(“yes”)或不(“no”)。数据集中的各字段描述如下:

  • 客户数据:

age :年龄(数值型);

job :工作情况(分类:‘admin.’, ‘blue-collar’, ‘entrepreneur’, ‘housemaid’, ‘management’,‘retired’, ‘self-employed’, ‘services’, ‘student’, ‘technician’, ‘unemployed’, ‘unknown’);

marital : 婚姻状况(分类:‘divorced’,‘married’,‘single’,‘unknown’; 注:‘divorced’ 指离婚或丧偶);

education :教育水平(分类:‘basic.4y’,‘basic.6y’,‘basic.9y’,‘high.school’,‘illiterate’,‘professional.course’,‘university.degree’,‘unknown’);

default :信用是否已经违约(分类: ‘no’,‘yes’,‘unknown’);

housing :是否有住房贷款(分类: ‘no’,‘yes’,‘unknown’);

loan :是否有个人贷款(分类: ‘no’,‘yes’,‘unknown’);

  • 与当前活动的最后一次联系有关的数据:

contact :联系时通信类型(分类: ‘cellular’,‘telephone’);

month :一年中最后一次联系的月份(分类: ‘jan’, ‘feb’, ‘mar’, …, ‘nov’, ‘dec’);

dayofweek :一周中最后一次联系是周几(分类: ‘mon’,‘tue’,‘wed’,‘thu’,‘fri’);

campaign :在本次活动中与该客户的联系次数(数值型,包括最后一次联系);

passed_days :上次联系客户后的天数(数值型,999 表示以前没有联系过客户);

previous :在此活动之前与该客户的联系次数(数值型);

pre_outcome :前期营销活动的结果(分类: ‘failure’,‘nonexistent’,‘success’);

  • 与社会和经济背景有关的一些指标:

emp_rate :就业变化率,季度指标(数值型);

cpi :消费者价格指数,月度指标(数值型);

cci :消费者信心指数,月度指标(数值型);

r3m :银行的 3 个月利率,每日指标(数值型);

employed :雇员人数,季度指标(数值型);

  • 输出变量

y :客户是否认购该金融产品(分类: ‘yes’, ‘no’).

该题包含两个文件,分别是完整的数据集( data.xlsx ),以及将要预测的结果( 学号.csv )。要求根据 data.xlsx 构建合适的机器学习模型,然后对 学号.csv 中的数据进行预测,并填入预测结果( yes或 no )。

二、B题思路讲解

2.1 问题的引入

本题是一个二分类问题,我们可以考虑使用常用的二分类算法,比如支持向量机、逻辑回归、决策树等算法。

但是本题的标签数据比较奇怪:
在这里插入图片描述

no     23596
yes     3049
Name: y, dtype: int64

正负样本的比例比较悬殊!

这是一个典型的不平衡数据集。

不平衡数据集经常出现在某些业务场景中,比如点击率预估,异常检测等。对于初学者来说,当你接到一个分类任务,乱七八糟胡乱操作一番后,上个baseline,发现自己分类的Accuracy居然高达99%(真是天才般的模型啊),但是真的部署在实际生产环境,发现对所有测试数据的预测结果居然都是Fasle。

这就是不平衡数据集带来的影响。

2.2 不平衡数据集

不平衡数据集指的是数据集各个类别的样本数目相差巨大。以二分类问题为例,假设正类的样本数量远大于负类的样本数量,这种情况下的数据称为不平衡数据。

在二分类问题中,训练集中class 1的样本数比上class 2的样本数的比值为60:1。使用逻辑回归进行分类,最后结果是其忽略了class 2,将所有的训练样本都分类为class 1。

在三分类问题中,三个类别分别为A,B,C,训练集中A类的样本占70%,B类的样本占25%,C类的样本占5%。最后我的分类器对类A的样本过拟合了,而对其它两个类别的样本欠拟合。

2.2.1 不平衡数据的实例

训练数据不均衡是常见并且合理的情况,比如:

在欺诈交易识别中,绝大部分交易是正常的,只有极少部分的交易属于欺诈交易。

在客户流失问题中,绝大部分的客户是会继续享受其服务的(非流失对象),只有极少数部分的客户不会再继续享受其服务(流失对象)。

2.2.2 不平衡数据集导致的问题

如果训练集的90%的样本是属于同一个类的,而我们的分类器将所有的样本都分类为该类,在这种情况下,该分类器是无效的,尽管最后的分类准确度为90%。所以在数据不均衡时,准确度(Accuracy)这个评价指标参考意义就不大了。实际上,如果不均衡比例超过4:1,分类器就会偏向于大的类别。

2.2.3 不平衡数据集的主要处理方法

  1. 从数据的角度出发,主要方法为采样,分为欠采样过采样以及对应的一些改进方法。
  2. 从算法的角度出发,考虑不同误分类情况代价的差异性对算法进行优化,主要是基于代价敏感学习算法(Cost-Sensitive Learning),代表的算法有adacost。

2.2.4 不平衡(均衡)数据集常用的处理方法实战

(1)扩充数据集

首先想到能否获得更多数据,尤其是小类(该类样本数据极少)的数据,更多的数据往往能得到更多的分布信息。

(2)对数据集进行重采样

  1. 过采样(over-sampling)

对小类的数据样本进行过采样来增加小类的数据样本个数,即采样的个数大于该类样本的个数。

# -*- coding: utf-8 -*-
from imblearn.over_sampling import RandomOverSampler
ros=RandomOverSampler(random_state=0) #采用随机过采样(上采样)
x_resample,y_resample=ros.fit_sample(trainset,labels)
  1. 欠采样(under-sampling)

对大类的数据样本进行欠采样来减少大类的数据样本个数,即采样的个数少于该类样本的个数。

采样算法容易实现,效果也不错,但可能增大模型的偏差(Bias),因为放大或者缩小某些样本的影响相当于改变了原数据集的分布。对不同的类别也要采取不同的采样比例,但一般不会是1:1,因为与现实情况相差甚远,压缩大类的数据是个不错的选择。

# -*- coding: utf-8 -*-
from imblearn.under_sampling import RandomUnderSampler
#通过设置RandomUnderSampler中的replacement=True参数, 可以实现自助法(boostrap)抽样
#通过设置RandomUnderSampler中的rratio参数,可以设置数据采样比例
rus=RandomUnderSampler(ratio=0.4,random_state=0,replacement=True) #采用随机欠采样(下采样)
x_resample,y_resample=rus.fit_sample(trainset,labels)

2.3 检查是否存在空值

在这里插入图片描述

此处不存在,不需要数据预处理的步骤!

2.4 数据分析过程

对各类特征进行数据分析,主要采用可视化的方法,得出初步结论,如下简单示例:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.5 数据编码

主要采用one-hot编码,可以直接调用函数pd.get_dummies

是利用pandas实现one hot encode的方式。

在这里插入图片描述
此时数据集的列为:

Index(['age', 'campaign', 'passed_days', 'previous', 'emp_rate', 'cpi', 'cci',
       'r3m', 'employed', 'y', 'job_admin.', 'job_blue-collar',
       'job_entrepreneur', 'job_housemaid', 'job_management', 'job_retired',
       'job_self-employed', 'job_services', 'job_student', 'job_technician',
       'job_unemployed', 'job_unknown', 'marital_divorced', 'marital_married',
       'marital_single', 'marital_unknown', 'education_basic.4y',
       'education_basic.6y', 'education_basic.9y', 'education_high.school',
       'education_illiterate', 'education_professional.course',
       'education_university.degree', 'education_unknown', 'default_no',
       'default_unknown', 'default_yes', 'housing_no', 'housing_unknown',
       'housing_yes', 'loan_no', 'loan_unknown', 'loan_yes',
       'contact_cellular', 'contact_telephone', 'month_apr', 'month_aug',
       'month_dec', 'month_jul', 'month_jun', 'month_mar', 'month_may',
       'month_nov', 'month_oct', 'month_sep', 'day_of_week_fri',
       'day_of_week_mon', 'day_of_week_thu', 'day_of_week_tue',
       'day_of_week_wed', 'pre_outcome_failure', 'pre_outcome_nonexistent',
       'pre_outcome_success'],
      dtype='object')

2.7 数据集采样

在这里插入图片描述
这时的正负样本已然均衡:

1    23596
0    23596
Name: y, dtype: int64

2.8 模型的建立与求解

这里我主要测试了九个算法,分别是Adaboost算法、逻辑回归算法、支持向量机算法、KNN算法、决策树算法、随机森林算法、GBDT算法、LightGBM算法以及Xgboost算法。

每一个算法都进行了评估,包括ROC曲线以及混淆矩阵,并用五折交叉验证和网格搜索确认了最佳参数。

下面举一个算法的例子,以Adaboost算法为例:

准确率: 0.9054951264302867

在这里插入图片描述
在这里插入图片描述

准确率: 0.934595281819466

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.9 最后的29个算法模型比较

在这里插入图片描述

2.10 模型的预测

选定好模型之后,进行预测,步骤与上述相同,但是不需要采样。

需要注意的是,最后需要预测的数据集缺少一列,需要排除掉才能去训练。

三、源代码和报告展示

在这里插入图片描述
格式均已整理好!

在这里插入图片描述

42页word报告!

在这里插入图片描述

五、代码和报告的分享地址

代码的地址:

https://mbd.pub/o/bread/mbd-Y52YlZ9u

报告的地址:

https://mbd.pub/o/bread/mbd-Y52YlZ9x

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/100650.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构实验大作业(将之前预测ACM获奖的模型搬到Vue和django上)

目录 前言 成品展示(UI写的确实有点糊弄,太懒了不想弄了) Vue部分 App.vue(中间感觉还行,不算难看) result组件: 路由: Django部分 view functionset(自己建的&am…

Java岗最全面试攻略,吃透这些技术栈Offer拿到手软

前言 我分享的这份 Java 后端开发面试总结包含了 JavaOOP、Java 集合容器、Java 异常、并发编程、Java 反射、Java 序列化、JVM、Redis、Spring MVC、MyBatis、MySQL 数据库、消息中间件 MQ、Dubbo、Linux、ZooKeeper、 分布式 &数据结构与算法等 25 个专题技术点&#xff…

重学React之高阶函数(Higher Order Function)

高阶函数(Higher Order Function) “把函数传给一个函数,返回另一个函数”,就是高阶函数。 高阶函数是一个常见的函数,它接受其他函数作为参数,然后返回一个函数。听起来很绕,但是这是个很常见的模式,比如有一个ajax函数,可以传一个callback作为处理函数,然后调用的地…

设计模式原则 - 里氏替换原则(四)

一 背景: 里氏替换原则是针对继承的。介绍前先聊聊继承性的特点 继承优势 提高代码的复用性(每个子类有拥有父类的属性和方法)提高代码的可扩展性 继承劣势 继承是侵入性的(只要继承,就必须拥有父类的属性和方法&…

Linux中的Chrony时间同步服务

目录 一、时间同步 1.概念 2.时间同步在运维工作中的作用 3.时间同步完成方法 (1)NTP时间服务(centos 6 ) (2)Chrony时间服务 二、Chrony时间服务 1.Chrony介绍 2.Chrony的优点 三、Chrony安装 …

linux基础学习-基本命令

基本命令 拷贝和移动 tree[目录名]:以树状图列出文件目录结构 -d:只显示目录cp 源文件 目标文件:复制文件或者目录 -f:已存在的目标文件直接覆盖,不会提示-i:覆盖文件前提示-r:若给出的源文件是…

SQLMAP高级用法

目录 前言 一、语法 1.利用google浏览器进行批量扫描 2.针对http请求头进行扫描 3.写入shell的几种方法 4.挂代理的方式 二、演示 1.批量扫描谷歌代理 2.http请求ua扫描 3.写入shell(一) 4.写入shell(二) 三、小结 前…

[附源码]计算机毕业设计Python的花店售卖系统的设计与实现(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

Windows与网络基础 | 管理_NTFS_注册表... | 系统性学习 | 无知的我费曼笔记

无知的我正在复盘Windows与网络基础 该笔记特点是 重新整理了涉及资料的一些语言描述、排版而使用了自己的描述对一些地方做了补充说明。比如解释专有名词、类比说明、对比说明、注意事项提升了总结归纳性。尽可能在每个知识点上都使用一句话 || 关键词概括更注重在实际上怎么…

【毕业设计_课程设计】在线免费小说微信小程序的设计与实现(源码+论文)

文章目录0 项目说明1 系统介绍1.1 业务层面1.2 产品层面1.3 技术层面2 项目运行3 项目截图3.1 小程序3.2 后台管理系统3.3 论文概览4 项目源码0 项目说明 在线免费小说微信小程序的设计与实现 提示:适合用于课程设计或毕业设计,工作量达标,…

word页码如何设置为章节加页码,例如第一章第一页1-1、第二章第一页2-1

由于用到word页码分章节页码的形式,从网上查了一下,质量真的很差,没有一篇文章讲清楚的,有的所答非所问,一怒之下,利用几个小时的时间解决问题并写下这篇文章,以供大家学习参考!&…

如何多台OAK设备同时RTSP推流?

编辑:OAK中国 首发:oakchina.cn 喜欢的话,请多多👍⭐️✍ 内容可能会不定期更新,官网内容都是最新的,请查看首发地址链接。 ▌前言 Hello,大家好,这里是OAK中国,我是助手…

世界杯结束了,但盼盼的“世界杯”才刚刚开始

体育的魅力是什么? 有人说体育的魅力在于感染力,在于惊险时刻带来的心跳反应。也有人说,体育的魅力源自于——体育不止于体育本身。所谓体育,实则更像是一卷不会完卷的英雄史诗,记录着无数运动员的高光时刻也承载着数…

grafana监控oceanbase-obagent部署

1.Install ob-deploy in obd server(obdserver can be a ocp server) (1)download newest version of ob-deploy and obagent,upload them to /soft directory oceanbase-community-stable-el-7-x86_64安装包下载_开源镜像站-阿里云 (2) install obdeploy rpm -ivh ob-deplo…

LinkedHashMap源码解析

LinkedHashMap源码解析 简介 LinkedHashMap 继承于 HashMap,其内部的 Entry 多了两个前驱、后继指针,内部额外维护了一个双向链表,能保证元素按插入的顺序访问,也能以访问顺序访问,可以用来实现 LRU 缓存策略。 Lin…

linux造so及调用

1.so的代码 2.gcc -O -c -fPIC -o testso.o so.c 3.gcc -shared -o testso.so testso.o 4.so可以看到了。 5.拷贝到系统内,然后同时ldconfig更新下。 6.调用的c代码 7.编译,连接。 8.可以看到执行的结果了。 ######################################…

分布式光伏运维平台具体有哪些功能?

安科瑞 华楠 综合看板 1、显示所有光伏电站的数量,装机容量,实时发电功率。 2、累计日、月、年发电量及发电收益。 3、累计社会效益。 4、柱状图展示月发电量 电站状态 1、电站状态展示当前光伏电站发电功率,补贴电价,峰值功…

2022游戏安全行业峰会举办,生态共建护航游戏产业

游戏的外挂、黑产、盗版等问题,一直是运营过程中面临的重要难题。这些安全问题,轻则给游戏的收入和口碑带来损伤,重则可以摧毁一款游戏。因此,近年来越来越多的游戏厂商不断加大对游戏安全的投入,为游戏建造铜墙铁壁。…

说说Vue响应式系统中的Watcher和Dep的关系-面试进阶

引言 在这里我先提出两个问题(文章末尾会进行解答): 在Vue的数据响应系统中,Dep和Watcher各自分担什么任务?Vue的数据响应系统的核心是Object.defineproperty一定是最好的吗?有什么弊端和漏洞吗&#xff…

【毕业设计_课程设计】基于Android的二维码扫描库

文章目录0 项目说明1 实现功能2 使用方式3 项目工程0 项目说明 基于Android的二维码扫描库 提示:适合用于课程设计或毕业设计,工作量达标,源码开放 1 实现功能 可打开默认二维码扫描页面支持对图片Bitmap的扫描功能支持对UI的定制化操作支…