python数据处理(tianchi)

数据处理流程:

参考:天池论坛

0.EDA:尽可能多的作图,目的是发现变量间关系以及变量与预测值之间的关系
1.缺失值处理(去除噪声)
(1)对一般特征,缺失值太多直接丢弃(drop函数)。不多则可以进行填充
(2)如果选用树模型,则可以不处理缺失值,让模型自己优化
(3)一般int/float数据缺失值为nan,可以用isnull()判断
(4)对于object的缺失值,其可能形式会不一样,比如可以是’ ‘或者’-’,但可以用.value_counts()函数将object特征的所有可能的值显示出来,再将其替换为nan

2.数据类型转换(给模型的数据必须为数值/布尔型,不能是object)
(1)astype函数:对object型数据,如果存在空数据,转换会报错
(2)to_datetime函数
(3)特征一般分为类别特征和数字特征,对类别特征一般需要查看unique分布
3.编码
(1)one-hot
one-hot编码不要求输入一定要是int/float型,但是其输出一定是int/float型
(2)factorize
4.数据处理
数据的标签若为长尾分布,则不利于建模预测,因为很多模型的前提假设都是数据误差项符合正态分布,而长尾分布违背了该假设,需处理为正态分布(通过log变换等)
在这里插入图片描述上面左边为长尾分布,右边为处理后的结果(注意看x轴),处理后再训练能提高准确率

5.特征工程
(1)构建新特征时,要将训练集和测试集放到一起
(2)要会删除不需要的特征(比如某一个特征取值倾斜太过严重,几乎都是取某一个值,这可用value_counts判断),以及从特征中寻找先验信息(比如从regioncode中寻找地区信息)
(3)可以结合多个特征计算统计量,比如单独一个brand特征无法判断,但结合其它特征,可以计算某一个brand有多少商品,某一个brand的平均价格等等
(4)数据分桶(离散化可以加快计算,增加模型鲁棒性等等)
(5)针对不同模型进行不同的特征工程
(6)特征相关性分析:相关性特别高的两个特征可以只选一个喂给模型(特征筛选)
(7)匿名特征处理:不能组合,只能单纯的对数据处理,比如装箱/groupby等等
(8)特征选择方法:过滤式/包裹式/嵌入式
其中嵌入式在训练过程中完成了特征选择,嵌入式选择最常用的是L1正则化和L2正则化,若对线性模型加入这两者正则化方法后,线性回归变成了岭回归和Lasso回归(这两种回归方法也是需要额外导入库的)
除此之外,决策树选择分裂结点时也会进行特征选择
(9)数据处理完后,放进模型之前,有必要对数据进行标准化和中心化处理(一般进行归一化就好,主要使不同特征的尺度保持一致,否则尺度大的特征因其数值大从而对模型会产生较大的影响)
6.划分数据
(1)数据划分方法:train_test_split(简单交叉验证),KFold等方法,有时候在与时间相关的数据集上,还需要按照时间顺序进行划分(不能用20年的数据预测19年的),用靠前的作为训练集,靠后的时间作为验证集
7.建模
(1)分类模型:线性回归,决策树(分类树)
(2)回归模型:逻辑回归,决策树(回归树),GBDT(包括XGboost,LightGBM,一般用于回归,调整后也可分类)
(3)绘制曲线(观察是否过拟合/欠拟合)
(4)调参
(4)参数优化:网格搜索/贝叶斯调参AutoML自动贝叶斯调参
(5)模型融合
主要包括如下方式:
在这里插入图片描述stacking:使用另外一个机器学习算法来将个体机器学习器的结果结合在一起
在这里插入图片描述stacking要注意防止过拟合
Blending融合方式:
在这里插入图片描述实际做模型融合时,要创建多个模型,并且用这些模型分别训练,由各自训练的结果来决定用哪种融合方式
一般比赛中最为显著的两种方法:
1.加权融合
2.stacking融合
融合也可分为以下几类:
结果层面的融合:要求模型得分要近似,但结果差异比较大
特征层面的融合:用同种模型训练,但将特征进行切分分别训练,后面再进行结果融合
模型层面的融合:部分模型的结果作为特征输入等

other:
(1).df.columns返回一个index,df.columns.values返回一个narray
(2).对一列所有数据处理:

df[A]=df[B].apply(lambda x:x + 1)  #apply可以换成map

(3)过拟合和欠拟合的判断,可以通过判断误差(画图的方式),如果误差难以下降,则说明是欠拟合,如果训练误差小而泛化误差大,则说明是过拟合
(4)正则化的理解:损失函数后面一般会添加一个额外项,即为惩罚项(惩罚:对损失函数中的某些参数做一些限制)。这个额外项就叫做正则化/范数。根据额外项形式的不同可以分为L1正则化以及L2正则化
正则化的作用:L1正则化产生稀疏模型(稀疏矩阵指很多项都是为0的矩阵)可用于特征选择,L2正则化用来防止过拟合(L2正则化倾向于减小各项权值)。
如下:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值