diff --git a/机器学习竞赛实战_优胜解决方案/建筑能源利用率预测/2_建模_建筑能源利用率预测.ipynb b/机器学习竞赛实战_优胜解决方案/建筑能源利用率预测/2_建模_建筑能源利用率预测.ipynb index 3351d39..413376d 100644 --- a/机器学习竞赛实战_优胜解决方案/建筑能源利用率预测/2_建模_建筑能源利用率预测.ipynb +++ b/机器学习竞赛实战_优胜解决方案/建筑能源利用率预测/2_建模_建筑能源利用率预测.ipynb @@ -22,7 +22,7 @@ "7. 尽可能解释模型结果\n", "8. 得出结论,并提交答案\n", "\n", - "上一个notebook我们使用了1-3,还有一部分4,该notebook我们着重了解4-6。" + "上一个notebook我们使用了第1-3步,还有一部分第步,该notebook我们着重了解第4-6步。" ] }, { @@ -41,10 +41,13 @@ "import pandas as pd\n", "import numpy as np\n", "\n", - "pd.options.mode.chained_assignment = None # 消除警告,比如说提示版本升级之类的\n", + "# 消除警告,比如说提示版本升级之类的\n", + "import warnings\n", + "warnings.simplefilter('ignore')\n", "\n", "pd.set_option('display.max_columns', 60) # 设置最大显示列为60\n", "\n", + "# Matplotlib 可视化\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "\n", @@ -68,6 +71,14 @@ "from sklearn.model_selection import RandomizedSearchCV, GridSearchCV" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 读取数据\n", + "读取上一个notebook处理好的数据。" + ] + }, { "cell_type": "code", "execution_count": 3, @@ -875,7 +886,11 @@ "source": [ "### 缺失值填充\n", "\n", - "利用sklearn的 Imputer object来进行缺失值填充,测试集则使用数据集中的结果进行填充,尽可能的不要利用测试集的数据对测试集加工,因为一开始我们也是不知道的,可参考[Data Leagage](https://www.kaggle.com/dansbecker/data-leakage)。" + "一般缺失值我们建议在入模前填充,当然现在的XGBoost和LightGBM等都自带处理缺失值,如XGBoost把缺失值当做稀疏矩阵来对待,本身的在节点分裂时不考虑的缺失值的数值。缺失值数据会被分到左子树和右子树分别计算损失,选择较优的那一个。但一般来讲我们都需要处理缺失值。\n", + "\n", + "上一个notebook我们直接删除了50%缺失率以上的特征,在这里我们将重点关注如何处理这些缺失值的填充,填充的方法有很多种,这里使用简单的中位数填充。\n", + "\n", + "利用sklearn的 Imputer object来进行缺失值填充,测试集则使用训练集中的结果进行填充,尽可能的不要利用测试集的数据对测试集加工,因为一开始我们也是不知道的,否则将造成数据“泄露”,可参考[Data Leagage](https://www.kaggle.com/dansbecker/data-leakage)。" ] }, {