通过Ti-One机器学习平台玩转2020腾讯广告算法大赛:数据预处理(三)

简介: 通过Ti-One机器学习平台玩转2020腾讯广告算法大赛:数据预处理(三)

简单分析

已经有了pandas的dataframe,下面就可以对数据进行简单的分析了

比如:

click_all.info()

image.png

查看各列的唯一数总数

for col in click_all.columns:

   print(col,click_all[col].nunique())

image.png

各列的汇总

click_all.describe()

image.png

看到统计信息里面不包含product_id 和industry,说明里面可能有字符串信息,肉眼观察发现里面有一些数据被标记为\N,我这里处理的方式比较简单粗暴,就是使用0进行替换

click_all["product_id"]=click_all['product_id'].apply(lambda x : 0 if x == '\\N' else x)

click_all["industry"]=click_all['industry'].apply(lambda x : 0 if x == '\\N' else x)

替换完成后再整理一下数据类型

click_all["product_id"]=click_all["product_id"].astype(np.int32)

click_all["industry"]=click_all["industry"].astype(np.int32)

click_all = reduce_mem_usage(click_all)

click_all.info()

image.png

这样就可以了,虽然还有特征工程要做,但是这样的数据已经达到了输入到模型中进行训练的最基本的要求了。

pandas还有一个强大的功能就是可以建立直方图帮我们观察数据的分布

cols=["creative_id", "click_times", "ad_id",

                   "product_id", "advertiser_id", "industry", ]

for col in cols:

   if col=="type":

       continue

   click_all.hist(col)

这条语句会显示所有列的直方图,我们以一个为例:

image.png

点击次数中我们看到大部分数据都分布在25以内,但是他的最大值是185。

我们继续使用箱型图印证对于click_times的观点,使用箱型图可以查看

click_all.boxplot("click_times",vert=False, grid = True)

image.png

看到这个图对数据分析有过理解的小伙伴一定就知道了,我们可以看一下

# 上四分位数

cl=click_all["click_times"]

q3 = cl.quantile(q=0.75)

#下四分位数

q1 = cl.quantile(q=0.25)

print(q3,q1)

image.png

上四分位数和下四分位数都是1,我们根本就不需要查看异常值了,这就说明都会被算作异常值

#可以试试这个代码,看看怎么判断

cl01 = cl[(cl>q3+1.5*iqr) | (cl<q1-1.5*iqr)]

看看这些值到底是什么样的

click_all[click_all["click_times"]>100]

image.png

大于100的click大部分都是test数据集的,这里肯定是一个坑。

这里我们指定了click_times,如果不指定pandas会绘制所有列的箱型图,但是由于数据级数不一样,所以合并看意义不大。

最后我们来看一下对于每个用户,每天都有多少次点击:

user=click_all.groupby(["time","user_id"])['click_times'].count().reset_index(name="count")

user[user["count"]>2000]

还有每天点击大于2000的用户

image.png

user.boxplot("count",vert=False, grid = True)

image.png

# 上四分位数

cl=user["count"]

q3 = cl.quantile(q=0.75)

#下四分位数

q1 = cl.quantile(q=0.25)

print(q3,q1)

iqr = q3-q1

print("上四分位数:{}\n下四分位数:{}\n四分位差{}".format(q3,q1,iqr))

cl01 = cl[(cl>q3+1.5*iqr) | (cl<q1-1.5*iqr)]

print("异常值:\n{}".format(cl))

异常值我们先不管,这里能明显的看出,肯定有一部分数据是垃圾数据,或者说一部分用户是干扰用户,可以再深入研究下将其删除

image.png

本篇文章就先讲这么多吧,最后祝大家比赛取得好成绩

目录
相关文章
|
24天前
|
机器学习/深度学习 测试技术
阿里云入选Gartner数据科学和机器学习平台挑战者象限
Gartner® 正式发布了《数据科学与机器学习平台魔力象限》报告(Magic Quadrant™ for Data Science and Machine Learning Platforms),阿里云成为唯一一家入选该报告的中国厂商,被评为“挑战者”(Challengers)。
|
10天前
|
机器学习/深度学习 数据采集 Python
从零到一:手把手教你完成机器学习项目,从数据预处理到模型部署全攻略
【10月更文挑战第25天】本文通过一个预测房价的案例,详细介绍了从数据预处理到模型部署的完整机器学习项目流程。涵盖数据清洗、特征选择与工程、模型训练与调优、以及使用Flask进行模型部署的步骤,帮助读者掌握机器学习的最佳实践。
38 1
|
18天前
|
机器学习/深度学习 算法 Java
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
|
1月前
|
机器学习/深度学习 人工智能 算法
机器学习【教育领域及其平台搭建】
机器学习【教育领域及其平台搭建】
42 7
|
1月前
|
机器学习/深度学习 算法 决策智能
【机器学习】揭秘深度学习优化算法:加速训练与提升性能
【机器学习】揭秘深度学习优化算法:加速训练与提升性能
|
30天前
|
机器学习/深度学习 算法 Python
探索机器学习中的决策树算法:从理论到实践
【10月更文挑战第5天】本文旨在通过浅显易懂的语言,带领读者了解并实现一个基础的决策树模型。我们将从决策树的基本概念出发,逐步深入其构建过程,包括特征选择、树的生成与剪枝等关键技术点,并以一个简单的例子演示如何用Python代码实现一个决策树分类器。文章不仅注重理论阐述,更侧重于实际操作,以期帮助初学者快速入门并在真实数据上应用这一算法。
|
6天前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的决策树算法
【10月更文挑战第29天】本文将深入浅出地介绍决策树算法,一种在机器学习中广泛使用的分类和回归方法。我们将从基础概念出发,逐步深入到算法的实际应用,最后通过一个代码示例来直观展示如何利用决策树解决实际问题。无论你是机器学习的初学者还是希望深化理解的开发者,这篇文章都将为你提供有价值的见解和指导。
|
1月前
|
机器学习/深度学习 算法 大数据
机器学习入门:梯度下降算法(下)
机器学习入门:梯度下降算法(下)
|
27天前
|
机器学习/深度学习 算法 数据处理
EM算法对人脸数据降维(机器学习作业06)
本文介绍了使用EM算法对人脸数据进行降维的机器学习作业。首先通过加载ORL人脸数据库,然后分别应用SVD_PCA、MLE_PCA及EM_PCA三种方法实现数据降维,并输出降维后的数据形状。此作业展示了不同PCA变种在人脸数据处理中的应用效果。
29 0
|
17天前
|
算法 安全 数据安全/隐私保护
基于game-based算法的动态频谱访问matlab仿真
本算法展示了在认知无线电网络中,通过游戏理论优化动态频谱访问,提高频谱利用率和物理层安全性。程序运行效果包括负载因子、传输功率、信噪比对用户效用和保密率的影响分析。软件版本:Matlab 2022a。完整代码包含详细中文注释和操作视频。