数据结构论坛

首页 » 分类 » 问答 » 如何掌握数据科学的Scikitlear
TUhjnbcbe - 2024/3/31 8:30:00
白癜风用什么药能治好 https://disease.39.net/bjzkbdfyy/170816/5629059.html

Scikit-learn是众多专门研究机器学习的scikit(即SciPyToolkits的简称)之一。scikit代表一个包,它太专业了,无法包含在SciPy中,因此被打包为许多scikit之一。另一个流行的scikit是scikit-image(即图像处理算法的集合)。

Scikit-learn是Python机器学习的支柱之一,因为它允许您构建机器学习模型并提供用于数据准备、模型后分析和评估的实用函数。

在本文中,我们将探索掌握scikit-learn以开始数据科学所需的基本知识。我尽量通过使用关键概念的手绘插图以及可用于自己项目的代码片段来提炼scikit-learn库的精髓。

scikit-learn中的数据表示

让我们从基础开始,考虑scikit-learn中使用的数据表示,它本质上是一个表格数据集。

在高层次上,对于监督学习问题,表格数据集将由X和y变量组成,而无监督学习问题将仅由X个变量组成。

在高层次上,X变量也称为自变量,它们可以是对感兴趣样本的定量或定性描述,而y变量也称为因变量,它们本质上是预测模型的目标或响应变量是为了预测而构建的。

scikit-learn中使用的典型表格数据的卡通插图如下所示。

例如,如果我们正在构建一个预测模型来预测个体是否患有疾病,疾病/非疾病状态是y变量,而通过临床测试结果获得的健康指标则用作X变量。

通过Pandas从CSV文件加载数据

实际上,数据集的内容可以存储在CSV文件中,并且可以通过pd.read_csv()函数使用Pandas库读取。因此,加载数据的数据结构称为PandasDataFrame。

让我们看看这个。

然后,可以使用广泛的Pandas函数在DataFrame上执行数据处理,用于处理缺失数据(即删除缺失数据或用估算值填充它们)、选择特定列或列范围、执行特征转换、条件过滤数据等

在下面的示例中,我们将DataFrame分离为X和y变量,这些变量将很快用于模型构建。

这产生了以下X数据矩阵:

以及以下y变量:

来自scikit-learn的实用函数

除了机器学习能力之外,scikit-learn的一大优点是它的效用函数。

创建人工数据集

例如,您可以使用scikit-learn(如下所示)创建人工数据集,用于尝试您可能设计的不同机器学习工作流程。

特征缩放

由于特征可能具有多个幅度差异的异构尺度,因此执行特征缩放是必不可少的。

常见的方法包括归一化(将特征缩放到0和1的统一范围)和标准化(缩放特征,使它们具有居中的均值和单位方差,即所有X特征的均值为0,标准差为1)。

在scikit-learn中,标准化可以使用normalize()函数执行,而标准化可以通过StandardScaler()函数执行。

特征选择

我喜欢使用的一种常见特征选择方法是简单地丢弃具有低方差的特征,因为它们提供的信号最少(如果我们从信号和噪声的角度考虑的话)。

特征工程

通常情况下,提供的特征可能并不适合模型构建。例如,分类特征要求我们将这些特征编码为与scikit-learn中的机器学习算法兼容的形式(即从字符串到整数或二进制数字形式)。

两种常见的分类特征类型包括:

1.名义特征——特征的分类值没有逻辑order并且彼此独立。例如,与洛杉矶、尔湾和曼谷等城市有关的分类值是名义值。

2.有序特征——特征的分类值具有逻辑顺序并且相互关联。例如,遵循低、中和高等尺度的分类值具有逻辑顺序和关系,使得低中高。

可以使用原生Python(数值映射)、Pandas(get_dummies()函数和map()方法)以及从scikit-learn内部(OneHotEncoder()、OrdinalEncoder()、LabelBinarizer()、LabelEncoder()执行此类特征编码),等等。)。

输入缺失数据

Scikit-learn还支持缺失值的插补,这是构建机器学习模型之前数据预处理的重要组成部分。用户可以通过sklearn.impute子模块中的SimpleImputer()和IterativeImpute()函数使用单变量或多变量插补方法。

数据拆分

一个常用的函数必须是数据拆分,我们可以将给定的输入X和y变量分离为训练和测试子集(X_train、y_train、X_test和y_test)。

下面的代码片段使用train_test_split()执行数据拆分,其中其输入参数是输入X和y变量,测试集的大小设置为0.2(或20%),随机种子数设置为42(这样代码块如果多次运行将产生相同的数据拆分)。

使用Pipeline创建工作流

顾名思义,我们可以利用Pipeline()函数来创建一个任务链或任务序列,这些任务涉及构建机器学习模型。例如,这可能是一个由特征插补、特征编码和模型训练组成的序列。

我们可以将管道视为使用一组类似乐高积木的模块化构建块来构建机器学习工作流。

有关使用scikit-learn构建自己的机器学习管道的更多信息,来自MachineLearningMastery的JasonBrownlee在以下教程中提供了详细说明:

ModelingPipelineOptimizationWithscikit-learn-MachineLearningMastery

Thistutorialpresentstwoessentialconceptsindatascienceandautomatedlearning.Oneisthemachinelearning…

machinelearningmastery.

1
查看完整版本: 如何掌握数据科学的Scikitlear