介绍

欢迎使用 Scikit-Learn 备忘单。

如果您是数据科学爱好者,那么您可能听说过 scikit-learn,这是一个开源 Python 库,可以轻松实现各种机器学习算法。对于任何想在数据科学领域取得优异成绩的人来说,这是必须了解的。

无论您已经熟悉 scikit-learn 还是刚刚开始,这份 scikit-learn 备忘单都是有用的资源。

对于那些已经开始了解该库但仍希望快速参考或不了解 scikit-learn 工作原理的人来说,它是完美的选择。

这份 scikit-learn 备忘单将指导您完成使用 scikit-learn 进行机器学习的基本步骤。

您将学习如何加载数据、预处理数据、创建模型、进行预测、验证模型,甚至调整模型以获得更好的性能。

有了这份 scikit-learn 备忘单,您就可以准备好解决遇到的任何机器学习问题了!

加载数据

加载数据是机器学习过程的第一步。在开始预处理和训练模型之前,您需要加载数据。

Scikit-learn 可以轻松地从各种来源加载数据,例如 CSV 文件、NumPy 数组,甚至 pandas DataFrame。

load_csvnumpy.load

例如,假设您有一个名为“data.csv”的 CSV 文件。要加载数据,只需使用以下代码:

如果您将数据存储在 NumPy 数组中,则可以使用以下代码加载它:

加载数据后,您就可以开始对其进行预处理,以便将其输入到您的模型中。但别担心,我们将在下一节中介绍这一点!

数据预处理

数据预处理是机器学习过程中的重要一步。

原始数据通常很混乱且难以处理,因此需要将其转换为干净且有用的格式。此过程可能涉及清理数据、将其转换为不同的格式或将数据重新调整到特定范围。

预处理数据有助于使数据更适合机器学习算法,从而获得更好的模型性能。

正常化

归一化是对数据进行转换的过程,使其范围为 [0,1]。这通常是对具有偏态分布的数值数据执行的。

标准化有助于使数据更适合假设数据呈正态分布的算法,例如决策树和神经网络。

要在 scikit-learn 中执行标准化,您可以使用预处理模块中的 MinMaxScaler 类。这是一个例子:

编码分类特征

与数值特征不同,类别特征是具有有限数量的不同类别的特征。

例如,汽车的“颜色”特征可能有“红色”、“绿色”和“蓝色”类别。

为了在机器学习模型中使用这些特征,我们需要将它们转换为数值表示。有多种方法可以做到这一点,包括:

  1. One-hot 编码:此方法将每个类别转换为一个新的二进制特征,该特征为 0 或 1,具体取决于特征中是否存在该类别。例如,如果“颜色”特征有 3 个类别(红色、绿色和蓝色),我们将生成 3 个新的二元特征,每个特征指示其中一个类别的存在或不存在。
  2. 标签编码:该方法将每个类别转换为数字标签,标签之间没有特定的顺序或关系。例如,“颜色”特征可以转换为标签 0、1 和 2,而没有为标签分配特定的顺序或含义。
  3. 序数编码:此方法与标签编码类似,但为类别分配有意义的顺序或排名。例如,“颜色”特征可以分配标签“红色”(1)、“绿色”(2) 和“蓝色”(3),其中红色被认为是最不优选的,蓝色是最优选的。
OneHotEncoderLabelEncoderOrdinalEncoder

以下是如何在 scikit-learn 中执行 one-hot 编码的示例:

以下是如何在 scikit-learn 中执行标签编码的示例:

以下是在 scikit-learn 中执行序数编码的示例:

标准化

标准化是对数据进行变换的过程,使其平均值为 0,标准差为 1。这通常对具有高斯分布的数值数据执行。

标准化有助于使数据更适合假设数据呈正态分布的算法,例如线性回归和高斯朴素贝叶斯。

标准定标器

二值化

二值化是将数值数据转换为二进制数据的过程,其中使用特定阈值来确定每个值是 0 还是 1。这通常对具有偏斜分布的数值数据执行。

二值化对于假设数据是二进制的算法非常有用,例如逻辑回归和支持向量机。

二值化器

消除缺失值

在许多数据集中,经常会遇到缺失值,这可能是由于各种原因造成的,例如数据收集缺失、系统错误或参与者不响应。

处理缺失值很重要,因为它会影响机器学习算法的结果。

估算缺失值涉及使用默认值(例如平均值或中位数)或使用更复杂的方法(例如回归或预测)填充缺失值。

SimpleImputerSimpleImputer
简单输入器

生成多项式特征

在某些机器学习问题中,向数据集添加多项式特征可能是有益的。

多项式特征是派生特征,是原始特征组合的结果。

例如,如果我们有两个特征 x1 和 x2,那么我们可以添加新特征 x1^2、x1x2 和 x2^2。

添加多项式特征背后的想法是捕获原始特征之间的非线性关系。

多项式特征
多项式特征interaction_onlyinclude_bias

以下是如何使用 PolynomialFeatures 类生成多项式特征的示例:

将数据分为训练集和测试集

在构建机器学习模型时,评估其性能非常重要,看看它是否可以很好地推广到未见过的数据。

这就是为什么我们将数据分为两部分:训练集和测试集。训练集用于训练模型,测试集用于评估其性能。

将数据拆分为训练集和测试集的最佳实践

  • 常见的做法是将数据分成 70-80% 用于训练,30-20% 用于测试。
  • 确保分割是随机的,以避免训练或测试数据中出现任何偏差。
  • 如果数据具有时间或顺序成分,则保持时间分割很重要。
  • 如果数据不平衡,对分割进行分层可以帮助确保训练集和测试集具有相似的类别分布。

以下是在 scikit-learn 中执行训练-测试分割的示例:

XY
测试大小
随机状态

监督学习算法

监督学习算法是一种机器学习算法,用于根据一组输入特征来预测目标变量。

Scikit-learn 拥有多种流行的监督学习算法,包括线性回归、逻辑回归、决策树、随机森林和支持向量机 (SVM)。

线性回归

线性回归是一种简单且填充的算法,用于解决回归问题。它假设自变量(输入特征)和因变量(目标)之间的关系是线性的。它找到最小化预测值与实际值之间的平方差之和的最佳拟合线。

LinearRegressionssklearn.linear_model

然后,您需要创建该类的实例,将其适合您的数据,并使用它进行预测。

下面是一些帮助您入门的示例代码:

逻辑回归

逻辑回归是一种用于分类问题的回归分析。它用于根据输入特征预测二元结果(0 或 1)。它使用逻辑函数将输入特征映射到概率,然后根据概率进行预测。

LogisticRegressionssklearn.线性_模型

决策树

决策树是用于回归和分类问题的流行算法。他们的工作原理是创建一个树状模型,根据输入特征做出决策。

在树的每个节点,算法根据提供最多信息增益的特征来分割数据。树的最终叶子代表模型所做的预测。

DecisionTreeClassifierDecisionTreeRegressorssklearn.tree

随机森林

随机森林是一种结合多个决策树进行预测的集成学习方法。它使用多个决策树来投票选出新输入数据的类别。最终的预测是得票最多的类别。

随机森林是一种多功能算法,可用于回归和分类任务。

要在 scikit-learn 中实现随机森林,您需要导入必要的库:

支持向量机(SVM)

支持向量机 (SVM) 是一种用于分类和回归的监督学习算法。

SVM 基于寻找将数据分为不同类的超平面的思想。类之间具有最大间隔的超平面是最佳超平面。

svcsklearn.svc

朴素贝叶斯

朴素贝叶斯是基于贝叶斯定理的一系列算法,该定理指出事件的概率与其先验概率和证据的可能性成正比。

在机器学习中,朴素贝叶斯算法用于分类任务,以其简单性和高效性而闻名。

朴素贝叶斯中的“朴素”来自于数据中的所有特征彼此独立的假设,这在现实场景中很少成立,但在许多应用程序中仍然有效。

在 scikit-learn 中实现朴素贝叶斯非常简单明了。

首先,我们需要导入必要的库并加载数据。

然后,我们将数据分为训练集和测试集。

GaussianNBsklearn.naive_bayes

最后,我们对测试数据进行预测并评估模型的性能。

克尼恩

KNN(即 K 最近邻)是一种简单且流行的机器学习算法,用于分类和回归任务。

KNN 背后的基本思想是相似的实例可能会产生相似的结果。

换句话说,该算法根据训练数据中 k 个最近邻居的多数票对新实例进行分类。

在 scikit-learn 中实现 KNN 也简单明了。

首先,我们需要导入必要的库并加载数据。

然后,我们将数据分为训练集和测试集。

KNeighborsClassifiersklearn.neighbors

最后,我们对测试数据进行预测并评估模型的性能。

无监督学习算法

无监督学习是机器学习的一种,其中算法不提供标记数据。

相反,算法必须自行识别数据内的模式和关系。它用于分析和理解复杂的数据集,可应用于聚类、降维和异常检测。

K 均值聚类

K-Means 是一种流行的聚类算法,它根据数据点的相似性将数据点划分为 k 个聚类。

该算法迭代更新簇的质心,直到找到最佳解决方案。它是一种用于对大型数据集进行聚类的有效算法,并广泛应用于各种应用中。

KMeanssklearn.cluster
合身
预测

主成分分析(PCA)

主成分分析(PCA)是一种用于无监督学习的降维技术。

PCA的主要目标是将高维数据转换为低维表示,同时保留尽可能多的信息。

低维表示称为“主成分”。这些主成分是捕获数据中最大方差的正交轴。

PCAsklearn.分解

下面是 PCA 实现的示例代码:

层次聚类

层次聚类是一种聚类算法,它通过递归地将数据点分成更小的组来构建聚类层次结构。

它可以通过两种方式进行:凝聚(自下而上)和分裂(自上而下)。当达到所需的簇数时,算法停止。

凝聚聚类sklearn.cluster
合身
标签_

基于密度的聚类 (DBSCAN)

基于密度的聚类,也称为 DBSCAN,是一种基于密度的聚类算法,它根据区域中数据点的密度形成聚类。它将密集区域视为簇并识别噪声或异常值。

该算法对于不同形状和大小的簇具有鲁棒性,并且适用于大型数据集。

DBSCANsklearn.cluster
合身
标签_

模型评估与选择

模型评估和选择是评估机器学习模型的性能并为特定任务选择最佳模型的过程。

这很重要,因为模型的性能在很大程度上取决于算法、参数和特征的选择。

准确性、F1 分数和 ROC AUC 等模型评估指标可帮助我们确定模型预测的质量。

使用交叉验证和网格搜索等模型选择技术从一组候选模型中找到最佳模型。

模型评估和选择的目标是确保所选模型能够很好地泛化到未见过的数据并做出准确的预测。

分类模型评估指标

准确度分数

准确率分数是模型做出的正确预测与预测总数的比率。它衡量模型预测目标标签的准确程度。

准确率_分数

分类报告

分类报告包括每个类别的精确度、召回率、F1 分数和支持度。它给出了模型性能的详细总结。

分类报告

混淆矩阵

混淆矩阵是用于评估分类算法性能的表。它有助于识别模型做出的正确和错误预测的数量。

混淆矩阵

回归模型评估指标

平均绝对误差

平均绝对误差是预测值与真实值之间的绝对差的平均值。它测量模型的绝对误差。

平均绝对误差

均方误差

均方误差是预测值与真实值之间的平方差的平均值。它测量模型的误差。

均方误差

R2 分数

R2 分数是回归模型的拟合优度度量。它衡量模型解释的目标变量中方差的比例。

r2_分数

聚类模型评估指标

调整后兰德指数 (ARI)

ARI 衡量真实标签和聚类标签之间的相似性。

ARI 分数范围为 -1 到 1,分数越高表示匹配越好。

调整后的兰德分数

均匀性

同质性衡量所有簇仅包含属于单个类的数据点的程度。

均匀性得分函数

V 测量

V-measure 是均匀性和完整性的调和平均值。

完整性衡量给定类的所有成员分配到同一簇的程度。

v_measure_score

交叉验证分数

交叉验证是一种用于评估机器学习模型性能的技术,方法是将可用数据划分为训练集和验证集,然后使用训练集训练模型并使用验证集评估模型。

这使我们能够获得对模型性能的估计,该估计较少依赖于训练和验证集的特定选择。

交叉验证分数

您可以指定要使用的模型、要用于验证的数据以及要使用的折叠数。

这是一个例子:

超参数调优

网格搜索

网格搜索是 scikit-learn 中使用的一种模型调整技术,用于查找给定机器学习模型的最佳超参数集。

该算法的工作原理是针对网格中定义的每个超参数组合训练和评估模型。

最佳超参数集是导致最高准确度或最低误差的参数,具体取决于所使用的评估指标。

以下是如何使用网格搜索来调整 scikit-learn 中的决策树分类器的示例:

随机参数优化

随机参数优化是网格搜索的一种变体,它从定义的分布中随机采样超参数的组合。

该技术比大参数空间的网格搜索更快,因为它只需要评估可能组合的随机子集。

以下是如何使用随机参数优化来调整 scikit-learn 中支持向量机分类器的示例:

最终判决

scikit-learn 库提供了广泛的用于构建和评估机器学习模型的功能。

这份 scikit-learn 备忘单可以为任何数据科学家或机器学习从业者提供有用的参考。

无论您是刚刚进入该领域的初学者还是经验丰富的从业者,这份 scikit-learn 备忘单对于任何想要使用 scikit-learn 库的人来说都是一个极好的资源。

总之,这份备忘单广泛涵盖了机器学习和 scikit-learn 中的关键概念和技术。

您还可以阅读:

我希望这篇文章对您有所帮助。不断学习不断练习。

快乐编码!