欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

机器学习----数据准备&特征工程(1)

程序员文章站 2022-03-29 08:06:48
...

一、总介绍

机器学习----数据准备&特征工程(1)

机器学习----数据准备&特征工程(1)
机器学习----数据准备&特征工程(1)

二、用户RFM行为特征提取

import pandas as pd
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity= "all"
##导入交易数据类型
trade = pd.read_csv("文件")
trade.info()
trade.head()
#把Date字段转换成日期型
trade["字段名"]=pd.to_datetime(trade['字段名'])
trade.info()
trade.head()
###汇总成RFM特征
RFM=trade.groupby("字段名").agg()
RFM.head()

三、特征转换

3.1无量钢化

  • 使不同规格的尺度得到统一
    常用的无量钢化的方法1—标准化
    效果:把原始的连续型变量转换为均值是0,标准差是1 的变量
    机器学习----数据准备&特征工程(1)
    常用的无量钢化的方法2—区间缩放法
    效果:把原始的连续型变量转换为范围在 【a,b】之间或者【0,1】之间的变量
    机器学习----数据准备&特征工程(1)

变换的目的
机器学习----数据准备&特征工程(1)

3.2转换

  • 变换后容易发现数据之间的关系,从没有关系到有关系
  • 变换后差异减小,更容易看清
  • 让数据接近正态分布

常用方法1—log变换
机器学习----数据准备&特征工程(1)
常用方法2—box-cox变换
机器学习----数据准备&特征工程(1)

3.3离散化

把连续的数值切割为少数的一些区间
* 方便数据的分布和相关性
* 减少异常数据的影响
* 引入非线性,提升模型的预测能力
* 进行模型特征交叉,有M+n和变为M*N
* 为了模型稳定
* 简化复杂性,降低过拟合的风险
* 有些模型要求是离散的

机器学习----数据准备&特征工程(1)

3.4、类别性变量编码

目的:很多机器学习算法无法处理类别型变量,必须转换为数值变量
一定程度上也起到扩充特征的作用(构造新的特征)

1、one-hot编码(独热编码)
机器学习----数据准备&特征工程(1)
2、count Encoding(计数编码)
机器学习----数据准备&特征工程(1)
Target econding用某一类比例来编码
机器学习----数据准备&特征工程(1)

#对字段标准化
from sklearn import preprocessing
std = preprocessing.StandarScaler()
#对字段区域缩放法
minmaxscaler = preprocessing.MinMaxScaler()
Amount = RFM["字段"].values.reshape(-1,1)
std.fit(Amount)
RFM["Amount_std"] = std.transform(Amount)
RFM.head(5)
#log变换
import numpy as np
RFM["字段"] = np.log(RFM["字段"])
RFM.head(5)
import pandas as pd
import numpy as np
trade = pd.read_csv("文件")
trade["字段名"]=pd.to_datetime(trade['字段名'])
RFM=trade.groupby("字段名").agg()
RFM.head()
num=[0,200,500800,1000]
#自定义区间离散化
RFM["字段"] = pd.cut("字段",bins = cut_points)
#等宽离散化
RFM["字段"] = pd.cut(RFM.Amount,20)
#等深离散化
RFM["字段"] = pd.cut(RFM.Amount,5)

独热编码
机器学习----数据准备&特征工程(1)

机器学习----数据准备&特征工程(1)

3.5、日期变量处理

机器学习----数据准备&特征工程(1)

代码
机器学习----数据准备&特征工程(1)
机器学习----数据准备&特征工程(1)

3.6、缺失值的处理

1缺失原因
机器学习----数据准备&特征工程(1)
常用方法—均值 & NaN Encoding编码
机器学习----数据准备&特征工程(1)

#填充
tic["段"].fillna(age_mean,inplace=True)
#标志变量0或者1
tic.loc[tic["字段"].isnull(),"ziduan"] = 1

3.7、特征组合

提升模型的精准度
多个特征加减乘除 或者 多个类连续组合

机器学习----数据准备&特征工程(1)

相关标签: 数据处理