TranslateProject/translated/tech/20180926 How to use the Scikit-learn Python library for data science projects.md
2018-10-09 00:37:22 +08:00

7.3 KiB
Raw Blame History

如何将Scikit-learn Python库用于数据科学项目

Scikit-learn Python库最初于2007年发布从头到尾都通常用于解决机器学习和数据科学问题。 多功能库提供整洁一致高效的API和全面的在线文档。

什么是Scikit-learn

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

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

Scikit-learn提供了广泛的内置算法可以充分用于数据科学项目。

以下是使用Scikit-learn库的主要方法。

1. 分类

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

Scikit-learn中的分类算法包括

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

2. 回归

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

回归算法包括:

  • SVM
  • 岭回归Ridge regression
  • LassoLCTT译者注Lasso 即 least absolute shrinkage and selection operator又译最小绝对值收敛和选择算子、套索算法

3. 聚类

Scikit-learn聚类工具用于自动将具有相同特征的数据分组。 例如,可以根据客户数据的地点对客户数据进行细分。

聚类算法包括:

  • K-means
  • 谱聚类Spectral clustering
  • Mean-shift

4. 降维

降维降低了用于分析的随机变量的数量。 例如,为了提高可视化效率,可能不会考虑外围数据。

降维算法包括:

  • 主成分分析Principal component analysisPCA
  • 功能选择Feature selection
  • 非负矩阵分解Non-negative matrix factorization

5. 模型选择

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

通过参数调整能够增强精度的模型选择模块包括:

  • 网格搜索Grid search
  • 交叉验证Cross-validation
  • 指标Metrics

6. 预处理

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

预处理模块包括:

  • 预处理
  • 特征提取

Scikit-learn库示例

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

我们将使用鸢尾花花卉数据集该数据集包含在Scikit-learn库中。 鸢尾花数据集包含有关三种花种的150个细节三种花种分别为

  • Setosa-标记为0
  • Versicolor-标记为1
  • Virginica-标记为2

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

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

第1步导入库

由于Iris数据集包含在Scikit-learn数据科学库中我们可以将其加载到我们的工作区中如下所示

from sklearn import datasets
iris = datasets.load_iris()

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

第2步获取数据集特征

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

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

例如,我们可以利用iris.data输出有关Iris花卉数据集的信息。

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  # 表示数据数组的变量
box_target = iris.target  # 表示标签数组的变量
sns.boxplot(data = box_data,width=0.5,fliersize=5)
sns.set(rc={'figure.figsize':(2,15)})

让我们看看结果:

在横轴上:

  • 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  # 表示数据数组的变量
box_target = iris.target  # 表示标签数组的变量
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库创建机器学习应用程序的视频。

有什么评价或者疑问吗? 欢迎在下面分享。


via: https://opensource.com/article/18/9/how-use-scikit-learn-data-science-projects

作者:Dr.Michael J.Garbade 选题:lujun9972 译者:Flowsnow 校对:校对者ID

本文由 LCTT 原创编译,Linux中国 荣誉推出