|
|
|
@ -3224,13 +3224,33 @@
|
|
|
|
|
"print(y_test.shape)"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "markdown",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"source": [
|
|
|
|
|
"切分完成,6622条数据为训练集,2839为预测集。\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"在这个notebook还有最后一步:建立我们的baseline基准线。"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "markdown",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"source": [
|
|
|
|
|
"## 建立一个Baseline\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"### 衡量标准:平均绝对误差 - Mean Absolute Error(MAE)"
|
|
|
|
|
"建立一个Baseline是很重要的。如果我们建立的模型不能超过随机猜测(即50%的成功率),那么我们可能不得不承认机器学习不适合这个问题。或者是我们没有使用正确的模型,亦或者是需要更多的数据,也可能是有一个更简单的解决方案不需要机器学习。\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"对于回归任务,一个很好的简单基线是测试集上的所有目标的中值。这很容易实现,并为我们的模型设置了一个相对较低的门槛:如果它们不能比猜测中值更好,那么我们就需要重新考虑我们的方法。"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "markdown",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"source": [
|
|
|
|
|
"## 衡量标准:平均绝对误差 - Mean Absolute Error(MAE)\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"在机器学习任务中使用了许多度量标准,很难知道要选择哪一个。大部分时间,它将取决于特定的问题,如果你有一个特定的目标来优化。[AndrewNg的建议使用单一的实值度量来比较模型](https://www.coursera.org/learn/machine-learning-projects/lecture/wIKkC/single-number-evaluation-metric),因为它简化了评估过程。与其计算多个指标并试图确定每个指标的重要性,不如使用单个数字。在这种情况下,由于我们进行了回归,所以平均绝对误差(MAE)是一个合适的度量。这也是可解释的,它代表所有单个观测值与算术平均值的偏差的绝对值的平均。"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
@ -3264,6 +3284,30 @@
|
|
|
|
|
"print(\"Baseline Performance on the test set: MAE = %0.4f\" % mae(y_test, baseline_guess))"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "markdown",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"source": [
|
|
|
|
|
"这表明我们对测试集的平均估计值偏离了大约25个点。分数在1到100之间,所以这意味着一个简单方法的平均误差为25%。中值猜测的天真方法为我们的模型提供了一个较低的基线!"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "markdown",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"source": [
|
|
|
|
|
"## 总结\n",
|
|
|
|
|
"在这第一部分中,我们执行了机器学习问题的前三个步骤:\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"* 清理并格式化原始数据\n",
|
|
|
|
|
"* 进行了探索性的数据分析\n",
|
|
|
|
|
"* 利用特征工程和特征选择开发了一组特征来训练我们的模型\n",
|
|
|
|
|
"* 完成了建立基线度量的关键任务,这样我们就可以确定我们的模型是否比猜测更好!\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"希望你开始了解流程的每一部分是如何流入下一部分的:清理数据并将其转换为适当的格式,让我们进行探索性的数据分析。然后EDA在特征工程和选择阶段。这三个步骤通常是按这个顺序执行的,不过我们会根据建模结果进行更多的EDA或特征工程。数据科学是一个迭代过程,在这个过程中,我们总是在寻找改进我们先前工作的方法。这意味着我们不必一开始就把事情做好(尽管我们可以尽最大努力),因为一旦我们对问题有了更多的了解,几乎总是有机会重新审视我们的决定。\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"在第二部分中,我们将重点介绍几种机器学习方法的实现,选择最佳模型,并使用交叉验证的超参数调整对模型进行优化。最后一步,我们将保存我们开发的数据集,以便在下一部分中再次使用。"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "markdown",
|
|
|
|
|
"metadata": {},
|
|
|
|
@ -3283,13 +3327,6 @@
|
|
|
|
|
"y.to_csv(\"data/training_labels.csv\", index=False)\n",
|
|
|
|
|
"y_test.to_csv(\"data/testing_labels.csv\", index=False)"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"execution_count": null,
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": []
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
"metadata": {
|
|
|
|
|