kaggle竞赛实战2

接上一篇,本篇针对merchant以及transaction数据集进行预处理,包括缺失值、inf值处理以及object类型数据的独热编码转化,完成后详细代码如下:

# In[5]:


import os
import numpy as np
import pandas as pd


# In[6]:


pd.read_excel('d:/Data_Dictionary.xlsx',header=2,sheet_name='train')#读取数据,去掉头两行(空行),先看看大概数据情况


# In[7]:


import gc #进行内存管理的


# In[8]:


train=pd.read_csv('d:/train.csv')


# In[9]:


test=pd.read_csv('d:/test.csv')


# In[10]:


#数据质量分析,判断训练和验证集是否取自同一总体,从而决定是用特征工程还是trick,如果分布不一致,则在训练集上容易过拟合
#先看数据集是否cardid独一无二
train['card_id'].nunique()==train.shape[0]#nunique用于看不同id个数


# In[11]:


test['card_id'].nunique()==test.shape[0]


# In[12]:


train['card_id'].nunique()+test['card_id'].nunique()==len(set(train['card_id']).union(set(test['card_id'])))#判断


# In[13]:


train.isnull().sum()#看缺失值情况


# In[14]:


test.isnull().sum()


# In[15]:


statistics=train['target'].describe()#看统计情况,找异常值


# In[16]:


statistics


# In[17]:


#连续变量用概率直方图来观察
import seaborn as sns


# In[18]:


import matplotlib.pyplot as plt


# In[19]:


sns.set()


# In[20]:


sns.histplot(train['target'])#绘制密度曲线,找异常值


# In[21]:


#看下异常值数量,可能是特殊用户的标记,不能直接删掉
(train['target']<-30).sum()


# In[22]:


#关于如何确定异常值,也可以用3倍方差准则
statistics.loc['mean']-3*statistics.loc['std']


# In[23]:


#规律一致性分析:两个集合分布规律是否一致
#先单变量分析,看每个变量在每个区间内的样本数分布图是否一致
features=['first_active_month','feature_1','feature_2','feature_3']
train_count=train.shape[0]
test_count=test.shape[0]


# In[24]:


for feature in features:
    (train[feature].value_counts().sort_index()/train_count).plot()
    (test[feature].value_counts().sort_index()/test_count).plot()
    plt.legend(['train','test'])#画标签
    plt.xlabel(feature)
    plt.ylabel('ratio')
    plt.show()


# In[25]:


merchant=pd.read_csv('d:/merchants.csv',header=0)#开始看商户表


# In[26]:


print(merchant.shape,merchant['merchant_id'].nunique())#看是否有一个商户对多条记录的情况,发现有


# In[27]:


merchant.isnull().sum()#看缺失值,不多,可能存在13个商户没有这三列数


# In[28]:


#开始数据预处理,先标注离散和连续字段
category_cols=['merchant_id','merchant_group_id','merchant_category_id','subsector_id','category_1','most_recent_sales_range',
               'most_recent_purchases_range','category_4','city_id','state_id','category_2']


# In[29]:


numeric_cols=['numerical_1','numerical_2','avg_sales_lag3','avg_purchases_lag3','active_months_lag3',
              'avg_sales_lag6','avg_purchases_lag6','active_months_lag6','avg_sales_lag12','avg_purchases_lag12','active_months_lag12']


# In[30]:


assert len(category_cols)+len(numeric_cols)==merchant.shape[1]#判断字段是不是都写入了


# In[31]:


merchant[category_cols].dtypes#object类型后续要处理


# In[32]:


#将缺失值填补为-1
merchant['category_2']=merchant['category_2'].fillna(-1)


# In[33]:


#变量分三类,有连续型、名义型(即离散型里变量取值不存在大小关系的)以及有序变量,现在对后两类做独热编码
def change_object_cols(se):
    value=se.unique().tolist()#把取值拿出来转化为一个list
    value.sort()#排序
    return se.map(pd.Series(range(len(value)),index=value)).values#内层创造一个序列,它的索引是value,然后取出索引对应的值


# In[34]:


change_object_cols(merchant['category_1'])#把category_1转为独热编码


# In[35]:


for col in ['category_1','most_recent_sales_range','most_recent_purchases_range','category_4']:#把所有object类的都转了
    change_object_cols(merchant[col])


# In[36]:


merchant[numeric_cols].dtypes#开始搞连续变量


# In[37]:


merchant[numeric_cols].describe()#发现有无穷大值


# In[38]:


inf_cols=['avg_purchases_lag3','avg_purchases_lag6','avg_purchases_lag12']#把无穷值用最大值替换


# In[39]:


merchant[inf_cols]=merchant[inf_cols].replace(np.inf,merchant[inf_cols].max)


# In[40]:


merchant[numeric_cols].describe()


# In[41]:


#缺失值较少,直接用均值替换
for col in numeric_cols:
    merchant[col]=merchant[col].fillna(merchant[col].mean)


# In[42]:


history_transaction=pd.read_csv('d:/historical_transactions.csv',nrows=1000000)#数据太大,读一些做样本


# In[43]:


history_transaction.head(5)


# In[44]:


new_transaction=pd.read_csv('d:/new_merchant_transactions.csv',nrows=1000000)#最新的数据


# In[45]:


#最后要合成一张大表再处理,因此先看有哪些列一致
duplicate_cols=[]
for col in merchant.columns:
    if col in new_transaction.columns:
        duplicate_cols.append(col)
print(duplicate_cols)


# In[48]:


new_transaction[duplicate_cols].drop_duplicates().shape#取出和商户id重复的字段,进行行去重,保证后面连表时不会连出来两条一样的


# In[49]:


new_transaction['merchant_id'].nunique()#把商户id去重


# In[52]:


#和之前一样,针对离散和连续字段标注,处理缺失值
new_transaction.head(5)


# In[55]:


numeric_cols=['installments','month_lag','purchase_amount']


# In[58]:


category_cols=['authorized_flag','card_id','city_id','category_1','category_3','merchant_category_id','merchant_id','category_2','state_id','subsector_id']


# In[61]:


time_cols=['purchase_date']#时间序列特征


# In[60]:


new_transaction[category_cols].isnull().sum()


# In[63]:


new_transaction[category_cols].dtypes


# In[85]:


for col in ['authorized_flag','category_1']:#转类型,这里不清楚为什么category_3转不了
   new_transaction[col]=change_object_cols(new_transaction[col])


# In[75]:


for col in ['authorized_flag','category_1']:
   new_transaction[col]=new_transaction[col].fillna(-1)


# In[76]:


new_transaction[category_cols]=new_transaction[category_cols].fillna(-1)


 

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

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

相关文章

一行代码实现UI拖拽的效果

演示 先来看效果吧&#xff01; 实现方式 1.首先创建一个你想拖动的UI图片 2.创建一个C#的脚本 3.编写控制脚本&#xff08;代码按我的敲就行&#xff09; 付上代码片段 public void OnDrag(PointerEventData eventData){transform.position eventData.position;} 4.添加脚…

CMS是如何避免内存泄漏的

CMS&#xff08;Concurrent Mark-Sweep&#xff09;垃圾回收器本身并不直接避免内存泄漏&#xff0c;但它是Java虚拟机&#xff08;JVM&#xff09;中用于管理内存并自动回收不再使用的对象所占用的内存的机制。内存泄漏通常是由于程序中的错误导致对象无法被垃圾回收器正确回收…

利用SQL语句实现多表联合查询——多表关系介绍

1.多对多查询 先创建一个student表和course表&#xff0c;应该利用外键来实现&#xff0c;通过一个中间表分别对应student和course中的id CREATE TABLE student (id INT unsigned PRIMARY KEY,name VARCHAR(255),no VARCHAR(50) ); CREATE TABLE course (id INT PRIMARY KEY,…

产品经理-需求分析(三)

1. 需求分析 从业务的需要出发&#xff0c;确定业务目的和目标&#xff0c;将业务需求转为产品需求 1.1 业务需求 业务需求 业务动机 业务目标 就是最根本的动机和目标成果&#xff0c;通过这个需求解决特定的问题 1.2 产品需求 产品需求 解决方案 产品结构 产品流程…

等了10年,终于迎来RTX5/RTX4全家桶开源,开源,开源! 且免费商用

我们的V4, V5, V6 ,V7开发板都配套了大量的RTX4, RTX5教程和案例&#xff0c;从2015年发布首版RTX4内核教程以来&#xff0c;已经整整10年了。 1、制作这个RTX教程和案例&#xff0c;其实也承受了很大的压力&#xff0c;因为只有RTX内核是免费商用的&#xff0c;中间件并不免费…

AUTOMATIC1111/stable-diffusion-webui/stable-diffusion-webui-v1.9.3

配置环境介绍 目前平台集成了 Stable Diffusion WebUI 的官方镜像&#xff0c;该镜像中整合如下资源&#xff1a; GpuMall智算云 | 省钱、好用、弹性。租GPU就上GpuMall,面向AI开发者的GPU云平台 Stable Diffusion WebUI版本&#xff1a;v1.9.3 Python版本&#xff1a;3.10.…

数据结构(四)串

2024年5月26日一稿(王道P127) 定义和实现

P4391 [BOI2009] Radio Transmission 无线传输

题目描述 给你一个字符串 &#x1d460;1&#xff0c;它是由某个字符串 &#x1d460;2​ 不断自我连接形成的&#xff08;保证至少重复 2 次&#xff09;。但是字符串 &#x1d460;2​ 是不确定的&#xff0c;现在只想知道它的最短长度是多少。 输入格式 第一行一个整数 &…

力扣一周题单 - 1

Day1&#xff08;数组&#xff09; A.移动零 B. 第三大的数 C. 找到所有数组中消失的数字 D. 生命游戏 E.合并区间 Day2&#xff08;链表&#xff09; A.合并两个有序链表 B.环形链表 C.环形链表 II D. 回文链表 E. 删除链表的倒数第 N 个结点 Day3&#xff08;搜索&#x…

PostgreSQL的扩展(extensions)-常用的扩展之pg_statsinfo

PostgreSQL的扩展&#xff08;extensions&#xff09;-常用的扩展之pg_statsinfo pg_statsinfo 是一个用于 PostgreSQL 的监控和诊断工具。它能够收集广泛的数据库性能统计信息、系统运行状况以及活动日志&#xff0c;从而帮助数据库管理员进行系统优化、故障排除和性能监控。…

【计算机毕业设计】基于SSM+Vue的新能源汽车在线租赁管理系统【源码+lw+部署文档】

摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;新能源汽车在线租赁当然也不能排除在外。新能源汽车在线租赁是以实际运用为开发背景&#xff0c;运用软件工程开发方法&…

程序员做副业要知道重点在哪里

如果要在一年内赚取100万元&#xff0c;需要培养哪些能力、做哪些事情以及选择哪个行业赛道。 首先&#xff0c;要明确一个观念&#xff1a;学习、成长、破局、进化、认知提升和赚钱这些概念虽然重要&#xff0c;但它们本身并不能直接带来财富。当你专注于如何赚钱时&#xff…

ChatGPT-4o 实战 如何快速分析混淆加密和webpack打包的源码

ChatGPT-4o 几个特点 一个对话拥有长时间的记忆&#xff0c;可以连续上传文件&#xff0c;让其分析&#xff0c;最大一个代码文件只能3M&#xff0c;超出3M的文件&#xff0c;可以通过split-file可以进行拆分 其次ChatGPT-4o可以生成文件的下载链接&#xff0c;这有利于大文件的…

Linux 系统配置修改时间时区

Linux 系统配置修改时间时区 一、date 命令的功能介绍 DATE 指令是显示和设置系统日期和时间的命令。   该命令的一般格式为&#xff1a; date [选项] 显示时间格式&#xff08;以开头&#xff0c;后面接格式&#xff09;   date 设置时间格式命令中各选项的含义分别为&…

Vue3实战笔记(37)—粒子特效登录页面

文章目录 前言一、粒子特效登录页总结 前言 上头了&#xff0c;再来一个粒子特效登录页面。 一、粒子特效登录页 登录页&#xff1a; <template><div><vue-particles id"tsparticles" particles-loaded"particlesLoaded" :options"…

2024年5月大语言模型论文推荐:模型优化、缩放到推理、基准测试和增强性能

前一篇文章总结了关于计算机视觉方面的论文&#xff0c;这篇文章将要总结了2024年5月发表的一些最重要的大语言模型的论文。这些论文涵盖了塑造下一代语言模型的各种主题&#xff0c;从模型优化和缩放到推理、基准测试和增强性能。 大型语言模型(llm)发展迅速&#xff0c;跟上…

【论文解读】An Overview of Core Coding Tools in the AV1 Video Codec

原文下载地址:An Overview of Core Coding Tools in the AV1 Video Codec 时间:2018 年 级别:IEEE 作者:Yue Chen 摘要 AV1是一种新兴的开源和免版税的视频压缩格式,由开放媒体联盟(AOMedia)产业联盟在2018年初联合开发并最终确定。AV1开发的主要目标是在保持实际解码复杂…

Elasticsearch 详细介绍和经典应用

Elasticsearch是一个开源的分布式搜索和分析引擎&#xff0c;它建立在Apache Lucene搜索引擎库之上&#xff0c;提供了一个分布式、多租户的全文搜索引擎&#xff0c;能够实时地存储、检索和分析大规模的数据。以下是关于Elasticsearch的详细介绍和经典应用&#xff1a; 详细介…

【idea插件】查询maven小工具——maven-search

1、简介 该插件提供一个查询工具方便在IDE中快速查找maven依赖&#xff0c;定制模糊查找算法。支持查找全网类。注&#xff1a;该功能需要连接网络。所有数据来源于源码阅读网 2、使用方法 开启菜单&#xff1a;Tools / Maven Search 快捷键 &#xff1a;Shift Control M 或…

Spring MVC+mybatis项目入门:旅游网(五)登录与注销

个人博客&#xff1a;Spring MVCmybatis项目入门:旅游网&#xff08;五&#xff09;登录与注销 | iwtss blog 先看这个&#xff01; 这是18年的文章&#xff0c;回收站里恢复的&#xff0c;现阶段看基本是没有参考意义的&#xff0c;技术老旧脱离时代&#xff08;2024年辣铁铁…