通过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

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

目录
相关文章
|
22天前
|
机器学习/深度学习 算法 搜索推荐
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
|
15天前
|
机器学习/深度学习 自然语言处理 算法
|
2天前
|
机器学习/深度学习 算法 搜索推荐
Python用机器学习算法进行因果推断与增量、增益模型Uplift Modeling智能营销模型
Python用机器学习算法进行因果推断与增量、增益模型Uplift Modeling智能营销模型
30 12
|
20天前
|
机器学习/深度学习 数据采集 算法
构建高效机器学习模型:从数据预处理到模型优化
【4月更文挑战第6天】本文聚焦于机器学习模型的开发流程,旨在提供一套系统的方法论以构建出更高效的模型。我们将深入探讨数据预处理的重要性,特征工程的策略,以及如何通过交叉验证和超参数调优来提升模型性能。文章不仅涉及理论分析,还包括了实际案例的代码实现,为读者呈现一个从数据处理到模型部署的完整蓝图。
15 0
|
21天前
|
机器学习/深度学习 数据采集 算法
构建高效机器学习模型:从数据预处理到模型优化
【4月更文挑战第5天】 在机器学习领域,构建一个高效的模型并非易事。它涉及多个阶段,包括数据预处理、特征工程、模型选择、训练以及最终的评估和优化。本文深入探讨了如何通过精确的数据预处理技巧和细致的特征工程来提升模型性能,同时介绍了几种常见的模型优化策略。我们的目标是为读者提供一套实用的指导方案,帮助他们在面对复杂数据集时能够有效地构建和调整机器学习模型。
|
1月前
|
机器学习/深度学习 分布式计算 算法
大模型开发:你如何确定使用哪种机器学习算法?
在大型机器学习模型开发中,选择算法是关键。首先,明确问题类型(如回归、分类、聚类等)。其次,考虑数据规模、特征数量和类型、分布和结构,以判断适合的算法。再者,评估性能要求(准确性、速度、可解释性)和资源限制(计算资源、内存)。同时,利用领域知识和正则化来选择模型。最后,通过实验验证和模型比较进行优化。此过程涉及迭代和业务需求的技术权衡。
|
1月前
|
机器学习/深度学习 存储 搜索推荐
利用机器学习算法改善电商推荐系统的效率
电商行业日益竞争激烈,提升用户体验成为关键。本文将探讨如何利用机器学习算法优化电商推荐系统,通过分析用户行为数据和商品信息,实现个性化推荐,从而提高推荐效率和准确性。
|
1月前
|
机器学习/深度学习 算法 数据可视化
实现机器学习算法时,特征选择是非常重要的一步,你有哪些推荐的方法?
实现机器学习算法时,特征选择是非常重要的一步,你有哪些推荐的方法?
27 1
|
1月前
|
机器学习/深度学习 数据采集 算法
解码癌症预测的密码:可解释性机器学习算法SHAP揭示XGBoost模型的预测机制
解码癌症预测的密码:可解释性机器学习算法SHAP揭示XGBoost模型的预测机制
112 0
|
1月前
|
机器学习/深度学习 数据采集 监控
机器学习-特征选择:如何使用递归特征消除算法自动筛选出最优特征?
机器学习-特征选择:如何使用递归特征消除算法自动筛选出最优特征?
71 0