原文:TowardsDataScience Blog
协议:CC BY-NC-SA 4.0
原文:https://towardsdatascience.com/️wordnet-a-lexical-taxonomy-of-english-words-4373b541cfff?source=collection_archive---------10-----------------------

梁杰森在 Unsplash 上的照片
就自然语言处理(NLP)而言,自动理解和分析单词的含义以及预处理文本数据可能是一项具有挑战性的任务。为了支持这一点,我们经常使用词典。词典、词库、单词本或词库是个人、语言或知识分支的词汇。我们经常将数据中的文本映射到词典,这反过来帮助我们理解这些单词之间的关系。
一个真正有用的词汇资源是 WordNet 。它独特的语义网络帮助我们找到单词关系、同义词、语法等。这有助于支持 NLP 任务,如情感分析、自动语言翻译、文本相似性等。
这篇文章旨在展示 WordNet 的一些特性,并讨论如何获得关于语言数据的新见解。
WordNet 是一个大型的英语词汇数据库。名词、动词、形容词和副词被分成称为“同义词集”的认知同义词集,每个同义词集表达一个不同的概念。同素集使用概念语义和词汇关系,如上下义关系和反义词来相互联系。

搜索单词‘书’时的 WordNet 网络— OpenScience
在 WordNet 术语中,每组同义词都是一个同义词集,构成同义词集一部分的同义词是同一概念的词汇变体。比如上面的网络中,神的话语,字,经文,圣令状,圣典,好书,基督教圣经和圣经组成了与概念圣经相对应的 synset,这些形式中的每一种都是词汇变体。
WordNet 表面上看起来像一本同义词词典,它根据单词的意思将单词分组。然而,有一些重要的区别。
- 首先,WordNet 链接的不仅仅是单词形式——字母串——还有单词的特定含义。结果,在网络中发现的彼此接近的单词在语义上被消除了歧义。
- 第二,WordNet 标记单词之间的语义关系,而词库中的单词分组除了意义相似之外不遵循任何明确的模式。
自然语言工具包( NLTK )是一个用于 NLP 的开源 Python 库。它的伟大之处在于它附带了几个语料库、玩具语法、训练过的模型,以及这个博客感兴趣的主题 WordNet。NLTK 模块包括具有 155,287 个单词和 117,659 个同义词集的英语 WordNet。
WordNet 可以通过以下方式从 NLTK 导入:
我们可以使用和功能查找 WordNet 词典中的单词。
可以用以下形式的三部分名称定义一个 synset:
synset = WORD。位置 NN
其中:
- 单词—您要搜索的单词。
- 词类(POS) —特定的词类(名词、动词、形容词、副词、代词、介词、连词、感叹词、数词、冠词或限定词),单词根据其定义和上下文与之对应。
- NN —一个感应键。一个词可以有多种含义或定义。所以“cake.n.03”是“cake”这个词的第三个名词意义。
POS 和 NN 参数是可选的。
从前面的例子中,我们可以看到和有几种可能的上下文。为了帮助理解每个词的意思,我们可以使用函数查看它们的定义。
同样,如果我们需要在上下文中澄清一些名词和动词的例子,我们可以使用函数。
我们还可以确定单词之间的相似度。函数通过遍历 WordNet 网络中连接两个单词的路径,返回一个表示这两个单词相似程度的分数。
WordNet 包括几种不同的相似性度量。例如,Wu & Palmer 的 similarity 通过考虑网络中两个同素集的深度以及它们最具体的祖先节点(最小公共包含器(LCS))来计算相似性。

相似性得分在 0
例如,让我们考虑动词和与名词和之间的相似性。0.86 和 0.91 的高分表明它们确实彼此相似。注意,当比较单词和之间的相似性时,输出是 None。这意味着无法找到这些单词之间的路径。
为什么这在 NLP 中有用?
语言是灵活的,人们会用各种不同的词语来描述同一件事情。因此,如果您有一个大型客户评论数据集,并且您想要提取那些讨论产品相同方面的评论,找到相似的评论将有助于缩小搜索范围。
上下义关系编码一个更一般的术语和它的具体实例之间的词汇关系。
一个上位词被描述为一个比给定单词更通用的单词。即它的上位词:如果 X 是 Y 的上位词,那么所有 Y 都是 X,比如动物是狗的上位词。
而上下义关系是两个概念之间的关系,其中概念 B 是概念 a 的一种类型,例如牛肉是肉的下义关系。
为什么这在 NLP 中有用?
上下义关系的知识对于诸如问题回答之类的任务是有用的,其中可以建立模型来理解非常一般的概念,但是被询问特定的问题。
以编程方式识别准确的同义词和反义词比它应该的要困难得多。然而,WordNet 很好地解决了这个问题。
同义词是同一种语言中在某些或所有意义上具有相同或非常相似的意思的单词或表达。例如,WordNet 网络中围绕单词 car 的同义词有 automobile、machine、motorcar 等。
反义关系可以定义为表示“对立”的词汇关系。此外,直接反义词对的每个成员都与一些语义相似的形容词相关联。例如胖是瘦的反义词;肥胖的反义词也是瘦因为肥胖和胖属于同一个 synset。自然,有些词没有反义词,其他词如推荐只是在 WordNet 中没有足够的信息。
为什么这在 NLP 中有用?
还是那句话,语言是灵活的。同义词和反义词有助于缩小相似和相反文本的搜索范围。
部分转喻表达‘成分-of’关系。即两个概念之间的关系,其中概念 A 构成概念 b 的一部分。对于部分名称,我们可以利用两个 NLTK 函数:和。例如,名词的部分名词包括冠和物质名词水的部分名词包括氢。
全同词表示“隶属”关系,即两个概念之间的关系,其中概念 B 是概念 a 的成员。我们可以利用两个 NLTK 函数:和。例如,名词车的部分全词包括轮和名词木的实体全词包括棍。
蕴涵是两个动词之间的语义关系。如果 B 的意义符合逻辑并且严格地包含在 C 的意义中,则动词 C 必然包含动词 B。这种关系是单向的。比如打鼾需要睡觉,但是睡觉不需要打鼾。
WordNet 也是一个非常重要的翻译资源,因为就语言数量和涵盖的单词和概念数量而言,它是当今最大的多语言词典之一。它甚至被 Google Translate 用作拥有 WordNets 的语言之间翻译过程的一部分。
目前,对于大量的语言,WordNet 有不同开发阶段的版本。这不仅包括最广泛和最著名的语言,如法语、德语、汉语、西班牙语或葡萄牙语,还包括不太知名的少数民族语言,如阿尔巴尼亚语、卡纳达语、克罗地亚语、巴斯克语、加泰罗尼亚语、加利西亚语和威尔士语。
我们可以使用函数返回 NLTK 的 WordNet 版本中所有可用语言的列表,并搜索意大利语单词 dog。
为什么这在 NLP 中有用?
WordNet 可用于执行(粗略的)语言翻译。
这篇文章涵盖了 WordNet 必须提供的一些主要特性,以及它独特的语义网络如何帮助支持 NLP。
关于 WordNet 特性的更多信息,请点击这里:
https://globalwordnet.github.io/gwadoc
https://www.nltk.org/howto/wordnet.html
原文:https://towardsdatascience.com/1-001-terms-for-improving-ai-wont-get-us-anywhere-8d0ebb?source=collection_archive---------28-----------------------

格雷格·拉科齐在 Unsplash 上的照片。作者的修改。
有很多人在努力让人工智能和机器学习变得不那么糟糕。事实上,今年早些时候,我加入了一家初创公司,该公司希望帮助人们与人工智能建立更深层次的联系,为他们提供一种更直接的方式来控制算法能为他们做什么。我们称它为“移情人工智能”。当我们试图给这个新术语赋予意义时,我开始好奇其他团体是如何称呼他们自己提出的算法解决方案的,这些算法对我们有利而不是不利。以下是我发现的概述。
对于我们 Waverly 来说,同理心是指让用户控制他们的算法,并帮助他们实现自己的愿望。我只找到了一家公司使用相同术语的另一个例子,但方式不同。2019 年,Pega 使用了术语同理心 AI 来销售其客户同理心顾问(Customer Empathy Advisor)解决方案,该解决方案可以帮助企业在提供销售报价之前收集客户输入。这与电子商务网站基于用户行为进行推荐的传统方法形成了对比。
尽管 Waverly 和 Pega 都认为同理心是倾听人们,而不是基于大数据集主动推荐结果,但他们方法的关键区别是谁与人工智能交互。在 Waverly,我们开发的工具旨在供用户直接使用,而 Pega 则为企业提供工具,为用户创建和调整推荐。
N.B .同理心 AI 不应该与 人工同理心(AE) 混淆,人工同理心是一种旨在检测和响应人类情绪的技术,最常用于机器人和虚拟助手等系统中。今天这方面的实际例子并不多,但一些值得注意的尝试是具有有限模拟情感范围的机器人宠物,如 Pleo 、 艾博 和Cozmo。在软件方面,有人试图根据你的 打字行为 或 语调 等信号来推断人类的情绪。
这是投入巨资改善人工智能技术的大型组织最常用的术语。埃森哲、微软、谷歌和普华永道都有他们定义的负责任人工智能的某种框架或原则。(有趣的是,谷歌对这个术语的解释在他们自己的搜索引擎上排在第三位。)

作者截图
以下是这些公司如何诠释负责任的人工智能概念的概述:
- 埃森哲:在人工智能解决方案中建立信任的框架。这是为了帮助防止使用有偏见的数据和算法,确保自动化决策是合理的和可解释的,并帮助维护用户信任和个人隐私。
- 微软:以人为本的道德原则,包括公平、可靠&安全、隐私&安全、包容、透明和责任。
- 谷歌:在公平、可解释、隐私和安全的原则下,指导人工智能在研究和产品中的开发和使用的道德宪章。
- 普华永道:一个解决责任五个维度(治理、可解释性&可解释性、偏见&公平性、稳健性&安全性、道德规范&监管)的工具包。
虽然很难从每家公司提取一个简明的定义,但结合他们在人工智能中谈论“责任”时使用的不同术语,可以让我们了解这些公司关心什么——或者至少是他们认为可以卖给客户的东西。
你可能已经注意到,公平作为负责任的人工智能的子集反复出现,但是 IBM 有最大的资源专门用于这个概念,他们有人工智能公平 360 开源工具包。公平的定义通常是指避免系统和数据集中不必要的偏差。
鉴于公众越来越关注与偏见和包容性相关的系统性问题,公平是创造更好的人工智能最相关的概念之一也就不足为奇了。尽管对这个术语的理解似乎很广泛,但围绕公平的影响仍有很多必要的对话。最近一篇关于 HBR 的文章试图证明公平不仅仅是道德的;这也将使公司更有利可图,生产率更高。为了更好地了解人工智能编程中最微小的决定如何能够在社会中引起巨大的涟漪,请查看 Nicky Case 的精彩互动演示多边形的寓言。
2018 年,欧盟组建了一个关于人工智能的高级别专家组,通过四个交付品为其人工智能战略提供建议。2019 年 4 月,欧盟公布了第一个可交付成果,即一套可信人工智能的道德准则,该准则声称这项技术应该:
- 合法——遵守所有适用的法律法规
- 道德——尊重道德原则和价值观
- 稳健——既从技术角度出发,又考虑到其社会环境
该指导方针进一步细分为 7 个关键要求,涵盖了机构、透明度和隐私等主题。
几乎整整一年后,德勤发布了商标为 的可信人工智能框架。令人失望的是,他们甚至没有提及欧盟在声称对该术语拥有所有权之前所做的大量工作。然后他们重新利用它来创造他们自己的六个维度,看起来很像其他人所说的负责任的人工智能。对他们来说,Trustworthy AI 公平公正、透明可解释、负责任、稳健可靠、尊重隐私、安全可靠。该框架甚至附带了一个图表,可以轻松添加到任何高管的 PowerPoint 演示文稿中。

图片来源:德勤
最后,在 2020 年末,Mozilla 发布了他们关于可信人工智能的白皮书,其中有他们自己的定义。
Mozilla 将可信赖的人工智能定义为明显值得信任的人工智能,考虑责任、代理以及个人和集体福祉的技术。
尽管他们承认这是欧盟在可信度方面工作的延伸,但与 EU-建立的对可信人工智能的理解的偏离,延续了公司在沟通上不结盟的趋势。
如果技术最终隐藏在一个黑盒子里,无法理解,那么所有这些不同的框架和原则都没有任何意义。这就是为什么上面讨论的许多框架都提到了可解释的人工智能。
这些术语指的是一个算法的代码能被理解到什么程度,以及可以用什么工具来理解它。它们经常被互换使用,比如在维基百科的页面上,可解释性被列为可解释性的一个子集。其他人有不同的观点,比如本文的作者,他讨论了两者之间的差异,并在一个光谱上提出了这些术语。

归功于康纳·奥沙利文
由于这些术语的技术性质,我对它们的区别的理解是有限的。然而,似乎需要在“可解释的人工智能”(XAI)和“可解释的模型”之间进行区分。上面的图表描述了算法可以基于的不同模型,而维基百科页面谈论的是更广泛的 XAI 概念。在这一点上,它感觉像是吹毛求疵,而不是为大多数人提供澄清,所以我将把这场辩论留给专家。
当我评估所有这些术语时,我发现自己困惑多于放心。该行业正在使用在日常语言中具有相当分量的词汇,但在人工智能的背景下以相对任意的方式重新定义它们。虽然有一些共同的努力来创造共同的理解,最明显的是围绕欧盟准则,每个公司的定义的范围和重点是不同的,这可能会导致沟通和公众理解的问题。
作为一个社会,我们似乎同意我们需要符合人类最大利益的人工智能系统,但我们仍然找到了一种方法,让它成为一场比赛,看谁因这个想法而不是解决方案而获得荣誉。事实上,人工智能研究和部署公司 OpenAI(其使命是确保人工智能造福全人类)的一项分析表明,竞争压力实际上可能会推动公司在安全方面投资不足,并导致集体行动问题。
虽然结盟是理想的,但在这个早期阶段的多样性是走向集体理解的自然一步。当务之急是,我们不要陷入试图找到让我们的公司听起来不错的术语,而是采取必要的步骤来创建为我们所有人提供有利结果的人工智能系统。
如果你想直接在你的收件箱里收到我写的东西, 点击这里💌T10。
原文:https://towardsdatascience.com/1-1-3-wait-no-1-1-2-how-to-have-gpt-sanity-check-itself-136ebf?source=collection_archive---------31-----------------------
大型语言模型有一个问题,他们往往只是编造东西。这可能是因为训练数据、提示或者甚至仅仅是歧义。这可以通过设计让 GPT 健全检查其输出的提示来缓解,它可以与 GPT3 和 GPT-J 一起工作(后者可以免费使用)。
我所说的健全检查是什么意思?嗯,通过设置您的提示来仔细检查输出,结果是这样的:
与使用类似于以下内容的传统提示符相比,您可以提高性能:
此外,对于像我一样不擅长阅读的人,你可以跳过这篇文章,只需使用链接的 colab 使用 GPT-J 自己运行代码。
作为背景,还有一些其他方法可以用来缓解这类问题。最流行的是手动筛选你喜欢的答案。这很无聊,而且如果您试图自动化流程,这也没有什么帮助。还有另一种方法,让一个模型通过中间步骤展示它的工作,这可以提高推理能力,这很酷。然而,我认为值得看一看自我纠正,看看 GPT 能在多大程度上审视它所发表的内容,并决定它是否需要改进,因为人们似乎没有深入研究它(尽管去年有一些有趣的关于猜测和检查随机代数解决方案的很酷的推文)。
举个玩具例子,我用算术。为什么是算术?首先,我们可以衡量一个答案是否正确,知道这一点是有好处的。第二,虽然有一种说法认为语言模型在算术上表现不佳的原因是由于 GPT 令牌的编码方式,但我怀疑多位算术存在搜索问题,你必须从右到左进行加法才能携带数字,当你只是提前预测时,很难猜测数字会被携带到哪里。GPT 不擅长这种类型的搜索,如果搜索导致了这个问题,那么做双重检查应该会有所帮助。
总之,在这篇文章中,我将向您展示如何生成包含 1-30 个示例的上下文,使用标准的少数镜头和改进的自检少数镜头运行它们的完成,然后我们将绘制错误(图 1)并看到,与传统的少数镜头相比,自检提示确实具有更低的错误和更高的精确匹配。下面是图表的样子(注意,对于精确匹配,我们获得了 16%的最高准确率,而使用逗号的 GPT3 可以获得超过 90%的最高准确率,所以可能会有很大的差异)。

图 1:在使用 GPT-J 的 4 位数算术中,与常规的少量尝试相比,自校正提示具有更低的平均绝对百分比误差(左)和更高的精确匹配(右)
这适用于 GPT-J 和 GPT-3 模型,您只需以不同的方式设置您的查询函数,这就是我们将要开始的地方。当我们查询这类任务的完成情况时,我们希望使用 0 temperature,因为我们希望获得最有可能的令牌,而不是随机加入其他数字。下面是我在 J 中的查询函数的样子(借用了 GPT-J 演示笔记本中的 infer 函数,这个函数很酷):
设置提示
现在,我们将继续设置我们的提示。我们将随机创建 30 个例子作为提示,100 个例子作为测试集。
对于纯/传统的情况,我们只是让所有的例子都按照提示排列起来,但是我们在这里要做的自我纠正是随机设置一些错误的例子。我们将错误的答案(或正确的答案)称为原始总和,这样我们可以告诉模型稍后将其纠正为正确的答案。
接下来,我们只需创建我们的提示。我们将有一组提示,一组是关于纯粹的几个镜头,另一组是关于修正后的镜头。为了了解我们需要多少个示例,我们将进行网格搜索,并从 1 到 30 个示例中尝试运行。
现在我们已经设置好了所有的提示,是时候对照测试集来试试了!
运行测试
为了运行测试,我们将开始设置实际的查询(a + b =),然后将它添加到每个提示的末尾(有无自我纠正)。然后,我们将运行整个程序,并在它执行 6000 次查询时袖手旁观。我们还会在每次检查测试集时将它转储到 JSON,以防出现问题,以便我们可以恢复。
评估
好,现在我们有了 6000 份文件,我们将对其进行评估。我首先将测试集重命名为 test ,因为……为什么不呢。由于我还不知道如何用 GPT J 做一个停止序列(我的学位是新闻学,数学很难),我们必须解析出我们想要的答案。对于传统的方法,这只是出门的第一个“字”。对于自校正方法,它是第一组输出的最后一个“单词”。
现在我们将把它应用到我们所有的结果中,并计算误差。
现在我们只是绘制结果

图二。等等,不对,还是图 1。
在关闭
你可以用 GPT3 和 J 运行上面的代码,你会得到同样的改进。我把它作为一个练习留给读者,让他们也用逗号来做这件事(您可以只使用 f " { x:} "来格式化带有逗号的内容)。不过,它能工作真的很酷。

同样,如果你在 GPT3 中使用逗号,你会得到更多类似的东西,这取决于模型大小/微调。虽然不确定在 17 个例子中发生了什么。
我认为这里发生的事情是,因为它不能提前预测,有时它开始制造随机数字,直到它到达末尾,然后这给了它检查下一次应该是什么前几个数字的上下文。虽然我不完全确定。这些模型很奇怪。
原文:https://towardsdatascience.com/1-line-of-python-code-for-data-profiling-d8f?source=collection_archive---------7-----------------------

米米·蒂安在 Unsplash 上的照片
Python 是程序员和数据科学家最常用的编程语言之一。程序员喜欢 Python,因为它的程序员友好的行为。数据科学家热爱 Python,因为大多数机器学习和深度学习库都有 Python 版本。
当我们谈论程序员或数据科学家时,在现实世界中,当我们为任何项目或客户工作时,我们都需要理解数据。数据是每个行业的决定性因素。我们需要应用不同的编程逻辑、分析和进一步的建模练习来了解数据。
分析数据并使数据适合您的任务花费了大量时间。在 python 中,我们有一个库,可以在一行 python 代码中创建端到端的数据分析报告。
本文将介绍这个库,它可以在一行代码中为我们提供详细的数据分析报告。你唯一需要的就是数据!
是最著名的 python 库之一,程序员可以用一行 python 代码立即获得数据分析报告。
要安装该库,可以使用 pip 命令,如下所示。
一旦安装了,我们可以使用下面的 import 命令导入这个库。
我们将使用熊猫来导入数据集。
在这篇文章中,我们将使用开源房价数据。数据可以从这里下载。

导入数据集

数据快照
一旦我们准备好数据,我们就可以使用一行 python 代码来生成数据分析报告,如下所示。
运行下面的命令后,您将看到进度条根据特定参数生成数据分析报告。

生成数据分析报告
成功生成报告后,我们可以将报告保存为 HTML 文件并与其他人共享。
您可以使用下面一行代码将报告保存为 HTML 格式。
总体数据摘要

作者截图
每个变量的详细信息


作者截图


作者截图
变量之间每个相关性的详细可视化

作者截图

作者截图
缺失值计数

作者截图
不同种类的互动

作者截图
以及更多关于数据理解的激动人心的细节。
我们已经看到了一行 python 代码如何帮助我们提供详细的数据分析报告。
性能分析报告可以为我们提供数据的总体摘要、关于每个特性的详细信息、组件之间关系的可视化表示、关于缺失数据的详细信息,以及许多有助于我们更好地理解数据的有趣见解。
更多精彩文章敬请期待。我通常写编程和数据科学的实践方面。
感谢您的阅读!
在你走之前……
如果你喜欢这篇文章,并希望继续关注更多关于 Python &数据科学的精彩文章——请点击这里https://pranjalai.medium.com/membership考虑成为一名中级会员。
请考虑使用我的推荐链接注册。通过这种方式,会员费的一部分归我,这激励我写更多关于 Python 和数据科学的令人兴奋的东西。
还有,可以随时订阅我的免费简讯: Pranjal 的简讯 。
原文:https://towardsdatascience.com/10-advanced-matplotlib-concepts-you-must-know-to-create-killer-visuals-9a32d241e31d?source=collection_archive---------1-----------------------

拍照由 Joycoast Wood 手表&太阳镜 上 防溅 。除非另有说明,所有图片均为作者所有。
其实根本没有什么高级 Matplotlib 用户。问题只是谁在文档上花了更多的时间,并且实践了他们所阅读的内容。
所以,如果你的目标是成为一名“高级 Matplotlib 用户”,那么在你的道路上只有两个障碍。第一——花几个小时沉浸在 Matplotlib 文档中,第二——接触每一个遇到的代码块。我的工作是通过教授一些你只会在 10 分钟内看到专业人士使用的关键概念,让你跳过第一个障碍。
让我们从最高层的概念开始。
我们清单上的第一个是字典。它包含所有用于创建图形默认样式的 Matplotlib 设置。您直接从名称空间导入它:
在处理不同的项目时,您将不得不在不同的环境中为不同的受众呈现图表。基于这一点,你必须事先修改这本字典,这样你未来的视觉效果才会有一致的主题和风格。这也将节省时间,因为您可以避免每次创建新的绘图时调用相同的参数。
如果你搞砸了什么或者想回到默认状态,你可以调用 PyPlot 的函数,它会重置一切。
https://ibexorigin.medium.com/membership
获得由强大的 AI-Alpha 信号选择和总结的最佳和最新的 ML 和 AI 论文:
https://alphasignal.ai/?referrer=Bex
实际上,Matplotlib 是完全面向对象的。

来自 Matplotlib 文档的图像
你在上图中看到的每个组件都是作为一个单独的类实现的。它们都继承自名为 Matplotlib Artist 的基类。这就是为什么你会经常在 MPL 文档中读到这个词。
为一个情节的每一个方面创建一个单独的类会带来一定程度的复杂性,但是它也给了你很大的灵活性。
一个伟大的情节的关键是定制。不仅仅是对剧情的简单改动,而是最深层次的定制。你应该能够调整你的视觉效果的每一个组成部分,使之符合你的品味、主题和专业性。
为了实现这一点,您应该知道如何提取您想要定制的组件。幸运的是,Matplotlib 有许多以前缀开始的函数,这允许您从创建的图形或轴中检索不同的类。这里有一个例子:
假设您想要定制该图的 xticks:

这很简单,只需在 axes 对象上调用,就可以得到 Matplotlib 实例的列表:
您也可以使用调整刻度线,或使用调整刻度的位置。
你可能想知道,我们实际上如何调整这些对象?我们将在下一节回答这个问题。
一旦有了想要定制的组件,就应该知道它们接受什么属性或参数。这是你使用两把瑞士军刀的地方。
首先,在你的对象上调用函数,看看它当前有什么参数。例如,假设我们想要对下面的图进行样式化:

如您所见,我将每个线图存储在一个单独的变量中,以备后用。现在,我们在第二行上调用:
不出所料,该函数打印出了的默认值。要改变一个属性,我们将使用另一个函数- 。在不带任何参数的对象上调用此函数会打印出该对象接受的属性值:
要仅打印单个属性的可能值,您可以将属性名称作为字符串提供给:
现在,让我们最后对第二行做一些修改:
要查看更改后的当前图形,只需调用图形对象上的:

如你所见,第二行与其余的完全不同。
简而言之,如果您想要设置绘图中特定组件的样式,您应该遵循以下步骤:
- 通过直觉或者 MPL 的文档来识别元素的名称。
- 使用相关的函数提取它
- 用查看其当前属性
- 用找出每个属性可能接受的值
- 用同一个函数改变你想要的参数。
图例是具有许多不同组件的复杂图的组成部分。一个好的情节不会让它的观众去猜测,而在一个传奇故事中提供准确和“容易理解”的信息是实现这一点的关键。
幸运的是,您可以仅使用 PyPlot API 中的或 OOP API 中的中的函数来控制任何绘图的图例。调用不带参数的函数会创建一个带有默认值的图例:

然而,正如我所说的,我们希望定制每个组件,使它们尽可能漂亮,当涉及到 Matplotlib 默认值时,我们很少能这么说。
所以我建议看一下函数的 Matplotlib 文档(链接)。然而,我认为传奇最重要的参数是:
- -图例的位置
- -另一个位置参数,特定于图例的舍入框(详情请阅读文档)
- 字体属性—大小、颜色、样式
- -当有许多元素时,图例中的列数
也可以在创建图例后更改这些参数。只需用提取并使用、功能。
你有没有想过 Matplotlib 是如何改变它的颜色或者自己在不同的风格中循环的?
原因是,在幕后,Matplotlib 使用 Python 内置的称为 Cyclers 的对象:

功能非常通用。它接受任何键值参数,并创建一个字典列表:
此外,您可以使用“加”和“乘”运算符组合多个循环,以获得参数的索引到索引或穷举组合:
现在我们知道了什么是循环程序,我们可以创建自定义的循环程序并将它们传递给我们的绘图,这样 Matplotlib 就只循环我们指定的参数。下面,我们创建四种不同的线条样式,允许 Matplotlib 在不同的线条颜色、样式和粗细之间循环:
您可以使用 axes 对象的功能将该自定义循环程序传递给绘图:

如你所见,正弦波的线条完全不同。
创建循环程序时,它们的每个参数和值都必须与 Matplotlib 对齐。例如,要创建一个迭代不同颜色的 cycler,您应该知道 Matplotlib 允许它的绘图使用哪种颜色。
您也可以将您的自定义循环仪添加到字典中。以下是默认值:

我提出的关于图例的所有论点都适用于轴刻度。轴刻度应准确传达数据点的最小值和最大值及其单位,并显示几个关键检查点,以便在不同的绘图部分之间进行比较。
如图例所示,大多数刻度属性可以通过 axes 对象的 ( docs link )函数来控制。以下是其中的几个例子:
您应该始终指定的第一对参数是和。根据这些参数,您设置的参数将应用于 X 轴或 Y 轴刻度以及次要或主要刻度。
顺便说一句,大多数时候,小记号在 Matplotlib 中是不可见的。要快速打开它们,使用轴对象上的功能:

这里有一个很棒的资源,它展示了关于函数的更多信息。
有时,您不想麻烦地给出定制的 tick 参数。在这种情况下,您可以使用许多内置的 Matplotlib 的 tick 参数“主题”集合,称为ticker。
如你所见,在子模块下有很多。我建议使用文档浏览一下它们,了解一下它们各自的功能。
一般来说,标题中带有的按钮控制刻度的位置。让您设计刻度标签的样式。通常,您会根据自己的需要使用一对定位器和格式化器。一旦您从上面的列表中选择,您可以通过以下方式将它们传递到您的绘图:
使用 axes 对象的或属性,并调用函数,传入类名。上面,我们使用工程符号来格式化 X 轴记号。
一些情节中最微妙但最有影响力的元素之一是网格线。
一个经验法则是,当图中的水平和垂直变化会向上下文传达额外的含义时,创建网格。例如,当图中有许多条时,水平网格很有用。
在 Matplotlib 中,您可以使用 axes 对象的函数创建和定制网格。下面是一个难看的垂直网格示例:

我建议你阅读文档了解详情。
条形图在数据分析过程中很常见。他们最重要的方面是每个酒吧的高度,所以你需要让你的观众容易区分每个酒吧。这就是你需要使用条形标签的地方。
您可以使用一些算术计算在每个条上方放置一个文本注释来手动完成此操作,但是有一种更好的方法。函数接受一个 BarContainer 对象作为参数,并自动用它的高度标注每个条。
这是一个简单的 Seaborn 计数图:

每次使用 Seaborn 或使用类似于的函数创建柱状图时,对象都会被添加到一个图中。然后,您可以使用 axes 对象的属性来检索这个容器对象:
如您所见,上面的列表中有一个包含 5 个小节的 BarContainer 对象。现在,我们只需在创建情节后将该对象传递给:

请注意,当条形标签变得狭窄时,您需要修正轴限制。
最后,我们还有另一个微妙的方面——显示顺序。当你叠加不同的情节时,这是一个重要的概念。你需要确保每一个情节都以正确的顺序绘制在画布上。要实现这一点,您需要参数。
下面,我们用不同的 zorders 创建三行(取自文档):

效果清晰可见。如果你注意的话,图例的 zorder 是用函数指定的,这也是可以接受的。此外,您还可以使用之前的功能更改任何对象的排序。
我告诉过你什么?所有这些都非常简单。现在,悲伤的部分来了。
你可以掌握每一个 Matplotlib 函数和类,但你仍然不是 Leonardo da Matplotlib。很抱歉,在你开始画这样的东西之前,还需要几个月的时间:
https://ibexorigin.medium.com/yes-these-unbelievable-masterpieces-are-created-with-matplotlib-2256a4c54b12
问题不在于你知道多少功能和“高级”概念,而在于你如何使用它们。


[ 多类分类指标综合指南
towardsdatascience.com](/comprehensive-guide-on-multiclass-classification-metrics-af94cfb83fbd) </25-numpy-functions-you-never-knew-existed-p-guarantee-0-85-64616ba92fa8> </7-cool-python-packages-kagglers-are-using-without-telling-you-ecf4>
原文:https://towardsdatascience.com/10-applications-of-machine-learning-within-petrophysics-3709b1c4323a?source=collection_archive---------6-----------------------

丹·梅耶斯在 Unsplash 上的照片
几十年的油气勘探已经导致了大量与井相关的测量数据的采集和存储,这些数据已被用于表征地下地质及其油气潜力。随着计算能力的提高和新机器学习算法的采用,这些大量数据的潜力在过去几十年中得到了越来越多的利用。在岩石物理领域,机器学习已被用于加快工作流程、将地质特征划分为离散电相、进行预测等等。
这篇文章的内容于 2021 年 9 月在伦敦岩石物理学会上发表,我的 YouTube 频道上有该演讲的修改版本。一定要喜欢,订阅它更多这样的内容。
岩石物理学是一门研究岩石的物理和化学性质及其与所含流体相互作用的学科。它是石油和天然气行业中的一个主要学科,旨在了解和量化储层中可移动碳氢化合物的性质和数量。导出的属性包括孔隙度(可用于储存碳氢化合物的储存空间的数量)、渗透率(孔隙相互连接的程度)和水饱和度(充满水的孔隙空间的数量,这反过来可用于计算碳氢化合物饱和度。
岩石物理项目包括分析井下测井工具获得的测量值。这些工具测量岩石的各种属性,包括它们的天然放射性,以及它们对电流、活放射源和声信号的响应。推导出的许多特性随后被转换并用于成熟的经验公式(如阿尔奇公式)中,以计算所需的储层岩石物理特性。许多作者试图绕过经验方程,建立机器学习模型,利用测井数据直接预测岩石物理性质。
此外,与任何涉及数据的项目一样,大量时间(高达 90%)可能会花在乏味但非常重要的任务上,如数据收集、数据质量控制、数据校正和数据转换。因此,许多机器学习的文章和应用都专注于提高这些阶段的效率和速度。
下面的文章涉及 10 个例子,在这些例子中,机器学习被用来帮助处理岩石物理工作流程的各个方面。每一个例子都包含了使用这些技术的关键和有趣的论文的参考列表。

在 Equinor Volve 油田的两口井上使用隔离森林的自动异常值检测。作者创造的形象。
异常值是位于数据集的正常或预期统计分布之外的数据点,它们可能由于测井测量中的各种原因而出现。原因包括但不限于:
- 测量和传感器误差
- 钻孔冲刷
- 钻井振动影响随钻测井工具
- 意外事件和地质
识别异常值并适当处理是非常重要的。这可以通过手动方法实现,如使用 Z 值、箱线图和常规交会图(散点图)。
最近许多研究论文都集中在使用无监督的离群点检测算法来突出潜在的离群点。这些方法包括 K 均值聚类、基于角度的离群点检测、支持向量机和隔离森林。
为了完全确认一个点或一组点是否是异常值,应该使用领域知识。这将降低可能是真实数据的点的错误分类的风险。
供进一步阅读的文章:
- Akkurt 等人,(2018): 利用机器学习加速和增强岩石物理分析:测井异常值检测和重建自动化系统的案例研究
- Banas 等人(2021 年):自动识别和修复不良测井数据的新方法
- Misra 等人(2020 年):测井和地球物理数据的无监督异常值检测技术

Ivan vrani在 Unsplash 上拍摄的照片
一旦识别出异常值和坏数据,通常可以在进行岩石物理解释或应用机器学习模型之前将其移除或修复。
识别和检查数据质量问题的过程可能会占用项目中大量的时间,因为许多作者都在寻找自动化/半自动化该过程的方法。模型在被认为“良好”的井段上进行训练,然后用于预测有问题的井段。
供进一步阅读的文章:
- Banas 等人(2021): 自动识别和修复不良测井数据的新方法
- Cuddy (2020): 在岩石物理学中使用人工智能的好处和危险
- Cuddy (2002): 利用模糊性修复井眼电测井曲线
- Singh 等人,2020: 机器学习辅助岩石物理测井质量控制、编辑和重建

测井标准化是岩石物理工作流程的一个常见部分。它用于消除由许多问题引起的数据不准确,包括不同的工具和传感器技术、井眼环境的差异以及工具校准问题。
标准化是重新标定或重新校准测井曲线的过程,以便它们与油田或区域内其他井的测井曲线一致。这可以通过对所需曲线应用单点标准化(线性移位)或两点标准化(“拉伸和挤压”)来手动实现。
标准化通常用于伽马射线测井,但也可用于中子孔隙度、体积密度、声波和自然电位测井。除非有足够的理由,否则电阻率测井一般不进行标准化(Shier,2004)。
供进一步阅读的文章:
- Akkurt 等人,(2019): 测井标准化的机器学习
- 麦克唐纳(2021): 岩石物理学:Python 中的伽马射线归一化
- Shier (2004): 测井曲线标准化;方法和指南

伊利亚·格拉西缅科在 Unsplash 上拍摄的照片
井间对比是一个常见的过程,其中一个或多个地质层段根据地质相似性(如岩性、生物含量或矿物学)联系在一起。对于地质学家来说,这可能是一项耗时费力的任务,自 20 世纪 70 年代以来,许多作者一直试图将这一过程自动化(Brazell 等人,2019)。最近,机器学习已被用于进行测井曲线对比,并取得了很大的成功。
尽管井与井之间的对比通常是由地质学家进行的,但有时岩石物理学家不得不处理顶部和相关性。当进行岩石物理分析时,相同地层的不同油井通常使用相似的参数。确保测井曲线正确相关,可使这一过程更顺利地进行。
文章延伸阅读:
- Bakdi 等人(2020 年):使用机器学习和面部识别技术自动进行油井对比
- Brazell 等人(2019): 一种基于机器学习的辅助测井对比方法
- Tokpanov 等人,(2020) 基于深度学习的自动化地层对比

多口井的可视化说明了不同程度的数据覆盖,从单点到整个曲线。作者创造的形象。
在进行地下表征时,数据集尽可能完整至关重要,但是,也存在测井测量缺失的情况。这可能包括不同年份的测井记录、测井速度超过工具采样率、井眼环境问题、数据管理不当、昂贵的采集成本和套管效应。
在这些情况下,可以使用剩余测井测量值之间的经验关系或通过使用来自当前井和/或补偿井的机器学习模型来填充数据。
供进一步阅读的文章:
- Akinnikawe 等人,(2018): 使用机器学习技术生成合成测井曲线
- Anemangley 等人,(2018): 使用岩石物理测井预测剪切波速的机器学习技术
- McDonald (2020): 使用 Matplotlib 可视化油井数据覆盖

对比两次伽马射线测井,一次来自主测井通道,另一次来自重复测井通道。测井曲线之间的偏移程度是变化的,并且通常不是固定的偏移。图片来自 McDonald(2021)——岩石物理机器学习模型的数据质量考虑。
深度是一口井成功开发和完井的关键测量指标,所有测井记录都与深度相关。它允许选择射孔间隔,并在正确的深度设置封隔器。因此,所有测量都必须使用一致的深度参考。
由于多种原因,测井测量可能彼此偏离深度,包括随钻测井和电缆测井之间的不同深度参考、电缆拉伸、工具类型和测井之间的不同采样率,甚至半潜式钻井平台上天气条件和海面膨胀的变化。在石油和天然气行业,确保多次通过和运行的测井记录一直是一个长期的挑战。
传统上,数据的对齐是手动进行的,通过在关键特征处添加的多通道和引脚,比较两条或多条测井曲线。然后将这些特征对齐,以创建彼此深度一致的数据。这一过程经常会有偏差,而且执行起来可能很耗时。
多年来已经开发了半自动和自动方法,利用两条测井曲线之间的互相关和协方差测量。然而,最近许多作者试图使用机器学习模型来自动化这一过程,并消除任何偏见。
供进一步阅读的文章:
- Bittar 等人(2020 年):多井测井深度匹配的强化学习技术产生更好的油藏描述
- 乐等(2019): 测井深度自动匹配的机器学习框架
- Zimmerman 等,(2018): 基于机器学习的测井深度自动匹配

岩心孔隙度和渗透率线性回归预测结果。图片作者。
岩石物理学家的主要成果之一是渗透率。它用于指示流体(尤其是碳氢化合物)流过岩石或储层的难易程度。目前,没有测井仪器可以直接测量井下地层渗透率,而是必须根据仪器响应或经验关系进行估计。许多经验关系是从特定地理和地质区域的岩心测量中得出的,可能不完全适用于其他区域。因此,通常的做法是导出岩心孔隙度和岩心渗透率之间的关系,并将该关系应用于测井导出的孔隙度。
岩心数据并不总是可用的,可能只存在于油田或开发中的少数几口井中。这是因为取芯操作既昂贵又耗时。因此,多位作者采用了机器学习模型,这些模型在关键油井上进行训练,然后用于预测所有其他油井渗透率。
供进一步阅读的文章:
- Akinnikawe 等人,(2018): 使用机器学习技术生成合成测井曲线
- 阿尔-安纳济和盖茨(2010 年):非均质储层渗透率预测的支持向量回归:对比研究
- Arkalgud 等人(2019): 畴转移分析——岩石物理分析的一种稳健的新方法
- Elkatatny 等人,(2018): 利用人工智能网络从测井曲线预测非均质碳酸盐储层渗透率的新见解
- McDonald,2020: 使用 Python 中的线性回归分析孔隙度-渗透率关系
- Saputelli 等人,(2019): 利用自组织映射(SOM)和人工神经网络(ANN)推导渗透率和储层岩石类型——实现岩心-测井整合的最佳工作流程

了解地下岩性是地球科学和岩石物理学中的一项重要任务。推导岩性标志或矿物体积是经常分配给岩石物理学家的任务之一。
机器学习算法通常被用来将测井记录测量值分成不同的岩性组,称为岩相。这个过程可以使用无监督学习或监督学习算法来实现。
数据的无监督聚类是探索性数据分析(EDA)的一种常见形式,用于根据共享的特征或属性将数据分成不同的组。彼此相似的数据点被分组在同一个群集中,而不同的数据点被放在另一个群集中。
供进一步阅读的文章:
- Cuddy & Putnam,1998: 使用模糊逻辑从电测井预测岩相和渗透率。
- Hall,2016: 利用机器学习进行相分类
- McDonald,2021: 如何使用 Python 对测井数据进行无监督聚类
- 张,詹,2017: 机器学习在岩石相分类中的应用:XGBOOST

照片由 Chanhee Lee 在 Unsplash 上拍摄
诸如体积密度和声波慢度之类的测井测量可用于深入了解储层的应力和岩石性质(杨氏模量、体积模量、泊松比等)。地质力学性质的推导是钻井规划中的一个重要步骤,以确保安全钻井和成功完井。它还可以让我们了解岩石如何随着应力、温度和压力的变化而变化和变形。
获取地质力学特性的最准确方法是对从油井中获取的岩心样本进行破坏性测试。这通常是在少量样本上完成的,用于校准和验证测井测量值和属性之间的经验关系。当在常规储层中获取岩心样品时,通常是在储层段上方,忽略了上覆层段。如果感兴趣,这将导致推断与这些部分的关系。
供进一步阅读的文章:
- AlBahrani 等人,(2021): 使用机器学习辅助的多孔弹塑性有限元方法建立完整的钻井地质力学模型
- 宋等,(2021): 利用机器学习方法预测和分析吉木萨尔页岩的地质力学性质

克里斯托弗·伯恩斯在 Unsplash 上拍摄的照片
确定关键的储层性质是岩石物理学家的主要任务之一,通常通过完善的关系和方程来实现。然而,许多研究集中在使用测井测量预测这些属性。
供进一步阅读的文章:
- Khan 等人,(2018 年):机器学习衍生的相关性,用于确定复杂岩性中的含水饱和度
- Basu 等人(2020 年):岩石物理工作流程与机器学习——威利斯顿盆地达科他集团的比较案例研究
- MacGregor 等人,(2018): 利用机器学习简化岩石物理工作流程
我们做到了!我们已经看到了 10 个机器学习可以为岩石物理工作流程带来益处和附加值的例子。这 10 个例子绝不是应用机器学习的唯一方式,在文献中还有更多。你是否遇到过机器学习在岩石物理领域的不同应用?如果是这样,请在这篇文章上留下你的评论,或者在 LinkedIn 上联系我们。
感谢阅读!
如果您觉得这篇文章有用,请随时查看我的其他文章,这些文章介绍了 Python 和测井数据的各个方面。你也可以在GitHub找到我在这篇文章和其他文章中使用的代码。
如果你想联系我,你可以在LinkedIn或者我的 网站 找到我。
有兴趣了解更多关于 python 和测井数据或岩石物理学的知识吗?跟我上 中 。
原文:https://towardsdatascience.com/10-basic-shell-commands-every-programmer-should-know-d5d43b009d20?source=collection_archive---------31-----------------------

照片由 Reza Namdari 在 Unsplash 上拍摄
我们都——可能——使用一些 GUI 开始了我们的数据科学或编程之旅。一个工具或一个应用程序,一切都建立起来了,我们只需要写代码,点击一些按钮来编译和运行它。瞧,结果出来了,我们结束了。
虽然图形用户界面绝对没有问题,但是随着你职业生涯的发展,你将需要一种更好、更快、更有效的方式来控制你的计算机并完成工作。它使用 shell 命令(Windows 中的命令提示符)来控制您的工作站。如果您想让自己的编程技能和职业生涯更上一层楼,使用 shell 命令是一项必须掌握的技能。
使用 shell 命令,您将能够利用计算机的真正能力,在更短的时间内完成更多的任务。一旦您掌握了 shell 命令,您将能够编写一些命令来更新您的系统,远程配置您的 web 服务器或数据库,以及更多更多的功能。
所有这些功能都始于一些基本的命令,以执行简单而重要的任务。在本文中,我将介绍 10 个基本的 shell 命令,无论从事什么领域的程序员都必须熟悉这些命令。
最基本和有用的命令是命令。我们经常将源代码文件和其他重要文件放在系统的特定目录中。命令将显示当前目录下的所有文件夹。
当前目录是你运行命令的地方。运行该命令将显示如下内容。

作者截图
如果您只想知道当前目录中有什么,使用命令是很好的。但是,如果您需要访问另一个目录呢?
这里是命令出现的地方。命令是“更改目录”的缩写使用该命令的方法是写入 cd,然后写入您要移动到的目录的名称或路径。
cd 命令有一些特殊的用法,主要是键入将带您回到目录树中的一个步骤,而键入没有目录名的将带您回到主目录。

作者截图
要创建一个新的目录—文件夹—您需要使用 make directory 命令()。命令只是创建一个新文件夹;你需要给它一个名字和一个路径。然后,将在给定的路径中创建一个具有给定名称的文件夹。
如果您没有为该命令提供路径,它将在您的当前目录中创建文件夹。一旦创建了文件夹,您可以通过运行命令来查看它。

作者截图
到目前为止,我们已经学习了如何更改目录、创建目录以及显示目录内容。如果你想创建一个文件呢?
然后你需要使用命令。这个命令可以用来创建各种类型的文件。这就是为什么在使用该命令时必须包含文件扩展名。

作者截图
如果你想在你的系统中搜索一个文件,你可以使用命令。哪种方式是在目录树中更快地找到文件的方法?
您可以通过添加或排除 -i 选项,让命令搜索一个区分大小写或不区分大小写的文件名。此外,您可以使用*来扩大搜索范围。如果您添加了 -r 选项,您甚至可以查找正则表达式。
如果要更改一个文件或一组文件的位置,可以使用 move (mv)命令来实现。mv 命令需要两条信息,您想要重定位的文件和新的目标位置。

作者截图
假设您想要移除/删除一个文件或目录;您可以使用移除()命令。如果您想要删除文件,您可以使用命令,后跟您想要删除的文件的名称或路径。
但是,如果你想删除一个文件夹,那么你需要在使用命令时添加 -r 选项。

作者截图
命令的一个稍弱的变体是。该命令用于删除空文件夹/目录。
有时你会深入目录树,以至于迷失了方向,不再知道自己的确切目录。尽管 shell 命令的标题应该告诉您当前的位置,但是您可以使用命令获得一个完整的位置。代表打印工作目录。

作者截图
您还可以使用 shell 来显示当前登录用户的信息。要做到这一点,您可以使用命令 whoami,它完全按照它所说的那样工作。

作者截图
在一些命令之后,你的外壳屏幕会变得混乱和拥挤。您可以从屏幕上清除旧命令及其结果,并使用命令开始清除。
作为一名程序员,无论你是一名数据科学家,一名应用程序开发人员,还是一名 web 开发人员,迟早你会发现自己需要掌握和使用 shell 命令来控制你的计算机。
使用 shell 将允许您使用计算机的全部功能并优化您的工作流程。在本文中,我介绍了每个程序员都应该熟悉的核心 10 个 shell 命令。当然,还有更多的命令,在你的职业生涯中,你会学到越来越多的命令。
掌握 shell 是您职业发展和进步的必经之路。好消息是,您实际上不需要记住这些命令;每天使用它们,你会自动做到。
shell 命令的世界是广阔的,命令本身根据您使用的系统而有所不同。本文中提到的是 Unix/ Mac 命令;它们的 Windows 版本略有不同。这可能会让事情有些混乱,但是随着练习和时间的推移,它会成为你的第二天性。
原文:https://towardsdatascience.com/10-best-free-websites-to-learn-more-about-data-science-and-machine-learning-f2c6d7387b8d?source=collection_archive---------2-----------------------

在 Unsplash 上由 Boitumelo Phetla 拍摄的照片
随着数据科学和机器学习的流行程度不断增加,更多的有志之士和爱好者正在探索这些领域。数据科学和机器学习创造了大量的机会。
每个人都渴望了解这些领域,并最终增加一些额外的知识。对于初学者和专家来说,有一些很棒的免费网站可以学习并获得进一步的曝光。
对于试图理解任何主题并了解数据科学和机器学习的确切实体并获得进一步复杂知识的初学者来说,从一些免费资源和材料开始总是更好。
虽然最初从数据科学开始,但在你真正喜欢上它之前,你不想在这个主题上花太多钱。幸运的是,数据科学是一门拥有大量奇妙资源的学科,可以在您的旅程中为您提供帮助。
有一些网站致力于为所有用户免费提供高质量的数据科学和机器学习内容,以最大限度地利用这些资源并从中受益。
在本文中,我们将尝试探索十个免费网站,我们可以利用它们来获得更多关于机器学习和数据科学的知识。所以,事不宜迟,让我们开始分析它们。


博伊图梅洛·菲特拉在 Unsplash 上的照片
Kaggle 也许是这个列表中最重要的条目。Kaggle 不仅仅是一个免费网站,而且 Kaggle 还是一个支持高质量数据科学、机器学习和深度学习项目的社区,以及许多其他可用的选项。
Kaggle 旨在为您提供有用的代码和资源,让您从零开始实施自己的项目,并为您提供大量数据集和数据储备,用于处理众多项目创意。
社区是支持的,并提供带有分析、探索性数据分析和代码的 Jupyter 笔记本。Kaggle 每年都会举办一系列比赛,您可以自由参加比赛,亲自探索。
Kaggle 还为您提供了一些 winners 解决方案,您可以从中阅读和学习,并在您的项目中进行实验。总的来说,Kaggle 是顶级免费网站选项之一,作为初学者或专家数据科学爱好者,你应该完全考虑利用它。
Jason Brownlee 的机器学习大师网站提供了一些互联网上最好的资源和内容。它涵盖了多个主题,并深入探讨了数据科学中一些最引人注目和最有趣的概念。
这个网站为每一个爱好者和渴望者提供内容和有用的资源。不管你是初学者还是专家,你访问这个网站都会获得很多难以置信的价值,而且这里的大部分内容都是免费的。
资源范围从初学者安装过程一直到复杂的机器学习、神经网络和深度学习计算和项目。如果你喜欢这个网站,作者也有很多高质量的书籍,你可以购买来支持他们。
我广泛地使用了这个网站,并从中传授了许多知识。我强烈建议每个数据科学爱好者至少访问一次这个网站,因为它涵盖了概念、代码、复杂的细节和对几个主题的理解。

由安娜·克鲁兹在 Unsplash 拍摄的照片
代码为的论文,顾名思义,涉及附有简明代码的研究论文。
这是一个令人惊叹的平台,也是一个完全免费的网站,所有爱好者都可以访问并了解更多关于数据科学、机器学习、深度学习等等的知识。
其中涉及的一些概念和主题对于初级用户来说可能相当高级。但由于研究论文旁边提供了代码,数据科学爱好者分析这些项目变得更加容易。我强烈推荐看看这个网站。
GitHub 是找到详细代码和编码架构的最佳地方。使用 GitHub 的主要原因是向许多优秀的人学习,他们提供详细的代码,让整个社区从中受益。
有了 GitHub,你不仅可以阅读和学习其他代码,还可以通过分叉在桌面上利用这些代码。您可以测试这些代码,验证它们,甚至根据您想要的项目修改它们以符合您的最大利益。
除了阅读他人的作品,您还可以发布您的项目和代码,供每个人使用和受益。将你的代码共享给所有人也是 GitHub 不可或缺的一部分。您可以通过更大项目的仓库或共享更小代码的简单 Gists 的形式来实现。
PyImageSearch(作者 Adrian Rosebrock)是帮助你开始计算机视觉项目的最佳网站之一。它还广泛涵盖了 OpenCV 和深度学习的主题,以免费构建简单和复杂的计算机视觉项目。
当我在做我的第一个计算机视觉项目时,这个网站是我发现的第一个网站,从那以后它就没有让我失望过。在我看来,该网站仍然是迄今为止构建计算机视觉项目的最佳机器学习资源之一。
如果你是一个计算机视觉项目的爱好者,并且想继续在这个领域建立更多的项目,我强烈建议你去这个网站查看更多的学习材料、知识和资源。如果你想支持作者,你也可以买他们的计算机视觉书籍。
此外,如果您对使用 OpenCV 学习计算机视觉感兴趣,并且希望从零开始学习初学者指南,我强烈建议您查看我的 21 分钟文章,该文章涵盖了这个主题。您可以通过下面提供的链接来完成。

作者截图来自 TDS
走向数据科学是 Medium 上最大的出版物之一,Medium 是让浏览者了解与数据科学、机器学习、可视化、计算机视觉等相关的思想、想法、代码和信息的最佳网站之一。
在免费网站上列出 TDS 的主要原因是,尽管访问无限内容只需要 5 美元,但你仍然可以免费查看大量关于数据科学和机器学习的有用资源和信息。
有一些了不起的高质量的作家在研究数据科学,并且为您提供了顶级的标准内容。您可以利用这个平台来加深对数据科学各种概念的理解和掌握。
Google AI 是 Google 致力于人工智能的一个部门。该网站也是免费的,提供与数据科学和机器学习相关的信息。
谷歌人工智能希望教育所有用户人工智能的好处,因此它是一个学习和获得更多人工智能知识的免费网站。
谷歌人工智能平台是一个非常有用的网站。它在其武库中提供了一系列广泛的主题,包括研究主题,人工智能领域的人员和用户教育,使用人工智能的众多工具,以及学习概念以开发人工智能技能的博客。

照片由雅各布·欧文斯在 Unsplash 上拍摄
YouTube 是一个通过视频内容了解更多机器学习和数据科学的绝佳平台。
你可以浏览各种渠道,疯狂观看一些令人惊叹的视频,这些视频会启发你,教会你这些领域的实用知识和实现。
我个人推荐的有 Sentdex,3Blue1Brown,TechWithTim,科里斯查费等。在众多精彩的频道中。这些是 YouTube 上最好的频道,你可以从中找到精彩的深入解释,更直观地理解概念。
TensorFlow 是开发一些惊人的数据科学和机器学习项目的最佳深度学习框架之一。
然而,除了这个用于解决复杂计算问题的惊人的库之外,它还有一个免费的网站来了解和获取关于 TensorFlow 的知识。
TensorFlow 网站为用户提供了官方文档、指南、有用的资源和代码,帮助他们开始使用 TensorFlow,并从头开始创建一些精彩的项目。
TensorFlow 的支持和开发工具正在快速构建。该网站还提供了基本的数据集和一些示例问题的解决方案。我强烈建议您登录网站,使用 TensorFlow 掌握深度学习。

Arnel Hasanovic 在 Unsplash 上拍摄的照片
在这一点上提到的三个资源倾向于服务于类似的目的,即,社区互动和参与,以及对几个问题的回答以获得澄清。
Reddit 是用户进行互动的地方,Reddit 中机器学习和数据科学的特定位置是非常有用的免费网站,可以了解更多信息,并获得对您可能遇到的一些问题的进一步回答。
Quora 是另一个类似的网站,有专门的 Quora 空间,致力于学习和获得更多关于数据科学或机器学习的知识。您还可以提出更多一般性问题,并免费获得答案和帮助。
堆栈溢出是接收高级问题答案的最佳资源。该网站有大量有用的内容和许多常见问题的精彩答案。它还提供了针对错误和缺陷的解决方案以及相应的修复方法。

威廉·艾文在 Unsplash 上的照片
在本文中,我们介绍了十个最好的数据科学和机器学习免费网站资源,供初学者入门,也可供更高级别的用户受益。
这里提到的每一个资源都包含了大量的内容和有价值的信息,你可以利用它们来更好地掌握这门学科,并通过获得更多的知识而从中受益。
如果你还没有的话,我强烈推荐你看看下面的免费网站资源。通过阅读、理解、分析并最终处理这些网站提供给你的信息,你可以学到很多东西。
这篇文章最好的部分是,这里提到的资源只是许多可能性中的十种。数据科学和机器学习是如此新鲜的主题,以至于你有无限的可能性。
它们的资源是无限的,在未来的文章中,我们将尝试覆盖至少十个以上这样令人惊叹和有用的网站,它们可以帮助您踏上数据科学之旅!
如果你对这篇文章中提到的各点有任何疑问,请在下面的评论中告诉我。我会尽快给你回复。
看看我的其他一些文章,你可能会喜欢读!
</11-crucial-mistakes-to-avoid-as-a-data-scientist-71c29aef028> </8-revolutionary-artificial-intelligence-technologies-of-the-modern-era-f8f22a4127d0> </5-best-ways-to-earn-income-from-data-science-a9c8fed1eee6>
谢谢你们坚持到最后。我希望你们喜欢阅读这篇文章。我希望你们都有美好的一天!
原文:https://towardsdatascience.com/10-best-free-websites-to-learn-programming-939ec029009b?source=collection_archive---------1-----------------------

照片由 Fotis Fotopoulos 在 Unsplash 上拍摄
“编程不在于你知道什么;而是你能想出什么。”——克里斯·派恩
编程很好玩!每个人都必须尝试参与和学习的可喜经验。编程打开了许多大门,允许新开发人员利用和实现新项目。
如果你是一个初学者爱好者或者只是想学习更多的编程语言,对你来说最好的免费资源是什么?
在当今世界,编程已经变得比以往任何时候都重要。大多数有志于编程的人都想发展他们的编码技能,并有效地提高他们的编程基础。
由于不断增长的需求,有许多盈利的组织、公司和课程为您提供关于您选择的任何特定语言的编程的深入指南和内容,大多数初学者更喜欢通过免费网站和课程来提高他们的技能。
我强烈推荐查看我以前在十大免费网站上的一篇文章,通过下面提供的链接了解更多关于数据科学和机器学习的知识。
</10-best-free-websites-to-learn-more-about-data-science-and-machine-learning-f2c6d7387b8d>
虽然可以说付费内容和课程有助于获得更有成效的结果,但在本文中,我们将看看十个最好的免费网站,它们可以让你将编程和编码技能提高到一个新的水平。
学习编码或新编程语言的首选方法是使用互联网上的免费内容。这将帮助你权衡你的选择和兴趣。所以,事不宜迟,让我们进入最好的免费网站学习编程。

Alex Kotliarskyi 在 Unsplash 上的照片
HackerRank 是互联网上最好的网站之一,因为它为初学者开发者提供了各种各样的资源。它有一些快速速成课程,包括获得更多编程语言经验的 30 天挑战。
它为编码爱好者提供了大量的编程语言,让他们了解更多并投入更多的时间。HackerRank 可能是你被公司聘用的最佳网站。大多数编码面试都是在这些网站上成功进行的。
HackerRank 是开发者和公司的地方。当程序员试图通过尝试这些网站上的众多挑战来提高他们的编码技能和增加他们的熟练程度时,这些公司同时也在招募能够解决他们面试问题的最佳候选人,并复制最佳的可能结果和结果。

由迪诺·瑞奇穆斯在 Unsplash 上拍摄的照片
自由代码营是一个非营利组织,为程序员和开发人员提供一些最有用的内容和有益的资源。它为初学编程的爱好者提供了大量高质量的帖子、指南和材料来练习和掌握他们的编码技能。
列出他们在互联网上发布的一些精彩内容,包括使用 HTML、CSS 和 JavaScript 等编程语言练习 web 开发的交互式学习 web 平台。有许多作业和练习题,你可以单独或两人一组完成,以达到预期的效果。
他们网站上的一些免费认证包括响应式 web 设计系统、JavaScript 的算法和数据结构、前端开发库、数据可视化和数据科学、Python 的数据分析、信息安全、API 和微服务、Python 的机器学习等等。

由 KOBU 机构在 Unsplash 上拍摄的照片
Geek For Geeks 是我最喜欢的平台之一,它提供免费内容,让我了解更多编程语言和其他与编码相关的主题。它包含了精心编写的、经过深思熟虑的和解释清楚的计算机科学和编程文章、测验等等,使用户能够获得更多的经验并增强他们的编码技能。
对于极客们来说,Geek 最大的好处在于,你可以在你正在寻找的特定主题和概念上找到有用的内容,他们通常不会让你失望。如果您搜索某个特定的编程主题,很有可能会收到更新的、高质量的带代码的帖子。
获得的这些代码可用于多种编程语言,包括 C、C++、Java、Python 和其他类似的编码语言。也可以参考这个网站,学习对竞技编程更直观的认识,参加各种赛事。它还涵盖了初级开发爱好者所需的大部分基础知识。

由约书亚·阿拉贡在 Unsplash 上拍摄的照片
Codecademy 是初学者和编程爱好者投入时间和精力来提高编码技能的绝佳场所。Codecademy 提供 12 种不同编程语言的免费在线互动会话,包括 Python、Java、Go、JavaScript、Ruby、SQL、C++、C#、Swift 和 Sass,以及标记语言 HTML 和 CSS。
它也是学习编码的最佳平台之一,你必须完成这些任务才能进入下一阶段。这种级别的编码系统和编程的连续进展系统将有助于用户和开发人员进一步参与和学习。
您可以选择自己喜欢的编程语言,并对其进行研究,直到产生最有效的结果。您通过代码片段和自己执行这些代码块来学习。它为每一个爱好者提供了高交互性的探索和实践目的。你会收到即时反馈,这将有助于你纠正自己,更恰当地学习。

由 KOBU 机构在 Unsplash 上拍摄的照片
DevProjects 是一个免费的社区,人们可以通过参与策划的项目来学习编程。每个项目都是由高级开发人员和导师专门设计的,以弥合理论和现实世界代码之间的学习差距。用户可以与同事和导师讨论项目细节,并分享他们的代码以获得反馈。
如果你在寻找更多与 Python 相关的具体项目,可以查看下面的链接。您可以构建大量高质量的 Python 项目,这些项目在现实世界中有许多应用。开发人员可以充分利用这些项目进行实践,发展他们的编程技能,并最终将这些项目添加到他们的投资组合或简历中。
我强烈推荐查看以下网站,因为它为您提供了构建 Python 项目的机会。最棒的是,如果你在一个特定的问题上陷入困境,你将从现有的导师那里获得帮助,他们将指导你解决问题,并取得尽可能好的结果。

Elena Mozhvilo 在 Unsplash 上的照片
与 HackerRank 类似,HackerEarth 为开发者和公司都提供了一个平台。虽然程序员可以选择在参加众多比赛和挑战的同时练习、学习和开发各种项目,但公司通常利用该网站进行技术技能评估和远程视频面试。
还有一堆面试问题和其他方法,通过实践测验和黑客马拉松来提高你的编码技能,你可以参加并赢得令人兴奋的奖品。您可以测试您的整体编码技能,并将您的编程成就提高到一个新的水平。如果你感兴趣,你甚至可以被招聘公司录用。

瓦西里·科洛达在 Unsplash 上拍摄的照片
W3Schools 是一个在线学习网络技术的培训网站。内容包括与 HTML、CSS、JavaScript、JSON、PHP、Python、AngularJS、React.js、SQL、Bootstrap、Sass、Node.js、jQuery、XQuery、AJAX、XML、Raspberry Pi、C++、C#和 Java 相关的教程和参考资料。
W3Schools 为开发者免费提供了一些学习内容的最佳资源。它有一个文档风格的方法来提供信息以及有用的交互式代码块,您可以单击“自己尝试”按钮并探索这些选项。
W3Schools 提供了一些最好的在线编程教程,以及用代码块进行实验的很好的例子。它还为您提供了一些最好的参考资料、练习和课程,供开发人员和其他用户参与和利用,以提高他们的工作效率。

图片来自 TDS
本文中讨论的其他网站有助于提高您的编程和编码技能,为不同类型的用户提供实际的练习题和其他有益的资源。虽然这可能适合大多数场景,但是您还需要研究其他选项,这些选项为您提供指导、高级教程和其他有用的工具。
像《走向数据科学》和《更好的编程》这样的媒体出版物是用户了解更多编程知识以及获得与编码相关的其他实践帮助的最佳平台。这些网站上的博客帖子和文章对初级程序员和开发人员非常有用。
下面是我在 TDS 上发表的一些编程文章的列表,你可以看看。
</10-steps-to-master-python-for-data-science-f54199bb328d>

由 CardMapr 在 Unsplash 上拍摄
虽然本文中提到的所有其他资源大多包含理论文章和实践指南,但通过视觉和图像(尤其是视频形式)探索您的想法并了解更多信息总是一个好主意。YouTube 就是这样一个平台,它拥有大量免费的编程和编码内容,允许观众在视频运行时学习和直观地编码。
我个人推荐一些最好的 YouTube 视频来学习编程和提高你的编码技能,包括像 Sentdex 和科里·斯查费这样的频道来学习特定的高级编程教程。YouTube 上有大量令人惊叹的学习编程内容的频道,我们将在另一篇文章中讨论这个主题,我们将列出一些您应该订阅的最佳频道。

拉多万·纳基夫·雷汉在 Unsplash 上的照片
GitHub 是任何类型的编码相关项目的最佳网站之一。它为你提供了多种选择。如果你想分享你的代码或者在分叉后使用其他代码,这也许是你应该期待的网站的选择。无疑是每个开发者和程序员必须考虑的最佳选项之一。
在对特定代码块进行编程时,很容易卡住。在编码过程中,错误是不可避免的,当您无法自己修复错误时,向专家或其他编程爱好者求助通常是个好主意。Stack Overflow 社区就是这样一个网站,它为您提供了一个机会来解决您的疑问、疑虑和问题。
GitHub 和 Stack Overflow 都是很棒的网站,它们可以让你与编程领域的其他专家进行交流,并获得针对你的疑问和疑问的适当解决方案。这个社区非常有帮助,只要你从自己的角度努力提出问题,他们通常会提供答案。
作为一个旁注,我也强烈建议检查不和谐和松弛的节目频道。找到一个互动社区是很有用的,因为你有和你有相似兴趣的编码爱好者,你可以通过分享代码学到更多。您还可以一起或在一个小组中执行和处理复杂的项目,以创建有效的项目。

照片由 AltumCode 在 Unsplash 上拍摄
“在某些方面,编程就像绘画。你从一块空白的画布和一些基本的原材料开始。你综合运用科学、艺术和工艺来决定如何处理它们。”——T3【安德鲁·亨特】
本文中提到的大多数资源和网站都是值得信赖的,互联网上有一些最好的内容。就我个人而言,我要么广泛地使用了这些资源中的大部分,要么在为本文的目的进行研究时访问了这些网站。我希望他们能够像我开始编程之旅时那样让观众受益。
我敢肯定,在这篇文章中,我可能错过了很多令人惊奇的在线免费资源。如果你觉得我错过了一些你想在这篇文章中看到的东西,请在下面随意评论,让每个人都知道许多其他在线免费网站,每个爱好者都可以从中受益和利用。
我非常有兴趣了解其他类似的免费网站和资源,以便初学者在编程的世界中生活。我会确保在未来写另一篇文章,涵盖其他重要的网站,让编程爱好者、有志之士和爱好者可以免费查看,并充分利用这些资源来提高他们的整体编码技能。
如果你对这篇文章中提到的各点有任何疑问,请在下面的评论中告诉我。我会尽快给你回复。
看看我的其他一些文章,你可能会喜欢读!
</5-reasons-why-you-should-develop-a-game-with-python-and-ai-9f5f276e7637>
谢谢你们坚持到最后。我希望你们喜欢阅读这篇文章。我希望你们都有美好的一天!
原文:https://towardsdatascience.com/10-best-practices-to-write-readable-and-maintainable-sql-code-427f6bb98208?source=collection_archive---------0-----------------------
没有适当的指导方针,很容易弄乱 SQL。由于团队中的每个人可能都有自己编写 SQL 的习惯,您很快就会得到一个没有人理解的令人困惑的代码。

@liane 在 Unsplash 上的照片
让我们从一个基本的开始:对 SQL 关键字使用大写字母,对表和列使用小写字母。在 SQL 函数(FIRST_VALUE()、DATE_TRUNC()等)中使用大写字母也是一个很好的实践,尽管这更有争议。
避免
偏好
编程语言在案例类型方面有自己的最佳实践:camelCase、PascalCase、kebab-case 和 snake_case 是最常见的。
谈到 SQL,Snake Case(有时也称为下划线 Case)是使用最广泛的约定。
避免
更喜欢
尽管有些人喜欢使用变体来区分模式、表和列,但我建议坚持使用 snake case。
众所周知,别名是重命名没有意义的表或列的一种便捷方式。当表和列的名称没有意义时,不要犹豫给它们起别名,也不要犹豫给聚合起别名。
避免
更喜欢
我通常用小写字母作为列的别名,用大写字母作为表的别名。
尽管这是一个基本原则,但它能让你的代码更具可读性。就像使用 python 一样,您应该标识您的 SQL 代码。
当使用子查询或派生表时,在关键字后使用 Ident。
避免
更喜欢
另外,请注意我们如何在 where 子句中使用空格。
避免
偏爱
不值得提醒这种好的做法。你应该明确你想要选择什么,因此避免使用。
让你的请求不清楚,因为它隐藏了询问背后的意图。另外,请记住,您的表可能会发生变化并影响。这就是为什么我不是一个大风扇的指令。
避开
更喜欢
虽然在性能方面没有区别,但是 JOIN 子句将关系逻辑与过滤器分开,提高了可读性。
避免
偏好
“基于 Where 子句”的语法—也称为 ANSI-89 —比新的 ANSI-92 要老,这就是为什么它仍然非常普遍。如今,大多数开发人员和数据分析师都使用 JOIN 语法。
CTE 允许您定义和执行查询,其结果是临时存在的,可以在更大的查询中使用。cte 可以在大多数现代数据库中找到。
它像派生表一样工作,有两个优点:
- 使用 CTE 可以提高查询的可读性
- CTE 被定义一次,然后可以被多次引用
你用指令用…声明一个 CTE 为:
避免
更喜欢
小心这个。让我们给出一些背景:
我经常使用 AirFlow 在 Bigquery 上执行 SQL 查询,转换数据,并准备数据可视化。我们有一个工作流程编排器(Airflow ),它按照定义的顺序执行请求。在某些情况下,我们选择将复杂的查询分成多个较小的查询。
而不是
你可以用
警告:尽管这种方法在简化复杂查询时非常有用,但它可能会带来可读性/性能的损失。
如果您使用 OLAP(或任何面向列的)数据库,尤其如此,该数据库针对聚合和分析查询(选择、AVG、最小、最大等)进行了优化,但在事务处理(更新)方面性能较差。
虽然在某些情况下,它也可能提高你的表现。即使是现代的面向列的数据库,太多的连接也会导致内存或性能问题。在这些情况下,拆分请求通常有助于提高性能和内存。
此外,值得一提的是,您需要某种程序或编排器来按照定义的顺序执行查询。
正确命名模式和表是很困难的。使用哪种命名约定是有争议的,但是选择一种并坚持使用它是没有争议的。你应该定义你自己的惯例,并让你的团队采纳。
计算机科学只有两个硬东西:缓存失效和事物命名。—菲尔·卡尔顿
以下是我使用的惯例示例:
如果您使用的分析数据库有多种用途,那么以有意义的模式组织您的表是一个很好的做法。
在我们的 Bigquery 数据库中,每个数据源都有一个模式。更重要的是,我们根据目的以不同的模式输出结果。
- 第三方工具可以访问的任何表都位于 公共 模式中。Dataviz 工具如 DataStudio 或 Tableau 从这里获取数据。
- 由于我们将机器学习与 BQML 一起使用,我们得到了一个专用的 机器学习 模式。
我们的公共模式中的每个表都以仪表板的名称为前缀。一些例子可能包括:
当与团队合作时,花时间定义你的惯例是值得的。当涉及到命名一个新表时,千万不要用一个你以后会“改变”的又快又脏的名字:你可能不会。
请随意使用这些例子来定义您的约定。
我同意这样的观点,一个写得很好并且正确命名的代码不需要注释。阅读您的代码的人应该在代码本身之前就理解其逻辑和意图。
尽管如此,注释在某些情况下还是有用的。但是你一定要避免过多评论的陷阱。
避免
更喜欢
SQL 很棒。它是数据分析、数据科学、数据工程甚至软件开发的基础之一:它不会等待。它的灵活性是一种优势,但也可能是一个陷阱。
一开始你可能没有意识到这一点,尤其是如果你是唯一负责自己代码的人。但是在某些时候,当与团队一起工作时,或者如果有人必须继续您的工作,没有一组最佳实践的 SQL 代码将成为负担。
在本文中,我总结了编写 SQL 的最常见的最佳实践。当然,有些是有争议的或基于个人观点的:你可能想从这里获得灵感,并与你的团队定义一些不同的东西。
我希望它能帮助您将 SQL 质量提升到一个新的水平!
原文:https://towardsdatascience.com/10-best-tools-and-technologies-for-data-science-e335fb99c2f2?source=collection_archive---------14-----------------------

Alesia Kazantceva 在 Unsplash 上拍摄的照片
数据科学的迅速普及导致了大量工具和技术的产生,为数据科学爱好者带来了整体利润和好处。
世界上有一个新的流行术语叫做 数据 。大多数科技巨头,如谷歌、脸书、微软、IBM 和许多其他大小公司,都在数据和数据科学领域投入了大量宝贵的时间和资源。
对数据进行测量、收集、报告和分析,然后使用图表、图像或其他分析工具进行可视化。数据作为一个一般概念,是指一些现有的信息或知识以某种形式表示或编码,以便更好地使用或处理。
数据科学是将统计学、数据分析及其相关方法统一起来,以便用数据来理解和分析实际现象的一个概念。它使用数学、统计学、计算机科学、领域知识和信息科学范围内的许多领域的技术和理论。换句话说—
数据科学是一个跨学科领域,它使用科学的方法、流程、算法和系统从许多结构化和非结构化数据中提取知识和见解。数据科学与数据挖掘、机器学习和大数据相关。
在本文中,我们将深入了解十种您必须知道的神奇工具和技术!它们对于创建一些独特而酷的 Python 和数据科学项目非常有帮助。您可以利用它们来构建模型、创建项目、分析结果、部署目的等等!
因此,废话不多说,让我们从探索这些工具和技术开始,您可以使用它们来提高创建新项目的有效性和效率。
对 GitHub 的了解是一个数据科学家的基本要求之一。GitHub 是展示代码和与优秀社区讨论项目的最佳场所。您可以以 Gists 的形式在存储库或代码块中共享您的工作,进入您的个人资料的大量受众都可以访问这些内容。
GitHub,Inc .是微软的子公司,使用 Git 为软件开发和版本控制提供托管服务。它提供了 Git 的分布式版本控制和源代码管理(SCM)功能,以及它自己的特性。它为每个项目提供了访问控制和几个协作功能,如错误跟踪、功能请求、任务管理、持续集成和 wikis。
GitHub 免费提供基本服务。其更高级的专业和企业服务是商业性的。免费的 GitHub 账户通常用于托管开源项目。总部位于加州,自 2018 年以来一直是微软的子公司。
如果你还没有 GitHub 账户,我强烈建议你创建一个。它是完全免费的,将为您展示您的项目并与社区中其他令人惊叹的数据科学成员合作开辟一个最佳场所。你可以从这里查看我的 GitHub 简介。
集成开发环境(IDE)是一种软件,它为程序的编译和解释提供了全面的工具。它为编码人员、爱好者和开发人员提供了一个平台,通过源代码编辑器、自动化工具和调试器来试验和解释代码/程序。
IDE 既可以支持单一的编程语言,如 Python 独有的 Pycharm,也可以支持多种编程语言,如 Visual Studio 代码。因为 python 是现代的流行语言,所以它有很多可用的开发软件,如 Pycharm、visual studio code、Jupyter notebooks 等。
例如,Visual Studio Code 是微软为 Windows、Linux 和 macOS 开发的免费源代码编辑器。特性包括对调试、语法高亮、智能代码完成、代码片段、代码重构和嵌入式 Git 的支持。它支持包括 python 在内的各种编程语言。您可能需要一些额外的安装来开始使用 Python,但是这非常简单。它不断更新,是 Python 和其他编程语言的最佳平台之一。我经常使用它,也强烈推荐它。
Jupyter Notebook 是一个开源的 web 应用程序,允许您创建和共享包含实时代码、等式、可视化和叙述性文本的文档。用途包括:数据清理和转换、数值模拟、统计建模、数据可视化、机器学习等等。Jupyter 笔记本绝对是开始学习数据科学和机器学习的绝佳选择。
这些笔记本可以与任何人共享,有助于更高效地协作编写代码。我强烈推荐使用 Jupyter 笔记本,因为你可以单独使用每个代码块,也可以选择使用降价。它被广泛应用于许多盈利的公司。以下是关于 Jupyter 笔记本的完整指南。
荣誉奖:谷歌合作实验室
Colaboratory (也被称为 Colab)是一个免费的 Jupyter 笔记本环境,它运行在云中,并将笔记本存储在 Google Drive 上。Colab 最初是谷歌内部项目;有人试图开源所有代码,并更直接地在上游工作,导致了“在 Colab 中开放”谷歌 Chrome 扩展的开发,但这最终结束了,Colab 的开发在内部继续。
从下面提供的链接中查阅下面的文章,获得十多个 ide 的简明指南,您可以在您的项目中使用这些 IDE。
图形处理单元是一种专门的电子电路,设计用于快速操纵和改变存储器,以加速在帧缓冲器中创建图像,用于输出到显示设备。
GPU 是现代计算的关键部分。GPU 计算和高性能网络正在改变计算科学和人工智能。GPU 的进步为今天深度学习的发展做出了巨大贡献。
GPU 针对训练人工智能和深度学习模型进行了优化,因为它们可以同时处理多个计算。它们拥有大量内核,可以更好地计算多个并行进程。
NVIDIA 提供了一种名为计算统一设备架构(CUDA) 的东西,这对支持各种深度学习应用至关重要。CUDA 是 Nvidia 创建的并行计算平台和应用编程接口模型。
它允许软件开发人员和软件工程师使用支持 CUDA 的图形处理单元(GPU)进行通用处理,这种方法称为 GPGPU。这些 CUDA 核心在人工智能领域是高度有益和进化的。
当您使用 TensorFlow 或 Pytorch 等深度学习框架时,与使用 CPU 的相同性能相比,您可以利用这些 CUDA 核心来计算您的深度学习算法,速度要快得多。
GPU 是计算机视觉和超级计算的动态资源,具有深度学习和神经网络,可以执行复杂的任务,有时甚至超出人类的想象。此外,GPU 还有许多其他应用。GPU 在嵌入式系统、移动电话、个人电脑、工作站和游戏控制台中都有应用。
您可以从下面的文章中了解更多关于 GPU 的信息,如果您确实需要一个 GPU 来进行深度学习。
沃森工作室,以前的数据科学体验或 DSX,是 IBM 的数据科学软件平台。该平台由一个工作空间组成,其中包括用于数据科学的多种协作和开源工具。
IBM Watson Studio 允许用户使用 Auto AI 管理 AI 生命周期,准备、优化和探索模型,构建可共享的开源笔记本,在云上运行和训练模型,并最终部署您的数据科学项目。
在 Watson Studio 中,数据科学家可以与一组合作者一起创建一个项目,所有人都可以访问各种分析模型并使用各种语言(R/Python/Scala)。Watson Studio 将包括 RStudio、Spark 和 Python 在内的主要开源工具整合到一个集成环境中,并在一个安全和受监管的环境中添加了其他工具,如托管 Spark 服务和数据整形工具。
Watson Studio 提供对数据集的访问,这些数据集可通过 Watson Data Platform 在内部或云上获得。该平台还拥有一个大型社区和嵌入式资源,如关于数据科学世界和公共数据集最新发展的文章。该平台有内部、云和桌面三种形式。
IBM Watson Studio 为用户提供了许多选项,包括一个已经有多个训练模型的选项,作为一个例子,您可以利用它们来创建您的对象检测项目,而不必实际编码。
使用 IBM Watson Studio 的好处是,您可以有效地优化您的人工智能和云,预测结果并相当容易地规定行动,将人工智能的力量同步到各种应用程序中,自动化人工智能生命周期,等等。
亚马逊网络服务(AWS)是亚马逊的一家子公司,以按需付费的方式向个人、公司和政府提供按需云计算平台和 API。这些云计算 web 服务提供了各种基本的抽象技术基础设施和分布式计算构件和工具。
其中一项服务是亚马逊弹性计算云(EC2),它允许用户通过互联网拥有一个随时可用的虚拟计算机集群。AWS 版本的虚拟计算机模拟了真实计算机的大部分属性,包括用于处理的硬件中央处理器(CPU)和图形处理器(GPUs 本地/RAM 存储器;硬盘/固态硬盘存储;操作系统的选择;联网;以及预装的应用软件,如 web 服务器、数据库和客户关系管理(CRM)。
AWS 技术在世界各地的服务器农场实施,并由亚马逊子公司维护。费用基于用户选择的使用情况(称为“随用随付”模式)、硬件、操作系统、软件或网络功能的组合,以及可用性、冗余性、安全性和服务选项。
订户可以购买一台虚拟 AWS 计算机、一台专用物理计算机或两者的集群。作为订阅协议的一部分,亚马逊为订户的系统提供安全保障。AWS 在许多全球地理区域开展业务,包括北美的 6 个区域。
我强烈推荐那些对探索、创建和部署 Amazon Web Services (AWS)模型感兴趣的初学者使用免费层。这种方法将有助于您更好地了解和全面理解在云环境中使用数据科学。
微软 Azure,通常被称为 Azure,是微软创建的云计算服务,用于通过微软管理的数据中心来构建、测试、部署和管理应用程序和服务。它提供软件即服务(SaaS)、平台即服务(PaaS)和基础设施即服务(IaaS),并支持许多不同的编程语言、工具和框架,包括特定于微软和第三方的软件和系统。
微软 Azure 是计算复杂数据科学项目以及用人工智能和机器学习分析工作的最佳和最受欢迎的地方之一。您还可以在与人工智能结合的物联网(IoT)上进行操作,以创作更多创新的作品。
微软 Azure 类似于文章中讨论的前两个工具,但它提供了广泛的用途和好处,这是客户和数据科学或 AI 爱好者必须考虑的。你可以使用微软来构建、训练、运行、最终部署你构建的机器学习和数据科学项目。
微软 Azure 的其他功能包括用视觉和语音检测内容的认知搜索,用 API 为应用程序添加认知应用程序,创建机器人来管理各个方面和领域,用基于 Apache Spark 的分析设计人工智能,最后用人工智能传感器构建混合现实,以及许多其他应用程序。
Arduino 是由 ATmega 微控制器组成的开发板。是机器人和 IoT(物联网)项目的最佳入门方式之一。
Arduino 是一家开源硬件和软件公司,爱好者、修补者和专业人士可以使用它来构建令人惊叹的创新项目。从我的经验来看,Arduino 绝对是开始你的机器人梦想的最佳方式之一,因为它比其他微控制器更容易使用。
Arduino 有多种形式和尺寸,即 Arduino Nano、Arduino Uno 和 Arduino mega。Nano 是一种尺寸较小的板,可用于更简单和独特的项目。Uno 是一个中等大小的板,非常适合开始试验和尝试业余爱好者级别的项目。mega 是一个更大的开发板,可以用于稍微复杂一点的项目和场景。
在我看来,Arduino 是开始任何类型的物联网项目的最佳方式。对于一些基本项目,如传感器控制和学习设备管理,Arduino 非常有利于在该领域追求更多的创意。
开始学习很简单,因为它主要是 C 和 C++等编程语言的混合,作为初学者,它主要有两个代码块需要担心,即设置和循环功能块。因此,我的第一个建议是先试用 Arduino Uno 板,然后再开发更复杂的嵌入式设备。
Raspberry Pi 是一台单板计算机,这是开始计算和编程的一种非常好的方式。Raspberry Pi 提供了很多机会,可以在计算机视觉、游戏、物联网项目等领域创造非常酷的项目。
通过摄像头附件,raspberry pi 甚至可以用于对象检测、人脸识别和监视操作等任务。如果你是一个想要开始编程和编码的初学者,那么 Raspberry Pi 是最便宜和最好的方法。它也可以被中级爱好者或专家用于更高级的项目。
使用 Raspberry Pi 和 Raspbian OS 之类的操作系统编程的最大好处是,您可以使用各种编程语言,包括 python。Thony 编辑器是操作系统中预装的程序,你可以在这里编写你的 python 项目。
树莓 Pi 中编码的所有程序,包括机器学习和深度学习程序,都可以轻松部署。像照相机、音频设备等外部附件。,也可以添加到 Raspberry Pi 中,并被控制来执行实时计算机视觉任务,如视频监控、人脸识别等。
NVIDIA Jetson Nano 是机器人领域人工智能相关操作的最佳工具之一。它比 Raspberry Pi 稍贵,但 Jetson Nano 也有更高的计算能力。据英伟达:
NVIDIA Jetson Nano 支持开发数以百万计的新型小型低功耗人工智能系统。它开启了嵌入式物联网应用的新世界,包括入门级网络录像机(NVR)、家用机器人和具有完整分析功能的智能网关。
NVIDIA developer kit 允许用户运行许多神经网络操作,包括图像分类、分割、对象检测和语音处理等。
虽然 Nvidia Jetson Nano 比 Raspberry Pi 贵一点,但它具有相对更好的功能,也是开发中级和高级项目的一个很好的起点。如前所述,它功能强大,可以执行多种任务。
在我看来,这三个工具是开始使用 AIOT 的最佳设备。显然,还有许多其他令人惊叹的选项和嵌入式设备选择来开发有效的模型。
由谷歌提供的谷歌云平台(GCP)是一套云计算服务,运行在谷歌内部用于其最终用户产品(如谷歌搜索、Gmail、文件存储和 YouTube)的相同基础设施上。
除了一套管理工具,它还提供一系列模块化云服务,包括计算、数据存储、数据分析和机器学习。注册需要信用卡或银行账户的详细信息。Google 云平台提供基础设施即服务、平台即服务和无服务器计算环境。
谷歌云平台是谷歌云的一部分,谷歌云包括谷歌云平台公共云基础设施,以及谷歌工作空间(原 G Suite),Android 和 Chrome OS 的企业版,以及用于机器学习和企业地图服务的应用编程接口(API)。
Google Cloud 为数据科学爱好者提供了许多可以充分利用的特性和产品。这些领域包括云计算、存储和数据库、网络、大数据、云人工智能、物联网(IoT)、API 平台和管理服务。
具体来说,大数据提供了一些功能,如 BigQuery 可扩展的托管企业数据仓库,用于分析,Cloud Dataflow 基于 Apache Beam 的托管服务,用于流和批量数据处理,Cloud Dataproc 用于运行 Apache Hadoop 和 Apache Spark 作业的大数据平台,等等。
谷歌云人工智能提供了以下功能:
- Cloud AutoML — 培训和部署定制机器、学习模型的服务。截至 2018 年 9 月,该服务处于测试阶段。
- 云 TPU — 谷歌用来训练机器学习模型的加速器。
- 云机器学习引擎— 基于主流框架训练和构建机器学习模型的托管服务。
- 云工作发现— 基于谷歌搜索和机器学习能力的招聘生态系统服务。
- Dialogflow Enterprise — 基于谷歌机器学习的开发环境,用于构建对话界面。
- 云自然语言— 基于 Google 深度学习模型的文本分析服务。
- 云语音转文本— 基于机器学习的语音转文本转换服务。
- 云文语转换— 基于机器学习的文语转换服务。
- 云翻译 API — 在数千种可用语言对之间进行动态翻译的服务
- 云视觉 API — 基于机器学习的图像分析服务
- 云视频智能— 基于机器学习的视频分析服务
Kaggle 是数据科学家展示和展示他们独特的问题解决能力和创新思维的最佳平台。Kaggle 就是这样一个网站,它主办了一些与数据科学相关的最佳竞赛。不要担心你是第几名。只要你能学到新东西,这没多大关系。
Kaggle 是 Google LLC 的子公司,是一个由数据科学家和机器学习实践者组成的在线社区。Kaggle 允许用户查找和发布数据集,在基于网络的数据科学环境中探索和构建模型,与其他数据科学家和机器学习工程师合作,并参加竞赛以解决数据科学挑战。
Stack Overflow 是一个面向专业和爱好者程序员的问答网站。这是一个私人网站,堆栈交换网络的旗舰网站。它的特点是在计算机编程中广泛的问题和答案。它的创建是为了更开放地替代早期的问答网站,如专家交流。
在数据科学中,陷入长期致力于解决的问题并不罕见。最棒的是,数据科学有一个非常棒的社区,里面有非常乐于助人的人和大量资源供您使用。
Stack Overflow 是一个最好的网站,你可以在这里提出你的问题,并获得一些很棒的解决方案。当你遇到困难时,不要犹豫去寻求帮助!
Discord 频道、YouTube 视频、免费在线代码营、走向数据科学等。和其他嵌入式物联网设备都是有用的资源,可供我们所有人利用和提高技能。
与他人和专家交流分享想法是学习更多知识的好方法。不能有效地沟通会导致很多问题,比如你可能会对某个特定的话题产生误解。
此外,与人交谈非常有助于分享你的观点,以及获得知识。通过与更多的人交谈,你会产生更好的想法,最重要的是互动,这在与数据科学项目团队合作的公司中非常有用。

由谷仓图片在 Unsplash 上拍摄
在本文中,我们讨论了十种令人惊叹的工具和技术,您可以利用它们来创建数据科学世界的现代化时代。这篇文章中讨论的各种工具和技术从用于创建更好的数据科学项目的集成开发环境(ide)到用于加速计算和运算的显卡。
我们还讨论了各种嵌入式设备,开发人员可以利用这些嵌入式系统和微控制器来创造更新的创新和开发镜面项目。利用各种网站来提高效率和整体生产力也是一个绝妙的主意。
最后,我们讨论了大型公司提供的各种技术,用于实现、可视化、提高整体模型性能以及部署您的数据科学项目。这些都是为了鼓励数据科学爱好者开发各种独特的项目,并在该领域取得进展。
看看我的其他一些文章,你可能会喜欢读!
</15-awesome-python-and-data-science-projects-for-2021-and-beyond-64acf7930c20> </12-steps-for-beginner-to-pro-in-data-science-in-12-months-c6f6ba01f96e>
谢谢你们坚持到最后。我希望你们喜欢阅读这篇文章。我希望你们都有美好的一天!
原文:https://towardsdatascience.com/10-challenges-internal-data-leaders-will-face-creating-a-revenue-generating-data-product-e954ae79308a?source=collection_archive---------31-----------------------

杰克·沃德在 Unsplash 上拍摄的照片
让我们讨论一下数据产品——特别是由内部团队构建的产品,他们现在的任务是面向外部的产品创新工作。你知道,外面的人必须付钱才能用的那种。(是的,你的内部客户一直在使用你的解决方案获得报酬,不管质量如何)。
简而言之,我认为这项工作要困难得多,你将面临更多的困难,尤其是如果你在一家习惯于僵化流程、行动缓慢的大型企业中,并且拥有一种要求保证但喜欢自称为灵活和创新的文化。
以下是我希望你在跳进池塘时注意的 10 个想法(欢迎,水很美,但没有救生员值班!):
- 过去你有一些利益相关者;现在你有 1000 个潜在客户。这种更广泛的潜在客户群起初看起来很有吸引力,直到你意识到个人用户是多么独特,每个意见会给你的产品积压带来多少噪音——如果管理不当的话。
- 你需要做更多的用户研究来理解什么不该做,什么该做——因为意见会很多,你不能构建所有的东西,而且当你构建错误的东西时会有机会成本。
- 你会后悔没有一个专门的产品经理(DPM ),他知道客户想要的是结果,而不是功能——而且没完没了的用户故事和功能永远也做不完。来自产品营销的 DPM 将有很多关于构建产品的知识要学;产品/工程部门的人需要学习很多关于市场定位的知识,并平衡他们认为人们需要什么和人们想买什么。
- 你可能认为你的工作是构建一个数据驱动的洞察解决方案,当市场说“我们想要这个东西在这里,你能做到吗?”“在那边”可能是一个可行的产品,但如果你的团队认为“我们的工作是制造 ML 模型”,他们就会错过它。过度分析,“我知道他们应该如何处理数据”的心态会阻止你看到可能就在你面前的机会。
- 你可能会意识到解决方案的设计和 UX——特别是如果它是技术性的——将很快变得相关,除非你正在做的事情如此具有开创性和革命性,以至于客户愿意忍受高水平的初始复杂性和难度来获得你承诺的价值。事情是这样的,在你表现出牵引力后不久,你可能会发现一个竞争对手紧跟在你的后面,没有技术债务,有一个 UX 和主张是如此清晰和简单。在竞争对手的应用出现之前,CLI 界面可能看起来非常强大,突然之间,非技术用户也可以从数据和见解中获得价值。
- 如果你在一家大型、缓慢、富有的企业,你可能处在一种不支持创新的文化中。这种文化想要避免风险,并遵循过程——与敏捷、产品开发不匹配的东西。虽然你有一些好处,如你的好处(!),薪水和缓冲,你可能缺乏创业文化的勇气和灵活性——由志同道合的人组成的团队,他们热爱客户问题,承担企业和用户需要的角色,并不懈地专注于建立产品/市场匹配——即使这不是最初计划的一部分。把你的内部流程和文化强加给一个专注于外部产品创新的团队可能会增加税收,而不是收益。风险?为此做好准备——创新领域没有承诺。
- 当你建造新的东西时,你可能会发现很难适应创造性的工作。说“不,谢谢”的反馈当你试图获得对你的想法的反馈时,你得到的是沉默。拒绝。
- 你很快就会意识到,让人们承诺为你的数据驱动解决方案按月或按年付费要困难得多,除非价值非常清楚。当你第一次告诉他们你的宝宝并要求安排一次通话时,他们并不超级兴奋,你会感到困惑——想知道为什么他们没有看到你的团队所看到的“明显”价值。
- 你不会意识到很多“产品”发生在你出货后的第一件事;以前没有。发布会被过分夸大了;这次发射是开始而不是结束。
- 如果你是技术人员,而你的购买者是“业务人员”,你会痛苦地认识到为什么设计/UX、产品和定位如此重要——即使解决方案是为技术受众设计的。精算师可能认为你的新“风险计算器”难以置信,但首席信息官是开支票的人——他们仍然不确定他们已经做的风险计算方法有什么问题。
听着:如果你走到这一步,有人已经相信你或你的团队了。问题在于,你可能需要放弃“数据就是解决方案”,放弃你的技术培训,以及一些在我们的创作过程中没有用的分析技能。
当你看到一个糟糕的技术策略时,你就知道它是什么样子了——数据产品创造的关键在于,数据部分和产品部分需要不同的技能。你很可能会偏向前者。后者可能是草率的、快速的、不可预测的、混乱的,并且有时是非理性的——但是如果您想要构建人们愿意为之付费的不可或缺的数据产品,那么这可能是您需要参与一段时间的环境。
关于作者
Brian T. O’Neill 是一名咨询产品设计师,帮助公司创建创新的 ML 和分析解决方案。他是 Designing for Analytics 的创始人和负责人,主持expering Data播客,并为麻省理工学院沙盒创新计划提供建议。想在收件箱中获得更多关于创新数据产品设计的见解吗?立即订阅。
🎧 | 网站 | LinkedIn | 推特:@rhythmspice
原文:https://towardsdatascience.com/10-compelling-reasons-to-learn-python-for-data-science-facb?source=collection_archive---------4-----------------------

通过像素成像
数据科学是一个广阔的领域,有大量的切入点,这取决于您想从哪里以及如何开始。我开始用一种叫做 R 的语言学习基础数据科学,直到我遇到它的许多限制之一。据我所知,Python 无疑赢得了 R vs Python 的数据科学之战。当我想在我的数据科学之旅中迈出下一步时,我依赖于 Python。为数据科学学习 Python 是进入数据科学最快、最简单、最有趣的方法之一。
数据科学是一项非常有价值的技能,平均工资高和工作满意度高,然而仍然有更多的公司发布数据科学家的职位列表,而不是目前实际存在的数据科学家。
我使用 Python 涉足数据科学领域有很多原因——它被许多 FAANG 相邻的公司用来进行数据科学研究,它是一种通用的语言,初学者很容易掌握,专家也很容易学习。
尽管 Python 是一种通用语言,但本文给出了您应该学习 Python 的 10 个坚实的理由,并解释了 Python 在数据科学中的作用。
编码可能会令人生畏,尤其是对初学者来说。但是 Python 是个例外。它的语法和词汇非常简单,所以你可以相对快速地掌握它,尤其是与更复杂的语言如 C、C++和 Java 相比。对于数据科学家来说,Python 是学习语言的一个明显选择。
它如此简单,以至于 Next Academy 实际上推荐它作为儿童学习编码的绝佳选择。对于非程序员来说,有很多便宜或免费的资源可以开始学习 Python 。
如果你想进入数据科学,Python 是编码语言的一个很好的选择,因为你可以很快地把它添加到你的工具箱中,而且痛苦最小。对于初学者来说,用 Python 学习数据科学可能是一个简单的解决方案。
Python 有一个干净简单的语法,反映了英语,所以无论你构建什么,你和许多人都能理解,即使他们自己不是 Pythonistas。
当我开始学习 Python 时,它如此容易学习的部分原因是我可以阅读 Python 代码示例并理解它们试图做什么。如果你想进入数据科学领域,你绝对应该把可读性作为你选择的任何语言的一个关键组成部分。
您将会阅读大量代码,并与您的同事(或者当您试图在 StackOverflow 上调试某些东西时,与互联网上的陌生人)共享这些代码。Python 让这变得很容易。
如果你学习 Python,你将成为众多人中的一员。它是数据科学(以及其他领域)中使用最广泛的语言之一。根据 TIOBE 的 2020 年指数,英语是世界上使用第三广泛的语言。特别是在数据科学领域,它的成为了领导者,超过了我以前最喜欢的语言 r
正如我上面提到的,许多公司正在使用 Python 来构建框架和项目。比如 Google,创建了 Tensorflow,基于 Python 脸书和网飞在其数据科学项目中也越来越依赖于它。
如果你想进入数据科学领域,至少了解一些 Python 是不会有太大进展的。幸运的是,学习是一种乐趣!
我记得当我知道一个用 Python 编码的人的名字时:一个 Pythonista。我喜欢它。学习 Python 进行数据科学的一个主要好处是,你可以进入一个令人难以置信的 Python 社区,并成为其中一员。(好处不仅仅是酷炫的名字。)
因为它已经存在了三十年,因为它易于学习和构建,因为它长期以来一直与许多人和公司相关,所以有一个庞大而热情的 Pythonistas 社区,他们非常乐意分享他们的技巧,回答您的问题,纠正您的代码,并讨论新的想法。你可以在任何地方找到它们——Reddit 有一个特别活跃的社区,但是你甚至有不和谐的团体冒出来谈论 Python。
这使得学习 python 成为数据科学的一个很好的选择,因为学习任何一种语言都很难,尤其是当你感到专业压力的时候。像围绕 Python 涌现的社区使这变得更容易。
Python 作为数据科学的语言独树一帜。但是除了简单的语法、简单的词汇、可读性、社区和我已经列出的其他好处之外,还有库。像 Pandas、statsmodels、NumPy、SciPy 和 Scikit-Learn 这样的库在数据科学社区中非常流行。
像 SciPy 这样的生态系统使得数据科学任务变得更加容易。(SciPy 的发音是 sigh-pie,而不是我最初认为的 skippy。)SciPy 解决了许多常见的数据科学需求,如处理数据结构、分析复杂网络、算法和机器学习工具包。用于数据科学的 Python 库很受欢迎,并且在不断发展。
真正令人兴奋的是,随着越来越多的 Python 爱好者加入社区并做出自己的贡献,用于数据科学的新 Python 包一直在发布。用于数据科学的 Python 库很受欢迎,并且在不断发展。例如,Keras 是 2015 年发布的用于深度学习的极简主义图书馆。从那时起,它就成了 Python 库生态系统的重要组成部分。
尽管 Python 实际上有无限多的应用,但学习 Python 和数据科学之间实际上有很多重叠。只需浏览一些基础教程,您就可以轻松学习 Python 的数据科学基础知识。数据科学家使用 Python 来检索、清理、可视化和构建模型,因此,如果您想使用 Python 来学习数据科学,这是您可以开始的地方。
在学习如何用 Python 编程的标准过程中,默认情况下,您会接触到一些数据科学基础知识。例如,您将开始学习如何设置您的环境,导入数据,清理数据,对数据进行统计分析,创建一些漂亮的可视化效果,并分享您的发现。看看这个——你已经用 Python 做了一些数据科学。
只要您在寻找 Python 教程时牢记典型的数据科学任务,您将很容易找到大量教您 Python 的资源——尤其是同时教您数据科学的 Python。学习用于数据科学的基本 Python 是一种自然的学习途径。
“数据科学”这个词,对我来说,会让人联想到《黑客帝国》中尼奥穿着酷外套做酷事情的画面。很多人没有意识到数据科学是一种不那么光彩的数据清理。保守估计数据清理占数据科学家典型工作量的 80%。但是好消息是:Python 在这方面很棒!
如果你想进入数据科学,你需要接受这样一个事实:在你做出一个很酷的 viz 之前,你将会做大量的数据擦洗、清理、按摩、争论等工作。这种需求使得学习 Python 数据科学成为一个很好的选择:它是为清理而构建的。
我之前提到的两个库,NumPy 和 Pandas,在清理数据方面非常出色。
在你清理完数据之后,下一个最重要的部分就是交流你的发现。数据科学不仅仅是代码行,它意味着与关键利益相关方交流结果。一个好的 viz 是至关重要的。
“数据可视化通过地图或图形为信息提供可视化背景,让我们清楚地了解信息的含义。这使得人类思维理解数据更加自然,因此更容易识别大型数据集中的趋势、模式和异常值,”在 Analytiks 博客中写道。
很多人认为数据科学止于分析,但就像职业世界中的其他事情一样,你在之后做的是真正重要的事情。
Python 有很多很棒的工具来实现简单的可视化,比如非常基本的 matplotlib 和它的两个孩子 Pandas 和 seaborn(都是基于 matplotlib 构建的)。如果你能很容易地做出一个好的 viz 来交流或说明数据,战斗就成功了一半。Python 让这变得简单。
一个鲜为人知的事实是,数据科学家项目是昂贵的。事实上,Gap 的数据和分析 SVP Chris Chapo 曾经说过“87%的数据项目都会失败。”建造一个有用的东西需要时间、精力、资源和极大的耐心。
为了解决这个问题,大多数数据科学家使用原型对他们的想法进行预演,并对其进行压力测试,以确保其值得正确构建。如果您一直在关注本文的主题,那么当您听说 Python 非常适合构建良好的原型来测试概念、想法和产品时,您应该不会感到惊讶。
Fuzzing Book 的作者写道:
“Python 让我们的工作效率惊人。本书中的大多数技术需要 2-3 天来实现。这比 C 或 Java 等“经典”语言快 10-20 倍。
Python 使得运行动态分析(在程序运行时分析程序执行)和静态分析(在不运行代码的情况下分析代码)变得很容易,这两种分析都让原型化成为一种梦想。
这篇文章是关于为什么学习 python 对于数据科学是有意义的。但是……很多曾经看似稳如泰山的职业和职业道路逐渐消失,或者被算法取代。
数据科学没有这种萎缩的迹象,但由于公司正在花大价钱寻找数据科学家,并努力找到足够的数据科学家,你可以打赌,他们有动力寻找替代方案,而不是花费更多的时间和资源来寻找另一位数据科学家。
如果你为了数据科学而学习 Python,这些技能将足以帮助你在计算机科学领域的其他地方找到工作。Python 本身比任何职业道路都更稳定——它已经存在了 30 年,它不断地重塑自己,以便对新的工作和职业有用。数据科学的未来可能会受到质疑,或者你可能会觉得你的职业目标发生了变化。无论哪种方式,了解 Python 都将助您一臂之力。
开始学习面向数据科学的 python,但是放心,无论数据科学领域发生什么,Python 都将是一门有价值的语言。
如果您想知道在 Python 中学习数据科学的内容,本文应该已经全面涵盖了。对于想知道从哪里开始学习数据科学的人来说,使用 Python 学习数据科学基础知识是一个自然的解决方案,这可能是一个压倒性的前景!
当我开始学习 Python 时,我发现它非常适合接触基本的数据科学概念和任务。
原文:https://towardsdatascience.com/10-computer-vision-terms-everyone-must-know-about-687a98845fc8?source=collection_archive---------23-----------------------

布鲁克·卡吉尔在 Unsplash 上的照片
机器或计算机能够感知现实世界中的图像并相应地解释它们的想法曾经被认为是不可能的。在当代,我们知道有一些快速的进步导致了计算机或机器视觉领域的快速发展。在接下来的几年里,计算机视觉将会有更多的发展,使其更加与众不同。
自从过去十年以来,计算机视觉已经变得特别流行。虽然理论概念已经存在了相当长的一段时间,但这是由于现代技术有助于将这门学科推向一个全新的水平。计算机视觉是人工智能的一个分支,它使系统能够衡量对图像、视频或其他实时实体和活动的整体高级理解。
虽然本文的目标是关注计算机视觉的一些重要术语,但我之前已经非常详细地介绍了 OpenCV 主题和计算机视觉的基础知识。如果您是该领域的新手,建议您首先阅读下面提供的文章,以更深入地了解该主题,并确保您可以获得阅读本文内容的最佳效果。
在本文中,我们的目标是涵盖许多计算机视觉应用所需的十个最基本的术语。有了这些方面的正确信息和知识,你就可以用机器学习或深度学习算法的混合来构建任何类型的计算机视觉项目。让我们开始探索这十个概念,并逐一了解它们。
图像格式化和图像操作是你在计算机视觉世界中最常听到的两个术语。让我们以直观的方式理解这些关键概念,以避免将来的任何混淆。我们在自然世界中感知的正常图像通常是具有一定宽度和高度的图像,并且通常具有三个通道,因为它们通常包含 RGB 图像的颜色组合。以下是图像参数的典型表示。
通过图像操作,您可以执行各种有用的操作,这些操作将有助于降低机器学习或深度学习算法的计算要求。一些图像处理方法包括调整大小、裁剪或将其转换成灰度图像(这一点将在下一节中进一步讨论)。图像操作在计算机视觉应用中起着至关重要的作用。
对于图像格式化,我们的任务通常是实现图像的最佳表示,使其适合我们的特定任务。如前所述,该步骤可能涉及某些图像处理,并将其存储为所需的格式。常用的图像存储格式包括 PNG、JPG、JPEG、TIF 和其他类似格式。

在计算机视觉中,灰度图像在大多数具有实际应用的操作中起着至关重要的作用。通常,第 0 个范围指的是黑色,随着范围的不断增加,我们开始达到更亮的色调,直到我们最终在第 255 个值上遇到白色。因此,灰度图像也可以被认为是颜色为浅灰色并且跟随不同灰度的图像范围。
将彩色 RGB 图像转换为其他格式有很多用途,尤其是转换为灰度图像,以减少计算压力并降低 CPU(有时是 GPU)的限制。将数据集转换为灰度后,您可以更快、更有效地处理计算。您还可以使用它来简化算法和提取描述符,而不会消耗太多的额外需求。转换成灰度的简单代码如下。
另一个需要理解的基本概念是掩蔽。遮罩是由零值和非零值组成的二进制图像。如果将遮罩应用于另一个二进制图像或相同大小的灰度图像,则遮罩中为零的所有像素在输出图像中都将被设置为零。所有其他保持不变。更多信息,请参考以下参考。
在处理图像和大多数计算机视觉任务时,我们利用某些基本的计算指标来分析模型的性能。确保模型在训练和评估阶段有效运行的两个主要指标是联合交集(IoU)分数和骰子损失。
并集上的交集(IoU),顾名思义,是特定图像的地面实况和模型所做预测之间的重叠。它通常被认为是比精度更好的度量,广泛用于计算机视觉应用。通常情况下,对于实际应用而言,高于 0.5 的 IoU 分数可视为良好分数。
另一方面,骰子损失是在图像处理中用来理解两个或多个期望实体之间的相似性的度量之一。在考虑真正值、假正值和假负值之后,下面的公式可以写成如下:

骰子相似系数

成龙赵在 Unsplash 上的照片
以下两个术语,锚盒和非最大值抑制,是计算机视觉中,尤其是物体检测算法实现中常用的两个词。因此,理解它们在特定序列中的重要性以及为什么它们被用于这些任务是非常重要的。
锚定框对于在图像中设置预定义高度和宽度的边界框非常有用。它们通常会捕捉不同对象的大量比例和纵横比,您希望将这些比例和纵横比专门整合到您的培训模型中。有许多锚箱用于此目的。
当有许多锚盒用于特定目的时,可能会导致某些问题,尤其是由于重叠。因此,非最大抑制(NMS)的概念被用于过滤掉过多的重叠瓦片,并将处理的结果传递给神经网络用于进一步的计算和处理。

照片由 C D-X 在 Unsplash 上拍摄
图像中的噪声基本上是由于污染(降低)图像质量的外部因素的干扰而可能发生的任何种类的干扰。图像中的噪声经常会成为图片或图像中不希望出现的干扰。虽然有时你可能会尝试为图像生成添加一些你自己的噪声(就像在 GANs 中),但这通常不是你想要的完美图像。
在您认为特定图像中不需要添加噪声的情况下,您可以尝试滤除此噪声。噪声过滤是试验 OpenCV 模块中的各种技巧以消除现有噪声的方法之一。下面是一个示例代码,展示了相同的类似演示。
模糊或平滑处理是计算机视觉中减少特定图像中异常值数量的关键技术。由于我们在前一节中了解了噪声,我们对图像中噪声干扰的副作用有了一个简单的了解。防止这些干扰和过滤这种噪声的一种方法是使用模糊技术。
在上面的代码块中,我们使用了一种流行的模糊技术,称为高斯模糊,它利用了高斯函数,有助于相应地平滑给定的图像。在 OpenCV 提供的特定高斯模糊代码中,目标是提供源和内核大小,它们必须始终是奇数元组,以获得平滑的图像。

作者图片
边缘检测是用计算机视觉实现的另一个重要目标。边缘检测有助于识别图像中亮度变化或图案不连续的各个部分,从而可以找到所需的区域。它还用于从图像中提取特定对象的结构,并在其他计算机视觉应用中找到它的效用,如对象检测。
上图举例说明了如何执行边缘检测的特定操作,以及如何通过改变阈值因子来改变检测能力。虽然有许多方法来执行对象检测,并且同样有许多独特的应用,但下面是一个示例代码块,演示了在 OpenCV 中使用 Canny 边缘检测器。
每秒帧数(FPS)是计算机视觉的另一个基本概念,通常用于计算视频镜头或实时图像。为了更简单地理解这个概念,让我们考虑几个例子。假设你正在 YouTube 或你的本地软件等特定平台上观看视频或电影。您可以选择查看特定视频每秒播放多少帧,以及具体质量如何。
另一个例子是,当你试图玩视频游戏时,你会有一定数量的每秒帧数,这是随着游戏的进行你的设备可以处理的内容量。对于这些任务,每秒 60 帧通常被认为是一个不错的数字。同样,对于实时对象检测等计算项目,FPS 的概念对于确定特定模型的性能至关重要。
为了理解大量与计算机视觉和深度学习相关的概念,我个人认为,开发者应该在学习阶段尝试构建至少一个单一的游戏。查看我以前的一篇文章,这篇文章讨论了用 Python 构建游戏的必要性,以及你应该考虑自己这么做的五个理由,请点击下面的链接。
</5-reasons-why-you-should-develop-a-game-with-python-and-ai-9f5f276e7637>

迈克·多尔纳在 Unsplash 上的照片
你可以用计算机视觉和深度学习执行的最重要的操作之一是分割任务。具体来说,分割意味着从图像中分离出最基本的元素或特定的所需元素,以便您可以对图像执行进一步的计算,如分类或定位。考虑特定图像的聚类,并相应地对它们进行分割,以将它们与其他元素区分开来。
分割的正常过程包括考虑特定的数据集以及它们各自的掩码。利用相应的图像和该特定图像的基础事实,我们可以使用类似 U-Net 或其他类似架构的方法为某些样本训练模型。一旦您成功地构建了模型,您就可以对其他图像执行大量的分割测试,并隔离(分离)必要的需求。

照片由埃里克·普劳特在 Unsplash 上拍摄
计算机视觉的另一个重要贡献是对象检测任务,它对于解决一些现实生活中的问题至关重要。对象检测是当今世界最重要的应用之一,在许多与对象跟踪(如跟踪板球或棒球)、面部识别(用于识别面部)、机器人应用、无人驾驶汽车等相关的问题中有其使用案例,最终将在很大程度上造福人类。
由于对象检测是计算机视觉任务中最基本的元素之一,因此有几种方法、工具、算法和库来完成这项任务。一些最好的算法包括梯度方向直方图(HOG)、快速 R-CNN、YOLO 和许多其他类似的算法和技术。还有几个像 Image AI 和 Detectron2 这样的库可以有效地执行这些任务。查看以下关于对象检测算法和库的文章,以获得关于该主题的更多信息。

在 Unsplash 上由 Austin Distel 拍摄的照片
“以建设性和仁慈的方式使用计算机视觉技术有很大的潜力。”———
计算机视觉是人类取得的最伟大的成就之一。随着该领域的快速发展,现在可以轻松实现几乎任何类型的与图像、视频或实时捕捉相关的机器视觉任务。由于有一堆未来的业务和项目尚未被发现,我们在以下领域积累了巨大的潜力。
在本文中,我们探讨了与计算机视觉相关的十个最重要的术语。有了对这些资源的完美处理、理解和知识,对于大多数开发人员来说,用正确的工具和技术完成任何种类的特定计算机或机器视觉项目都成为可能。确保你记住或记下这些术语,以备将来使用。
如果你对这篇文章中提到的各点有任何疑问,请在下面的评论中告诉我。我会尽快给你回复。
看看我的其他一些文章,你可能会喜欢读!
</5-best-python-projects-with-codes-that-you-can-complete-within-an-hour-fb112e15ef44> </14-pandas-operations-that-every-data-scientist-must-know-cc326dc4e6ee> </7-best-ui-graphics-tools-for-python-developers-with-starter-codes-2e46c248b47c> </15-numpy-functionalities-that-every-data-scientist-must-know-f6d69072df68> </17-must-know-code-blocks-for-every-data-scientist-c39a607a844d>
谢谢你们坚持到最后。我希望你们都喜欢这篇文章。祝大家有美好的一天!
原文:https://towardsdatascience.com/10-essential-psql-commands-for-data-engineers-c1ea?source=collection_archive---------29-----------------------

照片由 Pexels 的 Engin Akyurt 拍摄
你们中的许多人联系我,要求提供有价值的资源 来敲定基于 Python 的数据工程面试 。下面我分享 3 个我强烈推荐的点播课程:
- Python 数据工程纳米学位 → 精品课程!
- leet code In Python:50 个算法编码面试问题→最适合涉及算法的编码回合!
- Python 高级编码问题(StrataScratch)→我找到的准备 Python 的最佳平台& SQL 编码面试到此为止!比 LeetCode 更好更便宜。
希望你也会发现它们有用!现在欣赏:D 的文章
在您成为数据工程师的过程中,在某些时候,您一定偶然发现了命令行(也称为终端)。
也许是一位同事向你展示如何创建环境变量?…或者教你使用本地版本控制的最佳实践?…或者你暗暗佩服他们与数据库交互的方式,看起来不费吹灰之力,也不需要现代的数据库管理系统?
无论您第一次接触命令行,您可能会想“我想要同样的超级能力……我需要学习如何做到这一点!”。
无论您第一次遇到命令行,您可能会想“我想要同样的超级能力…我需要学习如何做到这一点!”。
为了帮助你掌握一个最基本的数据工程技能,在本文中,我将向你介绍以及如何使用它通过终端与 PostgreSQL 数据库进行交互。我还将向您展示我在工作场所反复使用的 10 组命令。
但首先,什么是…更重要的是,它的利弊是什么?
在PostgreSQL 官方网站上,被定义为 PostgreSQL 交互终端。
这意味着,如果您每天使用 PostgreSQL,您可以使用连接到您喜欢的数据库,输入查询并通过命令行查看查询结果。但是有什么好处和坏处呢?
- 允许您与数据库快速交互,使您处于相同的环境中(终端),而不像在标准 DBMS 中那样需要配置。这反过来加快了你的工作。
- 通过使用您最喜欢的编辑器或从文件中运行查询,允许您运行简短和更复杂的查询。
- 允许您通过在指定的时间间隔执行命令来跟踪表中的更改。
- 与标准 DBMS 相比,它可以帮助您几乎毫不费力地检索关于数据库、模式、表和用户的元数据和统计数据。
- 当您需要显示和分析大量列或者交互地改变输出中列的顺序时,这不是最好的工具。当查询返回少量在终端上看起来很整洁的列时,非常出色。
- 当您希望将查询的输出保存到特定格式的文件中时,这不是最好的工具。尽管这是可以做到的 ( 我将在稍后展示),现代数据库管理系统提供了更广泛和用户友好的选择范围。
既然我多解释了一点 当 应该是你的首选,那我也来分享一下怎么用吧!
要在 Mac 笔记本电脑上安装,只需下载,然后执行以下两条命令:
然后,当服务启动后,使用以下命令检查它是否已启动并正在运行:
要在 Windows 机器上安装以及其他客户端应用程序,请遵循这篇优秀的教程。
与其他终端客户端应用程序一样,提供了广泛的命令来与 PostgreSQL 数据库进行交互。然而,下面我试着给出了 10 个我每天最常用的命令。
与 PG 数据库交互的第一步是连接到它。
请记住,如果您通常使用 SSH 隧道或任何其他类型的加密进行连接,您需要在运行下面的命令之前解决这个问题。
在工作场所,您很可能必须建立到驻留在特定主机上的数据库的连接。如果是这种情况,您应该使用:
例如,假设您希望使用以下凭据连接到数据库:
命令和输出应该是这样的:
一旦您运行它,您将被提示插入用户的密码。如果连接成功,您会看到屏幕上出现一个光标,前面有数据库名称。
现在你可以对它进行查询了!
作为一名数据工程师,有时您可能希望列出当前连接的数据库中可用的模式。
这可以通过使用命令来实现:
如您所见,数据库包括 20 个与特定所有者相关联的模式。然而,如果您在寻找一组特定的模式(假设所有模式都以开头),该怎么办呢?在这种情况下,您应该运行:
现在,该命令只显示与提供的正则表达式匹配的 4 个模式。
非常相似的命令可用于列出您所连接的数据库的表、视图、函数和用户:
如果您希望通过列出特定表的列、数据类型以及了解哪些字段可以为空来了解更多信息,您应该使用命令。
例如,要描述一个名为(其中是模式名)的表,您应该运行:
要使用查询数据库,您只需键入一些 SQL 代码,后跟一个分号。如果省略分号,客户端应用程序将无法理解代码是否准备好执行,并将使您处于编辑模式。
例如,如果您希望计算在上创建的中的事务总数,您可以运行:
这个查询告诉我们是在那个日期创建的。如果您希望再次运行相同的查询,该怎么办?你可以简单地输入:
这适用于所有命令,相当于。
有时,SQL 脚本变得更长更复杂,所以您可能想先创建它们,将它们保存到一个文件中,然后用运行文件中包含的查询。使用可以做到这一点。
在下面的示例中,我保存了该查询的等效内容:
到一个名为的崇高文本文件。该文件位于我的桌面上,因此为了执行它,我运行:
不用说,终端并不是运行长 SQL 查询的最佳工具。为此,不仅允许你从文件中执行命令,还允许你通过命令访问默认编辑器。
例如,在我的 Mac 上,该命令将打开编辑器,因为这是找到的默认编辑器。如果这也是你的情况,做这两件事:
- 键入进入模式。现在,您将能够键入您的查询。在这种情况下,我试图在中找到:

我的 vim 编辑器在插入模式下是什么样子
- 当您对您的查询满意时,键入,然后键入。这将保存您的内容并自动执行 SQL 脚本:
但是,如果您的默认 shell 是,您可以通过向您的文件添加以下行来切换到您最喜欢的编辑器(例如),或者如果您的默认 shell 是,则添加:
然后,运行以下命令来更新配置:
如果您退出并重新连接到数据库,当您运行时,您应该会看到编辑器正在启动:

现在 nano 是 psql 😄 的默认编辑器
数据工程师经常忙于测试某些 SQL 脚本的性能。在这种情况下,了解一个查询运行需要多少时间非常方便。
为了在上显示执行时间,可以输入。例如,运行与之前相同的文件:
现在您知道运行查询需要。
为了禁用计时,您可以键入来代替。
您是否曾经需要多次运行完全相同的 SQL 脚本?例如,通过将数据加载到特定的表中来检查 ETL 管道是否按预期工作?
如果您的答案是肯定的,那么您很幸运,因为使用,您可以使用命令自动运行脚本,次数不限。例如:
如您所见,我正在运行我希望以特定时间间隔执行的 SQL 查询,然后我键入以便该查询每隔开始执行。随着新记录被插入到表中,不断增长。
相同的查询会一直运行,直到您用杀死它。
在:D 这篇文章描述的 10 个命令中,命令非常有用,也是我最喜欢的一个
你猜怎么着?正如我在文章开头提到的,确实允许您以 CSV 格式导出数据。您可以使用下面的语法通过命令来实现:
请记住,在这种情况下,SQL 查询不需要在末尾加上分号(否则会抛出错误)。另外,如果您希望在 CSV 文件中保留列名,记得在末尾添加。
例如,假设您希望将此查询的结果导出到桌面上的 CSV 文件中:
然后,您将键入:
当您运行这个命令时,它将创建一个名为的 CSV 文件,如下所示:

如你所见,标题在那里!
使用完成后,您可以使用退出客户端应用程序。或者,您可以使用。这将退出客户端应用程序,您将无法在终端上继续工作。
在这篇文章中,我与你分享了你在成为拥有超能力的数据工程师的旅途中应该掌握的 10 条命令。这些也是我每天最常使用的命令,所以我希望你按照 80/20 法则从它们开始。
然而,要知道提供了非常广泛的命令,为了掌握这个工具,还有很多东西需要你去学习。
坚持学习就好!
到此这篇如何打开目录(如何打开目录word)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/rfx/17072.html