什么是数据科学:从数据定义、数据旅程到文本挖掘词云实战(Data-Science-For-Beginners 第 1 课精读)
2026/9/9 23:45:21 网站建设 项目流程

什么是数据科学:从数据定义、数据旅程到文本挖掘词云实战(Data-Science-For-Beginners 第 1 课精读)

【免费下载链接】Data-Science-For-Beginners10 Weeks, 20 Lessons, Data Science for All!项目地址: https://gitcode.com/GitHub_Trending/da/Data-Science-For-Beginners

本文是开源课程 Data-Science-For-Beginners(10 周、20 课)中《Defining Data Science》一课的深度导读。文章以课程 01-defining-data-science/README.md 为骨架,完整梳理“数据—数据科学—相关学科—数据类型—数据来源—数据旅程—数字化转型”的知识主线,并结合课程自带 Jupyter Notebook 挑战,带你亲手完成一次从抓取网页、清洗 HTML、关键词提取到生成词云的端到端数据科学实践。读完你将能准确回答“什么是数据科学、它能做什么、数据从哪来”,并能独立跑通并改造第一个文本挖掘 Notebook。

本课在课程中的位置

本课是课程第 1 板块(1-Introduction/README.md)的第一课,该板块共 4 课,为全书奠定概念基础:

  1. Defining Data Science(本课)
  2. Data Science Ethics
  3. Defining Data
  4. Introduction to Statistics and Probability

本课的目标不是教你写第一行代码,而是回答一个看似简单却很根本的问题:数据科学到底是什么?后续所有课程(关系数据库、数据准备、可视化、生命周期、云端实践等)都将建立在本课的概念框架之上。

什么是数据:从日常生活到计算机时代

数据并不神秘,它存在于我们的日常每个角落:你现在读到的文字是数据;手机通讯录里的电话号码是数据;手表上显示的时间也是数据。作为人类,我们天生就在“操作数据”——数钱、给朋友写信,本质上都是对数据的处理。

真正让数据变得至关重要的,是计算机的诞生。计算机的主要职责是执行计算,但计算必须有数据作为操作对象,因此我们必须理解计算机如何存储和处理数据。而随着互联网的兴起,计算机作为“数据处理设备”的角色进一步放大:

  • 给朋友写邮件 → 在创建数据;
  • 上网搜索信息 → 在存储、传输、操纵数据。

正如课文中那个发人深省的问题:你还记得上一次真正用计算机“算东西”是什么时候吗?如今我们对计算机的使用早已从数值计算全面转向数据处理与通信。

什么是数据科学:定义与四个关键维度

课程引用维基百科给出的定义:数据科学(Data Science)是一门运用科学方法,从结构化与非结构化数据中提取知识与洞见,并把可操作的知识与洞见应用到广泛业务领域的科学领域。

这一定义拆解出数据科学的四个核心要点:

要点说明
提取知识(Extract Knowledge)数据科学的主要目标是理解数据:发现隐藏关系、构建模型(model)
使用科学方法(Scientific Methods)依赖概率与统计等数学工具。历史上有人曾认为“数据科学只是统计学的时髦别名”,如今已公认该领域远比统计学宽泛
产出可操作的洞见(Actionable Insights)获得的知识必须能被应用到真实的业务场景中做出决策,而非停留在学术结论
覆盖结构化与非结构化数据数据科学必须同时驾驭表格化的结构化数据与文本、图像等非结构化数据

课程还特别强调一个常被忽略的方面:数据科学与统计学的分工。统计学提供数学基础,而数据科学要研究“如何借助计算机对数据进行采集、存储与操作”,把数学概念真正落地为从数据中提炼洞见的工程实践。

此外,课程介绍了一种归功于计算机科学家 Jim Gray 的视角——把数据科学视为继以下三种范式之后的第四种科学范式

  • 实证科学(Empirical):主要依赖观察与实验结果;
  • 理论科学(Theoretical):新概念从既有科学知识中推演产生;
  • 计算科学(Computational):通过计算实验发现新原理;
  • 数据驱动科学(Data-Driven):基于对数据中关系与模式的发现。

数据驱动范式的提出,标志着“从数据中找规律”本身已经成为与实验、理论、计算并列的一等科学研究方法。

数据科学是交叉学科:五个相邻领域

由于数据无处不在,数据科学自身也是一个横跨多学科的宽泛领域。课程用一张术语表梳理了它触碰到的五个相邻学科:

相邻领域与数据科学的关系课程后续对应
数据库(Databases)核心问题是如何存储数据——以何种结构组织才能支持更快的处理详见 2-Working-With-Data/README.md
大数据(Big Data)面对结构相对简单但体量巨大的数据,需要用分布式集群存储与高效处理同上板块
机器学习(Machine Learning)理解数据的一条路径是构建能预测期望结果的模型,从数据中开发模型即机器学习本课程聚焦数据科学全流程,机器学习体系另有专门课程
人工智能(AI)机器学习的延伸,构建模仿人类思维过程的高复杂度模型,常能把非结构化数据(如自然语言)转化为结构化洞见贯穿课程
可视化(Visualization)海量数据对人类不可直接理解,可视化能帮助我们理解并得出结论;相关领域还包括信息图(Infographics)与人机交互(HCI)详见 3-Data-Visualization/README.md

理解这些相邻学科的价值在于:数据科学家不必精通一切,但要清楚地知道“何时把问题交给哪种技术”——存储问题找数据库,规模问题找大数据工具,预测问题找机器学习,理解问题靠可视化。

数据的类型:结构化、半结构化与非结构化

数据科学要“用正确的方式捕获数据”,因此第一步是区分三种数据形态:

  • 结构化数据(Structured):以某种良好组织的形式呈现,通常是表格或若干相互关联的表格;
  • 非结构化数据(Unstructured):只是一堆文件的集合,没有预定义模型;
  • 半结构化数据(Semi-structured):具有一定结构,但这种结构在不同数据对象之间差异很大。

课程用一组并置案例帮助建立直觉:

结构化半结构化非结构化
带电话号码的联系人列表带链接的 Wikipedia 页面《大英百科全书》全文
过去 20 年建筑内所有房间每分钟的温度以 JSON 格式存放(含作者、发布日期、摘要)的学术论文集合企业共享文件夹中的文档
进入大楼所有人员的年龄与性别数据互联网页面监控摄像头的原始视频流

需要留意:同一个问题域可能同时包含多种数据形态。例如“进入大楼人员的年龄性别”是结构化数据,而“监控摄像头原始视频”是非结构化数据——如何用 AI 把后者转化为前者,正是后续课程(如数据准备、生命周期)反复出现的主题。

数据从哪里来:典型数据源盘点

数据的来源无穷无尽,课程无法穷举,但给出了按结构化程度组织的典型数据源清单:

结构化数据源

  • 物联网(IoT):温度、压力等各种传感器数据。例如写字楼装上 IoT 传感器后,可自动控制供暖与照明以最小化能耗成本;
  • 调查问卷(Surveys):用户在完成购买或访问网站后填写的反馈;
  • 行为分析(Analysis of behavior):理解用户深入网站的程度,以及离开网站的典型原因。

非结构化数据源

  • 文本(Texts):可提取总体情感得分(sentiment score)、关键词与语义含义;
  • 图像或视频(Images / Video):监控视频可用于估算道路交通流量、向人们预警拥堵;
  • Web 服务器日志(Logs):判断网站哪些页面被最频繁访问、停留多久。

半结构化数据源

  • 社交网络图谱(Social Network graphs):洞察用户个性与信息传播效能;
  • 聚会照片(Group Dynamics):对一组派对照片建立“谁与谁合影”的关系图谱,可提取群体互动规律。

记住这些来源的价值在于:当你面对一个业务场景时,能立刻想到“这里其实有数据可用、有数据科学可施展的空间”。

数据旅程:用数据可以做什么

数据科学的工作不是一锤子买卖,而是一条清晰的数据旅程(data journey)。课程把这条旅程归纳为五个步骤,并给出每步的关键方法论:

1) 数据获取(Data Acquisition)

第一步是采集数据。很多场景下这很直接——数据从 Web 应用自然流入数据库;但有些场景需要专门技术:例如 IoT 传感器数据可能汹涌而来,实践上应使用**缓冲端点(如 IoT Hub)**先汇聚全部数据,再进行后续处理。

2) 数据存储(Data Storage)

存储是数据旅程中最具挑战的环节之一,尤其是面对大数据时。核心决策原则是:在决定如何存储前,先预判你未来会如何查询这些数据。课程对比了三种主流存储形态:

  • 关系型数据库(Relational Database):存放一组表,用 SQL 查询;表通常按schema(模式)分组。很多情况下需要先把原始数据转换成适配 schema 的形式;
  • NoSQL 数据库:不对数据强制施加 schema,允许存储更复杂的数据,如分层的 JSON 文档或图结构。代价是缺少 SQL 那样丰富的查询能力,且无法强制参照完整性(即规范表间关系的规则);
  • 数据湖(Data Lake):面向海量原始、非结构化数据的存储。常用于大数据场景——当全部数据无法放入单台机器,必须由服务器集群存储与处理时,Parquet是与大数据配合最常用的格式之一。

3) 数据处理(Data Processing)

数据旅程中最激动人心的一步:把数据从原始形态转换为可用于可视化/模型训练的形式。面对文本、图像这类非结构化数据,常常需要借助 AI 技术从中抽取特征(features),从而把它转成结构化形态。

4) 可视化 / 人类洞见(Visualization / Human Insights)

为了理解数据,我们经常需要“把数据画出来”。数据科学家要像一个工具箱里装着多种可视化技巧的人,反复“玩弄数据”、多次可视化以寻找关系;同时用统计技术检验假设、证明不同数据之间的相关性。

5) 训练预测模型(Training a Predictive Model)

数据科学的终极目标是基于数据做决策,因此可能需要借助机器学习的技巧构建预测模型,之后用结构相似的新数据集去做出预测。

课程提醒:数据旅程并非每步都必须发生——当数据已经在数据库中时获取步骤可省略,当不需要模型训练时最后一步可省略;反之,数据加工等步骤可能被重复多次。这是一种随数据形态弹性伸缩的工作流,而非僵硬的流水线。

数字化与数字化转型:一个在线课程的完整案例

近十年,越来越多企业意识到数据对经营决策的重要性。把业务过程转译为数字形式、从而可以采集数据,称为数字化(digitalization);而把数据科学技术应用于这些数据以指导决策、显著提升生产力甚至带来业务转型,称为数字化转型(digital transformation)

为了把这两个抽象概念讲透,课程给出了一个与读者零距离的场景——假设我们用数据科学来改进一门线上交付的数据科学课程(正是本课程自己)

  1. 先问“什么可以数字化”:最朴素的做法是记录每名学员完成每个模块的耗时,并在每个模块结束时用多项选择题测验掌握程度。对全体学员的“完成耗时”求平均,就能定位最让学员吃力的模块并着手简化。课文随即提出一个更公平的改进:因为各模块长度不同,更合理的指标是用“完成时间 ÷ 模块字符数”再作比较;
  2. 分析测验结果:解析选择题作答数据,找出学员理解困难的知识点,从而改进内容——前提是测试题设计要让每道题对应一个明确概念或知识块;
  3. 更进一步做交叉分析:把“每个模块耗时”对照“学员年龄段”作图,可能发现某些年龄段的学员完成得异常慢、甚至中途退出,据此为模块给出年龄适配建议,减少因预期错配带来的挫败感。

这个例子完整演示了从“采集哪些数据 → 如何数字化 → 如何分析 → 能做什么决策”的数字化转型最小闭环,也为本课的课后作业(见下文)提供了范本。

🚀 动手挑战:从 Wikipedia 文本挖掘关键词并生成词云

课程把一个端到端的文本挖掘任务作为挑战:下载 Wikipedia 的 Data Science 词条全文,处理文本并抽取关键词,最终生成一张像下面这样的词云图。所有代码都收录在课程 Notebook 中,你可以直接打开 notebook.ipynb,逐格运行观察每一步的数据形态变化。

词云图并非装饰品:它本身就是本课“数据旅程五步法”的一次完整演练——获取数据(抓取网页)→ 处理数据(清洗 HTML)→ 抽取洞见(关键词提取)→ 可视化(词云)。后面的课程(数据准备、可视化等)会分别放大讲解其中每一步。

下面拆解 Notebook 的四个核心步骤。

第一步:获取数据(Data Acquisition)

使用requests抓取 Wikipedia 的 Data Science 页面。注意代码设置了一个自定义User-Agent请求头,这是访问网页时的良好实践(许多站点会拒绝无标识的爬虫请求):

url = 'https://en.wikipedia.org/wiki/Data_science' import requests # 自定义请求头 headers = { 'User-Agent': 'DataScienceChallenge/1.0 (myemail@gmail.com)' } response = requests.get(url, headers=headers) if response.status_code == 200: text = response.content.decode('utf-8') print(text[:1000]) # 此时 text 还是原始 HTML else: print(f"Error: {response.status_code}")

第二步:转换数据(Transforming the Data)

抓回来的是 HTML 源码,需要转换成适合分析的纯文本。Notebook 用BeautifulSoup做 HTML 解析:先定位 Wikipedia 正文容器(div.mw-parser-output),再用 CSS 选择器剔除跳转链接、导航框(navbox)、参考文献列表、编辑按钮、目录、信息框等非正文元素:

from bs4 import BeautifulSoup soup = BeautifulSoup(text, 'html.parser') content = soup.find('div', class_='mw-parser-output') # Wikipedia 正文容器 def clean_wikipedia_content(content_node): """剔除 Wikipedia 内容节点中的常见非正文元素。""" selectors = [ '.mw-jump-link', '.navbox', '.reflist', 'sup.reference', '.mw-editsection', '.hatnote', '.metadata', '.infobox', '#toc', '.toc', '.sidebar', ] for selector in selectors: for el in content_node.select(selector): el.decompose() if content: clean_wikipedia_content(content) text = content.get_text(separator=' ', strip=True) print(text[:1000]) else: print("Could not find main content. Using full page text.") text = soup.get_text(separator=' ', strip=True)

这一整段“定位正文 + 按选择器清单剔除干扰元素 + 抽取纯文本”的代码,就是数据准备(清洗)的雏形——它决定了后续关键词提取的质量上限。

第三步:获取洞见——RAKE 关键词提取

Notebook 用RAKE(Rapid Automatic Keyword Extraction)算法实现关键词抽取,使用的 Python 包是nlp_rakeRake对象提供三个可调参数,直接影响抽取结果:

参数本挑战取值含义
max_words2一个关键词最多包含的单词数(决定是否保留 “machine learning” 这类复合短语)
min_freq3关键词在文档中的最低出现频次(过滤低频噪声)
min_chars5关键词的最短字符数(过滤过短的词)
import nlp_rake extractor = nlp_rake.Rake(max_words=2, min_freq=3, min_chars=5) res = extractor.apply(text) # 返回 (关键词, 重要度) 的列表 res

运行结果会得到一个按重要度排序的 (词, 分值) 列表——machine learning、big data 等与数据科学最相关的学科会稳定出现在列表顶端。你完全可以调节上述三个参数,观察抽取结果的敏感性。

第四步:可视化结果——条形图与词云

人类对图形最敏感,因此最后一步是把关键词及其权重画出来。Notebook 先给出最朴素的方案——用matplotlib画关键词权重条形图:

import matplotlib.pyplot as plt def plot(pair_list): k, v = zip(*pair_list) plt.bar(range(len(k)), v) plt.xticks(range(len(k)), k, rotation='vertical') plt.show() plot(res)

但条形图在关键词数量很多时不便于阅读,于是引入Word Cloud(词云)WordCloud对象既可以接收预计算好的“词—频率”字典,也可以直接接收原始文本:

from wordcloud import WordCloud wc = WordCloud(background_color='white', width=800, height=600) # 方式一:基于 RAKE 提取的关键词频率生成 plt.figure(figsize=(15, 7)) plt.imshow(wc.generate_from_frequencies({k: v for k, v in res})) # 方式二:直接基于原始文本生成(含较多噪声) plt.figure(figsize=(15, 7)) plt.imshow(wc.generate(text)) # 保存为图片 wc.generate(text).to_file('images/ds_wordcloud.png')

对比两种生成方式正是本挑战的点睛之笔:直接对原始文本生成词云虽然视觉效果更“壮观”,但混入了大量无意义噪声(例如Retrieved on之类的样板文本),复合关键词(如data scientistcomputer science)也难以保留;而 RAKE 抽取出的关键词则精准得多。这一对比直观展示了数据预处理与清洗的价值——只有入口数据干净,终点结论才可靠。

挑战任务与作业:把方法论迁移到新领域

本课的挑战不止于“看懂”,更要求“迁移”。Notebook 的结尾鼓励学习者更换不同文本重跑整个过程,配套的任务与作业给出了两个具体方向:

  • Task 1:修改上述代码,为Big DataMachine Learning两个领域分别生成相关概念词云。参考做法可查看 solution/notebook.ipynb——它把目标 URL 换成了 Wikipedia 的 Machine Learning 词条,并指出该词条噪声更多,需要额外的清洗思路;
  • Task 2:Think About Data Science Scenarios——针对多个真实领域,按“采集什么数据 → 如何采集 → 如何存储、规模多大 → 能得到什么洞见、做什么决策”的框架做方案推演。

Task 2 作业鼓励你在教育、疫苗接种、工作效率等领域任选三者填写方案表(Problem Domain / Problem / 采集哪些数据 / 如何存储 / 能得出什么洞见与决策)。仓库在 solution/assignment.md 提供了一份“教育领域提升课堂出勤率”的完整示例作答:它设想用教室监控照片或手机蓝牙/Wi-Fi 地址追踪出勤,把图像作为非结构化数据存储后用 AI 识别人脸转成结构化记录,再与教务系统的考试成绩关联分析——并预告相关性分析会在 Statistics and Probability 一课深入讲解。评价标准(Rubric)是:能否对全部问题域给出合理的数据来源、存储方式与决策洞见;至少覆盖 2 个问题域且讨论存储细节;能完整描述数据解决方案且覆盖多个领域分别对应“卓越 / 合格 / 待改进”。

小结与下一步

本课建立了一张贯穿整本课程的概念地图:

  1. 数据是计算机时代的第一公民,理解“如何存储与处理数据”是数据科学的地基;
  2. 数据科学= 科学方法 + 从(结构化/非结构化)数据提取知识与可操作洞见,是继实证、理论、计算之后的第四种科学范式;
  3. 它天然横跨数据库、大数据、机器学习、AI、可视化等相邻学科;
  4. 一切工作围绕五步数据旅程(获取 → 存储 → 处理 → 可视化/洞见 → 预测模型)展开;
  5. 把业务数字化、再用数据驱动决策,就是数字化转型
  6. 词云挑战证明:即使是最基础的网页文本,也能通过“抓取—清洗—抽取—可视化”跑通一整个迷你数据科学流程。

课程的下一站将从“概念”走向“规范与实践”:学习数据科学家的伦理责任(02-ethics)、精确定义数据(03-defining-data)、打好统计与概率地基(04-stats-and-probability);随后进入 2-Working-With-Data 板块,落地关系数据库、NoSQL 与数据准备的具体操作。若想在本课之后立即获得编码手感,也可以先翻一翻仓库根目录的 examples/README.md,那里按难度递进提供了从“加载数据”到“完整分析流程”的 5 个可直接运行的最小示例。

本课内容提炼自 1-Introduction/01-defining-data-science/README.md,由 Dmitry Soshnikov 编写,配套 sketchnote 与完整挑战代码均存放于本课目录内,可随时对照学习。

【免费下载链接】Data-Science-For-Beginners10 Weeks, 20 Lessons, Data Science for All!项目地址: https://gitcode.com/GitHub_Trending/da/Data-Science-For-Beginners

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询