From c49584ad85a46bc43473aa27e1c338656fad6d25 Mon Sep 17 00:00:00 2001 From: benjas <909336740@qq.com> Date: Mon, 28 Dec 2020 15:09:26 +0800 Subject: [PATCH] Add comment of Scaling Features --- ...2_建模_建筑能源利用率预测.ipynb | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/机器学习竞赛实战_优胜解决方案/建筑能源利用率预测/2_建模_建筑能源利用率预测.ipynb b/机器学习竞赛实战_优胜解决方案/建筑能源利用率预测/2_建模_建筑能源利用率预测.ipynb index 413376d..fd91b57 100644 --- a/机器学习竞赛实战_优胜解决方案/建筑能源利用率预测/2_建模_建筑能源利用率预测.ipynb +++ b/机器学习竞赛实战_优胜解决方案/建筑能源利用率预测/2_建模_建筑能源利用率预测.ipynb @@ -888,9 +888,9 @@ "\n", "一般缺失值我们建议在入模前填充,当然现在的XGBoost和LightGBM等都自带处理缺失值,如XGBoost把缺失值当做稀疏矩阵来对待,本身的在节点分裂时不考虑的缺失值的数值。缺失值数据会被分到左子树和右子树分别计算损失,选择较优的那一个。但一般来讲我们都需要处理缺失值。\n", "\n", - "上一个notebook我们直接删除了50%缺失率以上的特征,在这里我们将重点关注如何处理这些缺失值的填充,填充的方法有很多种,这里使用简单的中位数填充。\n", + "上一个notebook我们直接删除了50%缺失率以上的特征,在这里我们将重点关注如何处理这些缺失值的填充,填充的方法有很多种,这里使用简单的中位数填充([这里有关于缺失值填充更深入的探讨](http://www.stat.columbia.edu/~gelman/arm/missing.pdf))。\n", "\n", - "利用sklearn的 Imputer object来进行缺失值填充,测试集则使用训练集中的结果进行填充,尽可能的不要利用测试集的数据对测试集加工,因为一开始我们也是不知道的,否则将造成数据“泄露”,可参考[Data Leagage](https://www.kaggle.com/dansbecker/data-leakage)。" + "利用sklearn的 Imputer object来进行缺失值填充,测试集则使用训练集训练的结果进行填充,尽可能的不要利用测试集的数据对测试集加工,因为一开始我们也是不知道的,否则将造成数据“泄露”,可参考[Data Leagage](https://www.kaggle.com/dansbecker/data-leakage)。" ] }, { @@ -953,7 +953,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 特征标准化与归一化" + "## 特征缩放\n", + "\n", + "在构建模型之前,我们要做的最后一步是缩放特征。这是必要的,因为特征是在不同的单位,我们要规范化的特征,使单位不影响算法(具体可参考[回归分析中汽车案例](https://github.com/ben1234560/AiLearning-Theory-Applying/blob/master/notebook_%E5%BF%85%E5%A4%87%E6%95%B0%E5%AD%A6%E5%9F%BA%E7%A1%80/%E5%9B%9E%E5%BD%92%E5%88%86%E6%9E%90%E7%AB%A0%E8%8A%82/%E6%A1%88%E4%BE%8B%EF%BC%9A%E6%B1%BD%E8%BD%A6%E4%BB%B7%E6%A0%BC%E9%A2%84%E6%B5%8B%E4%BB%BB%E5%8A%A1.ipynb))。\n", + "\n", + "线性回归和随机森林不需要特征标度,但其他方法,如支持向量机和k近邻法,则需要它,因为它们考虑了观测值之间的欧几里德距离。因此,当我们比较多个算法时,最好是缩放特征。\n", + "\n", + "缩放的方式有两种:\n", + "* 对于每个值,减去特征的平均值,除以特征的标准差。这就是所谓的标准化,每个特征的平均值为0,标准差为1。\n", + "* 对于每个值,减去特征的最小值,除以特征的最小值减去特征的最小值(范围)。这确保了特征的所有值都在0到1之间,并被缩放到范围或归一化。\n", + "\n", + "与缺失值填充一样,当我们训练缩放对象时,我们只希望使用训练集进行训练。当转换特征时,我们将同时转换训练集和测试集。" ] }, { @@ -989,11 +999,11 @@ "metadata": {}, "source": [ "### 选择的机器学习算法(回归问题)\n", - " 1. Linear Regression\n", - " 2. Support Vector Machine Regression\n", - " 3. Random Forest Regression\n", - " 4. Gradient Boosting Regression\n", - " 5. K-Nearest Neighbors Regression\n", + " 1. Linear Regression 线性回归\n", + " 2. Support Vector Machine Regression 支持向量机回归\n", + " 3. Random Forest Regression随机森林回归\n", + " 4. Gradient Boosting Regression GBDT回归\n", + " 5. K-Nearest Neighbors Regression K近邻回归\n", "\n", "这里先使用默认参数,后续再调参" ]