DataCamp-博客中文翻译-三-
DataCamp 博客中文翻译(三)
利用数据科学探索软件开发
许多软件开发人员正在学习数据科学来分析他们客户的数据。越来越多的人意识到,他们可以使用同样的技巧来回答自己的问题,例如:
- 这个项目什么时候可以发布?
- 我们的应用程序的哪些组件最需要测试?
- 谁应该修复这个 bug?
- 人们觉得我的 API 的哪些部分最难使用?
在过去的 15 年里,软件工程中探索这些问题的实证研究出现了爆炸式增长,部分原因是从像 GitHub 和 Stack Overflow 这样的网站获得的数据。这篇博文展示了几个有代表性的结果,然后更详细地探讨了三个结果背后的方法。
如果您想了解更多关于如何使用数据科学在您自己的项目中获得这样的见解,请告诉我。
数据科学和软件工程:例子
先说一个影响每个大规模做数据科学的人的发现:袁等人的发现简单的测试可以防止分布式数据密集型系统中最关键的故障。他们检查了 Cassandra、Hadoop MapReduce 和类似系统上的故障,发现:
- 几乎所有故障都需要 3 个或更少的计算节点来重现。也就是说,调试集群通常不需要集群。
- 错误日志通常包含足够的数据以允许再现。
- 通过对错误处理代码进行简单的测试,大多数灾难性故障都可以很容易地避免。
最后一点是最意想不到的。虽然专业人员通常在事情进展顺利时测试他们的分析代码是否正常工作,但他们很少在出现问题时测试它是否做了正确的事情。在开发过程中增加一些这样的测试可以避免下游的许多痛苦。
另一个大规模的结果来自 Altadmri 和 Brown 的工作,他们观察了英国高中生 3700 万次编译程序的尝试。然后他们问老师学生最常犯的错误是什么,并发现:
- 关于学生最可能犯什么错误,老师们意见不一。
- 更重要的是,老师的预测与学生的实际错误只有微弱的相关性。
当然,数据挖掘并不是在编程中产生有用的基于证据的洞察力的唯一方法。2013 年, Andreas Stefik 的团队发表了一系列研究中的第二篇,研究一些语言是否比其他语言更容易学习。作为基线,他们在研究中纳入了一种虚构的语言,其关键词是随机生成的。
令他们惊讶的是,像 Java 和 Perl 这样的花括号语言对于新手来说就像随机生成的语言一样难以识别。Python 和 Ruby 都非常容易学习,Quorum 更容易,在添加新特性之前,它会对每个新特性的语法进行测试。在这个有趣的播客中,Andreas 讨论了这个结果,以及为什么编程语言设计师如此不重视可用性的原因。
识别安全错误报告
作为这些研究如何进行的一个例子, LERO 的 Fayola Peters 使用基于文本的预测模型来发现大型系统的错误追踪器中的安全错误报告,以便对它们的工作进行优先排序。在一项研究中,她使用了来自 Chromium、Wicket、Ambari、Camel 和 Derby 项目的数据;这些包含总共 45,940 个错误报告,但只有 0.8%是安全错误报告。
一些安全漏洞被手动标记,这些可以用于训练分类器来检测未标记的漏洞。像朴素贝叶斯和随机森林这样的技术是一个起点,但是通用模型的效率通常可以通过过滤特定的关键字来提高。最重要的检查是,从带有安全缺陷标签的项目中构建的模型能够在其他项目中找到类似的缺陷。结果令人鼓舞:彼得斯发现她的分类器工作得足够好,在实践中很有用。
我的补丁会被接受吗?
作为第二个例子,公司希望他们的修改包含在项目中,以避免必须自己维护代码,而志愿者希望知道他们的补丁是否还有机会。由于补丁提交和接受之间往往有很长时间,蒙特利尔理工大学的 Bram Adams 和他的团队一直在建立模型来预测哪些将被接受。
像许多数据科学项目一样,这个项目从获取和清理来自多个来源的数据开始,包括 Git 存储库和 Gerrit 代码评审。然而,对于使用基于电子邮件的审查的项目,如 Linux 内核,收集数据意味着搜集邮件列表档案,并使用启发式方法,如补丁的校验和或基于集合的变更行交集,以匹配补丁和对话。即使在像 GrimoireLab 这样的工具的帮助下,也总会有多个版本被审查的补丁,以及被分割成单独审查的多个部分的补丁。与所有数据科学一样,由分析师来构建模型,模型中的假设将对最终结论产生强大的影响。
第二步是决定要检查哪些变量以及对每个变量使用什么指标,例如:
- 补丁质量
- 补丁开发者的经验
- 审阅过程(例如,审阅意见和审阅者人数)
- 评审质量(例如,评审的详细程度)
- 复习时间
- 补丁作者和评审者的交互(例如,友好对愤怒)
就这半打可能使用从生存统计到情感分析的一切。一旦决定测量什么,你就可以应用 DataCamp 的课程教授的数据科学工具。因为您的真正目标是预测未来补丁的接受程度,所以最直接的方法是逻辑回归,但是还有许多其他方法。
最后,您可以测量变量的重要性,以确定每个变量对补丁接受度的影响。这必然部分是定性的,因为你的目标是确定开发人员可以做什么来提高他们的工作进入产品的几率。像往常一样,您必须小心不要混淆相关性和因果关系,但是即使是几个简单的建议(比如“不要在提交消息中全部使用大写字母”)也会产生真正的影响。
寻找帮助
在过去的 20 年里,程序员工作方式的最大变化并不在于他们使用的语言:而是几乎普遍依赖堆栈溢出来提问和获得答案。阿德莱德大学的克里斯托夫·特鲁德和他的合作者一直在开发让这样的网站更有用的方法。
它们的起点是堆栈溢出数据转储。在做了一些探索性的统计以查看单词和句子的数量、最常见的单词、术语频率-逆文档频率(TF-IDF)等之后,下一步是查看堆栈溢出线程中哪些单词与更高的投票、更高的接受率和更高的视图计数同时出现。
由于软件文档包含许多不完整的句子和代码元素,现成的自然语言处理库经常出错。用英语以外的语言编写的软件文档甚至更难解析,因为它仍然倾向于使用英语作为技术术语。也就是说,它混合了两种自然语言和代码元素。临时试探法和更高级的建模技术必须一起使用来处理这样的情况。
将这些片段放在一起,就有可能构建一个工具,该工具将 Python 模块的名称作为输入,并从堆栈溢出线程中生成关于该模块的有意义的句子。更进一步,特鲁德和他的合作者能够使用单词之间的语法依赖来自动找到解释如何执行任务的软件文档,然后自动识别可以完成这项任务的代码片段。
结论
很多时候,关于软件开发的普遍真理是基于强烈的观点和响亮的声音,而不是证据。正如开篇所描述的,这种情况正在发生变化,因为每年都有数百项高质量的研究出现,以支持一些信念,如“代码审查确实是发现 bug 的最佳方式”,并挑战其他信念,如“测试驱动的开发并不像一些人认为的那样有效,并且goto
语句并不真正有害”。
“工程”被定义为“应用科学方法创造有用的东西”。如果这是真的,那么由于数据科学,软件开发可能最终会成为一门真正的工程学科。如果您希望看到向您展示如何将数据科学应用于软件开发的课程,请告诉我们。
进一步阅读
研究人员每年都会在像挖掘软件库这样的会议上展示这一领域的几十个新发现。其中一些程序仍然被锁在学术工资后面,但是越来越多的研究人员提供预印本。
对于那些寻找概览的人来说,2010 年出版的《制作软件 》一书是当时最有趣结果的“最热门”合集。一个名为 软件工程数据科学透视 、 分析软件数据的艺术和科学 以及 软件工程中共享数据和模型 的新三部曲对相同的主题进行了更广泛和更新的报道,另外,Derek Jones 正在使用 R 编写一本名为 的新书。
在教室中使用 DataCamp 工作空间
在 DataCamp,我们的使命是让学生掌握适合未来的数据技能。我们相信数据教育是一项基本人权,这就是为什么我们在 2017 年推出了课堂数据营,这是一项向学院和大学教授及其学生提供免费数据营的举措。2021 年,随着进一步推进数据科学民主化的明确愿景,教室数据营的范围扩大到包括美国高中教室的免费访问。
2021 年,3,750 多个教室的 100,000 多名学生和教师加入了教室数据营。这意味着可以免费访问 DataCamp 不断增长的专家内容课程(360 多门互动课程、50 多条精选学习路径和 100 多个真实项目)以及旨在提高参与度和跟踪学生学习进度的各种工具。最强大的工具之一是 DataCamp Workspace 。参加 DataCamp for Classrooms 的学生可以无限制地访问 Datacamp Workspace,这是一个在线 IDE,允许他们通过协作处理数据项目来获得实际编码经验。
在本帖中,我们将解释什么是 DataCamp Workspace,以及教师和讲师如何在课程工作中利用该工具来提高学生的数据科学技能。
什么是 DataCamp 工作区?
DataCamp Workspace 是一个在线集成开发环境(通常称为 IDE ),允许用户编写代码、单独或集体分析数据以及共享数据见解。换句话说,你可以把 DataCamp Workspace 看作是一种专门为数据科学设计的 Google Docs。这是从学习数据科学到利用它的完美工具。
在某些方面,DataCamp Workspace 类似于 Jupyter 笔记本,其优势之一在于与该平台完全互操作。事实上,从 DataCamp 的笔记本编辑器无缝切换到 JupyterLab 是可能的。Workspace 包括一些关键功能,如真实团队协作、评论、标记和共享,令人惊讶的是,这些功能在数据科学领域中仍然经常缺失。
Workspace 是一个基于云的浏览器内工具,这意味着它无需安装和下载即可开始使用。这在课堂上可以节省大量时间,因为不需要在学生的计算机上进行设置。
Workspace 支持 R、Python 和 SQL,可在 Mac、Windows 和 Linux 上使用。数据科学的所有软件和常用包都有。它有一个直观和用户友好的界面,使其成为各种数据配置文件的伟大工具,是学生的理想选择。
如何在教室中使用工作空间
Workspace 是为参加教室数据营的教师和学生设计的核心工具。值得注意的是,所有申请教室数据营的小组都在团队计划中,每个小组成员都可以免费获得团队许可证!同样的情况也适用于 DataCamp 捐赠的组。该团队计划是为寻求在数据科学项目上合作的小型和大型数据营团队设计的。编辑者(通常是讲师和教师)可以在组帐户中创建、编辑、执行、发布和共享工作空间和集成。
Workspace 至少可以支持三种教育场景:
-
工作空间模板和数据集
-
促进学生合作
-
根据你的讲座/课程作业,建立你自己的作业
工作空间模板和数据集
开始会很艰难。熟悉并熟练掌握 IDE,更不用说编程语言了,是一项艰巨而耗时的任务,尤其是当学生的数据或编码知识有限时。为了减轻冷启动的影响,Workspace 提供了一些有用的资源来帮助您入门,包括:
工作区模板
使用可定制的模板,在几分钟内构建一个数据驱动的控制面板。工作区模板使您能够访问预先编写的代码,从而轻松构建可视化和报表,而无需设置笔记本或编写自己的代码。使用工作区模板,您将能够:
- 借助预写代码快速获得洞察力
- 通过预安装和导入的软件包节省安装时间
- 作为有影响力的出版物分享您的见解
- 从学习到做数据科学
工作空间数据集
Workspace 包括一个完整的现成数据集目录,您可以分析和解决现实世界中的问题。将您的编码技能应用到我们管理的库中的数据集,并创建一个数据科学组合来存储您的发现。
促进学生合作
DataCamp Workspace 支持笔记本电脑中的实时和异步协作,并以不同的访问权限共享您的工作空间。该功能非常适合学生与同龄人或同学一起进行编码作业或数据科学项目。它也可以成为尝试创新编码方法的良好基础,例如结对编程,这可以改善学生的学习体验,增加参与度,并鼓励学生之间的互动。
要允许学生在同一个项目中与其他人协作,您只需设置共享配置,以控制谁可以查看或编辑工作区和/或出版物。
当共享一个工作空间时,您可以授予协作者几个角色(查看者、评论者、编辑者和所有者)。角色的可用性对于根据老师和学生的特定需求定制作业或项目非常有用。
根据你的讲座/课程作业,建立你自己的作业
提高数据流畅性的最佳策略是边做边学。这是所有 DataCamp 课程背后的思想学校,注册 DataCamp for Classrooms 的学生可以访问这些课程。Workspace 是愿意坚持这一理念的教师的完美工具。
假设一名教师希望他们的学生完成一个 Jupyter 笔记本作为作业的一部分。他们需要做的只是在组帐户中与学生共享作业链接。一旦学生完成了作业,他们只需要与老师分享他们的作业链接。在审阅作业时,教师不必担心可再现性,因为 Workspace 可以确保安装所有必需的软件和软件包。
结论
如果你是一名教师或教授,正在考虑申请教室数据营项目,我们希望这篇文章能帮助你下定决心。如果你已经在使用它,我们希望这几行能帮助你更上一层楼。
我们确实明白有很多东西需要理解。如果您想了解更多关于如何利用 Workspace 进行课堂教学的信息,我们建议您观看录制了的网络研讨会,Filip Schouwenaars 将向您展示如何:
-
向 GitHub 存储库添加笔记本
-
创建可共享的 URL
-
使用链接查看最终用户的体验
https://web.archive.org/web/20220604042222if_/https://www.youtube.com/embed/gy0lT_dKCDo?t=8s
最后,我们强烈建议您阅读 Workspace 文档,其中广泛涵盖了如何使用该工具以及如何将 Workspace 用于课堂。
数据科学的版本控制
跟踪您或您的合作者对数据和软件所做的更改是任何项目的关键部分,无论是研究、数据科学、软件工程,...能够引用或检索整个项目的特定版本有助于在发布前、回应审阅者的评论时以及为审阅者、编辑和读者提供支持信息时提高可重复性。
跟踪变更的最佳工具是软件开发中使用的版本控制系统,如 Git、Mercurial 和 Subversion。它们跟踪文件中的内容在何时由谁进行了更改,并将更改同步到中央服务器,以便多个参与者可以管理对同一组文件的更改。
虽然这些工具使跟踪变化变得更容易,但它们的学习曲线可能很陡。为了克服这个学习曲线,有两组建议:一个管理变更的系统化的手动方法和版本控制,你可以使用第一个方法来完成第二个,或者直接进入版本控制。
然而,无论您最终选择哪种建议,都有一些您最好考虑的通用最佳实践或建议:
-
人类创造的任何东西,一被创造出来就(几乎)备份。这包括所有类型的脚本和程序,你的项目所依赖的软件包,以及文档。这一规则的一些例外情况将在下面讨论。
-
保持较小的变化。每个变更不应该太大以至于使变更跟踪变得无关紧要。例如,像
Revise script file
这样添加或更改数百行的单一更改可能太大,因为它不允许对分析的不同组成部分进行单独调查。同样,变更也不应该被分解成太小的部分。根据经验,单个更改的合适大小是一组编辑,您可以想象在将来的某个时间点想要在一个步骤中撤消这些编辑。 -
份额变动频繁。参与项目的每个人都应该定期分享和吸收他人的变更。不要让单个调查者的项目存储库版本偏离,因为合并差异所需的努力比差异的大小增长得更快。这对于下面描述的手动版本化过程尤其重要,手动版本化过程对于合并同时的、可能冲突的变更没有提供任何帮助。
-
创建、维护和使用清单,以保存和共享对项目的更改。列表应该包括写日志消息,清楚地解释任何变更,单个变更的大小和内容,代码的风格指南,更新待办事项列表,以及禁止提交未完成的工作或破损的代码。
-
使用 Dropbox 等系统或 GitHub 等远程存储库,将每个项目存储在研究人员工作机器的镜像文件夹中。至少每天同步一次文件夹。这可能需要几分钟的时间,但当笔记本电脑被盗或硬盘出现故障时,这一时间就有了回报。
手动版本控制
第一种建议的方法是手工完成所有工作,它有两个额外的部分。
首先,将一个名为CHANGELOG.txt
的文件添加到项目的docs
子文件夹中,并在这个文件中按时间倒序(即最近的放在最前面)标注项目变更的日期。这个文件相当于一个实验笔记本,应该包含如下所示的条目。
## 2016-04-08
* Switched to cubic interpolation as default.
* Moved question about family's TB history to end of questionnaire.
## 2016-04-06
* Added option for cubic interpolation.
* Removed question about staph exposure (can be inferred from blood test results).
第二,每当有重大变更时(即,对结果有重大影响的变更),复制整个项目,并将该副本存储在一个子文件夹中,该子文件夹的名称反映了正在同步的区域中的日期。这种方法导致项目组织如下所示:
.
|-- project_name
| -- current
| -- ...project content as described earlier...
| -- 2016-03-01
| -- ...content of 'current' on Mar 1, 2016
| -- 2016-02-19
| -- ...content of 'current' on Feb 19, 2016
在这里,project_name
文件夹被映射到外部存储器(比如 Dropbox),current
是工作正在进行的地方,project_name
内的其他文件夹是旧版本。
手动版本控制的利与弊
你会经常听到“数据很便宜,时间很贵”。像上述方法建议的那样复制一切可能看起来很浪费,因为许多文件不会改变,但是考虑一下:1tb 的硬盘零售价约为 50 美元,这意味着 50gb 的成本不到 5 美元。假设大数据文件被保存在备份区域之外(这将在下面进一步详细讨论),这种方法比手动选择文件进行复制花费的时间要少。
该手动程序满足上述要求,不需要任何新工具。但是,如果多个研究人员在同一个项目上工作,他们需要协调,以便在任何时候都只有一个人在处理特定的文件。特别是,他们可能希望为每个贡献者创建一个 changelog 文件,并在制作备份副本时合并这些文件。
版本控制系统
上面描述的手工过程最需要的是自律。支撑我们的第二种方法的工具——我们在自己的项目中使用的工具——不仅加速了手动过程:它们还在执行其他步骤的同时自动化了一些步骤,因此需要更少的自律来获得更可靠的结果。
很难知道当今研究中最广泛使用的工具是什么,但谈论最多的无疑是 Git。这主要是因为 GitHub,这是一个流行的托管站点,它将通过 Git 进行协作的技术基础设施与现代 web 界面结合在一起。GitHub 对公共和开源项目以及学术界和非营利组织的用户是免费的。GitLab 是一个广受好评的替代品,有些人更喜欢它,因为 GitLab 平台本身是免费和开源的。Bitbucket 为 Git 和 Mercurial 存储库提供免费托管,但是没有那么多的科学用户。
什么不在版本控制之下
文件大小和格式
版本控制系统的好处并不适用于所有的文件类型。特别是,根据文件大小和格式的不同,这些系统或多或少会有所回报。
-
首先,版本控制系统中的文件比较针对纯文本文件(如源代码)进行了优化。通常,能够看到所谓的“差异”是版本控制的一大乐趣。不幸的是,虽然 Microsoft Office 文件(如 Word 使用的
.docx
文件)或其他二进制文件(如 pdf)可以存储在版本控制系统中,但不可能精确定位一个版本到下一个版本的具体变化。表格数据,如 CSV 文件,也可以放在这样的系统中,但是改变行或列的顺序会产生很大的变化,即使数据本身没有变化。 -
第二,原始数据不应该改变,因此不应该需要版本跟踪。如果您可以从原始数据和软件中重新生成中间数据文件和其他结果,那么也没有必要对它们进行版本控制。但是,如果数据和结果很小,建议对它们进行版本化,以便于合作者访问和版本间的比较。
-
第三,今天的版本控制系统不是为处理兆字节大小的文件而设计的,更不用说千兆字节了,所以大型数据或结果文件不应该包括在内。(作为“大”的基准,GitHub 上单个文件的限制是 100MB。)一些新兴的混合系统(如 Git LFS)将文本注释置于版本控制之下,同时将大数据本身存储在远程服务器中,但这些系统还不够成熟,不值得我们推荐。
无意共享
版本控制系统的好处并没有真正发挥你的优势的另一个例子是“无意的共享”。处理受禁止共享的法律限制的数据(如医疗数据)的研究人员应注意不要将数据放在公共版本控制系统中。一些机构可能会提供对私有系统的访问,因此值得向您的 it 部门核实。
此外,确保不要无意中将安全凭据(如密码和私钥)放在版本控制系统中,因为其他人可能会访问这些凭据。
如果你想尝试所有这些,请查看我们针对数据科学的 Git 免费介绍。
承认
这篇文章摘自 Greg Wilson、Jennifer Bryan、Karen Cranston、Justin Kitzes、Lex Nederbragt 和 Tracy K. Teal 的《科学计算中足够好的实践》,https://doi.org/10.1371/journal.pcbi.1005510。
我们向关注女性的 DataCamp 捐赠合作伙伴致敬
三月八日是国际妇女节。尽管在过去 20 年里,从事科学和工程工作的妇女人数从 130 万增加到 200 万,但妇女在劳动力中的代表性仍然不足。最大的差距仍然出现在工程、计算机科学和物理科学领域。根据国家科学基金会的数据,在美国,女性仅占计算机和数学科学家的 27%,仅占工程劳动力的 15%,全球统计描绘了一幅同样不公平的画面。即使这些女性在这些竞争激烈的领域找到了工作,她们通常也比白人男性同事每年少挣 15,000 美元。对于许多从事 STEM 工作的有色人种女性来说,这一薪酬差距是的两倍 ( 皮尤研究中心,2018 年)。
我们的几个 DataCamp 捐赠合作伙伴决心改变这种状况。他们正在做的一个方法是帮助我们让世界各地所有年龄的女性免费使用 DataCamp。请继续阅读,了解这些非营利组织增加 STEM 行业多样性的其他方式。
【黑人女孩守则】正在引领一场在科技领域建立平等代表权的全球运动。他们与美国各地的广大社区合作,通过增强年轻有色人种女孩的自信心、让她们接触数字时代看不见的可能性,并让她们具备成为明天的创造者、创新者和领导者所需的工具和思维习惯,来召集她们并赋予她们权力。
数据科学 FEM 是哥伦比亚一群致力于研究数据科学的女性,她们定期参加斯坦福大学年度数据科学女性(WiDS)会议。他们要求其成员在一年内成为数据科学家,与导师、活动和赞助商网络分享知识。
Girls Will Code是一个由 17 岁的 CS 神童伊莎贝尔·西(Isabel Sieh)创立的非营利组织,旨在鼓励女孩参与与编码、编程、机器人和工程相关的活动。通过这个平台,女孩们可以分享关于她们个人项目的想法,在有趣的学习环境中提高对编程和机器人的兴趣。
简单步骤社群连接是一家成立于 2017 年的 501c3 组织,旨在帮助女性移民人才实现其职业目标。他们为女性人才建立一个社区,提供自我发展和技能培养培训,并将女性移民人才与工作机会联系起来。从加利福尼亚湾区开始,他们服务于美国其他城市和州。
代码姐妹是柬埔寨第一个女性编码俱乐部。他们的使命是增强女学生的信心,分享学习编码技能的快乐,让她们拥有成功的数字未来。
【WiTech】(青年妇女科技公司)是一个由青年领导的非营利组织,旨在激励、教育和赋权青年,以打破性别障碍,利用科学和技术有所作为。他们的目标是通过为有兴趣进入科技行业的年轻女性增加网络机会和导师,实现菲律宾科技行业的性别平等。
非洲妇女避难所是一个创新的创业女性中心,为妇女领导的企业、项目和倡议的成长和发展创造友好和富有成效的环境。他们将有前途的年轻女性、创业公司、女性领导的组织和女性领导者与商业支持、工具和资源联系起来,共同繁荣。非洲妇女避难所侧重于增加妇女在创业、领导和技术领域的参与,以便她们能够为世界面临的各种挑战提供可行和可持续的解决方案。
与 DataCamp 合作捐赠
你知道任何公立高中或非营利组织可以从与 DataCamp 的合作中获益吗?我们还有 5000 多份套餐可以赠送—请在 【电子邮件保护】 申请!
呼吁世界各地所有学生、失业者和低薪的有志数据专业人士:我们的数据营捐赠合作伙伴可能能够为您提供一年的免费数据营,如果您满足他们的资格要求,这因组织而异。访问 FAQ 找到离你最近的组织,直接联系他们获取更多信息。
加入 DataCamp 团队
最后,如果你对数据教育民主化感兴趣,DataCamp 正在从各行各业招聘人才。申请这里!
本季度,我们自豪地向我们的讲师支付了超过 100 万美元
我很高兴地宣布,我们创造了一个新纪录:我们将在一个季度内向我们的教师社区支付超过 $1,000,000 的持续版税,用于他们的学习内容。DataCamp 的前五名教师平均每人将获得超过 53,000 美元的版税,而本季度所有教师的平均收入份额为 4,520 美元。
对我们来说,这是一个新的里程碑,也是对我们教师的素质和他们所创造的内容的证明。我们的教师群体在过去的几年里不断壮大,他们来自世界各地。
成为一名 DataCamp 讲师绝非易事。我们的审查程序允许我们为我们的学生保持最高的教学标准。我们根据讲师的专业知识、编码能力、专业经验和以前的教学经验来选择讲师。这些世界级的专业人士包括著名学院和大学的教师以及来自各行各业的专家。
DataCamp 讲师还制作涵盖广泛技术和主题的学习内容,这使我们能够成为数据技能教育的综合平台。因为他们,我们的课程目录提供了无与伦比的广度和深度。我们最受欢迎的课程是 Python、R 和 SQL,但我们也有 Tableau、Power BI、Scala、Excel、电子表格和概念性非编码课程。
我们认为我们的收入共享模式是支持开源社区发展的一种方式。我们的许多教师花时间在开源项目上——通常没有金钱利益——我们的版税为他们提供了被动收入,让他们继续做他们热爱的事情。与我们一起制作课程或项目是教师的一次性投资,只需要偶尔维护以保持学习材料的更新。
我们要衷心感谢我们所有的教师,感谢他们帮助我们构建了世界上最好的数据教育平台!您让 DataCamp 成为每天教学和学习的最佳场所。
你有什么需要加入我们的网络超过 280 名教师和创作者?看看我们的课程愿望清单。如果你发现了一门你非常适合的课程,我们邀请你到申请成为数据营讲师。
用 Power BI 可以做什么?
随着全球数据领域信息量的不断增长,了解您的数据比以往任何时候都更加重要。世界各地的企业依靠数据上下文来可视化他们的信息,使他们能够做出更好的业务决策。更好的是,我们现在有像 Power BI 这样的工具来更有效地处理你的数据。
超过 250,000 家组织,包括许多财富 500 强公司,已经采用 Power BI 作为其主要的商业智能工具。它强健而强大(处理多达 1 亿行数据),使其成为不同领域的企业将原始数据转化为各种可操作见解的重要工具。
如果你对掌握 Power BI 后能做什么感到好奇,我们已经仔细研究了一些潜在的项目。另外,在我们的完整指南中查看我们对能量 BI 和画面的比较。
掌握 Power BI 做数据分析可以做什么?
1.用漂亮的无代码图和图表可视化您的数据
Power BI 的绘图和图表工具功能强大且易于使用,完全不需要编码。从传统的条形图和折线图到商业图表和仪表,Power BI 应有尽有。通过掌握 Power BI 中的数据可视化,您将能够创建漂亮的、可定制的图表,并对您的分析产生影响。
如何开始
- 课程: 电力 BI 中的数据可视化
- 案例分析: 分析电力 BI 中的就业市场数据
2.用 DAX 处理这些数字
如果你曾经想过“Excel 公式很有用,但是我想要更好的”,那么 DAX 就是适合你的!DAX 是 Power BI 的脚本语言,非常类似于 Excel 公式语法。它提供了一种简单而强大的方法来处理数据集中的数字。
如何开始
- 课程:DAX in Power BI 简介
- 过程: DAX 函数中的幂 BI
3.操作和转换您的数据
每个数据分析师都知道,当你得到数据时,数据永远不会是你想要的格式。幸运的是,Power BI 包括强大的工具来准备和转换您的数据以供分析。借助 Power BI 的 M 语言和高级编辑器,您可以创建健壮的数据转换,将数据从原始数据转换为可用于分析的数据。
如何开始
- 课程: 电力 BI 中的数据准备
- 课程: 电力 BI 中的数据转换
- 课程:Power BI 中的数据建模
4.借助交互式仪表盘讲述您的数据故事
Power BI 的核心是创建交互式仪表盘,帮助您了解数据。DataCamp 的 Power BI 课程从一开始就教授这一点,因此您可以尽快从零开始获得洞察力。
如何开始
- 课程: 异能匕入门
- 课程: 电力 BI 中的报告设计
5.与同事和全世界分享您的报告
数据分析的价值来自于人们根据结果做出的决策。要做到这一点,你需要与你的同事或更广泛的世界分享你的成果。Power BI 提供了一系列共享工具,使您的仪表盘可供他人使用。不过,在开始之前,了解如何以用户为中心设计仪表板和报告是很重要的。
如何开始
- 课程: 电力 BI 中面向用户的设计
- 课程: 报道于权力毕
- 职业轨迹: 数据分析师与权力 BI
你能用 Python 做什么?
众所周知,Python 是最通用的编程语言,适合每个人以及来自不同教育和专业背景的任何人。无论您是数据科学家、web 或软件开发人员,或者仅仅是技术爱好者,Python 都可以处理许多不同的任务。
作为一种流行的通用编程语言,许多不同的公司都使用 Python,包括 NASA、Spotify、Google 和 JP Morgan。它的多功能性、开源性和简单性使每个人都容易使用。如果你对掌握 Python 后能做什么感到好奇,我们已经仔细研究了一些潜在的项目。
掌握 Python 做数据科学可以做什么?
1.构建出色的自定义数据可视化和仪表板
Python 中最简单也是最有效的工具之一是它的数据可视化和仪表板库。Python 极大地扩展了可视化数据的可能性。matplotlib、seaborn 和 plotly 等库为您提供了创建健壮、复杂和高度可定制的可视化的能力,可以使任何演示或绘图真正脱颖而出。此外,通过掌握 Dash 包,您将能够构建极其丰富的 dashboard web 应用程序,部署它们并与同事共享,而无需任何成本。
如何开始
- 课程:【Seaborn 数据可视化简介
- 课程:【Matplotlib 数据可视化介绍
- 课程:Python 中使用 Plotly 的数据可视化介绍
- 课程:用 Dash 和 Plotly 构建仪表板
- 技能轨迹:用 Python 实现数据可视化
2.自动化重复的数据操作工作流程
许多涉及数据的任务通常是每天或每周重复的一系列重复步骤。供应链预测就是一个很好的例子,分析师通过一系列数据操作步骤和简单的预测技术来进行每周预测。
Python 允许您创建脚本,当结合一些命令行知识时,可以自动运行和调度脚本。此外,通过使用函数,您可以存储通常对数据执行的复杂数据操作任务,并根据您的需要对其稍作修改,而不是从头开始重新创建分析。
如何开始
- 课程:用 Python 写函数
- 课程:熊猫数据操作
- 课程:Python 中数据科学家的软件工程
- 职业轨迹: Python 程序员
3.加快财务分析工作流程
Python 是金融和金融科技领域使用最广泛的工具之一。来自世界各地的从业者利用 Python 完成投资组合分析、定量风险管理、信用风险建模、预测等任务。
Python 健壮的财务包提供了一套工具来解决上述问题以及更多问题。此外,通过将自动化与财务任务相结合,您将能够加速任何财务分析工作流。
如何开始
- 课程:Python 中的投资组合风险管理介绍
- 课程:Python 中的量化风险管理
- 课程:Python 中的信用风险建模
- 技能轨迹:Python 中的应用金融
4.利用机器学习构建智能应用
Python 的主要杀手锏之一是其丰富且功能丰富的机器学习包。Scikit-learn 是业内机器学习的标准包,目前被大多数数据科学家使用。掌握 scikit-learn 和机器学习将允许您建立预测模型,如客户流失模型、电影推荐系统等。
此外,深度学习包(如 Tensorflow、Keras 和 PyTorch)是令人惊叹的机器学习用例(如自动驾驶汽车、智能聊天机器人和其他认知应用)背后的驱动引擎。
如何开始
- 课程:使用 scikit 的机器学习-学习
- 课程:Python 中的无监督学习
- 课程:Python 深度学习入门
- 课程:用 Python 中的 Keras 进行图像处理
- 职业轨迹:使用 Python 的机器学习科学家
Python 作为最通用的编程语言而闻名,适合每个人和来自不同教育和专业背景的任何人。无论您是数据科学家、web 或软件开发人员,或者仅仅是技术爱好者,Python 都可以处理许多不同的任务。
作为一种流行的通用编程语言,许多不同的公司都使用 Python,包括 NASA、Spotify、Google 和 JP Morgan。它的多功能性、开源性和简单性使每个人都容易使用。如果你对掌握 Python 后能做什么感到好奇,我们已经仔细研究了一些潜在的项目。
掌握 Python 做数据科学可以做什么?
1.构建出色的自定义数据可视化和仪表板
Python 中最简单也是最有效的工具之一是它的数据可视化和仪表板库。Python 极大地扩展了可视化数据的可能性。matplotlib、seaborn 和 plotly 等库为您提供了创建健壮、复杂和高度可定制的可视化的能力,可以使任何演示或绘图真正脱颖而出。此外,通过掌握 Dash 包,您将能够构建极其丰富的 dashboard web 应用程序,部署它们并与同事共享,而无需任何成本。
如何开始
- 课程:【Seaborn 数据可视化简介
- 课程:【Matplotlib 数据可视化介绍
- 课程:Python 中使用 Plotly 的数据可视化介绍
- 课程:用 Dash 和 Plotly 构建仪表板
- 技能轨迹:用 Python 实现数据可视化
2.自动化重复的数据操作工作流程
许多涉及数据的任务通常是每天或每周重复的一系列重复步骤。供应链预测就是一个很好的例子,分析师通过一系列数据操作步骤和简单的预测技术来进行每周预测。
Python 允许您创建脚本,当结合一些命令行知识时,可以自动运行和调度脚本。此外,通过使用函数,您可以存储通常对数据执行的复杂数据操作任务,并根据您的需要对其稍作修改,而不是从头开始重新创建分析。
如何开始
- 课程:用 Python 写函数
- 课程:熊猫数据操作
- 课程:Python 中数据科学家的软件工程
- 职业轨迹: Python 程序员
3.加快财务分析工作流程
Python 是金融和金融科技领域使用最广泛的工具之一。来自世界各地的从业者利用 Python 完成投资组合分析、定量风险管理、信用风险建模、预测等任务。
Python 健壮的财务包提供了一套工具来解决上述问题以及更多问题。此外,通过将自动化与财务任务相结合,您将能够加速任何财务分析工作流。
如何开始
- 课程:Python 中的投资组合风险管理介绍
- 课程:Python 中的量化风险管理
- 课程:Python 中的信用风险建模
- 技能轨迹:Python 中的应用金融
4.利用机器学习构建智能应用
Python 的主要杀手锏之一是其丰富且功能丰富的机器学习包。Scikit-learn 是业内机器学习的标准包,目前被大多数数据科学家使用。掌握 scikit-learn 和机器学习将允许您建立预测模型,如客户流失模型、电影推荐系统等。
此外,深度学习包(如 Tensorflow、Keras 和 PyTorch)是令人惊叹的机器学习用例(如自动驾驶汽车、智能聊天机器人和其他认知应用)背后的驱动引擎。
如何开始
- 课程:使用 scikit 的机器学习-学习
- 课程:Python 中的无监督学习
- 课程:Python 深度学习入门
- 课程:用 Python 中的 Keras 进行图像处理
- 职业轨迹:使用 Python 的机器学习科学家
你能用 R 做什么?
原文:https://web.archive.org/web/20230101102912/https://www.datacamp.com/blog/what-can-you-do-with-r
凭借其在所有数据科学领域的专业化,包括机器学习、数据分析和可视化,R 彻底改变了我们理解数据的方式。许多来自不同专业背景的人都使用 R,包括数据科学家、学术研究人员,甚至金融分析师,R 很早就出现在 TIOBE 索引中。
R 编程有许多不同的用途,在本文中,我们将探讨一旦你掌握了 R 编程,你可以做的一些不同的事情。
数据科学硕士 R 可以做什么?
1.构建出色的自定义数据可视化和仪表板
数据可视化对于理解数据是必不可少的,R 的 ggplot2 包——经常被描述为有史以来最伟大的数据可视化工具——可以轻松绘制几乎任何你可以想象的图。掌握 ggplot2 将使您踏上驾驭 r 的道路。
对于更令人印象深刻的可视化,您可以将 ggplot2 的优雅语法与 plotly 的交互性结合起来,或者使用 shiny 来创建交互式仪表板。
如何开始
- 课程:【ggplot2 数据可视化介绍
- 课程:R 中与 plotly 的交互数据可视化
- 课程:用 Shiny in R 构建 Web 应用程序
- 技能轨迹:带 R 的数据可视化
2.探索、操作和计算数据集
探索性数据分析——了解数据集中的内容——是接收新数据的第一步。r 的“tidyverse”包套件,包括 dplyr 和 tidyr,允许您使用简单易用的语法对数据进行操作和计算,以便快速获得您需要的答案。
如何开始
- 课程:潮流介绍
- 课程:用 dplyr 进行数据操作
- 过程:用 tidyr 整形数据
- 技能轨迹:用 R 进行数据操作
3.用统计学进行数据实验
统计学确保您的数据分析具有科学严谨性。对于任何编程语言来说,r 可能拥有最广泛的一套统计工具。从简单的描述性统计(如计算平均值和标准偏差),到统计模型(如线性回归和逻辑回归),再到实验技术(如 A/B 测试), R 将统计的力量掌握在您的手中。
如何开始
- 课程:R 中的统计学介绍
- 课程:R 中的回归介绍
- 课程:R 中的 A/B 测试介绍
- 技能轨迹:带 R 的统计基础
4.用机器学习预测一切
机器学习是使用数据进行预测的艺术。和统计学一样,R 有大量的工具可以让你运行任何你想要的机器学习模型。掌握机器学习将允许您建立预测模型,如客户流失模型、电影推荐系统等。
如何开始
- 课程:R:分类中的监督学习
- 课程:R:回归中的监督学习
- 课程:R 中的无监督学习
- 课程:用 R 中的 tidymodels 建模
- 职业轨迹:带 R 的机器学习科学家
5.使用 R Markdown 文档自动报告
为了更好地传达您的分析结果,您可以将您的输出组织成一份报告,供其他人阅读。R Markdown 提供了一个全面、简单易用的语法,可以生成各种格式的报告,无论您是在创建书面文档、演示文稿,甚至是在写书。
如何开始
- 课程:带 R 减价的报告
- 过程:与 Tidyverse 中的数据通信
数据工程师是做什么的?
原文:https://web.archive.org/web/20221210085053/https://www.datacamp.com/blog/what-does-data-engineer-do
你可能听说过数据工程是新的数据科学,数据工程领域的巨大发展证明了这一点。公司现在认识到雇用数据工程师来设计、构建和维护他们需要的架构以使数据科学和分析成功的价值。你可以在另一篇文章中读到更多关于数据工程师和数据科学家之间的差异。
然而,您可能也想知道,数据工程师实际上是做什么的?在本文中,我们将分解不同的数据工程师角色和职责,以及数据工程师可能遵循的职业道路。最后,我们将展示您可能在组织中遇到的典型数据工程项目的幕后。如果你正在寻找关于如何成为一名数据工程师的信息,你会发现我们单独的文章很有用。如果你想招聘一名数据工程师,你也可以阅读如何写一份数据工程师的职位描述。
数据工程角色
数据工程涉及各种各样的技能、工具和系统。数据工程师角色有四个核心组,每个组都必须掌握一套技能和工具来有效地完成他们的工作。
- 多面手。涉及数据收集、存储、分析和移动的所有方面。他们必须知道并能够使用广泛的工具和技能。
- 数据存储专家****。负责建立和管理关系型和非关系型数据库(如 SQL、NoSQL 和 PostgreSQL)、数据仓库(如红移和 Panoply)和大数据系统(如 Hadoop 和 Spark)。
*** 编程和流水线专家。通过脚本和数据管道创建和管理数据流。他们必须熟悉一些编程语言,如 Python、Java 和 C++。* 分析专家。与组织中的数据科学家和其他分析专业人员密切合作。他们必须熟悉分析工具(如 Power BI 和 Tableau)、机器学习库(如 Tensorflow 和 PyTorch)以及其他支持分析项目的工具(如 ETL 工具和大数据系统)。**
**## 数据工程师是做什么的?数据工程师职业道路
数据工程师的职业道路会因公司的规模和数据团队的成熟度而异。然而,大多数数据工程师通常会遵循以下途径:
- 初级数据工程师
- 中级数据工程师
- 高级数据工程师
- 高级管理角色
初级数据工程师
在刚刚开始职业生涯时,初级数据工程师通常会承担维护和支持现有系统的小任务。这可以是任何事情,从测试系统,寻找和修复错误,到添加功能到现有的系统。在这些早期阶段,初级员工通常不会承担自己的项目,而是为他们的高级同事提供支持。
作为一名初级数据工程师,最初几年最重要的部分是学习和获得在以后的职业生涯中需要使用的工具的实践经验。他们也在学习不同的团队和部门如何合作,找到解决出现的问题的方法。
中级数据工程师
一个数据工程师可能在 1 到 3 年后被提升到中层。此时,他们可能会接触到更多的项目管理方面的工作,并可能需要与其他团队和部门进行更多的合作。
他们通常负责设计和构建支持数据科学家和其他分析团队成员的系统。在这个阶段,他们可能仍然处于高级数据工程师的监督之下。为了让他们有效地完成这项工作,他们必须培养良好的沟通技巧,并能够与其他团队合作。
数据工程师可以在这个水平上保持 3 到 5 年。在此期间,他们将会发展他们的编程技能,并且应该熟悉组织中使用的所有工具和系统。他们可以识别并修复出现的任何错误或问题,并且在团队内部和团队之间合作良好。
高级数据工程师
一旦数据工程师升到高级职位,他们就会承担更多的管理责任。他们可能需要监督手下的一个或多个数据工程师,在项目出现时向他们教授和分配项目。
在这个阶段,数据工程师精通他们角色的技术方面,能够相对容易地构建系统和解决问题。然而,他们现在更密切地参与业务方面的事情,需要战略性地考虑数据项目的方向以及系统的长期有效性和优化。
这需要数据工程师转变思维方式,这可能很有挑战性。许多数据工程师可能对战略和业务职责没有热情,因此他们可能选择不在公司进一步发展。
高级管理角色
一旦数据工程师获得了大约六年或更长时间的经验,他们可以选择担任更多的管理职位,例如:
- 数据工程经理
- 数据工程主任
- 首席数据官
除了高度精通在较低级别期间获得的技术技能之外,这些角色还要求数据工程师拥有强大的数据基础架构和数据架构技能,并且必须能够管理和扩展分析团队。他们还需要能够定义开发高性能系统的过程,确定新项目的范围,并为新的和现有的系统定义和管理 SLA。
数据工程师是做什么的?典型的数据工程项目
让我们看一下数据工程师的一些角色和职责。假设你在一家大公司工作,该公司通过手机应用程序向客户提供食品配送服务。app 充当餐厅和司机的中间人。顾客在应用程序上下单,餐厅就会收到通知。一旦食物准备好了,就会指派一名司机,将食物送到顾客手中。
可以想象,像这样的应用程序每天会产生大量数据。从餐馆、司机和顾客的数据,到应用程序上的每次互动的日志。还要考虑为任何客户服务投诉、赞美或争议电话收集的数据。或者甚至是应用程序中发生的错误的日志。
如果您公司的数据科学家或数据分析师的任务是识别订单趋势,然后他们可以使用这些趋势来建立机器学习模型。为此,他们会向您提取并准备按天汇总的订单数据。他们还需要能够在首次客户和回头客之间划分数据。
获得清晰度
要解决这个问题,数据工程师必须首先通过以下步骤弄清楚问题:
- 确定粒度,每个订单,每天,每周,每月,每年。根据上述要求,订单数据必须按天汇总,并按客户类型(首次或重复)进行拆分。
- 确定是否应该对数据应用任何过滤器,例如按国家或手机型号。
- 确定数据的时间范围。例如,它是针对所有时间还是仅针对去年?
- 确定该数据的数据源和/或表格。这些数据存储在中央数据仓库中,数据工程师需要访问 orders 表和 customer 表。如果需要额外的过滤器,那么可能需要访问更多的表。
数据析取
现在,数据工程师对问题有了更多的了解,他们可以通过以下步骤继续进行数据提取和探索:
- 确定在 orders 和 customers 表之间应该使用什么连接,以及这些表之间的关系(例如必须使用什么键来连接这些表)。这需要扎实理解 SQL 和数据建模。
- 根据每个客户的订单数量为客户类型创建分类特征。此功能必须包含“首次客户”和“回头客”类别
- 评估数据的质量。确定是否需要纠正缺失或异常数据。
一旦数据工程师准备好了数据科学家或数据分析师需要的数据,他们就需要创建一个 API 端点,可以通过查询来提取数据。根据数据的数量和复杂性,整个项目可能需要几天到几个月的时间。
在整个过程中,数据工程师可能需要使用许多不同的系统,这取决于数据存储的位置以及是否需要对数据进行任何额外的处理。
在这个问题中可能遇到的一些系统的例子是用于数据存储的 SQL Server、Hadoop 或 Redshift,用于查询数据的 SQL,以及用于编写处理数据的脚本的 python。
最后的想法
正如你所看到的,一个典型的数据工程项目包含一些对数据工程至关重要的核心技能,比如构建数据管道。为了加快你的学习并为你在数据工程中的角色做好准备,试试 DataCamp 上的数据工程技能课程。
希望这篇文章能让你对数据工程师的角色和他们实际做的事情有所了解。如果你正在考虑开始数据工程的职业生涯,那么你也应该更加熟悉你可以期待的职业道路。**
数据工程是什么意思?
由于大众的需求,DataCamp 正准备建立一个数据工程赛道。像不断扩展的数据科学领域中的大多数术语一样,围绕“数据工程”的定义有许多模糊之处。一些数据工程师做大量的报告和仪表板。有些人把大部分时间花在数据管道上。其他人从数据科学家那里获取 Python 代码,并对其进行优化,以在 Java 或 c 中运行。
为了开始创建课程,我们需要选择一个“数据工程师”的定义。经过深思熟虑,我们选择套用美国电视节目《法律与秩序》中的话:
在数据科学领域,数据由三种独立但同样重要的职业来表示:
- 数据工程师,他们使用编程语言来确保对数据和数据库的干净、可靠和有效的访问
- 数据分析师,他们使用编程语言、电子表格和商业智能工具来描述和分类当前存在的数据
- 数据科学家,他们使用算法根据现有信息预测未来数据
例如,假设一家公司在其网站上销售许多不同类型的沙发。每当网站的访问者点击一个特定的沙发,就会产生一个新的数据。一个数据工程师将定义如何收集这些数据,什么类型的元数据应该附加到每个点击事件,以及如何以一种易于访问的格式存储数据。一名数据分析师将创建可视化工具,帮助销售和营销部门跟踪每一款沙发的购买者以及公司的盈利情况。一名数据科学家将收集顾客购买每一款沙发的数据,并利用这些数据为网站的每位新访客预测最合适的沙发。
对于许多组织来说,数据工程师是数据团队的第一批雇员。在使用预测方法分析和利用收集的数据之前,需要对其进行组织和清理。数据工程师首先列出存储的数据,称为数据模式。接下来,他们需要选择一个可靠、容易访问的位置,称为数据仓库,用于存储数据。数据仓库系统的例子包括 Amazon Redshift 或 Google Cloud。最后,数据工程师创建 ETL(提取、转换和加载)过程,以确保数据进入数据仓库。
随着组织的发展,数据工程师负责将新的数据源集成到数据生态系统中,并将存储的数据发送到不同的分析工具中。当数据仓库变得非常大时,数据工程师不得不寻找新的方法来使分析具有执行性,例如并行化分析或为快速查询创建更小的子集。
在数据科学领域,这三种职业之间总是存在重叠。数据工程师通常负责简单的数据分析项目,或者负责将数据科学家编写的算法转换为可以并行运行的更健壮的格式。数据分析师和数据科学家需要学习基本的数据工程技能,特别是如果他们在工程资源稀缺的早期创业公司工作。
在 DataCamp,我们很高兴能够推出我们的数据工程课程。我们知道我们想教什么,我们开始招募讲师来设计这些课程。如果你感兴趣,请查看我们的申请和我们目前优先考虑的课程列表。
你用什么练习来教编程?
每个机械师都有她最喜欢的螺丝刀,每个好老师都有不同种类的练习来检查她的学生是否真的在学习,让他们练习新技能,并让他们保持专注。一些类型的锻炼是众所周知的,但是其他的并没有被广泛的使用。DataCamp(我现在的雇主)支持每一种类型,我热衷于寻找新的东西来尝试,以及使用我们已经拥有的东西的新方法。
为了被纳入本文,一个练习必须让学习者快速完成,并且可以自动检查答案。这些要求排除了一些有用的评估,但是我很惊讶还有多少保留下来。
让我们从 DataCamp 用户最熟悉的两种锻炼方式开始。第一个是 选择题 ,提出一个问题,要求学生从列表中选择正确答案。这样做可能(事实上,应该)需要他们做的不仅仅是阅读和记忆,正如前面的帖子所讨论的,当他们的错误答案探究学生的具体误解时,多选题是最有效的。
举例:你在
/home/repl
里。使用带有适当参数的ls
来获取目录/home/repl/seasonal
中的文件列表。下面哪个文件是目录中的而不是?
autumn.csv
fall.csv
spring.csv
winter.csv
第二种练习是编写并运行,在这个练习中,学生必须编写产生指定输出的代码。当代码被提交时,我们检查它的结构和/或输出并给出反馈。编写和运行练习可以根据教师的要求简单或复杂。例如,对于新手来说,简单地让他们调用一个函数或方法就足够了:有经验的指导者经常忘记弄清楚哪个参数去哪里有多难。
示例:矩阵 M 包含从文件中读取的数据。使用一个函数或方法调用,创建一个与 M 形状相同但只包含零的矩阵 Z。
编写并运行练习可以帮助学生练习他们最想学的技能,但是编写好的自动化检查很难:学生可以找到非常有创意的方法来获得正确的答案,给他们一个错误的否定会让他们士气低落。减少这种情况发生频率的一种方法是,在提交代码之前,给他们一个小的测试套件,让他们可以运行他们的代码(在这一点上,可以运行一组更全面的测试)。这样做有助于发现学生完全误解了书面练习规范的情况。
为了帮助学生认识到写好的测试有多难,教师可以让他们自己去做。他们可以被要求编写测试来确定一段代码是否符合某个规范,而不是编写满足某个规范的代码。
示例:函数
monotonic_sum
计算数值单调递增的数字列表中每一部分的总和。例如,给定输入[1, 3, 3, 4, 5, 1]
,输出应该是[4, 3, 9, 1]
。编写并运行单元测试,以确定该函数包含以下哪些错误:
- 认为每个负数都是新的子序列的开始。
- 不包括小计中每个子序列的第一个值。
- 不包括小计中每个子序列的最后一个值。
- 只有当数值减少而不是没有增加时,才重新开始求和。
填空 是对 编写并运行 的细化,其中给学生一些启动代码并要求他们完成。(在实践中,许多编写和运行练习实际上是填空,因为讲师会提供注释来提醒学生应该采取哪些步骤。)新手通常会发现填空比从头开始编写所有代码更容易,而且由于导师已经提供了大部分答案的结构,提交的内容更容易检查。
示例:填写空白,以便下面的代码打印字符串“hat”。
text = 'all that it is' slice = text[____:____] print(slice)
帕森斯问题(Parsons Problem)是另一种避免“恐怖黑屏”问题的练习:学生被给予解决问题所需的代码行,但必须按正确的顺序排列。过去几年的研究表明帕森斯问题是有效的,因为它们让学生专注于控制流程(“我做事情的顺序是什么?”)与词汇分开(“我需要做什么?”).同样的研究表明,给学生比她需要的更多的线,或者让她重新安排一些线并增加一些线,会使这类问题变得更加困难。我们的移动平台直接支持 Parsons 问题,并且可以通过要求学生在编辑器中重新排列代码来模拟它们(尽管有些笨拙)。
示例:重新排列和缩进这些行,以计算列表中正值和负值的总和。
positive = 0 return negative, positive if v > 0 else positive += v negative = 0 for v in values negative += v
追踪执行 是帕森斯问题的逆问题:给定几行代码,学生必须追踪这些行的执行顺序。这是一项基本的调试技能,也是巩固学生对循环、条件以及函数和方法调用的求值顺序的理解的好方法。同样,我们还不直接支持这一点,但可以通过让学生键入线条标签列表来模拟。
示例:这个代码块中带标签的行是按什么顺序执行的?
A) vals = [-1, 0, 1] B) inverse_sum = 0 try: for v in vals: C) inverse_sum += 1/v except: D) pass
跟踪值 类似于跟踪执行,但不是拼出代码执行的顺序,而是要求学生列出程序运行时一个或多个变量取的值。同样,可以通过让学生键入他们的答案来实现,但这很快变得不切实际。实际上,最好的方法是给学生一个表格,表格的列标有变量名,表格的行标有行号。
示例:当此文件:
2017-11-01,Akeratu,9 2017-11-01,Monona,3 2017-11-02,Monona,1 2017-11-03,Monona,1 2017-11-03,Akeratu,7
通过以下 Unix shell 命令运行:
cut -d , -f 2 filename | sort | uniq > result.txt
回到调试技能,另一个帮助学生发展这些技能的练习是 最小修复 。给定几行包含错误的代码,学生必须做出或识别出能产生正确输出的最小变化。做出改变可以通过使用写和运行来完成,而识别它可以通过选择题来完成。
示例:该函数用于测试点
(x, y)
是否严格位于由(x_min, y_min, x_max, y_max)
定义的矩形内。更改一行以使它正确地这样做。def inside(point, rect): if (point.x <= rect.x_min): return false if (point.y <= rect.y_min): return false if (point.x >= rect.y_max): return false if (point.y >= rect.y_max): return false return true
主题和变化练习是相似的,但是学生被要求做一个小的改变,以某种特定的方式改变输出,而不是做出改变来修复错误。这些变更可以包括:
- 用一个函数调用替换另一个函数调用
- 改变一个变量的初始值
- 交换内部和外部循环
- 改变条件链中测试的顺序
- 更改函数调用的嵌套或方法链接的顺序
同样,这也给了学生一个实践有用的现实世界技能的机会:产生一个工作程序的最快方法通常是调整一个已经做了一些有用的事情的程序。
示例:更改下面函数中的内部循环控件,以便它将矩阵的左上角三角形设置为零。
def zeroTriangle(matrix): for c in range(matrix.cols): for r in range(matrix.rows): matrix[r, c] = 0
匹配问题是另一整套练习。一个 一对一的匹配问题 给学生两个长度相等的列表,并要求她将相应的项目配对,例如,“将每段代码与其产生的输出进行匹配”。
示例:将每个函数的名称与其实现的操作匹配起来。
| 上海通用汽车公司 | 三角形带状矩阵向量乘法 |
| STBMV | 求解有多个右边的三角矩阵 |
| STRSM | 矩阵向量乘法 |
多对多匹配问题类似,但是列表的长度不同,所以一些项目可能与其他几个匹配。这两种都需要学生使用高阶思维技能,但多对多更难,因为学生不能先进行简单的匹配,以缩小他们的搜索空间。
我们的平台目前不支持匹配问题;他们可以通过让学生以文本形式提交配对列表(如“A3,B1,C2”)来模拟,但这很笨拙且容易出错。未来的实现可能会重复使用为帕森斯问题设计的机器,让学生拖放文本块以形成匹配。
拖放会打开许多其他的门:例如,跟踪执行很容易通过这种方式实现。 标签图 也是如此:比起学生键入标签,他们拖动标签来贴在正确的元素上更快更可靠。图片可以是复杂的数据结构(“这段代码执行后,哪些变量指向这个结构的哪些部分?”)、程序生成的图(“将这些代码片段中的每一个与它生成的图的一部分匹配”)、代码本身(“将每个术语与该程序元素的一个示例匹配”)或许多其他东西。
示例:标记下图,以显示在执行这三行代码后,变量
x
、y
和z
引用了哪些结构。x = 3 y = [x, x] z = [x, y]
画图表 像数据结构这样的东西在纸上画起来也很简单,但是很难自动评分。使解决方案可分级的一种方法可能是用与帕森斯问题约束代码构造相同的方式来约束绘图,即,给学生图表的各个部分,并要求他们正确地排列它们,但这还有很长的路要走。
我们前面提到匹配问题需要学生使用高阶思维技能。 总结 也是这么做的,给他们一个机会练习一个技能,这个技能在报告bug 而不是修复的时候非常有用。例如,可以问学生,“当 x 从 0 到 10 变化时,哪个句子最能描述 f 的输出如何变化?”然后给出几个选项作为选择题。同样, 排名问题 给学生几个选择,让他们按最快到最慢、最健壮到最脆弱等顺序排列。(排名通过拖放实现时比作为选择题更易于管理。)
另一种可以实现为选择题的练习是 故障映射 :给定一段错误代码和一条错误消息,学生必须识别错误发生在哪一行。在简单的情况下,这将是错误消息中提到的行,但是在更微妙的情况下,学生将不得不向前和向后跟踪执行,以找出哪里首先出错。
DataCamp 的平台还不能直接支持所有这些类型的练习,还有其他一些在线平台很难提供的。 重构练习 是主题和变化练习的补充:给定一段工作代码,学生必须以某种方式修改它,而不改变它的输出。例如,可以要求学生用向量表达式替换循环,简化 while 循环中的条件,等等。这里的挑战是,重构一段代码的方式往往如此之多,以至于分级需要人工干预。
例:写一个和这个循环有同样效果的单条列表理解。
result = [] for v in values: if len(v) > threshold: result.append(v)
代码审查 在一般情况下,很难自动评分,但如果给学生一个标题(即要寻找的错误列表),并要求他们将特定的注释与特定的代码行进行匹配,就可以解决这个问题。例如,可以告诉学生有两个缩进错误和一个错误的变量名,并要求他们指出来;如果她是更高级的,可以给她六种关于代码的评论,而不需要指导她应该找到多少种。与跟踪值一样,当以表格的形式呈现时,这是学生最容易做到的,我们目前不支持。
示例:使用提供的标题,标记下面的每一行代码。
01) def addem(f): 02) x1 = open(f).readlines() 03) x2 = [x for x in x1 if x.strip()] 04) changes = 0 05) for v in x2: 06) print('total', total) 07) tot = tot + int(v) 08) print('total')
- 糟糕的变量名
- 未使用的变量
- 未定义变量的使用
- 缺少值
- 化石密码
毫无疑问,还有许多其他类型的练习,做起来也很快,可以自动升级,但是我们没有听说过。如果你知道什么,我们很乐意听听。
感谢所有为本文提供想法的人,包括弗朗西斯·卡斯特罗、凯蒂·坎宁安、布莱恩·迪林厄姆、马克·古兹戴尔、伊恩·霍克、托比·霍奇斯、科琳·刘易斯、杰拉米娅·奥里、亚历克斯·庞德、丹妮尔·奎因、阿里尔·洛克姆、帕特·施洛斯、马尔维卡·莎兰、理查德·汤姆塞特、斯蒂芬·范德沃特、哈德利·威克姆和安德洛米达·耶尔顿。
什么是数据科学认证?
你可能一直在学习数据科学,从如何开发模型到如何向非技术利益相关者传达见解,不仅仅是为了它的乐趣(尽管,如果你有的话,向你致敬)。你们中的许多人将一直在学习,目标是最终获得一份数据科学工作——一份你一直梦想的高薪、智力投入的工作。要做到这一点,首先,你需要向雇主证明你了解自己的工作——但你该怎么做呢?答案在于获得一个数据科学认证。
数据科学认证是一种认可,它向任何潜在的雇主传达了以下信息:此人的数据科学技能已经过可信方的测试,他们已经确认自己符合一套要求的标准。
DataCamp 的数据科学认证是如何运作的?
为了说明成为认证数据科学家的过程,以下是 DataCamp 数据科学认证的工作方式:
1.定时评估:
我们首先测试您在一系列数据科学主题方面的知识。我们的评估会根据您之前的回答来调整您的技能水平。最后,如果你达到了某个门槛,你就会进入下一阶段。
2.编码挑战:
在这个长格式练习中,你将得到三样东西:一个有特定问题的场景,一个相关的数据集,以及以你认为合适的方式回答它的自由。第三件事是这一评估的关键:测试您使用数据科学实现特定目标的能力,因为您在数据科学职业生涯中需要这样做。为了进入下一步,你需要取得正确的结果。不要担心——虽然这个阶段是独立完成的,但你会知道什么时候已经完成了。此外,这个步骤没有时间限制,并且发生在我们的 IDE 中,所以不需要安装。
3.案例研究:
最后一个阶段分为两部分:技术演示和非技术演示。在此阶段,您需要与我们的一位数据科学家预约案例研究时间。在案例研究开始前 24 小时,我们会向您发送一组数据进行分析,在案例研究期间,您需要展示您的发现。交流数据见解的能力是成为成功的数据科学家的关键。请注意:我们希望这项工作由你来进行,如果有证据表明其他人已经进行了这项工作,这将导致自动失败。
你可以通过 DataCamp 的认证白皮书了解更多关于这些步骤的细节。
通过这些测试的设计,雇主可以确信,通过 DataCamp 认证的数据科学学习者拥有的技能将使他们成为团队中有价值的一员:在数据科学方面知识丰富,能够在压力下工作,与技术和非技术同事交流他们的发现,并采取主动。
报名参加这个数据科学认证项目的前提条件是什么?
没有强制性要求,但是为了确保您准备充分,我们建议您完成以下内容:
- Python 数据科学家职业轨迹
或者
- r 数据科学家职业轨迹
和
- SQL 基础知识
根据 LinkedIn ,准备好获得世界上最受欢迎的工作之一的认证了吗?
您可以点击此处注册通过 DataCamp 获得认证。
了解有关数据科学认证更多信息的其他资源
如果您想了解更多关于获得数据科学认证的信息,我们还制作了许多其他文章,您可能会觉得有用!
DataCamp 的认证白皮书,了解获得认证过程的更多信息。
DataCamp 的专业数据科学家认证计划,了解我们推出认证的原因。
如何获得数据科学认证?,了解获得数据科学认证的所有选项的完整指南。
DataCamp 的认证如何帮助学员找到他们梦想中的工作这是一个关于两位专业人士的案例研究,他们在通过 data camp 认证后能够找到工作。
五大在线数据科学认证我们最喜欢的五大在线数据科学认证。
通过 DataCamp 成为认证数据科学家后要做什么,获取认证后要做什么的指南。
Tableau:从学生到认证和 Tableau 桌面专家认证:了解如何使用 Tableau 并通过考试了解如何在 BI 工具中获得认证。
什么是分析工程师?你需要知道的一切
数据科学在不断发展,任何现代数据团队中的职称和角色也是如此。在数据科学的早期,许多职位都包含“大数据”一词。
在过去的两年里,随着机器学习变得越来越可操作化,MLOps 开始出现在不同的职位名称中。如今,随着组织在数据素养和分析成熟度方面的发展,我们看到了分析工程角色的崛起。
简而言之,分析工程师充当工程和分析师职能之间的桥梁。他们的角色是应用工程最佳实践来提供干净的、经过转换的数据集,以便进行分析。
本文旨在揭开分析工程师是什么和他们做什么的神秘面纱,以及将该角色与其他常见的数据角色进行比较,并提供进入分析工程的资源。
什么是分析工程师?
Dataform 使用一个熟悉的例子——橱柜,为分析工程师如何融入更广泛的数据团队提供了一个奇妙的类比。当我们考虑为什么分析工程师在增加时,请记住这个类比。
在分析工程兴起之前,数据分析师会使用可视化工具,如 Tableau 或 Power BI 来为利益相关者提供见解。这些工具是呈现数据的绝佳方式,但不是转换和存储数据的最佳方式。
想象一个场景,一个数据工程师部署了一个加载营销数据的数据管道,但是数据质量有所欠缺。只有营销团队中的数据分析师拥有转换和提高数据质量的领域知识。但是,他们不会使用与数据工程师相同的技术堆栈。
同时,数据工程师没有领域知识来快速理解需要什么样的转换,并且很可能被来自整个企业的更高优先级的任务淹没。因此,分析师可能必须通过在关系数据库中构建自己的临时表来转换 Tableau 或 Power BI 中的数据。这导致效率低下,洞察速度变慢。
进入分析工程师。分析工程师位于数据分析师和数据工程师之间。在上面的场景中,他们将拥有优化数据转换的技术技能,以及领域知识。
通过与数据分析师密切合作,分析工程师可以使用适当的工具和技术转换数据,从而为数据分析师提供干净的数据。
分析工程师与其他数据角色有何不同?
不同角色之间的界限很模糊,那么分析工程师与其他数据角色有什么不同,他们是否能一起工作?
分析工程师 vs 数据分析师
数据分析师负责分析数据并报告他们的分析见解。他们对数据分析工作流有着深刻的理解,并通过结合使用编码和非编码工具来报告他们的见解。数据分析师通常非常擅长于 SQL 和商业智能工具,如 T2 的 Power BI 或 Tableau,但很少使用 T4 的 Python。
分析工程师与数据分析师合作,优化可供使用的数据模型。他们还负责维护围绕数据的文档,这使数据分析师能够更快地找到见解。
分析工程师与数据工程师
数据工程师负责将正确的数据送到正确的人手中。他们创建并维护基础设施和数据管道,这些管道将来自不同来源的万亿字节的原始数据放入一个集中的位置,为组织提供干净、相关的数据。
不可否认,这个定义与分析工程角色有很大程度的重叠。然而,通过再次引用橱柜示例,数据工程师负责确保分析工程师拥有正确的数据源来组织和建模供数据团队的数据分析师使用。
此外,数据工程师负责设置来自专有来源的定制 API 和 ETL 管道——而数据工程师将更多时间用于改进来自 Google Analytics 等供应商 API 的管道。
分析工程师 vs 数据科学家
数据科学家调查、提取并报告对组织数据的有意义的见解。他们将这些见解传达给非技术利益相关者,并对机器学习工作流以及如何将它们与业务应用联系起来有很好的理解。他们几乎专门使用 SQL、Python 和 R 等编码工具,进行分析,并经常使用大数据工具。
数据科学家和分析工程师之间的关系类似于数据分析师和分析工程师之间的关系。分析工程师使数据科学家能够更多地关注洞察力,而不是清理和优化数据集。
分析工程师 vs 机器学习工程师
机器学习工程师设计和部署机器学习系统,这些系统根据组织的数据进行预测。他们解决诸如预测客户流失和终身价值等问题,并负责部署模型供组织使用。他们专门使用基于编码的工具,并且比他们的同行更加关注技术。
分析工程师更加关注支持数据分析师和数据科学家,他们负责向业务利益相关方提供见解。
分析工程师职位比较
| 数据分析师 | 数据工程师 | 数据科学家 | 机器学习工程师 | 分析工程师 |
| 分析数据并向利益相关者报告见解
构建供更广泛的组织使用的仪表板
利用主题专业知识和领域知识进行推荐 | 使用供应商和专有 API 构建和维护 ETL 数据管道
优化并集中数据湖或数据仓库中的数据
将数据传送到机器学习管道
在云端处理数据 | 分析数据并向利益相关者报告见解
设计实验,如 A/B 测试
部署由更广泛的组织使用的仪表板
开发监督和非监督学习工作流程
分析非标准数据类型,如时间序列、文本、地理空间或图像数据 | 训练和部署机器学习模型
监控和改进机器学习模型在生产中的性能
将软件工程最佳实践应用于机器学习工作流程(CI/CD) | 优化数据工程师构建的消费管道
将工程最佳实践应用于数据分析师和科学家使用的数据模型
开发、标准化和改进数据文档
|
| r 或 Python
SQL,Power BI,Tableau | r 或 Python
结构化查询语言
Git、Shell 和命令行工具
气流或火花等大数据工具
基于云的工具,如 AWS、Azure、GCP 或雪花 | r 或 Python
结构化查询语言
Git、Shell 和命令行工具
气流或火花等大数据工具 | r 或 Python
结构化查询语言
Git、Shell 和命令行工具
气流或火花等大数据工具 | r 或 Python
结构化查询语言
Git、Shell 和命令行工具
基于云的工具,如 AWS、Azure、GCP、雪花或 dbt
|
分析工程师工资
分析工程师的角色是新生的,这意味着市场上很少有人具备成功完成这一角色所需的工程和分析技能。从薪酬的角度来看,这使得分析工程师的角色极具吸引力。以下是在美国,分析工程职位的薪资范围。
- Glassdoor :根据 Glassdoor 的数据,分析工程师的平均年薪为 91080 美元。此外,根据工作地点和公司的不同,年薪最高可达 208,000 美元。
- 可比:根据可比的数据,分析工程师的平均年薪为 100,305 美元。此外,根据工作地点和公司的不同,年薪最高可达 185,000 美元。
虽然上述数字代表了整个范围内分析工程职位的大致范围,但也值得注意的是,像网飞这样高度成熟的数据公司支付的数据职位薪酬处于个人薪酬市场的高端。比如按级。仅供参考,网飞分析公司的工程师年薪高达 37.5 万美元。
如何成为一名分析工程师?
随着数据角色变得专业化,提升技能的途径也变得越来越狭窄。与上面讨论的许多数据角色不同,分析工程师需要广泛的技能,这要求他们学习如下工具和概念
结构化查询语言
可以说,SQL 是任何数据角色的所有分析中使用最广泛的工具之一。幸运的是,它也是最容易学习和掌握的语言之一。查看这篇文章,了解如何学习 SQL ,以及这里的其他学习资源。
- 职业轨迹:SQL 中的数据分析师
- 技能轨迹: SQL 基础
计算机编程语言
Python 实际上是目前最流行的编程语言。无论是进入分析工程角色,还是上面提到的任何数据角色,Python 肯定都是有用的。在这里找到学习 Python 所需的所有资源并开始学习以下课程。
- 职业轨迹: Python 程序员
- 职业轨迹: 用 Python 做数据分析师
ETL 工具
ETL 代表“提取、转换和加载”。这些工具允许工程师建立数据管道,从不同来源提取数据,将其转换为可消费的数据,并将其加载到数据库中。最流行的开源 ETL 工具之一是 Airflow。检查在过程中的气流。
云计算工具
虽然术语“云计算工具”绝对是一个总括术语,但分析工程师和其他数据角色都定期利用云计算服务,如 AWS、Azure、Google Cloud 或雪花。这些工具允许数据团队在云中存储、处理和部署数据和数据解决方案。最流行的云计算工具是 AWS。你可以通过查看下面列出的 DataCamp 的 AWS 课程来了解更多关于 AWS 的知识。
- 课程: AWS 云概念
- 课程:Python 中的 AWS Boto 介绍
版本控制
版本控制可以说是软件工程最佳实践的支柱。简而言之,它允许实践者跟踪他们什么时候做了什么,撤销他们不想要的任何改变,并与他人大规模合作。
像 Git 这样的命令行工具允许您应用版本控制最佳实践。通过查看这个备忘单了解更多关于 Git 的信息!
通讯技能
虽然每个数据角色都需要某种程度的沟通技能,但分析工程需要与数据分析师角色相同水平的沟通技能,以及数据工程师的技术才能。成为更好的沟通者是一种技能,而不是天赋。查看数据通信概念以提高您的技术通信技能。
成为一名分析工程师
分析工程,就像 MLOps 一样,是非常新生的。要保持领先,请查看下面的参考资料。
什么是商业分析?你需要知道的一切
原文:https://web.archive.org/web/20221210085053/https://www.datacamp.com/blog/what-is-business-analytics
一家公司可以进行的最有价值的投资之一是发展其分析能力。商业分析提供了许多好处,其重要性不言而喻。
在这篇文章中,我们解释了什么是商业分析,为什么它很重要,商业分析的不同方面,以及最常用的工具。在文章的最后,我们给出了如何在组织中使用业务分析的例子。
如果你是一名企业领导人,并且对如何在公司中利用数据和业务分析感兴趣,DataCamp 有一个优秀技能课程,将带你了解实现这一目标所需的一切。
什么是商业分析?
商业分析的主要目的是提供信息、推动决策和解决问题。这是通过定量数据分析、可视化和预测建模实现的。自然,这需要许多不同的技能和技术,并且公司与公司之间可能有很大的不同。
在高层次上,业务分析可以被认为是公司中所有分析和基于数据的角色的总称。这可以从商业智能到数据分析,甚至包括数据科学。这些角色都以某种方式促进了决策的制定,但是使用了不同的技能和技术。
最终,如果一家公司使用数据来做出决策和解决问题,那么他们就是在进行商业分析。
商业智能与商业分析
商业智能可以被认为是商业分析的一个子领域。商业分析包含数据分析、可视化和预测建模等更广泛的方面,而商业智能主要关注构建报告和仪表板,以讲述故事或描述业务的当前或过去状态。
区分商业分析和商业智能问题是至关重要的,以便您使用正确的工具和技术或雇佣正确的人员来实现最佳解决方案。商业智能通常涉及专门的数据可视化软件,如 Power BI、Tableau、Sisense 或 Qlik。
DataCamp 有一些强烈推荐的课程,可以帮助你快速掌握如何在两种最流行的商业智能工具中进行数据分析: Power BI 和 Tableau 。
选择商业智能,如果:
- 您希望直观地呈现您的企业当前和过去的统计数据。
- 你想讲述一个关于数据趋势的故事。
- 您希望上面包含不断更新的数据。
另一方面,选择业务分析,如果:
- 您希望通过高级统计技术更深入地了解您的数据。
- 你需要预测未来的事件。
- 您的数据是非结构化的,需要高级数据挖掘或处理。
- 您希望通过分析实现决策的完全自动化。
商业分析的重要性
业务分析可能看起来势不可挡,涉及的内容如此之多,以至于您可能不确定它如何能让您的组织受益。
以下是业务分析的四个主要优势:
- 通过利用客户偏好、趋势、产品销售、营销效果等方面的数据,改进决策制定。
- 最小化风险和不确定性 -趋势和预测可以帮助企业更好地应对不确定性,而定量分析和预测模型可以通过预测未来事件来帮助降低风险。
- 促进创新产品开发 -商业分析为构建高度优化和高效的产品以及直接解决消费者需求提供了机会。
- 提高运营效率,包括改进招聘实践、减少员工流失和提高工作场所生产率。
商业分析的类型
托马斯·达文波特在他的著作《竞争分析》中描述了四种商业分析。这些通常根据业务目标和可用的技术基础设施逐步分阶段实施。随着企业分析能力的提高,他们也获得了更大的竞争优势。
来源:在分析上竞争
- 描述性分析:主要用于商业智能应用。目标是描述发生了什么以及需要采取什么措施。
- 预测分析:使用先进的统计技术、预测模型和预测来回答“未来会发生什么?”
- 说明性分析:扩展之前的分析类型,推荐接下来要采取的最佳行动,以实现最佳结果。
- 自主分析:使用先进的机器学习和人工智能从数据中学习,并自动应用产生最佳结果的行动。
商业分析工具
由于业务分析通常用于解决各种各样的数据业务问题,因此同样有许多不同的工具和技术可以实现这一点。然而,这不是选择单一工具来解决所有问题的情况,因为不存在单一工具。相反,了解可以根据您的业务所处的分析阶段综合使用的不同工具是有好处的。
如今有如此多的工具、技术和软件可供使用,以至于很难为某个特定的问题选择合适的工具、技术和软件。然而,三组核心工具可用于解决大多数业务问题,并提供了一个很好的起点:
- 像 Excel 这样的电子表格软件,可以快速洞察数据并与其他团队成员快速共享。
- 编程语言,如 R 或 Python ,用于数据挖掘、分析、预测建模和预测。
- 【Power BI 或 Tableau 等数据可视化工具显示历史和当前数据趋势和统计数据。
商业分析示例
几乎每个行业和业务部门的公司都使用业务分析。商业分析有巨大的机会来彻底改变公司的日常运营方式。在本节中,我们将介绍企业利用业务分析的四种方式:
- 营销
- 销售
- 客户分析
- 操作
请记住,每家公司都是不同的,基于每个公司的行业和独特的用例,业务分析的应用略有不同。然而,在大多数情况下,核心杠杆点保持相似。
营销
任何营销活动最重要的一个方面就是知道什么有效,什么无效。使用商业分析,公司可以了解他们的广告活动有多有效以及为什么有效。
在营销部门使用商业分析最常见的方法之一是运行大量实验,并将它们的有效性与 A/B 测试和统计分析进行比较。公司不仅知道哪些广告和活动效果好,而且这些实验也告诉他们为什么。
公司还可以使用商业分析来开展广告活动,根据人口统计、位置和以前的购买行为等数据锁定正确的客户。在这种情况下,预测分析可以成为一个强大的工具,用来预测某人对广告做出积极回应的可能性。
通过我们的在线课程企业营销分析,您可以了解营销分析师如何利用数据来了解客户并推动增长。
销售
销售团队有两个核心目标:向新客户销售和留住现有客户。业务分析可以通过许多不同的方式帮助实现这两个目标。
通过了解客户最初离开的原因,可以留住客户——是客户体验、服务交付、定价、功能可用性等等?
销售和营销团队可以根据从分析历史销售趋势中发现的洞察力紧密合作。例如,如果发现一年中特定时间的销售量有季节性趋势,那么可以在这些日期前后有针对性地开展营销活动,以进一步提高销售额。
客户分析
客户分析对电子商务和实体店最有利。它包括分析客户行为和趋势,以及这些行为和趋势如何受到定价、品牌、产品放置等因素的影响。
例如,使用统计技术和价格弹性等概念,公司可以确定其产品的最优价格以及促销和折扣的有效性。
您可以使用 Python 等技术来获得这种见解,并且可以在我们的客户分析和 Python 中的 A/B 测试课程中深入探讨这一主题。
操作
业务分析可以以许多不同的方式应用于运营。
在人力资源部门,这可以集中在更好的资源规划,改善招聘实践,并保留组织内的人才。您可以通过我们的在线课程了解更多关于人力资源分析的信息。
在运营团队中,重点可以放在生产率、效率以及协助经理进行绩效评估上。
对于系统、基础设施和 IT,重点可以放在减少停机时间、更好的维护时间和频率,以及确保系统始终平稳运行。
结论
商业分析现已成为任何公司的核心支柱。如果没有一些分析能力,发展和扩大业务就不再可行。如果你是一名企业领导人,了解如何做出数据驱动的决策并利用数据解决问题至关重要。让您的业务和技能更上一层楼,并在真正利用业务分析时获得收益。
你还可以通过我们的其他资源找到更多关于商业分析师薪水和如何成为商业分析师的信息。
什么是数据工程?
原文:https://web.archive.org/web/20230101103026/https://www.datacamp.com/blog/what-is-data-engineering
介绍
数据无处不在。近年来,随着连接设备数量的增加及其使用范围的扩大,世界已经产生了大量传统方法无法处理的数据。
根据 Statista 的数据,截至 2021 年,有238 亿台设备连接到互联网,其中 58%是物联网设备(智能家居设备、联网自动驾驶汽车、工业设备等)。)而剩下的 42%是非物联网设备(笔记本电脑、智能手机等。).这意味着现在数据可以来自不同的来源。其中一些是:
- 用户活动:任何用户行为都会产生数据,甚至反映我们在哪里使用移动应用程序以及使用频率的数据都是有价值的。包含此类信息的每一份数据都需要保存并分发到应用程序的数据中心。
- “物联网”设备:这些设备会产生海量的信息,比如在很多不同的地点产生的传感器数据。所有这些数据都需要被检索并发送到一个数据池进行进一步分析。
- 程序日志:当今的计算机应用程序由许多组件组成,所有这些组件都产生程序日志。这些日志被发送到数据工程管道进行进一步分析。
世界上产生的所有不同的结构化数据都需要交付给软件结构中的其他组件,或者由业务分析师和数据科学家进行可视化和解释。然而,这种交付并不是一项简单的任务。关于如何交付数据,有一些关键要求:
- 数据需要以标准化的结构交付
- 数据不应出现任何冲突
- 可能需要消除数据重复
- 数据需要是可靠的
- 数据传送必须以最小的延迟完成
因此,这种信息的传递是一个复杂的过程,如果执行不当,可能会产生很大的问题,尤其是对于大中型公司而言。这就是数据工程师发挥作用的地方。
在本文中,您将学习数据工程的基础知识,包括:
- 什么是数据工程,为什么要确保稳健的数据管道
- 数据科学与数据工程的区别
- 数据工程日益流行背后的原因
- 优秀数据工程师的技能
- DataCamp 如何帮助你成为数据工程师
数据工程师的职责是什么?
简而言之,数据工程师:
- 旨在让数据科学家和商业智能工程师(或任何与数据打交道的人)能够轻松访问和使用数据
- 优化公司的大数据系统架构
- 设计和配置数据库
- 与商业智能工程师、数据科学家和数据分析师团队协作
- 为了执行所有这些任务,数据工程师首先需要建立 ETL 管道。
ETL 管道
ETL 管道以固定的时间间隔接收复杂的数据,并对其进行处理,目的是以可用的形式存储数据。建立和维护这些管道是数据工程师的责任。
有 3 种类型的 ETL 管道:
- 由数据源创建的大量数据以不同的格式收集。
- 转换由于数据以不同的格式出现,并且由于其来源不一致,数据被处理以变得尽可能标准化。这为后续步骤增加了数据的可发现性和可用性。
- Load 一旦数据处于可发现和可用的格式,它通常会存储在数据仓库中。这使得数据随时可用于进一步分析。
数据仓库
数据仓库是存储标准化数据的地方。它们针对过滤和读取大量数据进行了优化。在现代数据仓库中,结构化和非结构化数据都可以存储,因为存储无法分类的数据(如照片和视频)也很重要。
数据工程 vs 数据科学
数据工程师和数据科学家之间的角色差异非常重要。一方面,数据科学家在公司中有着重要的作用,因为他们有助于数据驱动的决策。然而,数据科学家的成功取决于他们拥有的数据。
另一方面,数据工程师是设计系统的人,这些系统以有组织和一致的方式向数据科学家提供数据。一旦数据工程师为他们提供了可用的信息,数据科学家就试图使用数据工程师提供的格式在数据中找到模式以得出结论。
数据工程师和数据科学家显然密切合作。我们可以认为这是一场足球比赛。在足球中,是教练制定了创造进球机会的策略,是教练把球员安排在特定的位置上。在这种情况下,教练是数据工程师,所以我们可以认为球是数据,得分的球员是数据科学家。团队的其余部分是基础设施。
为什么数据工程越来越受欢迎?
根据在 Burning Glass Nova 平台上进行的研究,2019 年“数据工程师”的职位招聘增加了 88.3%。根据这项研究,自 2016 年以来,对数据工程师的需求一直在上升。另一个有趣的信息是,数据工程师的职位空缺数量几乎是数据科学家的 5 倍。数据工程师的工资也比数据科学家的工资高 20-30%。
如上所述,数据科学家是数据处理链中的最后一环。他们需要由数据工程师处理数据,以便完成工作。随着数据源和数据类型的增加,对数据工程师的需求也在增加。出于这个原因,企业最近开始加大对数据提取和分发的投资。
在图 4.1 中,金字塔图显示了数据科学需求的层次结构。在这个层级中,分配给数据工程师的任务位于金字塔的底部,这解释了数据工程师对公司的重要性。
Figure 4.1: The data science hierarchy of needs.
一个数据工程师需要具备哪些技能?
数据工程师的技能通常与软件工程师和数据科学家的技能交织在一起,如图 5.1 所示。
Figure 5.1: Data roles and skill sets
数据工程师的角色更接近软件工程师还是数据科学家?
一组数据工程师以前的职业如图 5.2 所示。根据这个数字,他们中超过 40%的人有软件工程背景。这不仅意味着数据工程和软件工程比我们最初想象的要紧密得多,而且意味着现在的软件工程师比其他任何领域都更有可能转向数据工程。
Figure 5.2: Data engineers by prior role (top 10).
在 DataCamp,我们认为以下是优秀数据工程师的技能:
- 软件工程背景数据工程师需要有软件工程背景,因为他们需要用面向对象编程、数据结构和算法的知识来应对数据工程的挑战。数据工程师必须精通 Python、Scala 或 Java。
- 工具数据工程师需要熟悉像 Airflow、Apache 或 Kafka 这样的数据工程工具。
- 数据库技术一名数据工程师应该了解多种数据库。
- 云技术数据工程师应该习惯使用多种云平台,如亚马逊网络服务、谷歌云平台和微软 Azure。他们还需要具备云架构和 DevOps 工具方面的经验,因为他们负责系统数据流部分的自动化。
如何学习数据工程
想要在数据工程领域有的提升,可以从完成以下推荐的 DataCamp 课程开始。通过完成这些课程,你将有可能成为数据工程领域更适合实习或工作岗位的候选人。
- Python 简介
- 中级 Python
- SQL 关系数据库简介
- Scala 简介
- 数据工程介绍
- Python 中的气流介绍
- AWS 云概念
- 用 Python 构建数据工程管道
- NoSQL 概念
- Python 中的 ETL
- 流概念
- 通过 AWS Kinesis 和 Lambda 传输数据
什么是数据科学?从头开始理解数据科学
目录
随着近年来快速的技术进步和巨大的数字化努力,数据科学是一个广受欢迎的领域。
很有可能,你已经在日常生活中享受到了数据科学的好处。电子商务平台上的个性化推荐、GPS 导航应用程序上的优化路线以及移动设备上的文本自动更正只是数据科学在发挥作用的一些常见例子。
除了这些著名的使用案例,数据科学在各行各业业务运营的几乎所有方面都发挥着至关重要的作用。
什么是数据科学?
数据科学是一个多学科领域,它结合了科学原理、分析工具和统计算法,以从数据中获得有意义的见解和隐藏的模式。
它涉及广泛的专业知识,如数学、统计学、编程、可视化、It 基础设施和数据工程。
尽管对最先进的机器学习模型大肆宣传,但数据科学的基本目标是使用数据创造尽可能多的商业影响,而不管所涉及的工具或模型有多复杂。
数据科学通过提供企业可以用来做出更好决策和构建创新服务和产品的见解来产生影响。业务影响可以表现为发现新的业务机会、提高客户满意度、提高运营效率或促进销售和营销工作。
行业中有哪些数据科学的例子?
数据科学的美妙之处在于它不受行业限制的特性,以及它在为任何组织提供商业价值方面的巨大潜力。以下是一些在主要行业中成功的数据科学项目的真实例子。
| 行业 | 例句 |
| 卫生保健 | 由 IBM 开发的机器学习算法可以在常驻放射科医生的性能水平上准确解读胸部 x 光片 |
| 保险 | AXA 开发了一个预测模型来复制定价决策,简化了客户的承保流程,使承保人能够专注于更复杂的风险 |
| 金融服务 | 美国银行开发了一款金融助手聊天机器人,使客户能够高效地执行搜索交易和访问余额信息等任务 |
| 运动 | 英超联赛球队正在利用数据和技术分析,如光学跟踪,来提高场上表现 |
| 营销 | Nike 通过识别正确的目标客户,使用预测分析来提高客户获取和保留率 |
| 教育 | 卡内基学习中心开发了一个基于人工智能的数字平台,为学生提供个性化和自适应的数学学习路径 |
| 生物 | 阿斯利康利用复杂的药物发现计算模型来减少发现潜在候选药物所需的时间 |
| 房地产 | Zillow 建立了一个自动估价模型,利用数据对房产的市场价值进行精确的评估 |
| 网络安全 | 西门子使用机器学习来检测和应对网络威胁,以保护客户免受恶意软件、知识产权盗窃和其他形式的网络犯罪的侵害 |
| 供应链和零售 | UPS 将机器学习模型融入其庞大的递送网络,从而优化路线以节省里程和金钱 |
| 农业 | 拜耳利用机器学习,通过从遥感器和无人机等技术收集的数据中获得及时的见解,帮助农民获得更好的收成 |
| 制造业 | Micron 开发了 AI-Auto 缺陷分类系统,可大规模高效分类和识别晶圆缺陷。 |
| 政府 | 美国国防部利用数据科学和分析建立战场优势,增强高层领导决策支持 |
| 咨询服务 | 麦肯锡利用其内部数据科学和分析能力,通过各种灵活的支持模式为客户提供洞察力和影响力 |
谁是数据科学家?
数据科学家是数据从业者,他们调查、提取和报告组织数据中有意义的见解。他们将这些见解传达给非技术利益相关者,并对机器学习工作流以及如何将它们与业务应用联系起来有很好的理解。
通过查看数据科学家的基本要素,我们可以更好地了解数据科学家的概况。
来源:绘制康威数据科学维恩图
上面的维恩图展示了数据科学家的解剖结构。
数据科学家既是计算机科学家,又是数学家,还是业务领域专家。有了这些交叉的编程技能、数学知识和业务专业知识,数据科学家可以有效地跨越业务和技术领域,产生巨大的影响。
除了技术专业知识和行业知识之外,数据科学家还需要有好奇心和以结果为导向的态度,同时具备出色的沟通技巧,以便向技术和非技术受众展示研究结果。
数据科学家是做什么的?
数据科学家必须首先深入了解业务问题,以确定所需的数据和技术。这是通过与企业中的业务和 IT 团队不断沟通和协作来实现的。
他们负责通过开发从不同来源捕获、收集和清理数据的策略,为稳健的分析奠定坚实的数据基础。然后,数据科学家在为业务问题设计、规划和构建解决方案之前,组织和探索数据。
数据科学家还需要通过有效使用可视化、仪表板或报告,将他们的发现传达给不同的业务利益相关者。
请记住,数据科学家并不是单独工作的。只有采用基于团队的方法,与数据工程师、分析师、IT 架构师、应用程序开发人员和业务利益相关方密切合作,才能创建完善的整体解决方案,数据科学项目才能取得成功。
数据科学中有哪些不同的角色?
考虑到企业有多种不同的职能,并且数据具有扩展性和通用性,在数据科学领域存在不同类型的数据相关角色就不足为奇了。虽然数据科学家地位突出,但数据团队还有其他重要成员,他们在数据科学项目中扮演着同样重要的角色。
-
业务分析师:负责将数据洞察与推动业务盈利和效率的可操作结果联系起来。这是通过深入的业务领域知识和与业务干系人的不断沟通来实现的
-
数据分析师:与业务分析师类似,数据分析师执行技术分析,从数据中生成可操作的见解,并以定期报告和可视化的形式将这些发现和趋势呈现给业务利益相关方。
-
数据工程师:开发、部署、管理和优化数据管道和基础设施,以便提取、转换和加载原始数据,为下游分析和建模做好准备。
-
机器学习科学家:构建机器学习模型并将其部署到大规模生产中,并监控系统的性能和功能,重点关注支持这些模型的软件工程方面。
-
统计师:在设计、维护和分析实验(如 A/B 测试)中应用统计方法和模型,满足高度的统计严谨性
-
数据消费者和领导者:利用数据洞察和分析来推动业务的数据驱动型决策。他们是非技术利益相关者,对分析的基础有很好的理解,并且能够利用数据洞察力来支持决策。
数据科学家和数据分析师有什么区别?
从高层次来看,数据科学家和数据分析师这两个角色是相似的,因为他们都利用数据来解决业务问题。因此,要执行的任务存在重叠,例如数据查询和清理。
这两个角色之间的区别在于他们关注的问题类型的具体细节,以及他们用来获得解决方案的工具和技术。
数据分析师专注于商业智能,将数据转化为可操作的见解,以支持组织的战略决策。
数据分析师生成这些发现,并在例行报告和仪表板中呈现,以便利益相关者可以通过关键绩效指标了解业务的最新状态。他们专注于从描述业务趋势的后见之明中发现真知灼见,关注过去和现在。
数据科学家通过使用高级统计技术作为预测未来结果的前瞻性方法的一部分,超越了描述性分析。这些预测随后被用于推动明智的业务决策,作为预测性和规范性分析的一部分。
数据科学家设计并运行不同的实验来识别特定业务问题的最佳模型。他们还建立机器学习管道和数据产品,所有这些都着眼于现在和未来。
什么是数据科学生命周期?
数据科学生命周期是一系列迭代步骤,概括了成功的数据科学项目的组成部分。
数据科学项目可能涉及复杂的问题,如杂乱的数据、多利益相关方的参与以及复杂的业务问题。因此,数据科学生命周期是一个实用的框架,可以帮助团队有效地构建项目。
因为每个项目和团队都是独特的,所以数据科学生命周期有不同的版本。尽管如此,它们通常都倾向于共享相似的过程。为了说明这些生命周期是如何工作的,我们将探索团队数据科学过程(TDSP),这是一个由微软开发和使用的流行的现代数据科学生命周期。
TDSP 生命周期包括五个迭代执行的阶段:
-
业务理解:定义并理解具体的业务目标、项目目标和成功度量,同时确定与这些目标相关的数据源
-
数据获取和理解:将数据接收到分析环境中,探索数据以确定数据质量和充分性,并建立数据管道以接收新数据或定期刷新数据
-
建模:对原始数据进行特征工程,进行模型训练,根据成功度量
识别出最准确回答业务问题的机器学习模型
-
部署:将机器学习模型和数据管道运行到生产环境中,供应用程序使用和利用模型预测
-
客户验收:确认部署的模型和管道满足业务及其客户的需求,并将项目移交给负责运营的实体
数据科学中使用的工具有哪些?
正如前面在数据科学生命周期中看到的,数据科学项目中需要完成许多任务。因此,数据科学家必须使用一系列工具(商业或开源)来帮助他们实现这些目标。
编程语言
虽然许多开源编程语言被用于数据科学,但是 Python 和 R 是最受欢迎的两种。r 是专门为统计分析和数据挖掘而构建的,而 Python 是一种适合数据相关操作的通用语言。
Python 和 R 都能够编写数据处理任务的脚本,运行复杂的统计模型,并生成引人注目的数据可视化。Python 和 R 之间的选择取决于用例,因为两者各有所长。
如果关注的是统计建模或数据的高级可视化,r 是一个很好的选择。另一方面,如果项目需要通用编程任务或与其他应用程序集成,Python 更适合。
数据科学家也使用集成开发环境(ide)来用这些语言构建项目。Python 的常见 ide 包括 PyCharm、Spyder 和 Jupyter Notebook,而 RStudio 是最成熟的 r。
在大数据领域, Scala 是一种流行的开源编程语言,用于大规模数据应用和数据工程基础设施。
就商业数据科学工具和语言而言,SAS 和 SPSS 是市场上历史悠久的领先遗留产品。
数据库和分析引擎
现代数据科学家被期望与大型数据库进行交互,并且有几种工具被设计用于这些任务。
结构化查询语言(SQL) 是一种允许数据科学家在大量数据中搜索并提取信息进行分析的查询语言。它非常适合处理关系数据库中的结构化数据,被认为是数据行业的通用语言。
至于非关系数据, NoSQL 数据库,如 MongoDB 和 Cassandra 是业内普遍使用的选项。
大数据工具
随着企业收集的数据量不断增加,数据团队能够高效地组织、处理和存储大数据变得非常重要。
Apache Spark 是一个流行的大规模处理分析引擎,允许用户高效地对大数据集执行转换。它还支持与 Python 等语言的集成。
在处理错综复杂的大数据管道方面, Airflow 是一个开源的工作流管理工具,允许团队调度数据管道,以确保一致可靠的数据工作流。
机器学习和深度学习框架
机器学习和深度学习技术的实施允许数据科学家为企业创建高级解决方案。
Python 的 scikit-learn 和 R 的 caret 是流行的库,让数据科学家可以轻松运行各种标准的机器学习技术,如分类和回归。
在深度学习方面,基于 Python 的 Tensorflow 和 PyTorch 是简化复杂神经网络构建和训练的领先框架。
数据可视化
数据洞察需要有效地传达给利益相关者,以便他们做出明智的业务决策。
数据科学家使用数据可视化平台,如 Tableau 和 PowerBI 来生成高影响力的数据可视化和故事,以推动可扩展的数据驱动型决策。
除了这些商业选项,Python 中的开源包(例如 matplotlib 、 Dash )和 R(例如 ggplot2 、 shiny )是构建引人注目的可视化和仪表盘的强大工具。
云平台
随着越来越多的公司将他们的数据转移到云中,数据科学家开始熟悉这些云工具和服务的使用。在市场上为数不多的云提供商中,最受欢迎的三家是亚马逊网络服务,谷歌云平台和微软 Azure。
数据科学职业有什么好处?
就业市场对数据科学人才的需求持续高涨,加上丰厚的薪水。2021 年 Burtch Works 调查显示,尽管新冠肺炎疫情,数据科学家的工资和工作机会继续快速增长。
根据 Glassdoor 的数据,根据薪水、工作满意度和职位空缺数量,数据科学家职位被认为是 2021 年美国第二好的工作。数据科学家的年薪中值约为 114,000 美元,远高于平均中值收入 51,000 美元。
除了令人印象深刻的财务收益之外,数据科学职业生涯还让你能够应对和解决不同行业的有趣挑战。由于数据科学技能具有高度的可转移性,并且在所有行业都很受欢迎,因此数据科学家有着千载难逢的机会跳槽到各种组织,获得丰富的新职业经验。
数据科学如何入门?
近年来,在线学习资源的激增意味着学习数据科学技能从未像现在这样容易。例如,Coursera、Udemy 和 DataCamp 等领先平台上的大规模开放在线课程提供了学习新数据技能的负担得起的灵活方式。
这种降低准入门槛的不利之处在于,初学者往往会被太多的学习选项淹没,导致困惑,不知道如何开始。
一个很好的开始方式是注册 DataCamp 的免费“人人数据科学”课程。通过动手练习,参与者将了解不同的数据科学家角色、A/B 测试、时间序列分析和机器学习等基础主题,以及数据科学家如何从真实世界的数据中提取见解。
继入门课程之后,DataCamp 为学员提供了全面的课程,让他们继续学习之旅。学生可以在职业轨迹中选择他们喜欢的语言( Python 、 R 或 SQL ),在这里,通过对真实世界数据集的系统化、交互式练习来教授基本的数据技能。
一旦完成其中一个职业轨道,学习者可以继续参加数据科学认证计划,让专家验证和认证他们的新技能。
什么是数据可视化?数据科学家指南
据估计,每天会产生 25 万亿字节的数据[来源: CloudTweaks.) ]。如果你在这个数字上遇到困难,不要气馁——你并不孤单。客观地看,十亿是 109,一万亿是 1018。换句话说,我们生成的数据量正以指数速度增长。
组织和个人利用数据来确定问题的原因并确定可行的步骤。然而,随着数据量的不断增长,理解所有这些变得越来越困难。我们与生俱来的天性就是寻找模式,寻找结构。这是我们储存信息和学习新见解的方式。当传入的数据没有以视觉上令人愉快的方式呈现时,看到这些模式并找到结构可能是困难的,或者在某些情况下是不可能的。
在本文中,我们将看看如何用数据可视化解决上述问题。我们还将介绍什么是数据可视化、为什么它很重要、培养数据可视化技能的技巧、常用图表以及可以用来简化数据可视化过程的工具。
什么是数据可视化?
数据可视化可以描述为用图形表示数据。它是将数据转化为视觉内容的行为,可以使用图表、绘图、动画、信息图等来完成。其背后的想法是让我们(人类)更容易识别数据中的趋势、异常值和模式。数据专业人员定期利用数据可视化来总结数据中的关键见解,并将这些信息反馈给适当的利益相关方。
例如,数据专家可以为管理人员创建数据可视化,然后管理人员利用这些可视化来规划组织结构。另一个例子是,数据科学家使用可视化来揭示数据的底层结构,以便更好地理解他们的数据。
鉴于上述数据可视化的定义目的,我们可以从什么是数据可视化中获得两个重要的见解:
1)使数据可访问的方法:使数据可访问的最好方法是保持简单。这里的“简单”一词需要放在上下文中:对一个十岁孩子来说简单易懂的东西对一个博士来说可能不一样。因此,数据可视化是一种用于使数据可以被任何人访问的技术。
2)一种沟通方式:这种外卖是第一种的延伸。为了有效地交流,房间里的每个人都必须说同一种语言。不管你是独立完成一项任务还是与团队合作,相对于那些可能看到可视化的人来说,可视化都应该获得有趣的见解。CEO 可能更喜欢查看提供可操作步骤的见解,而机器学习团队可能更喜欢查看他们的模型如何执行的见解。
简而言之,数据可视化是一种用于使识别数据中的模式或趋势变得更容易的技术。但是为什么这对数据科学家来说如此重要呢?我们将在下一节回答这个问题。
为什么数据可视化对数据科学家如此重要?
据维基百科介绍,数据科学是一个跨学科的领域,它使用科学的方法、流程、算法和系统从嘈杂的、结构化的和非结构化的数据中提取知识和见解。然而,数据科学家面临的挑战是,面对原始数据时,并不总是能够将点连接起来;这就是数据可视化极其有价值的地方。让我们更深入地探讨为什么数据可视化对数据科学家来说是一个名副其实的宝藏。
发现和学习
数据科学家需要很好地理解他们使用的数据。数据可视化使数据科学家能够展示其数据中最具信息性的方面,使他们(和其他人)能够快速轻松地掌握数据中发生的事情。例如,识别以表格格式表示的数据集中的趋势要比直观地看到它复杂得多。我们将在用于数据可视化的常见图表一节中对此进行更多讨论。
讲故事
几个世纪以来,故事一直被用来分享信息。故事之所以如此引人注目,是因为它们与观众建立了情感联系。这种联系可以让观众更深入地了解他人的经历,使信息更令人难忘。数据可视化是一种讲故事的形式:它帮助数据科学家理解他们的数据,并以易于理解的格式与他人分享。
效率
毫无疑问,洞察力可以从数据库中获得(在某些情况下),但这一努力需要极大的关注,并且是一笔巨大的业务支出。在这种情况下使用数据可视化要有效得多。例如,如果目标是识别所有在 2021 年遭受损失的公司,使用红色突出显示所有利润小于零的公司,使用绿色突出显示大于零的公司会更容易。破产的公司甚至保持中立。这种技术比手动解析数据库来标记单个公司要有效得多。
美学
虽然原始数据可能会提供信息,但它很少在视觉上令人愉悦或引人入胜。数据可视化是一种技术,用于获取信息丰富但枯燥的数据,并将其转化为美丽、深刻的知识。让数据在视觉上更具吸引力符合我们主要是视觉生物的本性。换句话说,当信息刺激我们的视觉感官时,我们处理信息的速度要快得多。
数据可视化工具
数据专家,如数据科学家和数据分析师,通常会利用数据可视化工具,因为这有助于他们更有效地工作和交流他们的发现。
这些工具可以分为两类:1)无代码的和 2)基于代码的。让我们来看看每个类别中的一些流行工具。
无代码工具
不是你组织中的每个人都精通技术。然而,缺乏编程能力不应该阻止你从数据中获得洞察力。你可能缺乏编程能力,但仍然具备数据素养——能够读、写、交流和推理数据以做出更好的数据驱动决策的人。
因此,对于没有编程知识的人来说,无代码工具是一种容易使用的解决方案(尽管有编程技能的人仍然会选择使用它们)。更正式的说法是:无代码工具是图形用户界面,具有运行本地脚本来处理和扩充数据的能力。
一些无代码工具的例子包括:
功率 BI
Power BI 是一个非常流行的微软数据可视化和商业智能解决方案。它是世界上最受欢迎的商业智能工具之一,用于报告、自助服务分析和预测分析。这一平台服务使您能够轻松快速地清理、分析并开始发现对组织数据的洞察力。
如果你对学习 Power BI 感兴趣,可以考虑从 Datacamp 的 Power BI 基础技能赛道开始。
(舞台上由人扮的)静态画面
Tableau 也是世界上最流行的商业智能工具之一。其简单的拖放功能使任何人都可以使用交互式数据可视化轻松地开始了解其组织的数据。
Datacamp 的Tableau Fundamentalsskill track 是开始学习 Tableau 的好方法。
代码可视化
如果你更精通技术,你可能更喜欢使用编程语言来可视化你的数据。由于支持数据处理的各种包,数据产量的增加促进了 Python 和 R 的流行。
让我们来看看其中的一些包。
Python 包
Python 是一种高级的、解释的、通用的编程语言【来源:维基百科】。它为数据可视化提供了几个很棒的图形包,例如:
- Matplotlib
- 希伯恩
- Plotly
- ggplot
- 散景
- Geoplotlib
使用 Python 的数据可视化技能课程是一个很好的课程序列,使用 Python 最受欢迎和最强大的数据可视化库来增强您的数据科学技能。
r 包
r 是一种统计计算和图形的编程语言【来源:维基百科】。这是一个很好的数据分析工具,因为你可以使用它的各种包创建几乎任何类型的图表。流行的 R 数据可视化包包括:
- ggplot2
- 格子木架
- 高价租船合同
- 传单
- 红啤酒
- Plotly
查看 R 技能跟踪中的数据可视化与 R 和交互式数据可视化,提升您的 R 编程语言可视化技能。
用于数据可视化的常见图表
我们已经确定,数据可视化是一种有效的数据呈现和交流方式。在本节中,我们将介绍如何通过使用 Python 和 Matplotlib python 包进行数据可视化来创建一些常见类型的图表和图形,这是大多数数据可视化任务的有效起点。我们还将分享每个图表的一些用例。
注意:参见此 Datacamp 工作区以获取完整代码。
频率表
频率表是表示一个事件或值发生的次数的好方法。我们通常使用它们来查找数据的描述性统计数据。例如,我们可能希望了解某个特性对最终决策的影响。
让我们创建一个示例频率表。我们将使用来自 UCI 机器学习知识库的汽车评估数据集和熊猫来构建我们的频率表。
import pandas as pd
"""
source: https://heartbeat.comet.ml/exploratory-data-analysis-eda-for-categorical-data-870b37a79b65
"""
def frequency_table(data:pd.DataFrame, col:str, column:str):
freq_table = pd.crosstab(index=data[col],
columns=data[column],
margins=True)
rel_table = round(freq_table/freq_table.loc["All"], 2)
return freq_table, rel_table
buying_freq, buying_rel = frequency_table(car_data, "class", "buying")
print("Two-way frequency table")
print(buying_freq)
print("---" * 15)
print("Two-way relative frequency table")
print(buying_rel)
条形图
条形图是最简单有效的数据可视化工具之一。它通常用于比较类别之间的差异。例如,我们可以使用条形图来显示欺诈性案例与非欺诈性案例的数量。条形图的另一个用例可能是可视化一部电影的每个星级的频率。
下面是我们如何用 Python 创建一个条形图:
"""
Starter code from tutorials point
see: https://bit.ly/3x9Z6HU
"""
import matplotlib.pyplot as plt
# Dataset creation.
programming_languages = ['C', 'C++', 'Java', 'Python', 'PHP', "Other", "None"]
employees_frequency = [23, 17, 35, 29, 12, 5, 38]
# Bar graph creation.
fig, ax = plt.subplots(figsize=(10, 5))
plt.bar(programming_languages, employees_frequency)
plt.title("The number of employees competent in a programming langauge")
plt.xlabel("Programming languages")
plt.ylabel("Frequency")
plt.show()
饼图
饼图是另一种简单有效的可视化工具。它们通常用于可视化和比较整体的各个部分。例如,饼图的一个很好的用例是代表智能手机的市场份额。让我们用 Python 来实现它。
"""
Example to demonstrate how a pie chart can be used to represent the market
share for smartphones.
Note: These are not real figures. They were created for demonstration purposes.
"""
import numpy as np
from matplotlib import pyplot as plt
# Dataset creation.
smartphones = ["Apple", "Samsung", "Huawei", "Google", "Other"]
market_share = [50, 30, 5, 12, 2]
# Pie chart creation
fig, ax = plt.subplots(figsize=(10, 6))
plt.pie(market_share,
labels = smartphones,
autopct='%1.2f%%')
plt.title("Smartphone Marketshare for April 2021 - April 2022",
fontsize=14)
plt.show()
折线图和面积图
折线图非常适合可视化一段时间内数据的趋势或进度。例如,我们可以用一个折线图来显示七月份运动鞋的销售量。
import matplotlib.pyplot as plt
# Data creation.
sneakers_sold = [10, 12, 8, 7, 7, 10]
dates = ["Jul '1", "Jul '7", "Jul '14", "Jul '21", "Jul '28", "Jul '31"]
# Line graph creation
fig, ax = plt.subplots(figsize=(10, 6))
plt.plot(dates, sneakers_sold)
plt.title("Sneakers sold in Jul")
plt.ylim(0, 15) # Change the range of y-axis.
plt.xlabel("Dates")
plt.ylabel("Number of sales")
plt.show()
面积图是折线图的扩展,但它们的不同之处在于,线下方的区域用颜色或图案填充。
下面是上面绘制在面积图中的完全相同的数据:
# Area chart creation
fig, ax = plt.subplots(figsize=(10, 6))
plt.fill_between(dates, sneakers_sold)
plt.title("Sneakers sold in Jul")
plt.ylim(0, 15) # Change the range of y-axis.
plt.xlabel("Dates")
plt.ylabel("Number of sales")
plt.show()
显示多个变量随时间变化的堆积面积图也很常见。例如,我们可以用堆积面积图来显示 7 月份销售的运动鞋品牌,而不是总销售额。
# Data creation.
sneakers_sold = [[3, 4, 2, 4, 3, 1], [3, 2, 6, 1, 3, 5], [4, 6, 0, 2, 1, 4]]
dates = ["Jul '1", "Jul '7", "Jul '14", "Jul '21", "Jul '28", "Jul '31"]
# Multiple area chart creation
fig, ax = plt.subplots(figsize=(10, 6))
plt.stackplot(dates, sneakers_sold, labels=["Nike", "Adidas", "Puma"])
plt.title("Sneakers sold in Jul")
plt.ylim(0, 15) # Change the range of y-axis.
plt.xlabel("Dates")
plt.ylabel("Number of sales")
plt.legend()
plt.show()
每幅图都以不同的方式显示了完全相同的数据。
直方图
直方图用于表示数值变量的分布。
import numpy as np
import matplotlib.pyplot as plt
data = np.random.sample(size=100) # Graph will change with each run
fig, ax = plt.subplots(figsize=(10, 6))
plt.hist(data, bins=6)
plt.title("The distribution of data")
plt.xlabel("Data")
plt.ylabel("Frequency")
plt.show()
散点图
散点图用于显示两个不同变量之间的关系。添加一条最佳拟合线来揭示数据的总体方向也很常见。散点图的一个示例用例可能是表示温度如何影响冰淇淋销售量。
import numpy as np
import matplotlib.pyplot as plt
# Data creation.
temperature = np.array([30, 21, 19, 25, 28, 28]) # Degree's celsius
ice_cream_sales = np.array([482, 393, 370, 402, 412, 450])
# Calculate the line of best fit
X_reshape = temperature.reshape(temperature.shape[0], 1)
X_reshape = np.append(X_reshape, np.ones((temperature.shape[0], 1)), axis=1)
y_reshaped = ice_cream_sales.reshape(ice_cream_sales.shape[0], 1)
theta = np.linalg.inv(X_reshape.T.dot(X_reshape)).dot(X_reshape.T).dot(y_reshaped)
best_fit = X_reshape.dot(theta)
# Create and plot scatter chart
fig, ax = plt.subplots(figsize=(10, 6))
plt.scatter(temperature, ice_cream_sales)
plt.plot(temperature, best_fit, color="red")
plt.title("The impact of weather on ice cream sales")
plt.xlabel("Temperature (Celsius)")
plt.ylabel("Ice cream sales")
plt.show()
热图
热图使用颜色编码方案来描述两个项目之间的强度。热图的一个使用案例可能是说明天气预报(即红色区域显示将有暴雨)。你也可以使用热图来表示网络流量和几乎任何三维数据。
为了演示如何用 Python 创建热图,我们将使用另一个名为 Seaborn 的库,这是一个基于 Matplotlib 的高级数据可视化库。
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
data = np.random.rand(8, 10) # Graph will change with each run
fig, ax = plt.subplots(figsize=(10, 6))
sns.heatmap(data)
plt.title("Random Uniform Data")
plt.show()
树图
树状图用于表示具有嵌套矩形的分层数据。它们非常适合可视化大量类别之间的部分到整体的关系,例如在销售数据中。
为了帮助我们用 Python 构建树形图,我们将利用另一个名为 Plotly 的库,它用于制作交互式图形。
"""
Source: https://plotly.com/python/treemaps/
"""
import plotly.express as px
import numpy as np
df = px.data.gapminder().query("year == 2007")
fig = px.treemap(df, path=[px.Constant("world"), 'continent', 'country'], values='pop',
color='lifeExp', hover_data=['iso_alpha'],
color_continuous_scale='RdBu',
color_continuous_midpoint=np.average(df['lifeExp'], weights=df['pop']))
fig.update_layout(margin = dict(t=50, l=25, r=25, b=25))
fig.show()
有效数据可视化的 3 个技巧
数据可视化是一门艺术。发展你的技能需要时间和练习。这里有三个建议可以让你朝着正确的方向前进:
技巧 1:问一个具体的问题
创建真正有洞察力的数据可视化的第一步是有一个你想用数据回答的特定问题。如果你看到一个可视化的扭曲的关键信息,这很可能是跳过了这一步,或者创作者试图一次回答多个问题。为了避免矫枉过正,确保你已经清楚地表达了要用你的可视化回答的具体问题(例如,特征 A 和 B 之间有关系吗?).
技巧 2:选择合适的可视化
一个有效的可视化应该实现两个目标:1)它应该清楚地揭示所提问题的答案;2)它应该易于让观众快速理解所呈现的内容。满足这些标准的一个关键因素是确保你选择了合适的图表来代表你想要揭示的东西。
技巧 3:突出最重要的信息
人类非常擅长识别模式,但我们的回忆能力却并非如此。例如,你有没有见过一个人看起来很面熟,但你完全不知道他叫什么名字?由于我们的设计,这样的场景发生在我们所有人身上。我们更容易记住某人的脸,因为这与我们识别模式的能力相关,而他们的名字需要我们回忆信息。
“人类有一种随处可见模式的倾向。这在做决定和判断以及获取知识时很重要;我们往往对混乱和机遇感到不安。”基洛维奇,1991 年。
总而言之,有效的视觉化依赖于我们识别模式的自然倾向。使用颜色、形状、大小等是一种非常有效的技术,可以强调你想要展示的最重要的信息。数据可视化是一门艺术;做好这件事需要问一个特定的问题,选择合适的可视化方式,突出最重要的信息。如果你的第一次尝试不是最棒的,不要太沮丧;提高你的技能需要时间和练习,DataCamp 的广泛的数据可视化课程是帮助你成为数据可视化大师的绝佳资源。
茱莉亚是做什么用的?Julia 编程的 10 个应用
原文:https://web.archive.org/web/20221212135909/https://www.datacamp.com/blog/what-is-julia-used-for
在从事数据科学项目时,当谈到顶级编程语言时,你有很大的选择余地。除了 Python、R 和 SQL 等主流语言之外,您还可以使用其他通用和专用语言,如 MATLAB、C/C++和 Go。但是,相对来说,朱莉娅是一个新来者,她怎么样呢?在这里,我们看看朱莉娅是用来做什么的,以及为什么你应该考虑学习它。
朱莉娅是什么?
Julia 是一种令人兴奋的相对较新的编程语言,旨在成为科学计算、机器学习和数据挖掘的理想语言。Julia 于 2012 年发布,迅速成为经验丰富的数据从业者的最爱。
Julia 被设计为拥有 C 的速度、Python 的一般编程能力和 R 的统计能力,是一种强大的语言,与其他语言相比,学习起来相当简单。
今天,Julia 已经被下载了超过 4000 万次,并建立了一个社区,注册了超过 8000 个编程语言包。截至 2022 年 10 月,茱莉亚在 PYPL 指数和提奥贝指数中分别排名第 25 位和第 27 位。也就是说,虽然还没有 Python、R 或 MATLAB 流行,但 Julia 是一颗冉冉升起的新星,其流行程度与 SAS 或 Scala 相似。
朱莉娅的利与弊
当然,人们很容易对一种新的编程语言感到兴奋,尤其是当它的目标是革命性的时候。然而,和所有的语言一样,Julia 也有它的优点和缺点。下面,我们概述了朱莉娅的一些优点和缺点。我们在关于朱莉娅崛起的文章中对此进行了更详细的探讨:
朱莉娅·普罗斯
- 它很快。你会看到很多关于朱莉娅速度的讨论。在微基准(测量一系列常见代码模式的性能)方面,它表现非常好,尽管这些结果不包括编译时间。一项深入研究发现,Julia 用于处理分隔文本数据的 CSV.jl 包在读取 CSV 数据时比 Python 的 pandas 包快 1.5 到 5 倍。
- 它有清晰的语法。Julia 语法从现有的数据编程语言中获得灵感。你可以把它想象成 MATLAB,但其中有一些来自 Python、R 和 Ruby 的好点子。
- 很百搭。正如我们将看到的,朱莉娅有许多用途。它的许多特性,例如它的多重调度,使它适用于许多行业和各种项目。
朱莉娅·康斯
- 语言年轻。如上所述,Julia 相对来说是这个领域的新人。因此,它不像 Python 和 r 这样的语言那样广泛或得到很好的支持。
- 它的生态系统很小(但正在发展)。由于它的新,社区和生态系统仍然相对较小。有许多独特的解决方案和软件包正在出现,但与 Python 这样的重量级软件相比,它还有很长的路要走。
- 它有一些编译问题。一些消息来源指出了使用 Julia 的实时(JIT)编译器编译代码时出现的延迟。JIT 在运行之前将所有代码编译成机器码。当试图执行快速脚本时,这种延迟会使它有点令人沮丧。
朱莉娅使用
所以,作为一种新兴语言,朱莉娅有几个优点和缺点。但是朱莉娅是用来做什么的呢?
Julia's inception 的主要目标之一是创建一种语言,使程序员能够编写清晰、高级、通用和抽象的代码,类似于数学公式,同时仍然能够生成通常在静态语言中看到的快速、低级的机器代码。看看我们的朱莉娅教程中的语言。
下面,我们概述了编程语言擅长的几个领域。
1.数值计算
有一系列软件包允许 Julia 程序员执行数值计算任务。例如,对于线性代数相关的任务,有 LinerAlgebra.jl 模块;对于求根,有非线性求解;而对于自动分化,有 ForwardDiff 或酶。
2.机器学习
再说一次,Julia 是基于机器学习而构建的,尤其是科学机器学习,它专门关注来自科学数据集的挑战和见解。作为一种为并行设计的编译语言,Julia 可以在某些机器学习任务上提供巨大的速度。例如,在将机器学习模型部署到生产中时,Julia 可以显著缩短培训时间并降低成本。
随着一个新兴的社区和许多新的 ML 包,其中许多都包含在 MLJ 框架中,Julia 可能是这个领域的一个很好的选择。机器学习在 Julia 工作中的一个很好的例子来自一家维护该国电力线的澳大利亚公司。通过创建 3D 地图并使用 Julia 机器学习,他们能够以比以前快 100 倍的速度识别网络故障和潜在故障。
3.统计数字
Julia 的另一个主要功能是用于统计和统计分析。例如, StatsKit 元包包含用于基本统计功能的 Julia 包,以及用于处理数据框架表格数据、概率分布、多元统计分析、假设检验等的工具。
4.通用编程
作为一种通用编程语言,Julia 能够构建各种各样的软件和功能。例如,Blink 包让你建立电子 GUI 应用程序,GameZero 为初学者介绍游戏开发,Miletus 允许你在 Julia 中建立金融合同。
我们已经提到过,鉴于 Julia 的语法简单明了,它被设计成相对容易和快速地编写程序。但是,它也可以非常快速地运行代码和执行计算。
5.Web 开发
有几个很棒的 Julia web 开发工具可供用户使用。像 Genie.jl 和 Dash.jl. Genie 这样的软件包允许用户在 Julia 中处理 web 上的数据。这是一个全栈式的 web 框架,为用户提供了一种开发 web 应用程序的方法,具有精简高效的工作流程。Dash.jl 是 Dash 生态系统的一个 Julia 接口,允许您在 Julia 中创建 web 应用程序。
工业中的朱莉娅范例
现在我们已经知道了 Julia 在广义上的用途,让我们来看一些 Julia 在工业中的例子。Julia 网站列出了许多语言的应用,下面我们重点介绍了其中的一些:
6.药物建模和开发
朱莉娅在医学领域应用广泛。研究人员使用 Julia 来识别和测试新药,优化治疗,并用于诊断和治疗。诸如 BioJulia(一种生物信息学基础设施)和 Pumas(用于药物计量学建模,鉴定药物试验信息的科学)之类的软件包很常见。举个例子,制药巨头辉瑞公司利用 Julia 来加速新疗法的模拟。
7.并行超级计算
Julia 速度的最好例子之一是在天文学领域,经常使用 AstroLib.jl 包的天文学和天体物理学例程。
Julia 在天文学中应用的一个例子是 Celeste 项目,在该项目中,一个由天文学家、物理学家、计算机工程师和统计学家组成的研究小组使用 Julia 开发了一种新的并行计算方法。经过三年的开发,他们使用这种方法在短短 14.6 分钟内生成了 1.88 亿个天文物体的最精确目录,性能提高了 1000 多倍。
8.财务建模和管理
Julia 的性能和灵活性使其成为金融界的一个强有力的工具。专业人士使用这种语言来开发模型和预测,以做出财务决策。其中一个流行的软件包是 JuliaFin,它专注于资产管理、风险管理、算法交易、回溯测试等领域,以及计算金融的其他领域,包括金融合同建模。
9.机器人学
麻省理工学院的机器人专家利用朱莉娅给机器人编程。例子包括训练他们走路,爬楼梯,以及覆盖困难和危险的地形。再次,专家引用 Julia 的灵活性和通用代码作为其在该领域实力的原因,因为它允许从业者编写可以在各种数据类型上操作的清晰函数。
在这方面最受欢迎的软件包之一是 JuliaRobotics,其中包括像 motioncapturejointcalibration . JL 这样的 Julia 软件包,它从运动捕捉数据中为机器人提供运动学校准。
10.网络安全性
思科的网络专家使用 Flux.jl Julia 包来提高网络安全性和进行机器学习。用单一语言编写高效代码的能力被认为是在这个领域使用 Julia 的主要好处之一。
Julia 入门
显然,朱莉娅的用途是重要的。尽管在数据科学领域,它远不能立即取代 Python 或 R,但考虑到后者的成熟程度,它肯定有潜力扩展您的技能。那些对学习 Julia 感兴趣的人应该从我们的Julia 简介课程开始,它将带你了解这种快速发展的语言的主要特征。你也可以找到我们的朱莉娅小抄,它为朱莉娅的基础知识提供了方便的参考。
什么是 Kaggle?
原文:https://web.archive.org/web/20221129050302/https://www.datacamp.com/blog/what-is-kaggle
目录
- 什么是 KAGGLE?
- 有助于 KAGGLE 成功的数据科学课程
- KAGGLE 工作
- KAGGLE 常见问题(FAQ)
- Kaggle 是什么,是用来做什么的?
- Kaggle 有空吗?
- 什么是 Kaggle 比赛?
- Kaggle 是学习数据科学的好方法吗?
- 谁拥有 Kaggle?
- Kaggle 数据集是免费的吗?
- Kaggle 提供 GPU 吗?
- 谁是杰瑞米·霍华德?
- 什么是卡格尔大师?
- Kaggle 数据集开源了吗?
- Kaggle 数据集可靠吗?
- Kaggle 有手机 app 吗?
- Kaggle 用我的 CPU 吗?
- 我的笔记本输出在 Kaggle 哪里?
- 在 Kaggle 从哪里开始?
- Kaggle 什么时候重置 GPU 配额?
- 哪里可以找到 Kaggle 制胜解决方案?
什么是 KAGGLE?
Kaggle 是一个面向数据科学家和机器学习爱好者的在线社区平台。Kaggle 允许用户与其他用户协作,查找和发布数据集,使用 GPU 集成笔记本,并与其他数据科学家竞争,以解决数据科学挑战。这个在线平台(由安东尼·戈德布卢姆和杰瑞米·霍华德于 2010 年创建,2017 年被谷歌收购)的目的是帮助专业人士和学习者利用它提供的强大工具和资源,在数据科学之旅中实现他们的目标。截止到今天(2021 年),Kaggle 上的注册用户已经超过 800 万。
使 Kaggle 成为如此受欢迎的资源的一个子平台是他们的比赛。与 HackerRank 在软件开发人员和计算机工程师中扮演的角色类似,“ Kaggle 竞赛”对数据科学家来说也非常重要;你可以在我们的 Kaggle 竞赛指南中了解更多信息,并在我们的 Kaggle 竞赛教程中学习如何逐步分析数据集。在像 Kaggle's 或 DataCamp 这样的数据科学竞赛中,公司和组织分享大量具有挑战性的数据科学任务,并获得丰厚的奖励,其中数据科学家,从初学者到经验丰富者,都可以在完成任务后进行竞争。Kaggle 还提供 Kaggle 笔记本,就像 DataCamp Workspace 一样,允许您在浏览器上编辑和运行数据科学任务的代码,因此您的本地计算机不必做所有繁重的工作,您也不需要自己建立一个新的开发环境。
Kaggle 在云上提供强大的资源,并允许您每周最多使用 30 小时的 GPU 和 20 小时的 TPU。你可以上传你的数据集到 Kaggle,也可以下载其他人的数据集。此外,您可以查看其他人的数据集和笔记本,并在上面开始讨论话题。你的所有活动都会在平台上打分,随着你帮助他人和分享有用信息,你的分数也会增加。一旦你开始赚取积分,你将被置于 800 万 Kaggle 用户的直播排行榜上。
Kaggle 适合不同的人群,从对数据科学和人工智能感兴趣的学生到世界上最有经验的数据科学家。如果你是初学者,可以利用 Kaggle 提供的课程。通过加入这个平台,您将能够在一个由不同专业水平的人组成的社区中进步,并且您将有机会与许多经验丰富的数据科学家交流。当你获得证明你进步的卡格尔积分和奖章时,很有可能你甚至会吸引猎头和招聘人员,并开启新的工作机会。
最后但同样重要的是,在申请数据科学方面的工作时,提及你的 Kaggle 经验肯定会产生积极的影响。不言而喻,所有这些好处也适用于经验丰富的数据科学家。不管你有多有经验,这个平台提供了持续学习和提高的可能性,当然,比赛带来的现金奖励也同样有趣。
有助于 KAGGLE 成功的数据科学课程
以下是 DataCamp 为初学者推荐的一些课程:
- 赢得 Python 中的 Kaggle 竞赛:开发您将在 Kaggle 竞赛中应用的方法和确定的策略
- Python 简介:学习数据科学中最流行语言的基础知识
- 中级 Python :这是另一门关于 Python 基础知识的课程
- Python 中的线性分类器:学习逻辑回归和支持向量机,并使用 Scikit-learn 开发您的第一个模型
- Python 中的聚类分析:使用 SciPy 库的无监督学习
- Python 中机器学习的预处理:为机器学习模型准备数据
- Python 中的模型验证:学会回答“你的模型有多好?”
- Python 中的降维技术:数据可视化的基础
- 在 Python 中设计机器学习工作流:从高层次上了解生产就绪型机器学习模型的生产流程
- Python 中的数据隐私和匿名化:一门关于你工作的公司或你可能创立的任何初创公司的隐私的必修课
- Seaborn 数据可视化简介:使用 Seaborn python 库开发您的数据可视化技能——这是数据可视化初学者的理想课程
- Python 中的图像处理:在本课程中,您可以学习图像预处理技术,这将使您能够访问和提取图像中携带的大量信息。
- Python 中的自然语言处理简介:学习自然语言处理的基础知识,以及该领域一些流行库的使用
- SQL 简介:学习使用数据库的基本 SQL
- 中级 SQL: 提高你的 SQL 技能
- PyTorch 深度学习简介:使用最流行、最易用的 Python 的 py torch 包的深度学习简介
- Python 中的时间序列分析:了解时间序列模型和技术
KAGGLE 工作
“Kaggle Jobs”是 Kaggle 于 2014 年开设的数据科学职位分享平台。该平台的目标是帮助公司找到最合适的候选人,并帮助数据科学家找到适合他们的公司。由于活跃度不够,这个平台在 2020 年被 Kaggle 关闭。然而,本节将为您提供一些 Kaggle 工作替代方案和其他就业平台:
Linkedin:求职最常用的平台之一。只要在搜索栏中写上“数据科学家”,你就会找到合适的工作机会。您还可以指定更详细的过滤器,如远程/办公室、位置、公司规模等。
Upwork: Upwork 是一个自由职业平台,也是寻找兼职和全职工作的理想选择。在申请长期工作之前,候选人一般需要完成几份短期工作,并接受一些审查。
AngelList:创业公司申请招聘的理想平台。
Y Combinator:这是一个加速器和融资平台,最负盛名的初创公司都是从这里挑选出来的。这些创业公司的招聘信息都在平台上分享。
StackOverflow:这是一个面向程序员和工程师的问答平台,我们都从中受益,从年轻到年老,从有经验到没有经验。它还有一个职位发布区。
KAGGLE 常见问题(FAQ)
Kaggle 是什么,是用来做什么的?
Kaggle 是一个数据科学和人工智能平台。在这个平台上,大公司和组织发布奖金竞赛。除了竞赛之外,用户还可以共享他们的数据集,并检查其他人共享的数据集。此外,数据科学家可以使用这些数据集共享代码片段,并在讨论部分与其他数据科学家讨论它们。任何用户都可以从参与 Kaggle 上共享的免费课程中受益,他们在成功完成课程后会收到一份免费证书。
Kaggle 有空吗?
是的,Kaggle 上的一切都是完全免费的:课程、课程获得的证书、数据集、参加比赛、讨论板块等。
什么是 Kaggle 比赛?
Kaggle 竞赛由数据科学任务组成。一些比赛没有任何奖品(但提供学习和知识分享的机会),而另一些比赛则有丰厚的现金奖励。你可以独自或组队参加这些比赛。除了在比赛中取得好成绩的奖金外,你还会赢得奖牌和积分。这些积分和奖牌让你与平台上所有级别的其他数据科学家一起登上排行榜。这个排名决定了你在 Kaggle 的全球排名。你在 Kaggle 上赢得的比赛和你的 Kaggle 排名会对你的职业生涯产生有利的影响。有关比赛的更多信息,请访问第 4 节。
Kaggle 是学习数据科学的好方法吗?
学习基础知识和向自己介绍数据科学有许多替代方法,但 Kaggle 如此出色有几个原因。有很多因素会帮助你增加知识,保持你在 Kaggle 上的动力。
主要的是 Kaggle 的排名系统。随着你的发展,在比赛中得分,并为他人提供有用的信息,你的全球 Kaggle 排名会增加,你可以立即跟上它。你被安排在平台上的许多专家数据科学家中,这一事实非常有激励作用。
此外,平台上的许多人都很乐于助人,他们在帮助你的同时还会继续获得积分和排名。举个例子,如果你分享了一段代码,以及关于这段代码的讨论,当你在讨论中提出一个关于如何开发自己的代码的问题时,很有可能会收到平台上最优秀的数据科学家的评论。这是一个被证明非常有用的指导系统,尤其是对于初学者。
谁拥有 Kaggle?
Kaggle 由安东尼·戈德布卢姆和本·哈姆纳于 2010 年创立。2017 年 3 月 8 日,谷歌收购了 Kaggle。
Kaggle 数据集是免费的吗?
要了解数据集的用途,您需要检查数据集的许可。有些数据集不能用于学术出版物或商业目的。但是,您可以通过 Kaggle API 将每个共享数据集免费下载到您的 Kaggle 笔记本或任何其他地方。
Kaggle 提供 GPU 吗?
在 Kaggle 笔记本中,您可以随时激活 GPU。您每周最多可以主动使用 GPU 30 个小时。Kaggle 提供的 GPU 是 16GB 内存的 Nvidia Tesla P100 GPU。
谁是杰瑞米·霍华德?
杰瑞米·霍华德是一名澳大利亚数据科学家和企业家,他赢得了 2011 年和 2010 年的全球 Kaggle 数据科学竞赛。霍华德随后成为卡格尔的首席科学家和总裁。
什么是卡格尔大师?
大师级是 Kaggle 性能等级中最高的等级(新手、贡献者、专家、大师和大师)。为了达到大师级别,用户需要在比赛中赢得至少 5 枚金牌,其中至少 1 枚需要是单人金牌;数据集至少 5 枚金牌和 5 枚银牌;笔记本至少 15 块金牌;和至少 500 枚奖牌的讨论,其中至少 50 枚需为金牌。特级大师级别目前只有 241 名数据科学家。
Kaggle 数据集开源了吗?
是的。Kaggle 数据集是开源的,但要了解这些数据集可以用于什么目的,你需要检查数据集的许可证。有些数据集不能用于学术出版物或商业目的。
Kaggle 数据集可靠吗?
绝大多数 Kaggle 数据集是可靠的。您可以通过查看数据集的上传投票或查看使用该数据集共享的笔记本来判断数据集的可靠性。然而,并非所有 Kaggle 数据集都适用于现实生活中的用例。
Kaggle 有手机 app 吗?
Kaggle 目前不支持移动应用程序。不过 DataCamp 确实有学习数据科学和练习编码的手机 app。适用于 iOS 和 Android 。
Kaggle 用我的 CPU 吗?
Kaggle 内核是免费的 Jupyter 笔记本服务器,可以集成 GPU。它允许您在云计算机上处理机器学习操作,而不是在自己的计算机上进行,与在浏览器上工作的 DataCamp Workspace 类似,使用基于云的资源,而不是本地机器。
我的笔记本输出在 Kaggle 哪里?
为了访问 Kaggle 的笔记本输出,您必须首先提交您的笔记本。您可以通过单击笔记本左上角的“保存版本”按钮来完成此操作。提交你的笔记本后,两个内核会继续工作。第一个是你现在正在编辑的,第二个是你提交的后台内核。在后台运行的内核将创建可供下载的输出文件。交互式笔记本不会保存文件。后台的内核完成后,点击左上方的后退按钮,进入到有以下标签页的页面:笔记本、代码、数据、输出、评论。当您切换到 output 选项卡时,您将看到输出文件已经可以下载了。
在 Kaggle 从哪里开始?
如果您是初学者,可以从参加竞赛部分“入门”类别中的竞赛开始。也可以查看别人的笔记本。如果你处于更高级的专业水平,你可以通过参加积极的比赛直接开始。
Kaggle 什么时候重置 GPU 配额?
每周六更新 GPU 配额。您可以通过转到您的个人资料中的帐户选项卡,在 GPU 部分查看您的剩余 GPU 配额。这部分显示您的私人数据存储,以及 GPU 和 TPU 配额。
哪里可以找到 Kaggle 制胜解决方案?
当您从竞赛页面点击讨论选项卡时,您将看到许多关于竞赛的讨论主题。投票最多的讨论主题位于顶部,投票最多的主题是获胜者,带有解决方案说明和获胜笔记本的链接。
Python 是用来做什么的?初学者指南
原文:https://web.archive.org/web/20221129033335/https://www.datacamp.com/blog/what-is-python-used-for
Python 是目前(截至 2022 年 6 月)世界上最流行的编程语言,其用户群也在不断增长。但是 Python 是用来做什么的呢?许多行业和公司将 Python 用于各种各样的任务,例如分析数据、构建机器学习模型、创建网站或编写软件。
在本文中,我们将探索 Python 的主要用途,Python 如此受欢迎的原因,为什么应该学习它,以及需要多长时间。我们还探讨了哪些工作通常需要 Python 编程技能。
Python 是什么?
从技术上讲,Python 是一种开源的、面向对象的、高级的、通用的编程语言。由于这个定义可能看起来令人不知所措,让我们分别看一下每个特征,以了解它们各自的含义:
- 开源:它是免费的,可以进一步改进,比如添加有用的功能或修复错误
- 面向对象:不是基于函数,而是基于具有定义的属性和方法的对象
- 高级:对人类友好而不是对计算机友好
- 通用:可用于创建任何类型的程序
Python 广泛应用于数据科学、数据分析、机器学习、数据工程、web 开发、软件开发等领域。
要了解更多关于什么是 Python 的知识,你可以在我们的博客文章中找到这种流行语言的基础知识。
Python 为什么这么受欢迎?
现在让我们来讨论一下使 Python 成为如此强大和广泛使用的编程语言的主要优势:
- 它有一个直观的语法,类似于自然的英语,因此很容易学习,特别是对于那些刚刚进入编程世界的人
- 由于其人性化的语法,它很容易编写、阅读和调试
- 它提供了一个广泛的标准库和一个广泛的有良好文档记录和全面的附加库和模块
- 对个人和企业来说都是免费的
- 得益于其庞大的支持社区,Python 不断得到开发、改进和扩展
- 它可以集成到任何项目中,并用于解决高级问题
- 作为一种通用语言,它在许多领域有各种各样的应用
为什么要学 Python?
了解和使用 Python 的好处清楚地表明了为什么它是学习的最佳选择,尤其是作为您的第一门编程语言。但是,你个人为什么会决定去学呢?以下是一些更能说服你的理由:
- 它可以为你在许多领域开启新的职业生涯打开无数的机会,我们很快就会详细了解到底是哪些领域。
- 它可以成为你当前工作的一个方便的辅助工具。例如,使用 Python,您可以自动执行许多单调的任务,如一次重命名许多文件,将文件转换为另一种格式,或者创建和更新工作报告。
- 即使在申请不需要直接了解 Python 的工作职位时,它也能让你脱颖而出(例如,你可以在这里查看一个业务分析师工作描述模板的例子)。
- Python 相关的职业目前收入很高,需求量很大,而且这种趋势在未来只会越来越大。如果你需要证明,就拿中提到的任何工作来说吧,哪些工作需要 Python?查看上的平均工资和 LinkedIn 上的职位空缺。
- 最后,能够使用 Python 你可以为自己做很多有益或有趣的事情,比如抓取网站或创建机器人。我们将在本文中进一步讨论其他一些想法。
学习 Python 需要多长时间
学习 Python 需要多长时间?好了,在这里,一切都取决于你之前的编码经验(或者没有,完全 ok!),你的目标,你的动力,以及你准备投入多少时间在学习上。
好消息是,即使你是一个完全的初学者,你也可以在短短 15 个小时内学习 Python 的基础知识。
如果你想学习数据科学的 Python 基础,或者学习如何在统计学中使用它,或者你已经知道 Python 但是想掌握高效地编写代码,你只需要大约 4 个小时。
相反,如果你需要一种更加结构化和多面化的学习方法来成为一名 Python 的数据分析师,你可能需要 32 个小时。所以你可以选择用这种语言做什么,然后开始学习。
Python 是用来做什么的?7 Python 的用途
我们在本文中已经不止一次提到 Python 有很多应用。所以,让我们看看在现实世界中我们可以在哪里使用 Python。
1.用于数据分析的 Python
在任何现代行业中,数据都已经成为真正珍贵的资产,所有公司都有兴趣收集、处理和分析相关数据,从中提取有意义的商业见解。这也是 Python 超越任何竞争对手的地方。
这种语言特别有价值,因为除了其全面的标准库之外,它还提供了大量专门为分析目的设计的附加模块。
进行数据分析最著名的 Python 库是 pandas 和 NumPy 。这些工具允许您对数据做几乎所有的事情,例如清理和争论数据、探索统计数据或可视化数据中隐藏的趋势。
除了这两个库,您还可以使用许多其他库来完成各种与数据相关的任务,比如数据可视化、web 抓取或假设检验。
2.用于数据可视化的 Python
他们说一张图胜过千言万语,这就是数据可视化的用途。数据可视化是数据分析的一个独立部分,它帮助我们以更具说服力和洞察力的形式呈现信息,无论是原始信息还是经过清理和转换的信息。
这里 Python 再次发挥了作用,提供了一系列可视化数据的工具。其中最受欢迎的是 matplotlib 和基于它的 T2 seaborn。使用它们,我们可以创建几乎所有类型的可视化,从简单的(线图、条形图、直方图)到更高级的(动画图、流线图、聚类图、快乐图等)。).如果你想进一步了解如何使用这两个库,可以关注 DataCamp 的这些课程:【Matplotlib 数据可视化简介和【Seaborn 数据可视化简介。
Python 中还有大量其他图形库:既有多用途的(如 Plotly 、 Bokeh 或 Altair ),也有更专注的(用于可视化缺失值的 missingno 、用于创建电子出版交互图的 Toyplot 、用于构建地图的 GeoPandas 等。).
3.用于机器学习的 Python
机器学习(ML)是大多数数据科学任务的核心。它代表了人工智能(AI)的一个领域,涉及使用算法使机器能够从历史数据中学习模式和趋势,以对未知数据进行预测。
使用 ML 技术,我们可以创建模型,这些模型可以准确地预测公司的客户流失率、估计某人患有某种疾病的风险、确定出租车车辆的最佳位置等。
使用 Python,我们可以使用少至三行代码构建一个 ML 模型(参见预测欺诈性银行交易的模型示例)。尽管在这几行代码后面有复杂的过程和计算,Python ML 库完成了大部分的幕后工作,这极大地方便了用户的任务。最常见的库有 scikit-learn 、 Keras 、 TensorFlow 和 PyTorch 。
4.Python 用于软件开发
除了在数据科学领域的多方面应用,Python 还用于软件开发的每个阶段,包括构建控制、自动化连续编译、原型开发、错误跟踪、测试和软件维护。
这种编程语言的灵活性和强大功能允许使用它来创建相对简单和高度先进的多协议应用程序,或者那些涉及复杂数值计算的应用程序。
使用 Python,我们可以基于 AI 或 ML 技术、API(应用程序编程接口)、GUI(图形用户界面)或任何其他类型的软件来构建音频或视频程序。
5.用于 Web 开发的 Python
对于构建网站的前端(用户可以访问的网站部分),我们通常会使用 HTML、CSS 和 JavaScript 等语言,而对于后端(网站的不可见部分),我们通常会选择 Python。
出于这些目的,Python 被用于一些公共框架(如 Django 或 Flask ),这些框架具有专门的内置模块,能够与服务器共享数据、处理信息、访问数据库、URL 路由、内容管理和维护网站安全。
在使用 Python 创建的大型网站和应用程序中,值得一提的是谷歌、脸书、Instagram、YouTube、Dropbox 和 Reddit。
6.用于任务自动化/脚本的 Python
Python 是一个很好的工具,可以用来编写程序来自动化不同的重复性任务。这个过程也称为脚本编写。
特别是,您可以编写脚本来处理文件和文件夹。例如,您可以创建、重命名、转换、拆分、合并或删除文件,检查文件中的错误、重复或特定文本模式,或者更新文件内容。
您还可以使用 Python automation 从互联网上搜索和下载信息,完成并提交在线表单,以及发送定期通知或电子邮件。
手动完成所有这些事情,除了极其无聊之外,还会非常耗时且容易出错。使用 Python 脚本在几分钟内执行这些操作将显著提高您的效率,并为您节省宝贵的时间和精力来完成更具创造性的任务。
7.有用或有趣的 Python 用法
除了上面提到的那些“严肃的”实现,Python 还有什么用途?以下是一些新鲜的想法:
- 监控股票市场
- 网页抓取
- 保持更新待办事项列表
- 创建机器人
- 生成随机名称、颜色、电话号码、货币等列表。
最后,您可以享受 Python 带来的纯粹乐趣:
- 将文本转换成 ASCII 艺术作品,就像这样:ʕ •`ᴥ• ʔ
- 随机配对秘密圣诞礼物和接收者
- 生成带有消息的所选动物的 ASCII 艺术图片
- 下棋
- 阅读你的星座运势
甚至
什么工作需要 Python?
很多职业的日常工作都直接需要 Python。下面,我们概述了你可以用 Python 做什么:
- 数据科学家
- 数据分析师
- 数据工程师
- 机器学习工程师
- 数据记者
- 数据架构师
- 全栈 web 开发人员
- 后端 web 开发人员
- DevOps 工程师
- 软件工程师
此外,一些其他工作可能需要 Python 技能来执行某些任务,如分析数据、自动化重复任务或监控市场行为:业务分析师、银行家和科学家只是几个例子。
选择 Python
总的来说,我们讨论了很多关于用 Python 来解决不同任务的实现。我们了解了什么是 Python,以及 Python 的主要优点是什么,使它成为世界上使用最广泛的编程语言。
我们探讨了选择 Python 的好处和学习它的原因,以及需要花费的时间。最后,我们发现 Python 可以在许多领域中用于许多应用程序,并且许多专家在他们的日常工作中使用它。
如果您有兴趣继续学习 Python 的激动人心的旅程以拓宽您的职业视野,请探索 DataCamp 的以下技能和职业跟踪的详尽的初学者友好的在线计划:
有几个原因,包括:
- 由于其直观的语法,它易于学习、编写、调试和阅读
- 对所有人都是免费的
- 它提供了广泛的标准库和许多附加模块
- 它在不断地发展、改进和扩展
- 它可用于解决各种领域的高级问题。
数据科学、数据分析、数据可视化、机器学习、人工智能、数据工程、web 开发、软件开发和任务自动化。
肯定是的!Python 的知识可以帮助你开始一个新的高薪且在许多领域非常受欢迎的职业,或者它可以成为你当前工作或个人任务的额外工具。Python 也能让你在人群中脱颖而出,即使是在应聘不直接需要这种技能的工作时。
大约 4 到 100 个小时,取决于你以前的编程经验(或者没有),你的目标,你的动机,你准备花多少时间来学习,以及你到底要用这种编程语言做什么。
绝对的!Python 有一个初学者友好的、直观的语法,类似于自然语言,它还提供了描述良好的、全面的库,所以这种语言真的很容易学习和使用。如果你是一个完全的初学者,你可以在 Python 基础上找到有用的 这个技能轨迹 。
是的,最近它变得越来越受欢迎,因为它的入门门槛低、语法简单、支持社区广泛,并且有多种用途或非常专业的记录良好的数据科学库可供选择,可用于解决任何复杂的任务。
数据科学家、数据分析师、数据工程师、机器学习工程师、数据记者、数据架构师、全栈 web 开发者、后端 web 开发者、软件工程师、DevOps 工程师、业务分析师、银行家、不同领域的科学家。
用于监控股票市场、自动化报告、抓取网站、完成并发送在线表格、更新待办事项列表、创建机器人以及生成某一类别的随机数据。你也可以使用 Python 来完成各种有趣的任务,比如生成 ASCII 艺术文本和图片,下棋,配对秘密的圣诞老人礼物和接收者,阅读你的星座,甚至使用 Tinder。
壳牌是什么?
原文:https://web.archive.org/web/20230101102949/https://www.datacamp.com/blog/what-is-shell
- 什么是贝壳?
- 为什么壳牌这么受欢迎?
- Shell 脚本有什么缺点?
- 壳牌是什么时候创立的?
- 壳牌如何得名
- 外壳特征
- 壳牌多年来的发展历程
- 谁用壳牌?
- 外壳示例
- 壳牌的职业生涯
- 结论
如果您正在使用微软、苹果或 Linux 操作系统(OS ),您可能在不知不觉中使用了 shell 脚本。事实上,每次启动 Linux 操作系统时,您都会与 shells 进行交互。
Shell 脚本帮助程序员、数据科学家和临时用户节省时间,并通过自动化避免重复任务。例如,脚本可以执行每日备份、安装补丁、监控系统和活动,以及执行例行审计。
Shells 读取相当直观的人类命令,并将它们转换成系统可以理解的东西。
什么是贝壳?
shell 是一种叫做命令行解释程序的计算机程序,它让 Linux 和 Unix 用户通过命令行界面控制他们的操作系统。Shells 允许用户与他们的操作系统直接有效地通信。
Shell 脚本不是一种单一的语言,但是因为它使用一些自然语言命令,所以即使没有编程背景也很容易学习。然而,每种 shell 脚本语言都被认为是一种语言,如果您计划更复杂的活动,shell 需要大量的实践。
Shell 脚本是设置自动化的最简单的方法之一。使用 Linux 或 Unix 命令,shell 脚本为数据科学家、开发人员和技术人员提供了重复命令的条件和循环控制结构。
Shell 脚本并不总是使用相同的名称。Sh,
Bash(最常见),csh,
和 tesh 都是 shell 脚本。而在 IBM 的 VM 操作系统中,它们被称为 EXEC 在 DOS 中,shell 脚本被称为批处理文件。
shell 有两个类别,命令行 shell 和图形 shell。命令行 shells 是使用命令行界面访问的,其中系统以人类可读的命令接收输入,然后使用命令行界面显示输出。
图形外壳使用图形用户界面(GUI)来执行交互和基本操作,如打开、关闭和保存文件。
以下是一些示例 shell 命令:
要找出您所在的目录:pwd
在手册中查找命令:man command
要使文本文件可滚动:less file 1
或more file 1
不同类型的贝壳
伯恩·谢尔
顾名思义,《谍影重重》与间谍和高速汽车追逐毫无关系。Bourne shell 是第二个最常用的 Unix shell,由 Stephen Bourne 在 1979 年在贝尔实验室创建。和它的前身 Thompson shell 一样,Bourne 的可执行文件名是sh
。
Bourne shell 是 Solaris 操作系统的缺省 shell。尽管年代久远,Bourne shell 仍因其速度快、结构紧凑而广受欢迎。然而,Bourne shell 的交互性不是很好,并且不能调用它的command history.
,它也缺乏逻辑和算术表达式。
伯恩提示包括:
- 命令全路径:
/bin/sh
和/sbin/sh
- 非根用户默认:
$
- 根用户默认:
#
命令行
C shell,文件名csh
,和它的前身文件名tcsh
,是另一个 70 年代后期的 Unix shell。它是由比尔·乔伊创造的,他当时是加州大学伯克利分校的一名研究生。
与 Bourne shell 不同,C shell 是交互式的,可以识别command history
和aliases
。C shells 还包括类似 C 的表达式语法和内置算法。
命令行提示包括:
- 命令全路径:
/bin/csh
- 非根用户默认主机名:
%
- 根用户默认主机名:
#
科恩壳牌公司
KornShell,文件名ksh
,是由贝尔实验室的大卫·科恩在 20 世纪 80 年代早期开发的。KornShell 包含了 C shell 的许多特性,它是 Bourne shell 的超集,因此是向后兼容的。
科恩谢尔跑得比 C 壳快。它运行 Bourne shell 脚本,并具有类似 C 的数组、函数和字符串操作工具。此外,它还具有内置运算功能。
KornShell 提示包括:
- 命令全路径:
/bin/ksh
- 非超级用户默认值:$
- 根用户默认值:#
GNU Bourne-又一个 shell
GNU Bourne-Again 或 Bash shell 是 Bourne shell 的一个开源替代产品。它是由 Brian Fox 为 GNU 项目设计的,于 1989 年发布。它不仅与 Bourne shell 完全兼容,还吸收了 KornShells 和 C shells 的许多最佳特性。GNU Bourne-Again shell 已经自动映射了用于编辑和命令调用的箭头键。
GNU Bourne-Again 提示包括:
- 命令全路径:
/bin/bash
- 非 root 用户默认提示:
bash-x.xx$
- 根用户默认:
bash-x.xx#
shell 脚本做什么
这个类比有点简单,但是可以把 shell 脚本想象成程序员的自动填充。shell 使用单个脚本中的命令序列,而不是一次一个地在键盘上键入命令,用户可以在命令行中用简单的文件名启动这些脚本。Shell 脚本执行程序执行、文本换行和文件操作。
外壳脚本可以执行许多任务,包括监视磁盘使用、执行备份、创建命令工具、操作文件、运行程序、将程序链接在一起、完成批处理等任务。
壳牌的主要替代品
在 IBM 的 VM 操作系统中,它们被称为 EXEC 在 DOS 中,shell 脚本被称为批处理文件。不过,这些仍然是 shell 脚本。其他脚本语言,如 Javascript、Python、Perl 和 TCL 也是脚本语言。毫不奇怪,计算机专业人员都有他们的最爱,我们稍后将讨论 shells 的优缺点。
壳牌为什么这么受欢迎?
Shell 在几乎每个操作系统上都很常见,因为它们高效且易于更新。它监控你的电脑系统,并执行例行备份,你不必考虑它。
没有必要切换语法,因为 shell 的语法和命令与命令行中输入的是相同的。此外,编写 shell 脚本既简单又快捷:它们启动迅速,而且易于调试。
Shell 脚本的缺点是什么?
Shell 脚本可能容易出错,并且在出现问题时难以诊断。Shells 不是为复杂或大型任务设计的,它们执行起来很慢。此外,shells 不提供太多的数据结构,并且可能存在语法或设计缺陷。
壳牌是什么时候创立的?
第一个 shell 脚本是由麻省理工学院的计算机职员 Louis Pouzin 在 20 世纪 60 年代早期创建的。他的第一个命令行是RUNCOM
,它将计算机科学家从重复的任务中解放出来,如编译、更新、重命名和移动。
虽然 Pouzin 不是计算机语言专家,或者可能因为他不是,他相信命令行本身就是一种语言。
到 20 世纪 60 年代中期,Pouzin 与英国科学家 Christopher Strachey 合作。Strachey 设计了一个宏生成器,作为 Pouzin 命令语言的基础,运行在当时最先进的 Multics 操作系统上。
壳牌是如何得名的
Pouzin 将他的新语言命名为“shell ”,因为它是操作系统的最外层。
外壳特征
Shells 因为简洁而受到程序员的欢迎。然而,这并不意味着它们是基本的。外壳提供了几个特性,包括:
后台处理
shell 脚本的最大好处之一是它们可以在后台运行。根据命令的不同,shells 可以在前台或后台运行。前台进程在屏幕上可见,并且只能按顺序运行。
后台进程不会出现在屏幕上,可以不按顺序运行。要在后台运行 shell 脚本,用户只需在脚本末尾添加一个&符号。
通配符替换
通配符替换允许系统一次处理多个命令,或者从文本文件中查找短语片段。例如,*
告诉系统匹配任何字符串,甚至是空字符串。?
匹配单个字符,[example]
匹配任何字符(“example”只是一个例子),而[1-9]
(另一个例子)指示 shell 匹配范围内的字符。
命令别名
外壳别名是快捷命令。有些别名是一个单词,有些是一个字母。要查看别名列表,用户只需输入·alias
。
命令历史
shells 有很多方法可以节省时间和精力,但是一个特别方便的特性是它的命令历史。history
命令显示该会话期间使用的所有命令,而不是重新键入命令。
文件名替换
文件名替换也称为“全局替换”当一个单词包含诸如?
、*
或[
之类的字符,或者以~
开头时,shell 会将该单词视为一种模式,并替换为与该模式匹配的文件名的字母列表。
输入/输出重定向
输入/输出(i/o)重定向允许用户交换与显示屏、键盘或文件相关联的标准输入(stdin)和标准输出(stdout)。
平静的
壳管道是另一种重定向,它将命令/进程/程序的输出发送到另一个命令/进程/程序。这使得命令/过程/程序同时运行,并允许连续的数据传输,而不必通过显示屏或临时文本文件。
外壳变量替换
当 shell 遇到包含特殊字符的表达式时,它会将代码翻译成用户更容易识别的内容。这个过程被称为变量替换或简称为变量。
更有经验的程序员也使用变量。例如,如果程序员在执行程序之前不知道实际值,他们可以在代码准备好执行之前使用变量作为占位符。
贝壳是如何变化的
有两种主要的 shell,“shell”(sh)和“bash”。两者都在 Unix 操作系统中运行。Shell 是任何 shell 中脚本的通称。顾名思义,bash (Bourne 又叫 shell)是一个改进和扩展的 Shell。
Bash 使用升级来实现更多功能,支持作业控制,比 sh 更容易使用,并且支持命令历史。Sh 不支持命令历史记录;它的脚本可以在任何 shell 中运行,并且更具可移植性。
壳牌多年来的发展历程
这些年来,贝壳一直在进化,但基本保持不变。Bourne shell 比最初的 Thompson shell 向前迈进了一大步,但是许多最初的功能仍然存在。当然,计算机和我们的期望都变了。
有多少用户就有多少外壳;但从根本上说,有两种类型的 shells 命令行或 Bourne。其他的都是方言而不是不同的语言。
Unix shells
Unix shells 是最初的版本,现在仍然很强大。Unix shells 工作在 Unix 和 Unix 相关的操作系统上,比如 MAC。
命令行
命令行(csh)是最常见的 Unix shells。命令行擅长交互式工作,包括别名、cdpath、作业控制、路径散列、目录堆栈等。它们还提供编辑和历史功能。
Tenex 命令行
Tenex 命令行(tcsh)是由 Caregia Melo 大学的 Ken Greer 开发的。Tenex 被认为是对原始命令行版本的改进。与最初的 C 不同,Tenex 提供了命令行编辑和完成等功能。1981 年,tsch 与 csh 合并。
科恩炮弹公司
Korn shell(ksh)是另一种 Unix shell,但它是 C 和 Bourne shells 之间的一种折衷,向后兼容后者。Korn shell 是由贝尔实验室的 David Korn 在 20 世纪 80 年代早期开发的。
伯恩再次炮轰
Bourne Again shell (Bash)是一个开源的 Unix shell,由 Brian Fox 在 20 世纪 90 年代后期为 GNU 项目编写,作为 Bourne shell 的升级。
奇异的贝壳
虽然它们都是建立在 C 或 Bourne 外壳上,但程序员们已经设计了 100 种甚至 1000 种不同的方言。有些有用,有些纯粹是好玩。
谁用壳牌?
几乎所有使用计算机的人都从 shell 中受益,但它们尤其有益于系统管理员、开发人员、程序员和数据科学家。Shells 用于自动化任务和应用程序、安装包、备份或恢复数据,当然也用于编程。
外壳示例
外壳可以是基本的,也可以是复杂的,这取决于用户的意愿。例如,一个简单的 bash 问候语是echo “hello $USER”
,而复杂的 shell 脚本几乎是无限的。以下是一些基本的例子:
Example 1: Using a while loop in bash
Create a file in bash using a suitable editor. Here we use vi editor.$ vi example.sh
This opens an editor with a file named example.sh
Press the 'i' key to start inserting the code:
#!/bin/bash
valid=true
count=1
while [ $valid ]
do
echo $count
if [ $count -eq 10 ];
then
break
fi
((count++))
done
Press escape follwed by ':wq' to save and return to the terminal.
Execute by using bash example.sh
Example 2: Accepting inputs from the terminal by usersCreate another file in vi editor:
$vi example2.sh
Enter code in the editor:
#!/bin/bash
echo "Enter first number"
read x
echo "Enter second number"
read y
((sum=x+y))
echo "The result of addition = $sum"
Execute by using bash example2.sh
To learn more useful shell commands for data science, check out this tutorial on Useful Shell Commands.
壳牌的职业生涯
与其说是职业道路,不如把 shell 脚本看作是数据科学家武器库中的一个有用工具。各种类型的数据专业人员都需要知道多种语言(或者至少他们应该知道),shell 脚本可以帮助他们更有效地使用这些语言。
尽管如此,一些公司有一些角色特别需要 shell 脚本。平均工资在 7.8 万美元左右。也就是说,shell 脚本是像系统管理员这样的角色的组成部分,可以带来六位数的薪水。
结论
Shell 就像一个字符串,贯穿于每一种编程语言。复杂的命令可以简化为简洁直观的命令。对于任何数据科学家或计算机工程师来说,理解 shell 都是一项重要技能。在 DataCamp 的shell 简介课程中了解 Shell。
内核是操作系统最重要的部分。内核负责为计算机程序分配内存和时间,并管理通信和文件存储以响应系统调用。
外壳是内核和用户之间的接口。
我们已经知道 shell 是高效的,它会处理用户的许多无聊任务;但是除此之外,shells 允许用户定制脚本来满足自己的需求。
一个错误可能会造成巨大的损失,而且很难识别。另外,shells 在操作系统之间的移植性不是很好。
Linux 是由 Linus Torvalds 开发的 Unix 克隆。Linux 本身不是一个操作系统;它是一个内核。然而,Unix 包括内核、外壳和程序。
Bash 或 Bourne Again shell 是最常用的 shell,但是 Linux 和 Unix 都支持命令行、KornShells 和 TCSH。
在自然语言中,句法指的是单词和短语是如何排列的。Shell 语法非常相似;它指的是操作的顺序。
解释器将单个语句解释成机器代码。
编译器把高级程序翻译成更复杂的机器语言。
使用chmod+x script-name-here.sh
设置权限
然后,用./script-name-here.sh
或sh script-name-here.sh.
运行它
SQL 是用来做什么的?7 大 SQL 用法
原文:https://web.archive.org/web/20221212135909/https://www.datacamp.com/blog/what-is-sql-used-for
数据库介绍
数据库是以电子方式存储和访问的结构化信息的集合。它们使得公司提取、更新和分析内部数据变得容易,通常是通过使用 SQL 或类似的语言。
公司使用数据库主要是因为电子表格和文件不可伸缩。虽然它们可能适合不收集大量数据的小公司和初创公司,但它们只能存储有限的信息。
例如,一个 Excel 文件只能存储大约 100 万行数据,当用户试图对其执行复杂操作时,即使这样也会大大降低系统性能。相比之下,数据库可以在不到一分钟的时间内加载超过 1000 万行数据。
此外,数据库允许简单的数据操作、分析和聚集,这是电子表格或文本文件所不能做到的。
组织使用许多不同类型的数据库来存储内部数据,最流行的是关系数据库。
关系数据库存储数据点,数据点之间有预定义的关系,可以使用一种称为 SQL 的语言来访问。要全面了解关系数据库及其工作原理,请查看我们的课程。
什么是 SQL?
SQL(结构化查询语言)是一种用于在关系数据库中存储、检索和操作数据的标准语言。
它允许最终用户与数据库通信,并执行创建、更新和删除数据库等任务。几乎每个大中型组织都使用 SQL,包括脸书、微软、LinkedIn 和埃森哲。
事实上,SQL 在 2021 年被 StackOverflow 排名为最常用的数据库环境和第三受欢迎的编程语言。
SQL 是用来做什么的?
SQL 有许多用途,用于市场营销、医疗保健和金融领域的数据和业务分析、开发和数据科学。在这一节中,我们将进一步了解 SQL 的用途,以及需要员工掌握这种语言的工作类型。
使用 SQL 的行业
下面,我们挑选了一些使用 SQL 来实现一系列不同结果的主要领域。
1.SQL 在市场营销中的应用
营销团队通常会锁定客户,并根据组织收集的用户数据发布促销活动。
这些数据通常存储在大型数据库中,在营销人员使用之前必须进行查询。
以下是 SQL 在营销领域的应用示例:
安妮是一家电子商务公司的营销主管。每次用户与该公司的网站互动时,他们的数据都会被收集并自动存储在一个关系数据库中。数据库中存储了超过 150 万条用户数据记录。
收集的变量包括客户购买的商品、他们的性别、购买时间和唯一的用户 ID。
下面是她需要查询的数据库表的汇总视图:
从上表中,Anne 需要提取在 2021 年 8 月 25 日的大减价中购物的客户的所有详细信息。她想在下一季度开展的类似营销活动中重新锁定这些用户。
下面是一个简单的 SQL 查询,她可以在不到一分钟的时间内编写该查询来访问她需要的数据:
SELECT * FROM customer_data A WHERE CAST (A.Date AS Date) >= '2021-08-25';
该查询将从上面显示的表中返回以下结果:
上面的例子展示了 SQL 在提取相关信息分析业务数据中的作用。
由于营销过程越来越多地由数据驱动,因此营销人员学习基本的 SQL 是一个好主意,这样他们就可以在开展营销活动和锁定用户时做出明智的决策。
2.SQL 在金融中的应用
组织通常将财务数据存储在数据库中,因为它们高度安全且易于查询。财务专业人员可以提取这些数据来做出数据驱动的决策。
下面是一个财务团队如何使用 SQL 从数据库中查询相关信息的示例:
John 是一名财务专家,他分析季度销售数据以制定下一年的预测。他还需要确定销售额特别低的时期,以防止这种情况再次发生。
下面是 John 需要使用的名为“sales_data”的示例表:
这是一个简单的 SQL 查询,他可以编写这个查询来确定销售额低于平均水平的月份:
SELECT Month_of_Year, Sales FROM sales_data
WHERE Sales < (SELECT AVG(Sales) FROM sales_data);
他可以使用该查询的结果来确定销售模式,并使用它来创建来年的财务计划。
除了上面显示的用例之外,财务团队还可以使用 SQL 来确定收入和销售随时间变化的趋势。该语言可用于为决策者提供财务 KPI 的清晰视图,如公司的净收入和成本。
3.SQL 在医疗保健中的应用
SQL 通常用于操作和分析存储在临床数据库中的患者信息。例如,它可以用于构建用户健康数据仪表板,根据医疗专业人员的输入生成患者报告,甚至创建针对大型数据库(如新冠肺炎跟踪系统)的搜索。
下面是一个在医疗保健领域如何使用 SQL 的示例:
一个非营利慈善组织收集与一种在农村地区流行的致命疾病相关的数据。志愿者随后会前往感染人数最多的高风险地区注射疫苗,以遏制疾病的传播。
下面是该组织创建的五行示例数据库:
这是一个 SQL 查询,可以用来确定感染人数最多的前 10 个地区:
SELECT * from diseases
ORDER BY Cases DESC
LIMIT 10
虽然上面的查询很有用,但对于志愿者来说,每天运行它来查找高风险区域是低效的。相反,SQL 数据库可以连接到一个实时的仪表盘,直观显示不同地区的感染人数。
下面是一个新冠肺炎仪表板示例:
上面的用例向我们展示了 SQL 在许多领域都有应用。几乎每个行业都使用它来分析数据和推动业务增长。
因此,对于非技术专业人员来说,学习基本的 SQL 是值得的,这样他们就可以与数据库进行交互,并收集必要的信息来进行日常决策。
使用 SQL 的作业
现在我们知道了 SQL 在各种行业中的用途,让我们来看看一些利用它的能力的具体工作。
1.用于移动和 Web 开发的 SQL
开发人员在构建移动和 web 应用程序时使用 SQL。当您安装移动应用程序并创建用户名和密码时,这些信息会立即被转化为攻击者无法破译的代码,并使用 SQL 安全地存储在数据库中。
同样,当您与应用程序交互、订阅时事通讯或在线购物时,您的数据会被收集并存储在数据库中。
后端移动和应用程序开发人员需要熟练使用 SQL 来执行数据处理任务,并创建愉快的用户体验。
2.用于数据分析的 SQL
数据分析师是熟练的专业人员,他们识别数据的趋势,以帮助公司的决策过程。他们使用 SQL 进行数据提取和分析,以生成可操作的见解。
管理者和利益相关者使用数据分析师揭示的模式来做出决策,从而为组织增加商业价值。
数据分析师是世界上最受欢迎的专业人士之一。参加 SQL 职业道路中的数据分析师,立即开始向该领域过渡。
3.用于业务分析的 SQL
业务分析师确定组织中需要改进的领域,并提出建议来加强业务流程。
他们可以在不同的公司领域工作,如 IT 或员工发展,并需要根据可用的数据对这些部门的变化提出建议。
这意味着业务分析师不仅需要使用 SQL 收集和分析数据,还需要创建交互式仪表板,以便向上层管理人员展示他们的发现。
SQL 可以查询与 Tableau 和 PowerBI 等可视化工具实时连接的数据库,这使它成为业务分析师使用的理想语言。
如果您想成为一名业务分析师,或者已经是一名业务分析师,并且想要提高您的 SQL 技能,请查看我们的 SQL for Business Analysts 技能跟踪。
4.用于数据科学的 SQL
数据科学家构建预测模型并分析数据,以生成可操作的见解,从而获得商业价值。这些数据几乎总是存储在关系数据库中,并且必须使用 SQL 提取。
为什么要学数据科学的 SQL?
当大多数人想到数据科学时,他们的脑海中往往会跳转到预测分析和机器学习建模。然而,只有当你有必要的数据时,你才能建立机器学习模型。在现实世界中,这些数据很少会像在 Kaggle 上那样以一个干净、结构化的电子表格的形式交给你。
你需要访问公司的数据库,收集你需要的数据,并对其进行预处理,然后才能开始建立预测模型。如上所述,大多数公司将数据存储在关系数据库中,这意味着您需要了解 SQL 来实现这一点。
事实上,根据最近的一项研究,SQL 是几乎 65%的数据科学工作清单中的一项要求。这意味着,即使你懂 Python,如果你缺乏 SQL 技能,你也会错过大约五分之三的工作机会。
如果你仍然不相信,下面是 Meta 的数据科学家的工作描述,其中将 SQL 列为必备技能:
阅读我们的文章,了解如果你掌握了 SQL 语言,你能做什么。
如何学习数据科学的 SQL
如果您之前没有 SQL 知识,请参加我们的SQL 简介课程,了解该语言的基础知识。这个项目将教你数据组织,数据库中表格的结构,以及数据库构建的原则。您将学习从数据库中选择数据并执行基本的数据操作。
一旦你学会了 SQL 的基础知识,参加中级 SQL 课程,学习使用 SQL 进行数据分析。本课程涵盖数据过滤、排序、分组和聚合函数等概念。这些操作将教会你在大量数据中发现洞见和识别趋势。
然后,参加 SQL 中的联接数据课程,学习如何组合两个或多个数据库表。这可以说是数据科学家日常使用的最重要的 SQL 查询类型之一。
接下来上 SQL 中的数据操作,学习子查询、窗口函数等更高级的 SQL 函数。
以上课程应该会让你对 SQL 有很强的掌握。在这些课程中学到的概念将帮助您准备 SQL 数据科学面试问题。
然而,要真正精通一门语言并在现实世界中使用它,你需要应用你所获得的知识。
参加将 SQL 应用于现实世界问题计划,学习使用 SQL 解决业务问题。您在参加课程时写下的问题可以包含在您的数据科学文件夹中,这将增加您在该领域获得工作的机会。
是的,SQL 是一种编程语言,因为它是图灵完全的。简而言之,如果有足够的时间和内存,图灵完备的语言应该能够解决任何计算问题。
然而,与 Java 和 Python 等编程语言不同,SQL 只能与数据库进行交互。它不能用于可视化数据、读取文件和构建 web 应用程序。因此,SQL 被称为特定领域编程语言。
阅读我们的文章,了解更多关于 SQL 是否是编程语言的信息。
数据科学面试通常评估候选人的主题,如连接、在数据库表中查找重复项、索引函数、窗口函数、分组和子查询。所有这些概念都包含在 Datacamp 的 SQL 基础知识职业轨迹中。
大多数公司会给你提供一个样本数据集和一个业务问题。然后,您需要使用 SQL 函数的组合来编写一个查询,以解决手边的用例。要练习编写解决现实问题的查询,请参加 Datacamp 指导的 SQL 项目。
是的,用 SQL 建立机器学习模型是可能的。 谷歌云平台 (GCP),一项流行的云计算服务,最近发布了一项服务,允许用户在谷歌 BigQuery 中运行 SQL 查询。
BigQuery 是组织用来存储和管理大量数据的无服务器数据仓库。BigQuery 中的数据以结构化的关系数据库的形式存储。
BigQuery ML 允许用户使用 SQL 直接在 BigQuery 中建立机器学习模型。它支持线性回归、逻辑回归、XGBoost、K 均值聚类、ARIMA 和神经网络等算法。
要了解更多关于像 GCP 这样的云计算服务及其工作方式,请参加 Datacamp 上的 了解云计算 课程。
成熟的数据基础设施是什么样的
数据驱动的数字化转型的现状
随着组织在新冠肺炎疫情中经历加速的数字化转型,利用数据、机器学习和分析的案例变得前所未有的重要。
2020 年麦肯锡关于人工智能状态的全球调查报告称,50%的企业已经在至少一项业务职能中采用了人工智能,22%的组织将至少 5%的息税前收入归功于人工智能计划。
然而,为了大规模释放数据和人工智能的价值,组织必须民主化他们的数据,并释放组织范围内的数据流畅性。实现这一点的方法之一是提供跨团队和技能级别的可信且可操作的数据访问,以便每个人都可以做出基于数据的业务决策。
处于数据民主化核心的数据基础设施
在实现数据流畅之前,组织需要做好基础工作。首先要了解数据如何在组织中流动,然后构建一个有组织的统一数据基础架构。
在关于 2021 年数据趋势和预测的网络研讨会上,DataCamp 产品研究副总裁 Ramnath Vaidyanathan 描述了数据通常如何在组织中流动。这一流程需要数据工程工具来接收原始数据,摄取和转换它们,将它们存储在一个集中的位置,并以仪表板和报告、机器学习输出等形式生成数据洞察。
在组织内扩展数据访问在很大程度上取决于可靠的数据基础架构的存在和最新数据基础架构工具的使用,这使组织能够将原始数据转换为可访问的、有价值的数据洞察。
数据基础设施工具的现状
数据基础设施和工具的重要性从数据基础设施市场的快速增长和演变中可见一斑。许多解决方案旨在简化与组织数据基础设施的特定元素的工作,这导致了工具越来越分散,难以驾驭。
以下由 Dataiku 创建的视觉效果恰当地说明了数据基础设施市场如何被细分为众多细分类别,每个细分类别中的竞争解决方案越来越多。
来源:大台库
数据基础设施工具的未来
去年年底,Andreessen Horowitz 试图通过开发一个统一的架构框架来澄清这种令人困惑的数据基础架构格局。随着越来越多的人需要处理大量的数据和过多的可用解决方案,该框架在现代化、映射和构建组织的数据堆栈时提供了实用的参考。
来源:安德森·霍洛维茨
随着这一空间和趋势的发展,我们将看到数据基础架构堆栈中各种工具的整合和标准化。此外,云的采用、数据发现工具和集中式数据治理平台将使组织能够跨团队和职能部门提供可扩展的数据访问。
那么,理想的未来数据基础设施能提供什么呢?据世界银行数据工程师、圣地亚哥市前 CDO 马克西姆·佩切尔斯基称,数据必须是 收集的、可发现的、可靠的、可理解的、合规的、 和 可操作的 。最终,我们的目标是让数据变得可用和可信,这反过来又会推动整个组织的数据流畅度。
成熟的数据基础设施包括云采用、数据发现工具和集中式数据治理平台
随着数据基础设施工具在 2021 年及以后围绕数据民主化逐渐成熟,以下技术的采用和发展也将随之成熟:
1.云采用
云技术的使用正在成为常态,尤其是在我们在 2020 年看到的加速数据驱动的数字化转型之后。
除了改进数据存储和访问,云解决方案还提供了许多用户友好的产品,用于收集、吸收、转换、存储数据和从数据中创建见解。
云平台领域有许多提供商,其中一个关键的参与者是亚马逊网络服务 (AWS),它拥有100 多种产品,使企业能够以高速、大规模和低成本充分利用他们的数据。
2.数据发现工具
随着数据表、报告和模型被添加到组织数据环境中,扩展数据基础设施将变得至关重要。利益相关者必须能够随时找到可靠的、可理解的、合规的、可操作的数据和见解,以完成他们的最佳工作。
为了应对这一挑战,(也称为元数据管理工具或数据目录)可以作为组织内这些数据宝库的通用搜索引擎。元数据本质上是指描述特定数据的一组数据,对于索引各种可用数据非常有用。
Lyft 开源了他们自己的数据发现工具 Amundsen ,以提供元数据引擎解决方案,旨在帮助组织发现、理解、共享和信任他们用于分析的数据。这种能力对于任何希望扩展其数据能力的组织来说都是至关重要的。
3.集中式数据治理平台
如前所述,建立对数据的信任对于推动数据民主化至关重要。这就是数据治理发挥重要作用的地方。随着数据量和数据种类的不断增长,对数据质量、一致性和相关性的集中监管至关重要。
像 Collibra 和 Alation 这样的公司提供的集中式数据治理平台服务可以帮助组织有效地管理其数据的可用性、一致性和完整性。这就允许所有的利益相关者从一个可靠的单一的事实来源来工作。
成熟的数据基础设施只是我们预测的 2021 年及以后的数据趋势之一。如需了解更多信息,请下载我们关于 2021 年数据趋势和预测的白皮书:数据流畅之年或观看我们的网络研讨会。
通过 DataCamp 成为认证数据科学家后要做什么
恭喜你!您已经参加了课程,完成了定时评估,撰写了案例研究,并完成了演示。现在,在你屏幕前的是来自 DataCamp 的邮件。"恭喜你,你现在已经被 DataCamp 认证为专业数据科学家了!"
下面是接下来要做的事情!
1.在 LinkedIn 上分享你的数据科学证书
DataCamp 使在 LinkedIn 上分享你的数据科学证书变得非常容易——只需跟随你的电子邮件中提供的链接。在你的个人认证页面上,你可以通过点击你选择的社交图标来分享你的成就。
2.庆祝
你做到了!在 DataCamp 上获得数据科学认证是一项巨大的成就,所以给自己一些时间做自己喜欢的事情,无论是在镇上度过的夜晚,还是在网飞和你的沙发上!
3.联系我们的职业服务团队
所有经过认证的数据科学家都可以使用,这可以被认为是一个持续的步骤。他们可以在这份清单的许多后续步骤中帮助你,包括为你提供简历和求职信的建议,以及举行模拟面试。
4.制定广泛的数据科学职业规划
在你开始寻找你梦想中的数据科学工作之前,你应该首先考虑你想走的方向。数据科学被用于许多行业,包括医疗保健和金融。作为一名数据科学家,对你将从事的基础领域的理解和欣赏在与非技术同事沟通等问题上有很大帮助(还记得认证流程的那一部分吗?)并对你的工作充满热情。
5.刷刷你的简历
你的简历是潜在雇主会阅读的主要内容,许多人会略读。有一份令人信服的简历和/或一些要点,在显眼的地方突出你简历的某些部分,并在清晰标注的部分提供关于你的教育、技能和经验的进一步细节。
6.擅长写求职信
一封好的求职信可能会决定你能否得到一份数据科学家的工作。求职信不应该被认为是对你简历的改写,而是解释为什么这个特殊的角色对你和你来说是理想的。
7.上玻璃门
Glassdoor 最出名的有两件事:面试问题和员工评论。关于第一个问题,知道在数据科学面试中你会被问到什么样的问题可以帮助你平静下来,并准备一些样本答案。员工评论可以让你知道你申请的公司内部存在什么样的工作环境,Glassdoor 将这些匿名化,以提供更大的真实性。不过,提醒一句:不满意的员工比满意的员工更有可能留下差评,所以请记住这一点。
8.安排一次模拟数据科学面试
为了能够推销自己,你需要准备好回答可能需要更多思考或者可能更令人惊讶的问题。面试本身就是一种技能,你在面试中得到的练习越多,你就会做得越好。第一次就答对是极其罕见的,所以模拟面试是给自己一个练习机会的好方法。此外,你将保证事后得到详细的反馈,这将有助于你找出面试技巧中需要改进的地方。
9.建立一个你想申请的数据科学工作的列表
花些时间浏览一下你有足够资格胜任的工作,并把它们列出来,无论是把它们保存到你正在搜索的平台上(例如,LinkedIn 允许这样做),还是把它们添加到电子表格中。
10.申请这些数据科学工作
这个步骤因清单而异。每个列表至少需要您的详细联系信息和一份简历。有些还需要一封求职信或一份完整的申请表。在这个阶段留下良好的第一印象,你可能会被邀请参加数据科学面试。如果你被拒绝了,不要太往心里去——你在申请和面试中得到的练习越多,你就会做得越好。还应该说,数据科学技能的需求量很大,因此通过获得认证,您已经为自己做好了准备!
祝你好运!
常见问题:“数据科学认证和成就声明之间有什么区别?”
数据科学认证仅面向通过认证流程的学员,而完成 DataCamp 课程的每个人都将获得一份成绩声明。由于认证不提供答案或提示,而且是有时间限制的,所以它是为那些已经完成了相当多课程的人设计的。
DataCamp 也有专门帮助你准备面试的课程:点击此处查看!
我们所知道的关于 GPT 4 号的一切
原文:https://web.archive.org/web/20221210075939/https://www.datacamp.com/blog/what-we-know-gpt4
我们生活在一个非常时期,你可以看到一种新型模式的推出,这种模式完全改变了人工智能领域。2022 年 7 月,OpenAI 推出了最先进的文本到图像模型 DALLE2 。几周后,稳定下来。AI 推出了 DALLE-2 的开源版本,名为稳定扩散。这两种模型都很受欢迎,并且在质量和理解提示的能力方面都显示出了良好的效果。
最近,OpenAI 推出了一款名为 Whisper 的自动语音识别(ASR)模型。就稳健性和准确性而言,它胜过所有其他模型。
从趋势来看,我们可以假设 OpenAI 将在未来几个月内发射 GPT 4 号。市场对大型语言模型有很高的需求,GPT-3 的流行已经证明,人们期待 GPT-4 有更好的准确性、计算优化、更低的偏差和更高的安全性。
尽管 OpenAI 对发射或功能保持沉默,但在这篇文章中,我们将根据 AI 趋势和 OpenAI 提供的信息,对 GPT-4 进行一些假设和预测。此外,我们将学习大型语言模型及其应用。
什么是 GPT?
生成式预训练转换器(GPT)是一种基于互联网上可用数据训练的文本生成深度学习模型。它用于问答、文本摘要、机器翻译、分类、代码生成和对话人工智能。
你可以通过参加 Python 技能追踪中的深度学习来学习如何建立你的深度学习模型。您将探索深度学习的基础,了解 Tensorflow 和 Keras 框架,并使用 Keras 构建多个输入和输出模型。
GPT 模型有无穷无尽的应用,你甚至可以根据特定的数据对它们进行微调,以创造更好的结果。通过使用变压器,您将节省计算、时间和其他资源的成本。
在 GPT 之前
在 GPT-1 之前,大多数自然语言处理(NLP)模型被训练用于特定的任务,如分类、翻译等。他们都在使用监督学习。这种类型的学习有两个问题:缺少带注释的数据和不能概括任务。
GPT 一号
变压器架构| GPT-1 论文
GPT-1 (117M 参数)论文(通过生成性预训练提高语言理解)发表于 2018 年。它提出了一个生成语言模型,该模型基于未标记的数据进行训练,并针对特定的下游任务(如分类和情感分析)进行微调。
GPT-2
不同任务上的模型性能| GPT 新协议论文
GPT-2 (1.5B 参数)论文(语言模型是无监督的多任务学习者)发表于 2019 年。它在具有更多模型参数的更大数据集上进行训练,以建立更强大的语言模型。GPT-2 使用任务调节、零射击学习和零短任务转移来提高模型性能。
GPT-3
三个开放领域问答任务的结果| GPT 新协议论文
GPT-3 (175B 参数)论文(语言模型是很少出手的学习者)发表于 2020 年。该模型的参数比 GPT-2 多 100 倍。它在一个更大的数据集上进行训练,以在下游任务中取得良好的结果。它以类似人类的故事写作、SQL 查询和 Python 脚本、语言翻译和摘要震惊了世界。它使用上下文学习、少量拍摄、一次拍摄和零拍摄设置实现了最先进的结果。
你可以在另一篇文章中了解更多关于 GPT-3 的信息,它的用途,以及如何开始使用它。
GPT-4 有什么新消息?
在 AC10 online meetup 的问答环节中,OpenAI 的首席执行官山姆·奥特曼(Sam Altman)证实了关于推出 GPT-4 模型的传言。在本节中,我们将使用该信息并将其与当前趋势相结合,以预测模型大小、最佳参数和计算、多模态性、稀疏性和性能。
模型尺寸
根据奥特曼的说法,GPT 4 号不会比 GPT 3 号大多少。所以,我们可以假设它将有大约 175B-280B 个参数,类似于 Deepmind 的语言模型 Gopher 。
大型模型威震天 NLG 比拥有 530B 参数的 GPT-3 大三倍,在性能上没有超过。之后推出的较小型号达到了更高的性能水平。简单来说,尺寸大并不意味着性能更高。
奥特曼表示,他们正专注于让更小的型号表现更好。大型语言模型需要大型数据集、大量计算资源和复杂的实现。对于各种公司来说,即使部署大型模型也变得不划算。
最佳参数化
大型模型大多优化不足。训练模型的成本很高,公司必须在准确性和成本之间进行权衡。例如,尽管有错误,GPT-3 只训练了一次。由于负担不起成本,研究人员无法进行超参数优化。
微软和 OpenAI 已经证明,如果他们在最佳超参数上训练 GPT-3,它可以得到改善。在调查结果中,他们发现具有优化超参数的 6.7B GPT-3 模型与 13B GPT-3 模型一样提高了性能。
他们发现了新的参数化(μP ),即较小模型的最佳超参数与具有相同架构的较大模型的最佳超参数相同。它允许研究人员以很小的成本优化大型模型。
最佳计算
DeepMind 最近发现,训练令牌的数量和大小一样会影响模型性能。他们已经通过训练龙猫 70B 模型证明了这一点,这个模型比地鼠小 4 倍,比自 GPT 3 号以来的大型语言模型多 4 倍的数据
我们可以有把握地假设,对于计算优化模型,OpenAI 将增加 5 万亿个训练令牌。这意味着训练模型并达到最小损失将需要比 GPT-3 多 10-20 倍的 FLOPs。
GPT-4 将是一个纯文本模型
在问答过程中,奥特曼说,GPT-4 不会像 DALL-E 那样是多模态的。它将是一个纯文本模型。
这是为什么呢?与只使用语言或视觉相比,好的多模态是很难建立的。结合文本和视觉信息是一项具有挑战性的任务。这也意味着它们必须提供比 GPT-3 和 DALL-E-2 更好的性能。
所以,我们不会期待 GPT-4 会有什么新奇的东西。
稀少
稀疏模型使用条件计算来降低计算成本。该模型可以轻松扩展到超过 1 万亿个参数,而不会导致高昂的计算成本。它将帮助我们在较低的资源上训练大型语言模型。
但是 GPT 4 号不会使用稀疏模型。为什么?在过去,OpenAI 一直依赖于密集的语言模型,他们不会增加模型的大小。
人工智能对齐
GPT-4 将比 GPT-3 更加一致。OpenAI 正在与 AI 对齐进行斗争。他们希望语言模型遵循我们的意图,坚持我们的价值观。
他们已经通过训练指导迈出了第一步。这是一个 GPT-3 模型,根据人类的反馈进行训练,以遵循指令。该模型被人类法官认为比 GPT-3 更好。不考虑语言基准。
GPT-4 的发布日期
GPT-4 的发布日期仍未确定,我们可以假设该公司正在更多地关注其他技术,如文本到图像和语音识别。所以,你可能会在明年或者下个月看到它。我们不能确定。我们可以肯定的是,下一个版本将解决旧版本的问题,并呈现更好的结果。
结论
GPT-4 将是一个纯文本的大型语言模型,在与 GPT-3 类似的规模上具有更好的性能。它也将更符合人类的命令和价值观。
你可能会在 GPT-4 上听到相互矛盾的消息,它包含 100 万亿个参数,并且只关注代码生成。但在这一点上它们都是推测。还有很多我们不知道的,OpenAI 还没有透露任何关于发布日期、模型架构、大小和数据集的具体信息。
就像 GPT-3 一样,GPT-4 将用于各种语言应用,如代码生成、文本摘要、语言翻译、分类、聊天机器人和语法纠正。新版本的模型将更安全,更少偏见,更准确,更一致。它还将具有成本效益和稳健性。
你可以阅读 GPT-3 和下一代人工智能驱动的服务来了解更多关于 GPT-3 的应用。
参考
- GPT 模特解释道。开 AI 的 GPT-1,GPT-2,GPT-3
- GPT 4 号即将到来。以下是我们所知道的|作者阿尔贝托·罗梅罗
我们从教授 100 万人数据科学中学到了什么
在实践中学习数据科学
DataCamp 的目标是为数据科学建立最好的学习平台。我们的理念是通过实践来学习数据科学:我们的高质量视频、浏览器内编码和游戏化为学习者在浏览器中提供引人入胜的学习体验。同时,我们希望对我们的产品采用数据驱动的方法,并与世界分享关于学习数据科学的见解。这篇文章将深入了解 DataCamp 的幕后,并分享一些对数据科学学习过程的见解。
定性课程创建和维护
课程主题
DataCamp 团队总是在寻找最令人兴奋的主题来构建课程,通常在有这么多新进展和令人兴奋的主题的情况下决定一个主题并不容易!这就是为什么我们试图让这个过程尽可能由数据驱动:除了查看行业中最需要的数据科学主题和编程语言的最新趋势,DataCamp 还联系其教师网络,这些教师是行业专家和学者,以了解他们对下一步应该成为课程的一部分以及这样的课程应该是什么样子的意见。
但是,最终,学习者是 DataCamp 的核心,这也是我们积极让用户参与课程主题选择过程的原因:我们与用户进行访谈,并要求他们填写调查,以发现我们学习者的需求。然后将这些数据与专家的意见放在一起,不仅确定课程的主题,还确定课程将涵盖的内容:这样,所有与学习者相关的材料都将包含在课程中。
此外,我们还收集用户在网站搜索栏中填写的术语。在 R 的帮助下,这些术语在内部得到分析、排名和可视化,以便 DataCamp 的课程开发团队可以以此为起点,制定未来几个月的课程。
点击查看 DataCamp 的完整课程库。
学习困难和持续的课程改进
Beta 测试
在课程上线之前,DataCamp 首先将课程发送给一个较小的用户群,并要求他们做笔记,并以包含许多开放式问题的调查形式给出反馈。这允许我们在向我们的整个用户群发送消息说一个新的课程开始之前对课程做一些最后的调整。
提示和解决方案
确定课程主题和让一个小组测试即将推出的课程是一回事,但当课程上线时,DataCamp 还会关注学习者在课程中遇到的困难。
例如,您是否知道,每当您请求提示或解决方案时,DataCamp 都会收集这些数据,以确定用户请求练习提示或解决方案的次数?这些数据和我们从中收集的见解被用来改进我们的课程!
我们查看数字,看看我们的课程可以改进的地方:每当问了太多的提示或解决方案,我们可以很容易地找到问题,并确保练习得到改进。如何改进这些练习是通过我们从用户那里获得的反馈来完成的:例如,对许多用户来说很麻烦的一个练习是 Kaggle 课程中的一个练习,在这个练习中,用户需要用 r 构建一个决策树。最初,练习说明中只有一个非常通用的例子,说明如何构建决策树,这导致了练习中需要大量的提示和解决方案。根据用户的反馈,DataCamp 团队扩展了说明列表,并增加了三个子要点来解释如何定义每个参数。在这样做的过程中,用户所期望的任务更加清晰和实用,这使得提示率下降到 15%,这在给定难度水平的情况下更加合理。当然,像这样的经验和改进有助于我们构建将出现在 DataCamp 的数据科学课程中的未来课程。
另一方面,我们看到一些课程,如“R 导论”显然比“R 统计学导论:多元回归”给用户带来的问题更少,因为用户要求的提示和解决方案更少。这部分是因为入门材料非常全面,而更高级的课程让您有更多的自由来自己发现材料:当您浏览 DataCamp 的课程时,边做边学变得更加明显!课程改进过程肯定需要在边做边学和给予学习者所需的支持之间保持平衡。
个性化反馈
除了提示和解决方案,您已经简要了解了 DataCamp 提供的个性化反馈功能,以及每门课程的编码挑战。反馈是以这样一种方式建立起来的,你可以先询问提示,然后作为最后的手段,去寻找解决方案。不鼓励后一种选择,因为当用户采用这种解决方案时,会对 XP 产生影响。这迫使学生自己开始,并对需要编码什么来完成编码挑战向他们提出的任务发展直觉。另一个好处是,反馈消息是以这样一种方式构建的,用户应该立即知道代码有什么问题,而不是必须查看起初可能没有意义的错误消息。这也是一种刺激我们的学生理解代码的方式,尤其是他们做错了什么。这最终加强了数据科学的学习过程。
提供这种个性化的反馈并不是一件容易的事情:当 DataCamp 开始时,反馈系统仍处于起步阶段,这导致反馈过于一般化。多年来,很明显,我们的用户带着不同的背景和不同的目标来到 DataCamp,这需要个性化的方法。因此,反馈系统已经有了巨大的改进,而且还在继续改进,这要归功于我们从用户那里获得的意见:用户在课程中遇到的所有问题都被记录下来,并用于我们课程和反馈系统的持续改进。
花在锻炼上的时间
除了跟踪每门课程要求的提示和解决方案的数量,Datacamp 还在更精细的层面上跟踪学习者如何完成练习:我们的学生在某个练习上花费的时间被跟踪和分析,以发现学生在平台上的学习体验中的问题。由于 DataCamp 希望确保学习者以健康的进度学习内容,因此我们也将这些信息考虑在内,以不断提高 DataCamp 课程的质量。
课程评级
除了跟踪练习难度和用户在练习上花费的时间,并使用这些信息来改进我们的课程创建流程,DataCamp 还跟踪用户喜欢的课程,以便我们制作他们继续感兴趣的新课程。我们的用户普遍不太喜欢的主题是统计、数据操作和数据可视化,而入门编程课程、机器学习和项目/案例研究则很受 DataCamp 用户的欢迎。
除了用户询问的提示或解决方案的数量之外,这些评级让我们很好地了解了哪些课程可能需要额外的爱。
结构
作为一名专业人士或刚刚开始职业生涯的人,时间是有限的,也是有代价的。这就是为什么我们的课程列出了学习者在考虑学习特定课程时应该理想地满足的先决条件。以 DataCamp 的 Python 数据科学工具箱课程为例:
先决条件被清楚地列出,以便用户在开始一门课程之前知道他们需要什么知识和技能。
此外,DataCamp 已经将其课程分成更小的章节甚至更小的块,其中视频和交互式编码挑战与反馈交替进行。事实证明,这种结构对学习数据科学的学习者很有用,这不仅是因为课程存在多样性,而且是因为学习者应该以健康的速度快速取得进步,这是保持学生积极性和参与内容的最佳方式之一:他们不太可能辍学,更倾向于继续学习课程。
连接
在向数据科学学习者教授数据科学时,界面是最重要的组件之一:从一开始,DataCamp 就制作了一个界面,确保学生可以在自己的浏览器中舒适地编写代码,而无需事先在本地安装 RStudio 或 Python。这一点,加上视频和个性化的反馈,使得初学者的障碍小了很多,学习体验也更成功了。
然而,这些年来,界面发生了一些变化,使其比最初更具互动性:在当前的界面中,学习者可以更容易地浏览课程,当他们发现课程的技术问题时联系支持,并且更清楚地知道他们通过完成某个练习可以获得多少 XP。
| | |
轨道
所有数据科学学习者和教师都知道,找到在质量、参与度、学习风格等方面符合您需求的数据科学(系列)课程是一项挑战……在所有这些方面,很容易迷失您的最初目标和学习目的。更具体地说,大多数学习者都是希望进入数据科学行业的专业人士,因此都有特定的职业目标。或者他们已经在数据科学行业工作,但正在寻找一种方法来更加精通某个数据科学主题或技能。
| | |
这就是为什么 DataCamp 最近创建了 tracks,它提供了一种结构化的方法来学习您可能已经知道的 DataCamp 课程:这样,您就可以以结构化的方式专注于加强您的数据科学技能,或者朝着您一直梦想的职业目标努力。
结合您之前阅读的关于我们的课程创建流程和 DataCamp 用户本身的内容,您会发现这些课程还可以帮助数据科学学习者以更有针对性的方式解决他们觉得困难的数据科学主题,以便他们可以快速提高和应对学习曲线。
去看看所有 DataCamp 曲目这里。
日常实践
通过制作定性课程和设计让我们的用户保持专注的路线来解决学习曲线是一回事,但学习数据科学仍然是一个相当大的挑战。在 DataCamp,我们希望确保我们的用户每天都能学习,让我们面对现实吧,你需要每天都忙于数据科学(即使只是一点点!).学习者经常面临的唯一问题是,很难跟上你积累的所有知识。这就是为什么 DataCamp 提供了一个每日练习功能来帮助您了解您已经熟知的知识以及您可能想要更新的技能。
这个系统很简单:当你进入练习模式时,你会得到一些挑战,帮助你练习你在已经完成的课程中看到的内容。这些挑战实际上是五个不同形式的练习(多项选择、填写……),它们将帮助您记忆课程内容,以便您更好地记住您所学的内容。当你正确回答这五个挑战时,你将获得 250 点经验值。当然,你每天都有一系列不同的锻炼。你可以在你的仪表盘上找到日常练习模式!
结论
DataCamp 正在重塑数据科学学习和评估,这只是我们将数据科学教育研究与最新技术和数据科学本身相结合以推动最先进发展的众多方式之一。
如果你对数据科学教育感兴趣,你应该加入我们,打造学习数据科学的最佳场所!看看我们的职位空缺。
Python 3.11 的新特性是什么?你是否应该为它费心?
在过去的四年里,Python 三次获得 TIOBE“年度语言”奖。到 2022 年中期,这种流行的编程语言仍然在 TIOBE 指数上名列前茅。
Python 位于 2022 年 6 月 TIOBE 指数的顶端。
Python 的评分为 12.74%,这意味着在所有与编程相关的搜索引擎查询中,约有 13%会出现关键词“Python”。换句话说,网上每 7、8 道编程题就有一道是关于 Python 的。
今天,Python 经常与数据科学和人工智能的最大突破联系在一起。从业者欣赏它的简单性,它的大量内置和第三方库用于多种任务,以及它的社区。
随着 3.11 的最终稳定版本于 2022 年 10 月 3 日发布,Python 社区可以期待各种受欢迎的更新,包括显著的速度提升、更好的错误处理和调试,以及对标准库的大量生活质量改进。
Python 3.11 有哪些新特性?
Python 3.11 changelog 包含了几乎无穷无尽的错误修复、改进和补充,其中大部分你可能都不会注意到。然而,当稳定版本发布时,一些关键的新特性可能会极大地改进您的 Python 工作流。这些新功能概述如下。
1.速度提高
令数据科学家兴奋的第一个重大变化是速度的提高——与 3.10 相比,标准基准测试套件的运行速度快了约 25%。Python 文档声称 3.11 在某些情况下可以快 60%。下面是如何自己执行基准测试,以测试自己的速度改进。
为了比较 Python 3.10 和 3.11 的速度,你需要一个 Docker 安装。在确保 Docker desktop 正在运行之后,在终端中运行这两个命令,这将为两个版本的 Python 下载两个映像。
$ docker run -d python:3.10.4-bullseye
$ docker run -d python:3.11-rc-bullseye
下载的图像应该可以在你的 Docker 仪表板上看到,你也可以在那里启动它们。
启动容器后,可以运行 docker ps 来查看容器 ID、图像、状态等细节。
正在运行的容器也可以在您的控制面板中的容器选项卡下看到,在这里您还可以找到“Run/Stop
”旁边的 CLI 按钮。单击这两个容器的按钮可以启动附加到容器的两个终端选项卡。
在两个选项卡中,通过pip
安装pyperformance
包。然后,在每个集装箱码头运行以下命令。
对于 Python 3.10
$ pyperformance run -r -o py310.json
对于 Python 3.11
$ pyperformance run -r -o py310.jsone run -r -o py311.json
这些命令将对标准库中大约 60 个 Python 函数进行基准测试,并生成 JSON 元数据。我可选地添加了-r
标签来告诉pyperformance
我希望测试更加严格,这需要更多的时间。在我的例子中,两个容器都运行在配有 AMD 锐龙 12 核 CPU 的 Windows 机器上。
现在,我们在两个容器中有两个 JSON 文件,我们需要将这两个文件放在一个目录中以继续速度测试。为此,我们将使用docker cp
命令将 JSON 文件从 Python 3.11 容器复制到 3.10。
在单独的终端选项卡中运行以下命令,更新路径以反映您计算机上的正确路径:
$ docker cp crazy_snyder:/py311.json C:/Users/bex/Desktop
$ docker cp C:/Users/bex/Desktop/py311.json charming_proskuriakova:/
在我的例子中,crazy_snyder
和charming_proskuriakova
是运行容器的 id。现在两个 JSON 文件都在 Python 3.10 容器中。要完成基准测试并将结果保存为 CSV 文件,请运行以下命令。
$ pyperformance compare py310.json py311.json --csv comparison.csv
$ docker cp charming_proskuriakova:/comparison.csv C:/Users/bex/Desktop/articles
最后,让我们将 CSV 加载到 Pandas 中并进行分析:
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
df = pd.read_csv("data/comparison.csv")
df.rename({"Base": "py310", "Changed": "py311", "Benchmark": "function"},
axis=1,
inplace=True)
>>> df.shape
(59, 3)
>>> df.sample(5)
| | 功能 | py310 | py311 |
| 40 | scimark_monte_carlo
| 0.12392 | 0.08052 |
| 19 | mako
| 0.01967 | 0.01289 |
| 1 | chameleon
| 0.01131 | 0.00843 |
| 8 | float
| 0.14265 | 0.09133 |
| 35 | regex_effbot
| 0.00315 | 0.00261 |
数据帧中的每一行都记录了两个版本运行给定 Python 函数所花费的时间(以毫秒为单位)。让我们绘制一个加速直方图。
df["speed_up"] = (df["py310"] / df["py311"]).round(3)
fig, ax = plt.subplots()
sns.histplot(df["speed_up"], bins=11)
ax.set(xlabel="Speedup (times)",
title="Python 3.10 vs. Python 3.11 - speedup comparison")
plt.show()
从图中可以清楚地看出,Python 3.11 中的大多数函数大约快了 1.2 倍(20%)。我们也可以用平均值和中位数来确认估计值。
>>> df["speed_up"].mean()
1.2605593220338982
>>> df["speed_up"].median()
1.207
似乎有一个案例,速度增加超过 60%。
>>> df["speed_up"].max()
1.899
还有四种情况下 Python 3.10 比新版本快。
>>> (df["speed_up"] <= 1).sum()
4
虽然理论上性能的提高是显而易见的,但改进的具体影响将因人而异,Python 3.11 的稳定的最终版本尚未发布。基准测试使用纯 Python 函数,您在日常工作中可能不会经常使用,但是为 Python 3.10 和 3.11 设置 Docker 安装将允许您了解特定用例的速度提升。
2.更好的错误消息
Python 3.11 的另一个令人兴奋的特性是更好的错误消息传递,可以精确定位错误的位置。Python 3.11 指出了导致错误的确切表达式,而不是返回一个以难以解释的错误消息结尾的 100 行回溯。
在上面的例子中,Python 解释器指向了导致脚本崩溃的 x,因为它的值为 None。该错误在当前版本的 Python 中是不明确的,因为有两个带有“x”属性的对象。但是 3.11 的错误处理明确指出了有问题的表述。
这个例子展示了 3.11 如何从一个深度嵌套的字典中找出一个错误,并且可以清楚地显示这个错误属于哪个键。
您可以在复杂的算术表达式中看到相同的精度。
更新的错误消息绝对是一个受欢迎的补充,尤其是对于那些努力调试脚本的数据科学家来说。
3.异常注释
“显性比隐性好。”
上面这句话是Python 的禅的第二行,列举了 Python 的 20 条设计原则。这一条代表了 Python 代码应该尽可能有表现力的规则。
为了加强这种设计模式,Python 3.11 引入了异常注释( PEP 678 )。现在,在 except 子句中,可以调用add_note()
函数,并在出现错误时传递自定义消息。
import math
try:
math.sqrt(-1)
except ValueError as e:
e.add_note("Negative value passed! Please try again.")
raise
如果您已经编写了一个如下所示的定制异常类,那么您可以在受保护的类级属性__notes__
中向该类添加多个注释:
import math
class MyOwnError(Exception):
# Should be a list of strings
__notes__ = ["This is a custom error!"]
try:
math.sqrt(-1)
except:
raise MyOwnError
现在,当解释器命中错误时,它会在常规消息体之后显示自定义消息。
还有一个使用 except*子句引发异常的新语法,它与新的 ExceptionGroup 类一起使用。PEP 654 说你可以用它在不同的场景中同时引发多个不相关的错误。这些情况大部分都太小众了,比如使用 web sockets,用asyncio
同时编程等等。,这在日常数据科学工作中很少出现,但是如果您感兴趣,您可以在这里了解新语法。
4.新的打字功能:自我
静态类型语言有助于使您的代码可读性更强,易于调试。定义变量、函数输入和输出的确切类型可以节省您的调试时间,并使其他人更容易阅读您的代码。添加类型注释还可以让现代 ide 在您键入函数名称时显示函数定义,使您的函数更容易被其他人解释。
到目前为止,Python 中强大的类型模块拥有几乎任何数据类型的类,除了返回自身实例的类。在 Python 的当前版本中,以下示例是不可能的:
from typing import Self
class Language:
def __init__(self, name, version, release_date):
self.name = name
self.version = version
self.release_date = release_date
def change_version(self, version) -> Self:
self.version = version
return Language(self.name, self.version, self.release_date)
然而,Python 3.11 引入了 self 类,如果它的返回值是 Self 或该类本身的一个新实例,则可以将该类添加到函数的定义中。
5.对标准库的改进
标准库还有一些其他的生活质量改进。首先,在数学模块中添加了两个期待已久的函数。
>>> import math
>>> math.cbrt(9) # Find the cube-root of x
2.080083823051904
>>> math.cbrt(27)
3.0000000000000004
>>> math.exp2(5) # Raise 2 to the power of x
32.0
Python 花了 28 年才添加立方根函数,这一事实令人惊讶,但正如俗话所说,迟做总比不做好。
分数模块还增加了一个新功能,允许您从字符串创建分数:
>>> from fractions import Fraction
>>> Fraction("22/7") # New in Python 3.11
Fraction(22, 7)
>>> Fraction(numerator=22, denominator=7)
Fraction(22, 7)
>>> Fraction("3e-4")
Fraction(3, 10000)
>>> Fraction("-73/41")
Fraction(-73, 41)
>>> Fraction(3.1415) # Find the closest approximation to the given float
Fraction(7074029114692207, 2251799813685248)
如您所见,分数模块对于某些算术运算来说非常方便。主要是,我喜欢你如何找到最接近给定浮点数的分数。您可以进一步提供分母限制:
>>> from math import pi
>>> Fraction(pi).limit_denominator(100000)
Fraction(312689, 99532)
还有一个名为tomllib
的新模块,用于解析 TOML 文档。TOML (Tom 的显而易见的最小语言)是一种流行的文件格式,用于编写人类可读的配置文件。这是一张来自项目主页的图片:
import tomllib
toml_str = """
python-version = "3.11.0"
release_date = "2022-10-22"
"""
data = tomllib.loads(toml_str)
print(data) # {'python-version': '3.11.0', 'release_date': '2022-10-22'}
print(data['python-version']) # 3.11.0
print(data['release_date']) # 2022-10-22
Python 3.11 发布日期
Python 3.11 的开发始于 2021 年 5 月 5 日。从那时起,已经发布了七个 alpha 版本,与 2022 年 5 月 8 日的第一个 beta 版本重合。从这一天开始,直到正式发布,Python 中不会引入新的特性。
最终的稳定版本将于 2022 年 10 月 3 日发布,同时还有三个测试版本和两个候选版本。您可以通过查看以下资源来了解更多关于 Python 的知识。
为什么 89%的公司优先考虑数据流畅性
DataCamp 对来自医疗保健、技术、消费品、政府和金融等不同行业的 300 多名学习和发展领导者进行了调查。*这些 L&D 领导人的反馈表明,投资数据流畅性是当今公司的当务之急,因为它对业务成果有直接影响。
如果您对在贵公司建立数据流畅感兴趣,请访问datacamp.com/business或点击此处安排我们平台的演示。敬请关注我们即将发布的白皮书,了解更多详细的调查结果!
89%的公司表示,建立数据流畅性是他们业务的重中之重。
数据流畅性包括一系列技能和熟练程度,意味着具备适当的数据技能水平,以便根据每个工作角色的不同需求高效工作。
有趣的是,对于拥有成熟数据流畅能力的公司,优先考虑数据流畅的受访者比例上升至 97%,这表明数据流畅程度越高的公司,越承认要达到他们期望的业务目标还有很长的路要走。
84%的公司计划到 2020 年投资数据流畅性。
投资数据流畅性的驱动因素包括更高的效率和创新、市场力量以及收入和生产率的提高。
63%的公司已经提供在线学习平台。
提供在线学习平台是企业为培养数据技能而采取的最常见措施。对于希望建立数据流畅能力的公司来说,利用 DataCamp 这样的外部平台来培训员工是至关重要的第一步。
雇佣顶尖人才是构建数据流畅度最常被提及的挑战。
46%尚未投资数据流畅性的公司——相比之下,29%已经投资的公司——在招聘顶级人才方面遇到困难。但是雇佣人才只是解决方案的一部分——大多数公司可能会受益于对现有员工的再培训和技能提升。
不成熟的数据流畅性导致工作流效率更低。
在报告数据流畅能力不成熟的公司中,高达 68%的公司报告工作流程效率更低。公司报告数据流畅性水平较高的行业是科技、金融和保险,而政府、医疗和零售落后于这一曲线。
数据流畅带来更好的业务成果。
Note: “All-time high/better” ratings only
数据流畅性能力成熟的高绩效公司比数据流畅性能力不成熟的同行取得了更好的结果。他们的收入增长、客户满意度、盈利能力、市场份额和员工满意度显著提高,这表明数据流畅性是公司成功的重要指标。
如果您想通过在贵公司建立数据流畅能力来推动更好的业务成果,请访问datacamp.com/business或点击此处安排我们平台的演示。
本文引用的数据来自培训行业于 2019 年 8 月 15 日至 29 日对 303 名 L & D 级领导者进行的调查,这些领导者对其组织的培训实践拥有决策权。由于四舍五入,百分比总和可能不等于 100。
为什么数据不必那么大
定义大数据
大数据是数据领域最热门的词汇之一。但是到底多大才算大呢?一种思考方式是从体积或者你拥有的数据量的角度。根据容量,我们可以将大数据定义为远远超过现代笔记本电脑或硬盘所能存储的数据。因此,它需要分布在计算机集群中进行处理、传输和分析。我们可以扩展大数据的定义,以涵盖三个 Vs :数量、速度和多样性。
- 量:数据量
- 速度:移动和分析数据的速度
- 多样性:你拥有的不同类型的数据
大数据是理论的终结吗?
2008 年,克里斯·安德森在《连线》杂志上写了一篇挑衅性的文章,名为理论的终结,数据洪流让科学方法过时。前提是我们有足够的数据对世界做出令人满意的预测,我们不需要理论来理解世界。这种争论的部分推动力是我们在谷歌身上看到的情况——他们能够对海量数据进行操作,然后以数据产品的形式提供预测模型,用于程序化广告购买。此外,他们能够通过足够先进的预测分析做到这一点,而无需了解或理论化所研究的系统。
这一切都是为了利用捕捉到的人类行为来制造更好的产品和服务。谷歌使那些想要购买广告的人能够在谷歌 AdWords 上轻松购买,AdWords 背后的模型不依赖于任何关于有人会不会点击的理论。谷歌有足够的数据做出“足够好”的预测。克里斯·安德森(Chris Anderson)的挑衅性假设是,大数据包含了如此多的信息,以至于我们不再需要对世界进行建模,我们也不需要理解它背后的理论或实际发生的事情。
大数据实际上兑现了对我们的承诺吗?思考这个问题的一种方法是在 Gartner 炒作周期中建模。
Gartner 炒作周期告诉我们一项技术创新和围绕它的预期是时间的函数。我们从创新触发器开始,在大数据的情况下,它是存储、传输和分析大量数据的能力。然后人们对此议论纷纷,导致过高的期望。之后,我们看不到与期望相反的价值,因此我们进入了幻灭的低谷。只有在这之后,我们才能看到真正的价值开始在几个不同的垂直行业中传递——我们进入了启蒙阶段。
大数据目前处于 Gartner 炒作周期的哪个阶段?思考预期的一种方式是,将人们在谷歌上搜索的内容视为时间的函数。以下是谷歌自 2004 年以来的“大数据”趋势。您可以看到,Chris Anderson 走在了时代的前面,但由于小数据和厚数据的重要性,他错误地认为大数据是理论的终结。
如果我们接受 Gartner 炒作周期作为思考大数据的有效模型,如果我们接受 Google trends 作为预期的代理,我们可以看到膨胀的预期的峰值是在 2014 年左右,我们还没有到达幻灭的低谷。
小数据也很强大
虽然数据科学中的许多最新创新都集中在我们高效处理日益增长的海量数据的能力上,但重要的是要认识到,现实世界中分析的绝大多数数据确实适合现代笔记本电脑的内存。作为业务领导者,在决定采用哪些工具和架构之前,您应该仔细考虑您的数据组织的需求。
我想带你们回到约翰尼斯·开普勒,他发现了行星运动的三大定律,还有丹麦天文学家第谷·布拉尼,他收集了开普勒最终分析的数据,构建了他的运动三大定律,然后形成了牛顿的万有引力理论。我们从布拉赫收集的数据中获得了大量的科学知识,这些数据仅由大约 2000 个数据点组成。与我们今天谈论的数据集相比,这是一个很小的数据集,有时包含数亿个数据点。但是 Brahe 收集的数据质量很高。如果你有良好的,适当收集的数据,强大的分析性和原则性的理论模型,以及一种做统计建模的方法,你可以从你的数据中获得巨大的数量。
让我们来看看 Andrew Gelman 的文章中探讨的另一个例子,一个只有 1004 名美国人的民意调查怎么能代表 2 . 6 亿人,误差只有 3 %? Gelman 通过数学向您展示,当您增加数据量时,您会在减少误差幅度方面获得严重的收益递减。声明:只有当你对你的人口进行了某种代表性的抽样时,这个结果才是真实的,但在民意调查中绝对不是这样。但统计学家现在有了对非代表性样本的复杂校正方法,他们可以用这些方法来了解更多人的投票偏好。
同样,我们从少量的数据中看到一个重要的结果,它告诉我们人类行为和人类偏好的本质。同样的原则也适用于商业——它是关于理解和能够预测未来人类行为的,尤其是就你的利益相关者而言。那么,为什么我们在没有必要的时候谈论大数据呢?一个主要的原因是,如今它很容易获得,而且是可计算的。
底线是《哈佛商业评论》在中的观点,有时“小数据”足以创造智能产品“这不是关于堆积如山的数据,而是关于小的、高精度的数据。”
不要低估厚数据的力量
既然我们已经讨论了小数据的力量,我想转到另一种类型的数据,称为厚数据,或定性数据。薄数据涉及数字和表格,而厚数据,一个来自社会学和人类学的术语,更具有定性和描述性。一个名为 ReD Associates 的咨询集团利用厚数据帮助人们建立分析模型和机器学习模型,做了出色的工作。
我想提到的一个例子是他们在检测信用卡欺诈方面的工作。这是一个巨大的挑战,机器学习在过去已经被用于检测信用卡欺诈,使用诸如交易金额、交易时间、位置等特征。ReD Associates 试图收集大量数据,采用社会学方法来解决这个问题。
为了做到这一点,ReD Associates 与信用卡欺诈者坐在一起,了解他们实际上在做什么,他们的流程是什么样的。他们在黑暗网络上发现了一个信用卡诈骗者社区,并在现实生活中与他们见面,了解他们的流程和习惯。
他们发现,信用卡诈骗者最有可能被抓住的时间点是他们在现实世界中不得不做一些事情的时候——比如取快递。他们精通技术,很少能在网上被发现。欺诈者在物理领域也很小心——他们通常不会将包裹寄到自己的地址、工作地址或朋友的地址。取而代之的是,他们把快递送到废弃的或房地产市场上的房产地址。
有了这些知识,ReD Associates 建立了一个信用卡欺诈检测模型,使用包裹被送往的位置作为一个特征,并将废弃房屋和市场上房屋的公开数据加入其中。他们观察到,与更传统的欺诈交易模型相比,这种基于定性数据的模型在准确性上有了显著提高。这是一个很好的例子,说明了厚数据的重要性,以及采取社会学方法可以提供更多的价值。我推荐这两篇文章,以进一步详细探讨优质数据如何比大数据更重要:‘厚’数据的力量和大数据只是营销人员所需数据的一半。
行动呼吁
选择一个对您的业务有价值的数据源,并考虑您真正需要这些数据中的多少来为决策提供信息。衡量这一点的一种方法是考虑增加 2 倍、5X 和 10 倍的附加值,特别是在收集、存储和分析这些数据的投资方面。然后,回答这个问题:您可以使用什么样的厚数据来提高这个数据源的质量?
在商业领袖机器学习权威指南中了解更多利用数据的最佳实践。
为什么数据科学就绪性对任何行业都很重要
数据科学的组织准备情况
数据科学就绪性对每个组织都很重要,无论您是否处于传统上与数据科学和分析相关的行业。 KDnuggets 将组织就绪性的四个组成部分总结为战略、领域、文化和运营就绪性。
定义数据科学就绪性
组织在准备数据科学计划时,必须仔细考虑这四个要素。战略准备有助于公司将数据科学与组织优先事项联系起来,并获得管理层的支持。领域就绪性是指对基础设施的投资,即轻松访问和分析数据所需的工具和技能。文化准备度为每位员工创造条件,让他们学会使用数据语言,推动更好的数据驱动型结果。运营就绪性支持通过适当的规划来执行和优化数据科学功能。公司必须注意其独特的数据需求,并确保在所有这些领域尽早适应,以便为成功做好准备。
数据科学需求层次
人工智能很热门,许多公司都想直接投入其中。但是你要先走才能跑,你要先系统化 AI,你要有战备等级才能这么做。这就是建立数据基础的意义所在。Monica Rogati 的数据科学需求层次是实现数据科学就绪性的实用方法。
智能电表的数据驱动型能耗
有时,组织可能不会主动为数据科学做准备,而是被迫这样做以满足外部需求。让我们来看一个英国公用事业公司的例子,英国政府要求到 2020 年底,每个家庭和小企业都必须安装智能电表。政府引用适应现代数据需求和消费者关注作为他们 2018 年进度报告中倡议的原因:他们相信智能电表将帮助客户有效地使用能源,并通过让他们更清楚地了解他们的实际消费来节省电费。
物联网的数据科学洞察
智能电表是快速增长的物联网领域的一部分,物联网通常与数据科学相结合。物联网是指不是标准计算机但仍具有传输数据能力的小工具。数据科学可以提供对从物联网收集的信息的深刻见解。英国智能电表项目要取得成功,智能电表必须能够传输数据,确定能源消耗模式,并告知用户如何做出改变以节约能源。
公用事业公司如何采用数据科学
英国的公用事业公司正在争先恐后地满足 2020 年的最后期限,并且有许多移动部件。从战略上讲,他们必须获得管理层对分析支持投资的赞助,以跟踪他们的进展。他们必须准备好监控智能电表计划的进度,这需要监控安装和成本,并确保可操作性。他们必须确保公司的每个人(从高管到安装人员)都做好文化准备,了解智能电表的产品市场适应性和物联网功能。最后,必须做好运营准备,以量化智能电表安装对能耗和成本的影响,并确定智能电表是否真的值得大肆宣传。
如果您想深入研究物联网数据科学的实际应用,请参加我们关于分析物联网数据的课程。我们将向您详细介绍如何访问物联网数据、处理数据、分析趋势和异常值,并使用它来构建用于实时预测的机器学习管道。
如果你是一名对数据科学和分析的组织就绪感兴趣的企业领导者,请在datacamp.com/business了解更多信息。点击此处安排我们平台的演示。
我为什么选择 DataCamp 认证
近一年来,我一直致力于将职业重心转向数据科学。但是,由于我当时在建筑领域工作的繁重工作量,我没能像最初计划的那样快速进步。
因此,当我看到 DataCamp 认证时,我很兴奋——我知道它将帮助我开启职业生涯的下一步。我决定辞去工作,真正专注于在数据科学领域取得进展。
原本打算申请某大学的应用数据科学硕士项目,但是就读的费用相当高。相反,我决定通过 DataCamp 学习,因为我喜欢该平台的互动体验,并发现这是快速提高技能的最具成本效益的途径。
大约学习三个月后,我看到了 DataCamp 的新认证。这个时机非常好,因为我开始因为不知道自己的进展而感到沮丧。我开始着手认证评估和挑战,每一次我的信心都在增加。
我如何准备认证
我想尽快获得数据科学家认证,所以我立即开始审查所有的要求和文档。我了解了考试的形式,我需要填写评估的编码空白,而不是只回答选择题。
由于我以前对 Python 有所了解,我通过参加可能对我的薄弱领域有所帮助的课程,开始了准备工作。我还参与了 DataCamp 上提供的几个项目。
认证经验和案例分析
我浏览了 DataCamp 认证的早期版本,它包括三个部分——评估、编码挑战和案例研究。每当我通过一个项目时,我都很享受那种兴奋和成就感。然而,当我得到数据集时,我发现案例研究比我想象的更有挑战性。
对我来说,案例研究为认证增加了最大的价值,因为它是测试你是否能将所有技能和知识应用于业务场景的有效方式。这种高级别的应用程序要求您对数据科学有一个全面的了解,并了解何时应该拿出您的工具包来解决这个特定的问题。
案例研究的分级标准是关键。我通过总结重要的统计和建模概念和代码进行研究,这些概念和代码与标题中的每个类别相一致。我创建了自己的参考资料,以了解如何尽快搜索答案,以防在处理指定问题时忘记了一些代码。
从认证中获取价值
获得 DataCamp 的数据科学家认证非常有意义。获得认证后,我可以离开之前的景观设计师职业,找到一份全职工作,为一家教育科技公司处理数据。
这段经历给我上了宝贵的一课——永远要寻找一种替代的或创造性的方式来实现你的目标。在认证过程中,我丈夫质疑获得认证的价值,并建议我尝试另一种途径。然而,我的成功证明他是错的,并建立了我的信心,以解决我将在新的职业生涯中遇到的挑战。
为什么你的模型不是最准确的也没关系
当构建一个 ML 模型时,你必须指定一个评估指标,它告诉算法你在优化什么。一个常用的评估标准是准确性,也就是说,您的模型对多大比例的数据做出了正确的预测。这似乎是一个很好的选择:谁会想要一个不是最准确的模型呢?
实际上,在很多情况下,您不想为了准确性而进行优化——最普遍的情况是当您的数据有个不平衡的类时。假设您正在构建一个垃圾邮件过滤器来将电子邮件分类为垃圾邮件,而只有 1%的电子邮件实际上是垃圾邮件(这就是不平衡分类的含义:1%的数据是垃圾邮件,99%不是)。那么一个把所有邮件都归类为非垃圾邮件的模型,准确率是 99%,听起来很棒,但却是一个没有意义的模型。
有替代的标准来解释这种阶级不平衡。关键是您要与您的数据科学家讨论他们在优化什么,以及这与您的业务问题有何关联。开始这些讨论的一个好地方不是关注单个指标,而是查看模型的所谓 混淆矩阵 ,它包含以下数字:
- 漏报(例如,真正的垃圾邮件被错误地分类为非垃圾邮件)
- 误报(非垃圾邮件被错误分类为垃圾邮件)
- 真正的否定(正确分类的非垃圾邮件)
- 真阳性(垃圾邮件被正确分类)
来源:玻璃盒药
目前,很多注意力都集中在您提供给 ML 模型的数据的重要性以及它与您的评估指标的关系上。YouTube 不得不艰难地认识到这一点:当他们根据观看时间(人们停留在视频上的时间)优化收入时,这产生了推荐更多暴力和煽动性内容以及更多阴谋视频和假新闻的负面影响。
这里有一个有趣的教训是,优化收入——因为观看时间与 YouTube 可以为你提供的广告数量相关,因此收入——可能与其他目标不一致,例如显示真实的内容。这是古德哈特定律的算法版本,该定律指出:“当一个度量成为目标时,它就不再是一个好的度量。”
最广为人知的例子是苏联的一家钉子工厂,工人们首先被赋予一个目标,目标是若干根钉子,然后生产出许多小钉子。为了解决这个问题,目标被改为钉子的总重量,所以他们做了几个巨大的钉子。但是算法也受制于古德哈特定律,就像我们在 YouTube 推荐系统上看到的那样。
在商业领袖机器学习权威指南中找到更多关于机器学习的最佳实践。
为什么我们决定放弃 10%的收入
当我们开始 DataCamp 的时候,我们提供了一个 29 美元/月的常规计划(我们今天仍然提供这个计划)和一个 9 美元/月的学术学生计划。学术计划具有与常规计划完全相同的功能,但价格要低得多。通过这种方式,我们希望为资金不足的学生提供通过 DataCamp 学习数据科学的机会。
学术学生计划很快取得了成功。希望实现教学方法现代化的教授们决定将课堂预算的一部分用于为这学期的所有学生购买 DataCamp access。每月 9 美元的用户数量稳步增长,最终占到我们总收入的 10%。
然后,2016 年底,我们决定放弃这一切。我们就此进行了许多长时间的辩论,但最终,我们采取了感觉正确的做法,所以我们决定向教室免费提供 DataCamp。我们 10%的收入…没了。
促使我们决定继续推进这项工作的一些主要原因是:
- 受教育是一项基本权利:在一个教育近乎免费的国家(比利时)长大,然后搬到一个没有教育近乎免费的国家(美国),你会学会欣赏不受个人背景影响的轻松受教育的价值。借助 DataCamp,我们能够为世界各地的学生提供类似的体验。
- 民主化数据科学:创建 DataCamp 背后的一个关键驱动力是向世界上的每个人民主化数据科学(阅读更多关于我们为什么创建 DataCamp 的信息)。我们觉得让我们的学术项目免费,是实现我们使命的重要一步。
- 学生不应该成为摇钱树:DataCamp 成立的初衷绝不是为了从资金紧张的年轻学生身上赚到过多的钱。
放弃 10%的收入是很可怕的。当然,作为一家拥有超过 25 名员工的年轻公司,它需要向员工、当前和未来的投资者展示可持续的快速增长。此外,据我所知,我们是为数不多的提供这种免费服务的在线教育提供商之一(我相信 DuoLingo & Khan 也为学生提供类似的服务),我也不知道有哪家教育技术公司做过类似的转变。
幸运的是,这也被证明是一个明智的商业决策。这增加了我们的曝光率,因为一些注册了我们免费课堂账户的教授通过班级网站、他们的社交媒体……促进了与 DataCamp 的合作,对学生也是如此。他们喜欢这种体验,这反过来又创造了很多额外的口碑。除了曝光的好处,它也有利于我们的学习者基础的长期经济价值。我们坚信持续教育和终身学习,尤其是在像数据科学这样快速发展的领域。通过让数据科学爱好者在旅程的早期接触 DataCamp,他们可以更长时间地坚持使用 DataCamp。
回想起来,这 100%是值得的。通过使其免费,我们成功地为 180 个国家的 200,000 多名学生提供了免费的数据科学教育,并为 10,000 多名学术教室和教授提供了支持。这些数字远远超出了我们最大的期望,激励着我们的许多员工(包括我自己)每天来上班。(关于这些数字的更详细的博文将很快推出。)
想自己参与吗?今天就在数据营申请课堂计划。
为什么贵公司需要 Python 进行商业分析
Python 为什么如此重要?
Python 改善了每个人的工作
Python 应用广泛,是数据科学、web 开发、系统管理、编写自动化脚本等领域的顶级编程语言之一。开箱即用,Python 允许用户存储、访问和操作数据。它还有一个巨大的、不断增长的生态系统,有各种各样的开源包和库。这意味着不同的角色可以出于不同的目的使用 Python。
Python 对几乎每个行业都有用,包括医疗保健、金融、技术、咨询。医疗保健行业正在使用 Python 中的机器学习算法来预防和诊断疾病,并优化医院运营。农民使用 Python 进行产量预测,并在物联网技术的帮助下管理作物病虫害。
Python 是当今最流行的商业分析语言之一,并且还在以惊人的速度增长。它通常被认为是更容易阅读和学习的编程语言之一——它的编程语法简单,命令模仿英语。
Python 正在取代 Excel 来扩展业务决策
Python 和 R 等其他开源编程语言正在迅速取代 Excel,后者无法满足现代商业需求。多年来,Excel 一直是公司事实上的决策引擎。但它是为数据集很小、不需要实时信息、协作不那么重要的世界而构建的。开源编程语言可以帮助公司更好地利用他们的数据,现在许多角色需要编码知识才能做到数据流畅。
我们的一位数据科学家 Chris Cardillo 说,“如果有人每天在 Excel 上花费超过 4 个小时,他们无疑会从学习 Python/R 中受益,”通过这个镜头评估您的员工是有用的——它将编程需求与工作场所中容易识别的模式进行了比较。事实上,利用开源代码大幅提高工作成果的能力正是 Chris 成为数据科学家的原因。
Source: xkcd
Python 对商业分析有什么用?
BI 和仪表板(描述性分析)
业务分析的主要目标之一是描述已经发生的事情,以便了解趋势并评估一段时间内的指标。该字段称为描述性分析,通常由数据分析师执行。
数据分析师经常使用 Python 来描述和分类当前存在的数据。他们参与探索性的数据分析,其中包括分析数据、可视化结果以及创建观察结果以形成分析中的后续步骤。 Python 可以用来操纵数据(使用 pandas 之类的库),精简工作流程,创建可视化(使用 Matplotlib) 。
Source: Data Science for Managers
机器学习(预测分析)
商业分析的另一个目标是通过预测将要发生的事情来为未来做准备。这个领域被称为预测分析。机器学习是预测分析的一个分支,它使用简化的统计算法来基于现有信息预测未来,并识别关系和见解——想想网飞的推荐引擎。
Python 正迅速成为机器学习的首选语言,并被用于创建贝叶斯网络、决策树等模型。Google 的 TensorFlow 是一个流行的 Python 库,许多数据科学家使用它来快速访问许多有监督和无监督的机器学习算法。
决策科学(规范分析)
规范分析,也称为决策科学,是业务分析的最后阶段,它预测特定结果将在什么时候发生以及为什么会发生,并确定如何处理这些信息。它将数据应用于决策过程。在我们的 DataFramed 播客中,谷歌云的首席数据科学家 Cassie Kozyrkov 解释了决策智能和数据科学之间的联系。
Source: Wikipedia
决策科学家围绕业务问题构建他们的数据分析,并使用许多与数据科学家相同的技术和工具。他们的目标是让洞察变得可用,因此他们的模型和可视化方法必须能够传达这些洞察。 Python 通常用于创建规定性分析工具,如深度学习,它使用人工神经网络来优化结果。
面向商业分析的大众化 Python
DataCamp 拥有丰富的 Python 课程,并且还在不断增加。不知道从哪里开始?我们鼓励有抱负的数据科学家加入我们的数据科学家与 Python 职业跟踪,参加精选课程。
对于重视持续学习的公司来说, DataCamp for Business 使员工能够在业务分析的所有领域保持最新技能。
点击此处安排我们平台的演示。
Working IDEAL 对 DataCamp 的独立第三方审查
今年早些时候,DataCamp 委托第三方对 2017 年 10 月的事件进行了独立审查,由奥巴马政府前司法部官员 Anurima Bhargava 和 Working IDEAL 的 Pamela Coukos 领导。他们的报告还考察了该公司在随后几个月的反应,以及该公司的整体氛围和文化。
Working IDEAL 是一家在促进包容性工作场所、多样化人才和公平薪酬方面拥有专业知识的组织。除了对公司文件的详细审查,该报告是内部和外部利益相关者访谈以及来自近 100 名个人的匿名在线反馈的产物。
这份报告的全文在这里是。
报告中的主要结论如下(这些结论是从报告全文中逐字摘录的,该报告全文与上文有链接):
-
在与参与或目睹 2017 年 10 月事件的现任和前任 DataCamp 员工交谈后,关于首席执行官 Jonathan Cornelissen 和员工 Kara Woo 之间发生的事情,几乎没有事实争议。
-
这一事件引发了一些重要的担忧,包括对三个月后离开 DataCamp 的吴宇森的影响——该事件是她离开的原因之一——以及男性创始人兼首席执行官与一名新聘用的女性员工之间的权力动态,当时很少有女性在 DataCamp 工作。
-
社交媒体上的许多声明和指控与我们发现的事实不符。这一事件远远没有达到对所发生事件更令人震惊的描述。
-
当吴女士报告了她对这一事件的担忧后,考纳利森立即道歉,并为自己的行为负责。
-
DataCamp 立即委托进行了一项调查,就所发生的事情得出了与我们相似的结论;然而,我们认为让投资者进行调查是不合适或不明智的。
-
我们同意 DataCamp 采取的大部分行动,但我们建议采取本报告中描述的其他步骤。
-
DataCamp 作为一家规模虽小但发展迅速的初创公司,其规模和姿态影响了它的反应。
-
DataCamp 的工作场所文化,以及 2017 年 10 月在那里工作的少数女性,为事件和应对措施提供了重要背景。
-
从 2018 年开始,DataCamp 将多元化、公平和包容作为更高的优先事项,并成功增加了女性和有色人种在公司的代表性。
-
虽然向员工公开披露有关工作场所投诉的详细信息并不常见,隐私和其他问题也是相关的考虑因素,但 DataCamp 的行为不符合公司的关键价值观。
-
虽然我们没有发现证据表明该公司的行为是故意误导,但该公司在与利益相关方就该事件及其回应进行沟通时犯了许多错误。
-
该公司的方法没有充分考虑其与教师的现有关系,这可能会影响该公司的反应。
-
DataCamp 从这次经历中吸取了教训,参与这次外部审查表明它致力于改进、提高透明度和建立信任。
-
DataCamp 召集讲师顾问委员会的决定是在外部重建信任的积极步骤,也有利于公司提供来自 DataCamp 讲师的宝贵意见。
-
DataCamp 为促进更加多样化和包容的工作场所所做的工作必须继续下去并扩大。
为了详细说明上述第一点,关于该事件,Working Ideal 对 2017 年事件的事实描述(逐字摘自完整报告)如下:
In Portugal, on the last night of a company work week, many DataCamp employees went to a bar after the company dinner. Mr. Cornelissen and Ms. Woo were dancing together at multiple points during that night. At times, they were dancing face to face; at other times, he was dancing very close behind her. He often placed his hands on her hips while they were dancing. On multiple occasions, Ms. Woo stopped dancing; walked away; changed directions; or went to talk to others. Mr. Cornelissen was on and off the dance floor frequently, talking with employees and drinking at the bar. He came back over to Ms. Woo on the dance floor multiple times and reinitiated contact with her. No one alleged any physical contact outside of the dance floor and, in our discussions, no one described the contact as “groping” or being “groped.”
同样,你可以在这里阅读报告全文。
在接下来的步骤方面:10 月 19 日,IAB 将聚集讨论该报告,并向 DataCamp 董事会(BoD)提供如何最好地实施报告建议的建议。他们还将就 Jonathan Cornelissen 在公司的未来角色向 DataCamp 董事会提供建议。如你所知,他从 2019 年 5 月 1 日开始休假。随着这一进程的推进,我们将为您提供更多信息。
我们绝对致力于部署必要的人员和政策,以促进 DataCamp 的健康文化,并使其成为一个有益的工作场所。迄今为止,DataCamp 已经在这方面取得了长足的进步,我们对此感到非常自豪,但我们知道,要成为一个更加友好、多元化和包容的地方,我们还可以做更多的事情。该报告提出了一系列建议,旨在巩固我们在过去几年所做的出色工作,我希望你们知道,我们将尽快落实报告中的建议。
和往常一样,我很高兴能够继续 DataCamp 的使命,提高世界各地的数据流畅性,并创建一个强大、健康和包容所有人的数据科学学习平台和社区。
马丁·托伊维森,临时首席执行官
参加 XP 学习者挑战,赢取 500 美元
原文:https://web.archive.org/web/20221129052847/https://www.datacamp.com/blog/xp-learner-challenge
这是什么?
从 8 月 15 日到 8 月 31 日,我们的 XP 学习者挑战赛将根据您每天获得的 XP,为您提供赢取每日现金奖励的机会。你所需要做的就是注册一个 DataCamp 帐户或登录到你现有的帐户,带着你的胜利精神在这段时间内尽可能多地收集每日经验值。
什么是 XP?
XP 代表经验值-你可以通过不同的方式获得 XP,例如:完成曲目、课程、项目等等。
所以你用 DataCamp 磨练数据技能越多,你赚的 XP 就越多,你赢得挑战的几率就越高!
它是如何工作的
我如何报名参加 XP 学习者挑战赛?
注册 XP 学习者挑战赛只需要两个步骤:你需要做的第一件事是登录或注册 DataCamp。其次,您必须确保您选择参加 DataCamp 的促销活动。
就这样,你就进入了游戏!请访问 XP 学习者页面了解更多信息。
每日与最终赢家
有两种类型的赢家:每日赢家和终极赢家。
从 8 月 15 日到 31 日,每天都将奖励给在某一天获得最高经验值的学员。这些每日获奖者将获得 500 美元的现金奖励,我们将通过他们的注册电子邮件联系获奖者。
您只能赢得一次 500 美元的每日现金奖励。但是不要担心,因为你仍然有资格赢得 1000 美元的最终大奖。这一终极奖励将授予在 8 月 15 日至 31 日期间单日经验最高的学习者。
谁能加入?
XP 学员挑战赛面向所有 DataCamp 学员开放。新老学员都可以从参与这项挑战中受益。
为什么新学习者应该参加?
如果你刚刚开始使用 DataCamp,这是一个同时开始学习和收集 XP 的有益机会。为此,您可以报名参加课程或培训,并发展您的数据科学技能。有什么比获得高达 1500 美元的奖金更好的方式来开始您的数据科学之旅呢?!
为什么现有学习者应该参与?
至于我们现有的学习者,现在可能是认真学习和磨练你现有技能的时候了。无论你是想精通一个你一直在研究的课题,还是开始一个新的挑战,赢得 1500 美元的机会都能带来新的动力。
这个挑战对你来说是一个很好的机会,让你在获得 XP 的同时养成练习编程技能的习惯。我们有超过 88 个项目,非常适合磨练你的技能和一次性扩充你的 XP!例如,你只需完成我们的权力的游戏项目就可以赚取 1,500 XP。
怎么才能赚到 XP?
探索新课程
获得 XP 的最好方法之一是探索新的课程。目前有 387 门不同级别、主题和技术的课程。平均下来,只要上完 4 个小时的课程,就可以收集到 3000 到 5000 的 XP!
参加课程是探索各种学习主题和为评估做准备的好方法,同时可以批量收集您的 XP。我们的课程包罗万象,适合各个层次。看看我们推荐的一些课程:
初学者课程
中级课程
- 中间 SQL
- Python 数据科学工具箱(第一部分和第二部分
- 使用 ggplot2 进行中间数据可视化
高级课程
探索新的曲目和项目
如果你正在寻找一个更加长期和专注的方法,参加一个跟踪是最好的方法。我们有以技能和职业为重点的课程,其中四门课程为您获得行业认可的认证做准备。
跟踪是多种课程、评估和实践的一体化捆绑包,可以帮助您立即最大限度地利用您的 XP!它们都是根据自己的题目精心定制的,所以你在接下来的课程或练习中不必三思,让收集 XP 变得更有效率。以下是我们要探索的一些曲目和项目:
技能路线:
职业轨迹:
项目:
- 可视化新冠肺炎(1500 经验值)
- 风险与收益:形状比(1500 XP)
- 争论和可视化音乐数据(1500 XP)
现在就开始!
不要错过赢取高达 1500 美元奖励的机会!尽快注册 DataCamp,最大限度地提高您赢得 XP 学习者挑战赛的机会。我们祝你好运,让学习开始吧!
YOLO 物体探测解释
对象检测简介
对象检测是计算机视觉中使用的一种技术,用于识别和定位图像或视频中的对象。
图像定位是使用边界框识别一个或多个对象的正确位置的过程,边界框对应于对象周围的矩形形状。
这一过程有时与图像分类或图像识别相混淆,图像分类或图像识别旨在将图像或图像中的对象的类别预测到类别或种类之一。
下图对应于前面解释的直观表示。在图像中检测到的对象是“人”
作者图片
在这篇概念博客中,你将首先了解物体检测的好处,然后介绍 YOLO,这是最先进的物体检测算法。
在第二部分,我们将更多地关注 YOLO 算法及其工作原理。之后,我们将提供一些使用 YOLO 的实际应用程序。
最后一部分将解释 YOLO 从 2015 年到 2020 年的发展,然后总结下一步措施。
什么是 YOLO?
你只看一次(YOLO)是一种最先进的实时对象检测算法,由约瑟夫·雷德蒙、桑托什·迪夫瓦拉、罗斯·吉尔希克和阿里·法尔哈迪在他们著名的研究论文“你只看一次:统一的实时对象检测”中于 2015 年推出。
作者通过在空间上分离边界框,并使用单个卷积神经网络(CNN)将概率与每个检测到的图像相关联,将对象检测问题构建为回归问题,而不是分类任务。
通过参加使用 Python 中的 Keras 进行图像处理课程,您将能够为图像分类任务构建基于 Keras 的深度神经网络。
如果你对 Pytorch 更感兴趣,使用 Pytorch 进行深度学习将会教你关于卷积神经网络以及如何使用它们来建立更加强大的模型。
是什么让 YOLO 在物体探测方面如此受欢迎?
YOLO 在竞争中领先的一些原因包括:
- 速度
- 检测精度
- 很好的概括
- 开源
1 速
YOLO 非常快,因为它不处理复杂的管道。它可以以每秒 45 帧(FPS)的速度处理图像。此外,与其他实时系统相比,YOLO 达到了平均精度(mAP)的两倍以上,这使其成为实时处理的绝佳候选。
从下图中,我们观察到 YOLO 以 91 FPS 的速度远远超过了其他物体检测器。
YOLO 速度与其他最先进的物体探测器相比(来源
2-高检测精度
YOLO 在准确性上远远超过其他最先进的模型,背景误差很小。
3-更好的概括
对于 YOLO 的新版本来说尤其如此,这将在本文后面讨论。凭借这些进步,YOLO 又向前推进了一步,为新领域提供了更好的泛化能力,这使得它非常适合依赖于快速而鲁棒的对象检测的应用。
例如,用 Yolo 深度卷积神经网络自动检测黑色素瘤的论文显示,与 YOLOv2 和 YOLOv3 相比,第一版 YOLOv1 的黑色素瘤疾病自动检测平均精度最低。
4-开源
使 YOLO 开源导致社区不断改进模型。这也是 YOLO 在如此有限的时间内取得如此多进步的原因之一。
YOLO 建筑
YOLO 的建筑类似于谷歌网。如下图所示,它总共有 24 个卷积层、四个最大池层和两个全连接层。
来自的 YOLO 建筑原文(作者修改)
该架构的工作原理如下:
- 在通过卷积网络之前,将输入图像的大小调整为 448x448。
- 首先应用 1x1 卷积来减少通道数量,然后再应用 3x3 卷积来产生立方形输出。
- 引擎盖下的激活函数是 ReLU,除了最后一层用的是线性激活函数。
- 一些额外的技术,如批量归一化和丢弃,分别正则化模型并防止它过拟合。
通过完成 Python 中的深度学习课程,您将准备好使用 Keras 来训练和测试复杂的多输出网络,并更深入地研究深度学习。
YOLO 物体检测是如何工作的?
现在您已经理解了架构,让我们使用一个简单的用例来对 YOLO 算法如何执行对象检测有一个高层次的概述。
假设您构建了一个 YOLO 应用程序,从给定的图像中检测球员和足球。
但是你如何向某人解释这个过程,尤其是没有印心的人?
这就是本节的全部内容。你会了解 YOLO 如何进行物体探测的全过程;如何从图像(A)中获取图像(B)
图片作者
该算法基于以下四种方法工作:
- 残余块
- 包围盒回归
- Unions 上的交集或简称为 IOU
- 非最大抑制。
让我们仔细看看他们每一个人。
1-残余块
第一步从将原始图像(A)划分为 N×N 个形状相同的网格单元开始,在我们的例子中,N 是 4,如右图所示。网格中的每个单元负责定位和预测它所覆盖的对象的类别,以及概率/置信度值。
作者图片
2-包围盒回归
下一步是确定对应于突出显示图像中所有对象的矩形的边界框。在给定的图像中,我们可以有和对象一样多的边界框。
YOLO 使用以下格式的单个回归模块来确定这些边界框的属性,其中 Y 是每个边界框的最终矢量表示。
Y = [pc,bx,by,bh,bw,c1,c2]
这在模型的训练阶段尤其重要。
- pc 对应于包含对象的网格的概率分数。例如,所有红色网格的概率分数都大于零。右边的图像是简化的版本,因为每个黄色单元的概率为零(不显著)。
作者图片
- bx,by 是边界框中心相对于包围网格单元的 x 和 y 坐标。
- bh、bw 对应于边界框相对于包络网格单元的高度和宽度。
- c1 和 c2 对应于两个类 Player 和 Ball。您的用例需要多少类,我们就有多少类。
为了理解,让我们更仔细地关注右下方的玩家。
作者图片
3-联合或 IOU 上的交集
大多数情况下,图像中的单个对象可以有多个用于预测的栅格框候选,即使它们并不都是相关的。IOU(0 到 1 之间的值)的目标是丢弃这样的网格框,只保留那些相关的。这背后的逻辑是:
- 用户可以定义 IOU 选择阈值,例如 0.5。
- 然后,YOLO 计算每个网格单元的 IOU,即交集面积除以并集面积。
- 最后,它忽略对 IOU ≤阈值的网格单元的预测,并考虑 IOU >阈值的网格单元。
下面是一个应用网格选择过程到左下角对象的例子。我们可以观察到,该对象最初有两个网格候选,然后最后只选择了“网格 2”。
作者图片
4-非最大抑制或 NMS
为 IOU 设置一个阈值并不总是足够的,因为一个对象可以有多个 IOU 超过阈值的框,保留所有这些框可能会包含噪声。在这里,我们可以使用 NMS 来仅保留具有最高检测概率分数的盒子。
YOLO 应用
YOLO 物体检测在我们的日常生活中有不同的应用。在本节中,我们将讨论以下领域中的一些问题:医疗保健、农业、安全监控和自动驾驶汽车。
1-在工业中的应用
目标检测已被引入许多实际行业,如医疗保健和农业。让我们用具体的例子来了解每一个。
卫生保健
特别是在外科手术中,由于患者之间的生物多样性,实时定位器官可能是一项挑战。CT 中的肾脏识别使用 YOLOv3 在 2D 和计算机断层扫描(CT)中定位肾脏。
Python 课程中的生物医学图像分析可以帮助您学习使用 Python 探索、操作和测量生物医学图像数据的基础知识。
通过 YOLOv3 进行 2D 肾脏检测(图像来自使用 YOLOv3 在 CT 中进行的肾脏识别)
农业
人工智能和机器人在现代农业中发挥着重要作用。收割机器人是基于视觉的机器人,被引入来代替手动采摘水果和蔬菜。这个领域最好的模型之一就是 YOLO。在基于改进的 YOLOv3 框架的番茄检测中,作者描述了他们如何使用 YOLO 来识别水果和蔬菜的类型以实现高效收获。
基于改进的 YOLOv3 框架的番茄检测图像(来源
2-安全监控
尽管目标检测主要用于安全监控,但这并不是唯一的应用。YOLOv3 已在 covid19 疫情期间用于估计人与人之间的社会距离违规。
你可以从一个基于深度学习的新冠肺炎社交距离监测框架中进一步阅读这个主题。
3-自动驾驶汽车
实时物体检测是自主车辆系统的 DNA 的一部分。这种集成对于自动驾驶汽车至关重要,因为它们需要正确识别正确的车道和所有周围的物体和行人,以提高道路安全性。与简单的图像分割方法相比,YOLO 的实时性使其成为更好的候选方法。
YOLO、YOLOv2、YOLO9000、YOLOv3、YOLOv4、YOLOR、YOLOX、YOLOv5、YOLOv6、YOLOv7 和差异
自从 2015 年 YOLO 第一次发布以来,它已经随着不同的版本发展了很多。在本节中,我们将了解这些版本之间的差异。
YOLO 或约洛夫 1,起点
YOLO 的第一个版本改变了物体检测的游戏规则,因为它能够快速有效地识别物体。
然而,像许多其他解决方案一样,第一版 YOLO 也有其自身的局限性:
- 它很难检测一组图像中的较小图像,例如体育场中的一群人。这是因为 YOLO 架构中的每个网格都是为单个对象检测而设计的。
- 然后,YOLO 无法成功地探测到新的或不寻常的形状。
- 最后,用于近似检测性能的损失函数对于小边界框和大边界框都同样对待误差,这实际上产生了不正确的定位。
YOLOv2 或 YOLO9000
YOLOv2 于 2016 年创建,其理念是让 YOLO 车型更好、更快、更强。
改进包括但不限于使用 Darknet-19 作为新架构、批量标准化、输入的更高分辨率、带有锚点的卷积层、维度聚类以及(5)细粒度特征。
一批标准化
添加批处理规范化图层可将性能提高 2% mAP。这一批标准化包括一个正则化效果,防止过度拟合。
2-更高的输入分辨率
YOLOv2 直接使用更高分辨率的 448×448 输入,而不是 224×224,这使得模型可以调整其滤镜,以便在更高分辨率的图像上表现更好。在对 ImageNet 数据进行 10 个时期的训练后,这种方法将 mAP 的准确度提高了 4%。
使用锚定框的 3-卷积层
YOLOv2 没有在 YOLOv1 操作时预测对象边界框的精确坐标,而是通过用定位框替换完全连接的层来简化问题。这种方法略微降低了准确率,但将模型召回率提高了 7%,这给了更多的改进空间。
四维聚类
YOLOv2 使用 k=5 的 k-均值维度聚类自动找到前面提到的锚框,而不是执行手动选择。这种新方法在模型的召回率和精确度之间提供了一个很好的折衷。
为了更好地理解 k-means 维度聚类,请看一下我们在 Python 中的 K-Means 聚类和 scikit-learn 和 R 教程中的 K-Means 聚类。他们使用 Python 和 r 深入研究了 k-means 聚类的概念。
5-细粒度功能
YOLOv2 预测生成 13x13 的特征图,对于大物体检测当然足够了。但是对于更精细的对象检测,可以通过将 26 × 26 × 512 特征图变成 13 × 13 × 2048 特征图来修改架构,与原始特征连接。这种方法将模型性能提高了 1%。
yo lov 3——渐进式改进
对 YOLOv2 进行了增量改进以创建 YOLOv3。
变化主要包括新的网络架构: Darknet-53 。这是一个 106 神经网络,带有上采样网络和残差块。它比的黑暗网-19 更大、更快、更精确,而黑暗网-19 是 YOLOv2 的支柱。这种新的架构在许多层面上都是有益的:
1-更好的包围盒预测
YOLOv3 使用逻辑回归模型来预测每个边界框的客观性分数。
2-更准确的类别预测
取代 YOLOv2 中使用的 softmax,引入了独立的逻辑分类器来精确预测边界框的类别。当面对具有重叠标签的更复杂的域时,这甚至是有用的(例如,人→足球运动员)。使用 softmax 会将每个盒子限制为只有一个类,但这并不总是正确的。
3-不同尺度下更精确的预测
YOLOv3 对输入图像中的每个位置以不同的比例执行三次预测,以帮助从前面的层进行上采样。这种策略允许获得细粒度和更有意义的语义信息,以获得更高质量的输出图像。
YOLOv4 —物体检测的最佳速度和精确度
与所有以前的版本和其他最先进的物体检测器相比,这一版本的 YOLO 具有最佳的物体检测速度和精确度。
下图显示 YOLOv4 的速度分别比 YOLOv3 和 FPS 快 10%和 12%。
YOLOv4 的速度与 YOLOv3 和其他最先进的物体探测器相比 ( 来源
YOLOv4 是专门为生产系统设计的,并针对并行计算进行了优化。
YOLOv4 架构的主干是 CSPDarknet53 ,这是一个包含 29 个卷积层的网络,具有 3 × 3 个滤波器和大约 2760 万个参数。
与 YOLOv3 相比,这种架构增加了以下信息,以实现更好的对象检测:
- 空间金字塔池(SPP)块显著增加感受野,分离最相关的上下文特征,并且不影响网络速度。
- YOLOv4 使用面板从不同的检测级别进行参数聚合,而不是 YOLOv3 中使用的特征金字塔网络(FPN)。
- 数据增强使用马赛克技术,该技术除了自我对抗训练方法之外,还结合了四幅训练图像。
- 使用遗传算法执行最佳超参数选择。
尤洛——你看起来只有一个形象
作为一个多任务的统一网络,YOLOR 基于显性和隐性知识方法相结合的统一网络。
统一网络架构 ( 来源)
显性知识是正常的或有意识的学习。另一方面,内隐学习是一种下意识的学习(来自经验)。
结合这两种技术,YOLOR 能够基于三个过程创建一个更健壮的架构:(1)特征对齐,(2)用于对象检测的预测对齐,以及(3)用于多任务学习的规范表示
1-预测对齐
这种方法在每个特征金字塔网络(FPN)的特征图中引入了一种隐式表示,从而提高了大约 0.5%的精度。
用于对象检测的 2-预测细化
通过向网络的输出层添加隐式表示来改进模型预测。
多任务学习的 3-规范表示
执行多任务训练需要对所有任务共享的损失函数执行联合优化。这个过程会降低模型的整体性能,并且这个问题可以通过在模型训练期间整合规范表示来缓解。
从下图中,我们可以观察到 t hat YOLOR 在COCO女士的数据上取得了与其他模型相比最先进的推断速度。
YOLOR 性能对比 YOLOv4 等车型 ( 来源
YOLOX——2021 年超越 YOLO 系列
这使用的基线是 YOLOv3 的修改版本,以 Darknet-53 作为其主干。
YOLOX 在 2021 年发表的论文超越 YOLO 系列中提出了以下四个关键特征,以创建一个比旧版本更好的模型。
1-高效的去耦头
在以前的 YOLO 版本中使用的耦合头显示会降低模型的性能。YOLOX 使用解耦的,这允许分离分类和本地化任务,从而提高模型的性能。
2-稳健的数据增强
将 Mosaic 和 MixUp 集成到数据增强方法中大大提高了 YOLOX 的性能。
3-无锚系统
基于锚的算法在幕后执行聚类,这增加了推理时间。删除 YOLOX 中的锚机制减少了每幅图像的预测数量,并显著提高了推理时间。
4- SimOTA 用于标签分配
作者没有使用并集交集(IoU)方法,而是引入了 SimOTA,这是一种更强大的标签分配策略,通过减少训练时间和避免额外的超参数问题,实现了最先进的结果。除此之外,它还将检测图提高了 3%。
YOLOv5
与其他版本相比,YOLOv5 没有发表研究论文,它是第一个用 Pytorch 而不是 Darknet 实现的 YOLO 版本。
YOLOv5 由 Glenn Jocher 于 2020 年 6 月发布,与 YOLOv4 类似,使用 CSPDarknet53 作为其架构的主干。该版本包括五种不同的型号:YOLOv5s(最小)、YOLOv5m、YOLOv5l 和 YOLOv5x(最大)。
YOLOv5 架构的一个主要改进是集成了焦点层,由一个层表示,它是通过替换 YOLOv3 的前三层而创建的。这种整合减少了图层的数量和参数的数量,也增加了向前和向后的速度,而对地图没有任何重大影响。
下图比较了 YOLOv4 和 YOLOv5s 的训练时间。
yolov 4 和 YOLOv5 的训练时间对比 ( 来源
yolov 6——面向工业应用的单级目标检测框架
YOLOv6 (MT-YOLOv6)框架由中国电子商务公司美团发布,致力于硬件友好的高效设计和高性能的工业应用。
这个新版本用 Pytorch 编写,不属于官方的 YOLO,但仍被命名为 YOLOv6,因为它的主干受到了最初的一级 YOLO 建筑的启发。
YOLOv6 对之前的 YOLOv5 进行了三项重大改进:硬件友好的脊柱和颈部设计,高效的去耦头部,以及更有效的训练策略。
在 COCO 数据集上,与之前的 YOLO 版本相比,YOLOv6 在准确性和速度方面提供了出色的结果,如下图所示。
最先进的有效物体探测器的比较所有模型都用 TensorRT 7 测试,除了量化模型用 TensorRT 8 ( 源)
- YOLOv6-N 在 NVIDIA Tesla T4 GPU 上以 1234(吞吐量)FPS 的吞吐量在 COCO 数据集上实现了 35.9%的 AP。
- YOLOv6-S 以 869 FPS 的速度达到了新的最先进的 43.3% AP。
- YOLOv6-M 和 YOLOv6-L 在相同的推理速度下也取得了更好的准确率,分别为 49.5%和 52.3%。
所有这些特征使得 YOLOv5 成为适合工业应用的算法。
YOLOv7 可训练的免费包为实时物体探测器树立了新的艺术境界
YOLOv7 于 2022 年 7 月在论文中发布,训练有素的免费赠品袋为实时物体探测器设定了新的最先进水平。这个版本在物体检测领域取得了重大进展,在准确性和速度方面超过了以前的所有型号。
yolov 7 推理时间与其他实时物体探测器的比较 ( 来源
YOLOv7 在它的(1)架构和(2)可训练的免费赠品级别做了重大改变:
1-建筑级别
YOLOv7 通过集成扩展高效层聚合网络(E-ELAN)改革了其架构,该网络允许模型学习更多不同的功能,以便更好地学习。
此外,YOLOv7 还通过连接 YOLOv4、Scaled YOLOv4 和 YOLO-R 等衍生模型的体系结构来扩展其体系结构。这使得模型能够满足不同推理速度的需求。
基于连接的模型的复合放大深度和宽度 ( 来源
2-可训练的免费包
免费赠品袋一词指的是在不增加训练成本的情况下提高模型的精度,这也是 YOLOv7 不仅提高了推理速度,还提高了检测精度的原因。
结论
本文介绍了 YOLO 相对于其他最先进的对象检测算法的优势,以及它从 2015 年到 2020 年的发展,重点介绍了它的优势。
鉴于 YOLO 的快速发展,毫无疑问,它将在很长一段时间内保持物体探测领域的领先地位。
本文的下一步将是 YOLO 算法在现实世界中的应用。在此之前,我们的Python 深度学习简介课程可以帮助你学习神经网络的基础知识,以及如何在 Python 中使用 Keras 2.0 构建深度学习模型。
是的,YOLO 是一种实时检测算法,适用于图像和视频。
在平均精度(mAP)方面,更快的 R-CNN 达到了 87.69%。然而,YOLOv3 的速度令人难以置信,其每秒帧数(FPS)是 R-CNN 的 8 倍。
这是因为 YOLO 在一次转发中预测了一幅图像中的所有物体。
YOLO 能够同时检测 9000 多个类别。
您的主要资源综述:2022 年 5 月💡
欢迎阅读新培训、活动和最佳实践资源的每月综述。投入其中,与您的团队分享这些更新,并提升您的员工技能。
介绍 DataCamp Recruit
您或您的同事是否在努力招聘数据人才?事情变得简单多了。通过 DataCamp Recruit,您可以接触到数千名具备所需技能的数据专业人员。
即将举行的活动
加入我们的网络研讨会和现场培训课程。
| | | |
| Q2 内容和产品网上研讨会
观看点播 | 实施 Power BI:最佳实践&避免灾难
立即注册 | 使用 DataCamp 招聘
更快地雇佣数据人才立即注册 |
新训
在与微软合作创建的最新数据分析师 Power BI 课程中提升您团队的技能。从 Power BI 初学者入门,到 DAX 和数据建模,应有尽有。我们迫不及待地想看看你的团队接下来会学到什么。
| | | |
| 与微软合作的 Power BI 数据分析师
了解更多信息 | 案例分析:分析 Power BI 中的就业市场数据
了解更多信息 | 案例分析:分析 Power BI 中的就业市场数据
了解更多信息 |
最佳实践资源
提升员工水平所需的专业知识。
| | | |
| 构建数据技能学院的 5 个最佳实践
立即阅读白皮书 | 在星巴克培养数据素养
现在收听播客 | 埃塞克斯郡议会:利用数据造福社会
立即阅读案例研究 |