给数据科学初学者的 5 条可行建议
这里是给每个进入数据科学的人的 5 个建议
Photo by Frame Harirak on Unsplash
1.向专家请教
“向专家学习;你活不了多久,自己就能想明白这一切。”—布莱恩·特雷西
学习数据科学有无数种方法。你可以阅读文章、观看视频、参加在线课程、参加聚会等等。但是有一件事你无法“学习”,那就是体验。你必须通过多年的实地工作来获得。从数据科学专家那里可以学到很多东西,他们在管理端到端机器学习和深度学习项目方面的经验,他们从零开始构建数据科学团队的哲学,以及他们在管理艰难项目和克服障碍方面的毅力和勇气等。—这些都是任何课程都学不到的。它们只能被获得。
这里有一些数据科学专家可供学习:
2.问正确的问题
“如果我有一个小时来解决一个问题,我会花 55 分钟来确定要问的适当问题,因为一旦我知道了适当的问题,我就可以在不到 5 分钟的时间内解决问题。”——阿尔伯特·爱因斯坦
数据科学家不得不问过多的问题才能有效地生产出企业想要的东西。这不是普通的问题,而是正确的问题。提问的主要目的是定义问题陈述。换句话说,查询是数据科学家解决问题的第一步。一旦你开始问问题,它很快就会成为你的第二天性,你会发现它的价值,在这个过程中,随着你变得更有经验,你会问自己更好的问题。
3.掌握用数据讲故事的艺术
“讲故事,一种原始的艺术,和人类的起源一样古老。人们希望获得故事形式的信息,而不仅仅是事实、观点和分析。”
—李·古特金德
一个伟大的故事有清晰的细节和形象。数据只是一堆杂乱无章的非结构化数据,直到有了数据科学家。从中提取的洞察力必须解释发生了什么,为什么它是重要的,以及如何将这些知识转化为实际的东西。数据可视化意味着使用数据、统计和编程技巧来设想模式、证明理论、得出结论,这可以帮助组织做出好的决策。数据驱动的故事对利益相关者和客户都非常有益。首先,从这个问题开始:“什么数据最重要?”数据中有大量的混乱,突出重要的是关键。接下来是阅读数据,并找出如何使用它来了解你的观众。(更多尽在Forbes.com
4.以正确的方式学习统计学
相关性并不意味着因果关系。
统计学是一门将数字与这些问题联系起来的艺术,这样“答案”才会进化!统计学的核心是建立与定性问题的定量联系。据说“数据科学家是比程序员懂更多统计学,比统计学家懂更多编程的人”。统计学不是一个容易的话题,对初学者来说可能难以接受。因此,学习统计学的正确方法是从《T4 ThinkStats》这本书开始,因为理解统计学从根本上来说是揭示隐藏在数据集中的秘密的“艺术”是非常必要的。有了什么是统计的概念后,继续使用 Python 进行统计的编程部分。
5.学习 Python
现在,我相信 Python 比同时教学生编程和教他们 C 或 C++或 Java 要容易得多,因为语言的所有细节都要困难得多。其他脚本语言在那里也不太好用。—吉多·范·罗苏姆
Python 可以说是蓬勃发展的数据科学世界中最流行的编程语言。为什么?这是因为 Python 是一种简单易学的编程语言,有一个活跃的社区。它还拥有大量的库和资源,这使得它成为初学者深入该领域以及专家高效工作的典型语言。一个惊人的 48%拥有五年或更少经验的数据科学家认为 Python 是他们首选的编程语言。要开始使用 python 进行数据科学研究,正确的方法是,首先学习基础知识,然后使用 Matplotlib、Pandas、statistics 和 Scikit-learn(Python 中最流行的 ML 库)进行数据可视化。
现在开始学习的一个方法是在 Coursera 上参加面向所有人的专业课程Python。这个课程非常适合初学者和查尔斯·拉塞尔遣散,指导老师是一个了不起的老师。如果您认为您已经掌握了 python 的基础知识,请继续学习 Python 专门化的应用数据科学,它将指导您如何通过流行的 Python 工具包(如 pandas、Matplotlib、Scikit-learn、nltk 和 networkx)应用统计、机器学习、信息可视化、文本分析和社交网络分析技术,以深入了解数据。
大多数数据科学项目未被采纳的 5 个原因
采取这些步骤来避免您的项目在生产中失败
更新:你现在可以在 日语 中读到这篇文章!(感谢 Koki Yoshimoto)。
几年前,在 Gramener,我们为全球最大的电信运营商之一建立了一个客户流失建模解决方案。机器学习解决方案预测了他们的哪些客户会离开,在他们停止使用之前一个月。在试点测试中,与之前的流程相比,该解决方案帮助客户流失率降低了 56%以上。
我们惊讶于令人印象深刻的结果和恒星的准确性。但是庆祝有点为时过早,因为这种解决方案从未被使用过。尽管有一个合理的解决方案和成功的试点,我们几个月的艰苦努力付诸东流。
听起来熟悉吗?不幸的是,这在技术转型和数据科学计划中太常见了。是什么导致了这些失败呢?你如何成功地进行必要的变革管理?
以下是您的分析项目将面临的五大挑战,以及如何应对它们。
1.分析项目不能解决业务问题
Photo by Bence Balla-Schottner on Unsplash
Gartner 的一份报告称 80%的数据科学项目将会失败。大多数计划不会带来商业利益,因为它们解决了错误的问题。这些试点项目的问题在于,它们中的大多数过于注重技术,就像科学展项目一样。它们不是由组织面临的挑战驱动的,因此最终对业务没有用处。
永远不要通过谈论数据或分析来启动数据分析计划。
如何称呼:
永远不要通过谈论数据或分析来启动数据分析计划。集思广益,找出你的业务目标的所有障碍。根据三个因素对它们进行优先级排序:业务影响、紧迫性和可行性。从这个列表中选择最重要的业务问题,并使用数据科学制定解决方案。
您的数据科学之旅就像一场 30 小时的马拉松远足。在地图上选错目标,你所有的豪言壮语都白费了。
2.分析项目与用户的工作流程不匹配
Photo by Jeff Frenette on Unsplash
团队经常过于雄心勃勃,为每个人构建一个解决方案。如果你渴望满足每个人的需求,你将满足不了任何人的需求。另一个常见的错误是代表最终用户进行构建,而不与他们交谈。如果你没有理解用户的背景或者他们自然的工作流程,你的解决方案就会显得很突出。
如何称呼:
首先定义谁是用户,谁不是。进行访谈,建立人物角色,了解使用场景。在确定优先顺序时要无情,以减少需求。将解决方案设计到他们的自然工作流程中。确保模型结果是可解释的,并且符合用户的需求。是的,你以前听说过这个,但是在实践中它经常被忽略。
3.分析项目在营销方面有所欠缺
Photo by Amanda Lins on Unsplash
如果您的项目解决了已定义用户的迫切需求,那么他们需要知道这一点。即使最好的解决方案也需要销售推动。人们通常认为,如果你建立了它,用户就会来。但是如果没有精心策划的营销努力,项目就会慢慢死去。组织错误地将内部营销工作留给了构建解决方案的团队。
如何称呼:
为每个内部项目定义你的走向市场的方法。由高管策划发布,组织路演,开展内部活动。通过游戏化吸引用户,并分发很酷的赠品来传播信息。接受专业营销人员的帮助。跟踪您的采用指标,庆祝小小的胜利。量化投资回报以显示价值并帮助确保未来预算。
一个很好的例子是,我们的客户,世界上最大的媒体公司之一,推出了电视观众分析解决方案。从高级领导展示开始,组织了一次全国路演,冠军涵盖了每个区域团队。这导致了持续使用的恒星采用。
4.分析项目无法扩展
组织经常过于关注第一个版本,而没有为扩展做足够的计划。即使是最成功的产品也需要多次迭代和不断调整才能得到正确的解决方案。大多数项目不会规划这条跑道来让他们的解决方案起飞。他们不会留出预算来改善持续的用户反馈。他们没有给用户设定这种期望。
如何称呼:
在构建您的第一个版本时,请规划一个更广阔的愿景和路线图。明确留出预算、资源和快速修改的预期。避免让团队过于拘泥于最初的解决方案,让他们愿意做出重大改变。计划定期升级,以保持用户的高兴趣水平,避免失去动力。
皮克斯工作室的联合创始人艾德·卡姆尔有一句名言:我们最大胆的想法是丑陋的婴儿:“他们真的很丑:笨拙而未成形,脆弱而不完整。他们需要时间和耐心的培养,才能成长。”一开始就有强烈的愿景也有帮助。
5.分析项目缺乏管理层的认同
Photo by Gez Xavier Mansfield on Unsplash
即使以上所有的都考虑到了,如果缺少执行的授权,计划还是会落空。改变并不容易,人类的自然倾向是抵制它。此外,组织通常有相互冲突的优先级。这使得新计划在早期阶段非常脆弱。如果没有精心培育,转型项目成功的机会很小。
你如何称呼它:
创新必须由高层领导才能看到真正的好处。高管们必须展示未来的愿景,并让人们朝着这个愿景努力。你需要坚定地推动放弃旧习惯,有时用不受欢迎的电话来避免旧病复发。确保让下一级的领导者参与进来,他们能够支持该计划并充当变革推动者。
根据德勤的一项调查,高管的支持对组织变革至关重要。首席执行官是领导者的公司比其他公司有 77%的可能大大超过他们的商业目标。
分析项目:经验教训
Photo by Jungwoo-hong on Unsplash
在 Gramener,我们从电信客户流失模型项目中吸取了教训,该项目未能被采用。当下一个机会出现时,这一次是与一家全球企业集团合作,我们以不同的方式启动了数据科学计划。
我们发现,他们最大的业务挑战是在商品采购和销售中做出更好的决策。我们与他们的目标用户一起工作,根据什么是有影响的、紧急的和可行的来区分特性的优先级。我们决定预测商品价格,我们建立了一个最小可行的原型,使用可解释的时间序列模型进行预测。
早期的反馈显示,用户真正想要的是运动的方向,而不是准确的价格预测。我们通过选择不同类别的简单模型来改变解决方案。它被积极地推销给所有的用户群,并不断改进。
我们调动了管理层的力量来为该计划造势并推广使用。在生产中,该解决方案为他们最大的商品之一带来了 2200 万美元的节约潜力。这一次,我们不必看着我们的努力付诸东流,庆祝活动由所有人分享。
如果你觉得这很有趣,你会喜欢我写的这些相关文章:
对数据科学充满热情?随时在LinkedIn上加我,订阅我的 简讯 。
这篇文章最初是在企业家项目上 发表 。增加了插图。
熊猫的 5 个高级功能以及如何使用它们
想获得灵感?快来加入我的 超级行情快讯 。😎
Pandas 是所有事物数据的黄金标准库。凭借加载、过滤、操作和探索数据的功能,它成为数据科学家的最爱也就不足为奇了。
我们大多数人自然会坚持熊猫最基本的东西。从 CSV 文件中加载数据,过滤一些列,然后直接进入数据可视化。然而,熊猫实际上有许多鲜为人知但有用的功能,可以使处理数据更加容易和干净。
本教程将指导你完成 5 个更高级的功能——它们的功能和使用方法。数据带来更多乐趣!
(1)配置选项和设置
Pandas 提供了一组用户可配置的选项和设置。他们是巨大的生产力助推器,因为他们让你完全按照你的喜好来定制你的熊猫环境。
例如,我们可以更改 Pandas 的一些显示设置,以更改显示多少行和列,以及显示多少精度的浮点数。
上面的代码确保 Pandas 总是最多显示 10 行和 10 列,浮点值最多显示两位小数。这样,当我们试图打印出一个大的数据帧时,我们的终端或笔记本就不会看起来一团糟!
这只是一个基本的例子。除了简单的显示设置之外,还有更多值得探索的地方。你可以查看官方文档中的所有选项。
(2)组合数据帧
熊猫数据帧的一个相对未知的部分是,实际上有两种不同的方法来组合它们。每种方法都会产生不同的结果,所以根据你想要达到的目标选择合适的方法是非常重要的。此外,它们包含许多进一步定制合并的参数。我们去看看。
连结
串联是组合数据帧的最广为人知的方法,可以直观地认为是“堆叠”。堆叠可以水平或垂直进行。
假设您有一个 CSV 格式的庞大数据集。为了更容易处理,将它分成多个文件是有意义的(这是大型数据集的常见做法,称为分片)。
当您将它加载到 pandas 时,您可以垂直堆叠每个 CSV 的数据帧,为所有数据创建一个大的数据帧。例如,如果我们有 3 个碎片,每个碎片有 500 万行,那么在我们垂直堆叠它们之后,我们最终的数据帧将有 1500 万行。
下面的代码显示了如何垂直连接 Pandas 中的数据帧。
您可以通过根据列而不是行分割数据集来做类似的事情,每个 CSV 文件有几列(包含数据集的所有行)。这就像我们将数据集的要素分成不同的碎片。然后,您可以水平堆叠它们,以组合这些列/特征。
合并
合并更复杂但更强大,以一种类似 SQL 的风格合并 Pandas 数据帧。即数据帧将由一些公共属性连接。
想象一下,你有 2 个数据帧来描述你的 YouTube 频道。其中一个包含用户 id 列表以及每个用户在您的频道上总共花费了多少时间。另一个包含类似的用户 id 列表和每个用户看过多少视频。通过合并,我们可以将两个数据帧合并成一个数据帧,方法是匹配用户 ID,然后将每个用户的 ID、花费的时间和视频计数放在一行中。
在 Pandas 中合并两个数据帧是通过合并功能完成的。您可以在下面的代码中看到它是如何工作的示例。left
和right
参数指的是您希望合并的 2 个数据帧,而on
指定用于匹配的列。
为了进一步模拟 SQL 连接,how
参数允许您选择想要执行的 SQL 风格的连接类型:内部、外部、左侧或右侧。要了解更多关于 SQL 连接的信息,请参阅 W3Schools 教程。
(3)重塑数据帧
有几种方法可以重塑和重组熊猫数据框架。从简单和容易到强大和复杂。让我们来看看 3 个最常见的。对于下面所有的例子,我们将使用这个超级英雄的数据集!
移项
最简单的。转置将数据帧的行与其列交换。如果你有 5000 行 10 列,然后转置你的数据帧,你将得到 10 行 5000 列。
分组依据
Groupby 的主要用途是根据一些键将数据帧分割成多个部分。一旦数据帧被分割成多个部分,您就可以在每个部分上独立地循环和应用一些操作。
例如,我们可以看到在下面的代码中,我们如何创建一个球员的数据框架,并给出相应的年份和分数。然后我们做了一个groupby
来根据玩家将数据帧分成多个部分。因此,每个玩家都有自己的小组,显示该玩家在他们活跃的每一年中获得了多少积分。
堆垛
堆叠将数据帧转换为具有多级索引,即每行具有多个子部分。这些子部分是使用数据帧的列创建的,将它们压缩到多索引中。总的来说,堆叠可以被认为是将列压缩成多索引行。
下面的例子很好地说明了这一点。
(4)使用时间数据
日期时间库是 Python 中的一个主要部分。每当您处理与现实世界的日期和时间信息相关的任何事情时,它都是您的首选库。幸运的是,Pandas 还附带了使用 Datetime 对象的功能。
让我们用一个例子来说明。在下面的代码中,我们首先创建一个包含 4 列的 data frame:Day、month、year 和 data,然后按照 Year 和 Month 对其进行排序。如你所见,相当凌乱;我们使用了 3 列来存储日期,而实际上我们知道日历日期只有 1 个值。
我们可以用日期时间来清理东西。
Pandas 方便地提供了一个名为to_datetime()
的函数,可以将多个 DataFrame 列压缩并转换成一个 Datetime 对象。一旦采用这种格式,您就可以任意使用日期时间库的所有灵活性。
要使用to_datetime()
函数,您需要传递相关列的所有“日期”数据。那是“日”、“月”和“年”栏。一旦我们有了 Datetime 格式的内容,我们就不再需要其他列,可以简单地删除它们。查看下面的代码,看看这一切是如何工作的!
(5)将项目映射到组中
映射是一个帮助组织分类数据的巧妙技巧。例如,假设我们有一个巨大的数据框架,有几千行,其中一列有我们想要分类的项目。这样做可以大大简化机器学习模型的训练和有效地可视化数据。
查看下面的代码,其中有一个小例子,我们有一个要分类的食物列表。
在上面的代码中,我们将列表放入熊猫系列中。我们还创建了一个字典,显示我们想要的映射,将每个食物项目分类为“蛋白质”或“碳水化合物”。这是一个玩具示例,但是如果这个系列是大规模的,比如说有 1,000,000 个项目,那么遍历它根本不实际。
代替基本的 for 循环,我们可以使用 Pandas 内置的.map()
函数编写一个函数,以优化的方式执行映射。查看下面的代码,看看这个函数以及它是如何应用的。
在这个函数中,我们首先遍历我们的字典来创建一个新字典,其中的键表示 pandas 系列中的每一个可能的项目,值表示新映射的项目,“蛋白质”或“碳水化合物”。然后,我们简单地应用 Pandas 内置的 map 函数来映射序列中的所有值
查看下面的输出结果!
['Carbs', 'Carbs', 'Protein', 'Protein', 'Protein', 'Carbs', 'Carbs', 'Carbs', 'Protein', 'Carbs', 'Carbs', 'Protein', 'Protein', 'Protein', 'Carbs', 'Carbs', 'Carbs', 'Protein', 'Carbs', 'Carbs', 'Carbs', 'Protein', 'Carbs', 'Carbs', 'Carbs', 'Protein', 'Carbs', 'Carbs', 'Protein', 'Protein', 'Protein', 'Carbs', 'Carbs', 'Protein', 'Protein', 'Protein', 'Carbs', 'Carbs', 'Protein', 'Protein', 'Protein', 'Carbs', 'Carbs', 'Carbs', 'Protein', 'Carbs', 'Carbs', 'Carbs', 'Protein', 'Carbs', 'Carbs', 'Carbs', 'Protein', 'Carbs', 'Carbs', 'Protein', 'Protein', 'Protein', 'Carbs', 'Carbs', 'Protein', 'Protein', 'Protein']
结论
所以你有它!你的熊猫的 5 个高级功能以及如何使用它们!
如果你想吃更多,不用担心!关于熊猫和数据科学,还有很多东西要学。作为推荐读物, KDNuggets 网站当然是关于这个主题的最佳资源!
喜欢学习?
在 Twitter 上关注我,在那里我会发布所有最新最棒的人工智能、技术和科学!也在 LinkedIn 上与我联系!
Python 的 5 个高级特性以及如何使用它们
想获得灵感?快来加入我的 超级行情快讯 。😎
Python 是一门美丽的语言。简单易用,但表现力很强。但是,您是否使用了它所提供的一切?
任何编程语言的高级特性通常都是通过丰富的经验发现的。你正在编写一个复杂的项目,发现自己在 stackoverflow 上搜索一些东西。然后,您遇到了一个非常优雅的解决方案,它使用了一个您从来不知道存在的 Python 特性!
这是最有趣的学习方式:通过探索和意外发现!
以下是 Python 编程语言的 5 个最有用的高级特性——更重要的是如何使用它们!
(1)λ函数
λ函数是一个小型的匿名函数——匿名是指它实际上没有名字。
Python 函数通常使用def a_function_name()
的风格来定义,但是对于 lambda 函数,我们根本没有给它命名。我们这样做是因为 lambda 函数的目的是执行某种简单的表达式或操作,而不需要完全定义函数。
lambda 函数可以接受任意数量的参数,但必须始终只有一个表达式:
看那有多简单!我们执行了一些基本的数学运算,而不需要定义一个完整的函数。这是 Python 的众多特性之一,使它成为一种干净、简单的编程语言。
(2)地图
Map() 是一个内置的 Python 函数,用于将函数应用于一系列元素,如列表或字典。这是执行这种操作的一种非常干净并且最重要的可读的方式。
看看上面的例子!我们可以将函数应用于单个列表或多个列表。事实上,您可以将地图与您能想到的任何 python 函数一起使用,只要它与您正在操作的序列元素兼容。
(3)过滤
过滤器内置函数与映射函数非常相似,它将函数应用于序列(列表、元组、字典)。关键区别在于 filter() 将只返回应用函数返回为 True 的元素。
请看下面的例子以获得说明:
我们不仅评估了每个列表元素的真或假,而且 filter() 函数还确保只返回匹配为真的元素。非常方便地处理检查表达式和建立返回列表这两个步骤。
(4)迭代工具
Python Itertools 模块是处理迭代器的工具集合。迭代器是一种可以在 for 循环中使用的数据类型,包括列表、元组和字典。
使用 Itertools 模块中的函数将允许您执行许多迭代器操作,这些操作通常需要多行函数和复杂的列表理解。下面的例子展示了 Itertools 的神奇之处!
(5)发电机
生成器函数允许你声明一个行为类似迭代器的函数,即它可以在 for 循环中使用。这大大简化了您的代码,并且比简单的 for 循环更节省内存。
考虑一个例子,我们想把从 1 到 1000 的所有数字加起来。下面代码的第一部分说明了如何使用 for 循环来实现这一点。
如果列表很小,比如长度为 1000,这就很好了。当你想用一个巨大的列表,比如 10 亿个浮点数来做这件事时,问题就出现了。通过一个 for 循环,大量的内存咀嚼列表在内存中创建*—*不是每个人都有无限的 RAM 来存储这样的东西!Python 中的range()
函数做同样的事情,它在内存中构建列表
代码的第(2)部分演示了使用 Python 生成器对数字列表求和。生成器将创建元素,并仅在需要时将它们存储在内存中*,即一次一个。这意味着,如果你必须创建 10 亿个浮点数,你只能在内存中一次存储一个!Python 中的xrange()
函数使用生成器来构建列表。*
这个故事的寓意是:如果你想要生成一个大范围的列表,使用生成器或者xrange
函数。如果您有一个真正对内存敏感的系统,如移动或边缘计算,这一点尤其正确。
也就是说,如果你想多次迭代这个列表,并且它足够小,可以放入内存,那么使用 for 循环和range
函数会更好。这是因为生成器和xrange
会在你每次访问它们的时候生成新的列表值,而range
是一个静态列表,整数已经存在于内存中以供快速访问。
喜欢学习?
在推特上关注我,我会在这里发布所有最新最棒的人工智能、技术和科学!也在 LinkedIn 上与我联系!
数据可视化的 5 个惊人技巧
快速将数据转化为有洞察力的东西。
Shutterstock by majcot
有没有针对分析师的数据可视化模块?就像一个盯着空白画布的画家或一个写不出第一句话的作家——你可能是一个只盯着 Excel 中的数据墙的分析师。
或者也许你只是觉得自己像一只想要学习新技巧的老狗?
这个列表包含了我最喜欢的 5 种持续产生有效数据可视化的技术。它还有助于防止这种可怕的数据可视化阻塞。再见数据墙…你好洞察!
- 散点图你最感兴趣的两个指标
在审查一个利益相关者的新仪表板时,我们收到了一条让我深思的评论。他们说,“这很好地描述了到底发生了什么,但没有多少采取行动的洞察力。”
在商业智能中,可视化所发生的事情通常比可视化可操作的见解容易得多。
这就是散点图出现的地方。
散点图被广泛用于评估两个指标之间的相关性。经常被忽视的是,它们实际上有另一个用例。这种变化通常被称为象限图。
首先,确定两个重要或有趣的指标。其次,至少要有一个你可以采取行动的维度,比如州、员工或营销活动。那就散开吧!
例如,在市场营销中,我们经常关心两个指标。效率方面的营销绩效(以较低的营销支出获得尽可能多的客户)。质量方面的营销绩效(获得高价值的客户)。
当我们按活动分散这两个指标时,我们可以快速清晰地看到好的和坏的方面。
Made with Tableau
该散点图的作用是将资金从活动 E 和 J 中抽出,投入到活动 D 和 h 中。这种方法非常有效,因为它将你的维度划分为四个易于理解的象限。
数据可视化专家 Ben Jones 最初向我展示了散点图的这种变化。第二个例子是他的象限图。他使用颜色作为第三维度,而不是将颜色分配给象限。
Visualization on Tableau Public
作为一个叫谢尔比的人,我发现自己处于许多尴尬、不幸的境地。这种形象化让我感觉更好,因为谢尔比·米勒不仅仅是一个叫谢尔比的人,他也是最不幸的投手。
有人认为散点图对于非技术观众来说太复杂了。非技术观众只能理解条形图和折线图。我拒绝相信这个。我真的认为这种思路已经过时了。我们生活在互联网和大数据时代,对数据分析的了解要多得多。很肯定大多数人都见过散点图。
在工作中,我从未向非技术人员展示过象限图,这是一个失败。老实说,恰恰相反。
2。使用许多相同的数据可视化促进比较
设计理论家爱德华·塔夫特说:“唯一比饼图更糟糕的是其中的几个。”
尽管我觉得这句话很好笑,但我实际上不同意爱德华·塔夫特的观点。他有第二个更重要的引述,与第一个相矛盾。
“对于数据表示中的各种问题,小倍数是最好的设计解决方案.”
小倍数是反复使用相同的数据可视化来促进比较。让我们直接看一个馅饼热起作用的例子。这是由数据可视化专家安·杰克森创造的。
Visualization on Tableau Public
当你可以比较不同的对象时,描述性分析是最好的。如果我们把所有这些馅饼合在一起,说“在美国,椅子占销售额的 25%”会怎么样没有上下文,很难快速理解这是什么意思。
小倍数可以给观众带来闪电般的语境。我们的眼睛和大脑天生就能迅速察觉到一件事与另一件事不一样。可能有助于生存之类的东西。
条形图实际上会带走这一指标的总和为 100%。抱歉,讨厌饼状图的人,这实际上是饼状图更好的选择。但是,我们不要忘乎所以——当有疑问的时候,用条形图表示出来。
只是想指出,小倍数有时也被称为格子图。
3。确保清晰让你创造清晰
如果你坐在电脑前不知道从哪里开始,你可能会错过一些非常重要的东西——清晰项目。
从问自己两个问题开始。
- 我的客户/利益相关者是否清楚地陈述了他们想要回答的问题?
- 我们是否就我将在数据集中使用的指标和计算达成一致?
听起来很简单,对吗?然而,我已经看到并参与了许多忽视目标、业务、目的、问题等的项目。
我们最成功的仪表板通常有两个品质,良好的数据和对我们想要回答的问题的高度关注。
这个技巧是一个简单的两步过程:
- 确保客户/利益相关方的明确性
- 如果你不能从客户/利益相关者那里获得清晰的信息,那就站在他们的角度,创造你自己的问题来询问数据
这就是为什么确保清晰可以让你创造清晰!再见数据墙…你好洞察!
4。时间序列变化控制图
我们的销售额比上周下降了 20%!拉响警报。快速查询一堆乱七八糟的东西,叫“司机”!
呀!这是描述性分析中最常见、最不幸的情况之一。您发现导致销售额比前一周下降 20%的真实因素组合的可能性有多大?几乎没有。
这个提示将帮助你至少开始理解这 20%的下降是否真的值得注意,或者仅仅是基于历史结果的随机变化。
时间序列有分布。您可以用周作为频率来绘制指标的直方图。您可以使用分布和变化来计算标准偏差。这样,您就可以用一个上限和下限来包装您的时间序列图。
Made with Tableau
控制图有助于我们评估这种增减是否真的不寻常,或者只是随机变化。我们可以推后说 20%的下降是绝对正常的,而不是花一整个下午进行消防演习分析。
根据我上面的销售数据,你可以看到 2018 年 5 月 13 日的销售额比前一周下降了 20%。但是,它在控制图范围内,所以我们可以将其评估为数据中的正常变化,而不是关注真正异常的几周。
如果你想控制 tableau 中的图表,这里有一个教程。
需要更多的帮助来防止这些时序消防演习?更好的选择是用 A/B 测试或准测量方法来补充描述性分析,例如差异中的差异。我真的很喜欢谷歌开源的一个叫做因果影响的包,它通过时间序列建模来帮助区分随机变化和真实影响。
5。分配大量时间用于设计和格式化
下次你向观众展示时。以这句话开头,“今天,我希望与你建立零信任,零信誉。”从来没有人用这个打开过。
数据可视化的全部意义在于与受众交流。在数据和分析领域,可信度和信任至关重要,但也很脆弱。
设计和格式是表现专业、可信和赢得观众信任的最简单的方法之一。然而,我一次又一次地看到人们在设计和格式上花费很少的精力。令人遗憾的是,分析和数据非常棒,却从未引起观众的共鸣。
数据可视化不仅仅是处理数字和显示结果。目标是要有洞察力和吸引力。
我喜欢 Ryan Sleeper 在他的书《实践的舞台》中所说的,“……如果不能用高质量的设计来平衡数据质量,你的数据可视化将永远无法发挥其全部潜力。”
是时候在你的时间表中划出至少一部分专门用于设计了。如果你不同意,我会把你送到黑板前。
用 Python 学习机器学习和数据科学的 5 个初学者友好步骤
“我想学机器学习和人工智能,从哪里开始?”给你。
Photo by Sam Bourke. Thank you Sam.
两年前,我开始自学在线学习机器学习。我通过 YouTube 和我的博客分享了我的旅程。我不知道我在做什么。我以前从未写过代码,但我决定学习机器学习。
当人们发现我的作品时,他们有时会伸出手来问问题。我没有所有的答案,但是我尽可能的回复了。我得到的最常见的问题是“我从哪里开始?”下一个最常见的问题是*“*我需要知道多少数学知识?”
今天早上我回答了其中的几个问题。
有人告诉我,他们已经开始学习 Python,并希望进入机器学习领域,但不知道接下来该做什么。
我学了 Python,接下来该怎么做?
我在回复中总结了几个步骤,并把它们复制到这里。你可以把它们看作是从不知道如何编码到成为机器学习实践者的粗略轮廓。
我的学习风格是代码第一。首先让代码运行起来,在需要的时候学习理论、数学、统计和概率,而不是在此之前。
请记住,如果你开始学习机器学习,它可能会令人生畏。有很多。慢慢来。把这篇文章放在书签里,这样你可以边走边参考。
我倾向于使用 Python,因为这是我开始使用并继续使用的。您可以使用其他东西,但这些步骤将用于 Python。
1.学习 Python、数据科学工具和机器学习概念
邮件里说他们已经做了一些 Python。但这一步也是为完全陌生的人准备的。花几个月时间学习 Python 代码,同时学习不同的机器学习概念。你两个都需要。
在学习 Python 代码的同时,练习使用 Jupyter 和 Anaconda 等数据科学工具。花几个小时摆弄它们,它们的用途以及为什么你应该使用它们。
学习资源
- AI要素——主要人工智能和机器学习概念概述。
- 构建机器学习项目的 6 步实地指南——概述了许多实用步骤,你可以开始在各种不同的商业问题上使用机器学习。
- Coursera 上的Python for Everybody—从零开始学习 Python。
- 通过 freeCodeCamp 学习 Python——一个视频中所有主要的 Python 概念。
- 科里·斯查费的《Anaconda 教程》 —在一个视频中学习 Anaconda(你将使用它来设置你的计算机进行数据科学和机器学习)。
- data quest 提供的 Jupyter 笔记本初学者教程 —在一篇文章中开始使用 Jupyter 笔记本。
- 科里·斯查费的 Jupyter 笔记本教程 —通过一个视频了解如何使用 Jupyter 笔记本。
2.使用 Pandas 学习数据分析、操作和可视化
一旦你掌握了一些 Python 技能,你就会想要学习如何处理和操作数据。
为此,你应该熟悉一下熊猫、 NumPy 和 Matplotlib 。
熊猫将帮助你处理数据框架,这些是你在 Excel 文件中看到的信息表。想想行和列。这种数据称为结构化数据。
NumPy 将帮助您对数据执行数值运算。机器学习把你能想到的一切都变成数字,然后在这些数字中找到模式。
Matplotlib 将帮助您制作数据的图表和可视化。理解表格中的一堆数字对人类来说可能很难。我们更喜欢看到有一条线穿过的图形。可视化是交流你的发现的一个重要部分。
学习资源
- 在 Coursera 上使用 Python 应用数据科学 —开始为数据科学定制您的 Python 技能。
- 10 分钟内的熊猫 —熊猫图书馆及其一些最有用功能的快速概述。
- Python 熊猫教程(code basics)—YouTube 系列,介绍熊猫的所有主要能力。
- freeCodeCamp 的 NumPy 教程 —在一个 YouTube 视频中学习 NumPy。
- Sentdex 的 Matplotlib 教程——YouTube 系列,教授 Matplotlib 所有最有用的特性。
3.用 scikit-learn 学习机器学习
现在,您已经掌握了操纵和可视化数据的技能,是时候找出其中的模式了。
scikit-learn 是一个 Python 库,内置了许多有用的机器学习算法供您使用。
它还具有许多其他有用的功能,可以计算出你的学习算法学得有多好。
重点学习有什么样的机器学习问题,比如,分类和回归,什么样的算法最适合那些。先不要从头开始理解每种算法,先学习如何应用它们。
学习资源
- 使用 scikit 的 Python 中的机器学习-由数据学校学习-YouTube 播放列表,它教授 scikit-learn 中的所有主要功能。
- Daniel Bourke 对探索性数据分析的温和介绍——将你在上面两个步骤中学到的东西放在一个项目中。附带代码和视频,帮助您参加首次 Kaggle 比赛。
- Daniel Formosso 的探索性数据分析笔记本,带 scikit-learn —以上资源的更深入版本,附带使用以上内容的端到端项目。
4.学习深度学习神经网络
深度学习和神经网络最适合没有太多结构的数据。
数据帧有结构,图像、视频、音频文件和自然语言文本有结构,但没有那么多。
**花絮:**在大多数情况下,您会希望对结构化数据使用决策树(随机森林或 XGBoost 之类的算法)的集合,并且会希望对非结构化数据使用深度学习或转移学习(采用预先训练的神经网络并将其用于您的问题)。
你可以用像这样的小花絮开始一个笔记,并在进行中收集它们。
学习资源
- Coursera 上吴恩达的 deep learning . ai——深度学习由商界最优秀的人之一讲授。
- 杰瑞米·霍华德的 fast.ai 深度学习课程 —由行业最佳实践者之一讲授的深度学习实践方法。
5.额外课程和书籍
在这个过程中,如果你用自己的小项目来实践你所学的东西,那将是非常理想的。这些不一定是改变世界的精心制作的东西,但是你可以说“我用 X 做了这个”。然后通过 Github 或博客分享你的作品。Github 用来展示你的代码,博客文章用来展示你如何交流你的工作。您应该致力于为每个项目发布一个。
申请工作的最好方法是已经做了工作要求的事情。分享你的工作是向未来的潜在雇主展示你能力的好方法。
在你熟悉使用机器学习和深度学习的一些不同框架后,你可以尝试通过从头开始构建它们来巩固你的知识。你不需要总是在生产或机器学习中这样做,但是从内部了解事情是如何工作的将会帮助你建立你自己的工作。
学习资源
- 如何开始自己的机器学习项目丹尼尔·伯克(Daniel Bourke)—开始自己的项目可能很难,本文给你一些建议。
- fast.ai《从基础开始深度学习》作者杰瑞米·霍华德——一旦你已经自上而下,本课程将帮助你自下而上地填补空白。
- 探索深度学习作者 Andrew Trask——这本书将教你如何从头开始构建神经网络,以及为什么你应该知道如何去做。
- 这些书将帮助你学习丹尼尔·伯克的机器学习。
每一步需要多长时间?
你可以在每个项目上花 6 个月或更长时间。不要着急。学习新事物需要时间。作为一名数据科学家或机器学习工程师,你正在培养的主要技能是如何提出好的数据问题,然后使用你的工具尝试并找到答案。
有些日子你会觉得你什么也没学到。甚至倒退。忽略它。不要日复一日地比较你的进步。比较你每年的进步。
在哪里可以学到这些技巧?
我在上面列出了一些资源,它们都可以在网上找到,而且大部分都是免费的,但是还有很多。
DataCamp 是做这些事情的好地方。否则,我的机器学习和人工智能资源库包含了很好的免费和付费学习资料存档。
请记住,作为数据科学家或机器学习工程师的一部分是解决问题。把你的第一个任务看作是找到更多关于这里每个步骤的信息,并创建你自己的课程来帮助你学习它们。
如果你想知道机器学习的自学课程是什么样的,请查看我的自创人工智能硕士学位。这就是我过去在 9 个月内从零编码到成为机器学习工程师的经历。它并不完美,但它是我的,这就是它成功的原因。
统计呢?数学呢?概率呢?
你会一路学到这些东西。先从代码开始。让事情运转起来。在运行你的代码之前,试图学习所有的统计数据,所有的数学,所有的概率就像试图煮沸海洋。它会拖你的后腿。
如果你的代码不能运行,那么统计学、数学和概率都没用。让一些东西工作起来,然后用你的研究技能去发现它是否正确。
认证呢?
证书很好,但你并不追求它们。你在追求斯奇尔斯。
不要犯我的错误,认为更多的证书就意味着更多的技能。他们没有。
通过上述课程和资源建立基础知识,然后通过自己的项目建立具体知识(无法教授的知识)。
如果您有问题,请在下面留下评论,以便其他人可以看到。否则,请随意向伸出。在可能的地方使用了附属链接,点击这里阅读更多关于我与的合作伙伴的信息。
你可以在 YouTube 上找到这篇文章的视频版本。
使用求职机器人招聘的 5 大好处
开发智能招聘机器人,让招聘人员和候选人的生活变得更快更简单。
不可否认,印度是 bot 发展的最大市场之一。聊天机器人的发展有了显著的增长。许多公司已经接触到了聊天机器人创意,涉及电子商务、银行、教育、医疗保健、职业咨询等多个行业。
尽管如此,聊天机器人开发服务市场中还有一个领域仍在发展,那就是招聘行业。我们并不是没有用于招聘的聊天机器人。但他们非常少,大多数企业在招聘候选人时仍然更信任人类而不是机器人。
然而,我们不要忘记这样一个事实,公司因为雇佣了糟糕的候选人而遭受巨大的损失。据统计:超过 25%的公司去年遭受了 5 万美元的损失,这不是一个小数目。
现在,如果企业在招聘过程中使用招聘机器人,事情会有所不同。他们本可以通过咨询最好的聊天机器人开发公司来避免这种损失
在招聘过程中使用工作机器人的好处是惊人的,在这篇博客中,我将会谈论它们。那么,让我们开始吧:
使用机器人招聘的好处
1.快速招聘
对于招聘人员来说,雇佣候选人的过程是漫长而令人疲惫的。投放广告,在工作平台上跟踪候选人,通过电子邮件或电话联系每个候选人,安排面试,然后选择一个他们认为符合所有工作要求的候选人并不容易。整个过程需要几周,有时甚至几个月。
然而,工作机器人可以将整个招聘过程缩短到一两天。你知道怎么做吗?作者:
- 只选择那些严格符合选择标准的潜在候选人。
- 在保证有回应的平台上接触候选人。
- 快速审查申请和安排面试。
总的来说,招聘机器人可以帮助你更快地招聘到候选人,这也是它们非常受欢迎的原因。
2.繁琐任务的自动化
有几件小而关键的事情会导致招聘过程的延迟。例如,手动准备潜在候选人的列表。这是一个需要花费大量时间和精力的漫长过程。此外,出现错误的可能性也很大。有时,招聘人员非常忙,几乎没有时间去查看每个候选人的个人资料,看看他/她是否符合选择标准。
甚至安排面试的过程也同样忙碌。这涉及到很多麻烦,比如通知候选人面试,反复核对他们来不来,提醒面试官已经安排好了面试等等。在工作机器人的帮助下,你可以自动完成所有这些繁琐的任务,从而减少招聘时间,让招聘变得更轻松。所以建议联系 AI 开发公司,向他们咨询 bot 开发。
3.更好的候选人体验
让我用一个例子来更好地解释这一点,我的一个朋友期待申请一家 IT 服务公司的职位。所以,她花了几个小时完善她的简历,对公司做研究,写一封有吸引力的求职信。最后,在反复核对了一切之后,她申请了这个职位。作为回报,她收到的只是招聘人员冷冰冰的电子邮件回复:谢谢你的申请。我们会尽快与您联系。
她再也没有公司的消息了。她发了后续邮件,但没有回应。现在,我的朋友很生气。她在 LinkedIn 上写了一篇长文,公开羞辱了该公司。成千上万的人阅读了她作为候选人的经历,公司的声誉遭受了重大挫折。但这一切都是可以避免的。
他们所做的就是在我的朋友提出申请后对她进行跟进。然而,问题是招聘人员每天会收到成千上万封电子邮件,不可能对每封邮件都进行跟进。这就是客服聊天机器人形式的招聘机器人发挥作用的地方。他们不仅不时跟踪候选人,还在整个招聘过程中指导他们。这将改善候选人的体验,并让你的品牌处于正面的聚光灯下。
4.降低雇佣成本和时间
由于工作机器人正在使用非常先进的算法来选择特定职位的候选人,因此选择不符合工作要求的候选人的机会是最小的。这意味着你不必浪费时间和资源去面试错误的候选人。相反,你只需要专注于正确的事情。此外,这些招聘机器人可以自动完成一些小任务,如准备面试候选人的记录,通知他们面试日期,跟进,安排面试,收集面试官的反馈等。当您手动执行这些任务时,需要花费数天甚至数周的时间。
此外,由于你已经和你第一次面试的候选人建立了良好的关系,你可以很容易地通过直接向这些人推销来节省成本和时间。总体而言,在求职机器人的帮助下,你可以将面试的时间和成本减少 50 %- 60 %,这可不是一个小数字。
5.增加雇用有才能的候选人的机会
人工选择候选人的过程是有缺陷的。有时候,我们最终会拒绝有才华的候选人,而雇佣那些毫无才华的人。这不仅浪费了公司的时间和资源,还误导应聘者认为公司对人才没有价值。但我们不能因此责怪招聘人员。毕竟他们也是人,也会犯错。此外,他们还会收到成千上万份求职申请,必须一一审核。所以,他们可能会忽略一两个。
然而,像 Textkernel 这样的人工智能工具会密切关注你在潜在候选人中寻找什么,并向你推荐它们。这减少了出错的机会,确保你不会错过任何有才华的人。那么,你应该使用机器人进行招聘吗?我的回答是:是的,为什么不呢?
与其他行业一样,人工智能也可以被证明是招聘领域的游戏规则改变者。使用求职机器人,你可以更快、更低的招聘成本雇佣到有才华的候选人。这是大多数公司已经开始在招聘过程中使用它们的主要原因,他们实际上正在从中受益。
因此,在招聘中不使用人工智能机器人,你肯定会错过很多东西。那么,你还在等什么?赶快联系一家聊天机器人开发公司吧。
进入数据科学的 5 个最佳学位
Image Source: Collections of my data science articles.
数据科学是一个广阔的领域,包括几个细分领域,如数据准备和探索;数据表示和转换;数据可视化和显示;预测分析;机器学习等。对于初学者来说,学习数据科学的基础知识可能是一项非常艰巨的任务,特别是如果您没有适当的指导,无法了解所需的必要培训,或者要学习哪些课程,以及学习的顺序。在讨论容易导致数据科学的学位培训项目之前,让我们讨论一下数据科学所需的基本技能。
在之前的一篇文章( 数据科学最低要求:开始做数据科学需要知道的 10 个必备技能 )中,我讨论了从业数据科学家必备的 10 个必备技能。这些技能可以分为两类,即技术技能(数学&统计、编码技能、数据争论&预处理技能、数据可视化技能、机器学习技能和真实世界项目技能)和软技能(沟通技能、终身学习技能、团队合作技能和道德技能)。
虽然数据科学需要多种技能,但由于其多学科的性质,可以被视为数据科学先决条件的 3 种基本技能是数学技能、编程技能和解决问题技能。
分析学科的学位将为你提供数据科学所需的基本技能。每个在分析学科有很强背景的人基本上都可以通过自学来学习数据科学。
如果你有分析学科的背景,并且正在考虑数据科学,这里有一些你可以用来自学的资源:
(一) 数据科学专业证书 (HarvardX,直通 edX)
(二) 分析:基本工具和方法 (Georgia TechX,through edX)
(三) 应用数据科学与 Python 专业化 (密歇根大学,通过 Coursera)
(四)“Python 机器学习”,塞巴斯蒂安·拉什卡著。这本书提供了关于数据科学和机器学习的很棒的介绍,包括代码:“Python 机器学习”,作者 Sebastian Raschka 。作者以一种非常容易理解的方式解释了机器学习的基本概念。此外,代码也包括在内,因此您实际上可以使用提供的代码来练习和构建您自己的模型。我个人认为这本书在我作为数据科学家的旅程中非常有用。我会向任何数据科学爱好者推荐这本书。你所需要的是基本的线性代数和编程技能,以便能够理解这本书。
现在让我们来讨论 5 个可以轻松通向数据科学的最佳学位项目。我会试着给这些程序排序,从最好的开始,一路往下。我的排名可能有偏见,我想是因为我的背景,但请告诉我。
进入数据科学的 5 个最佳学位
1.物理学
我想把物理放在我清单的首位。我可能有偏见,因为我自己就是一个训练有素的物理学家。但是我觉得这个排名很有道理。物理学学位是最通用的学位项目之一。物理学学位为解决问题、分析技能、数学技能和编程技能提供了坚实的基础。这些技能很容易转移。这解释了为什么你可以找到在不同领域工作的物理学学位持有者,如学术界、技术、银行和金融、研发、软件工程、法律、军事、数据分析师等。
如果你目前正在攻读物理学学位,并且正在考虑数据科学,请确保你参加了一些编程课程。一些编程方面的背景知识是你在数据科学方面所需要的。你也可以选一些基础和高级统计和概率的课程。
2.数学
我会把数学放在第二位。就像物理学一样,数学也是一个非常多才多艺的领域,拥有数学背景可以通向几个学科,如银行和金融、工程、卫生部门、研发等。扎实的数学和统计学背景是数据科学最重要的技能。
如果你目前正在攻读数学学位,并且正在考虑数据科学,请确保你参加了一些编程课程。此外,参加一些基础和高级统计和概率的课程也很重要。
3.计算机科学
计算机科学学位在我的清单上排在第三位。就像物理和数学一样,计算机科学培训项目为解决问题、数学和编程技能提供了良好的基础。编程技能在数据科学中至关重要。
如果你目前正在攻读计算机科学学位课程,并正在考虑数据科学,请确保你参加了一些数学课程,如微积分、线性代数、统计和概率以及优化方法。
4.工程
任何工程学位课程,如机械工程、电气工程或工业工程,都将为您提供数据科学所必需的分析技能。
如果你目前正在攻读工程学位,并且正在考虑数据科学,请确保你参加了一些编程课程以及一些统计和概率方面的基础和高级课程。
5。经济学、会计学或商业学位
这些领域的学位也可以作为通向数据科学的途径。与物理和数学等课程相比,这些课程提供的分析技能可能缺乏数学的严谨性,但经济学或会计学学位将为人们提供商业技能,这在数据科学的现实应用中是必不可少的。
如果你目前正在攻读经济学、会计学或商业学位课程,并且正在考虑数据科学,请确保你参加了一些数学课程,如微积分、线性代数、统计和概率,以及编程课程。
总之,我们已经讨论了可以作为通向数据科学之路的 5 个学位项目。任何有正确动机和热情的人都可以学习数据科学的基础。然而,在物理、数学、计算机科学、工程或经济学等分析学科的背景将是一个额外的优势。
5 本关于微服务的最佳书籍
以正确的方式设计微服务架构的必备书籍
Photo by Gabriel Sollmann on Unsplash
对于复杂的应用程序,微服务架构提供了许多吸引人的优势,正如我在以前的帖子“ 微服务架构:简要概述以及为什么你应该在你的下一个项目 中使用它”中详细讨论的那样。设计微服务是一项极具挑战性的任务。更糟糕的是,如果微服务设计不当,注定会失败。开发人员和架构师应该事先对微服务架构有一个清晰的了解,才能设计微服务架构。如今,开发人员使用堆栈溢出、在线课程或博客帖子来了解某个主题。我建议通过彻底阅读一些书籍来补充在线课程、会议、博客帖子,以避免设计微服务中的陷阱。
在这里,我列出了五本书,它们将有助于更好地理解微服务架构以及如何在现实项目中使用它。
1。 构建微服务
Sam Newman是微服务架构的早期开拓者和微服务大师之一。在这本开创性的书中,他详细描述了微服务架构的原理以及如何设计、部署、测试和观察微服务架构。他还指出了设计微服务的潜在陷阱,以及如何以渐进的方式将 Monolith 应用程序迁移到微服务中。另外,萨姆·纽曼的文字优雅、清晰,他用一种令人惊讶的简单方式解释了如此复杂的话题。这是任何想从事微服务的人必读的一本书
克里斯·理查森 是一位享有盛誉的微服务专家,他还运营着一个最受欢迎的 微服务博客 。在本书:微服务模式中,Chris Richardson 描述了微服务架构的优势以及微服务的劣势和挑战。对于每个挑战,他都会提供一个或多个解决问题的模式以及它们的优缺点。这本书还总结了微服务世界中使用的所有模式。
3。 微服务—实用指南
Eberhard Wolff是德国著名的软件架构师,写过几本关于微服务的德语和英语书籍。微服务的主要挑战之一是它为不同的问题提供不同的解决方案,选择正确的解决方案相当困难。《微服务——实用指南》这本书在这方面非常有用,因为它为不同的问题提供了不同的解决方案,包括它们的优缺点。本书还花了大量时间讨论云原生微服务,如 Docker、Kubernetes、服务网格等。
微服务的最大挑战是如何将一个复杂的业务应用程序分割成不同的松散耦合的服务。幸运的是,领域驱动设计可以在这方面有所帮助。领域驱动设计提倡分两步设计软件:战略设计和战术设计。在战略设计中,IT 和业务一起寻找核心领域、支持领域、无处不在的语言和上下文映射。在战术设计中,它将每个域分解成更小的构建块,例如实体、值对象、聚合和聚合根。因此,领域驱动设计有助于找到微服务的边界和构建模块。为了深入了解领域驱动设计,我更喜欢由Vaughn Vernon写的“红皮书,而不是由Eric Evans写的原版蓝皮书,因为这本书可读性更好,并且使用了现代技术栈(例如,事件源,CQRS)。
5。设计数据密集型应用
微服务的另一个困难挑战是将中央数据存储拆分为特定于微服务的数据存储,然后在微服务之间共享数据/消息。此外,微服务架构提倡为微服务使用合适的数据存储,这可能会导致多语言数据库。因此,对现代数据存储、数据转换、数据共享的深刻理解对于设计有效的微服务至关重要。Martin Kleppmann Martin Kleppmann 雄辩地深入讨论了关于数据的一切:SQL、NoSQL 数据库、数据存储格式、数据传输格式、消息队列。这是关于现代数据管理最全面最完整的一本书,也是微服务架构师的必读书籍。
如果你觉得这很有帮助,请分享到你最喜欢的论坛上( Twitter,脸书,LinkedIn )。高度赞赏评论和建设性的批评。感谢阅读!
如果你对微服务架构感兴趣,也可以看看我下面的文章:
正确实施微服务架构的 10 个技巧
towardsdatascience.com](/effective-microservices-10-best-practices-c6e4ba0c6ee2) [## 微服务架构:简要概述以及为什么您应该在下一个项目中使用它
微服务架构的背景以及微服务架构相对于整体架构的优势
towardsdatascience.com](/microservice-architecture-a-brief-overview-and-why-you-should-use-it-in-your-next-project-a17b6e19adfd) [## 微服务架构及其 10 个最重要的设计模式
微服务架构、每个微服务的数据库、事件源、CQRS、Saga、BFF、API 网关、扼杀者、电路…
towardsdatascience.com](/microservice-architecture-and-its-10-most-important-design-patterns-824952d7fa41)*
人工智能和数据驱动的呼叫中心的 5 个最佳实践
在过去的十年中,呼叫中心发生了革命性的变化。虽然一些静态呼叫脚本和一刀切的策略仍然存在,但技术已经彻底改变了呼叫中心的运作方式。如今,呼叫中心拥有独特的能力,可以利用所有可用的数据来推动每次客户互动。这些数据源包括客户正在查看的数字营销活动、客户在过去一小时内完成的交易、客户的上一份账单或下一份账单,以及客户刚刚在电话中询问的内容。
人工智能中的分层还可以包括终身价值、流失倾向、客户满意度、情绪、购买可能性、信用风险等。这种类型的呼叫中心可以利用成功的在线策略,并使用技术从每个呼叫中产生最大的商业价值,即使每个呼叫中采取的行动可能非常不同。
呼叫中心必须为客户提供无缝、便捷的体验,否则就有可能输给竞争对手。美国运通发现,78% 的消费者因为糟糕的服务体验而放弃交易或没有购买意向。为了确保这种情况不会发生,许多呼叫中心正在转向人工智能和机器学习等技术,为他们提供下一个最佳行动、客户流失率和保留率、产品购买倾向等细节。
这里有五个数据驱动的呼叫中心的最佳实践,可以使用人工智能和大数据改善销售和客户体验。
1.实施智能呼叫路由
呼叫路由优化了人力资源成本,并有助于将正确的客户联系到正确的代表。人工智能不仅考虑到呼叫的原因,还考虑到呼叫的终身价值和复杂性,可以为给定的客户确定最佳的可用服务组。
或者,许多人选择使用基于技能的呼叫路由,这是基于对促销做出响应的可能性。如果一个呼叫中心团队正在处理促销 X 和另一个促销 Y,则可以根据可能的呼叫者行为将呼叫路由到适当的团队。为了最大限度地减少偏差,呼叫的子集应该采用循环路由方法,这有助于在使用人工智能模拟客户和代理行为时确保代表性样本。将人工智能分层到基于技能的呼叫路由,确保客户找到能够帮助他们的正确代理。
2.利用对话的背景
背景在呼叫中心至关重要,因为它使代理能够提供个性化的对话。通过使用数据,代理可以全面了解客户。历史数据显示客户已经如何与公司互动,而实时数据为消费者提供持续的体验(从移动设备到网站再到实体店)。
上下文也让客户的过程更容易,因为他们不需要重新解释他们的问题或疑问。此外,上下文是呼叫路由的一个关键因素,它可以快速将正确的客户联系到正确的代理。预测分析可以确定客户可能有哪些问题或顾虑。
背景对聊天机器人也至关重要。糟糕的静态聊天机器人对公司来说毫无用处,对客户来说也令人沮丧。然而,利用对话环境的聊天机器人可以在极其拥挤的市场中脱颖而出。聊天机器人也比代理便宜,但如果不进行优化,它们就会变得无关紧要。人工智能助手现在利用对话的上下文来更好地响应提示。许多人注意到 Siri、Alexa 和其他助手的能力越来越强,因为机器学习的进步改善了自然语言处理。
3.使用代理或个性分析
虽然大多数呼叫中心只关注客户,但关注代理也很重要。每个代理都有不同的沟通方式,吸引不同的客户群。有些代理人不能处理消极的呼叫者,而有些代理人擅长这种设置。公司应该查看代理的个性档案,并查看经验水平、销售经验、销售数字、电话处理时间等。更好地匹配客户和代理。
人工智能可以在这方面提供帮助。例如,一个代理可能擅长向刚刚下载了公司应用程序的客户销售。公司可以将这些电话转给那个代理人,以增加销售额。虽然大部分数据围绕着客户档案,但企业应该关注代理档案,以创造销售匹配。
4.关注 CRM 集成
客户关系管理系统使代理能够快速访问客户、促销、活动历史等所需的数据。许多客户现在开始期待的个性化服务,只有在强大的 CRM 与基于智能的呼叫路由相结合的情况下才有可能实现。客户关系管理系统可以跟踪客户如何与品牌互动以及他们已经拥有什么产品的信息,这意味着提供问题的答案,并更容易地建议另一次购买。
有了这些信息,代理可以使用定制的提示,推销客户更有可能购买的产品或附加产品。
5.关闭循环
当代理向客户提供服务时,应跟踪所有回应。诸如接受或拒绝报价、未报价、报价、购买等响应。每一个都有原因和代码,这对企业来说是至关重要的信息。综合考虑所有的信息,人工智能可以帮助发现模式。例如,也许代理使用特定的营销提示不断地进行销售。公司应利用这些数据获得信息性见解,并相应地编辑提示和报价。其他指标,如响应时间、处理时间、放弃率等。对于发现在呼叫中心什么行得通,什么行不通也很重要。
所有这些响应数据对于开始利用机器学习和人工智能至关重要。在通话数据中获得良好或不良响应的良好历史记录是一个关键的切入点。通过收集代理的信息、采取的行动和响应,公司可以利用人工智能和机器学习来创建更具洞察力的模型,供呼叫中心使用。
改善客户体验
最终,企业希望为消费者创造个性化的积极体验。美国运通发现,人们平均会告诉 9 个人好的经历,告诉 16 个人不好的经历。这项统计表明,虽然营销呼叫中心可能不会因为提供良好的体验而获得同样多的信任,但糟糕的体验可能会产生持久的影响。公司可以通过利用数据和使用这五种最佳实践来提高销售率,并为客户提供高质量的体验。
如果你的呼叫中心需要一个更加数据驱动的方法, Quickpath 可以帮助你。联系我们开始吧。
提高你快速和慢速思维的 5 本书
不要让你的系统 1 来评判这个帖子。
这里有 5 本书可以增强你的决策能力。它们有望让你的两个认知过程系统变得更好,增强你的直觉和深思熟虑。下面你会找到我的理由,告诉你为什么你应该联系每一个人,并附上一句话来鼓励你这样做。我的最佳建议是慢慢阅读,同时将你学到的东西应用到你的日常生活中。
可预测的非理性|丹·艾瑞里
读了它,你会更加意识到我们人类是多么的不理性。这本书充满了实地实验,以展示有趣的事实,如你为什么总是在时装店排队时购买 3x2 的袜子。
“为了眼前的满足而放弃我们的长期目标,我的朋友,是拖延症”
赤裸裸的统计|查尔斯·惠兰
阅读它来学习统计学的基本概念,从概率、推断、相关性和回归到有趣的、有时是挑衅性的、易于理解的现实生活中的例子。我一直用蒙蒂·霍尔的问题来取悦我的朋友。
“统计学就像一把大口径武器:正确使用时很有帮助,但如果用错了,可能会带来灾难。”
理查德·h·泰勒和卡斯·r·桑斯坦
阅读它,只是为了成为一个更好的自己。这本书的概念围绕着改善健康、财富和幸福的决策。我把许多例子应用到我的日常生活中,比如把水果放在一个看得见、拿得着的地方,以此来引导我的行为和吃得更健康的决定。
“你想把人们推进社会所期望的行为,无论如何,不要让他们知道他们目前的行为比社会规范要好”
选择的悖论|巴里·施瓦茨
读读它,更好地理解选择是如何影响你的生活的。研究员兼作家巴里·施瓦茨提出了一个简单的理论,认为太多的选择会限制一个人的自由。读完这篇文章后,我正努力成为一个满足者——一个乐于满足于足够好的选择的人——而不是一个最大化者——一个在做决定前检查每一个可行选择的人。
“不幸的是,我们生活中选择的增多剥夺了我们自己决定任何特定决定有多重要的机会。”
《生存的算法》作者|布莱恩·克里斯蒂安&汤姆·格里菲斯
阅读它,应用计算机科学的概念更好地解决常见和日常的决策情况,例如什么时候你应该停止寻找停车位,或者你是否应该继续去你最喜欢的餐馆或探索新的餐馆。
“尝试和失败至少是学习;不去尝试就会遭受无法估量的损失”
快乐学习!如果你想联系,这是我的 LinkedIn。
你应该听的 5 个数据科学播客
Image via Pexels
以数据科学、机器学习、人工智能和数据可视化为特色的播客综述。
Image via Clipartkey
我是播客的超级粉丝!因此,随着我深入了解数据科学,我会寻找播客来做这件事,这是有意义的。我想我会分享一些迄今为止我最喜欢的。你呢?你有什么喜欢的东西建议我添加到列表中吗?如果有,请在评论中分享。
Image via Banana Data Podcast
这是一个全新的双周播客,专注于数据科学生态系统的新闻和趋势。到目前为止,他们已经讨论了包括道德人工智能和有偏见的数据在内的话题。他们还提供每周简讯,在那里他们分享自己喜欢的关于数据科学、可视化等的文章。
Image via Data Skeptic
作为运行时间最长的数据科学播客之一,data 怀疑论者已经触及了所有的事情。每周节目的特色是以概念为中心的小插曲,以及对研究人员和从业者的更长时间的采访。作为一种令人愉快的享受,一些迷你剧集关注他们的宠物鹦鹉 Yoshi,它是他们的官方吉祥物。这是一堂有趣的课,这是肯定的。
Image via DataFramed
DataFramed 是一个每周一次的播客,主要内容是对从业者的采访,重点是数据科学试图解决的问题。我发现这个播客对于任何对了解什么是数据科学以及如何应用数据科学感兴趣的人来说都非常容易理解。
Image via Data Stories
虽然 Data Stories 不是专门关于数据科学的,但它确实关注了对任何从事数据工作的人都很重要的东西:可视化。我特别喜欢在最近一集里了解数据可视化协会。
Image via Linear Digressions
线性离题是一个播客,它使关于机器学习和数据科学的复杂话题变得容易理解。我真的很喜欢他们最近的一集,谈论机器学习工程师和随着时间的推移,数据科学角色可能会是什么样子。随着行业需求的变化,探索该领域将如何随着时间的推移而调整和发展是一件有趣的事情。
从 Python 2 切换到 Python 3 的 5 个简单技巧
我为学习者写了一份名为《强大的知识》的时事通讯。每一期都包含链接和最佳内容的关键课程,包括引文、书籍、文章、播客和视频。每一个人都是为了学习如何过上更明智、更快乐、更充实的生活而被挑选出来的。 在这里报名 。
末日即将来临……
不,这不是世界末日……是 Python 2 的结尾!
Python 2 将正式退役,2020 年 1 月 1 日之后****将不再维护**。这个消息对一些人(老一代 Python 2 用户)来说是可怕的,但对另一些人(酷的 Python 3 用户)来说却是巨大的安慰。**
那么这对那些用 Python 编码的人来说意味着什么呢?你是被迫切换到 Python 3 的吗?
实际上,答案是肯定的是的。
许多主要的 Python 项目已经签署了一份保证书,承诺完全迁移到 Python 3,放弃 Python 2。我们讨论的是一些非常常见的应用中的真正重量级产品:
- 数据科学:熊猫、Numpy、Scipy 等
- 机器学习 : TensorFlow、Scikit-Learn、XGBoost 等
- 网:请求,龙卷风
- 多多多
不用说,随着所有这些主要库全面转向 Python 3,更新您的代码库变得非常必要。
在本文中,我将与您分享从 Python 2 转换到 Python 3 的 5 个简单技巧,这将使转换平稳进行。
⑴进口
Python 2 使用相对导入,而 Python 3 现在使用绝对导入来使事情更加明确。
考虑以下示例文件夹结构:
py_package
├── main_code.py
└── helper_code.py
对于 Python 2 的相对导入,import 语句是相对于当前文件编写的。例如,如果我们想在主代码中导入一些助手代码,我们可以这样做:
from helper_code import help_function
Python 3 不再支持这种风格的导入,因为它不明确您想要“相对”还是“绝对”helper_code
。如果你的计算机上安装了一个名为helper_code
的 Python 包,你可能会得到错误的包!
Python 3 现在要求您使用 explicit imports ,它明确指定了您想要使用的模块的位置,相对于您当前的工作目录。因此,导入您的助手代码如下所示:
from .helper_code import help_function
注意包名旁边的新.
,它指定包驻留在当前文件夹中。你也可以做类似于..helper_code
的事情,它告诉 Pythonhelper_code
包比当前的main_code.py
包高一个目录。要点是 Python 3 要求您指定确切的包位置。
(2)打印报表
可怕的 Python 打印语句!
我们大多数人都曾遇到过与 Python 打印语句相关的错误。这一改变将 100%要求任何使用 Python 2 打印语句的人切换到 Python 3 风格。
# Python 2 style
print "Hello, World!"# Python 3 style
print("Hello, World!")
基本上,你必须在你所有的代码中为所有的打印语句加上括号。幸运的是,一旦你的 print 语句有了括号,它们就可以在 Python 2 和 3 中使用了。
(3)整数除法
在 Python 2 中,您可以使用/
操作符对整数进行除法运算,结果会四舍五入到最接近的整数。如果你希望结果是一个浮点数,你首先要把数字转换成浮点数,然后执行除法。
Python 3 通过使用两种不同的操作符:/
用于浮点除法,//
用于整数除法,从而避免了必须进行显式转换以转换成浮点的需要。
### Python 2
a = 3 // 2 # Result is 1
b = 3 / 2 # Result is 1
c = float(3) / float(2) # Result is 1.5### Python 3
a = 3 // 2 # Result is 1
b = 3 / 2 # Result is 1.5
Python 3 中显式操作符的使用使得代码更加简洁,可读性更好——我们确切地知道//
是整数,/
是浮点数,而不必进行显式类型转换。
新的除法运算符肯定是要小心的。如果您在从 Python 2 到 3 的过程中忘记了从/
转换到//
进行整数除法运算,那么您将在原来拥有整数的地方得到浮点数!
(4)字符串格式
在 Python 3 中,字符串格式的语法更加清晰。在 Python 2 中,您可以像这样使用%
符号:
"%d %s" % (int_number, word)
"%d / %d = %f" % (10, 5, 10 / 5)
关于那些 Python 2 语句,有一些事情需要注意:
- 变量的类型是显式指定的(%d 表示 int,%s 表示 string,%f 表示 float)
- 字符串语句和变量是分开编写的,并排放在一起
- 风格本身和 Python 2 印花很像;没有括号,插入变量的%符号等
Python 3 现在使用所谓的字符串格式化程序,它包含在 Python 字符串类str.format()
中。字符串格式化程序允许您通过位置格式化将字符串中的元素连接在一起。
"{} {}".format(int_number, word)
"{} / {} = {}".format(10, 5, 10 / 5)
有了新的format()
函数,根本不需要指定类型,一切都写在一个干净的语句中。你所要做的就是确保这些变量是有序的,一切都会顺利进行。
(5)返回可迭代对象而不是列表
在 Python 3 中,许多内置函数现在返回一个迭代器而不是一个列表。这种变化的主要原因是迭代器通常比列表更有效地消耗内存。
当你使用迭代器时,元素是在需要的基础上创建并存储在内存中。这意味着,如果你必须使用迭代器创建 10 亿个浮点数,你只能一次一个地将它们存储在内存中。如果你想创建一个有 10 亿浮点数的列表,你必须确保你有足够的内存,因为数据会被一次性存储在内存中。
在许多情况下,使用迭代器和列表的行为是一样的。这方面的一个例子是当循环通过range()
函数的输出时。
# Python 2 range() function returns a list
for i in range(10):
print(i)# Python 3 range() function returns an iterator
for i in range(10):
print(i)
注意语法是完全相同的,即使当我们使用 Python 3 时,我们有一个迭代器。需要注意的一点是,如果你确实特别想要一个列表,你所要做的就是直接转换类型:list(range(10))
。
Python 3 中一些更常用的返回迭代器而不是列表的函数和方法有:
- zip()
- 地图()
- 过滤器()
- Python dict()的方法:
.keys()
、.values(),
、
喜欢学习?
在 twitter 上关注我,我会在这里发布所有最新最棒的人工智能、技术和科学!也在 LinkedIn上与我联系!
改善数据治理的 5 个有效维度
您的组织所需的数据治理框架
人工智能的采用正在许多企业中迅速蔓延。这项颠覆性技术正在推动各行各业运营效率和决策流程的持续改进,并且有助于更好地了解客户需求、提高服务质量、预测和防范风险,等等。在这一领域,实施适当的数据治理框架成为组织充分释放数据潜力的基础。这篇文章有助于为您的组织定义数据治理框架。
一般来说,数据治理由一组过程组成,这些过程提供对企业中使用的数据的可用性、可用性、完整性和安全性的管理。更具体地说,对于机器学习,数据治理过程确保高质量的数据可用于整个企业的所有利益相关者,确保这种可访问性的目的始终可用。
在机器学习中,正如在计算机科学中一样,“垃圾进,垃圾出”。这意味着,如果输入低质量的数据,即使是最复杂、最花哨的机器学习模型也会表现不佳。那么,在实际使用数据之前,如何评估数据质量呢?通用的数据质量评估流程从定义一系列数据维度开始,这些维度只不过是原始数据的特征,可以根据预定义的基线标准进行测量。
下面列出了最佳数据质量评估需要考虑的前 5 个维度。
精度
它通过将数据集与已知的、可信的参考数据集进行比较来衡量数据集的可靠性。If 是指单个数据字段,通常与数据库故障、传感器故障、错误的数据收集策略等导致的异常值数量有关
时效性。
它被定义为从数据产生和获取到利用的时间延迟。在收集后才使用的数据可能已经过时,或者不再反映它所解释的物理现象
完整性。
它指的是可用数据的百分比,或者相当于缺少的值
一致性。
这通常意味着位于不同存储区域的相同数据应该被认为是等价的,其中等价可以具有从完全匹配到语义相似的多种含义
诚信。
这意味着数据符合由例如数据模型提供的其定义的语法(格式、类型、范围)
有关数据维度的更详细和全面的讨论,请参见*“大数据时代数据质量和数据质量评估的挑战”和“数据质量评估的六个主要维度”*。不言而喻,通常被监控的维度可以根据业务需求、流程、用户等而变化。
例如,对于社交媒体数据,及时性和准确性可能是最重要的质量特征。然而,由于社交媒体数据通常是非结构化的,一致性和完整性可能不适合评估。相反,对于生物数据,数据存储软件和数据格式是非常异构的。因此,一致性可能不是最合适的质量维度。
一旦选择了要监控的数据和尺寸,定义代表好的和坏的质量数据的值或范围的基线是很重要的,这是数据需要评估的质量规则。此外,每个维度将具有不同的权重,该权重决定了它对整体数据质量的贡献。规则需要有多严格,以及如何为每个数据维度选择上述权重,在很大程度上取决于单个组织对监控阶段的影响。
例如,人们可能很容易同意这样一个事实,即不正确或丢失的电子邮件地址会对营销活动产生重大影响。在这种情况下,人们将对可容忍的缺失记录数量设置非常低的阈值,并对完整性和准确性设置高权重。前面提到的低阈值实际上会最小化丢失电子邮件的数量,而高权重会保证现有记录是可用的和可靠的。同样的情况也适用于不准确的个人信息,这可能会导致错失销售机会或客户投诉增加。
一旦该准备阶段完成,该过程进入数据采集阶段,随后是数据监控阶段。后者主要由数据质量评估 过程和问题解决过程组成。
在数据质量评估过程中,要么定期生成数据质量报告,要么生成数据质量分数的连续记录,然后存储在数据库中。后一种策略将有助于长期跟踪数据质量。
问题解决流程使人或自动软件工具能够标记问题,并系统地调查和解决问题。当然,这样的日志提供的信息越多,解决数据质量问题的效率就越高。正如文章*“数据质量问题日志中包含什么内容”*中所建议的,不管是什么业务,某些信息都应该包含在所有日志中。首先,每个问题都应该有一个唯一的标识符。
使用序列号作为标识符还有一个额外的好处,那就是可以提供到目前为止已经发现了多少问题的即时图片。诸如问题提出和解决的日期以及每个问题的分类等信息都是重要的因素,因为它们允许计算诸如平均问题解决时间及其与目标解决时间的比较等统计数据。记录提出问题的人也是必要的,以便跟踪向谁报告进展并就补救行动计划达成一致。
负责调查和解决与其拥有的数据相关的问题的数据所有者也包含在此类日志中。
问题在组织内的估计影响也是一个关键因素,因为它允许对调查和解决所需的工作进行优先排序。
只有当数据质量被评估为良好且未检测到重大问题时,数据才能最终被第三方消费,并被考虑用于构建机器学习模型,以解决特定的业务问题。
在,我们将典型的机器学习管道的很大一部分用于评估数据质量。我们的监控策略发生在管道的早期阶段,如数据收集、清理和转换,是数据集成和模型设计等后续阶段的准备。这不仅鼓励数据科学家为他们的模型专门考虑高质量的数据,还加快了整个机器学习管道的开发和调试。事实上,遵循我们策略的数据科学家确切地知道当一个模型没有按预期执行时需要改进什么。
不言而喻,数据的真正价值与它为一个组织的决策过程提供了多少支持有关。对于任何旨在将人工智能用于其流程的企业来说,实施数据治理框架来监控和提高数据质量都是必不可少的。
为您的组织处理数据治理至关重要。因为好的数据总能带来好的决策。
你喜欢这个帖子吗?
跟随播客https://datascienceathome.com/别忘了加入我们新的不和谐频道的对话 。那里见!
参考
大数据时代数据质量和数据质量评估的挑战
数据质量评估的六个主要维度数据质量问题日志
启动机器学习冒险的 5 个基本资源
我作为初学者高调携带的 5 个资源。
Photo by Hope House Press - Leather Diary Studio on Unsplash
对学习人工智能感兴趣的学生经常问我一个问题:
“嘿 Ekin,你会推荐什么资源来入门 AI 和 ML?”
**这个问题问得好。**通常,人们很容易迷失在书架上和互联网上的资源海洋中。
对于所有那些好奇的初学者,他们只是在寻找一个开始的地方,这里有 5 个基本资源,它们在我自己从零到熟练的旅程中发挥了重要作用(还不是英雄,但每天都在努力变得更好)!
1.神经网络和深度学习
迈克尔·尼尔森
描述
就给初学者的书而言,没有比这更好的了。在这本免费的在线书籍中,尼尔森通过面向原则的方法和动手操作的方法,精心制作了一个概念清晰的神经网络插图。
尼尔森以初学者的心态写作,故意排除不必要的行话和低级信息。
虽然这本书传达的思想只是我们称之为机器学习的更广泛领域的子集,但它们无疑是重要的,当被理解时,它们打破了理解 ML 的精神障碍,并打开了理解的大门。
推荐
- 阅读概念性章节时记下笔记。它们不必漂亮或冗长。简单地写下信息可以提高长期记忆。
- **遵循实践教程。**花时间不仅复制尼尔森提供的神经网络代码,还要分析每行代码的用途。仅仅是单独执行这项任务就能增强你对神经网络的理解。
环
神经网络和深度学习是一本免费的在线书籍。这本书将教你:神经网络,一个美丽的…
neuralnetworksanddeeplearning.com](http://neuralnetworksanddeeplearning.com/index.html)
2.Siraj Raval,YouTube 频道
作者 Siraj Raval
Source: YouTube, Siraj Raval Channel
描述
“Watch Me Build an AI Startup” by Siraj Raval, Thumbnail
对于任何对人工智能感兴趣的人来说,Siraj 就是你要找的人。Siraj 的视频充满了相关的幽默和高水平的视觉效果,以一种引人入胜而又说教的方式打破了复杂的人工智能概念。
他的视频几乎涵盖了人工智能的每一个值得关注的话题。他制作了从 5 分钟 TensorFlow 教程到一系列人工智能背后的数学的视频。
推荐
- **订阅获取新内容的通知。**学习 AI 时,沉浸在领域中是必不可少的。一种方法是观看 Siraj 的精彩视频!Siraj 每周都会制作视频,以确保所有显著的进步都能与公众分享。
- 当学习一个新概念时,先搜索他的频道。 Siraj 的视频讲解是很好的起点。当研究不熟悉的想法时,把它们作为一个跳板。
环
让数据点亮!这个音乐视频的歌词实际上是有教育意义的,它们作为一个介绍性的讲座…
www.youtube.com](https://www.youtube.com/channel/UCWN3xxRkmTPmbKwht9FuE5A)
3.卡格尔
Kaggle Logo. Source: Kaggle
描述
Kaggle 被宣传为“你的数据科学之家”,是作为数据科学家成长的完美资源,因为它允许你实际应用机器学习概念。
Kaggle 本身配备了大量的资源:实践教程、入门竞赛、探索性内核(稍后会详细介绍)等等。
此外, Kaggle 是一个社区,聚集了非常热情的数据科学家,他们 100%愿意提供帮助。
(A Kaggle 内核是浏览器中的免费开发环境。更多关于 Kaggle 内核的信息,请点击:)
在《人工智能历险记》的这一集里,你会发现什么是 Kaggle 内核,以及如何开始使用它们。虽然没有…
towardsdatascience.com](/introduction-to-kaggle-kernels-2ad754ebf77)
推荐
- 从机器学习教程开始。这是适应新环境最简单的方法。
- 随后,**加入一个介绍性竞赛(即 MNIST 数据集)**并查看他们提供的启动代码。
- 从简单开始,慢慢来,逐步积累。在 Kaggle 上看了所有很酷的项目后,感觉被抛在后面是很常见的。不要气馁!耐心点。从简单开始。建立起来。
- 看看公开的内核(别人的代码)!通过这样做,您将接触到流行的机器学习库,如 numpy、pandas、scikitlearn、TensorFlow 和 PyTorch,
环
编辑描述
www.kaggle.com](https://www.kaggle.com/)
4.走向数据科学
描述
如果你正在阅读这篇文章,那么很可能你理解了媒体文章的价值。《面向媒体上的数据科学》是由数据科学爱好者热情撰写的简明、启发性文章的广泛纲要。
如果你不理解一个复杂的概念,在 TDS 上搜索这个概念可能会有所帮助。
推荐
- 每天阅读一篇推荐文章。这将有助于加强你对人工智能概念的理解,同时让你接触到该领域的各种主题。
- 每天阅读不同的主题。像任何好的训练集一样,你输入自己的神经网络的数据必须尽可能广泛,这样你才能在面对未知时进行归纳。
- 阅读时记下想法。仅仅记下重要的信息片段就能提高记忆力。
分享概念、想法和代码。
towardsdatascience.com](https://towardsdatascience.com)
5.深度学习
伊恩·古德菲勒、约舒阿·本吉奥和亚伦·库维尔
描述
虽然(非常)数学密集,这本书巩固了我的**基础。**它让我有能力理解该领域更严谨的概念。在某种程度上,它让我为学术文献(即研究论文)的严格性做好了准备。
这本书旨在成为一本深度学习教材。因此,正如我们所料,它具有标准教科书的属性:行话和精确的定义。它在可读性方面的不足,在质量方面得到了弥补。
它在正式解释 ML 和 DL 概念方面做得很好,从而填补了更简单的资源留下的空白。
推荐
- 不要让那个叫做“数学”的怪物吓倒你。如果你对学习 ML 感兴趣,数学就像灭霸一样不可避免。所以要泰然处之,打好基础,不要觉得自己被落下了。
- 用其他资源补充。如果你试图孤立地阅读整本书,你可能会发疯。如果你觉得有些概念被激烈的数学推理弄得模糊不清,那么简单的谷歌搜索通常就足够了!使用本文中的其他资源(TDS、Siraj 等。)作为补充。
环
[## 深度学习
深度学习教材是一个资源,旨在帮助学生和从业人员进入机器领域…
www.deeplearningbook.org](http://www.deeplearningbook.org/)
结论
恭喜你!
你刚刚迈出了开始的第一步:弄清楚从哪里开始。
机器学习是一个广泛的领域,上面列出的资源绝不涵盖每个细节。
记得使用这些资源作为发射台来逐步加强你在机器学习和流行子集深度学习方面的基础。
现在你知道从哪里开始,释放你的热情,全力以赴!
你现在可以尝试的数据科学项目的 5 个想法
现在就开始构建您的 GitHub 开源项目组合吧。
我非常喜欢建立自己的开源 GitHub 项目组合,作为一名数据科学家成长的一种方式。如果你对实用数据科学感兴趣,这里有一个你可以自己尝试的项目列表。这些肯定会让你被录用!
Build a portfolio of open-source data science projects on GitHub right now!
1.聚类方法
在学习 Python 的基础知识之后,您首先要学习的事情之一是如何对数据进行分类,并根据它们的不同特性将它们分组。你可以根据情感对文本进行分类,也可以根据相似度对图像进行分类。你可以使用 Kaggle 的不同数据集来对体育领域的顶尖选手进行分类,并尝试确定是什么让一名运动员成为明星。
这里的选项是无穷无尽的,你应该尽你所能去玩数据。
至于方法,您肯定会使用 DBSCAN 和/或 KNN 来对数据进行聚类。此外,一些维数约减,如主成分分析或 t-SNE,可能会有所帮助。
2.抓取网站并提取信息
有什么比选择一个你经常访问的网站并尝试抓取它更有趣的呢?你可以去搜索财经新闻、社交媒体趋势或最佳烹饪食谱。你甚至可以尝试刮谷歌和其他搜索引擎——用 Python 来说这并不难。
浏览一个网站很有趣,因为你可以从一个完全不同的角度了解网站是如何建立的,以及它们的信息流。
抓取搜索引擎对于了解不同的信息是如何在互联网上传播的非常有用。
如果你把两者联系起来,你会得到一个惊人的项目:一个特定主题的新闻提要!
从技术上讲,您将使用 Requests library 来清理 html 代码。或者,也可以用硒来刮。
3.数据清理
这是一个标准但有点乏味的任务:清理数据。这是标准的,因为作为一名数据科学家,这恰好是您将遇到的几乎任何现实世界问题的一部分。这很乏味,因为你可能最终会花很长时间思考如何理解你拥有的大量数据。
数据清理可能包括记录股票价格,并试图通过聚类和良好的可视化来理解这些信息。或者,如果你已经有了一个数据集,比如你的旧文档和照片,你可能需要通过删除那些不再需要的东西来整理它们。
数据清理可能像删除不需要的文件一样简单,也可能像尝试使用机器学习来发现数据集中的异常并删除它们一样困难。
这里的一个标准图书馆是熊猫。
4.数据可视化
无论你是否有一个好的数据集,理解数据的最好方法是尝试用许多不同的方式来可视化。这不仅对你有帮助,对你的潜在客户或雇主也有帮助。
通过视觉化,可能更容易发现正在发生的事情。
这里 Plotly 派上了用场,它是一个用于绘制函数和图形的标准 Python 库。如果你想建立一个交互式仪表板,那么你应该尝试在 Python 中使用 Dash。
5.神经网络
是时候进入机器学习了!神经网络没有你想象的那么难。它们最简单的实例实现起来非常快,特别是如果你使用 Keras 框架,它会为你做很多工作。
神经网络的切入点是对手写数字进行分类。如果你用谷歌搜索“MNIST Python ”,你会找到大量关于如何使用简单的神经网络来做这件事的教程。
从那时起,你可以进入更复杂的数据集(如动物的图像)和问题(多类分类,异常检测。
祝你玩得开心,好运!
Data Science Job
最后,如果你想了解成为一名数据科学家意味着什么,那么看看我的书数据科学工作:如何成为一名数据科学家,它将指导你完成这个过程。
如果你想了解更多,请阅读我关于成为数据科学家的其他文章:
关于欧洲最好的足球联赛,你可能不知道的 5 个观点!
分析了过去 10 个赛季 170 支球队的 18257 场比赛
“法国有农民联盟,除了 PSG 什么都没有。”
"德甲比意大利和西班牙差太多了."
"最伟大的俱乐部都踢英超联赛."
每个足球迷一生中至少听过或提出过一次这样的观点。如果你看看每个国家的俱乐部在冠军联赛中的表现,或者如果你比较一下在过去 10 个赛季中有多少不同的球队赢得了国内联赛冠军,有很多理由相信它们是正确的。然而,关于欧洲五大足球联赛西班牙、意大利、法国、德国和英格兰还有很多要说的。
娱乐并不总是伴随着最好的球队或球员。否则,你为什么会喜欢当地球队的周日联赛?看到许多进球,见证从半场领先变为全半场领先,或者参观拥有庞大球迷基础的传统俱乐部的比赛,都是很有趣的。
出于这个原因,我们利用来自football-data.co.uk自 2009/10 赛季以来的近 10 个赛季的西甲、意甲、法甲、德甲和英超的比赛数据收集了一个数据集。最终数据集中的每一行都代表了在过去 10 年中至少在本国甲级联赛中踢过一个赛季的球队。每支球队都有 13 个属性,包括过去 10 个赛季在主场比赛中的表现。
利用这些属性,我们用 graphext 创建了一个网络来计算相似性和相关团队的聚类(见上图)。现在,图中的每个节点代表原始数据集的一行/一组。有相似表现的团队互相联系。彼此之间有许多联系的团队形成独特颜色的集群。两个团队彼此越接近,他们就越相似。
好吧,但是我现在在哪里可以找到我喜欢的球队呢?
粉色集群拥有通常在国内联赛中获胜的球队。与其他球队相比,他们的表现主要表现在他们的进球数,他们在过去 10 年中在甲级联赛中的表现,以及他们在半场结束时输掉比赛到全场获胜的频率。非常有趣的是,德国俱乐部 RB Leipzig 已经是该集团的一部分,只是最近才晋升到德甲联赛。从那以后,他们一直打得很好,赢得了他们在粉红组的位置。
红色集群中的球队有一个共同点,那就是他们在全职时间里进了很多球,也丢了很多球。如果你作为一个中立的足球迷喜欢娱乐,我们可以推荐你观看其中一支球队的主场比赛。你肯定会看到很多目标!有趣的是,德甲拥有该集群中最多的球队(超过 30%)。
现在,介绍已经足够了,让我们从我们在标题中承诺的见解开始。如果你想寻找你最喜欢的团队,以及与谁联系最紧密,你可以自己在这里访问项目。
第一个洞见:德甲拥有大多数已经在联赛中呆了很多年的俱乐部。
在英格兰,竞争更加激烈,因为乙级联赛的小俱乐部有更多的投资者。这些球队增加了英超球队的压力,并引起了更高的波动。
第二个观点:在大约 60%的比赛中,半场成绩等同于全职成绩。
在下一次现场下注时,请记住这一点;)
第三个观点:德甲联赛进球最多。
在德甲 50%的比赛中,你会看到至少 3 个进球(2.87)。
第四个洞见:在意甲,上半场的结果最有可能在比赛结束时被翻盘。
在 50%的意甲比赛中,主队领先或失败,你会在至少 18%的情况下看到一个完整的结果。
第五个观点:法国拥有最成功的主场球队。
法国和德国之间的差异也相当显著。
我们希望你喜欢阅读我们对欧洲最佳足球队的分析。如果是这样的话,查看我们的网站以及任何关于我们如何工作的其他信息,不要犹豫,通过 max@graphext.com直接联系我。
软件架构的 5 个关键原则
有哪些伟大的软件架构师藏在他们的腰带下面
Courtesy: yourspear.com
解决方案架构师是负责系统架构以及特定产品的技术标准(包括技术、平台、基础设施)的指定专家。他们设定愿景,他们的分析是产品成功的关键定义、设计、交付和终身支持。因此,他们不仅需要了解业务需求,还需要了解什么是合理的、可扩展的、经济高效的,并且符合组织的总体技术目标。
架构师的一个重要技能是能够从许多不同的角度来看待架构:其中的每一个可能都不完全相关,但是将它们结合在一起会给出产品的直升机视图。这些观点包括原则、标准、模式和反模式、经验法则和经验实践,它们对于制定特定方向的决策以及评估项目的成功是必不可少的。
在这篇文章中,我们将涵盖那些建筑原则,这些建筑原则归因于你作为一名建筑师的角色是“下沉还是游泳”!
“如果你觉得好的建筑很贵,那就试试坏的建筑吧!”布莱恩·福特约瑟夫·约德
𝕊𝕆𝕃𝕀𝔻 𝕡𝕣𝕚𝕟𝕔𝕚𝕡𝕝𝕖𝕤
让我们从我最喜欢的主题开始:坚实的原则不仅适用于软件开发,也适用于设计系统。我们现在将看到如何…
单一责任原则
每个系统功能(例如服务/模块/api)应该只有一个责任,因此也是一个改变的理由。尽可能缩小责任范围意味着用户知道预期的目的,从而减少错误。
开闭原理
这个原则假设最好是扩展一个系统行为,而不是修改它。虽然试图提前预测需求的变化通常不是一个好主意(因为这可能导致过于复杂的设计),但能够在对现有组件进行最小更改的情况下适应新功能是应用程序长寿的关键。
利斯科夫替代原理
在软件开发中,这意味着派生类必须可以替换它们的基类,但这一原则与 Bertrand Meyer 的契约设计的相似之处在于它如何应用于分布式架构:当两个服务之间有一个共同的“契约”时,它们可以有效地重复通信,该契约定义了输入/输出、它们的结构和它们的约束。因此:给定两个具有相同契约的分布式组件,其中一个应该可以被具有相同契约的另一个组件替换,而不改变系统的正确性。
界面分离原理
接口/契约必须尽可能地细粒度化和客户端特定化,这样调用客户端就不会依赖于它们不使用的功能。这与单一责任原则密切相关:通过分解接口,我们支持通过角色/责任分离的组合,以及通过不耦合不需要的责任的解耦。
从属倒置原则
高级模块不应该依赖于低级模块;它们都应该依赖于抽象。同样,抽象不应该依赖于细节,但是细节应该依赖于抽象。因此,该原理在较高级和较低级软件组件或层之间引入了接口抽象,以消除它们之间的依赖性。
Courtesy: Being a Data Scientist does not make you a Software Engineer!
𝕋𝕙𝕖 ‘𝕃𝕖𝕒𝕤𝕥’ 𝕡𝕣𝕚𝕟𝕔𝕚𝕡𝕝𝕖𝕤
我根据它们的命名惯例将它们组合在一起:
最小惊讶原则
最小惊讶原则(或最小惊讶)表明,一个解决方案或方法在第一次遇到时,不会让一个在该领域知识相当丰富的人感到惊讶(受众可能会有所不同,例如最终用户、程序员、测试人员等)。在更实际的情况下,该原则旨在利用用户的现有知识,以最小化他们在使用模块时的学习曲线,因此任何具有高不可预测性的因素都是重新设计的良好候选。
它适用于架构的每一个方面:从命名服务,到用户界面的可视化,到领域模型的设计。
There are good surprises and then there are bad surprises…
最省力原则
这个原则(也称为齐夫定律)源于一个基本的人类行为:**每个人都倾向于遵循尽可能不费力的路径。**例如,如果我们的设计遵循特定的模式,下一个开发人员将会一次又一次地遵循相同的模式,除非有更简单的方法来执行任务,在这种情况下,他们将会改变!或者,进一步说,一旦他们找到了任务的可接受结果,就没有立即改进当前解决方案的需要。
最少的努力是最少工作的变体
因此,当务之急是通过建立正确的架构来实现一个强有力的开始:它设定了很高的期望,并确保每个人都明白质量在项目的生命周期中不会受到损害,并且在未来的变化中会得到坚持。
对我来说,这个原则的伟大之处在于它的好处是可以推断的:一旦我们将一个正确的设计放在适当的位置,我们就可以创建一个架构上的框架,这将是我们构建下一个系统的基础。换句话说,我们能够为组织的软件系统建立一个成功的、经得起未来考验的模板。
Path of least resistance
𝕋𝕙𝕖 𝕡𝕣𝕚𝕟𝕔𝕚𝕡𝕝𝕖𝕤 𝕠𝕗 ‘𝔼𝕔𝕠𝕟𝕠𝕞𝕚𝕔𝕤’
这两个原则有一个共同的主题:充分利用机会的成本和延迟决策的成本。
机会成本原则
每次我们做出选择时,我们都会赋予这个选择一定的价值。价值有两部分:收益和成本。选择的机会成本是我们为了得到它而放弃的东西。为了做出一个好的经济决策,我们希望选择对我们来说收益最大但成本最低的选项。
例如,如果我们有两个选择,要么是内部构建的系统,要么是现成的供应商产品,而我们选择了后者,那么我们的机会成本就是我们的开发团队本可以开发但没有开发的全新系统。
这就是架构的全部:权衡各种选择,并试图做出明智的决定,哪一个将为项目增加最大的价值。例如,一个非常常见的二分法是,是创建一个快速上市的战术性解决方案,还是创建一个更具战略性的解决方案,该解决方案现在会更昂贵,以便在未来的项目中利用它,从而使以后的成本最小化。
以下是一些需要考虑的要点:
- 架构分析/评估的可用时间是多少?想出一个解决方案已经够有挑战性了,更别说几个了!
- 未来 1-3 年的产品渠道是什么?还有其他什么项目在排队?你能看到任何协同作用吗?
- 您当前可能解决的技术债务是什么?
- 反过来:如果你追求一个战术性的解决方案,会招致多少新的技术债务?
- 对于您组织中的系统来说,哪些质量属性是最重要的?它们将如何被提议的解决方案所折衷?
- 除了架构团队,还有谁是会影响决策的风险承担者?生意?你的老板?技术设计权威?每个利益相关者的主要目标是什么?你将如何缓解相互冲突的需求?
Courtesy: What is opportunity cost
最后责任时刻原则
这一原则(又名延迟成本)源自精益软件开发,强调尽可能长时间地坚持采取重要行动和关键决策。这样做是为了不到最后一刻不排除重要的选择,也就是说,等到你有更好的消息时再缩小选择范围。
一种策略,即不要过早做出决定,而是推迟承诺,并保持重要且不可逆转的决定开放,直到不做决定的成本大于做决定的成本。
减轻决策过晚风险的一种方法是建立概念验证 (POCs)来原型化备选方案,并向利益相关者展示他们的要求。
Early in a project we should make as few binding decisions as possible!
𝔼𝕡𝕚𝕝𝕠𝕘𝕦𝕖
架构原则帮助我们评估我们在整个项目中做出的决策,并确保我们符合总体目标,不仅仅是项目,还有组织的技术。这是我们阐述的五项原则的融合:
我希望这篇文章是你建筑之旅的灵感和指导来源。如果您想进一步了解我们介绍的一些主题,这里有一些不错的资源:
参考资料:
- Unix 编程的艺术:最小惊奇原则
- IT 架构:削减成本和复杂性
- 延迟成本:一个关键的经济指标
- 软件架构师手册
感谢阅读!
我经常在媒体上写关于技术的&数据——如果你想阅读我未来的帖子,请‘关注’我 !
5 个鲜为人知的熊猫把戏
Pandas provides high-performance, easy-to-use data structures and data analysis tools for the Python
pandas 无需介绍,因为它已经成为 Python 中事实上的数据分析工具。作为一名数据科学家,我每天都使用熊猫,我总是对它的众多功能感到惊讶。在这篇文章中,我将向你展示我最近学到的 5 个熊猫技巧,用它们来帮助我更有效率。
对于熊猫新手— 熊猫为 Python 编程语言提供了高性能、易于使用的数据结构和数据分析工具。这个名字来源于术语“面板数据”,这是一个计量经济学术语,指的是包含同一个人在多个时间段的观察结果的数据集。
要运行示例,请下载这个 Jupyter 笔记本。
这里有几个你可能感兴趣的链接:
- [Complete your Python analyses 10x faster with Mito](https://trymito.io/) [Product]- [Free skill tests for Data Scientists & ML Engineers](https://aigents.co/skills) [Test]- [All New Self-Driving Car Engineer Nanodegree](https://imp.i115008.net/c/2402645/1116216/11298)[Course]
你愿意多看一些这样的文章吗?如果是这样,你可以点击上面的任何链接来支持我。其中一些是附属链接,但你不需要购买任何东西。
1.日期范围
当从外部 API 或数据库获取数据时,我们经常需要指定一个日期范围。熊猫保护了我们。有一个 data_range 函数,返回按天、月或年等递增的日期。
假设我们需要一个按天递增的日期范围。
date_from **=** "2019-01-01"
date_to **=** "2019-01-12"
date_range **=** pd**.**date_range(date_from, date_to, freq**=**"D")
date_range
让我们将生成的 date_range 转换为开始和结束日期,并将其传递给后续函数。
**for** i, (date_from, date_to) **in** enumerate(zip(date_range[:**-**1], date_range[1:]), 1):
date_from **=** date_from**.**date()**.**isoformat()
date_to **=** date_to**.**date()**.**isoformat()
**print**("%d. date_from: %s, date_to: %s" **%** (i, date_from, date_to))1\. date_from: 2019-01-01, date_to: 2019-01-02
2\. date_from: 2019-01-02, date_to: 2019-01-03
3\. date_from: 2019-01-03, date_to: 2019-01-04
4\. date_from: 2019-01-04, date_to: 2019-01-05
5\. date_from: 2019-01-05, date_to: 2019-01-06
6\. date_from: 2019-01-06, date_to: 2019-01-07
7\. date_from: 2019-01-07, date_to: 2019-01-08
8\. date_from: 2019-01-08, date_to: 2019-01-09
9\. date_from: 2019-01-09, date_to: 2019-01-10
10\. date_from: 2019-01-10, date_to: 2019-01-11
11\. date_from: 2019-01-11, date_to: 2019-01-12
2.与指示器合并
合并两个数据集是将两个数据集合并为一个数据集,并根据公共属性或列对齐每个数据集的行的过程。
我错过的合并函数的一个参数是indicator
参数。Indicator argument 向数据帧添加了一个_merge
列,它告诉您“该行来自何处”,左侧、右侧或两个数据帧。当处理更大的数据集来检查合并操作的正确性时,_merge
列非常有用。
left **=** pd**.**DataFrame({"key": ["key1", "key2", "key3", "key4"], "value_l": [1, 2, 3, 4]})
right **=** pd**.**DataFrame({"key": ["key3", "key2", "key1", "key6"], "value_r": [3, 2, 1, 6]})
df_merge **=** left**.**merge(right, on**=**'key', how**=**'left', indicator**=**True)
_merge
列可用于检查是否有预期数量的行具有来自两个数据帧的值。
df_merge**.**_merge**.**value_counts()both 3
left_only 1
right_only 0
Name: _merge, dtype: int64
3.最近合并
当处理股票或加密货币等金融数据时,我们可能需要将报价(价格变化)与实际交易结合起来。假设我们希望将每笔交易与之前几毫秒发生的报价合并。Pandas 有一个 merge_asof 函数,它能够通过最近的键(在我们的例子中是时间戳)合并数据帧。数据集报价和交易取自熊猫的例子
报价数据框包含不同股票的价格变化。通常,报价比交易多得多。
quotes **=** pd**.**DataFrame(
[
["2016-05-25 13:30:00.023", "GOOG", 720.50, 720.93],
["2016-05-25 13:30:00.023", "MSFT", 51.95, 51.96],
["2016-05-25 13:30:00.030", "MSFT", 51.97, 51.98],
["2016-05-25 13:30:00.041", "MSFT", 51.99, 52.00],
["2016-05-25 13:30:00.048", "GOOG", 720.50, 720.93],
["2016-05-25 13:30:00.049", "AAPL", 97.99, 98.01],
["2016-05-25 13:30:00.072", "GOOG", 720.50, 720.88],
["2016-05-25 13:30:00.075", "MSFT", 52.01, 52.03],
],
columns**=**["timestamp", "ticker", "bid", "ask"],
)
quotes['timestamp'] **=** pd**.**to_datetime(quotes['timestamp'])
交易数据框包含不同股票的交易。
trades **=** pd**.**DataFrame(
[
["2016-05-25 13:30:00.023", "MSFT", 51.95, 75],
["2016-05-25 13:30:00.038", "MSFT", 51.95, 155],
["2016-05-25 13:30:00.048", "GOOG", 720.77, 100],
["2016-05-25 13:30:00.048", "GOOG", 720.92, 100],
["2016-05-25 13:30:00.048", "AAPL", 98.00, 100],
],
columns**=**["timestamp", "ticker", "price", "quantity"],
)
trades['timestamp'] **=** pd**.**to_datetime(trades['timestamp'])
我们通过报价器合并交易和报价,最新的报价可能比交易晚 10 毫秒。如果报价落后于交易超过 10 毫秒,或者没有任何报价,该报价的买价和卖价将为空(本例中为 AAPL 股票)。
pd**.**merge_asof(trades, quotes, on**=**"timestamp", by**=**'ticker', tolerance**=**pd**.**Timedelta('10ms'), direction**=**'backward')
4.创建 Excel 报表
Pandas(带有 XlsxWriter 库)使我们能够从数据框架创建 Excel 报表。这大大节省了时间——不再需要将数据帧保存为 CSV 格式,然后在 Excel 中格式化。我们还可以添加各种图表等。
df **=** pd**.**DataFrame(pd**.**np**.**array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]), columns**=**["a", "b", "c"])
下面的代码片段创建了一个 Excel 报表。要将数据帧保存到 Excel 文件,取消对writer.save()
行的注释。
report_name **=** 'example_report.xlsx'
sheet_name **=** 'Sheet1'writer **=** pd**.**ExcelWriter(report_name, engine**=**'xlsxwriter')
df**.**to_excel(writer, sheet_name**=**sheet_name, index**=**False)
*# writer.save()*
如前所述,该库还支持向 Excel 报表添加图表。我们需要定义图表的类型(我们示例中的折线图)和图表的数据系列(数据系列需要在 Excel 电子表格中)。
*# define the workbook* workbook **=** writer**.**book
worksheet **=** writer**.**sheets[sheet_name]*# create a chart line object* chart **=** workbook**.**add_chart({'type': 'line'})*# configure the series of the chart from the spreadsheet
# using a list of values instead of category/value formulas:
# [sheetname, first_row, first_col, last_row, last_col]* chart**.**add_series({
'categories': [sheet_name, 1, 0, 3, 0],
'values': [sheet_name, 1, 1, 3, 1],
})*# configure the chart axes* chart**.**set_x_axis({'name': 'Index', 'position_axis': 'on_tick'})
chart**.**set_y_axis({'name': 'Value', 'major_gridlines': {'visible': False}})*# place the chart on the worksheet* worksheet**.**insert_chart('E2', chart)*# output the excel file* writer**.**save()
5.节省磁盘空间
当处理多个数据科学项目时,您通常会从不同的实验中获得许多预处理数据集。笔记本电脑上的固态硬盘会很快变得凌乱不堪。Pandas 使您能够在保存数据集时对其进行压缩,然后以压缩格式读回。
让我们用随机数创建一个大熊猫数据框架。
df **=** pd**.**DataFrame(pd**.**np**.**random**.**randn(50000,300))
当我们将这个文件保存为 CSV 格式时,它会占用硬盘上将近 300 MB 的空间。
df**.**to_csv('random_data.csv', index**=**False)
使用一个参数compression='gzip'
,我们可以将文件大小减少到 136 MB。
df**.**to_csv('random_data.gz', compression**=**'gzip', index**=**False)
将 gzipped 数据读入 DataFrame 也很容易,所以我们不会丢失任何功能。
df **=** pd**.**read_csv('random_data.gz')
结论
这些技巧帮助我每天与熊猫相处时更有效率。希望这篇博文向你展示了熊猫的新功能,这将有助于你提高工作效率。
在你走之前
在 Twitter 上关注我,我经常在那里发布关于数据科学和机器学习的微博。
5 行代码说服你学习 R
为那些持观望态度的人写的一篇简短论文
支持本文的所有代码都可以从这个 Github repo 中派生出来。
给数据科学家(或任何人)的一些好建议。
如果多次编写相同的代码;创建一个函数。如果你不止一次地给出同样的建议;写一篇博文。
这就是了。这是我一生中第一千次发现自己在说服某人学习 R(一种开源统计编程语言)。当某人是每天使用 Excel 的业务分析师时,这种对话会很容易。如果你在一组复杂的电子表格中挣扎,那么写代码是多么的优越是显而易见的。它是可读的,可复制的,可移植的,可扩展的。然而,大多数反对 R 的声音来自开发者和计算机科学团体。我日复一日地在 Python 和 R 之间穿梭,在项目与项目之间穿梭。这两者的价值对我来说都是显而易见的,为什么不是其他人呢?
对 R 有一些奇怪的偏见,不是源自传统的开发圈(比如 JavaScript 和 Python)。因此,R 的一些语法怪癖不太符合这些社区的期望。但是对怪癖的担心并不是避免使用强大工具的好理由。因此,对于那些对学习 R 犹豫不决的人,不管你是业务分析师还是开发人员,下面是我在接下来的 5 分钟内说服你的最佳尝试。
是的,R 是为数据、数据科学和统计学而设计的,但它也非常灵活和健壮。这里有五行简单的代码(或者更确切地说,是函数),代表了这种语言有多棒。
第一行
*install.packages('any_package_on_CRAN')*
每一个 R session 里面都有一个入口,可以访问成千上万社区成员的工作。这一行代码(从 R 内部)安装来自 CRAN(综合 R 存档网络)的包,这是一个遍布全球的志愿者服务器网络。
CRAN 拥有其他 R 用户编写的完全开源和免费的“包”(库)的集合。最重要的是,你直接连接到一个由工程师、统计学家、数据科学家、科学家和开发人员组成的庞大网络。这些包几乎在所有可能的方面扩展了 R 语言。它们在到达 CRAN 之前都经过了仔细的验证(通过一种混合的自动同行评审过程),所以你知道它们可以跨各种平台工作。如果你想对数据做些什么,可能有一个软件包可以满足你。一些有趣的例子包括:
- 网页抓取: httr , rvest
- 社交媒体: twitteR , Rfacebook , Rlinkedin
- 业务运营:销售专员, gmailr ,官员
- 金融: tidyquant ,实证金融
- 云存储: Dropbox , googledrive , Box
- 地图:地图,传单
- 深度学习: keras , tensorflow
我只是对这份清单略知皮毛。随着 R 的流行,可用软件包的数量呈指数级增长。目前,有近 14k 的软件包可用。如果一种编程语言的有用性可以根据支持库来判断,R 超过了最疯狂的期望。
第二行
*library(tidyverse)*
在 R 可用的所有包中,对数据科学和分析的基本任务最有用的是 tidyverse。
Popular Hex Design for tidyverse R Packages
tidyverse 部分由 Hadley Wickham 编写,它是一个包的集合,使常见的数据科学任务变得简单、优雅、可重复和快速。这些包的美妙之处在于它们都共享一个共同的语法和设计,所以使用它们是直观的,并能创造显著的效率。核心包可以轻松完成大部分数据科学过程。
编程语言的最大问题之一是阅读别人的代码可能相当困难。然而,当使用 tidyverse 和 tidy data 的核心原则时,这个常见的痛点就消失了。常识动词和基本的代码样式使解释他人的工作变得轻而易举。
第 3 行
*my_linear_model <- lm(formula = dist ~ speed, data = cars)*
前两行代码都是关于围绕 R 的巨大生态系统。然而,base R(不需要任何外部包就能得到的东西)本身就很棒。无需导入任何外部库,这一行代码就是一个矢量化(即超快速)的线性回归。您可以在拥有数百万行和数百列的数据集上运行这段代码。只要不耗尽电脑内存,效率就极高。
汇总统计、蒙特卡罗模拟、矩阵运算和广义线性回归模型,只是您从 base R 中获得的现成内容的几个例子。更重要的是,这些模型是严格运行的,并且已经准备好发布,完成了一个可解释的输出。例如:
**summary**(my_linear_model) *# model summary*
*#> Call:*
*#> lm(formula = dist ~ speed, data = cars)*
*#>*
*#> Residuals:*
*#> Min 1Q Median 3Q Max*
*#> -29.069 -9.525 -2.272 9.215 43.201*
*#>*
*#> Coefficients:*
*#> Estimate Std. Error t value Pr(>|t|)*
*#> (Intercept) -17.5791 6.7584 -2.601 0.0123 **
*#> speed 3.9324 0.4155 9.464 1.49e-12 ****
*#> ---*
*#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1*
*#>*
*#> Residual standard error: 15.38 on 48 degrees of freedom*
*#> Multiple R-squared: 0.6511, Adjusted R-squared: 0.6438*
*#> F-statistic: 89.57 on 1 and 48 DF, p-value: 1.49e-12*
结果可用于分析或应用。这里主要的一点是,R 被设计成自下而上地进行数据科学和统计;而其他语言,比如 Python,依赖于外部库(这并没有什么错!).这个用起来真的很出彩。
第 4 行
*knit()*
每个数据科学项目都需要一些文档。在某些时候,您需要将辛苦获得的数据驱动的洞察力呈现给其他人。很少有比使用 RMarkdown 更好的方法了。
RMarkdown uses knitr to create a powerful documentation system
RMarkdowns 基本概念是,它将简单 markdown 语法与 R 代码’块’联系在一起这产生了一个强大的文档系统。这个过程很简单;编织 R 块并把 markdown 转换成你想要的任何格式(html,pdf,word 等等)。).这意味着您的代码可以立即以多种格式呈现:
没有任何其他语言能从自己的生态系统中获得这种类型的支持。你可以学习 R,然后真正准备好写作和出书!
第 5 行
*runApp()*
许多数据科学项目并不以静态输出结束(就像我们从 RMarkdown 得到的那样)。相反,您希望交付能够集成到客户运营中的产品。进入 Shiny,web 应用框架为 R.
从分析到分析的飞跃中,没有什么比闪亮更容易接近了。我已经参与了几十个项目,其中最关键的项目涉及到某种类型的自动化。例如,有时业务问题需要持续的解决方案;你可以使用 Shiny 创建一个特定问题的应用程序留给你的客户。更重要的是,你不必从头开始。这里有很多例子。
Example Shiny App
最好的开始方式是用 shinydashboard 构建一个简单漂亮的应用。只需几行 R 代码,只需使用runApp()
命令,您就拥有了一个全功能的 web 应用程序。然后可以在 MatrixDS 或者 ShinyApp.io 这样的地方举办。
包扎
拥有从软件包到 web 应用程序的高质量社区驱动资源,R 是数据科学的必备语言。此外,当你学习 R 时,你就加入了一个超级棒又有趣的社区。这里有一些你可以做的事情:
此外,如果我没有提到 R 最流行的开发环境 RStudio 是开源运动的主要贡献者,那我就失职了。对这些包和语言的支持得到了学术界和工业界的一些重量级支持。因此,R 哪儿也不去。
你可能会问如何开始。这里有一些资源可以让你有个好的开始。
在线课程
在 LinkedIn 上联系我:https://www.linkedin.com/in/isaacfaber/
用 Python 检测假日的 5 分钟指南
如果您决定深入研究数据分析,例如,想要分析购买趋势,您可能想要在数据集中构造一个新属性,该属性只有两种可能的结果-0 或 1-是假日,不是假日。
Photo by Artem Sapegin on Unsplash
花点时间想想为什么这个派生变量可能有用。你可能不会发现假期本身有更大的购买量,但假期前一周的销售情况如何呢?
一整另一种动物,是不是?
无论如何,在今天这个相当简短的帖子中,我想讨论一下我前段时间发现的一个 Python 库——是的,就是这个名字。它允许你获得特定年份和特定国家的主要节日的日期和名称。你可能想知道它现在支持多少个国家,答案肯定会让你大吃一惊——大约 50 个左右(能够为一些国家指定个别地区)。
你可以在这里找到完整的列表:
一个快速、高效的 Python 库,用于动态生成国家、省和州特定的假日集。它…
pypi.org](https://pypi.org/project/holidays/)
本文的目标是对您最常用的库和展示函数进行一些探索。我们将创建 2019 年全年的日期列表,并从那里声明另一个列,如果那天(或)是假日,则该列的值为 1,否则为 0。
在进入代码之前,您需要安装库,因此启动终端并执行以下命令:
pip install holidays
一切都好吗?我的意思是应该的,看在上帝的份上,这只是一个小小的安装。不过,现在让我们做一些真正的事情。*
进口货
屁股总是,你的笔记本应该从进口开始。这里没什么特别的,只有 Numpy ,熊猫,日期时间,还有耶,新安装的节假日库:
你可能不需要 Numpy 跟着来,但是我总是喜欢进口的。
提取假期
如果你打开 Holidays library 的文档并向下滚动一点,你会看到 50 多个受支持国家的列表。
现在提取假期非常容易,您需要循环查找感兴趣国家的假期,并指定感兴趣的年份:
是啊,就这么简单。然而,获得的日期不是期望的格式。大多数情况下,您只关心日期本身,而不关心它代表什么假日,因为您最喜欢在数据集中有一个二进制属性,如果假日存在,则值为 1,否则为 0。
好消息是,提取日期的字符串表示非常容易:
现在让我们将所有的字符串表示存储在一个单独的列表中——稍后会派上用场:
太好了。现在,我们可以构建一个熊猫 DataFrame 对象,并在这些假期中尽情玩耍。
将一切联系在一起
对于熊猫,构建日期列表相当简单,比如说 2019 年全年:
太好了。现在,我们可以从这些日期构建一个 DataFrame 对象—让我们将它们放入日期列:
现在有一个小问题。日期看起来是以字符串格式存储的,就像我们的 us_holidays 列表一样,但事实并非如此。这是一个时间戳对象。下一个单元格验证了这一说法:
因此,让我们探索如何只提取日期作为字符串,并丢弃时间信息。您需要将时间戳转换成一个字符串,然后分割该字符串,只保留左边的部分(日期信息)。这是一件相当简单的事情:
现在我们可以使用列表理解的能力来构建一个二进制列表,如果日期是假日,则值为 1,否则为 0。我决定将所有内容打包到 print() 中,并指定一个不同的结束参数,这样整个列表就可以显示在屏幕上:
现在,最后,根据同样的原则,您可以将该列表作为一列添加到之前创建的 Pandas 数据帧中:
你差不多完成了。你现在可以继续你的分析了。当然,您拥有的数据集将会有更多的属性,所以这个新的二进制列对于分析可能会很方便。
感谢您的阅读,我希望您能在工作流程中利用这些知识。
喜欢这篇文章吗?成为 中等会员 继续无限制学习。如果你使用下面的链接,我会收到你的一部分会员费,不需要你额外付费。
* [## 通过我的推荐链接加入 Medium-Dario rade ci
作为一个媒体会员,你的会员费的一部分会给你阅读的作家,你可以完全接触到每一个故事…
medium.com](https://medium.com/@radecicdario/membership)*
熊猫绘图 5 分钟指南
了解如何使用这个流行的 python 工具快速可视化数据
Pandas 是数据科学领域最流行的 python 库之一。它提供了一系列用于 python 数据处理和分析的工具。Pandas 还有一个可视化功能,它利用了 matplotlib 库及其核心数据结构,即数据框。
虽然观想是相当基本的,并没有产生最美丽的情节。绘图功能,特别是当与其他 pandas 方法(如 groupby 和 pivot tables)结合使用时,允许您轻松地创建可视化以快速分析数据集。我几乎每天都在使用它来快速获得一些关于我正在处理的数据的信息,所以我想创建这个简单的指南来介绍一些我最常用的功能。
数据
在本文中,我将使用波士顿房价数据集,它是 scikit-learn 库的一部分。这也可以从互联网上的各种其他来源下载,包括 Kaggle 。在下面的代码中,我正在导入数据集并创建一个数据框,以便它可以用于熊猫的数据分析。
from sklearn.datasets import load_boston
import pandas as pdboston = load_boston()
boston_df = pd.DataFrame(boston.data, columns=boston.feature_names)
boston_df['TARGET'] = pd.Series(boston.target)
boston_df.head()
我们可以运行boston.DESCR
来查看每个特性的解释。
入门指南
pandas 中的绘图利用了 matplotlib API,因此为了创建可视化,您还需要将这个库与 pandas 一起导入。如果你在 Jupyter 笔记本中工作,那么你还必须添加%matplotlib inline
命令,以便在笔记本中可视化图形。
import matplotlib.pyplot as plt
%matplotlib inline
plot
方法从一个数据帧或数据系列创建一个基本折线图。在下面的代码中,我使用了这个方法来可视化AGE
列。
boston_df['AGE'].plot()
这个数据的一个更有用的表示是直方图。简单地将.hist
添加到这个命令中就会产生这种类型的图形。
boston_df['AGE'].plot.hist()
您可以通过添加title
参数为情节添加标题。
boston_df['AGE'].plot.hist(title='Proportion of owner-occupied units built prior to 1940')
由于 pandas 使用 matplotlib API,您可以使用该库的所有功能来进一步定制可视化。在下面,我定制了colormap
,并在 x 和 y 轴上添加了定制标签。
boston_df['AGE'].plot.hist(title='Proportion of owner-occupied units built prior to 1940', colormap='jet')
plt.xlabel('AGE')
plt.ylabel('FREQUENCY')
有关可用图表类型和可选参数的完整列表,请参见此处的DataFrame.plot()
文档。
相关
熊猫DataFrame.corr
方法可用于非常快速地可视化数据帧中变量之间的相关性。默认情况下,pandas 使用 pearson 方法,并输出包含变量相关系数的数据帧。
在下面的代码中,我使用这个方法来确定每个特性如何与目标变量相关联。输出显示在代码下方。
correlations = boston_df.corr()
correlations = correlations['TARGET']
print(correlations)
我们可以看到特征 RM(房间的平均数量)与目标有很强的相关性。让我们用熊猫来进一步形象化这种关联。
boston_df.plot.scatter(x='RM', y='TARGET')
上面的代码产生了下面的可视化效果。我们可以看到,一般来说,房子的中值价格随着房间数量的增加而增加。
分组依据
当您使用 groupby 函数组合图表时,pandas 可视化可以变得非常强大,可以用几行代码快速分析多个数据点。
让我们使用此功能来查看按 CHAS 变量分组的箱线图中所有特征的分布。此要素包含两个值,如果地产区域与河流接壤,则值为 1,否则值为 0。使用下面的代码,我们可以很快看到房子靠近河流时变量之间的任何差异。
以下代码按该列对数据框进行分组,并为每个要素创建一个方框图。我们现在可以很快想象出两组之间的差异。
boston_df.groupby('CHAS').boxplot(fontsize=20,rot=90,figsize=(20,10),patch_artist=True)
数据透视表
熊猫数据透视表,非常类似于 excel 等电子表格工具中的数据透视表,对于快速汇总数据非常有用。您可以将数据透视表与 pandas 中的可视化功能结合起来,为这些聚合创建图表。
从上面的方框图中我们可以看出,靠近河边的人和不靠近河边的人在房价上存在差异。在下面的代码中,我们创建了一个数据透视表来计算两组的平均房价。
import numpy as nppivot = pd.pivot_table(boston_df, values='TARGET', index=['CHAS'], aggfunc=np.mean)
pivot
这将创建以下输出。
为了将它可视化为一个柱状图,我们可以简单地运行pivot.plot(kind=’bar’)
,产生如下所示的可视化。我们可以很快看到,靠近河边的房子价格普遍较高。
这篇文章旨在快速介绍如何用熊猫绘图。使用可视化以及将它们与数据透视表和 groupby 方法结合起来,有更多的选择。熊猫用户指南包含了更广泛的可能性列表。
感谢阅读!
5 分钟论文综述:进化随机梯度下降
进化算法如何加速深度神经网络的优化
本文提出了一种新的进化版本的深度神经网络随机梯度下降。随机梯度下降(缩写为 SGD)是由 Robins 和 Monro 在他们的论文“随机近似方法”中首次提出的。它本质上是一种迭代优化方法,在迭代 k 期间随机抽取一个样本,并使用它来计算其梯度。然后,在给定步长(或学习速率)的情况下,将得到的随机梯度用于更新深度网络的权重。)在原始 SGD 算法中,这些被更新的权重被视为单个参数向量 θ 。
在他们的介绍中,作者认为 SGD 和进化算法(EAs)之间的互补关系值得研究。与 SGD 不同,EAs 通常是无梯度的。作者假设进化算法在处理复杂优化问题时比遗传算法更有优势,因为它们没有梯度。他们将 EAs 和 SGD 结合起来的提议可能有助于在大型分布式网络上实现优化。
作者提出的新方法使用参数向量 θ 的经验风险作为适应度函数,并在给定一组参数 θs 的情况下搜索最小适应度值。在他们的方法和实现部分,作者给出了提出的进化随机梯度下降(ESGD)算法背后的数学的详细描述。主要思想是给定一组随机初始化的参数向量,该算法搜索给出最低经验风险的参数向量。最好的后代是通过m-精英平均适应度选择的,精英平均适应度实质上是按照升序排列的最好的 m 个个体的平均适应度。例如,当 m = 3 时,则 m- 精英平均适应度给出整个群体中最好的 3 个个体的适应度。
Cui, X., Zhang, W., Tüske, Z. and Picheny, M. (2019). Evolutionary Stochastic Gradient Descent for Optimization of Deep Neural Networks. [online] arXiv.org. Available at: https://arxiv.org/abs/1810.06773
在每一代 ESGD 中,初始种群是通过参数的随机向量化产生的。使用预定的优化器(包括常规 SGD 和自适应矩- ADAM 优化器)和一组固定的超参数,更新每个个体,直到其适应度下降。然后对群体的最终适应值进行排序,并选择前 m 个个体加上 -m 个附加个体作为父代。下一代的后代是通过这些表现最好的个体的中间重组和随机零均值高斯噪声的添加而产生的。当群体的经验风险最小时,产生最小适应值的参数集被选为模型的真实参数。
使用 ESGD 在包括 BN-50、SWB300、CIFAR10 和 PTB 在内的众所周知的基准数据集上进行了多个实验。这些数据集涵盖了涉及语音识别(BN-50 和 SWB300)、图像识别(CIFAR10)和语言建模(PTB)的任务。选择用于评估的三个深度学习模型是深度神经网络(DNN)、ResNet-20(残差网络)和 LSTM(长短期记忆网络)。使用两个附加基线模型的适应值作为参考,作者表明由他们提出的算法产生的适应值在上述数据集内总是不增加的。
Cui, X., Zhang, W., Tüske, Z. and Picheny, M. (2019). Evolutionary Stochastic Gradient Descent for Optimization of Deep Neural Networks. [online] arXiv.org. Available at: https://arxiv.org/abs/1810.06773
在他们的讨论中,作者提出了保持 ESGD 种群多样性的重要性。这是因为如果群体在其适应值方面变得同质,则算法将达到过早收敛,并且将不会产生理想的结果。因此,ESGD 中引入了 m- 精英选择策略,作为一种在种群中诱导多样性的措施。除了种群多样性,作者还指出了由 ESGD 产生的互补优化器的重要性。众所周知,Adam 优化器可以比传统的 SGD 更快地达到收敛。然而,在更长的运行中,SGD 往往会赶上并达到比 Adam 更好的最佳点。作者建议,在 ESGD 中,不仅选择最佳参数,而且选择它们的互补优化器,因为它们负责产生更好的适应值。
总之,ESGD 算法提供了一种为深度学习算法选择最佳参数的新方法。该算法的有效性已经在 4 个数据集和 3 个不同的深度学习模型上得到验证。总的来说,SGD 算法可以被看作是一种共同进化,个体一起进化,为下一代产生更健康的后代。
Photo by Suzanne D. Williams on Unsplash
这是一篇写得很好,对我来说特别有趣的研究论文,因为优化是我研究中最重要的方面之一。它实际上在其方法部分之上有一个实现部分。这有助于像我这样的实际头脑更好地理解所提出的数学在实践中是如何实现的。我想这篇论文自从被选为 2018 年 NeuroIPS (NIPS)会议的参赛作品以来,已经经历了严格的审查。因此,这篇文章条理清晰、格式良好,对我来说并不奇怪。然而,对于在 ESGD 群体中用于优化的实际优化器家族,尤其存在模糊性。作者可以通过列出他们算法中使用的所有优化器和超参数来提供更多的清晰度,而不是仅仅列出几个例子,然后继续下一部分。我也很好奇为什么作者选择使用传统的 SGD 和 ADAM 作为优化器的选择,而不是其他优化器,如 RMSProp、Adagrad 和 Adadelta。似乎没有解释为什么特别选择 SGD 和 ADAM 作为群体的优化器。
Cui, X., Zhang, W., Tüske, Z. and Picheny, M. (2019). Evolutionary Stochastic Gradient Descent for Optimization of Deep Neural Networks. [online] arXiv.org. Available at: https://arxiv.org/abs/1810.06773
实验部分很好地总结了在单基线模型、top-15 基线模型和 ESGD 上运行的多个实验所获得的结果。然而,我发现图 1 中的第四张图非常令人困惑。该图包含 PTB 数据集的 LSTM 网络结果。即使作者解释了 ESGD 模型中困惑的增加,他们也没有解决 top-15 模型中适应值的平坦化。
我最喜欢的文章部分可能是讨论部分。作者就他们算法的重要性提供了许多有意义的讨论。我很高兴看到作者们讨论他们算法的计算效率。他们得出结论,鉴于现代 GPU 的并行计算能力,ESGD 算法应该与常规 SGD 算法花费大约相同的时间来计算端到端。然而,作者没有为 ESGD 提供任何未来的步骤或可能的扩展。我希望看到的一个可能的扩展不仅是网络参数和优化器的共同进化,而且是实际网络架构的共同进化。
2021 年最受欢迎的 5 种商业智能(BI)工具
随着商业智能(BI)工具在企业中发挥越来越重要的作用,这项技术在未来一年将发挥巨大的作用。BI 软件通过数据显示和分析帮助企业发现形势、市场挑战和机会。因此,it 部门和经理通常会寻找最适合他们需求的 BI 工具。
在这篇文章中,我从用户在 BI 软件中最关心的三个方面比较了 2021 年的 5 大 BI 工具,包括整体易用性、BI 功能和价格。最后,经过比较,你会看到哪个软件最适合你和你公司的需求。
在开始之前,让我们澄清一些商业智能工具的定义。
什么是商业智能?
商业智能为企业提供快速的数据分析技术和方法,包括数据收集、管理和分析。它将数据转化为有价值的信息,帮助企业进行数据驱动的决策,减少决策的盲目性。从而使企业的管理和经营更加合理。
From Google
什么是商业智能工具?
商业智能工具是指具有数据可视化和分析技术的软件。此外,它还具有独特的数据连接和处理能力。用户可以通过可视化界面快速生成各种类型的数据报告、图形和图表。因此,企业中的不同角色可以在安全的环境中,在不同的终端(如 PC、移动终端、大屏幕)上查询、分析和浏览数据。
商业智能工具有哪些类型?
根据功能模型的不同,商业智能工具可以分为三类:报表 BI、传统 BI 和自助 BI。
汇报 BI:
汇报 BI 主要面向 IT 部门。适用于各种固定格式的报表设计,通常用于呈现业务指标体系,支持的数据量不高。
报表 BI 主要采用类 Excel 的设计模式。虽然这种类型的 BI 目标是释放它在建立报告系统的艰苦工作,业务人员也可以快速学习在既定的数据范围内产生基本的报告和仪表板。
传统匕:
传统 BI 也面向 IT 人员,但侧重于 OLAP、即席分析和数据可视化分析。IBM 的 Cognos 和 sap 的 BO 是传统 BI 的代表。它的优点是处理大数据时的高性能和稳定性。但它的缺点也很明显——数据分析能力和灵活性差。根据 Forrester 的报告,传统 BI 无法满足企业 83%以上的数据分析需求。这表明许多企业已经建立了几乎无效的 BI 系统。此外,成本高、实施周期长、风险大、对用户的技术要求高也不利于传统 BI 的推广和普及。
自助商务智能:
自助 BI 也称为敏捷 BI。自助式 BI 的出现解决了传统 BI 无法满足业务部门分析需求的问题。
自助式 BI 面向业务人员,追求业务部门与 IT 部门的高效合作。通过直观的数据分析界面,业务人员可以基于对业务的理解高效地进行自助分析,发掘数据的价值,开发数据驱动的业务。
希望你从上面对商业智能工具有更深入的了解。如果是,那就言归正传,开始 bi 工具的回顾吧。
商业智能工具比较标准
我在2020 年商业智能工具十大关键特性中整理了一些商业智能工具的常见特性。基于此,我选择了用户在 BI 软件中最关心的三个方面:
- 整体易用性:用户界面设计的如何?直观吗?工具入门有多难?他们有培训、工具提示或视频来帮助你学习你在做什么吗?
- BI 特点:有哪些利弊需要注意?
- 价格:多少钱?
BI 工具列表
1.画面
类别:自助 BI 工具
From Google
1.1 整体易用性
该工具创建图形的直观方式和用户友好的界面使外行用户能够充分利用基本应用程序的功能。设计仪表板时,您需要创建一个工作表,然后将其拖动到容器中。对于初次使用的用户来说,需要时间来适应。
然而,一般来说,非技术用户无需深入培训就可以享受 stats 解析功能。要想深入了解该解决方案的功能,Tableau 社区是一个很好的去处,因为 Tableau 的粉丝将他们的专业知识和技能投入到社区中,他们愿意帮助解决任何用户问题并分享他们的经验。
1.2 BI 功能:利弊
- Pro:支持多数据源
关系数据库
NoSQL 数据库
多维数据库
大数据平台
文件数据源(Execl、csv、txt、Json、pdf、mdb、Tableau)
- 亲:惊人的数据可视化
无与伦比的可视化信息的能力是 Tableau 软件的最大优势。使用独特的可视化技术,我们可以通过使用颜色、形状和大小来表达分析结果,从而快速分析数据。开发团队正在研究用户喜欢什么类型的图表,以便 Tableau 可以显示数据的最佳图形。这部分唯一的缺点是不能制作仪表、3D 图和热图。
- 弊:BI 能力差
Tableau 缺乏全面的商业智能工具所需的功能,例如大规模报告、构建数据表和静态布局。而且导出和打印的格式有限,不便于结果共享。
- 缺点:定制问题
Tableau 几乎是封闭的,很难定制或嵌入到公司的 it 环境中。
1.3 价格
价格是根据用户数量而定的。考虑到大多数中小型公司的许可成本相当高,Tableau 是大型企业的首选。
2. FineReport
类别:报告 BI 工具
From Google
2.1 整体易用性
FineReport 拥有类似 Excel 的界面和拖放元素,新手很容易上手。任何之前使用过 Excel 的人都可以快速学习 FineReport。官网为用户提供了详细的教学文档和视频。
2.2 商务智能的特点:利弊
- Pro:智能数据输入
数据输入是 FineReport 的一个显著特点。它提供了丰富的控件,可以轻松地通过表单将大量数据直接输入到数据库中,并具有数据验证和临时存储等周到的功能。此外,它还支持在线和批量导入 excel 数据。
- 亲:轻松制作复杂报表
处理复杂报告的能力令人印象深刻。将聚合块自由拼接在一起,免去了 Excel 中频繁合并拆分单元格的麻烦。每个聚集块是独立的;您可以拖放并自由地将它们放在一起,以创建不规则的报告。
- 坏处:不方便多维分析
您可以为一个单元格数据设置多个向下钻取和向上钻取,但是您需要为每个维度创建一个报表。
- 缺点:没有推荐的图表功能
虽然 FineReport 提供了丰富的视觉效果、图表、地图、3D 效果,但并不根据数据推荐图表。你应该自己选择图表。
2.3 价格
FineReport 对个人使用是免费的,没有时间和功能限制。对于企业来说,按照功能模块和并发用户来收费。价格在 Tableau 和 PowerBI 的之间。
3. PowerBI
类别:自助 BI 工具
From Google
3.1 整体易用性
既然是微软开发的 BI 工具,基本上就是把 Excel 的数据透视表和 Excel 的数据可视化工具带到了一个更高的层次。PowerBI 的用户界面类似于 Excel,它允许一个短的学习曲线。它还为进一步学习提供了详细的学习视频和文档。
3.2 商务智能特性:利弊
- Pro: Excel 集成
PowerBI 可以无缝连接到任何 Ms office。此外,使用 PowerBI,您可以将数据放在 Excel 中,这样您就可以轻松地看到可视化背后的原始数据。
- Pro: R 脚本可视化
PowerBI 是前 5 大 BI 工具中唯一支持 R 的工具,它使用 R 丰富的分析和可视化功能来呈现高级数据整形和分析,如预测。
- 反对:权限管理问题
不是企业级控件,不支持多级权限分配,无法控制用户查看的列级权限粒度,集团权限控制也没有相应的完整控制策略。
- 缺点:免费版本的数据处理能力差
免费版本对它能处理的数据量有限制。一旦数据量达到 2GB,你就必须升级到付费版本,以减少处理时间。
3.3 价格
如果您的预算不多,并且正在寻找一个实惠的选择,Power BI 将是您最终选择的产品。Pro 版售价 9.99 美元/用户/月,低于小众同类产品。
4. QlikView
类别:自助 BI 工具
From Google
4.1 整体易用性
QlikView 是一种自助式 BI 工具,使用自己的“关联技术”和内存技术运行。它有一个直观的界面,可以直观地使用,并具有智能搜索功能。它不需要立方体结构,比常规分析更适合于特别分析。
4.2 商务智能的特点:利弊
- Pro:内存技术
由于其内存技术,QlikView 在数据从后端传输到前端时计算数据。因为没有预先聚集或预先计算的数据被预先存储,所以可以节省系统的存储器,并且数据传送的速度很快。
- 亲:直接&间接数据搜索
在 QlikView 中,您可以搜索直接和间接数据。在直接搜索中,您可以输入数据并获取您的信息。而在间接搜索中,您可以输入与您想要的数据相关的内容,并获得所有相关数据。
- 缺点:对于非技术用户来说不够友好。
数据管理应该更加方便用户。现在,它在脚本编辑器中。熟悉关系数据库的人可以很容易地处理这个问题,但是程序员的知识是必须的。最终用户或非技术人员可能不敢开始使用 QlikView,因为他们会发现很难上手。
- 缺点:不支持地图图表
除非购买第三方加载项,否则创建地理制图图表相当复杂。
4.3 价格
QlikView 上每个私人用户 1350 美元,并发用户 15000 美元。一个服务器许可证是 35000 美元。其他服务需要额外付费。
5. Sisense
类别:自助 BI 工具
From Google
5.1 整体易用性
像商业智能工具的其他市场领导者一样,界面非常直观,用户可以通过拖放操作。Sisense 也有一个在线社区。虽然 Sisense 的社区用户活跃度不如 Tableau,但是那个社区的资源对于深度学习的新手来说已经足够了。
5.2 商务智能特性:利弊
- Pro:速度快
借助该软件的片内引擎,您可以提出任何问题并立即获得答案,而无需重新开始新的查询。
- Pro:灵活集成
Sisense
- 缺点:限量图表
图表有限。此外,与市场领导者相比,开箱即用的可视化和报告功能有点太基础了。
- 缺点:不方便团队合作
管理员当前不能编辑彼此的仪表板。只有文件夹和仪表板的所有者可以发布任何更改。
5.3 价格
提供免费试用,完整版价格以报价为基础,需要联系供应商。
哪个 BI 软件最符合我的需求?
所以你已经了解了好处并检查了缺点。当您查看这 5 大 BI 工具时,哪一个是最好的?你可以看到这个商业智能软件有优点也有缺点。如果你仍然不确定哪种软件更适合你和你公司的需求,这可能会给你的决定提供一些建议。
看看画面,如果你:
- 需要能够提供出色数据可视化的软件。
- 有足够的预算。
- 想用一个拖放界面自己做一些商业分析
如果您有以下情况,请查看 FineReport:
- 需要减少批量构建复杂报告的时间
- 对 BI 工具的灵活部署和集成有需求
- 想在电视屏幕或大屏幕上显示您的仪表盘吗
如果您符合以下条件,请查看 PowerBI:
- 正在使用微软办公软件并熟悉 Excel
- 预算不多,你正在寻找一个负担得起的选择
- 重视团队合作和软件的协作特性
如果您符合以下条件,请查看 QlikView:
- 侧重于即席分析。
- 处理大量数据,对数据传输速度有很高的要求
- 掌握一些关系数据库的基础知识和编程知识
如果您符合以下条件,请查看 Sisense:
- 必须处理大而分散的数据集
- 对数据处理速度有很高的要求
- 正在寻找涵盖所有业务分析的软件