前期工作:
mac上安装homebrew 为后面python里需要的 作准备
mac安装参考在下图链接:
homebrew最新国内源安装方法(2020年3月)
然后在MAC平台安装lightgbm
跟着下文链接走就能安装完成
MAC平台安装lightgbm遇到的各种坑
Mac安装LightGBM官方文档填坑指南(附virtulenv虚拟环境安装方法)
异常值
异常值也称为离群点,就是那些远离绝大多数样本点的特殊群体,通常这样的数据点在数据集中都表现出不合理的特性。如果忽视这些异常值,在某些建模场景下就会导致结论的错误(如线性回归模型、K均值聚类等),所以在数据的探索过程中,有必要识别出这些异常值并处理好它们。
检测到了异常值,我们需要对其进行一定的处理。而一般异常值的处理方法可大致分为以下几种:
删除含有异常值的记录:直接将含有异常值的记录删除;
视为缺失值:将异常值视为缺失值,利用缺失值处理的方法进行处理;
平均值修正:可用前后两个观测值的平均值修正该异常值;
不处理:直接在具有异常值的数据集上进行数据挖掘;
是否要删除异常值可根据实际情况考虑。因为一些模型对异常值不很敏感,即使有异常值也不影响模型效果,但是一些模型比如逻辑回归LR对异常值很敏感,如果不进行处理,可能会出现过拟合等非常差的效果。
箱线图:
参考此链接
它也可以粗略地看出数据是否具有有对称性,分布的分散程度等信息,特别可以用于对几个样本的比较。它主要用于反映原始数据分布的特征,还可以进行多组数据分布特征的比 较。箱线图的绘制方法是:先找出一组数据的最大值、最小值、中位数和两个四分位数;然后, 连接两个四分位数画出箱子;再将最大值和最小值与箱子相连接,中位数在箱子中间。
图片内容显示:
中位数来衡量整体情况比较稳定
箱子短 数据分布就比较集中
train.columns//查看列属性分类`
# 训练集和测试集放在一起,方便构造特征
train['train']=1
test['train']=0
data = pd.concat([train, test], ignore_index=True, sort=False)
//ignore_index=True将索引值忽略
//sort=False 不更改列的顺序
# 从邮编中提取城市信息,因为是德国的数据,所以参考德国的邮编,相当于加入了先验知识
data['city'] = data['regionCode'].apply(lambda x : str(x)[:-3])//保留后三位
apply(func [, args [, kwargs ]]) 函数用于当函数参数已经存在于一个元组或字典中时,间接地调用函数。
lambda是匿名函数,即不再使用def的形式,可以简化脚本,使结构不冗余何简洁
如:
a = lambda x : x + 1
a(10)
11
python中groupby函数主要的作用是进行数据的分组以及分组后地组内运算。
info()函数
功能: 给出样本数据的相关信息概览 :行数,列数,列索引,列非空值个数,列类型,内存占用
过滤式(filter)
它是先设计一个过滤方法进行特征选择,再去训练学习器。而这个过滤方式是设计一个“相关统计量”,去对特征进行计算,最后设定一个阈值去进行选择。
相关统计量计算:
对于每个样本xi,他都会做以下事情。
找出同类中,最邻近的样本x1;在异类中,找出最邻近的x2。
如果xi与x1更近,说明特征是对同类异类有益的,会增大相对应的统计量;反之,如果xi与x2更近,说明特征起到副作用,会减少相对应的统计量。(当然有时候也不需要把整个训练集全用上,可以用采样的办法进行计算)
包裹式选择(wrapper)
它与过滤式不同,它会考虑后续的学习器。它会把学习器的性能作为评价准则。
1.LVW
第一步:随机选出特征集;
第二步:计算相关误差,如果误差比原本的小,或者误差相当但是特征数比之前的少,则把子集留下。
2.RFE
第一步:对初始特征进行训练,得到权重
第二步:提出权重最小的特征,构成新的集合
第三步:不断重复,知道满足停止条件为止。