6个鲜为人知的Scikit-Learn功能,可以为您节省时间

6 Lesser-Known Scikit-Learn Features That Will Save You Time

6个鲜为人知的Scikit-Learn功能,可以为您节省时间

对于许多学习数据科学的人来说,Scikit-Learn 往往是他们接触的第一个机器学习库。这是因为 Scikit-Learn 提供了各种对模型开发有用的 API,同时对初学者来说仍然易于使用。

尽管它们可能很有帮助,但 Scikit-Learn 的许多功能很少被探索,并具有未开发的潜力。本文将探讨六个可以为您节省时间的鲜为人知的功能。

1. 验证曲线

我们将要探讨的第一个函数是 Scikit-Learn 的 validation curve 函数。从名称中,您可以猜到它执行某种验证,但它执行的不仅仅是简单的验证。该函数会探索机器学习模型在特定超参数的各种值下的性能。

使用交叉验证方法,验证曲线函数会根据超参数值的范围评估训练和测试性能。该过程将产生两组分数,我们可以直观地进行比较。

让我们用样本数据尝试一下这个函数并可视化结果。首先,让我们加载样本数据并设置我们要探索的超参数范围。在这种情况下,我们将探索 SVC 模型在各种 gamma 超参数下的准确性表现。

执行上述代码后,您将获得两个分数:train_scorestest_scores

它们都将分配类似下面的分数数组。

我们可以使用类似下面的代码来可视化验证曲线。

6 Lesser-Known Scikit-Learn Features That Will Save You Time

该曲线告诉我们超参数如何影响模型的性能。使用验证曲线,我们可以找到超参数的最佳值,并比依赖简单的训练-测试拆分更好地估计它。

尝试在您的模型开发过程中使用验证曲线来指导您开发最佳模型,并避免过拟合等问题。

2. 模型校准

当我们开发机器学习分类器模型时,我们需要记住,仅仅提供正确的分类预测是不够的;预测相关的概率也必须可靠。确保概率可靠的过程称为校准。

校准过程会调整模型的概率估计。该技术将概率推至反映预测的真实可能性,使其不过度自信或不自信。未校准的模型可能会预测事件的概率为 90%,而实际成功率却低得多,这意味着模型过于自信。这就是为什么我们需要校准模型。

通过校准模型,我们可以提高对模型预测的信任度,并告知用户模型的实际风险的实际估计。

让我们尝试使用 Scikit-Learn 进行校准过程。该库提供了一个诊断函数(calibration_curve)和一个模型校准类(CalibratedClassifierCV)。

我们将使用乳腺癌数据和逻辑回归模型作为基础。然后,我们将比较原始模型和校准模型的概率。

6 Lesser-Known Scikit-Learn Features That Will Save You Time

我们可以看到,校准后的逻辑回归比原始模型更接近完美校准模型。这意味着校准后的模型可以更好地估计实际风险,尽管它仍然不是理想的。

尝试使用校准方法来提高模型的预测能力。

3. 置换重要性

每当我们处理机器学习模型时,我们都会使用数据特征来提供预测结果。然而,并非所有特征都以相同的方式为预测做出贡献。

permutation_importance() 方法是通过随机置换(更改)特征值并评估置换后的模型性能来衡量特征对模型性能的贡献。如果模型性能下降,则该特征会影响模型;反之,如果模型性能不变,则表明该特征对于特定的模型性能可能不是那么有用。

该技术简单直观,使其有助于解释任何模型的内部决策过程。对于没有内置特征重要性方法的模型非常有益。

让我们用 Python 代码示例来尝试一下。我们将使用与我们之前的示例类似的数据和模型。

通过上面的代码,我们得到了模型和置换重要性结果,我们将分析特征对模型的影响。让我们看一下置换重要性的平均值和标准差结果。

结果如下。

我们还可以可视化上面的结果,以便更好地理解模型性能。

6 Lesser-Known Scikit-Learn Features That Will Save You Time

可视化显示,花瓣长度对特征性能影响最大,而花萼宽度没有影响。总有不确定性,这由标准差表示,但我们可以通过置换重要性技术得出花瓣长度影响最大的结论。

这是您可以在下一个项目中使用的简单特征重要性技术。

4. 特征哈希

在为数据科学建模处理特征时,我经常发现高维特征占用内存太多,影响了应用程序的整体性能。有许多方法可以提高性能,例如降维或特征选择。哈希方法是另一种可能很少使用但可能很有用的方法。

哈希是将数据转换为固定大小的稀疏数字矩阵。通过对每个特征应用哈希函数,可以将表示的特征映射到稀疏矩阵。我们将通过 FeatureHasher 使用哈希函数来计算对应于名称的矩阵列。

让我们用 Python 代码尝试一下。

您将看到输出类似下面的内容。

该数据集已表示为具有 10 个不同特征的稀疏矩阵。您可以指定所需的哈希特征数量,以平衡内存使用和信息丢失。

5. 鲁棒缩放器

真实世界的数据很少是干净的,而且往往充满了异常值。虽然异常值本身并没有错,并且可能提供有助于实际洞察的信息,但有时它会扭曲我们的模型结果。

有许多缩放异常值的技术,但有时它们会引入偏差。这就是为什么鲁棒缩放对于帮助预处理我们的数据很重要。鲁棒缩放器通过移除中位数并根据 IQR 进行缩放来转换数据,而不是使用均值和标准差。

鲁棒缩放器适用于只有少数极端位置异常值的情况。通过应用它,数据集是稳定的,并且不会受到异常值太多影响,这使得它对任何机器学习模型的开发都有用。

以下是使用鲁棒缩放器的示例。让我们使用 Iris 数据集示例,并在数据集中引入一个异常值。

上面的代码可以轻松地缩放我们的异常值数据。如果您在处理异常值时遇到困难,请自行尝试。

6. 特征联合

特征联合是 Scikit-Learn 的一项功能,可在管道中组合多个特征转换。特征联合不是顺序转换相同的特征,而是同时将数据输入到几个转换器中,以提供所有转换后的特征。

这是一项有用的功能,其中需要不同的转换器来捕获数据的不同方面,并且它们需要存在于数据集中。一种转换器可能用于 PCA 技术,而其他转换器则使用鲁棒缩放。

让我们用下面的代码尝试一下。例如,我们可以创建 PCA 和多项式特征转换器。

下面显示了转换后的特征的示例结果。

结果包含我们之前转换的 PCA 和多项式特征。

尝试试验各种转换,看看它们是否适合您的分析。

结论

Scikit-Learn 是许多数据科学家用来轻松开发数据模型的库。它易于使用,并提供了许多对我们的模型工作有用的功能,但其中许多功能似乎未被充分利用,尽管它们可以为您节省时间。

在本文中,我们探讨了其中六个未被充分利用的功能,从验证曲线到特征哈希,再到一个不易受异常值影响的鲁棒缩放器。希望您在此文中有所收获,并且希望这对您有所帮助!

6 个鲜为人知的 Scikit-Learn 功能,可以节省您的时间 的 3 条回复

  1. Piotr Karmelita 2025 年 3 月 22 日晚上 10:44 #

    我之前还不知道这些功能,感谢 Cornellius 提供的精彩内容。鲁棒缩放器确实激励我获取真实世界的数据,我渴望了解更多。祝好!😊

    • James Carmichael 2025 年 3 月 23 日上午 7:19 #

      不客气!

  2. nick mcelwaine 2025 年 3 月 28 日晚上 10:55 #

    最有趣的。我发现 probability_importance 与其他方法相比非常出色。

留下回复

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。