当前位置: 首页 > news >正文

Datawhale AI夏令营 - 用户新增预测挑战赛 | 学习笔记

数据分析与可视化

为了拟合出更好的结果就要了解训练数据之间的相互关系,进行数据分析是必不可少的一步

导入必要的库

# 导入库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

pandas库是一个强大的分析结构化数据的python库是Pythonopen in new window的核心数据分析支持库,提供了快速、灵活、明确的数据结构,旨在简单、直观地处理关系型、标记型数据。

 

numpy是python中科学计算的基础库,提供多维数组对象,各种派生对象(如掩码数组和矩阵),以及用于数组快速操作的各种API,有包括数学、逻辑、形状操作、排序、选择、输入输出、离散傅立叶变换、基本线性代数,基本统计运算和随机模拟等等。

 

可视化的图标能便于分析数据

matplotlib是一个python 2D绘图库,它以多种硬拷贝格式和跨平台的交互式环境生成出版物质量的图形。

 

seaborn 是一个基于matplotlib进行进行二次封装的绘图库,它也绘制更为集成、复杂的图表。

 

 

绘制数据热力图

a698f6138368400e9dd85db4cba481cf.jpg

 

# 相关性热力图
sns.heatmap(train_data.corr().abs(), cmap='YlOrRd')

上面是教程给的代码,下面是自己尝试调整了一部分参数后的

# 相关性热力图
fig, ax = plt.subplots(figsize=(18,18))#设置画布大小
sns.heatmap(train_data.corr(),square=True, annot=True,     vmax=1, vmin=0,annot_kws={'size': 5},linewidths=0.3,     # 控制每个小方格之间的间距linecolor="white",   # 控制分割线的颜色cmap="RdBu_r")

绘制直方图

# x7分组下标签均值
sns.barplot(x='x7', y='target', data=train_data)

模型交叉验证

交叉验证(Cross-Validation)是机器学习中常用的一种模型评估方法,用于评估模型的性能和泛化能力。

 

简单来说就是通过数据评估不同模型,避免过拟合或欠拟合,从而可以找到性能最优的模型。

 

上面的代码验证评估了四个模型,通过输出结果,其实不难发现,树模型的macro F1效果好

一般的,随机森林(RandomForestClassifier)效果比决策树(DecisionTreeClassifier)好一些,本题经过一定特征工程后亦是如此。

特征工程

通过进行特征工程,我们可以优化训练数据,使得得到的模型的性能提升

教程给了如上的特征处理,经过训练,发现common_ts_day与x1_mean,x2_mean是其中对提升精度影响比较大的特征

数据清洗 -- 缺失值与异常值处理

训练模型时遇到报错:ValueError:Input contains NaN, infinity or a value too large for dtype('float64').

处理异常值(以训练集 train_data 为例):

1.检查特征类型

print(train_data.dtypes())    #打印训练集特征类型

2.针对不符合类型训练时抛弃

train_data.drop(['udmap', 'common_ts', 'uuid')  #训练时

3.无穷值处理

#检查是否有无穷数据
print(np.isfinite(train_data).all())
#或
print(np.isinf(train_data).all())#处理
train_inf = np.isinf(train_data)  #提取
train_data[train_inf] = 0  #替换

在使用 dropna 时遇到删除带有缺失值行数据失败的情况:

这里是因为 NaN 是一个空字符串, 但 dropna 并不会将空字符串当作缺失值处理, 所以没能成功删除

同时,因为删除带有缺失值的行会改变行数,处理测试集 test_data 后会导致提交平台检测出错误

所以采用填充处理

最简单的是用 0 填充

 train_data.fillna(0)  #将 NaN 替换成 0

也可以使用 replace()

train_data.replace("0",np.nan,inplace=True) #将缺失值替换成 0
#如果在其他项目中这里也可以替换成 "nan" 然后使用 dropna 

缺失值填补有很多方法

1.人工填补 2.平均数填补 3.众数填补 4.中位数填补 5.临近数填补

等等等等,还可以采用一些算法进行填补

1.独热编码(One-HotEncoding)

可以扩充特征,采用N位状态寄存器来对N个可能的取值进行编码,每个状态都由独立的寄存器来表示

baseline 中的函数 udmap_onethot :

# 定义函数 udmap_onethot,用于将 'udmap' 列进行 One-Hot 编码
def udmap_onethot(d):v = np.zeros(9)         # 创建一个长度为 9 的零数组if d == 'unknown':      # 如果 'udmap' 的值是 'unknown'return v        # 返回零数组d = eval(d)         # 将 'udmap' 的值解析为一个字典for i in range(1, 10):          # 遍历 'key1' 到 'key9', 注意, 这里不包括10本身if 'key' + str(i) in d:     # 如果当前键存在于字典中v[i-1] = d['key' + str(i)]  # 将字典中的值存储在对应的索引位置上return v    # 返回 One-Hot 编码后的数组

对星期进行 One-Hot 编码 :

# 定义函数 week_onethot,用于将 'common_ts_week' 列进行 One-Hot 编码
def week_onethot(d):v = np.zeros(7)if d == 'Sunday':v[0] = 1elif d == 'Monday':v[1] = 1elif d == 'Tuesday':v[2] = 1elif d == 'Wednesday':v[3] = 1elif d == 'Thursday':v[4] = 1elif d == 'Friday':v[5] = 1elif d == 'Saturday':v[6] = 1return v 

2.特征二元化

将数值型的属性转换为布尔值的属性,设定一个阈值或条件划分属性值为0或1

简单来说就是将特征分成两部分,用 1 / 0 区分是否满足某条件

baseline 中的 udmap_isunknown :

# 编码 udmap 是否为空
train_data['udmap_isunknown'] = (train_data['udmap'] == 'unknown').astype(int)
test_data['udmap_isunknown'] = (test_data['udmap'] == 'unknown').astype(int)

判断 x7 是否为 1 :

# 特征 x7 是否为 1 
train_data['x7_is1'] = train_data['x7'].apply(lambda d : d == 1)
test_data['x7_is1'] = test_data['x7'].apply(lambda d : d == 1)

 

 

 

 

 

 

 

相关文章:

Datawhale AI夏令营 - 用户新增预测挑战赛 | 学习笔记

数据分析与可视化 为了拟合出更好的结果就要了解训练数据之间的相互关系,进行数据分析是必不可少的一步 导入必要的库 # 导入库 import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns pandas库是一个强大的分析结构化…...

HarmonyOS/OpenHarmony(Stage模型)卡片开发AbilityStage组件容器

AbilityStage是一个Module级别的组件容器,应用的HAP在首次加载时会创建一个AbilityStage实例,可以对该Module进行初始化等操作。 AbilityStage与Module一一对应,即一个Module拥有一个AbilityStage。 DevEco Studio默认工程中未自动生成Abilit…...

利用torchvision库实现目标检测与语义分割

一、介绍 利用torchvision库实现目标检测与语义分割。 二、代码 1、目标检测 from PIL import Image import matplotlib.pyplot as plt import torchvision.transforms as T import torchvision import numpy as np import cv2 import randomCOCO_INSTANCE_CATEGORY_NAMES …...

基于决策树(Decision Tree)的乳腺癌诊断

决策树(DecisionTree)学习是以实例为基础的归纳学习算法。算法从--组无序、无规则的事例中推理出决策树表示形式的分类规则,决策树也能表示为多个If-Then规则。一般在决策树中采用“自顶向下、分而治之”的递归方式,将搜索空间分为若千个互不相交的子集,在决策树的内部节点(非叶…...

前端面试的计算机网络部分(2)每天10个小知识点

目录 系列文章目录前端面试的计算机网络部分(1)每天10个小知识点 知识点11. DNS 完整的查询过程递归查询过程:迭代查询过程: 12. OSI 七层模型13. TCP 的三次握手和四次挥手三次握手(Three-Way Handshake)&…...

【LeetCode】224. 基本计算器

224. 基本计算器(困难) 方法:双栈解法 思路 我们可以使用两个栈 nums 和 ops 。 nums : 存放所有的数字ops :存放所有的数字以外的操作,/- 也看做是一种操作 然后从前往后做,对遍历到的字符做…...

服务器数据恢复-EVA存储磁盘故障导致存储崩溃的数据恢复案例

EVA系列存储是一款以虚拟化存储为实现目的的中高端存储设备。EVA存储中的数据在EVA存储设备工作过程中会不断进行迁移,如果运行的任务比较复杂,EVA存储磁盘负载加重,很容易出现故障的。EVA存储通过大量磁盘的冗余空间和故障后rss冗余磁盘动态…...

【stylus】通过css简化搜索页面样式

发现stylus专门修改样式的插件后,发现之前写JS调整样式的方式是在太蠢了,不过有一些交互的东西还是得用JS,例如设置按钮来交互显示功能,或记录功能等。插件可以让简化网站变得简单,而且可以实时显示,真的不…...

【官方中文文档】Mybatis-Spring #使用 SqlSession

使用 SqlSession 在 MyBatis 中,你可以使用 SqlSessionFactory 来创建 SqlSession。 一旦你获得一个 session 之后,你可以使用它来执行映射了的语句,提交或回滚连接,最后,当不再需要它的时候,你可以关闭 s…...

Redis三种持久化方式详解

一、Redis持久性 Redis如何将数据写入磁盘 持久性是指将数据写入持久存储,如固态磁盘(SSD)。Redis提供了一系列持久性选项。其中包括: RDB(快照):RDB持久性以指定的时间间隔执行数据集的时间点…...

17.2 【Linux】通过 systemctl 管理服务

systemd这个启动服务的机制,是通过一支名为systemctl的指令来处理的。跟以前 systemV 需要 service / chkconfig / setup / init 等指令来协助不同, systemd 就是仅有systemctl 这个指令来处理而已。 17.2.1 通过 systemctl 管理单一服务 (s…...

第 7 章 排序算法(3)(选择排序)

7.6选择排序 7.6.1基本介绍 选择式排序也属于内部排序法,是从欲排序的数据中,按指定的规则选出某一元素,再依规定交换位置后达到排序的目的。 7.6.2选择排序思想: 选择排序(select sorting)也是一种简单的排序方法…...

Less文件可以做哪些复杂操作

在Less文件中,你可以进行许多复杂的操作来增强样式表的功能和灵活性。以下是一些常见的操作: 变量(Variables):使用符号定义和使用变量,可以在整个样式表中重复使用相同的值,以便轻松修改和维护…...

HTML5岗位技能实训室建设方案

一 、系统概述 HTML5岗位技能技术是计算机类专业重要的核心课程,课程所包含的教学内容多,实践性强,并且相关技术更新快。传统的课堂讲授模式以教师为中心,学生被动式接收,难以调动学生学习的积极性和主动性。混合式教学…...

【Linux】GNOME图形化界面安装

Linux下具有多种图形化界面,每种图形化界面具有不同的功能,在这里我们安装的是GNOME。 1、 挂载yum源 挂载之前首先确保使用ISO映像文件 2.挂载之前先在/mnt下面创建一个cdrom目录用来作为挂载点目录 挂载完成之后那么就要去修改yum源了 Vi /etc/yum.r…...

大数据课程J3——Scala的类定义

文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 了解Scala的柯里化 Currying; ⚪ 掌握Scala的类定义; ⚪ 掌握Scala的样例类、option类; ⚪ 掌握Scala的隐式转换机制; 一、柯里化 Currying 柯里化(Currying)技术 Christopher St…...

Ribbon:使用Ribbon实现负载均衡

Ribbon实现的是实线走的 建立三个数据库 /* SQLyog Enterprise v12.09 (64 bit) MySQL - 5.7.25-log : Database - db01 ********************************************************************* *//*!40101 SET NAMES utf8 */;/*!40101 SET SQL_MODE*/;/*!40014 SET OLD_UNIQ…...

最新最全的~教你如何搭建高可用Lustre双机集群

1.搭建双机lustre高可用集群: 1.环境说明: 主机名系统挂载情况IP地址Lustre集群名内存mds001Centos7.9(共享磁盘)1个mgs,1个MDT,2个OST192.168.10.21/209.21global1Gmds002Centos7.9(共享磁盘)1个mgs,1个MDT,2个OST192.168.10.22/209.22global1GclientCentos7.9无19…...

深入浅出Pytorch函数——torch.nn.init.uniform_

分类目录:《深入浅出Pytorch函数》总目录 相关文章: 深入浅出Pytorch函数——torch.nn.init.calculate_gain 深入浅出Pytorch函数——torch.nn.init.uniform_ 深入浅出Pytorch函数——torch.nn.init.normal_ 深入浅出Pytorch函数——torch.nn.init.c…...

会员管理系统实战开发教程02-H5应用创建

低代码平台作为一个应用的快速生成工具,可以方便的进行一页多端的开发,可以在一个应用里生成三端的应用,也可以拆分成三个应用来制作。三端包括H5、小程序和PC管理后台。 上一篇我们介绍了PC管理后台的创建方法,本篇我们介绍一下…...

记一次由于整型参数错误导致的任意文件上传

当时误打误撞发现的,觉得挺奇葩的,记录下 一个正常的图片上传的点,文件类型白名单 但是比较巧的是当时刚对上面的id进行过注入测试,有一些遗留的测试 payload 没删,然后在测试上传的时候就发现.php的后缀可以上传了&a…...

spring之Spring Security - 实现身份验证与授权

Spring Security - 实现身份验证与授权 标题: Spring Security - 实现身份验证与授权摘要:引言:词汇解释:详细介绍:实现基本的身份验证与授权解释概念:代码示例:注意事项: 定制化认证与授权流程解释概念:代码示例:注意事项: 集成OAuth2认证解释概念:代码示例:注意事项: 总结:参…...

【Unity3D赛车游戏】【二】如何制作一个真实模拟的汽车

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:Uni…...

【Linux】线程篇Ⅱ:

线程Ⅱ 🔗接上篇【线程篇Ⅰ】五、线程库 和 线程 id六、同步与互斥 🔗接上篇【线程篇Ⅰ】 👉【Linux】线程篇Ⅰ:线程和task_struct 执行流的理解、相关接口命令、线程异常、线程的私有和共享 五、线程库 和 线程 id 对于 Linux …...

浅尝OpenResty

文章目录 1. 写在前面2. 下载安装openresty2.1 下载Openresty2.2 设置nginx启动 3. 嵌入lua脚本4. 实践5. 小结 1. 写在前面 当一个域名中衍生出多个服务的时候,如果想要保持对外服务始终是一个域名,则需要通过nginx反向代理来实现。如果在转发的时候需…...

MySQL分页查询慢怎么办

今天看到一个问题。 MySQL分页查询慢怎么办? 第一反应是用limit限制返回的条数。 比如 select * from table order by idlimit 10, 100;实际上我们限制的只是返回的条数是100,并不是查询时就从第10条开始获取数据。 所以实际上MySQL会从第0条开始查询&a…...

mongodb集群

端口192.168.115.3 192.168.115.4 1192.168.115.5 下载MongoDB软件包版本为4.2.14并安装 rpm -ih --force --nodeps *.rpm 2创建文件夹mkdir -p /opt/local/mongo-cluster/conf 3.在目录里创建配置文件cd /opt/local/mongo-cluster/conf …...

回归预测 | MATLAB实现WOA-BP鲸鱼优化算法优化BP神经网络多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现WOA-BP鲸鱼优化算法优化BP神经网络多输入单输出回归预测(多指标,多图) 目录 回归预测 | MATLAB实现WOA-BP鲸鱼优化算法优化BP神经网络多输入单输出回归预测(多指标,多图)效果一览基本…...

【前端从0开始】JavaSript——循环控制语句

循环控制语句 while语句 While 循环会在指定条件为真时循环执行代码块。 While循环,先进行条件判断,再执行循环体的代码 while (条件表达式){循环体 }注意:当前循环中,如果不满足条件,一次都不会执行 var i 1; whi…...

【Elasticsearch】spring-boot-starter-data-elasticsearch的使用以及Elasticsearch集群的连接

更多有关博主写的往期Elasticsearch文章 标题地址【ElasticSearch 集群】Linux安装ElasticSearch集群(图文解说详细版)https://masiyi.blog.csdn.net/article/details/131109454基于SpringBootElasticSearch 的Java底层框架的实现https://masiyi.blog.c…...

做网站需要交维护费么/推广引流最快的方法

应用范例: 使用 TOPWAY Smart LCD (HMT050CC-C) 显示二维码 第一步 建立工程 ① 开 Editor 软件, 点击菜单栏建立新工程File --> New Project ② 输入工程名字工程名Project Name: QR_Code_Demo ③ 输入工程保存位置Create a Project Folder in: D:xxx ④ 选择智能模块显示…...

文化传媒公司广告宣传/长春网络推广优化

Linux是支持SSH协议的,如果我们在Windows主机上运行的Xshell无法正常连接Linux主机,则首先要考虑的是不是网络不通,如果网络不通就看一下是不是虚拟机设置的模式不对。 其次,如果网络通着却无法连接,则考虑是不是网卡e…...

容桂网站制作信息/北京做的好的seo公司

1、多长时间将业务上线当使用独立服务器时,要将业务部署上线所需的时间最低在1-3天左右。因为涉及服务器硬件配置、上架通电、环境设置、调试等,这系列工作完成后才能交付予您正常使用。但通过2、CPU、内存或磁盘升级云服务器和独立服务器都允许硬件升级…...

长春至少有500万人感染/抖音seo供应商

问卷调查demo已上传,欢迎大家指正,欢迎大家下载:https://download.csdn.net/download/lzb348110175/11085995 如果您没积分的话,可以私信/评论,然后发给您^_^ 之前也有看过Vue,但是一直都是处于大致知道点的…...

wordpress一键分享代码/百度指数属于行业趋势及人群

string.Format("{0:0##.#0},14")"014.00"转载于:https://www.cnblogs.com/craig/archive/2010/04/14/1712002.html...

四川省第十五公司/上海seo网站推广

最初了解 NMock 是从 《程序员》2004.12上的 董洵 所写的 《将单元测试进行到底—Mock Object 浅析》,那真是一片不错的文章! 在文章末尾的参考资料中,有一篇 MSDN杂志的文章Mock Objects to the Rescue! Test Your .NET Code with NMock &a…...