数据科学 - 生命周期
什么是数据科学生命周期?
数据科学生命周期是一种系统性的方法,用于寻找解决数据问题的方案,它展示了开发、交付/部署和维护数据科学项目所采取的步骤。我们可以假设一个一般的数据科学生命周期,其中包含一些最重要的常见步骤,如下面的图所示,但一些步骤可能因项目而异,因为每个项目都不同,所以生命周期可能也不同,因为并非每个数据科学项目都是以相同的方式构建的。
标准的数据科学生命周期方法包括使用机器学习算法和统计程序,从而产生更准确的预测模型。数据提取、准备、清洗、建模、评估等是数据科学中一些最重要的阶段。这种技术在数据科学领域被称为“跨行业数据挖掘标准程序”。
数据科学生命周期有多少个阶段?
数据科学生命周期主要有六个阶段:
识别问题并理解业务
数据科学生命周期从“为什么?”开始,就像任何其他业务生命周期一样。数据科学过程中最重要的部分之一是弄清楚问题是什么。这有助于找到一个明确的目标,围绕这个目标可以规划所有其他步骤。简而言之,尽早了解业务目标非常重要,因为它将决定分析的最终目标。
此阶段应评估业务趋势,评估类似分析的案例研究,并研究行业的领域。小组将根据现有员工、设备、时间和技术评估项目的可行性。当这些因素被发现和评估后,将制定初步假设以解决现有环境导致的业务问题。此阶段应:
明确说明问题,为什么必须立即解决这个问题并需要答案。
明确说明业务项目的潜在价值。
确定与项目相关的风险,包括伦理问题。
创建和传达灵活、高度集成的项目计划。
数据收集
数据科学生命周期的下一步是数据收集,这意味着从适当且可靠的来源获取原始数据。收集的数据可以是有组织的,也可以是无组织的。数据可以从网站日志、社交媒体数据、在线数据存储库,甚至是使用 API 从在线来源流式传输的数据中收集,也可以通过网络抓取或存储在 Excel 或任何其他来源中的数据中收集。
从事这项工作的人应该了解不同可用数据集之间的区别以及组织如何投资其数据。专业人士发现很难跟踪每条数据的来源以及它是否是最新的。在整个数据科学项目的生命周期中,跟踪此信息非常重要,因为它可以帮助检验假设或运行任何其他新实验。
信息可以通过调查收集,或者通过更普遍的自动化数据收集方法收集,例如互联网 cookie,这是未经分析的数据的主要来源。
我们还可以使用二手数据,这是一个开源数据集。有很多网站可以收集数据,例如:
Kaggle (https://www.kaggle.com/datasets),
Google 公共数据集 (https://cloud.google.com/bigquery/public-data/)
Python 中有一些预定义的数据集。让我们从 Python 中导入 Iris 数据集,并使用它来定义数据科学的各个阶段。
from sklearn.datasets import load_iris import pandas as pd # Load Data iris = load_iris() # Create a dataframe df = pd.DataFrame(iris.data, columns = iris.feature_names) df['target'] = iris.target X = iris.data
数据处理
从可靠的来源收集高质量数据后,下一步是处理它。数据处理的目的是确保获取的数据是否存在任何问题,以便在进入下一阶段之前可以解决这些问题。如果没有这一步,我们可能会产生错误或不准确的发现。
获取的数据可能存在若干问题。例如,数据在多行或多列中可能有多个缺失值。它可能包含多个异常值、不准确的数字、具有不同时区的 timestamps 等。数据可能存在日期范围问题。在某些国家/地区,日期格式为 DD/MM/YYYY,而在其他国家/地区,则写为 MM/DD/YYYY。在数据收集过程中,可能会出现许多问题,例如,如果数据是从多个温度计收集的,并且任何一个温度计都有缺陷,则可能需要丢弃或重新收集数据。
在此阶段,必须解决数据中的各种问题。其中一些问题有多种解决方案,例如,如果数据包含缺失值,我们可以用零或列的平均值替换它们。但是,如果列缺少大量值,则最好完全删除该列,因为它数据太少,无法在我们的数据科学生命周期方法中用于解决问题。
当时区全部混杂在一起时,我们无法使用这些列中的数据,可能必须删除它们,直到我们可以定义提供的 timestamps 中使用的时区。如果我们知道收集每个 timestamp 的时区,我们可以将所有 timestamp 数据转换为某个时区。这样,有很多方法可以解决获取的数据中可能存在的问题。
我们将访问数据,然后使用 Python 将其存储在数据框中。
from sklearn.datasets import load_iris import pandas as pd import numpy as np # Load Data iris = load_iris() # Create a dataframe df = pd.DataFrame(iris.data, columns = iris.feature_names) df['target'] = iris.target X = iris.data
所有数据都必须以数字表示形式用于机器学习模型。这意味着如果数据集包含分类数据,则必须将其转换为数字值,然后才能执行模型。因此,我们将实现标签编码。
标签编码
species = [] for i in range(len(df['target'])): if df['target'][i] == 0: species.append("setosa") elif df['target'][i] == 1: species.append('versicolor') else: species.append('virginica') df['species'] = species labels = np.asarray(df.species) df.sample(10) labels = np.asarray(df.species) from sklearn.preprocessing import LabelEncoder le = LabelEncoder() le.fit(labels) labels = le.transform(labels) df_selected1 = df.drop(['sepal length (cm)', 'sepal width (cm)', "species"], axis=1)
数据分析
数据分析探索性数据分析 (EDA) 是一组用于分析数据的可视化技术。使用此方法,我们可以获取有关数据统计摘要的具体详细信息。此外,我们将能够处理重复数字、异常值并识别集合中的趋势或模式。
在此阶段,我们试图更好地理解获取和处理的数据。我们应用统计和分析技术来对数据得出结论,并确定数据集中多列之间的关系。使用图片、图表、曲线图、绘图等,我们可以使用可视化来更好地理解和描述数据。
专业人员使用数据的统计技术(例如平均值和中位数)来更好地理解数据。他们还使用直方图、频谱分析和总体分布来可视化数据并评估其分布模式。将根据问题分析数据。
示例
以下代码用于检查数据集中是否存在任何空值:
df.isnull().sum()
输出
sepal length (cm) 0 sepal width (cm) 0 petal length (cm) 0 petal width (cm) 0 target 0 species 0 dtype: int64
从以上输出中,我们可以得出结论,数据集中没有空值,因为列中所有空值的总和为 0。
我们将使用 shape 参数来检查数据集的形状(行、列):
示例
df.shape
输出
(150, 5)
现在我们将使用 info() 来检查列及其数据类型:
示例
df.info()
输出
<class 'pandas.core.frame.DataFrame'> RangeIndex: 150 entries, 0 to 149 Data columns (total 5 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 sepal length (cm) 150 non-null float64 1 sepal width (cm) 150 non-null float64 2 petal length (cm) 150 non-null float64 3 petal width (cm) 150 non-null float64 4 target 150 non-null int64 dtypes: float64(4), int64(1) memory usage: 6.0 KB
只有一列包含类别数据,而其他列包含非空数值。
现在我们将对数据使用 describe()。describe() 方法对数据集执行基本统计计算,例如极值、数据点数、标准差等。任何缺失值或 NaN 值都会立即被忽略。describe() 方法准确地描述了数据的分布。
示例
df.describe()
输出
数据可视化
目标列 - 我们的目标列将是 Species 列,因为我们最终只需要基于物种的结果。
Matplotlib 和 seaborn 库将用于数据可视化。
以下是物种计数图:
示例
import seaborn as sns import matplotlib.pyplot as plt sns.countplot(x='species', data=df, ) plt.show()
输出
数据科学中还有许多其他可视化图表。要了解更多信息,请参考 https://tutorialspoint.com/machine_learning_with_python
数据建模
数据建模是数据科学最重要的方面之一,有时也被称为数据分析的核心。模型的预期输出应源自准备和分析的数据。在实现指定标准之前,将选择和构建执行数据模型所需的的环境。
在此阶段,我们开发数据集以训练和测试用于生产相关任务的模型。它还涉及选择正确的模式类型并确定问题是否涉及分类、回归或聚类。分析模型类型后,我们必须选择合适的实现算法。必须谨慎执行此操作,因为它对于从提供的数据中提取相关见解至关重要。
这里机器学习就派上用场了。机器学习基本上分为分类、回归或聚类模型,每个模型都有一些应用于数据集以获取相关信息的算法。此阶段使用这些模型。我们将在机器学习章节中详细讨论这些模型。
模型部署
我们已经到达数据科学生命周期的最后阶段。在详细的审查过程后,该模型终于可以以所需的格式和选择的渠道部署。请注意,除非机器学习模型部署到生产环境中,否则它没有任何用处。一般来说,这些模型与产品和应用程序相关联并集成在一起。
模型部署包含建立必要的交付方法,以将模型部署到市场消费者或其他系统。机器学习模型也正在设备上实施,并正在获得认可和吸引力。根据项目的复杂程度,此阶段可能从 Tableau 仪表板上的基本模型输出到拥有数百万用户的复杂云端部署。
谁参与数据科学生命周期?
从个人层面到组织层面,大量的数据正在生成、收集和存储在海量的服务器和数据仓库中。但是,您将如何访问这个庞大的数据存储库?这就是数据科学家发挥作用的地方,因为他是或她是一位从非结构化文本和统计数据中提取见解和模式的专家。
下面,我们介绍参与数据科学生命周期的多个数据科学团队的职位简介。
序号 | 职位和角色 |
---|---|
1 | 业务分析师
了解业务需求并找到合适的目标客户。 |
2 | 数据分析师
格式化和清理原始数据,解释和可视化它们以执行分析并提供相同的技术摘要。 |
3 | 数据科学家
提高机器学习模型的质量。 |
4 | 数据工程师
他们负责从社交网络、网站、博客和其他内部和外部网络来源收集数据,以便进行进一步分析。 |
5 | 数据架构师
连接、集中、保护和维护组织的数据源。 |
6 | 机器学习工程师
设计和实现与机器学习相关的算法和应用。 |