ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

数据科学入门:定义、数据形态与端到端实战指南(Data-Science-For-Beginners)

数据科学入门:定义、数据形态与端到端实战指南(Data-Science-For-Beginners) 数据科学入门定义、数据形态与端到端实战指南Data-Science-For-Beginners【免费下载链接】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 课程第 1 课《Defining Data Science》的技术导读与实战手册。课程采用10 周 20 课的结构从零开始搭建数据科学知识体系本课是全部旅程的起点回答三个基础问题数据是什么、数据科学是什么、数据从采集到建模要经历哪些环节。读完本文你将掌握结构化/半结构化/非结构化数据的判别方法、数据科学流程的五个核心阶段并能独立运行一个抓取 Wikipedia 文本 → 关键词提取 → 生成词云的端到端文本挖掘示例。什么是数据What Is Data数据无处不在你正在阅读的这段文字是数据手机通讯录里的电话号码是数据手表上显示的时间也是数据。人类天然就在和数据打交道——清点手中的钱、给朋友写信本质上都是在处理数据。计算机的出现让数据的重要性发生了质变计算机的核心功能是计算而计算必须依赖数据因此理解计算机如何存储和处理数据成为一切的前提。互联网兴起之后计算机作为数据处理设备的角色被急剧放大。如今我们使用计算机更多是为了数据处理与通信而非真正的数值计算写一封邮件、搜索一条信息本质都是在创建、存储、传输和操作数据。你能回忆起来上一次真正用计算机做计算是什么时候吗数据科学的定义与核心要素根据 Wikipedia 的定义**数据科学Data Science**是一个使用科学方法从结构化与非结构化数据中提取知识与洞察的学科领域并将由此获得的知识与可执行的洞察应用到广泛的应用领域之中。这一定义揭示了数据科学的几个关键侧面提取知识是首要目标理解数据、发现隐藏的关系并构建一个模型model依赖科学方法例如概率与统计学。事实上数据科学一词刚出现时有人批评它不过是统计学的新潮马甲但如今已证明这一领域远不止于此产出可执行的洞察即能够真正落地到现实业务场景中的实用结论同时处理结构化与非结构化数据课程后续会专门展开讨论不同类型的数据应用领域至关重要数据科学家通常需要对所在领域金融、医学、营销等有一定程度的专业知识。值得强调的是数据科学还研究如何借助计算机完成数据的收集、存储与操作。统计学提供了数学基础而数据科学把这些数学概念真正应用到数据上、从中提炼洞察。此外计算机科学家 Jim Gray 提出过一个经典视角数据科学是科学范式中独立的一种。科学大体可分为四类范式范式核心逻辑经验Empirical主要依赖观察与实验结果理论Theoretical从既有科学知识中推导新概念计算Computational通过计算实验发现新原理数据驱动Data-Driven聚焦于在数据中发现关系与模式数据科学的相关学科领域既然数据无处不在数据科学自然是一个与许多学科交叉的宽领域。本课梳理了五个最重要的关联领域数据库Databases关键考虑是如何存储数据——即如何组织数据以便高效处理。存储结构化与非结构化数据有不同类型的数据库课程将在 第 2 部分处理数据 中展开大数据Big Data当数据量大且结构相对简单时需要专门的工具与思路将数据分布式地存储在计算机集群上并高效处理机器学习Machine Learning理解数据的一种方式是构建能够预测期望结果的模型从数据中开发模型的过程即机器学习人工智能Artificial Intelligence机器学习的延伸分支同样依赖数据它构建模拟人类思维过程的高复杂度模型常能把非结构化数据如自然语言转化为结构化洞察可视化Visualization海量数据对人类难以直接理解而恰当的可视化能让数据更可读、更易得出结论。相关领域还包括信息图Infographics与人机交互Human-Computer Interaction。课程将在 第 3 部分数据可视化 中系统介绍。数据的类型结构化、半结构化与非结构化正如上文反复提到的数据的捕获方式很重要。通常需要区分**结构化structured与非结构化unstructured数据前者通常以表格等规整形式组织后者则是一堆未经组织的文件。介于两者之间的是半结构化semi-structured**数据——它具备某种结构但结构差异很大。结构化半结构化非结构化带电话号码的联系人列表带链接的 Wikipedia 页面大英百科全书的全文过去 20 年建筑内所有房间每分钟的温度含作者、发表日期与摘要的 JSON 格式论文集合公司文件共享目录所有进入大楼人员的年龄与性别数据互联网页面监控摄像头拍摄的原始视频流数据从哪里来数据源多得无法一一列举但可以归为几类典型来源结构化物联网IoT温度、压力等各类传感器数据。例如为办公楼配备 IoT 传感器后可自动控制供暖与照明以降低成本问卷调查Surveys用户在购买后或访问网站后填写的问卷行为分析Behavior Analysis帮助理解用户对网站的深入程度以及离开网站的典型原因非结构化文本Texts可提供整体情感分数、关键词提取与语义含义等丰富洞察图片或视频Images/Video监控视频可用于估算道路交通状况并提前告知司机潜在的拥堵Web 服务器日志Logs用于了解网站哪些页面被访问最多、停留时间多长半结构化社交网络图谱Social Network Graphs可提供关于用户人格与信息传播效力的数据群体动态Group Dynamics一叠聚会照片可通过构建谁和谁合影的关系图来提取群体互动数据。本仓库的 data/ 目录同样提供了大量可供实战练习的真实数据集例如 birds.csv鸟类形态数据、honey.csv蜂蜜产量数据、diabetes.tsv糖尿病医疗数据以及 COVID/ 目录下的疫情时间序列数据配合 examples/ 中的示例脚本从01_hello_world_data_science.py到05_real_world_example.py可以快速上手。数据的旅程从采集到建模在数据科学中我们关注数据旅程data journey的以下步骤1数据采集Data Acquisition第一步是收集数据。有些场景非常简单比如数据从 Web 应用自动进入数据库但也可能需要专门技术——例如 IoT 传感器数据可能多到难以招架一个良好实践是使用 IoT Hub 之类的缓冲端点先把数据收集起来再做后续处理。2数据存储Data Storage存储数据可能很有挑战尤其是大数据场景。决定如何存储时最好先想清楚未来会如何查询这些数据。主要存储方案包括关系型数据库以表table组织数据用 SQL 查询。表通常按模式schema分组很多情况下需要把原始数据转换为符合模式的形式NoSQL 数据库如 CosmosDB不对数据强制施加模式可以存储更复杂的数据如层次化的 JSON 文档或图。但 NoSQL 缺少 SQL 那样丰富的查询能力也无法强制引用完整性referential integrity数据湖Data Lake用于存储大规模、原始非结构化数据。数据湖常与大数据搭配使用——当数据无法塞进单台机器时需要由服务器集群存储和处理Apache Parquet 是与大数据搭配的常见格式。3数据处理Data Processing这是数据旅程中最激动人心的部分它把数据从原始形态转换为可用于可视化或模型训练的形式。面对文本、图片等非结构化数据时可能需要用 AI 技术提取特征features从而将其转化为结构化形式。4可视化 / 人类洞察Visualization / Human Insights要理解数据往往需要可视化。掌握多种可视化技术后就能找到最合适的视角来获取洞察。数据科学家经常把玩数据多次可视化来寻找关系也可以使用统计方法检验假设或证明数据之间的相关性。5训练预测模型Training a Predictive Model由于数据科学的终极目标是基于数据做出决策我们可以使用机器学习技术构建预测模型然后用结构相似的新数据集进行预测。当然视具体数据而定某些步骤可以省略例如数据已在数据库中或无需训练模型某些步骤也可以重复多次例如数据处理阶段。数字化与数字化转型过去十年越来越多的企业意识到数据在决策中的重要性。要把数据科学原理应用到业务中第一步是收集数据——也就是把业务流程转化为数字形式这被称为数字化digitalization。再将这些数据用于指导决策的数据科学技术可能带来显著的生产力提升甚至彻底的业务转型即数字化转型digital transformation。课程用一个生动的例子来说明假设我们运营一个在线数据科学课程就像本课程想用数据科学改进它该怎么做首先问什么可以被数字化最简单的方式是测量每位学生完成每个模块所花费的时间并在每个模块结束时用多选题测验衡量其掌握程度。把所有学生的完成时间取平均就能发现哪些模块最让学生吃力进而着手简化它们。你可能会反驳这个思路并不完美因为模块长短不一。更公平的做法是用完成时间除以模块长度以字符数计再进行比较。当我们开始分析多选题测验的结果时可以尝试找出学生难以理解的概念并据此改进内容。要做到这一点需要把测验设计成每道题对应一个特定概念或知识点。如果想更进一步还可以把每个模块的用时与学生的年龄段画成图或许会发现某些年龄段完成模块的时间异常长或中途退出率高。这类洞察能帮助我们给出模块的年龄建议减少因预期不匹配造成的不满。实战挑战用文本挖掘生成数据科学词云本课的动手挑战是通过分析文本来找出与数据科学相关的概念抓取一篇关于数据科学的 Wikipedia 文章下载并处理文本最终生成类似下方的词云。完整可运行的代码位于 notebook.ipynb你可以逐格运行并实时观察每一步的数据变换过程。第 1 步获取数据数据科学流程的第一步永远是获取数据。这里用requests库下载 Wikipedia 页面并携带自定义User-Agent请求头import requests # 定义自定义请求头标明数据来源 headers { User-Agent: DataScienceChallenge/1.0 (myemailgmail.com) } url https://en.wikipedia.org/wiki/Data_science response requests.get(url, headersheaders) if response.status_code 200: text response.content.decode(utf-8) print(text[:1000]) else: print(fError: {response.status_code})第 2 步转换数据下载到的是 HTML 源码需要转换为适合处理的纯文本。这里使用流行的 HTML 解析库 BeautifulSoup。它允许定位特定的 HTML 元素因此可以只保留 Wikipedia 的主文章内容剔除导航菜单、侧边栏、页脚等无关内容虽然仍可能残留少量模板文本import sys !{sys.executable} -m pip install beautifulsoup4 from bs4 import BeautifulSoup # 解析 HTML 内容 soup BeautifulSoup(text, html.parser) # 提取 Wikipedia 主文章内容其类名为 mw-parser-output content soup.find(div, class_mw-parser-output) 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 , stripTrue) print(text[:1000]) else: print(Could not find main content. Using full page text.) text soup.get_text(separator , stripTrue) print(text[:1000])这里selectors列表值得展开说明.mw-jump-link是页面跳转链接、.navbox是底部导航框、.reflist与sup.reference是参考文献区域及其上标、.mw-editsection是编辑链接、.hatnote是页面顶部提示条、.metadata与.infobox是信息框、#toc与.toc是目录、.sidebar是侧边栏。decompose()方法会把这些节点彻底从解析树中移除从而极大降低后续关键词提取的噪音。第 3 步提取洞察最关键的一步是把数据转化为可以得出洞察的形式。这里用 RAKE 关键词提取算法库nlp_rake从文本中提取关键词并观察哪些关键词更有意义import sys !{sys.executable} -m pip install nlp_rake import nlp_rake # max_words关键词最多包含 2 个词 # min_freq关键词在文档中至少出现 3 次 # min_chars关键词最小长度为 5 个字符 extractor nlp_rake.Rake(max_words2, min_freq3, min_chars5) res extractor.apply(text) resRake对象的三个参数是调优关键词质量的关键max_words2限制关键词最多为两词短语min_freq3过滤低频词min_chars5过滤过短词。你可以自由调整这些值并观察结果变化——比如提高min_freq会得到更精但更少的词放宽max_words则会引入更多长短语。运行后会得到一组关键词 重要度分值的二元组列表且越相关的学科如 machine learning、big data越靠前——这正是 RAKE 的价值所在。第 4 步可视化结果人类最擅长从视觉形式中解读数据因此通常需要把数据可视化以得出洞察。先用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, rotationvertical) plt.show() plot(res)不过展示词频还有更好的方式——词云Word Cloud。需要再安装一个库来根据关键词列表绘制词云!{sys.executable} -m pip install wordcloud from wordcloud import WordCloud import matplotlib.pyplot as plt # 既可从词 频率字典生成也可直接传入原始文本 wc WordCloud(background_colorwhite, width800, height600) plt.figure(figsize(15, 7)) plt.imshow(wc.generate_from_frequencies({k: v for k, v in res}))也可以直接把原始文本传给WordCloud看看能否得到类似结果plt.figure(figsize(15, 7)) plt.imshow(wc.generate(text))最后保存生成的词云图片wc.generate(text).to_file(images/ds_wordcloud.png)对比两种方式你会发现直接由原始文本生成的词云看起来更炫但噪音也更多例如会出现Retrieved on这类无关词且双词关键词如data scientist、computer science明显变少。这是因为 RAKE 算法在从文本中挑选优质关键词方面做得更好。这个例子很好地说明了数据预处理与清洗的重要性——只有最终画面足够干净我们才能做出更好的决策。本仓库还提供了参考答案笔记本 solution/notebook.ipynb它把抓取目标替换为 Machine Learning 的 Wikipedia 文章你会看到这篇文章包含大量术语使分析更棘手——这就需要我们在关键词提取之后另想一套清洗策略去掉那些高频却无意义的词组组合。强烈建议在跑通基础笔记本后对比阅读。课后作业思考数据科学应用场景本课包含两项作业任务 1修改上文代码找出Big Data与Machine Learning领域的相关概念。只需要把url换成对应 Wikipedia 词条再视情况调整 RAKE 参数即可任务 2思考数据科学应用场景。选择一个真实生活中的流程或问题思考如何用数据科学流程改进它围绕以下四点展开可以收集哪些数据如何收集如何存储数据规模大概多大可能从数据中得到哪些洞察基于数据能做哪些决策作业要求至少针对 3 个不同的领域各描述一遍。官方给出了教育、疫苗接种、工作生产力三个起步方向并建议用如下表格填写示例为教育场景的参考答案问题领域问题收集哪些数据如何存储可以得到哪些洞察/决策教育大学课堂出勤率低假设出勤好的学生考试成绩更好想激励出勤并验证假设通过教室安防摄像头照片或学生手机蓝牙/Wi-Fi 地址追踪出勤考试数据已在学校数据库摄像头照片需存储 5~10 张非结构化再用 AI 识别学生人脸转化为结构化形式计算每位学生的平均出勤率考察其与考试成绩的相关性相关方法详见 概率与统计 章节可将周出勤排行发布到校园门户并为高出勤者抽奖激励疫苗接种工作生产力评分标准分为三档优秀合格待改进为所有问题领域都识别出合理的数据来源、存储方式及可能的决策/洞察部分方案细节不足未讨论数据存储至少描述了 2 个领域只描述了数据方案的部分内容且仅考虑 1 个领域结语与进一步探索作为 Data-Science-For-Beginners 的开篇之课《Defining Data Science》的核心价值在于建立全局认知从数据是什么出发厘清数据科学的定义与边界梳理结构化/半结构化/非结构化数据、数据来源与数据旅程的五大环节最后用数字化与数字化转型的案例把概念拉回现实业务。随后的课程将逐一深入这些环节数据处理与存储细节见 第 2 部分处理数据可视化技术见 第 3 部分数据可视化数据分析与推断所需的概率统计基础见 第 4 课统计与概率入门。动手实践方面除了本课的 notebook.ipynb 与 参考答案仓库 examples/ 目录下的五个示例脚本从01_hello_world_data_science.py的数据科学 Hello World到05_real_world_example.py的真实案例也是绝佳的配套练习data/ 目录提供了可直接加载的真实数据集鸟类、蜂蜜、糖尿病、疫情时间序列等方便你立刻把本课的数据旅程五步法付诸实践。【免费下载链接】Data-Science-For-Beginners10 Weeks, 20 Lessons, Data Science for All!项目地址: https://gitcode.com/GitHub_Trending/da/Data-Science-For-Beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表