前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >特征锦囊:怎么批量把特征中的离群点给“安排一下”?

特征锦囊:怎么批量把特征中的离群点给“安排一下”?

作者头像
Sam Gor
发布2020-04-11 21:07:44
8470
发布2020-04-11 21:07:44
举报
文章被收录于专栏:SAMshareSAMshare

今日锦囊

特征锦囊:怎么批量把特征中的离群点给“安排一下”?

这个专栏停了也有一段时间了,自从上次对之前的内容进行了一次梳理之后,似乎是给自己一个“借口”休息了一阵子,现在感觉还是得重新拿出来继续更新了。

代码语言:javascript
复制
# 导入数据集
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

train = pd.read_csv('./data/Group-Image-of-Consumers/train_dataset.csv')
test = pd.read_csv('./data/Group-Image-of-Consumers/test_dataset.csv')
data = pd.concat([train, test], ignore_index=True)
data.head()

我们简单从里面挑选几个数值型变量来看看分布情况吧,画图的技巧这里就不说了,可以参考之前画箱体图的那篇镜囊文章。

代码语言:javascript
复制
# 挑选其中几个变量
feature_list=['当月网购类应用使用次数','当月金融理财类应用使用总次数','当月视频播放类应用使用次数']

# 绘制箱体图
sns.set_style("white")
f, ax = plt.subplots(figsize=(8, 7))
ax.set_xscale("log")
ax = sns.boxplot(data=data[feature_list] , orient="h", palette="Set1")
ax.xaxis.grid(False)
ax.set(ylabel="Feature names")
ax.set(xlabel="Numeric values")
ax.set(title="Numeric Distribution of Features")
sns.despine(trim=True, left=True)

可以看到红色框框圈起来的就是我们的离群点,那么我们可以怎么处理一下呢?这里给大家介绍一个方法,代码如下:

代码语言:javascript
复制
def process(all_data,feature_list):
    #处理离群点
    for col in feature_list:
        ulimit=np.percentile(all_data[col].values, 99.9) #计算一个多维数组的任意百分比分位数
        llimit=np.percentile(all_data[col].values, 0.1)
        all_data.loc[all_data[col]>ulimit,col]=ulimit  # 大于99.9%的直接赋值
        all_data.loc[all_data[col]<llimit,col]=llimit
    return all_data

使用刚刚我们编写的那个方法:

代码语言:javascript
复制
# 使用函数进行极端值的转换
data_new = process(data,feature_list)

# 绘制箱体图
sns.set_style("white")
f, ax = plt.subplots(figsize=(8, 7))
ax.set_xscale("log")
ax = sns.boxplot(data=data_new[feature_list] , orient="h", palette="Set1")
ax.xaxis.grid(False)
ax.set(ylabel="Feature names")
ax.set(xlabel="Numeric values")
ax.set(title="Numeric Distribution of Features")
sns.despine(trim=True, left=True)

see!我们的异常值就会被直接“安排”了,是不是很简单呢?其实异常值的处理还是有很大方法的,今天就抛砖引玉一下,更多的方法等待大家去挖掘哦!

往 期 锦 囊

特征锦囊:特征无量纲化的常见操作方法

特征锦囊:怎么进行多项式or对数的数据变换?

特征锦囊:常用的统计图在Python里怎么画?

特征锦囊:怎么去除DataFrame里的缺失值?

特征锦囊:怎么把被错误填充的缺失值还原?

特征锦囊:怎么定义一个方法去填充分类变量的空值?

特征锦囊:怎么定义一个方法去填充数值变量的空值?

特征锦囊:怎么把几个图表一起在同一张图上显示?

特征锦囊:怎么把画出堆积图来看占比关系?

特征锦囊:怎么对满足某种条件的变量修改其变量值?

特征锦囊:怎么通过正则提取字符串里的指定内容?

特征锦囊:如何利用字典批量修改变量值?

特征锦囊:如何对类别变量进行独热编码?

特征锦囊:如何把“年龄”字段按照我们的阈值分段?

特征锦囊:如何使用sklearn的多项式来衍生更多的变量?

特征锦囊:如何根据变量相关性画出热力图?

特征锦囊:如何把分布修正为类正态分布?

特征锦囊:怎么找出数据集中有数据倾斜的特征?

特征锦囊:怎么尽可能地修正数据倾斜的特征?

特征锦囊:怎么简单使用PCA来划分数据且可视化呢?

特征锦囊:怎么简单使用LDA来划分数据且可视化呢?

特征锦囊:怎么来管理我们的建模项目文件?

? GitHub传送门

https://github.com/Pysamlam/Tips-of-Feature-engineering

原创不易,如果觉得这种学习方式有用,希望可以帮忙随手转发or点下“在看”,这是对我的极大鼓励!阿里嘎多!?

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SAMshare 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 今日锦囊
    • 特征锦囊:怎么批量把特征中的离群点给“安排一下”?
    • 特征锦囊:特征无量纲化的常见操作方法
    • 特征锦囊:怎么进行多项式or对数的数据变换?
    • 特征锦囊:常用的统计图在Python里怎么画?
    • 特征锦囊:怎么去除DataFrame里的缺失值?
    • 特征锦囊:怎么把被错误填充的缺失值还原?
    • 特征锦囊:怎么定义一个方法去填充分类变量的空值?
    • 特征锦囊:怎么定义一个方法去填充数值变量的空值?
    • 特征锦囊:怎么把几个图表一起在同一张图上显示?
    • 特征锦囊:怎么把画出堆积图来看占比关系?
    • 特征锦囊:怎么对满足某种条件的变量修改其变量值?
    • 特征锦囊:怎么通过正则提取字符串里的指定内容?
    • 特征锦囊:如何利用字典批量修改变量值?
    • 特征锦囊:如何对类别变量进行独热编码?
    • 特征锦囊:如何把“年龄”字段按照我们的阈值分段?
    • 特征锦囊:如何使用sklearn的多项式来衍生更多的变量?
    • 特征锦囊:如何根据变量相关性画出热力图?
    • 特征锦囊:如何把分布修正为类正态分布?
    • 特征锦囊:怎么找出数据集中有数据倾斜的特征?
    • 特征锦囊:怎么尽可能地修正数据倾斜的特征?
    • 特征锦囊:怎么简单使用PCA来划分数据且可视化呢?
    • 特征锦囊:怎么简单使用LDA来划分数据且可视化呢?
    • 特征锦囊:怎么来管理我们的建模项目文件?
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档