IBM-数据科学-X-笔记-全-
IBM 数据科学 X 笔记(全)
001:项目场景与概述 🚀
在本节课中,我们将介绍毕业项目的整体场景与概述。我们将了解商业航天时代的背景,以及SpaceX如何通过可重复使用的火箭技术降低成本。最后,我们会明确你在这个毕业项目中将要扮演的角色和需要完成的核心任务。


商业航天时代已经到来,多家公司正在让太空旅行变得人人可负担。维珍银河公司提供亚轨道太空飞行服务。

火箭实验室是一家小型卫星发射服务提供商。蓝色起源公司则制造亚轨道和轨道可重复使用火箭。



其中,或许最成功的是SpaceX。SpaceX的成就包括向国际空间站运送航天器。


星链是一个卫星互联网星座,提供卫星互联网接入服务,并向太空运送载人任务。
SpaceX能够做到这一点的一个原因是其火箭发射成本相对低廉。😊



SpaceX在其网站上宣传猎鹰9号火箭的发射成本为6200万美元。其他供应商的每次发射成本高达1.65亿美元以上。节省大部分成本的原因在于SpaceX能够重复使用第一级火箭。
因此,如果我们能确定第一级火箭是否会成功着陆,我们就能确定一次发射的成本。


SpaceX的猎鹰9号发射过程与常规火箭类似。为了帮助我们理解猎鹰9号的规模,我们将使用来自Forest Cattch的图表。他是一位3D艺术家,也是ZLdesign.com的软件工程师,他制作关于太空飞行和航天器的信息图表与艺术作品,同时也开发软件。有效载荷被封装在整流罩内。

第二级火箭帮助将有效载荷送入轨道,但大部分工作是由第一级完成的。第一级如图所示。这一级完成了大部分工作,并且比第二级大得多。在这里,我们看到第一级火箭与一个人以及几个其他地标建筑的对比。这一级体积相当庞大且昂贵。


与其他火箭供应商不同,SpaceX的猎鹰9号能够回收第一级火箭。有时第一级不会成功着陆,有时它会像这个片段中显示的那样坠毁。其他时候,SpaceX会根据任务参数(如有效载荷、轨道和客户要求)选择牺牲第一级。


在这个毕业项目中,你将扮演一家新火箭公司Space Y的数据科学家角色,该公司希望与SpaceX竞争。Space Y由亿万富翁实业家Alon Mask创立。
你的工作是确定每次发射的价格。你将通过收集有关SpaceX的信息并为你的团队创建仪表板来完成这项工作。你还将确定SpaceX是否会重复使用第一级火箭。
你将不使用火箭科学来确定第一级是否会成功着陆,而是训练一个机器学习模型,并利用公开信息来预测SpaceX是否会重复使用第一级。


本节课中,我们一起学习了商业航天领域的概况,重点了解了SpaceX通过可重复使用技术实现成本优势的关键。我们明确了毕业项目的核心目标:扮演Space Y公司的数据科学家,通过数据收集、分析和机器学习建模,来预测火箭发射成本及第一级回收的可能性。在接下来的课程中,我们将深入探讨如何具体执行这些任务。
002:数据收集概述 📊


在本节课中,我们将学习如何通过API收集数据。具体来说,我们将使用SpaceX的API来获取火箭发射数据,并了解如何将这些数据处理成可用于分析的格式。
项目与数据源介绍 🚀



在这个毕业项目中,我们将使用从API收集的SpaceX发射数据。具体来说,我们将使用SpaceXRt API。该API提供关于发射的数据,包括使用的火箭信息、运送的有效载荷、发射规格、着陆规格以及着陆结果。我们的目标是利用这些数据来预测SpaceX是否会尝试回收火箭。


了解API端点 🔗
SpaceX API的端点(或URL)以 api.spacexdata.com/v4/ 开头。存在不同的端点,例如 /capsules 和 /launches。在本项目中,我们将使用端点 api.spacexdata.com/v4/launches/past。接下来,让我们看看这个API是如何工作的。




发起请求与获取数据 📡

我们将使用上述URL来定位API的特定端点,以获取过去的发射数据。我们将使用Python的 requests 库发起一个GET请求来获取这些数据。通过调用 .json() 方法可以查看请求的结果。响应将以JSON格式返回,具体来说,是一个JSON对象列表,其中每个对象代表一次发射。
数据转换与规范化 📋




由于我们使用的是API,你会注意到当我们获得响应时,数据是JSON格式。具体来说,我们得到一个JSON对象列表,每个对象代表一次发射。为了将这个JSON转换为数据框(DataFrame),我们可以使用 json_normalize 函数。这个函数允许我们将结构化的JSON数据规范化成一个扁平的表格。
以下是一个示例代码片段,展示了如何发起请求并转换数据:

import requests
import pandas as pd
from pandas import json_normalize



# 发起GET请求
url = "https://api.spacexdata.com/v4/launches/past"
response = requests.get(url)
data = response.json()

# 将JSON数据转换为DataFrame
df = json_normalize(data)
数据清洗与处理 🧹
我们获得的原始数据需要被转换成干净的数据集,以便进行有意义的分析。这包括使用API进行数据整理、数据抽样以及处理缺失值。


在数据中,你可能会注意到某些列(如“rocket”)只包含标识号,而不是实际数据。这意味着我们需要再次使用API,针对另一个端点来收集每个ID号的具体信息。项目中已经为你创建了相应的函数,它们将使用以下端点:booster、launchpad、payload 和 core。收集到的数据将存储在列表中,并用于创建我们的最终数据集。
另一个问题是,我们获得的发射数据包含了“猎鹰1号”助推器的数据,而我们只需要“猎鹰9号”的数据。在实验中,你需要找出如何过滤和抽样数据,以移除“猎鹰1号”的发射记录。


处理缺失值 ⚠️


最后,并非所有收集到的数据都是完美的。我们最终可能会遇到包含缺失值的数据。为了使数据集适合分析,有时我们必须处理这些缺失值。在本例中,我们将处理“payload_mass”列中的缺失值。


在实验中,你需要找出一种方法来计算有效载荷质量数据的平均值,然后用这个平均值替换“payload_mass”中的缺失值。我们将暂时保留“landing_pad”列中的缺失值,因为它们表示未使用着陆场的情况。这将在后续使用独热编码(One-Hot Encoding)时进行处理。
以下是处理缺失值的示例步骤:
- 计算“payload_mass”列的平均值。
- 用计算出的平均值填充该列中的缺失值。
# 计算平均值并填充缺失值
mean_payload_mass = df['payload_mass'].mean()
df['payload_mass'].fillna(mean_payload_mass, inplace=True)




总结 📝




本节课中,我们一起学习了如何通过API收集SpaceX发射数据。我们介绍了API端点的概念,演示了如何使用 requests 库发起GET请求并获取JSON格式的响应。接着,我们学习了如何使用 json_normalize 函数将复杂的JSON数据转换为结构化的Pandas DataFrame。最后,我们探讨了数据清洗的关键步骤,包括过滤特定数据(如只保留猎鹰9号的数据)以及处理数据集中的缺失值,特别是用平均值填充“payload_mass”列的缺失值。这些步骤为我们后续的数据分析和建模奠定了坚实的基础。
003:数据整理概述 📊
在本节课中,我们将学习数据整理的基本概念和步骤。数据整理是数据科学项目中的关键环节,它涉及对原始数据进行清洗、转换和整理,以便后续分析和建模使用。
数据属性回顾
上一节我们介绍了数据科学项目的整体流程,本节中我们来看看数据集中的具体属性。我们将回顾数据集中的一些关键列及其含义。
以下是数据集中的主要属性列表:
- Flight Number:飞行编号
- Date:日期
- Booster Version:助推器版本
- Payload Mass:有效载荷质量
- Orbit:轨道
- Launch Site:发射场
- Outcome:结果(第一级火箭着陆状态)
- Gridfins:用于辅助着陆的栅格翼
- Reused:着陆腿是否复用
- Landing Pad:着陆平台区块
- Reused Count:复用次数
- Serial:序列号
- Longitude and Latitude:发射场的经度和纬度
关键属性详解
现在,让我们详细查看其中几个重要的属性。
发射场 (Launch Site)
Launch Site 列包含了不同的发射场地。
以下是主要的发射场:
- Vandenberg AFB Space Launch Complex
- Kennedy Space Center
- CCAFS SLC 40
轨道类型 (Orbit)
Orbit 列表示有效载荷进入的不同轨道类型。
例如:
- LEO (近地轨道):一种以地球为中心、高度在2000公里以下的轨道。
- GTO (地球同步转移轨道):一种高地球轨道,允许卫星与地球自转同步。它位于地球赤道上方22,236英里(35,786公里)处。
着陆结果 (Outcome)
Outcome 列指示第一级火箭是否成功着陆。该列包含八种可能的状态。

例如:

- True ASDS:表示助推器成功降落在无人船上,如下方循环视频所示。
- False ASDS:表示任务结果未能成功降落在无人船上,如下方循环视频所示。


数据转换目标
对于 Outcome 列,我们希望将着陆结果转换为二分类的标签 Y,其值为 0 或 1。
转换规则如下:
0代表坏结果,即助推器未能着陆。1代表好结果,即助推器成功着陆。
因此,变量 Y 将作为一个分类变量,用于表示每次发射的最终结果。


本节课中我们一起学习了数据整理的基本步骤,包括识别数据集的关键属性、理解其含义,并明确了将着陆结果(Outcome)转换为机器学习模型可用的二分类标签(Y)的目标。这是为后续数据分析和模型构建做准备的重要基础。
004:探索性数据分析概述 📊



在本节课中,我们将学习探索性数据分析(EDA)的基本概念及其在数据科学项目中的重要性。探索性数据分析是任何数据科学项目的第一步,它帮助我们理解数据、发现模式并识别潜在的特征,为后续的机器学习建模做好准备。
什么是探索性数据分析? 🔍


探索性数据分析是任何数据科学项目的第一步。在第一个实验中,你将使用数据库进行一些探索性数据分析。在第二个实验中,你将查看数据是否可用于自动判断猎鹰9号火箭的第二级是否能成功着陆。


识别关键特征 🎯

某些属性可用于判断火箭第一级是否能被重复使用。然后,我们可以将这些特征与机器学习结合使用,自动预测第一级是否能成功着陆。

例如,我们可以观察到自2013年以来,火箭发射的成功率有所提高。我们可以通过发射次数将这一趋势转化为一个特征。

分析发射场成功率 🚀
我们看到不同的发射场具有不同的成功率。因此,这些信息可用于帮助判断第一级是否能成功着陆。CCAFSLC40发射场的成功率为60%,而KSCLC 39A和VAFB SLC4E发射场的成功率约为77%。



组合特征以获得更多信息 📈

组合多个属性能为我们提供更多信息。如果我们用颜色叠加着陆结果,会发现CCAFSLC40发射场的成功率为60%,但如果有效载荷质量超过10,000公斤,成功率则为100%。因此,我们将组合多个特征。

为机器学习模型准备数据 ⚙️


在实验中,你将确定哪些属性与成功着陆相关。分类变量将使用独热编码进行转换,为机器学习模型准备数据,该模型将预测第一级是否能成功着陆。
总结 📝


本节课中,我们一起学习了探索性数据分析的核心概念。我们了解到EDA是数据科学项目的第一步,它帮助我们识别关键特征、分析不同发射场的成功率,并通过组合特征获得更深入的见解。最后,我们还探讨了如何为机器学习模型准备数据,特别是通过独热编码处理分类变量。掌握这些步骤,将为后续的预测建模打下坚实的基础。
005:《应用数据科学毕业项目》 - 交互式可视化分析与仪表盘 📊


在本节课中,我们将学习如何构建交互式可视化分析与仪表盘。交互式可视化允许用户以实时和互动的方式探索数据,相比静态图表,它能更有效地揭示数据模式并讲述更吸引人的故事。我们将使用 folium 库创建交互式地图,并使用 plotly dash 构建一个功能完整的仪表盘应用。


交互式可视化分析介绍 🎨
上一节我们介绍了课程的整体目标,本节中我们来看看什么是交互式可视化分析。
交互式可视化分析使用户能够以交互和实时的方式探索和操作数据。常见的交互操作包括缩放、平移、筛选、搜索和联动。通过交互式可视化分析,用户可以更快、更有效地发现视觉模式。
与使用静态图表展示发现相比,交互式数据可视化或仪表盘总能讲述更引人入胜的故事。
在本模块中,你将使用 folium 和 plotly dash 来构建交互式地图和仪表盘,以执行交互式可视化分析。
使用 Folium 分析发射场地理位置 🗺️
本模块的第一部分将重点使用 folium 分析发射场的地理位置及其邻近区域。
我们将首先在交互式地图上标记发射场的位置及其邻近区域。然后,我们将通过这些标记探索地图,并尝试从中发现任何模式。

以下是使用 folium 的基本步骤:
- 创建基础地图。
- 为每个发射场位置添加标记。
- 添加其他图层或要素(如邻近区域范围)。
- 保存并展示交互式地图。



最终,我们应该能够通过探索地图来分析数据,并回答一个核心业务问题:如何选择最佳的发射场位置。




使用 Plotly Dash 构建仪表盘应用 📈

接下来,你将使用 Python 的 plotly dash 包构建一个仪表盘应用。
这个仪表盘应用包含输入组件,例如下拉列表和范围滑块,用于与一个饼图和一个散点图进行交互。你将在指导性实验中被引导构建这个仪表盘应用。
仪表盘构建完成后,你可以使用它比静态图表更容易地从 SpaceX 数据中发现更多洞察。
以下是构建仪表盘的关键组件示例:
import dash
from dash import dcc, html
import plotly.express as px
app = dash.Dash(__name__)
app.layout = html.Div([
dcc.Dropdown(options=[...], id='dropdown'),
dcc.RangeSlider(min=0, max=100, step=1, value=[0, 100], id='slider'),
dcc.Graph(id='pie-chart'),
dcc.Graph(id='scatter-plot')
])




课程总结 🎯


本节课中,我们一起学习了交互式可视化分析的核心概念及其价值。我们介绍了如何使用 folium 库创建交互式地图来分析和探索发射场的地理数据模式。接着,我们探讨了如何使用 plotly dash 框架构建一个包含交互组件的功能型仪表盘应用,从而实现对数据的动态探索和更深入的洞察。掌握这些工具将极大地提升你呈现和探索数据故事的能力。
006:预测性分析概述 📊

在本节课中,我们将学习预测性分析的基本流程。我们将构建一个机器学习管道,用于预测猎鹰9号火箭第一级是否能够成功着陆。这个过程将涵盖数据预处理、模型训练、超参数调优以及模型评估等关键步骤。
概述
预测性分析的目标是利用历史数据构建模型,以预测未来事件的结果。在本实验中,我们的具体任务是预测火箭发射的着陆结果。为了实现这一目标,我们需要遵循一个结构化的机器学习工作流程。
上一节我们介绍了数据分析的背景,本节中我们来看看如何将数据转化为可操作的预测模型。
构建机器学习管道 🛠️
我们将按照以下步骤构建一个完整的机器学习管道,以确保预测过程的系统性和可重复性。
以下是构建管道的主要步骤:
- 数据预处理:此步骤旨在标准化数据,确保所有特征处于相同的尺度,这对于许多机器学习算法的性能至关重要。通常使用
StandardScaler进行标准化,公式为:z = (x - u) / s,其中u是均值,s是标准差。 - 训练集与测试集划分:为了客观评估模型性能,我们需要将数据分割为两部分。一部分用于训练模型(训练集),另一部分用于测试模型的泛化能力(测试集)。可以使用
train_test_split函数实现。 - 模型训练与网格搜索:我们将训练多种分类模型。同时,通过网格搜索(Grid Search)技术,系统性地寻找能让特定算法达到最佳性能的超参数组合。
- 模型评估:使用测试集数据,基于最佳超参数值评估各个模型的准确率,并选择表现最佳的模型。
- 输出混淆矩阵:最后,我们将为最佳模型输出混淆矩阵,以更细致地了解模型在各类别上的预测表现(如真阳性、假阳性等)。
将要测试的算法 🤖
在模型训练阶段,我们将尝试并比较以下几种经典的机器学习分类算法。

以下是本实验计划测试的四种算法:


- 逻辑回归:一种用于二分类问题的线性模型。
- 支持向量机:通过寻找最大间隔超平面来区分类别的算法。
- 决策树分类器:一种基于树状结构进行决策的模型,易于解释。
- K最近邻:基于实例的学习算法,根据最近邻居的类别进行预测。

通过比较这些算法在相同数据上的表现,我们可以为当前预测任务选择最合适的模型。


总结

本节课中我们一起学习了预测性分析的核心流程。我们从数据预处理和划分开始,逐步完成了模型训练、超参数优化以及最终的评估。重点掌握了利用网格搜索寻找最佳模型参数,并使用测试集和混淆矩阵来客观评估模型性能的方法。这套流程是解决许多实际数据科学预测问题的基础框架。
007:成功数据发现报告的要素
在本节课中,我们将学习如何有效地组织和呈现数据分析的发现,以创建一份成功的数据发现报告。虽然发现和清理数据是分析的重要第一步,但若不能有效地向受众组织和呈现发现,其价值可能会丧失。
📝 报告概述与结构
上一节我们讨论了数据收集与清理,本节中我们来看看如何将分析结果整理成一份清晰的报告。在数据被收集、清理和组织之后,解释工作便开始了。此时,你能够获得数据的完整视图,并有望回答分析开始前提出的问题。


通常,你需要开始撰写一份发现报告,以解释所学到的内容。根据利益相关者及其接收信息的方式,报告的形式可能有所不同。这可能包括纸质报告、幻灯片演示,或两者兼有。发现报告是数据分析的关键部分,因为它传达了所发现的内容。
在开始这个过程时,收集到的数据和信息可能看起来有些令人不知所措。克服这个障碍的最佳方法是首先创建一个大纲。通过完成大纲,你可以获得一个完整的图景,并开始以精确而简单的方式撰写。
虽然创建数据驱动演示文稿的格式多种多样,但我们创建了一个简单且易于遵循又有效的大纲。在创建大纲时,请始终记住要针对你的受众进行结构化,并创建适合你情况的演示文稿。
以下是创建报告大纲的核心步骤:
- 封面页:此起始部分包含演示文稿的标题、你的姓名以及日期。
- 执行摘要:紧接着是执行摘要和目录。
- 目录:目录包含报告的各章节和子章节,以便为受众提供内容概览。这也使读者能够直接跳转到对他们可能更重要的特定部分。
- 报告主体:继续你的演示文稿,包括引言、方法论、结果、讨论、结论,最后是附录。
请注意,每个要素的深度和长度可能因受众和报告格式而异。
🔍 报告各核心部分详解
执行摘要
创建报告的第一步是恰当地撰写执行摘要。该摘要将简要解释项目的细节,并应被视为一份独立的文档。这些信息取自你报告中的要点。虽然可以重复信息,但不应呈现新的信息。
引言
目录之后的下一个部分是引言。引言解释了分析的性质,陈述了问题,并给出了通过执行分析要回答的问题。
方法论
方法论解释了分析中使用的数据来源,并概述了收集数据的计划。例如,是使用聚类方法还是回归方法来分析数据。

结果
结果部分详细说明了数据收集、组织方式以及分析方法。这部分还将包含图表,这些图表可以证实结果,并通过提供对数据的解释来引起对更复杂或关键发现的注意。通过这种方式,你能够向受众提供详细的解释,并传达其与引言中所述问题的关联。
讨论
接下来,讨论报告的发现和影响。在这一部分,你将与受众讨论从研究中得出的影响。例如,假设你正在为大学毕业生研究顶级编程语言。你会发现他们需要学习多种语言以在就业市场中保持竞争力,还是某一种语言始终占据主导地位?

结论
我们现在已经到达报告发现的结论部分。这最后一部分应重申引言中给出的问题,并对发现进行总体总结。它还将说明分析的结果,以及未来是否会采取任何其他步骤。
附录
最后,我们有附录。此部分包含那些不太适合报告正文,但你仍然认为足够重要而需要包含的信息。这类信息可能包括收集原始数据的地点,或其他细节,如资源、致谢或参考文献。
🎯 课程总结


本节课中,我们一起学习了创建成功数据发现报告的重要要素。我们了解了报告的基本结构,包括封面、执行摘要、目录、引言、方法论、结果、讨论、结论和附录。每个部分都有其特定的目的,共同构成了一份清晰、完整的数据分析成果展示。在下一视频中,我们将学习呈现发现时的最佳实践。
008:成果展示最佳实践 📊
在本节课中,我们将学习如何有效地展示数据科学项目的成果。我们将探讨如何组织报告内容、设计可视化图表,以及如何向观众清晰传达核心信息,确保你的研究发现能够被准确理解和记住。
你已经花费了数周甚至数月的时间研究数据,现在到了汇报成果的时刻。问题已经得到解答,你对整个故事脉络感到满意。那么,你将如何向观众讲述,才能让他们带着你预期的信息离开呢?本节视频将教你如何以一种能够吸引并保持观众注意力的方式来展示你的发现。
清晰传达信息的关键要素
进行数据驱动的演示看似简单,但要准确传达信息,有几个重要因素需要牢记。
以下是确保演示成功的三个核心要点:
- 确保图表清晰可读:图表和图形不应过小,并且标签必须清晰。
- 数据仅作为支撑证据:仅使用数据来支持你的论点。
- 聚焦核心信息:每张图表只阐明一个观点,并剔除不支持关键信息的数据。

设计易于理解的视觉化图表
上一节我们介绍了清晰传达信息的三个要点,本节中我们来看看如何具体实现第一点:设计易于理解的图表。
你是否曾参加过一场演示,其中展示的信息难以阅读或理解?虽然这看起来显而易见,但过小的图表和标签很容易被忽视。
最佳实践是:像你的观众一样,坐在不同的距离测试你的可视化图表。如果数据无法被清晰看到,那么就应该考虑重新设计。
公式/代码示例:
在准备图表时,一个简单的检查原则是:图表标题 + 轴标签 + 数据点 > 模糊的图形。确保每个元素都足够大、对比度足够高。
构建以故事为核心的演示结构
在准备报告时,你可能会觉得解释发现的唯一方法就是在幻灯片中塞满数据。作为一名数据分析师,这似乎很合理。但你的观众可能不会欣赏数据的复杂性,只会看到一堆数字。
为了解决这个问题,请遵循以下步骤来构建你的演示:
- 首先形成需要传达给观众的关键信息,并围绕这些信息构建故事线。
- 形成大纲后,再回过头来插入数据以支持你的发现。
- 通过不过度依赖数据,并使用这种方法来创建演示文稿,你将创造一个对观众有吸引力且有趣的故事。
每张图表只传达一个观点
使用图表和图形展示数据是传达信息的最佳方式。然而,如果你提供的信息过多,反而会造成混淆。
例如,请看下面这个饼图。你能解读出关键信息是什么吗?演示者试图传达什么?
在这个例子中,图表包含了太多信息,很难确定演示者想表达的观点以及观众应该关注的重点。通过坚持一个想法,并且不将多个观点总结到一个可视化图表中,你就能准确地将想法传达给观众,避免任何混淆。
核心原则:一张图表 ≈ 一个核心结论。
剔除无关数据,保持简洁
数据分析师可能会花费数月时间研究数据。然而,一些对分析师来说有趣的细节可能与项目无关。
试图向观众解释每一个小细节,并且没有识别出无关数据,可能会损害关键信息的传递。通过剔除这些不必要的数据,并仅突出支持你关键想法的数据点,你将使演示保持清晰和简洁。
课程总结


本节课中,我们一起学习了如何创建能够吸引观众的数据驱动型演示,以及如何传递清晰简洁的信息。关键要点包括:确保视觉化图表清晰可读、围绕核心故事构建演示、每张图表只阐明一个核心观点,并果断剔除无关数据。掌握这些最佳实践,将帮助你有效地展示数据科学项目的价值。

浙公网安备 33010602011771号