摘要:经过了数据的探索分析,可以大概知道数据的分布情况,从而进行相应的处理。
大体经验如下:
step1:确定数据类别(数字特征或者分类特征)以及数据性质。
#1、定性数据:
#a)定类:按名称分类----->城市 这个可以用onehot进行编码
#b)定序:有序分类 ----->成绩。 学历 #这个是有序变量要用order
#2、定量数据:描述数量
#a)定距:可以加减--温度,日期
#b)定比:可以乘除----价格,重量
step2:数据清洗 :
目的:目的在于提高数据质量,降低算法用错误数据建模的风险。
# 1、特征变换:模型无法处理或者不合适处理
#a) 定性变量编码:Label Encode,OneHot Encode,Distribution coding
#b) 分布不均匀的数据:标准化和归一化,
# 2、缺失值处理:增加不确定性,可能会导致不可靠输出。
#a)不处理,少量样本缺失
#b)删除,大量样本缺失。
#c)补全:(同类)均值/中位数/众数补全。或者模型预测,或者最邻近补全,矩阵补全
#3.异常值处理:减少脏数据
#a)简单统计:如describe()的统计描述。散点图等等.
#b)箱线图截断。一般情况不会超过3倍方差的数据
#c)利用模型进行离群点检测:比方聚类,k邻近,
#4,其他:删除无效列/更改dtypes/删除列中的字符串/将时间字符串转换为日期格式等。
step3:特征构造
目的:增强数据的表达,添加先验知识。
#1)统计量特征:
#a)计数、求和、比例、标准差
#2)时间特征:
#a)绝对时间、相对时间、节假日、双休日
#3)地理信息:
#a)分桶
#4)非线性变换
#a)取log/平方/根号
#5)数据分桶
# 等频率/等距、卡方分桶
#6特征组合
step4:特征选择
#目的:降低噪声,平滑预测能力和计算复杂度,增加模型的预测性能
#1、过滤式:先用特征选择方法对初识特征进行过滤然后再训练学习,特征选择过程和后续学习器无关
#2、包裹式:直接把最终要使用的学习器的性能作为衡量特征子集的评价准则。目的在于为给定的
#学习器选择有利于性能的特征子集
#3、嵌入式
step5:处理数据不平衡
#缺点:s少类别提供信息太少,没有学会如何判别少数类
#1、扩充数据集
#2、尝试其他评价指标
#3、调整W值
#4、重采样:过采样/欠采样
#5、选择其他模型:决策树类
#7、加权少类别人样本错分代价
#8、创新。a、将大类分解成多个小类,b、将小类视为异常点,并用异常检查模型
以下简单贴出处理异常值的代码:
以下简单贴出构造特征的代码:
结果如下:
对数据就进行合并:
分桶处理代码:
对数据进行oneHot:
对一些值进行归一化: