如何使用 Scikit-learn Python 库进行数据科学项目

多功能的 Python 库为数据分析和数据挖掘提供强大的机器学习工具。
236 位读者喜欢这篇文章。
Getting started with SQL

Opensource.com

Scikit-learn Python 库最初于 2007 年发布,通常用于解决从开始到结束的机器学习和数据科学问题。这个多功能的库提供了一个简洁、一致且高效的 API 以及详尽的在线文档。

什么是 Scikit-learn?

Scikit-learn 是一个开源 Python 库,拥有用于数据分析和数据挖掘的强大工具。它在 BSD 许可证下可用,并基于以下机器学习库构建

  • NumPy,一个用于操作多维数组和矩阵的库。它还拥有广泛的数学函数汇编,用于执行各种计算。
  • SciPy,一个由各种库组成的生态系统,用于完成技术计算任务。
  • Matplotlib,一个用于绘制各种图表和图形的库。

Scikit-learn 提供了广泛的内置算法,可以最大限度地利用数据科学项目。

以下是 Scikit-learn 库的主要用途。

1. 分类

分类工具识别与提供的数据相关的类别。例如,它们可以用于将电子邮件消息分类为垃圾邮件或非垃圾邮件。

Scikit-learn 中的分类算法包括

  • 支持向量机 (SVM)
  • 最近邻
  • 随机森林

2. 回归

回归涉及创建一个模型,试图理解输入和输出数据之间的关系。例如,回归工具可用于理解股票价格的行为。

回归算法包括

  • SVM
  • 岭回归
  • Lasso

3. 聚类

Scikit-learn 聚类工具用于自动将具有相同特征的数据分组到集合中。例如,可以根据客户的所在地对客户数据进行分段。

聚类算法包括

  • K-均值
  • 谱聚类
  • 均值漂移

4. 降维

降维降低了分析中随机变量的数量。例如,为了提高可视化的效率,可能不考虑异常数据。

降维算法包括

  • 主成分分析 (PCA)
  • 特征选择
  • 非负矩阵分解

5. 模型选择

模型选择算法提供工具来比较、验证和选择在数据科学项目中使用的最佳参数和模型。

可以通过参数调整提供更高精度的模型选择模块包括

  • 网格搜索
  • 交叉验证
  • 指标

6. 预处理

Scikit-learn 预处理工具在数据分析期间的特征提取和归一化中非常重要。例如,您可以使用这些工具来转换输入数据(例如文本)并在分析中应用其特征。

预处理模块包括

  • 预处理
  • 特征提取

Scikit-learn 库示例

让我们使用一个简单的示例来说明如何在数据科学项目中使用 Scikit-learn 库。

我们将使用 鸢尾花数据集,它包含在 Scikit-learn 库中。鸢尾花数据集包含 150 个关于三种花卉物种的详细信息

  • 山鸢尾 — 标记为 0
  • 变色鸢尾 — 标记为 1
  • 维吉尼亚鸢尾 — 标记为 2

数据集包括每种花卉物种的以下特征(厘米为单位)

  • 萼片长度
  • 萼片宽度
  • 花瓣长度
  • 花瓣宽度

步骤 1:导入库

由于鸢尾花数据集包含在 Scikit-learn 数据科学库中,我们可以按如下方式将其加载到我们的工作区中

from sklearn import datasets
iris = datasets.load_iris()

这些命令从 sklearn 导入 datasets 模块,然后使用 datasets 中的 load_digits() 方法将数据包含在工作区中。

步骤 2:获取数据集特征

datasets 模块包含几个使您更容易熟悉处理数据的方法。

在 Scikit-learn 中,数据集是指一个类似字典的对象,其中包含关于数据的所有详细信息。数据使用 .data 键存储,这是一个数组列表。

例如,我们可以利用 iris.data 来输出关于鸢尾花数据集的信息。

print(iris.data)

这是输出结果(结果已被截断)

[[5.1 3.5 1.4 0.2]
 [4.9 3.  1.4 0.2]
 [4.7 3.2 1.3 0.2]
 [4.6 3.1 1.5 0.2]
 [5.  3.6 1.4 0.2]
 [5.4 3.9 1.7 0.4]
 [4.6 3.4 1.4 0.3]
 [5.  3.4 1.5 0.2]
 [4.4 2.9 1.4 0.2]
 [4.9 3.1 1.5 0.1]
 [5.4 3.7 1.5 0.2]
 [4.8 3.4 1.6 0.2]
 [4.8 3.  1.4 0.1]
 [4.3 3.  1.1 0.1]
 [5.8 4.  1.2 0.2]
 [5.7 4.4 1.5 0.4]
 [5.4 3.9 1.3 0.4]
 [5.1 3.5 1.4 0.3]

让我们也使用 iris.target 来提供关于花卉不同标签的信息。

print(iris.target)

这是输出结果

[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2
 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
 2 2]

如果我们使用 iris.target_names,我们将输出数据集中找到的标签名称数组。

print(iris.target_names)

这是运行 Python 代码后的结果

['setosa' 'versicolor' 'virginica']

步骤 3:可视化数据集

我们可以使用箱线图来生成鸢尾花数据集的可视化描述。箱线图说明了数据如何通过它们的四分位数分布在平面上。

以下是如何实现此目的

import seaborn as sns
box_data = iris.data #variable representing the data array
box_target = iris.target #variable representing the labels array
sns.boxplot(data = box_data,width=0.5,fliersize=5)
sns.set(rc={'figure.figsize':(2,15)})

让我们看看结果

Box plot

在水平轴上

  • 0 是萼片长度
  • 1 是萼片宽度
  • 2 是花瓣长度
  • 3 是花瓣宽度

垂直轴是以厘米为单位的尺寸。

总结

这是这个简单的 Scikit-learn 数据科学教程的完整代码。

from sklearn import datasets
iris = datasets.load_iris()
print(iris.data)
print(iris.target)
print(iris.target_names)
import seaborn as sns
box_data = iris.data #variable representing the data array
box_target = iris.target #variable representing the labels array
sns.boxplot(data = box_data,width=0.5,fliersize=5)
sns.set(rc={'figure.figsize':(2,15)})

Scikit-learn 是一个多功能的 Python 库,您可以使用它高效地完成数据科学项目。

如果您想了解更多信息,请查看 LiveEdu 上的教程,例如 Andrey Bulezyuk 关于使用 Scikit-learn 库创建 机器学习应用程序的视频。

您有任何问题或意见吗?请随时在下方分享。

Michael Livecoding.tv
Michael 博士是位于洛杉矶的 Education Ecosystem Inc.(前身为 Livecoding.tv)的创始人兼首席执行官。Education Ecosystem (LEDU) 是一个基于项目的学习平台,教授学生如何在编程、游戏开发、人工智能、网络安全、数据科学和区块链等领域构建真实的产品。

1 条评论

维基。

© . All rights reserved.