一、数据读取
(一)读取数据
常用函数:read_csv、read_table、read_sql,其中read_csv与read_table默认使用的分隔符不同。两者常用参数如下:
seq/delmiter:用来指定数据之间的分隔符,read_csv默认为逗号,read_table默认为\t(制表符)
header:用来指定标题行,如果数据集中没有标题行,则默认为None
names:读取数据时,用该属性设置列索引。
index_col:将数据集中的某一列(某几列)设置为行索引,通过index_col来进行指定。
usecols:通过该参数来设置需要使用的列。
(二)统计各项指标
查看属性信息:了解属性数据类型和数值缺失情况,方便后续数据变换(标准化、数据编码等)print(df.info())
查看属性统计描述信息:了解属性的记录数、区间范围、均值、分位值、方差等,用于了解属性的分布和倾斜情况,为后续数据分析和处理服务。print(df.describe())
查看属性的空值信息。
二、特征理解分析
(一)单变量统计分析
单特征的分析一般有三种,柱状图、箱图和直方图
通过柱状图或者直方图可以查看目标变量的分布情况;
通过箱图也可以查看分布情况,主要可以查看出异常值的情况
(二)双变量统计分析
双变量的分析一般可以通过散点图、直方图和箱图来查看
通过散点图可以查看两个变量之间的分布规律或者相关性
通过直方图可以查看目标变量不同时分布情况是否有明显变化
通过箱线图可以查看目标变量不同时箱线图分布情况
(三)三变量统计分析
三变量统计分析一一般有散点图、箱线图、折线图和小提琴图
(四)多变量统计分析
连续数据满足正态分布情况下,用pearson相关系数的热力图;
单调关系的数据排序值例如分级数据,用spearman相关系数的热力图;
三、数据预处理
(一)数据清洗
缺失值处理:去除或者填补
异常值处理:特征值、奇异值以及数据的不一致性
不均衡数据处理:主要针对一个样本的数据量远大于其他样本类别数据量
(二)特征缩放
StandardScaler:由于不同属性之间,区间范围差异较大,因此需要对属性特征进行标准化操作;
MinMaxScaler:
Normalizer:正则化依照特征矩阵行处理数据。正则化的前提是样本各特征服从正态分布,正则化后将其转换成标准正态分布。正则化的公式类似于标准化,不同的是(正则化)样本均值和样本标准差改为特征均值和特征标准差。
(三)特征数据与标签准备
特征衍生:字段的新增与合并,有助于提高建模准确率,尤其是面向特征变量较少的情况。
连续型特征离散化:
标签准备:离散特征的编码二值化操作,简化分析目标
标签准备:离散型特征的编码LabelEncoder,对不连续的数字或文本进行编码,在实际工程中,独热编码通常会搭配LabelEncoder一同使用,即先对需要编码的某一非连续的数值型特征进行编码转换成连续型数值,再使用独热编码。
标签准备:离散型特征的编码One-Hot,如果后续有距离计算,建议One-hot,而非LabelEncoder,但是经过One-hot后,特征列数量巨大,后续采用网格搜索调优耗费时间长,可以考虑对每个参数单独调优,减少调优时间。
数据纠偏:部分回归算法要求连续变量呈正态分布,采用Log转换
(四)筛选特征
PCA算法:通过降维去除特征之间的相关性,删选特征。
随机森林算法:通过属性重要性筛选特征。
Lasso算法:通过Lasso算法得到的特征重要性筛选特征。
四、建立模型
(一)数据集切分
一般为分层抽样,stratify的作用是:保持测试集与整个数据集里result的数据分类比例一致,尤其类分布不平衡的情况下会用到。
(二)多种建模算法对比
模型选择因素:数据集的大小、特征空间的维度、特征是否独立、是否为线性特征、对拟合程度的要求、其他要求:性能、时间、空间,影响选择的因素有很多,如果没有特别的要求,尽量选择简单的模型,越简单的越合适。
回归模型对比:线性回归,决策树回归,KNN,随机森林回归,GBDT回归模型。对比几种模型评估值,选择评估值相对较好的模型。
分类模型:KNN,逻辑回归,随机森林,朴素贝叶斯,决策树,GBDT模型。对比几种模型评估值以及ROC曲线,选择模型评估值相对较好的模型。
聚类模型对比:KMeans,Birch,SpectralClustering等模型,根据轮廓系数silhouette对比得出最优模型和最优参数。
(三)集成策略等方案改进
网格搜索算法:采用 GridSearchCV方法调整参数。采用5折交叉验证法(cv=5)进行模型评估。网格搜索适用于三四个(或者更少)的超参数,当超参数的数量增长时,网格搜索的计算复杂度会呈现指数增长,这时候则使用随机搜索RandomizedSearchCV。
Stacking算法:将多个分类器组合在一起,有效地提高分类器的准确率,减少过拟合的风险。
Voting算法:Voting以投票的形式决定最终的结果。