DataWhale 机器学习夏令营第三期
DataWhale 机器学习夏令营第二期
- 学习记录一 (2023.08.18)
- 1.赛题理解
- 2.缺失值分析
- 3. 简单特征提取
- 4. 数据可视化
- 离散变量
- 离散变量分布分析
DataWhale 机器学习夏令营第三期
——用户新增预测挑战赛
学习记录一 (2023.08.18)
已跑通baseline,换为lightgbm基线,不加任何特征线上得分0.52214
;
添加baseline特征,线上得分0.78176
;
暴力衍生特征并微调模型参数,线上得分0.86068
1.赛题理解
赛题数据由约62万条训练集、20万条测试集数据组成,共包含13个字段。
- 其中uuid为样本唯一标识,
- eid为访问行为ID,
- udmap为行为属性,其中的key1到key9表示不同的行为属性,如项目名、项目id等相关字段,
- common_ts为应用访问记录发生时间(毫秒时间戳),
- 其余字段x1至x8为用户相关的属性,为匿名处理字段。
- target字段为预测目标,即是否为新增用户。
2.缺失值分析
print('-----Missing Values-----')
print(train_data.isnull().sum())print('\n')
print('-----Classes-------')
display(pd.merge(train_data.target.value_counts().rename('count'),train_data.target.value_counts(True).rename('%').mul(100),left_index=True,right_index=True
))
分析:数据无缺失值, 533155(85.943394%)负样本, 87201(14.056606%)正样本
数据分布不均的处理:
- 阈值迁移
- 设置样本权重
weight_0 = 1.0 # 多数类样本的权重
weight_1 = 8.0 # 少数类样本的权重
dtrain = lgb.Dataset(X_train, label=y_train, weight=y_train.map({0: weight_0, 1: weight_1}))
dval = lgb.Dataset(X_val, label=y_val, weight=y_val.map({0: weight_0, 1: weight_1}))
3. 简单特征提取
行为相关特征:eid和udmap相关特征提取
- udmap中value特征提取:baseline中已经给出
- udmap中key特征提取
import jsondef extract_keys_as_string(row):if row == 'unknown':return Noneelse:parsed_data = json.loads(row)keys = list(parsed_data.keys())keys_string = '_'.join(keys) # 用下划线连接 keyreturn keys_stringtrain_df['udmap_key'] = train_df['udmap'].apply(extract_keys_as_string)
train_df['udmap_key'].value_counts()
观察eid和udmap_key 对应关系
train_df.groupby('eid')['udmap_key'].unique()
分析:可以看到eid和key是强相关甚至是一一对应的,后续可以围绕着eid、key、value构造行为相关特征。
4. 数据可视化
离散变量
查看各个特征情况:
for i in train_data.columns:if train_data[i].nunique() < 10:print(f'{i}, {train_data[i].nunique()}: {train_data[i].unique()}')else:print(f'{i}, {train_data[i].nunique()}: {train_data[i].unique()[:10]}')
分析:
-
[‘eid’, ‘x3’, ‘x4’, ‘x5’] 为取值较多的类别特征想
-
[‘x1’, ‘x2’, ‘x6’,'x7, ‘x8’]为取值较少的类别特征, x8 基本确定为性别特征
离散变量分布分析
研究离散变量['eid', 'x3', 'x4', 'x5‘,'x1', 'x2', 'x6','x7', 'x8'']
的分布,蓝色是训练集,黄色是验证集,分布基本一致
粉色的点是训练集下每个类别每种取值的target的均值,也就是target=1
的占比
绘制代码:
def plot_cate_large(col):data_to_plot = (all_df.groupby('set')[col].value_counts(True)*100)fig, ax = plt.subplots(figsize=(10, 6))sns.barplot(data=data_to_plot.rename('Percent').reset_index(),hue='set', x=col, y='Percent', ax=ax,orient='v',hue_order=['train', 'test'])x_ticklabels = [x.get_text() for x in ax.get_xticklabels()]# Secondary axis to show mean of targetax2 = ax.twinx()scatter_data = all_df.groupby(col)['target'].mean()scatter_data.index = scatter_data.index.astype(str)ax2.plot(x_ticklabels,scatter_data.loc[x_ticklabels],linestyle='', marker='.', color=colors[4],markersize=15)ax2.set_ylim([0, 1])# Set x-axis tick labels every 5th valuex_ticks_indices = range(0, len(x_ticklabels), 5)ax.set_xticks(x_ticks_indices)ax.set_xticklabels(x_ticklabels[::5], rotation=45, ha='right')# titlesax.set_title(f'{col}')ax.set_ylabel('Percent')ax.set_xlabel(col)# remove axes to show only one at the endhandles = []labels = []if ax.get_legend() is not None:handles += ax.get_legend().legendHandleslabels += [x.get_text() for x in ax.get_legend().get_texts()]else:handles += ax.get_legend_handles_labels()[0]labels += ax.get_legend_handles_labels()[1]ax.legend().remove()plt.legend(handles, labels, loc='upper center', bbox_to_anchor=(0.5, 1.08), fontsize=12)plt.tight_layout()plt.show()
下一步,分析数据,构建特征。
相关文章:

DataWhale 机器学习夏令营第三期
DataWhale 机器学习夏令营第二期 学习记录一 (2023.08.18)1.赛题理解2.缺失值分析3. 简单特征提取4. 数据可视化离散变量离散变量分布分析 DataWhale 机器学习夏令营第三期 ——用户新增预测挑战赛 学习记录一 (2023.08.18) 已跑通baseline,换为lightgbm基线&#…...

回归预测 | MATLAB实现BES-LSSVM秃鹰搜索算法优化最小二乘支持向量机多输入单输出回归预测(多指标,多图)
回归预测 | MATLAB实现BES-LSSVM秃鹰搜索算法优化最小二乘支持向量机多输入单输出回归预测(多指标,多图) 目录 回归预测 | MATLAB实现BES-LSSVM秃鹰搜索算法优化最小二乘支持向量机多输入单输出回归预测(多指标,多图&a…...

python分析实战(4)--获取某音热榜
1. 分析需求 打开某音热搜,选择需要获取的热榜如图 查找包含热搜内容的接口返回如图 将url地址保存 2. 开发 定义请求头 headers {Cookie: 自己的cookie,Accept: application/json, text/plain, */*,Accept-Encoding: gzip, deflate,Host: www.douyin.com,…...
Java根据List集合中的一个字段对集合进行去重
利用HashSet 创建了一个HashSet用于存储唯一的字段值,并创建了一个新的列表uniqueList用于存储去重后的对象。遍历原始列表时,如果字段值未在HashSet中出现过,则将其添加到HashSet和uniqueList中。 List<Person> originalList new Ar…...
(AtCoder Beginner Contest 315)
A.直接模拟即可 import random import sys import os import math from collections import Counter, defaultdict, deque from functools import lru_cache, reduce from itertools import accumulate, combinations, permutations from heapq import nsmallest, nlargest, h…...

API 接口选择那个?RESTful、GraphQL、gRPC、WebSocket、Webhook
大家好,我是比特桃。目前我们的生活紧紧地被大量互联网服务所包围,互联网上每天都有数百亿次API调用。API 是两个设备相互通讯的一种方式,人们在手机上每次指尖的悦动,背后都是 API 接口的调用。 本文将列举常见的一些 API 接口&…...

「Python|音视频处理|环境准备」如何在Windows系统下安装并配置音视频处理工具FFmpeg
本文主要介绍如何在Windows系统下安装并配置音视频处理工具FFmpeg,方便使用python进行音视频相关的下载或编辑处理。 文章目录 一、下载软件二、解压并配置三、验证安装 一、下载软件 首先要去 ffmpeg官网 下载软件包 由于上面直接下载的按钮是.tar.xz格式的。为了…...

软考高级架构师下篇-12层次式架构设计理论与实践
目录 1. 考情分析2. 层次式体系结构概述3. 表现层框架设计4. 中间层框架设计5. 数据访问层设计6. 数据架构规划与设计7. 物联网层次架构设计8. 前文回顾1. 考情分析 根据考试大纲,层次式架构设计理论与实践知识点会涉及单选题型(约占2~5分)和案例题(25分),本小时内容偏重于方…...
234. 回文链表
234. 回文链表 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* L…...

LInux之例行工作
目录 场景 单一执行例行任务 --- at(一次性) 安装 命令详解 语法格式 参数及作用 时间格式 案例 at命令执行过程分析 循环执行的例行性任务--crontab(周期性) crontd服务安装 linux 任务调度的工分类 crontab工作过程…...
C++,从“hello world“开始
一、"hello world" #inclue <iostream>using namespace std;int main() {cout << "hello world" << endl;return 0; } 1.1 #include:预处理标识 1.2 <iostream>:输入输出流类所在头文件 1.2.1 istream&a…...

/root/.ssh/config line 2: Bad protocol 2 host key algorithms ‘+ssh-rsa‘.
文章目录 1、问题2、查看openssh版本3、解决问题4、重新生成密钥5、查看是否可连接工蜂 1、问题 ssh访问工蜂报错: [rootlocalhost .ssh]# ssh -T gitgit.code.tencent.com /root/.ssh/config line 2: Bad protocol 2 host key algorithms ‘ssh-rsa’. 2、查看o…...

mac m1上系统内录内部声音的方法/无需安装Blackhole
总所周知,m1的mac不能录制桌面音频,obsstudio都不行。 最快的解决方法就是下载飞书: 登陆后新建直播/视频会议: 共享的时候选择下面的两个钩上去就好了...
数字人学习目录
数字人学习目录 百度PaddlePaddleHub图像风格迁移模型pp-tinypose模型 PaddleGANPaddleLitePaddleDetectionPP-TinyPose 人体骨骼关键点识别 PaddleSpeechVisualDLPaddleBobo TransformerWav2LibCLIPFFMpeg模型库数据集学习天地PythonJupyter Notebook Unity3DUE 百度Paddle P…...

PHP 房产网站系统Dreamweaver开发mysql数据库web结构php编程计算机网页项目
一、源码特点 PHP 房产网站系统是一套完善的WEB设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 源码 https://download.csdn.net/download/qq_41221322/88233553 论文 https://download…...

0基础入门代码审计-2 Fortify初探
0x01 序言 目前又加入一位新童鞋了,最近将会再加入cs相关的专栏,都是以基础为主,毕竟太复杂的东西,能看懂的人太少。 0x02 准备工具 1、Fortify 2、需要审计的源码 0x03 Fortify的简单使用 1、 1、在开始菜单栏中找到Audit Wo…...

qiiuzhiji4
本篇是从慧与离职后到2023年8月21日这段时间的经历 2023/7/31至2023/8/21 本篇初次写于2023年8月21日 从慧与离职后基本上就是在专心找工作了,但是有在这段时间找工作经历的人都明白,IT行业不复以往了。尤其是对于我这样的普通二本学历的人来说ÿ…...

构建 NodeJS 影院微服务并使用 docker 部署【01/4】
图片来自谷歌 — 封面由我制作 一、说明 构建一个微服务的电影网站,需要Docker、NodeJS、MongoDB,这样的案例您见过吗?如果对此有兴趣,您就继续往下看吧。 在本系列中,我们将构建一个 NodeJS 微服务,并使用…...

变频器和plc之间无线MODBUS通讯
在工业现场由PLC远程控制变频器的应用非常常见,如果挖沟布线不便或者变频器在移动设备上,那么采用无线通讯就是最佳方案。 这里我们选用最常用的三菱 FX2N PLC和三菱变频器为例,并结合日系plc专用无线通讯终端DTD435M来说明PLC与变频器之间的…...

【云原生】3分钟快速在Kubernetes1.25部署Prometheus2.42+Grafana9.5.1+Alertmanager0.25
文章目录 1、简介2、GitHub地址3、环境信息4、安装5、访问Grafana1、简介 Prometheus-operator帮助我们快速创建Prometheus+Grafana+Alertmanager等服务,而kube-prometheus更加完整的帮助我们搭建全套监控体系,这包括部署多个 Prometheus 和 Alertmanager 实例, 指标导出器…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...

Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
jmeter聚合报告中参数详解
sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...
从面试角度回答Android中ContentProvider启动原理
Android中ContentProvider原理的面试角度解析,分为已启动和未启动两种场景: 一、ContentProvider已启动的情况 1. 核心流程 触发条件:当其他组件(如Activity、Service)通过ContentR…...