1,对应缺失数据较少的情况可以用插值法来处理,插值的方法可以是随机森林
2,当使用逻辑回归建模时因为需要的特征都是数值型特征,所以会先选择将特征因子化,比如常见的one-hot编码,如下面的例子所示:
dummies_Cabin = pd.get_dummies(data_train['Cabin'], prefix= 'Cabin')
2,为什么要降维?
主要是出于如下考虑:1. 特征维数越高,模型越容易过拟合,此时更复杂的模型就不好用。2. 相互独立的特征维数越高,在模型不变的情况下,在测试集上达到相同的效果表现所需要的训练样本的数目就越大。 3. 特征数量增加带来的训练、测试以及存储的开销都会增大。4.在某些模型中,例如基于距离计算的模型KMeans,KNN等模型,在进行距离计算时,维度过高会影响精度和性能。5.可视化分析的需要。在低维的情况下,例如二维,三维,我们可以把数据绘制出来,可视化地看到数据。当维度增高时,就难以绘制出来了。在机器学习中,有一个非常经典的维度灾难的概念。用来描述当空间维度增加时,分析和组织高维空间,因体积指数增加而遇到各种问题场景。例如,100个平均分布的点能把一个单位区间以每个点距离不超过0.01采样;而当维度增加到10后,如果以相邻点距离不超过0.01小方格采样单位超一单位超正方体,则需要10^20 个采样点。
所以特征不是越多越好,过多的特征可能会造成过拟合,增加计算开销
3,PCA算法
通过协方差矩阵的特征值分解能够得到数据的主成分,以二维特征为例,两个特征之间可能存在线性关系(例如运动的时速和秒速度),这样就造成了第二维信息是冗余的。PCA的目标是发现这种特征之间的线性关系,并去除。
4,将缺失值补为0的方法用fillna(0)完成
round([],2)后边的2是保留后两位小数
5,
x_train,x_test,y_train,y_test = train_test_split(train_da, label, test_size=0.15, random_state=2019)
注意在用上面的来划分训练集合测试集的时候,train_da不是训练集,它是特征,label是标签,训练集里既有特征又有标签
x_train:训练集特征
x_test:测试集特征
y_train:训练集标签
y_test:测试集标签