在本书的前面,我们讨论了训练和测试,将其作为防止过拟合并实际测量模型在从未见过的数据上的性能的好方法。 我们可以使用称为 K 折交叉验证的技术将其提升到一个新的水平。 因此,让我们谈谈您的武器库中用于对抗过拟合的强大工具; K 折交叉验证并了解其工作原理。
...
...
@@ -71,7 +71,7 @@
有 K 折交叉验证的变体,也可以将其随机化。 因此,您可以每次都随机选择训练数据集是什么,而只是保持随机地将事物分配给不同的存储桶并测量结果。 但是通常,当人们谈论 K 折交叉验证时,他们谈论的是这种特定技术,即您保留一个存储桶用于测试,其余的存储桶用于训练,然后当您为每个桶建立一个模型时,相对于测试数据集评估全部训练数据集。
# 使用 Scikit-learn 进行 K 折交叉验证的示例
# 使用 Scikit-learn 的 K 折交叉验证的示例
幸运的是,Scikit-learn 使得此操作确实非常容易,并且比进行常规培训/测试更容易! 进行 K 折叠交叉验证非常简单,因此您也可以这样做。
...
...
@@ -325,7 +325,7 @@ for result in results[:20]:
这是一个恶意数据被引入到我的数据流中的例子,我必须将其过滤掉。 因此,通过查看,我们不仅可以看到恶意攻击在查看 PHP 文件,而且还试图执行内容。 这不仅是在执行 GET 请求,还在于在脚本上进行发布请求,以实际尝试在我的网站上执行代码。
# 修改二-过滤发布请求
# 修改二-过滤 POST 请求
现在,我知道我所关心的数据是根据我要弄清楚的事情来确定的,那就是人们从我的网站获取网页。 因此,对我而言,合法的做法是从这些日志中过滤掉不是 GET 请求的所有内容。 所以,让我们接下来做。 我们将再次检查请求字段中是否有三个字段,然后还要检查操作是否得到执行。 如果不是,我们将完全忽略该行:
...
...
@@ -364,7 +364,7 @@ for result in results[:20]:
如果一个真正的人使用一个真正的浏览器来尝试获取此页面,它将说出诸如 Mozilla 或互联网Explorer 或 Chrome 之类的内容。 因此,这些请求似乎来自某种刮板。 同样,潜在的恶意流量无法识别其身份。