用于时间序列分析的 5 个未开发的 Python 库
很高兴有这些宝石在你的桶里
时间序列分析是数据科学家最常遇到的问题之一。大多数时间序列解决方案处理经济预测、资源需求预测、股票市场分析和销售分析。
如果从头开始,为大量与时间相关的数据开发复杂的模型对程序员来说可能是一项艰巨的任务。这就是 Python 发挥作用的地方,它有专门为时间序列分析编写的令人惊叹的库。
本文将讨论五个这样的库,如果您有兴趣解决与时间序列相关的问题,它们可能会对您有所帮助。其中一些库正在使用深度学习方法来寻找数据中的最佳模式。
尽管如此,我还是建议用您的数据逐个尝试这些库,然后观察哪个模型可以帮助您以更好的方式捕捉模式。您还可以组合每个模型的结果来获得一个合并的结果,这有时会为我们提供一个更好的结果。
1。 自动驾驶
顾名思义,它是一个用于自动时间序列分析的 Python 库。AutoTS 允许我们用一行代码训练多个时间序列模型,这样我们就可以选择最适合我们问题的模型。
这个库是 autoML 的一部分,其目标是为了方便初学者而自动化库。
属国
- Python 3.6 以上版本
- Numpy
- 熊猫
- Sklearn
- 统计模型
安装
pip install autoTS
你可以在这里了解更多关于这个库的信息。
2。 先知
Prophet 是一个优秀的库,由脸书的数据科学团队开发,用于解决时间序列相关的问题,可以使用 R 和 python。
这对于处理具有强烈季节性影响的时间序列特别有用,如购买行为或销售预测。此外,它可以很好地处理杂乱的数据,无需任何手动操作。
安装
pip install prophet
你可以在这里了解更多关于这个库的信息。
3。 飞镖
Darts 是一个 scikit-learn 友好的 Python 包,由 Unit8.co 开发,用于预测时间序列。它包含大量模型,从 ARIMA 到深度神经网络,用于处理与日期和时间相关的数据。
该库最大的优点是它还支持使用神经网络的多维类。
它还允许用户组合来自几个模型和外部回归的预测,这使得回测模型更容易。
安装
pip install darts
你可以在这里了解更多关于这个图书馆的信息。
4。 Pyflux
Pyflux 是一个为 python 构建的开源时序库。Pyflux 选择了更多的概率方法来解决时间序列问题。这种方法对于像预测这样需要更全面的不确定性的任务尤其有利。
用户可以建立一个概率模型,通过联合概率将数据和潜在变量视为随机变量。
安装
pip install pyflux
你可以在这里了解更多关于这个库的信息。
5。 Sktime
Sktime 是一个 Python 库,带有与 scikit-learn 兼容的时序算法和工具。它还具有分类、回归和时间序列预测模型。该库的主要目标是制作可以与 scikit-learn 互操作的模型。
安装
pip install sktime
你可以在这里了解更多关于这个库的信息。
结论
这些是一些 Python 库/框架,可以在处理时间序列问题时使用。互联网上还有一些更酷的时间序列库,比如 tsfresh、atspy、kats(——你也可以去看看。
主要目标是根据您的需求选择一个库,即能够满足您的问题陈述要求的库。要了解更多关于这些库的信息,你可以查看它们各自提供的文档,因为大多数都是完全开源的。
在你走之前…
如果你喜欢这篇文章,并且想继续关注更多关于 Python &数据科学的激动人心的文章,请点击这里https://pranjalai.medium.com/membership考虑成为一名中等会员。
请考虑使用我的推荐链接注册。通过这种方式,会员费的一部分归我,这激励我写更多关于 Python 和数据科学的令人兴奋的东西。
还有,可以随时订阅我的免费简讯: 普朗加尔的简讯 。
每个数据科学家都应该知道的 5 项独特技能
意见
沟通是关键…还有其他商业技巧和建议
凯利·西克玛在Unsplash【1】上的照片。
目录
- 介绍
- 为利益相关方减少 DS 术语
- 不要过度承诺
- 与软件工程师建立关系
- 主 SQL 优化
- Git 用 Git
- 摘要
- 参考
介绍
作为数据科学家或未来的数据科学家,我们可能会看到一些同样的技能被认为是重要的,这是事实;然而,我想提出五项独特的技能和/或建议,希望你能从这些例子中受益,并在你的职业生涯中应用它们。下面的技能将包括与利益相关者合作,以及一些编程技巧和建议。如果您想了解关于这五种独特的数据科学技能的更多信息,请继续阅读。
为利益相关者减少数据科学术语
如果你决定受雇于一家数据科学更面向客户的公司,这项技能非常重要。顾客主要有两种意思。第一种是外部类型,包括数据科学客户端。第二类是公司利益相关者,根据你的具体工作,你可能会与他们有更多的互动。他们通常由产品经理、业务分析师甚至其他软件工程师组成。你必须向这些人解释你复杂的数据科学模型,让他们明白易懂。
为了在一家公司启动一个数据科学项目,您需要减少数据科学专用术语的数量,以便与您合作的人能够理解您所采用的概念和方法。
下面是一个向产品经理简化行话的例子:
- 坏—“我们需要使用 XGBoost 机器学习算法,为我们的最终用户将均方根误差降低 12.68%”
在这种情况下,产品经理可能不理解 XGBoost 是什么意思(除非你进一步解释它),但这个想法仍然不是向你的利益相关者教授数据科学(大多数人不知道 RMSE,即使解释了,理解起来仍然很棘手——即使对数据科学家来说),而是总结模型对业务的影响。
- 好的—“我们将使用一种新的算法,这种算法有几个好处,最主要的是它将减少我们的预测误差,这将在下个季度节省 X 笔钱
这个例子要好得多,因为算法的名称对于涉众来说通常并不重要(除非是一个软件工程师在努力部署你的模型)。这个例子也强调了模型对业务的影响。虽然错误指标可能有用,但通常它们最终会被转化为业务已经习惯理解的 KPI ( 关键性能指标)指标。
不要过度承诺
Andrew Petrov 在Unsplash【3】上拍摄的照片。
作为数据科学家,我们可能会为我们的开发准确率达到 96%而感到兴奋,并想在屋顶上大声喊出来。虽然这是一个很好的结果,但我们希望确保该结果能够反映生产中实际可用的数据,以及我们最关心的特定数据组。也许对于我们更关心数据的组,准确率接近 92%,像边缘情况,准确率更重要。
以下是第一次向利益相关者展示结果时需要考虑的一些事情:
- 测试周期是多长?
- 我们期望不同的测试周期具有相同或不同的精度/误差吗?
- 这些数据在生产环境中可用吗?
- 我们的训练规模在生产中可以一样吗?
- 我们真的能在生产中如此频繁地预测吗?
- 这种型号的成本与节省成本相比是多少?
- 我们能经常训练这种模型吗?
- 当我们的预测缺少数据时会发生什么?
- 当异常事件导致特定时间段或组的准确性显著下降时,会发生什么?
- 测试,测试,测试!确保这些预测是稳定的。
正如你所看到的,当把结果传达给利益相关者时,有相当多的事情需要考虑,以上只是其中的一些考虑。
与软件工程师建立关系
这项技能可能更多的是一种建议,但对数据科学家来说仍然非常重要。当然,如果你的背景不是软件工程,这可能是更值得考虑的事情。例如,许多数据科学家不是来自软件工程或编码/编程背景,而是具有金融、地球科学、统计或数学背景。这些领域在某些方面是有益的,但数据科学家往往会在围绕机器学习算法和数据科学模型部署的复杂编码过程中遇到困难。如果这是你,那么明智的做法可能是找一个你觉得合适的人来讨论如何创建更高效的代码,或者找一个可以批准你的拉请求的人,而不是另一个数据科学家。
以下是与软件工程师一起工作的一些好处:
- 更好的理解面向对象编程( OOP )。
- 可以更快地部署模型。
- 可以更快地与业务整合。
- 如果需要的话,可以让另一个人仔细检查你的代码——第二双眼睛。
记住这一点很重要,是的,数据科学的一些角色涉及所有过程,包括所有涉及的软件工程或编程,因此这项技能或技巧对于以前只专注于在本地构建模型的数据科学家来说更是如此。
主 SQL 优化
卡斯帕·卡米尔·鲁宾在Unsplash【5】上的照片。
通常,就像 Python 等典型语言中的一般编程一样,数据科学家可能会努力优化 SQL 查询。这个技巧是理解在哪里和什么应用到你的查询,以便它可以更快地运行(和正确地),这可以使测试模型更快(例如— *如果你经常更新你的查询)*并且使生产中的训练更有效。
以下是 SQL 优化技术的一些示例:
- 用日期过滤
- 使用分类数据过滤
- 删除排序
- 执行内部联接
当然,还有更多优化查询的方法,但是上面是一些可以显著提高查询运行时间的简单方法。
Git 用 Git
在un splash【6】上由 Yancy Min 拍摄的照片。
当我们在学术环境中学习数据科学时,有时 Git 和/或 GitHub 实践会被遗忘。有许多常见的命令需要熟悉,这样您就可以快速更新您的模型代码,还有一些更独特的命令将在下面介绍。下面的链接是一个很好的例子,里面有很多不同类型的 git 命令,比如撤销更改、重写 git 历史、Git 分支和远程存储库等等[7]:
https://www.atlassian.com/git/tutorials/atlassian-git-cheatsheet
以下是一些独特的 Git 命令:
* git status* git diff* git branch* git commit* git fetch* git remote add* git reset — hard* git rebase -i <base>
摘要
上面提到的技巧和建议是我从自己身上受益的,希望你也能受益。我们已经讨论了如何与公司中的其他利益相关者合作,以及如何创建更高效的代码。总而言之,这些只是每个数据科学家都应该知道的一些技能,对你来说可能是独一无二的和新的。
作为总结,以下是每个数据科学家都应该知道的五大技能:
* Reducing DS Jargon for Stakeholders* Do Not Overpromise* Build a Relationship with a Software Engineer* Master SQL Optimization** Git* with Git
感谢您的阅读!如果您有任何问题,请联系我,如果您有任何经验,同意或不同意上面看到的技能,请在下面评论。你还能想到哪些每个数据科学家都应该知道的技能或建议?
我不隶属于上述任何一家公司。
参考
[1]Kelly sik kema 在 Unsplash 上拍摄的照片,(2021)
[2]Sammy Williams 在 Unsplash 上拍摄的照片,(2021)
[3]安德鲁·彼得罗夫在 Unsplash 上拍摄的照片,(2021)
[5]照片由卡斯帕·卡米尔·鲁宾在Unsplash(2017)上拍摄
[6]照片由 Yancy Min 在Unsplash(2019)上拍摄
[7] Atlassian, Git 备忘单,(2021)
可能会让你惊讶的 5 个独特的人工智能用例
找出人工智能在现实世界中令人着迷的五个独特应用
图安·加图伊拉特·维尔戈斯在 Unsplash 拍摄的照片
“有人称之为人工智能,但事实是这项技术将增强我们的能力。因此,我认为我们应该增强我们的智能,而不是人工智能。”
— 吉尼·罗梅蒂
人工智能能够在现代世界取得巨大成就。很难想象我们的日常生活没有人工智能的使用,因为从字面上看,几乎我们现实中的每一个组成部分都以某种方式象征性地使用了人工智能。
当你用手机开始新的一天时,你会自动利用各种人工智能功能。智能锁可以通过人工智能控制的模式或基于人脸识别模式的锁定系统来打开手机,以解锁智能手机设备。
然后,你开始打开其他应用程序,其中大多数应用程序以某种形式利用人工智能,如 YouTube 中的推荐系统,为你提供最合适的内容。如果你在浏览网页,你会经常发现自己在使用 autocomplete 的功能,它也使用了 AI。
当给别人发短信时,如果你犯了一个错误,你的错误通常会被自动更正等人工智能应用程序更正。为了探索数据科学和人工智能的更多日常应用,我强烈推荐通过下面提供的链接查看下面的文章。涵盖了我们日常生活中 AI 的大部分常见用例。
</10-awesome-real-world-applications-of-data-science-and-ai-6fddf3f34d74>
毫不奇怪,人工智能在现代世界中有这些奇妙的日常应用。然而,看看当代人工智能的一些更奇特和独特的用例是耐人寻味的。
在这篇文章中,我们将试图涵盖人工智能的一些令人惊叹的应用,这些应用可能会让你感到惊讶,或者你尚未发现人工智能的这些独特的现有应用。让我们开始讨论现代社会中五种独特的应用吧!
1.探索宇宙中的人工智能
宇宙是一个谜。在广阔无垠的宇宙中,有太多的东西我们一无所知,还有太多的东西有待发现。尽管我们有物理上的发明和发现,探索宇宙的大部分成功充其量也仅限于我们的太阳系或附近的星系。
然而,随着人工智能和各种技术进步的集成,我们可以利用人工智能的力量来揭示宇宙隐藏的真相,否则这将被认为是不可能的。人工智能对探索宇宙的主要贡献可以归功于深度学习和神经网络领域的进步。
为了讨论人工智能在探索宇宙中的一些应用,发现生成敌对网络具有创建宇宙映射的能力,该映射与人类在其理论愿景中所希望的现实期望极其相似。
这些人工神经网络还被用于创建对从用于观察极远距离的望远镜接收到的失真图像的现实解释。这些神经网络也用于火星等行星上的路虎上,通过将图像转换为人类感知的顶级视觉效果,发回高质量的图像。
要了解这个主题以及人工智能如何影响与宇宙相关的主题的定期发现,我强烈建议查看我以前的一篇文章“人工智能是破解宇宙奥秘的关键,原因如下!”从下面提供的链接。
2.人工智能在占星术、命理学和其他类似领域的应用
无论你是占星术、命理学或任何其他类似领域的坚定信徒,还是你并不真正关心这些领域的存在,探索人工智能对这些主题会产生什么影响都是耐人寻味和令人着迷的。
前面提到的主题和话题有一些值得考虑的吸引人的情节点。人工智能在用于这些学科时,可以创造出奇妙的结果。你是否同意它们完全取决于你的信念,但不可否认的是,人工智能在这些概念中找到了高度有益的用途。
有大量的数据可用,有了这些可用的信息,我们可以创建人工智能模型,以遇到关于这些主题的各种任务。它有可能将这些黄道十二宫和星座的主题联系起来,以提供某种科学或事实信息。最终,我们可以在人工智能的帮助下解读这些主题的现实可能性。
我强烈推荐看看下面的 参考 **,**他们分析了他们在热门星座推特账户上发现的数千条推文,使用机器学习 Bertmoticon 包来预测每个星座的表情符号。如果你是人工智能对世界的潜在影响的粉丝,这绝对值得一读!
3.教育中的人工智能
人工智能和教育有着密切的关系。毕竟,人工智能或数据科学可能是学生选择掌握的科目之一,并获得对这些优秀科目的进一步直觉和理解。人工智能的受欢迎程度在过去十年中显著上升,这一新兴趋势将在未来几年继续下去。然而,我们将重点关注如何利用人工智能来改善教育领域。
我第一次遇到像光学字符识别这样的人工智能技术是在我的学生时代,我们的多项选择类型问题(mcq)的答案脚本将由这些设备进行分析。可以从这些答案脚本中提取数据,并根据答案标记答案。随着现代技术的发展,光学字符识别被用于各种应用中,并且它们更加先进。这些设备的精确度已经大大提高了。
人工智能可以作为一种方法论,以更现实和独特的方式教授学生。使用现代人工智能技术,教育可以达到一个新的动态潜力,让学生享受他们正在学习的东西。这些人工神经网络,像生成对抗网络一样,可以在创建新的图像和视觉效果方面找到它们的用途,用于教授小学生各种独特的主题。
人工智能的另一个惊人用途是来自自然语言处理(NLP)领域。课程材料可以使用转换技术或注意力模型的序列到序列技术从一种语言翻译成其他语言。使用这一程序,课程内容和主题可以被更广泛的受众和学生所接触,他们可以从这种趋势中获得巨大的好处。
4.食品中的人工智能
令人惊讶的是,人工智能甚至被用于食品行业!
人工智能的主要用途是优化和自动化流程的众多可能性。它们还有助于节省大量资金,并减少许多行业中可能发生的任何类型的人为错误。
人工智能和机器学习可以让食品行业的一大领域受益。它们可以促进餐馆、酒吧、咖啡馆以及食品制造业的发展。先进的人工智能技术还可以通过分析和执行各种计算来生成关于最佳方法的数据和信息,从而用于提高水果和蔬菜的生产质量。
用于点餐和选择食物的新 Android 和 iOS 应用程序的开发,使人们更容易更快地点餐和预订食物,只需使用智能手机设备点击几个按钮。人工智能技术的这些进步直接影响了整个食品行业。它有效地改善了食品行业的经营方式。
我强烈建议查看下面的 参考文献 ,以获得关于该主题的更多信息,并了解与以下主题相关的更复杂的细节。这篇文章包含了关于人工智能在食品行业中的使用以及人工智能和机器学习的技术进步如何彻底改变食品制造业的完整详细解释。
5.服装和配饰中的人工智能
人工智能在服装和其他配饰方面的应用潜力巨大。亚马逊是利用人工智能和技术策略改善整体业务的最成功的例子之一。他们已经能够操纵人工智能的使用,通过实现客户满意度,为他们的公司提供最好的可能结果和结果。
像亚马逊这样的公司最重要的特征之一就是由这些公司提供的奇妙的推荐系统。像推荐系统这样的技术基于机器学习的原理工作,其中主要有两种类型的推荐——协作和基于内容的过滤。基于用户的偏好,一些最好的推荐被给予用户。
服装人工智能的另一个惊人特征可以归功于深度学习和神经网络的成功。生成对立网络能够创造服装和品牌的风格方法,这可能会导致一些非常流行的趋势。这些也可以用来纠正自拍的图像,使它们看起来更真实,更有吸引力。
如果你有兴趣了解更多关于如何利用人工智能的力量来改善你的营销策略,请查看下面提供的链接。
💔-ways-to-utilize-the-power-of-artificial-intelligence-for-your-marketing-today-f30b7b76feda>
结论:
“人工智能(我指的不是狭义的 AI)的进步速度快得令人难以置信。除非你直接接触过像 Deepmind 这样的团体,否则你根本不知道它的发展速度有多快——它正以接近指数级的速度增长。发生非常危险的事情的风险是在五年的时间框架内。最多 10 年。”— 埃隆·马斯克在评论 Edge.org时写道
人工智能无疑改变了我们生活的世界的现状,并为我们提供了许多选择来探索自然的不同元素和各种不同的领域及其各自的方面。随着人工智能在我们世界的崛起,它几乎在每个重要领域都有好处。
在本文中,我们讨论了人工智能可以发挥效用的五个独特领域和主题。各种各样的技术进步已经使人工智能成为一种动力。我们能够以前所未有的方式构建人工智能模型,并且我们能够通过这些人工智能构建获得巨大的成果。
人工智能的未来是光明的,在人工智能领域将创造更多的机会。如果你有任何其他你遇到过的人工智能的独特应用,请随时告诉我,我会确保在我的下一篇文章中包括它们。我确信人工智能会有更多精彩的用例,随着不断的发展和进步,会有更多的用例出现。
如果你对这篇文章中提到的各点有任何疑问,请在下面的评论中告诉我。我会尽快给你回复。
看看我的其他一些文章,你可能会喜欢读!
</10-best-free-websites-to-learn-programming-939ec029009b> </5-reasons-why-you-should-develop-a-game-with-python-and-ai-9f5f276e7637>
谢谢你们坚持到最后。我希望你们喜欢阅读这篇文章。我希望你们都有美好的一天!
Pandas loc 和 iloc 方法的 5 个用例
让它们更有用。
亚历杭德罗·皮涅罗·阿梅里奥在 Unsplash 上拍摄的照片
Pandas 是一个高度灵活和强大的数据分析和操作库。它提供了许多函数和方法来在数据分析过程的每个步骤中执行有效的操作。
loc 和 iloc 是用于过滤、选择和操作数据的基本方法。它们允许我们访问数据帧中的特定单元格或多个单元格。
在本文中,我们将讨论 loc 和 iloc 的 5 个用例,我认为它们在典型的数据分析过程中非常有用。
我们将使用 Kaggle 上的墨尔本房产数据集作为例子。我们首先使用 read_csv 函数读取 csv 文件。
import numpy as np
import pandas as pddf = pd.read_csv("/content/melb_data.csv")print(df.shape)
(13580, 21)df.columnsIndex(['Suburb', 'Address', 'Rooms', 'Type', 'Price', 'Method', 'SellerG','Date', 'Distance', 'Postcode', 'Bedroom2', 'Bathroom', 'Car','Landsize', 'BuildingArea', 'YearBuilt', 'CouncilArea', 'Lattitude','Longtitude', 'Regionname', 'Propertycount'],
dtype='object')
该数据集包含墨尔本约 13580 所房屋的 21 个要素。
示例 1
之间的主要区别在于它们访问行和列的方式:
- loc 使用行和列标签
- iloc 使用行和列索引
让我们使用这两种方法来选择地址列中的第一行。
df.loc[:5, 'Address'] # df.loc[0:5, 'Address'] works as well
0 85 Turner St
1 25 Bloomburg St
2 5 Charles St
3 40 Federation La
4 55a Park St
5 129 Charles St df.iloc[:5, 1]
0 85 Turner St
1 25 Bloomburg St
2 5 Charles St
3 40 Federation La
4 55a Park St
您可能已经注意到,我们使用相同的表达式来选择行。原因是 Pandas 默认分配整数行标签。因此,除非我们指定行标签,否则行的索引和标签是相同的。唯一的区别是上限包含在 loc 方法中。
列索引也从 0 开始,因此地址列的索引是 1。
示例 2
我们不必指定一个范围来选择多行或多列。我们也可以在列表中传递它们。
df.loc[[5,7,9], ['Address', 'Type']]df.iloc[[5,7,9], [1,2]]
(图片由作者提供)
我们选择了地址和类型列中标签(或索引)为 5、7 和 9 的行。
示例 3
我们可以使用 loc 方法创建一个新列。让我们创建一个列,对于价格超过 100 万英镑的房屋,该列的值为 1。因为每个数据点(即行)代表一所房子,所以我们将条件应用于价格列。
df.loc[df.Price > 1000000, 'IsExpensive'] = 1
对于满足条件的行,“IsExpensive”列为 1,对于其他行为 NaN。
df.loc[:4, ['Price','IsExpensive']]
(图片由作者提供)
实例 4
loc 方法接受多个条件。让我们创建一个名为 category 的新列,对于价格高于 140 万且类型为“h”的行,该列的值为“昂贵的房子”。
df.loc[(df.Price > 1400000) & (df.Type == 'h'), 'Category'] = 'Expensive House'df.loc[:4, ['Price','Category']]
(图片由作者提供)
我们可以稍后处理 NaN 值。例如,Pandas 的 fillna 函数提供了处理缺失值的灵活方式。我们还可以使用 loc 方法根据其他条件来填充缺失的值。
实例 5
我们可以使用 loc 方法根据条件更新现有列中的值。例如,下面的代码将对高于 140 万美元的价格应用 5%的折扣。
df.loc[df.Price > 1400000, 'Price'] = df.Price * 0.95df.loc[:4, ['Price','IsExpensive']]
(图片由作者提供)
我们也可以使用 iloc 方法来完成这项任务,但是我们需要提供 price 列的索引。因为使用列标签比使用索引更方便,所以对于此类任务,loc 方法比 iloc 方法更可取。
结论
由于现实生活中的数据通常是混乱的或者不是最合适的格式,数据科学家或分析师最常见的任务之一就是清理和处理数据。
拥有一种灵活的方法来访问行和列以完成这样的任务是至关重要的。loc 和 iloc 方法正是我们在这些情况下所需要的。
感谢您的阅读。如果您有任何反馈,请告诉我。
用 Python 计算平均值的 5 个有用技巧
由 Danganhfoto 在 Pixabay 上拍摄的照片
它不可能既准确又快速
测量数据集的集中趋势是探索性数据分析最常用的技术之一。在这篇文章中,我不会重复什么是均值,中位数和众数,因为这些是基本的统计知识,很容易通过谷歌搜索找到。相反,我将重点介绍 Python 统计库。
- 它提供了哪些很酷的功能?
- 为什么我们仍然需要 Numpy 上的统计库?
- 基于不同的问题,测量数据集中心的其他方法有哪些?
在本文中,提供的所有代码都假设所有函数都是从统计库导入的,如下所示。
from statistics import *
0.基本用法
照片由 PublicDomainPictures 在 Pixabay 上拍摄
在开始引入任何库之前,我们不能绕过基本用法。为了测量数据集的中心,统计库提供了所有三种方法。
- Mean,基本上是数据的平均值。
mean([1, 2, 3, 4])
2.中位数,即排序后数据集的中间数。
median([1, 2, 3, 4])
3.模式,它是数据集中出现频率最高的值。
mode([1, 2, 3, 4, 4])
基础的就不多解释了。然后,让我们关注一下统计库提供了什么样的特性。
1.低/高中位数
由 cocoparisienne 在 Pixabay 上拍摄的照片
基于“中间”数的定义,很明显,它要么是中间的数(如果元素总数是奇数),要么是中间两个数的平均值(如果元素总数是偶数)。
然而,我们有这样的要求并不罕见。也就是说,我们希望使用中间数,但它必须存在于数字列表中。
通常情况下,得到这个数字不会很简单。例如,我们可以先得到中间数,然后尝试在列表中找到比它大或小的数。或者,我们也可以使用列表的总计数,然后得到中间的索引。因此,我们可以根据指数得到低或高的中位数。
有了统计库,我们实际上不必这样做,因为它提供了开箱即用的功能。
median_low([1, 2, 3, 4])
median_high([1, 2, 3, 4])
2.多模式
在我的工作中,我接触过这样一个实际的案例。我们有一个字符串列表,我们需要得到列表中出现频率最高的字符串。然而,具有最高频率的字符串不能保证是唯一的。有时,有两个或更多。
那时,当模式不唯一时,将抛出“StatisticsError”。令人高兴的是,在 Python 3.8 中,通过返回第一个模式,这个问题已经得到了解决。
mode(['a', 'b', 'c', 'c', 'd', 'd'])
但是,如果我们想保留所有的模式呢?在上述情况下,我们应该有两种模式,即“c”和“d”。在这种情况下,我们可以使用 Python 3.8 中的multimode()
函数。
multimode(['a', 'b', 'c', 'c', 'd', 'd'])
3.快速均值
图片由 herbert2512 在 Pixabay 上拍摄
从 Python 3.8 开始,增加了一个名为fmean()
的新函数。这个名字应该解释为“快速的意思”。基本上,它会比正常功能mean()
更快。我相信你会有几个问题,让我一一回答,希望你不会再有问题了:)
3.1 为什么快速均值更快?
快速平均会在计算前将所有数字转换成浮点型。因此,使用fmean()
总会给我们一个浮点数作为结果,但mean()
不会。
mean([1, 2, 3, 4])
fmean([1, 2, 3, 4])
但是,请注意,这并不是而不是的意思
- 浮点运算速度更快
fmean()
和mean()
性能对于所有浮点数都是相同的
不同之处在于fmean()
使用简单但快速的浮点数学,而mean()
执行复杂得多的程序来实现最大可能的精度,甚至以牺牲性能为代价。
3.2 如果原始均值函数更慢,为什么我们还需要它?
其实就像我的小标题说的,性能和准确性,我们是不可兼得的。这意味着,由于fmean()
函数比mean()
快得多,它牺牲的精度非常小。
我们可以说fmean()
还是很准的,除了处理分数。
from fractions import Fractionmean([Fraction(1, 2), Fraction(1, 3)])
fmean([Fraction(1, 2), Fraction(1, 3)])
该示例显示分数在fmean()
中被转换为浮点数。mean()
函数不仅要将所有数据转换成精确的值,还要监控“最佳”类并返回相同的值。
基本上,fmean()
在正常情况下仍然非常准确,但是如果你的数据是分数,mean 会给你一个数学上完美的结果。
3.3 fast mean 有多快,跟 Numpy 比一下怎么样?
我们可以在这里做一个简单的实验。首先使用 Numpy 生成 100k 随机浮点数。
import numpy as nparr_float = np.random.random(100000)
然后,测试三个不同的函数。
mean(arr_float)
fmean(arr_float)
np.mean(arr_float)
在上面的例子中,我们可以看到fmean()
比mean()
快 20 倍左右,而 Numpy 均值函数比fmean()
快 150 倍。如果我们真的关心精确度,我们可能不会选择 Numpy 均值。让我给你看另一个例子。
假设我们有这样一个数字列表。
[1e20, 1, 3, -1e20]
很明显,这 4 个数的和应该是 4,所以平均值应该是 1。让我们看看每个均值函数的行为。
在这种极端情况下,Numpy mean 会因为成对求和算法而失去准确性,该算法显著降低了计算成本,但引入了一些“可接受的”舍入误差。
你的用例是否会“接受”这样的不准确,这是你的决定。
4.几何平均值
照片由 stevepb 在 Pixabay 上拍摄
我们在许多情况下使用“平均”一词。然而,这并不总是意味着我们需要计算“算术”平均值。考虑下面的问题。
第一年增长 10%,第二年下跌 20%,第三年再增长 30%的基金。
该基金在过去三年的平均表现如何?
我们可以说mean([0.1, -0.2, 0.3]) = 0.067 = 6.7%
吗?这是不对的。在这种情况下,我们应该使用几何平均数。
geometric_mean([(1+0.1), (1-0.2), (1+0.3)]) - 1
因此,这只基金的平均业绩约为 4.6%。
5.调和平均值
另一种平均值是调和平均值。考虑下面的问题。
我们正在开车。前 10 分钟,我们的速度是 60 公里/小时,然后在接下来的 10 分钟里,我们将速度提高到 80 公里/小时。然后,我们到了。
我们的平均速度是多少?
当然,我们不能说[60,80]的算术平均数是 70 所以平均速度是 70。这是错误的。
在这种情况下,我们应该使用调和平均数。
harmonic_mean([60, 80])
所以 20 分钟内我们的平均速度大概是 68.57km/h。这也告诉我们超速对更快到达目的地没有太大的帮助。所以,还是安全驾驶吧:)
摘要
由 Pixabay 上的 lamorimfotografia 拍摄的照片
在本文中,我介绍了 Python 内置统计库的几个重要函数。它提供了许多很酷的功能,如低/高中值和多模式,允许我们灵活地测量数据集的中心。此外,快速均值函数为我们提供了一种更快的方法来计算算术平均值,并且在大多数情况下不会损失准确性。此外,它提供了除算术平均值之外的一些现成的平均值函数。
https://medium.com/@qiuyujx/membership
如果你觉得我的文章有帮助,请考虑加入灵媒会员来支持我和成千上万的其他作家!(点击上面的链接)
面向数据科学家的 5 个 Visual Studio 代码扩展
借助这些强大的附加组件,提高 VS 代码的生产率
Visual Studio Code 是一个免费的、轻量级的、跨平台的代码编辑器。它可能不像 IntelliJ Idea 或 PyCharm 那样是一个成熟的 IDE,但它是一个强大的、不受干扰的工具,拥有专门的粉丝群和蓬勃发展的生态系统。
VS 代码内置了对 JavaScript、TypeScript 和 Node.js 的支持,但是您可以扩展它以支持许多其他语言(Python、C++和 Go)。它提供的功能包括智能感知代码完成、简化的调试体验、林挺、类型检查、代码导航,以及与 Git 和 GitHub 的深度集成。更重要的是,一系列强大的插件可以让 VS 代码成为最终的开发环境。
这个故事从数据科学家的角度看 VS 代码,重点关注 Python 生态系统和工具,它们使机器学习模型的部署成为一种乐趣。
学习率是为那些对 AI 和 MLOps 的世界感到好奇的人准备的时事通讯。你会在每周五收到我关于最新人工智能新闻和文章的更新和想法。在这里订阅!
Python 和数据科学
Visual Studio 代码自带对 JavaScript 生态系统和 web 开发的原生支持,但远不止于此。本节展示了如何将 VS 代码转换成一个功能丰富的 Python 编辑器,以满足数据科学的需求。
- **VS 代码的 Python 扩展:**如果你是 Python 开发者,安装 VS 代码后的下一步应该是下载并设置 VS 代码的 Python 扩展。这很简单,导航到左边的
Extensions
面板,按名称搜索,然后点击 install。VS 代码的 Python 扩展提供了对 Python 语言的丰富支持,只要你安装了 Python 3.6。它支持智能感知代码完成、调试、代码导航、格式化、重构、代码片段等等! - Pylance: 您想要启用的第二个附加组件是 Pylance 。Pylance 可以说是 VS 代码的最佳 Python 扩展,它是一个新的、改进的、更快的、功能丰富的 Python 语言服务器。Pylance 是对 Monty Python 的勇敢的兰斯洛特爵士的引用,它依赖于 Python 的核心扩展,并建立在这种体验之上。此外,随着 VS 代码 12 月更新,Pylance 可以执行期待已久的操作,将 Python 开发体验提升到一个新的水平,如自动导入、代码提取和类型检查。在下面的故事中阅读更多关于 Pylance 的内容。
- Jupyter: 微软针对 VS 代码的 Jupyter 扩展为著名编辑带来了对 Jupyter 笔记本的全面支持。笔记本一直是软件思想增量开发的工具。数据科学家使用笔记本记录他们的工作,探索和试验新算法,快速勾画新方法,并立即观察结果。正如 Donald Knuth 曾经说过的,“把一个程序当作一篇文学作品,写给人类而不是电脑。”因此,数据科学家的武器库中不应该缺少这样的扩展。
部署
有了想法并用代码写下来只是开发周期的第一步。因此,在煞费苦心地测试和评估结果之后,部署是您和公众之间的最后一道障碍。
使用 Docker 封装应用程序并使用 Kubernetes 编排其组件已经成为部署的事实标准。为此,以下扩展促进了这一过程,使数据科学家能够控制整个项目生命周期。
VS 代码的 Docker 扩展:Docker扩展简化了构建 Docker 映像、运行容器、附加容器、流式传输日志以及管理其整个生命周期的整个过程。它还提供了 Node.js、Python 和。容器内的 NET Core。如果你想知道更多,请阅读下面的故事。
云代码: 云代码可以说是 VS 代码的终极 DevOps 扩展。它包含了 Google 命令行容器工具如[skaffold](https://skaffold.dev/)
和[kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/)
的强大功能,并使在 Kubernetes 上开发成为无缝体验。有了这个工具,你就可以在云中运行你的应用程序,或者在像 minikube 这样的本地 Kubernetes 上运行,就像你在笔记本电脑上运行一样。阅读下面故事中关于云代码和skaffold
的模式。
- **远程开发:**最后但并非最不重要的一点,远程开发让你可以随时随地,从几乎任何媒介进行编码;只要安装了 VS 代码,就不需要花里胡哨的机器来做深度学习。只需连接到具有 GPU 加速、大量 RAM 和多核 CPU 的虚拟机。除此之外,远程开发还可以帮助您在不同的、隔离的环境之间切换,与其他团队成员协作,当您在 Windows 机器上时在 Linux 上开发(使用 WSL),或者使用容器来开发您的应用程序,保持您的系统整洁。
序
Visual Studio 代码是一个免费的、轻量级的、跨平台的代码编辑器。然而,它的真正力量在于它的扩展。在这个故事中,我展示了我在开发机器学习应用程序时几乎每天都会用到的 5 个扩展。
Python 和 Jupyter 扩展帮助我完成工作,而 Kubernetes 生态系统工具让我了解部署过程,因为容器化是新标准。我希望它们对你的日常活动也有帮助。
关于作者
我的名字是迪米特里斯·波罗普洛斯,我是一名为阿里克托工作的机器学习工程师。我曾为欧洲委员会、欧盟统计局、国际货币基金组织、欧洲央行、经合组织和宜家等主要客户设计和实施过人工智能和软件解决方案。
如果你有兴趣阅读更多关于机器学习、深度学习、数据科学和数据操作的帖子,请关注我的 Medium 、 LinkedIn 或 Twitter 上的 @james2pl 。此外,请访问我的网站上的资源页面,这里有很多好书和顶级课程,开始构建您自己的数据科学课程吧!
Python 的 5 个可视化库
Matplotlib、Pandas、Seaborn、Plotnine 和 MplFinance 都有它们的长处——让我们感受一下它们
图表示例—按作者分类的图片
可视化是数据通信的关键。无论你是想让你的老板、客户还是同事明白你的意思,一张精心制作的图表通常比一张数字表更能清楚地表达你的观点。
Python 有很多图表库,但我将快速浏览一下我最喜欢的 5 个。
Matplotlib 是 Python 可视化库的始祖,也是我考虑的所有可视化库的基础。但是 Matplotlib 可能有点笨拙,为了简化事情,其他库都是在它的基础上构建的。
每个库都有自己的优势:Matplotlib 灵活而强大,Pandas 绘图简单,Seaborn 适合统计图表,Plotnine 实现 R 的 ggplot 和图形语法,而 MplFinance 专门针对金融数据。
我希望给你一个他们每个人的味道。
但首先我们需要一些数据来绘图。
Gapminder 数据
Gapminder 是一个致力于消除公众对全球趋势误解的组织,它的网站非常值得一去。它在其任务中使用了大量的数据集,我们将在这里使用其中的一些数据。这是一个从 1952 年到 2007 年每个国家的人口、预期寿命和人均 GDP 的表格。该数据由 Github 上的 Jenny Bryan*主持。
我们这样设置数据源的 url:
popDataURL = "https://raw.githubusercontent.com/jennybc/gapminder/master/inst/extdata/gapminder.tsv"
然后把数据下载到熊猫的数据框架中。
import pandas as pd
popData = pd.read_csv(popDataURL,
delimiter='\t',
dtype=({'year':int})) popData['pop']=popData['pop']/1000000
我将人口数除以 100 万,以便在下面的图表中让数字更清晰一些。我将年列改为整数,而不是浮点数,以便于比较。数据帧看起来像这样:
数据框架—作者提供的图像
这里的数据太多了,所以我将数据分为西班牙、英国、印度和美国的子集,如下所示:
SpainData = popData[popData['country']=='Spain']
UKData = popData[popData['country']=='United Kingdom']
IndiaData = popData[popData['country']=='India']
USData = popData[popData['country']=='United States']
我们将在下面的例子中使用这些子集。
Matplotlib
如果你不能在 Mathplotlib 中做你想做的事情,那么你也不能在其他任何库中做。Matplotlib 是我将讨论的其他每个库的基础,因此下面的所有示例都可以用 Matplotlib 进行编码——然而,其他库使生活变得更加方便。
因此,在继续之前,让我们从一个非常简单的 Matplotlib 示例开始。
我在这个例子中使用了UKData
数据框架,并绘制了过去几十年的人口增长图。代码很简单:首先我们导入库(当然),接下来我们用 x 和 y 数据指定绘图,这些数据是 dataframe 中的‘year’和‘pop’列(使用默认参数我们得到一个线图),然后我们为 x 和 y 轴设置标签,最后,我们调用方法plt.show()
显示下图。
import matplotlib.pyplot as plt
plt.plot(UKData['year'],UKData['pop'])
plt.ylabel('Population in millions')
plt.xlabel('Year')
plt.show()
Matplotlib 图表示例—作者图片
在本例中,Matplotlib 期望以类似数组的参数给出数据——在本例中,我们以 Pandas 列(实际上是 Pandas 系列)的形式提供了 year 和 pop 数据。我们也可以传递普通的 Python 列表或 Numpy 数组。
这是另一个例子:散点图。
data = popData[popData['year']==2007]plt.scatter('country', 'gdpPercap', s='pop', data=data)
plt.xticks([])
plt.xlabel('Countries')
plt.ylabel('GDP Per Cap')
plt.show()
Matplotlib 散点图示例—作者图片
在这种情况下,数据只需要一个参数——2007 年的数据——我们指定 Pandas dataframe 列为 x 和 y 值。s
参数是散点图中圆点的大小,它使用 pop 列的值,所以人口越多,圆点越大。我还取消了 x 轴上的记号,因为有太多的国家名称,它们将无法阅读。
Matplotlib 有很多内容,但这是我们将把重点放在其他库上的地方。
熊猫情节
Pandas 绘图功能提供了一组简单的基本绘图功能。使用 Pandas plot,您可以创建折线图、条形图和散点图、箱线图和直方图,当然,它完全集成了 Pandas dataframes。
为了从一个数据帧创建一个图,我们调用该数据帧的plot()
方法,并从数据帧中以列的形式提供 x 和 y 数据。
这是美国人均 GDP 的线图,只有一行代码。
USData.plot.bar(x='year',y='gdpPercap')
注意,我们在前面创建数据帧时导入了 Pandas 库。
熊猫图表示例—作者图片
你可以在以前的文章中读到更多关于熊猫密谋的内容:
海生的
当谈到统计图表时,Seaborn 接管了熊猫停止的地方。下面是西班牙人口随时间变化的曲线图。这不是我们在前面的例子中看到的简单的线形图,这是 Seaborn regplot 的散点图,其中包含一条回归曲线。
下面的代码用线性回归绘制了数据,但是,正如您可能看到的,数据并不真正符合直线模型。
import seaborn as sns
sns.regplot(x="year", y="pop", data=SpainData)
Seaborn regplot 示例-作者提供的图像
我特意选择西班牙在这里绘图,因为我碰巧知道那里的人口增长不是线性增长,而是在过去几年中逐渐放缓。因此,线性回归并不真正符合数据。通过改变回归的顺序,我们可以更好地了解数据的变化方式。它默认为 1 ,一个线性回归,但是这里我们将把它改为 2 ,这给了我们一个二次曲线。我还关闭了置信区间、ci=None
。
sns.regplot(x="year", y="pop", data=SpainData, order=2, ci=None)
Seaborn 二阶正则图示例—作者提供的图像
二次曲线并不完全符合数据,但它给出了放缓趋势的更好印象。Seaborn 不允许您出于预测目的提取模型; regplot 仅用于说明目的。Seaborn 自己建议,如果你想这样做,你应该使用 Python 的 Statsmodels 库。
Seaborn 包括几种统计图表类型,但对于简单的线形和条形图表,Pandas plot 可能更适合。
普洛特宁
Plotnine 是 Python 中 ggplot2 (众所周知的 R 图形包)的实现。它采用分层的方法来定义一个图。在下面的示例中,第一行代码指定了数据源,第二行代码指定了图形(折线图)的类型以及线条的大小和颜色。剩下的几行添加一个内置主题,修改该主题以改变图形的大小,最后为图形设置一个标题。
from plotnine import *(ggplot(IndiaData,aes('year','pop'))
+ geom_line(color='Blue',size=2)
+ theme_light()
+ theme(figure_size=(6,3))
+ ggtitle('India Population Growth')
)
示例 Plotnine 图表—按作者分类的图像
这种构建图表的方式非常令人满意,并且在所有图表类型中都是一致的。这是另一个例子,演示了如何将多个方面构建到一个图形中。
(ggplot(popData, aes('year','pop', fill='continent'))
+ geom_col(show_legend=False)
+ facet_wrap('continent', scales='free')
+ theme_light()
+ theme(panel_spacing=0.5, figure_size=(10,5))
)
示例多面图九个图表—作者提供的图像
最后是一个类似于 Matplotlib 中早期示例的图形,但是增加了颜色(代表国家所在的大陆)。这给了我们一个相当混乱的数字,所以我选择了 void 主题,它基本上移除了所有的标签、记号等等。然后添加了垂直标签和基线。
(ggplot(popData[popData['year']>=2007], aes('country','gdpPercap',size='pop',color='continent'))
+ geom_point()
+ theme_void()
+ theme(axis_line_x=element_line(), axis_title_y=element_text(rotation=90))
+ ggtitle('Countries')
)
Plotnine 散点图示例—作者图片
结果并不完美,但围绕主题进行一些调整可能会得到更好的结果。
Plotnine 允许您绘制任意数量的图表类型,这些图表类型是由标准组件构建的,如果您来自 R 背景,这可能是一个不错的选择。
我在这里写了更多关于 Plotnine 的内容:
MplFinance
Mplfinance 专门针对金融数据,并希望这些数据是标准格式的。它允许的图表数量相对有限,但也是针对有限的领域。
在这里,我举例说明了最全面的图表。它是一组显示一段时间内股票价格变动的盒须图和显示同一时期交易量的条形图的组合。
我们不能在这个库中使用我们的 Gapminder 数据,所以我包含了 yfinance 库,它从雅虎财经抓取数据,并为 Alphabet(谷歌的母公司)提取一天的数据。每 30 分钟给出一次价格。
import yfinance as yp
import mplfinance as mpf
googl = yp.Ticker('GOOGL')
df = googl.history(period="1d", interval="30m")
mpf.plot(df,type='candle',mav=3,volume=True)
Mplfinance 图表示例—作者图片
Mplfinance 显然是一个专业产品,不适合一般用途。但是如果你感兴趣的是财务数据,这是一个很好的易用的软件包。
结论
选择图表库的一些原因将是个人的:如果你喜欢 ggplot2 使用的图形语法方法,那么 Plotnine 将是你的一个好选择。对于简单明了的图形,熊猫内置的绘图是一个很好的选择,而且编程简单。另一方面,Seaborn 不太适合简单的图表,但是它为统计图表提供了很多选择。Mplfinance 擅长它所做的,但不适合一般的图形。
最后,由于我看到的所有库都是基于 Matplotlib 的,所以您可以使用 Matplotlib 来生成其他库支持的任何图表。不过,要做到这一点,你需要理解 Matplotlib 的复杂性,并且需要做更多的编程工作。
最后,你可能会问自己,为什么我忽略了 Plotly、Bokeh 或 Altair。主要原因是它们是不同的库系列,更适合于基于 web 的应用程序,而我所看到的那些库更适合于生成静态文档。
感谢您的阅读,我希望这激起了您的兴趣,您会想要探索这些图书馆提供的机会。
如果你想知道我什么时候发表其他文章,请考虑在这里订阅我的免费和不定期简讯。
密码
你可以在我的 Github 页面上找到一个 Jupyter 笔记本,上面有所有上述代码以及我的其他文章中的代码。
*致谢
我们使用来自 Jennifer Bryan 维护的 Github 库的数据,该库可以在 https://github.com/jennybc/gapminder 找到。
原始 Gapminder 数据也可以在http://www.gapminder.org/data/找到
Gapminder 的数据是在知识共享署名 3.0 无版权许可下发布的。
人工智能改变时尚产业可持续发展的 5 种方式
来源: Unsplash
“时尚是一门关于外表的科学,它激发一个人渴望看起来更好,而不是更真实。”——亨利·菲尔丁。
G 从 2020 年到 2021 年以 5.8%的速度增长,(IBISWorld,2021)在新冠肺炎期间,全球服装制造业的扩张并没有停止,这要归功于我们让自己跟上最新时尚潮流的愿望。虽然麦肯锡报告称,2021 年时尚行业的收入下降了 20%(麦肯锡&公司,2021),但这主要是由于中小型企业的关闭,这些企业因财务困境而被迫退出市场,导致市场更大的不平等。虽然市场正在经历混乱,但时尚产业本身也加剧了全球灾难的风险。
时尚产业从多个方面对我们的星球产生了巨大的影响。从纤维生产,到设计、生产、交付、使用和用后处理,其价值链的每个阶段都加剧了可持续性危机。
根据联合国环境规划署的数据,全球 20%的废水来自纺织品染色。(环境署,2021 年)全球 10%的碳排放来自服装业,此外,24 %的杀虫剂和 11 %的杀虫剂来自棉花种植。(艾伦·麦克阿瑟基金会,2017 年)。虽然它的生产对环境是毁灭性的,但我们不可持续的消费习惯和我们处理服装的方式使它变得更糟。从 2000 年到 2015 年,服装销售额翻了一番,从每年 1000 亿件增加到 2000 亿件,而一件衣服的平均穿着次数总体下降了 36%。(艾伦·麦克阿瑟基金会,2017 年)。服装行业生命周期的线性使得**“购买—穿着—处理”**成为标准做法。
这不是我们第一次意识到时装业需要朝着可持续发展迈出大步。早在 2018 年,麦肯锡就已经将“可持续发展可信度”确定为 2018 年的 10 大时尚议程之一,当然,走向未来,“循环纺织品”也包括在 2022 年的议程中。这是一个长期未解决的问题,但进展缓慢。2020 年《Vogue》时尚奖得主穆罕默德·本切拉尔(Mohamed Benchellal)说 “这不仅仅是关于服装的可持续性;这个行业的整个商业模式是不可持续的。在 t 台上,在我们的衣柜里,在无休止的堆积中,需要发生革命,而不是渐进的步骤。
但是改变商业模式并不容易,我们能够利用数字技术加快转型的步伐吗?这里有几个潜力。
1.营销活动和时装秀走向虚拟化
莫斯奇诺的虚拟时装秀
在麦肯锡的 2019 年服装 CPO 调查中,83%的受访者认为到 2025 年 实物样品的使用频率将低于虚拟样品。 事实上,由于新冠肺炎,转变发生得比我们预期的要快。对于大型奢侈品牌来说,许多时装秀已经以创造性的方式虚拟化了。 莫斯奇诺 创造了一场“玩偶时装秀”,可爱的玩偶大小的服装由提线木偶玩偶在 t 台上展示,节省了举办真人 t 台所需的材料和资源。虽然这没有使用人工智能,但它表明即使是那些在客户体验中建立大部分品牌价值的奢侈品牌,也愿意转移到虚拟世界,用更少的资源做更多的事情。
有了人工智能,我们能够制作 3D 数字时装模型。(在我看来,他们看起来甚至比人体模型更具视觉吸引力。)制作者https://www.thefabricant.com/sustainability*就是这样一家——它是“世界上第一家数字时装屋”,据报道在设计和开发阶段用**数字样品取代实体服装,极大地减少了该品牌高达 30%的碳足迹。与知名品牌如彪马、*阿迪达斯、 Aape 合作,可以减少广告服装生产过程中产生的二氧化碳污染、水资源浪费和有毒化学物质污染,这些在传统做法中会被浪费掉,因为它们不能转售给消费者。
2.虚拟试衣间和更好的定制减少退货并增强顾客体验
一个更隐性的污染源是价值链中的交付环节,例如,在中国,运输效率极高且成本低廉,如果你不确定产品是否合适,退货比一开始就不买是更好的选择。不必要的污染结果。
从以前的潜力延伸,随着 3D 虚拟模型技术的出现,每个人的虚拟试衣间很快就会出现。人工智能可以帮助我们精确地测量我们的尺寸,并相应地调整数字模型。MySize开发了这样的技术,只需一个智能手机摄像头就可以实现这些,帮助顾客在网上购物时购买正确尺寸的服装。
此外,推荐系统和基于人工智能的个性化风格正在提升客户的在线购物体验。 Stitch Fix 使用初始风格测验,结合来自客户个人特征、服装特征、修复后反馈、与服务和商品数据的历史交互的数据点,为客户创建风格档案,以开发预测算法。这简化了传统上令人沮丧的在线搜索适合你风格的衣服的体验,减少了不满意和退回不合适衣服的机会。
3.推动二手市场
为了接受循环经济的原则并延长产品的生命周期,更多的新新人类正在拥抱二手服装市场,预计该市场将从 2018 年的 240 亿美元快速增长到 2023 年的 510 亿美元。人工智能有潜力从各种不同的角度改善二手服装市场的客户体验,包括更可靠的定价,更个性化的用户体验,更好的造型服务,当然,正如我们之前介绍的,更精确的尺寸。由RISE发起的一个项目允许 AI 研究服装广告,以开发自己的定价模型,从二手产品的大量广告中学习,它识别与特定价格水平相关的特征,帮助它建立可靠的价格预测模型。可信的定价反过来让更多的顾客放心地参与二手服装市场。
让我们来探索一下 thredUP 是如何撼动这个行业的:Vue.ai 提供的人工智能服务被用来使用图像识别来处理图像,根据图案、颜色、时尚前沿来提供准确的定价和标记,这使得他们的处理中心更加高效,每天可以处理 10 万个独特的项目。为了进一步减少浪费和退货,thredUp 提供盒子服务,发送 10 件由设计师亲手挑选的物品。设计师使用人工智能来帮助他们根据消费者以往的历史和时尚趋势,以高速度和准确性完成订单。
4.出租时尚遇上 AI
**提高服装利用率**被循环纤维倡议确定为更可持续纺织经济的目标之一。我们都知道我们花了 100 英镑为我们最好的朋友的婚礼买了一件最华丽的晚礼服,而我们下一次穿它是在 10 年后。为特殊场合买衣服对我们的钱包和地球来说都是一种痛苦。时尚租赁是一个解决方案,可以帮你节省购买几乎是一次性使用的昂贵服装的费用,还可以节省数百万件未充分利用的服装。2021 年末, 租跑道——一家租时尚电商平台上市,标志着租时尚市场的一个重要里程碑。该平台采用会员制订阅模式,允许客户以固定的月租价格租赁服装。其工程总监迈克·利伯兰特阐述了人工智能是如何集成到其仓库中的。为了扩大该系统的规模,并更快地释放库存,以便客户可以租赁它们,机械臂需要在分类时自动识别退回衣服的材料和相应的清洁方法。实现了最短的入站处理时间,从而最大限度地发挥了衣物的再利用潜力及其对环境的益处。
5.人工智能销售预测防止囤积
最后一个潜力可能是业内最广为人知和最广泛采用的实践。随着时尚潮流每天都在变化,快速时尚产业制造了巨大的浪费。人工智能在这方面最明显的一个用例是使用高级数据分析和机器学习销售预测来更好地预测销售、服装趋势、客户行为,并减少每季未售出的服装数量。为了节约成本和保护环境,人们在这一领域进行了大量的研究,以使其完美无瑕。****
M 我所强调的任何潜力都是相辅相成的,例如 MySize 正在为二手服装开发其功能的专门版本。找到技术、时尚和环境之间的共同点应该能够改变世界第二大污染者,并确保外观和可持续性可以同时实现。
关于我
我是世界可持续发展规划师学会的会员,目前在联合国教科文组织香港协会及其秘书处-香港可持续发展教育学会工作。在伦敦大学学院攻读统计学学位期间,我对可持续发展和技术有着强烈的热情。因此,我致力于撰写和发表与可持续发展目标、人工智能和区块链等创新技术以及经济学相关的文章。我渴望将数字技术和可持续发展结合在一起,激励更多的人为所有人创造更美好的未来。
我的作品
- 我关于可持续发展目标的第一本书——《Hi 17 SDG:动态世界中的可持续发展目标》是一本介绍性指南,涵盖了专家意见和年轻人对实现可持续发展目标的创新方法的看法。亚马逊上可以买到数字版:https://www.amazon.com/dp/9887566918/香港读者可以买到实体版:http://hiesd.org/wp/publications/
- 我在活动的写作和报道方面也很有经验:阅读更多关于我的文章组合:【https://americanachen.wixsite.com/my-site/me】T4(如果有任何合作或您希望我为您的活动写作,请联系我)
联系人:
电子邮件:americanachen@unesco.hk
领英:美国陈
insta gram:@ africccana
美国陈
参考资料:
- Ellen MacArthur Foundation,《新纺织品经济:重新设计时尚的未来》(2017 年,http://www.ellenmacarthurfoundation.org/publications)。
- 麦肯锡公司,《时尚新必备:规模化可持续采购》,麦肯锡服装、时尚和奢侈品集团,2019 年 10 月
- 多罗彻,亚尼。"议会邮报:人工智能和大规模定制如何改变时尚产业."福布斯,《福布斯》杂志,2021 年 11 月 10 日,https://www . Forbes . com/sites/forbesagencycouncil/2021/11/10/how-ai-and-mass-customization-can-change-the-fashion-industry/?sh=502b640e50b9。
- 多罗彻,亚尼。"议会邮报:人工智能和大规模定制如何改变时尚产业."福布斯,《福布斯》杂志,2021 年 11 月 10 日,https://www . Forbes . com/sites/forbesagencycouncil/2021/11/10/how-ai-and-mass-customization-can-change-the-fashion-industry/?sh=502b640e50b9。
- “时尚与可持续发展目标:联合国的角色是什么?."联合国欧洲经济委员会,2018 年 3 月 1 日。
- “快时尚仍然是我们环境的一大威胁——以下是需要改变的地方。”时尚阿拉伯,2021 年 6 月 27 日,https://en.vogue.me/fashion/fast-fashion-2021-statistics/.
- “行业市场研究、报告和统计.” IBISWorld ,https://www . ibis world . com/global/market-size/global-apparel-manufacturing/。
- 桑德拉·庞塞德·莱昂。" ThredUP 是如何用人工智能推动循环时尚运动的."福布斯《福布斯》杂志 2019 年 8 月 28 日https://www . Forbes . com/sites/cognitive world/2019/08/27/how-thredup-circular-fashion-ai/?sh=1e0eb62879a0。
- “麦肯锡服装 CPO 调查 2019,时尚的新必备:大规模可持续采购。”麦肯锡&公司,2019 年 10 月。
- MongoDB。“《出租跑道》采用代码优先、动态数据模型的方法来扩展仓库操作.” VentureBeat ,VentureBeat,2021 年 7 月 13 日,https://VentureBeat . com/2021/07/13/rent-the-runway-enchances-code-first-dynamic-data-model-approach-to-scale-warehouse-operations/。
- "给快速时尚踩刹车。"环境署、https://www . UNEP . org/news-and-stories/story/put-brakes-fast-fashion。
- “转售时装市场是下一个大事件.” Vue.ai 博客,2021 年 5 月 3 日,https://vue . ai/Blog/leaders-in-retail/转售-fashion-market/。
快速数据分析报告的 5 种方法
没有代码,没有烦恼
克里斯里德在 Unsplash 上的照片
在当今世界,人们都在投资学习编码,但也不是每个人都对编码感兴趣。我们不都想知道这是不是一种无需编码就能开发即时探索性数据分析报告的方法吗?我已经策划了 5 种不用编码就能得到你的分析报告的方法。
Excel 数据透视表:
Excel 是最广为人知的数据分析工具。每个人在职业生涯的某个阶段肯定都接触过 excel。在每个公司,人们都使用 excel 立即进行数据处理和验证。但是我们也可以用 Excel 做一些事情。即汇总更广泛的类似表格格式的数据的数据透视表(即带有数据透视表图表的数据分析报告)。
开发一个数据透视表,提供对数据的即时理解:
获取您的 id,获取数据透视表以有意义的方式组合在一起的总和、平均值、计数和其他统计数据。
数据报告可以通过提供过滤器、切片器和直观的数据透视表图表与用户进行交互,数据透视表图表可以根据数据透视表自动改变图表。
一些关于如何构建 excel 数据透视表的帖子/教程:
https://www.google.com/url?sa=t&source=web&rct=j&url=https://www.tutorialspoint.com/excel_data_analysis/excel_data_analysis_pivottables.htm&ved=2ahUKEwi54tmI34LwAhVxmuYKHZYTB5AQFjACegQIAxAF&usg=AOvVaw2Om-ZveUKj-eqWLzq2ERlC https://www.excel-easy.com/data-analysis/pivot-tables.html
使用 Tableau 的仪表板:
Tableau 是另一个广为人知的工具,可以帮助任何人查看和理解他们的数据。这个工具可以连接你选择的任何数据库。我们可以通过拖放功能开发数据仪表板或故事板,而无需编码。
Anyboday 可以通过求和、计数、平均值、百分比差异和更多计算来创建数据汇总,以从数据中获取价值。
我们还可以实时混合数据集(不同的关系、半结构化和原始数据源),而无需任何高级编程专业知识。
开发者只需点击一下鼠标,就可以向用户共享和更新仪表板。
一些关于如何开发 Tableau 仪表板的帖子/教程:
https://www.google.com/url?sa=t&source=web&rct=j&url=https://www.tableau.com/solutions/analytics&ved=2ahUKEwjM1Krg3oLwAhXZ7XMBHbiQDpQQFjAXegQIHxAC&usg=AOvVaw2R0vWzi97ZygBiA9IxsqWJ https://www.analyticsvidhya.com/learning-paths-data-science-business-analytics-business-intelligence-big-data/tableau-learning-path/
使用 Python 进行熊猫剖析:
卢克·切瑟在 Unsplash 上拍摄的照片
Pandas profiling 是一种创建探索性数据分析报告的即时方法。你只需要安装软件包,并确保它启动和运行。
例如:
pip install pandas-profiling
之后。您必须导入您需要开发报告的数据。开发报告只需要一个函数。即df.profile_report()
用于快速数据分析。
数据框架中每一列的统计数据都显示在一个交互式 HTML 报告中。
一些关于如何建立熊猫概况报告的帖子/教程:
使用 R 的数据浏览器:
样本数据分析报告的屏幕截图
r 作为统计计算和图形的编程语言广为人知。在过去的 5 年里,我个人使用 R 完成了一些数据分析任务和机器学习模型。但是有 一包 可以即时开发数据分析报告。即**“数据浏览器”**。这是一个为自动化数据探索和处理而创建的包。
安装并下载软件包。
用于创建数据归档报告的函数是 *create_report()*
,根据所用数据和格式的要求,需要填写几个参数。
该软件包还提供了一些数据处理功能,如 set_missing、group category,以及 plot_missing()、plot_intro、plot_bar 等图形功能。
在 R 中构建数据分析报告的一些帖子/教程:
KNIME 分析平台:
Knime 是一个分析平台,用于在开源环境中生产数据科学。人们已经通过集成 ML 和数据挖掘的各种组件,将该工具用于非常自动化的技术。该工具允许开发人员使用混合不同数据源的节点,包括数据分析的预处理、建模和可视化,使用或不使用任何高级编程。
用户可以使用节点资源管理器或节点存储库来搜索快速拖放。经常使用的节点:
输入文件阅读器:Excel 阅读器、CSV 阅读器、文件阅读器等。
输出文件阅读器:Excel Writer、CSV Writer 等。
预处理节点:缺失值、字符串到数字、字符串到日期时间等。
可视化节点:散点图、饼图、折线图等。
在 Knime 中构建工作流的一些帖子/教程:
https://www.knime.com/learning
我对这些工具都有亲身体验,这有助于我理解其中的含义并轻松操作数据。上述工具并不仅限于此。我们可以开发详细的分析报告,预测模型,包括编程技能的 ML 模型。
如果你喜欢这个帖子,请随时提供反馈和分享。您可以通过以下媒体链接关注我:
您可以通过以下网站关注我:
领英:www.linkedin.com/in/neema-madayi-veetil
推特:https://twitter.com/NeemaMV
子栈(我写的是书评和我从优秀书籍中学到的教训):https://neemamv10.substack.com/
预测分析在您的企业中的 5+1 应用方式
卢克·切瑟在 Unsplash 上的照片
预测分析如何应用于贵公司多个领域的实例
预测分析是一种先进的分析技术,使用数据、算法和机器学习来预测趋势和进行业务预测。
由于计算的进步,已经可以分析大量的数据(大数据)来发现模式,并从其历史中评估未来的可能性。
这个概念起源于 20 世纪 40 年代,当时政府开始使用第一批计算机——那些占据整个房间并用于战争目的的计算机。
但是,在强大的处理器和新技术的推动下,预测分析如今变得更加重要。
这里有一些非常有趣的例子:
客户流失预测
做一个客户流失预测意味着识别你的客户的取消请求之前的信号,计算每种情况下的概率。
使用预测模型,您可以交叉检查客户服务质量、客户满意度和流失率等数据,以确定哪些因素会影响取消。
目标是了解客户流失的主要原因,并逆转这一过程。
活动优化
你整个营销活动的历史可以用来预测未来更好的结果。
只需使用预测分析来确定每个内容的最佳渠道、每个目标受众最成功的语言以及预测消费者接受程度的其他变量。
因此,在吸引和赢得观众时,你要直接瞄准目标。
线索分割
预测分析也非常适合创建线索细分策略。
毕竟,营销的最大挑战之一是绘制这些潜在客户的轮廓,以提供量身定制的内容和创建可靠的营养活动。
借助数据和机器学习,你可以基于复杂的分析生成细分群体,预测哪些潜在客户希望获得最小的细节。
客户关系管理
在 CRM 策略中,您可以使用预测模型来了解客户在生命周期和购买过程中的每时每刻。
在这种情况下,不缺乏数据来创建多变量模型,并分析行为、档案、购买历史、互动和客户感知之间最多样的可能关系。
有了这些强大的洞察力,您可以通过个性化的内容、促销和优惠彻底改变您的客户关系。
欺诈检测
分析方法还允许公司检测欺诈模式并防止安全漏洞。
随着网络安全讨论的增加,越来越多的组织开始关注如何及时纠正漏洞和识别任何异常,以防止损害。
预测模型使实时识别威胁和预测诈骗变得更加容易。
风险管理
风险管理是另一个直接受益于预测分析的领域。
对未来的风险和机遇有一个完整的认识会更容易做决定,对吗?
因此,预测盈利或亏损的概率是高级数据分析的最大优势,无论是分析客户的信用风险还是投资的可能后果。
结论
预测分析是一种帮助您看到企业未来的好方法,可以帮助您规划做出更好决策和超越竞争对手的可能性。
请记住,人类的智慧在这个过程中是不可或缺的,因为你需要为预测模型提供高质量的数据以获得良好的结果。
还有一件事…
如果你想在学习之旅中走得更远,我为你准备了一份令人惊叹的清单,其中包含 60 多门关于人工智能、机器学习、深度学习和数据科学的培训课程,你现在就可以免费参加:
- 什么是预测分析,您今天如何使用它?
- 今天学习 AI、ML、数据科学的最佳免费课程。
- 60 多门课程,有评分,有总结(当然是 AI 做的)。
- 这是我们所知道的作品的结局吗?世界经济论坛《2020 年的就业前景》报告简析
如果你想继续发现新的资源并了解人工智能,在我的电子书(下方的链接)中,我正在分享关于人工智能、机器学习、深度学习、数据科学、商业智能、分析和其他方面的最佳文章、网站和免费在线培训课程,以帮助你开始学习和发展职业生涯。
此外,我刚刚在亚马逊上发布了其他有趣的电子书,我相信其中一些可能会让你感兴趣……让我们保持联系,关注我,让我们一起做吧。
- 人工智能、机器人技术和编码(给父母):模拟父母和数字孩子的实用指南
- 终结者悖论:神经科学如何帮助我们理解移情和对人工智能的恐惧
- 人工智能从 A 到 Z:揭秘 AI 的本质概念
- 2020 年人工智能:写人工智能的一年
订阅我的每周时事通讯,保持更新
如果你对人工智能、机器学习、数据科学和自动驾驶汽车的话题感兴趣,以及这些创新将如何扰乱世界各地的每一个企业,这份时事通讯肯定会让你保持更新。
点击下面的链接订阅人工智能新闻!
【https://medium.com/tech-cult-heartbeat/newsletters/ai-news】
定制您的 Streamlit UI 的 5 种方法
如果可以自定义,为什么要使用默认设置?
Streamlit 应用示例(图片由作者提供)
你想做一个 web app,但是又不想学任何一个 web app 框架?要不要部署一个 app,却发现 Heroku 太复杂?那么 细流 就是给你的!
甚至像我这样连 HTML 和 JavaScript 的区别都分不清的数据科学家,也可以使用 Streamlit 快速创建一个应用程序。
当然,简单也有缺点,例如,如何定制用户界面的某些方面并不明显。因此,如果您是 Streamlit 的新手,您可能不知道以下定制 UI 的简单方法…
简化菜单(作者图片)
1。隐藏菜单按钮
默认情况下,在你的应用程序的右上角有一个汉堡按钮,点击它会打开 Streamlit 菜单。
虽然这个菜单确实包含了各种顶级的东西,但是当你向用户部署你的应用时,你可能想要隐藏它。
幸运的是,您可以通过添加以下代码片段来做到这一点(感谢 Mani 提供的这个):
菜单,走开!
2.精简布局
这些天来,我们花了太多的时间在滚动上。因此,所有应用程序开发人员都有责任尝试在一个屏幕上显示尽可能多的内容,从而减少用户需要滚动的次数。
你可以采取的一个小步骤是使用下面的代码片段删除应用程序组件之间的填充(感谢 Marc 的):
如果没有叫做“零填充”的波段,那么应该有
3.自定义调色板
蓝色美学(作者图片)
事实证明,如果你深入了解 Streamlit,你很快就会发现做各种事情是多么容易
例如,我是蓝色美学的粉丝,并热衷于在我的应用程序中使用这个方向。
我所要做的就是创建一个**。精简我的存储库中的**文件夹,并添加这个 config.toml 文件(它只设置了许多可用配置选项中的一部分):
令人惊讶的是,像蓝色美学这样的艺术美可以用简单的计算机代码来表示
4。设置页面标题和图标
这是一个标签(图片由作者提供)
去年增加了set _ page _ config(感谢 akrolsmir )。这允许您调整浏览器选项卡中显示的标题和图标:
ST . set _ page _ config(page _ title = ’ trekviz ',page_icon=“🖖”)
Streamlit 现在完全支持表情符号。
5。多列
多列只是 Streamlit 在 2020 年末添加的众多布局选项之一。现在,拥有三列就像 1、2、3 一样简单:
st1,st2,st3 = STβ_ columns(3)
我听说你甚至可以做一个网格布局,但这超出了我的理解。
结论
乍一看,Streamlit 似乎缺乏太多的可定制性。但是在表面之下是一个充满可能性的世界,本文只列出了其中的一部分。
该团队一直在开发新功能,并且有许多优秀的 Streamlit 应用程序可以从中汲取灵感。所以下次你需要开发一个应用的时候,为什么不考虑 Streamlit 呢?
下面是我总结《星际迷航》角色互动的一个例子:
在机器学习中开发情感分析器的 5 种方法
探索不同的方法来开发一个模型来预测给定文本的情感
S 情感分析是一种自然语言处理技术,用于确定给定文本的情感或观点。情感分析模型可以通过从自然语言中提取含义并将其分配给数字分数来预测给定的文本数据是正面的、负面的还是中性的。
开发或训练情感分析模型有多种方法,在本文中,我们将讨论 5 种不同的方法:
- 定制训练监督模型
- 文本块
- 基于单词词典的模型
- 伯特
- 基于命名实体的情感分析器
各种组织使用情绪分析来了解其客户的情绪,使用评论、社交媒体对话,并相应地做出更快、更准确的商业决策。
定制训练的监督模型:
你可以训练一个定制的机器学习或者深度学习的情感分析模型。标记数据集是训练鲁棒 ML 模型的关键要求。ML 模型将学习数据集中的各种模式,并可以预测给定的看不见的文本的情感。
要训练自定义情感分析模型,必须遵循以下步骤:
- 收集用于情感分析的原始标注数据集。
- 文本预处理
- 文本的数字编码
- 选择合适的 ML 算法
- 超学习和训练 ML 模型
- 预言;预测;预告
(图片由作者提供),自定义情感分析模型管道
阅读下面的文章,了解如何使用朴素贝叶斯分类算法开发一个电影评论情感分析模型。
https://satyam-kumar.medium.com/imdb-movie-review-polarity-using-naive-bayes-classifier-9f92c13efa2d
文本 Blob:
TextBlob 是一个开源的 Python 库,用于处理文本数据,并允许您在其简单的 API 下指定想要使用的算法。TextBlobs 的 API 可以用来执行词性标注、名词短语提取、分类、翻译、情感分析等任务。
对于情感分析,TextBlob 库提供了两种实现:
- 模式分析器:(默认)基于模式库。
- NaiveBayesAnalyzer :在电影评论语料库上训练的 NLTK 分类器。
安装:
**pip install -U textblob**
实施:
(作者代码)
基于单词词典的模型:
它包括从文本语料库中创建一个包含正面和负面单词的 n-gram 字典。该方法需要一个带标签的文本语料库,并使用定制的 python 函数分别为正负文本创建一个 n 元词字典。
自定义单词也可以根据领域知识添加到词典中,这是一个额外的优势。
在下一步中,创建一个定制函数,该函数可以使用上面形成的正面和负面单词的字典来分析给定的输入文本,并且可以被分类为正面或负面情绪。
- 输入文本中出现的每个正面单词增加情感分数,负面单词减少情感分数。
- 将最终情感分数除以该文本中的字数,以标准化分数。
范围在 0 到 1 之间的积极情绪得分描绘积极情绪,其中 1 是具有 100%置信度的积极情绪预测。然而,负面情绪得分的范围在-1 到 0 之间,其中-1 是具有 100%置信度的负面情绪预测。
实施:
(作者代码)
伯特:
BERT 代表 Google 开发的 Transformers 的双向编码器表示,它是用于 NLP 任务的最先进的 ML 模型。要使用 BERT 训练情感分析模型,请遵循以下步骤:
- 安装变压器库
- 加载 BERT 分类器和记号赋予器
- 创建已处理的数据集
- 配置和训练加载的 BERT 模型并微调其超参数
- 进行情感分析预测
实施:
遵循下面提到的关于用 BERT 实现情感分析模型的文章。
基于命名实体的情感分析器;
基于命名实体的情感分析器主要针对实体或重要词。它也可以被称为目标情感分析,并且比上面提到的三种方法更准确和有用,因为它只关注重要的词或实体。
- 第一步是找到文本语料库中的所有命名实体。
- 对文本应用名称实体识别,以查找各种实体,如个人、组织、GPE。
- 基于顶级命名实体的情感分析。
- 通过查找包含命名实体的句子并仅对那些句子逐一执行情感分析来作为目标。
结论:
在这篇文章中,我们讨论了 5 种不同的方法来开发一个情感分析模型。让我们明白,在开发情感分析模型时,没有一种方法是必须遵循的硬性规则。它需要根据问题陈述和数据集规划和调整算法。
参考资料:
[1]伯特维基:https://en.wikipedia.org/wiki/BERT
[2]Orhan g . yaln 著《使用 bert 的情绪分析:https://towards data science . com/10 分钟内情绪分析-与 BERT 和拥抱脸-294e8a04b671
感谢您的阅读
使用 R 有效可视化调查数据的 5 种方法
当可视化地呈现时,调查结果变得比一些塞进枯燥表格的数字有趣得多。数据可视化可以帮助您的受众查看和理解结果中的关键见解。有许多数据可视化工具可以直观地呈现调查结果,包括条形图、饼图和折线图。在这篇文章中,我展示了 5 种可视化调查结果的方法。
作为一名视觉学习者,我经常使用数据可视化来展示调查结果和其他类型的自我报告措施(如心理量表)。在 2019 年加拿大教育研究学会年会上,我就如何有效地可视化评估和调查结果举办了为期半天的研讨会(研讨会幻灯片可在我的 GitHub 页面上获得)。我的目标是展示可用的工具,这些工具可用于创建调查和评估数据的有效可视化。自从我在 2019 年举办研讨会以来,我遇到了几个其他工具,这些工具对可视化地展示调查结果非常有用。所以,我决定在一个帖子里分享它们。
根据变量的类型以及要传达给受众的信息,有几种方法可以将数据可视化。图 1 给出了根据可视化目的、变量类型和变量数量选择哪种类型的可视化的一些指导原则。类似的指南可在venengage网站上找到。我还推荐黑马分析公司的博客文章数据裸体看起来更好。这篇文章很好地解释了如何通过消除数字和图表中的冗余来创建有效的可视化。
图 1:数据可视化的类型(来源:https://extremepresentation.com/)
在这篇文章中,我将使用经合组织国际学生评估项目(PISA)T1 中的学生问卷数据。PISA 是一项国际性的大规模评估,面向全球许多国家和经济体的 15 岁学生。2015 年,来自 72 个国家的近 54 万名学生参加了 PISA。在完成几项评估后,所有学生还要完成一份背景调查问卷,重点是他们在学校的学习,他们对学习不同方面的态度,以及非认知/元认知结构。利用学生在调查问卷中的回答,我将演示五种可视化调查数据的替代工具。
我们开始吧📊。
例子
在本例中,我们将使用 PISA 2015 数据库的一个子集,其中包括学生对一些调查项目和人口统计变量(如年龄、性别和移民身份)的回答。样本仅包括来自加拿大艾伯塔省参加 PISA 2015 的学生(n = 2,133)。数据集以. csv 格式在这里提供。
在数据中,有 10 个李克特式的调查项目潜在地测量学生对团队合作的态度。前八项共享同一个问题陈述:“你在多大程度上不同意或认同自己?”而后两项是独立的。现在让我们看看数据中包含的所有项目。
图二。PISA 数据集中的调查项目
学生可以通过选择以下答案选项之一来回答这些问题,或者跳过这些问题而不选择答案选项(遗漏的答案在数据中标记为 999):
- 1 =强烈反对
- 2 =不同意
- 3 =同意
- 4 =非常同意
我们将从读取 R 中的数据并预览前几行开始分析。
图 3。PISA 数据集的预览
在接下来的部分中,我将演示如何可视化 PISA 数据集中的项目。可视化集中在单个项目或项目之间的关系上。
相关矩阵图
我们将通过创建相关矩阵图来开始可视化过程。该图将一组项目的相关矩阵作为输入,并将其转换为类似于热图的彩色表格。负相关和正相关用不同的颜色表示。此外,颜色的暗(或亮)表示成对相关的强度。使用该图,我们可以:
- 理解项目之间关系的方向和强度,
- 检测有问题的项目(即,与其余项目弱相关的项目),以及
- 确定由于措辞不一致而可能需要反向编码的项目(例如,某些项目中的负面措辞)。
为了创建相关矩阵图,我们可以使用corr plot【1】或ggcorrplot【2】。首先,我们将选择调查项目(数据中以 ST082 和 ST034 开头的项目)。接下来,我们将保存项目之间的成对相关性(即,10x10 相关性矩阵)。最后,我们将使用上面的两个包创建一个相关矩阵图。为了准备数据可视化的数据,我们将使用 dplyr 包【3】。
现在,让我们使用 corrplot 创建相关性矩阵图。在corrplot
函数中,order = "hclust"
应用层次聚类,根据项目之间的相关性将项目分组。另一个选项,addrect = 2
,指的是我们想要在项目簇周围绘制的矩形的数量。在我们的示例中,我们怀疑可能有两个项目集群:一个用于前 8 个项目(侧重于团队合作),另一个用于后 2 个项目(侧重于被朋友喜欢)。图 4 中的项目群似乎证实了我们的怀疑。
图 4。PISA 调查项目的相关矩阵图(使用 corrplot)
我们还将使用 ggcorrplot 创建一个相关矩阵图。程序非常相似。通过使用type = "lower"
,我们将只可视化相关矩阵的下对角线部分。
图 5。PISA 调查项目的相关矩阵图(使用 ggcorrplot)
两个相关矩阵图证实了我们最初的怀疑,即最后两个项目(即 ST034Q02 和 ST034Q05)彼此相关,但与调查项目的其余部分不相关。如果我们建立一个关注“团队合作”的量表,我们可能会排除这两个项目,因为它们对量表的贡献不足。
扰乱情节
我们要尝试的下一个可视化工具叫做“颠覆图”。打乱图可以显示多组数据的交集。这些图允许用户可视化来自不同数据集的变量之间的复杂关系。这种可视化方法使用户能够组合不同的图(例如,文氏图、条形图等)。)基于数据中的交叉点。你可以看这个好看的视频来更好的理解打乱情节的设计和使用。在 R 中,镦锻机包【4】可用于轻松生成镦锻图。该软件包的作者也有一个闪亮的应用程序和一个网页版(https://vcg.github.io/upset/)来帮助用户在没有任何 r 代码的情况下生成打乱的情节
在我们的例子中,我们将使用 naniar 包[5]来创建一个翻转图,用于可视化丢失的数据。naniar 包提供了几个可视化缺失数据的工具,包括打乱图。使用这个包,我们将创建一个打乱图,显示我们调查数据中缺失的响应模式。首先,我们将选择数据中的调查项目,然后将这些项目发送到gg_miss_upset
函数,以创建一个颠覆图。在函数中,nsets = 10
是指我们想要可视化的项目集的数量。因此,我们使用 10 来可视化数据中的所有 10 个项目。此外,我们可以使用nintersects
参数(如nintersects = 10
)来改变图中显示的交点数量。
图 6。显示 PISA 调查项目中缺失数据模式的打乱图
我们可以使用图 6 来了解每个项目的缺失响应数量。例如,如果我们查看第一行(ST082Q01),我们可以看到,根据为此项目标记的三个频率的总和,有 83 个遗漏响应(即 79 + 3 + 1)。此外,我们可以使用该图来识别缺失的响应模式。例如,该图显示 79 名学生跳过了所有调查项目而没有选择答案(见第一个竖线),而 13 名学生跳过了 ST034Q05 或 ST082Q14(见第二和第三个竖线)。每一列代表具有遗漏响应的项目的不同组合(即,具有黑色标记的项目)。总的来说,翻转图对于识别遗漏方面的问题项目非常有用。
堆积条形图
下一个可视化工具是堆叠条形图。堆积条形图不一定是非常令人兴奋的数据可视化形式,但它们在调查研究中广泛用于可视化 Likert 类型的项目(例如,具有强烈不同意、不同意、同意和强烈同意响应选项的项目)。likert 包[6]提供了一种相对简单的方法来创建调查项目的堆积条形图。我不会深入研究定制这些图表的所有选项,我将演示如何使用前八个项目创建一个简单的堆积条形图,重点是团队合作。由于李克特包依赖于 plyr 包,我们将不得不激活这两个包。结果图显示了八个项目中每个响应选项的响应百分比。
图 7。PISA 调查项目的堆叠条形图
冲积地块
冲积图(或图表)类似于流程图,表示随时间或不同组之间的变化。使用冲积图,我们可以展示不同项目之间或不同受访者群体之间的调查响应流程。你可以查看包的插图来获得更多的例子。在这个例子中,我们将使用gg 冲积包【7】。我们将选择一个调查项目,并使用性别、移民身份和对该项目的回答创建一个冲积图。为了将数据从宽格式转换为长格式,我们将使用 reshape2 包[8]。
图 8。项目 ST082Q01、性别和移民身份的冲积图
项目-人员图
我们将回顾的最后一个数据可视化工具称为物品-人地图(也称为 Wright 地图)。部分信任模型(PCM)是 Rasch 模型的扩展,可用于调查开发和验证。我们可以使用 PCM 分析调查项目,并获得每个项目的项目阈值。这些阈值表示选择特定响应选项所需的潜在特性的大小(例如,选择不同意而不是强烈不同意)。使用项目-人图,我们可以看到项目的阈值以及回答者潜在特征的分布。此图对于分析项目和回答项目的受访者之间的对齐(或匹配)非常有用。
PCM 可以使用各种 R 包进行估算,例如mirt【9】和eRm【10】。在使用 R 的教育测量和心理测量手册中,我们提供了如何使用 mirt 软件包评估 PCM 的分步演示。要创建物品-人员图,用户可以使用 eRm 包中的plotPImap
函数。因为我通常使用 mirt 包而不是 eRm 包,所以我编写了自己的函数来使用从 mirt 包返回的 PCM 结果创建一个物品-人映射。我的itempersonmap
功能在这里可用。
在下载了itempersonmap
函数的 R 代码后,我们可以使用source
函数将其导入 R。首先,我们将选择 8 个注重团队合作的项目(记住,其他两个项目似乎与其他项目不太协调,因此在此将其排除在外)。接下来,我们将记录从 1-2-3-4 到 0-1-2-3 的响应。最后,我们将使用 PCM 估计项目参数。在mirt
功能中,itemtype = "Rasch"
将 Rasch 模型应用于二进制项目,将 PCM 应用于多进制项目。由于我们的调查回答是多型的,PCM 将被选择用于估计项目阈值。请注意,我们添加了 technical = list(removeEmptyRows=TRUE)
,因为有 79 名受访者跳过了调查中的所有项目。因此,我们必须在估计模型之前移除它们。
我们将模型估计的结果保存为“mod”如果模型适当收敛,我们创建物品-人映射所需的所有信息都将保存在这个mirt
对象中。估算完成后,我们可以简单地使用itempersonmap(mod)
来创建一个物品-人员图。在图中,红点表示每个项目的项目阈值(三个阈值分隔四个响应类别),星号表示每个项目阈值的平均值。这些门槛越高,就越需要“团队合作”。在图的左侧,我们还看到了潜在特征的分布(即团队合作的结构)。
图 9。PISA 调查项目的项目-人地图
结论
在这篇文章中,我想展示五种有效可视化调查数据的方法。一些可视化(例如,堆积条形图和冲积图)可以用于呈现调查结果,而其他图(例如,扰乱图和相关矩阵图)可以用于识别调查中的有问题的项目。项目-人图也是一个非常有效的工具,可用于评估调查的整体质量(即项目和受访者之间的一致性),并确定是否需要更多的项目来精确测量潜在特质。
参考
[1]魏,t .,&西姆科,V. (2017)。 R 包“corrplot”:相关矩阵的可视化。【https://github.com/taiyun/corrplot 号
[2] Kassambara,A. (2019)。 Ggcorrplot:使用“ggplot2”可视化相关矩阵。https://CRAN.R-project.org/package=ggcorrplot
[3]h .威克姆、r .弗朗索瓦、l .亨利和 k .米勒(2020 年)。 Dplyr:一种数据操作的语法。https://CRAN.R-project.org/package=dplyr
[4]北卡罗来纳州盖伦堡(2019 年)。翻转器:一种更具可扩展性的替代文氏图和欧拉图的可视化交叉集合。https://CRAN.R-project.org/package=UpSetR
[5]n .蒂尔尼、d .库克、m .麦克拜恩和 c .费伊(2020 年)。 Naniar:缺失数据的数据结构、摘要和可视化。https://CRAN.R-project.org/package=naniar
[6]j .布赖尔和 k .施佩尔施奈德(2016 年)。李克特:分析和可视化李克特项目。https://CRAN.R-project.org/package=likert
[7]j . c .布伦森(2020 年)。冲积:冲积地块的分层语法。开源软件杂志, 5 (49),2017。https://doi.org/10.21105/joss.02017
[8]韦翰·h .(2007 年)。使用整形包整形数据。统计软件杂志, 21 (12),1–20。http://www.jstatsoft.org/v21/i12/
[9]查默斯,R. P. (2012 年)。mirt:用于 R 环境的多维项目反应理论包。统计软件杂志, 48 (6),1–29。【https://doi.org/10.18637/jss.v048.i06
[10]迈尔 p .哈辛格 r .和迈尔 M. J. (2020 年)。 eRm:扩展 Rasch 建模。https://cran.r-project.org/package=eRm
提高统计能力的 5 种方法
可视化 A/B 测试中的统计功效
在数据科学中,我们经常需要运行 A/B 测试,并使用统计能力来解释结果。在博客中,我将解释什么是力量,以及如何使用可视化来增加力量。而且我强调一下,这些方法和 p 黑没有任何关系。
开始之前,我假设您对以下内容有一些基本的了解:
- 假设检验 (p 值)
- I 型和 II 型错误,或假阴性和假阳性
什么是权力
在二元假设检验中,要么零假设 H0 为真,要么备选假设 HA 为真。通常,我们将 null 设置为没有任何影响或事物保持不变,例如两个意味着相同(mu1 = mu2)。而我们把备择假设设定为,在你把一个变量引入实验之后,产生了某种影响或者事情发生了变化,比如两个均值不一样(mu1 ≠ mu2)。
对于我们测试人员来说,我们不希望 H0 是真实的。我们不想经历所有的困难来实现测试,却发现我们引入的变量是无用的。相反,我们关心 HA 是否为真,因为我们想要找到重要的变量,所以我们需要关心我们是正确的概率:当 HA 确实为真时,我们拒绝 H0 并因此接受 HA 的概率。这就是所谓的统计能力,当它存在的时候,你发现它的能力。
作者图片
在这个图表中,我们用深绿色来表示能量。在假设检验中,我们总是预先确定 alpha 值,通常设置为 0.05,所以在我们开始检验之前,I 类错误率就已经确定了。然后,我们可以计算出剔除 H0 所需的最小临界值。我们可以从零假设分布到备选假设分布画一条线,并将曲线下的区域分成两部分。如果我们计算的 t 或 z 值落在虚线的左边,当 HA 为真时,我们不能拒绝 H0,我们犯了第二类错误。如果计算的值落在右边,当 HA 为真时,我们拒绝 H0,我们做出正确的调用。因此,曲线右边的区域就是我们的功率。
请注意,我们只在 HA 为真的情况下谈论功率。如果不幸的是,H0 是真的,没有任何影响,没有任何力量会帮助我们。如图所示,当 H0 为真时,我们只处理α。但在现实生活中,我们不知道 H0 或哈是真的,我们不能改变地面的真相。我们所能控制的就是拒绝或者不拒绝 H0,同时希望他是真实的。尽管如此,我们仍然希望提高我们的统计能力,这样当它确实存在时,我们就有最好的机会去检测它。
如何增加功率
让我们更仔细地看看可视化,并了解我们在图中知道什么样的信息。
作者图片
开始之前,我们知道:(1)阿尔法水平,(2)我们是否使用 1-尾或 2-尾测试,(3)分布的形状(t 或 z)。在完成测试后,我们知道:(4)样本大小,(5)分布 M0 和马的平均值(或它们之间的差),(6)分布的标准偏差,因此(7)标准误差(SE)和(8)最小临界值,也就是虚线 X 的值(使用 M0、最小临界值和 SE)。
一个例子可以测试做练习册上的每一道 SAT 问题是否真的有所不同。SAT 的人口平均值为 M0 = 500,人口标准差= 100。因为我们知道总体平均值,我们可以使用 z 分布。我们可以像往常一样将测试设为双尾(alpha = 0.05)。现在,我们进行测试并检查测试数据。假设 N = 100,HA 分布的平均值为 MA = 530。由于我们假设两个分布相同,我们可以计算出 SE = SD/√N = 100/√100 = 10,因此 X = z_crit * SE + M0 = 1.96(我们从 z 表中得知)* 10 + 500 = 519.6。好了,现在我们终于可以计算功率了。HA 分布的临界值为 z _ crit 2 =(X-MA)/SE =(519.6-530)/10 =-1.04。我们可以查一下 z 表,看到对应的 p(x ≤ -1.04) = 0.1492,所以幂是 1-0.1492 = 0.8508。
好吧,现在最大的问题是。我们如何增加功率?
我相信更容易视觉化思考。你会如何增加绿色的面积?我们可以移动虚线(方法 0 & 1)、移动均线(方法 2)或改变分布的形状(方法 3–5)。
0.提高重要级别 alpha(错误的方式)
作者 GIF
保持其他一切都在原位,一个简单的方法是将虚线向左移动。通过增加α或从双尾检验切换到单尾检验,我们可以降低最小临界值 x。
很容易,但是一个大的警告是增加 alpha 会导致更高的犯 I 型错误的概率,所以我们从不篡改 alpha 的值。
1.从双尾检验切换到单尾检验
作者 GIF
类似地,从双尾测试切换到单尾测试可以将虚线向左移动。在双尾检验中,每个尾的临界 p 值是α的一半,而在单尾检验中,临界 p 等于α。
我们是使用双尾还是单尾测试取决于测试设计,并且是在进行实验之前设置的,所以我们需要从一开始就记住支持单尾测试。
2.增加平均差异
另一种方法是增加两种方法之间的差异。由于 H0 分布是固定的,因为零假设通常不会改变,我们只能希望 HA 分布能够向右移动。
作者 GIF
然而,我们无法手动实现这一点。我们需要如实报告我们从测试数据中得到的分布(否则就是数据操纵!).但这量化了为什么我们喜欢更大的均值差异,因为它给了我们更多的力量。
特别说明:
均值差是效应大小的一种,所以我们可以说增加效应大小可以增加功效。
3.用 z 分布代替 t 分布
从这种方法开始,我们着重于修改分布的形状。使用 z 分布将更容易达到统计显著性。为什么?
作者 GIF
因为 z 分布有更大的峰度(z 比 t 分布高)和更细的尾部。通过改变形状,X 也减少了,所以这两种效应增加了功率。在前面的 SAT 分数的例子中,使用 z 分布是合适的,因为我们知道总体均值。虽然这种情况在现实生活中并不经常发生,但是当样本量较大时,我们可以用 z 来近似一个 t 分布。
这种形状上的变化不会很明显。我在 GIF 中夸大了一点,以便更容易看到。
4.降低标准偏差
修改分布形状的另一种方法是通过降低 SD 来降低 SE。
作者 GIF
我们可以使用更精确的测量方法,比如在用户反馈调查中提出清晰的问题,而不是模糊的问题。这样,我们的数据将会有更少的错误和噪音。
此外,如果适用的话,我们可以尝试运行一个配对样本 t 检验。其工作原理是配对组有更高的相关性,配对样本之间的分数差异更小。
5.增加样本量(最实际的方法)
作者 GIF
最后,我们可以一直依赖的一个方法是增加样本量。如果 SD 保持不变,较大的样本大小 N 会增加分母,则 SE 会降低。
这也是真实业务场景中最实用的方式。与上面列出的方法相比,从更多的用户那里收集数据或发出更多的调查要容易得多。
这不是黑客入侵
如果你读这篇博客的第一个想法是 p-hacking,那么恭喜你!你是一个训练有素的统计学从业者,知道实验伦理。
的确,“增加”这个词给我们一种错觉,以为我们在控制实验结果,而事实上我们并没有。例如,方法(2)增加平均差异超出了我们的控制范围,但我认为理解为什么更大的平均差异导致更大的功率的机制仍然很重要。所以我把它放在这里,就像其他 帖子一样。
虽然我们不能控制测试数据,但我们可以控制实验设计。方法 0、1、3、4 和 5 都是在之前预先确定的**,我们进行测试并查看测试数据。我们从不篡改测试数据!**
比如说(5)增加样本量。我们是在实验期间还是之后增加样本量?不要!我们基于期望的幂(例如:幂=0.85)预先计算样本大小。如果 N=50,那么让我们找 50 个人,进行实验,检查测试数据并如实报告 p 值。
如果我是 p-hack,我会在得到 50 个人后首先检查我的 p 值= 0.053。哦不。p> 0.05,如此接近。我该怎么办?在进行测试后,我增加了样本量,并找到了另外两名参与者。我再次检查我的 p 值。现在 p = 0.049,我停止一切,报告我发现了一个效应。这是非常错误的!如果我每次添加新的参与者时都检查我的 p 值,那么在进行测试之前,任何事情都有可能获得 p < 0.05 and I will always find an effect.
Therefore, the meaning of increasing sample size is using N=50 instead of 20 or 40 。这同样适用于方法 1、3 和 4。
重要的是要知道增加统计能力的方法不止一种,因为有时增加样本量根本负担不起。从一个大学生的角度来说,如果我的资助被批准了,我只能负担 50 个测试对象,我将不得不在其他方面采取更聪明的实验设计来增加统计能力。
(此部分是在原博客发布 2 天后添加的。我在评论部分看到了一些混乱,所以希望这是更清晰的。)
结论
在这篇文章中,我们讨论了什么是使用可视化的统计能力,通过一个例子来更好地理解图表,并讨论了提高能力的 5 种方法(实际上是 6 种方法):
- 提高重要级别 alpha(错误的方式)
- 从双尾检验切换到单尾检验
- 增加平均差异
- 用 z 分布代替 t 分布
- 降低标准偏差(通过使用精确测量和配对样本 t 检验)
- 增加样本量(最实际的方法)
感谢您的阅读!希望这篇博客对你有所帮助。
5 种方法使组织病理学图像模型对域转移更加稳健
探索各种方法:染色标准化、颜色增强、对立领域适应、模型适应和微调
组织病理学图像分析中的最大挑战之一是创建对不同实验室和成像系统的变化具有鲁棒性的模型。这些差异可能是由载玻片扫描仪、原材料、制造技术和染色方案的不同颜色响应造成的。
不同扫描仪引起的 H&E 图像变化[ Aubreville2021
不同的设置可以生成具有不同染色强度或其他变化的图像,从而在模型训练所基于的源数据和部署的解决方案需要操作的目标数据之间产生域转换。当域转移太大时,在一种类型的数据上训练的模型将在另一种数据上失败,通常是以不可预测的方式。
我一直在与一个客户合作,他有兴趣为他们的用例选择最佳的对象检测模型。但是他们的模型一旦部署将检查的图像来自不同的实验室和各种扫描仪。
从他们的训练数据集到目标数据集的领域转换可能比在训练集上获得最先进的结果更具挑战性。
我给他们的建议是尽早解决这个领域适应的挑战。一旦他们学会了如何处理域转换,他们总是可以在以后试验更好的对象检测模型。
两个不同数据集的有丝分裂外观:Radboudumc(上)和 TUPAC(下)[ Tellez2018 ]
那么,你如何处理域名转换呢?有几个不同的选项:
- 使用污渍标准化技术标准化图像的外观
- 在训练期间增加颜色以利用染色的变化
- 学习领域不变特征的领域对抗训练
- 在测试时调整模型以处理新的图像分布
- 在目标域上微调模型
通过 GAN [ Stacke2020 ]实现色彩增强、染色标准化和域对齐的不同目标
这些方法中的一些具有相反的目标。例如,颜色增强增加了图像的多样性,而染色归一化试图减少变化。领域对抗训练试图学习领域不变的特征,而适应或微调模型将模型转换为仅适合目标领域。
本文将回顾这五种策略中的每一种,随后是揭示哪种方法最有效的研究总结。
1。色斑标准化
不同的实验室和扫描仪可以为特定的污渍生成不同颜色配置文件的图像。污渍标准化的目标是使这些污渍的外观标准化。
传统上,像配色[ 莱因哈德 2001 ]和污渍分离[ 马森科 2009 、坎恩 2014 、瓦哈达尼 2016 ]这样的方法被使用。然而,这些方法依赖于单个参考载玻片的选择。任等人已经证明,使用具有不同参考幻灯片的集合是一种可能的解决方案[ Ren2019 ]。
H&E 图像(左)和解卷积的苏木精(中)和曙红(右)[ Macenko2009
更大的问题是,这些技术没有考虑空间特征,这可能导致组织结构得不到保留。
生成对抗网络(GANs)是当今染色标准化的最新技术。给定来自域 A 的图像,生成器将其转换到域 B。鉴别器网络试图区分真实的域 B 图像和伪造的域 B 图像,帮助生成器进行改进。
如果来自域 A 和 B 的成对和对齐的图像可用,则该设置执行良好。但是,它通常需要在两个不同的扫描仪上扫描每张载玻片,甚至可能需要重新扫描每张载玻片。
但是有一个更简单的方法可以获得配对图像:将一幅彩色图像转换成灰度(域 A),并与原始彩色图像(域 B)配对[ Salehi2020 ]。两者完全对准,并且可以训练条件 GAN 来重建彩色图像。
使用有条件的 GAN 从灰度到 H&E 的染色风格转换[ Cho2017
这种方法的一个主要优点是,为一个特定领域训练的再训练模型可以为各种不同的实验室和扫描仪工作,因为输入灰度图像中的变化小于彩色图像中的变化。
当成对图像不可用时的替代方法是 CycleGAN [ Zhu2017 ]。在此设置中,有两个生成器:一个用于从域 A 转换到 B,另一个用于从域 B 转换到 A。这两个模型的目标是能够重建原始图像:A - > B - > A 或 B->A->B。cycle gans 还利用鉴别器来预测每个域的真实图像与生成的图像。
使用 CycleGAN [ Lo2021 ]进行染色风格转移
使用深度学习的色斑归一化方法已经变得越来越复杂。作为检验这种标准化对您的任务是否有帮助的第一步,我建议从简单开始。染色工具和组织切片工具都实现了一些颜色匹配和染色分离的方法。
这些简单的方法在某些情况下是足够的,但不是全部。下图展示了不同方法在五个不同数据集上的表现。
不同数据集上染色归一化结果的比较[ Salehi2020 ]
2。色彩增强
通过应用随机仿射变换或添加噪声的图像增强是用于对抗过拟合的最常见的正则化技术之一。类似地,可以利用染色的变化来增加在训练期间呈现给模型的图像外观的多样性。
虽然颜色的剧烈变化对于组织学来说是不现实的,但是通过对每个颜色通道进行随机的加法和乘法变化而产生的更微妙的变化已经被证明可以提高模型性能。
颜色增强的强度是一个额外的超参数,应该在训练期间进行实验,并在来自不同实验室或扫描仪的测试集上进行验证。
Faryna 等人展示了组织病理学上的随机扩增技术[ Faryna2021 ]。这种方法将增强参数化为所选择的随机变换的数量及其大小。
图像增强技术
特列斯等人研究了不同增强技术(单独和组合)对有丝分裂检测的影响,并提出了 H&E 特异性变换[ Tellez2018 ]。他们执行了颜色去卷积(如上文提到的染色分离方法中所使用的),然后在转换回 RGB 之前,在苏木精和曙红空间中应用随机移位。H & E 变换是性能最好的个体增强方法。所有增强方法的组合对于将性能推广到新数据集至关重要。
苏木精和曙红通道上的颜色增强[ Tellez2018
3。无监督领域对抗训练
领域适应的下一个技术是领域对抗训练。这种方法利用来自目标域的未标记图像。
域对抗模块被添加到现有模型中。该分类器的目标是预测图像是属于源域还是目标域。梯度反转层将该模块连接到现有网络,以便训练优化原始任务并鼓励网络学习域不变特征。
附属于 CNN 分类器的域对抗模块[ Ganin2016 ]
在训练期间,使用来自源域的标记图像和来自目标域的未标记图像。对于标记的源图像,应用原始网络的损失和域损失。对于未标记的目标图像,仅使用域损失。
利用领域适应模型改进领域不变性[ Aubreville2019
这个模块可以添加到各种深度学习模型中。对于分类,它通常连接到输出附近的图层。对于分段,它通常应用于瓶颈层—尽管它也可以应用于多个层。对于检测,它可以应用于特征金字塔网络。对于像有丝分裂这样需要附加分类器网络的具有挑战性的对象检测器,域对抗网络可以仅应用于第二阶段[ Aubreville2020a ]。
4。测试时调整模型
预测时间批量标准化将移位激活与训练分布对齐
不是在训练期间适应域转移,而是在测试时修改模型。域的变化反映在特征空间分布的变化中,即协变量的变化。因此,对于使用批量标准化图层的模型,可以为新的测试集重新计算平均值和标准偏差。
这些新的统计数据可以在整个测试集上进行计算,并在运行推理之前在模型中进行更新。或者可以为每批新数据计算它们。Nado 等人发现后一种方法,称为预测时间批量标准化,就足够了[ Nado2020 ]。此外,一批 500 张图像足以在模型准确性方面获得实质性的提高。
5。模型微调
最后,可以在测试集上用域转移[ Aubreville2020b ]对模型进行微调。如果测试集中有足够多的标记样本,这种方法可能会产生最好的结果。然而,它是最耗时和最不可推广的。该模型可能需要在未来的其他测试集上再次进行微调。
方法比较
颜色增强和染色标准化广泛用于病理学成像应用中,尤其是对于整个载玻片 H&E 图像。迄今为止,领域对抗训练和测试时的模型适应研究较少。
色斑标准化与增色
Khan 等人研究了单独使用和一起使用时的色斑标准化和增色[ Khan2020 ]。当这些方法一起使用时,可以获得最好的结果。
特列斯等人针对各种不同的组织学分类任务测试了图像增强和归一化策略的不同组合。最佳配置是随机移动颜色通道,并应用无污点标准化。使用染色标准化的实验表现稍差。这验证了图像增强在创建组织学的鲁棒分类器中的重要性,并强调了颜色转换的重要性。虽然应用污点归一化并没有真正的伤害,但这种额外的计算可能是不必要的。
污点规范化 vs 领域对抗训练
Ren 等人将领域对抗训练与一些染色归一化和颜色增强方法进行了比较,证明了领域对抗方法在推广到新图像集时更具优势[ Ren2019 ]。
色斑归一化 vs 颜色增强 vs 领域对抗训练
Larfarge 等人进行了一项类似的研究,其中也包括领域对抗训练。他们在有丝分裂分类和细胞核分割任务上比较了域对抗训练与颜色增强和染色归一化[ Lafarge2019 ]。
在有丝分裂分类上,他们发现颜色增强对来自模型训练的同一实验室的测试图像表现最佳。然而,在其他实验室的图像上,领域对抗训练结合色彩增强是最好的。
对于细胞核分割,结果略有不同。当在相同组织类型的图像上测试时,染色标准化是关键。在不同的组织类型上,染色标准化的领域对抗训练是最好的。
很明显,领域对抗性训练对两种类型的领域转换都有好处!
然而,最佳的预处理和增强策略因数据集而异。Lafarge 推测这是由于训练集中的域可变性的数量。
在上述方法分析中测试的污迹标准化方法仅仅是传统的颜色匹配和污迹分离技术。许多更新的基于深度学习的方法并没有包含在这些基准中。
建议
传统的污渍标准化技术值得尝试作为第一步,因为它们更容易实施,通常运行更快。对于一些域偏移,这些甚至可能是足够的,特别是当与颜色增加或域适应相结合时。用一种更简单的方法进行的实验还可以提供关于一定量的染色归一化是否会提高模型泛化性能的见解。为了使染色标准化更加可靠,并保留组织结构,请评估上述方法。
可用数据也可能是选择适当技术的决定因素。染色归一化和颜色增强在训练期间不需要目标域图像,而其他三种方法需要。模型自适应需要未标记的目标数据,而微调需要对其进行标记。出于这些原因,通常首先尝试染色正常化和颜色增强,并在需要时包括对抗性域适应。这三种方法也是训练单个可概括模型的最佳方法。如果有大量的目标图像可用,那么调整模型(使用未标记的数据)或微调(使用标记的数据)可能是最有效的。
监控已部署系统的意外域转移也很重要。Stacke 等人开发了一种量化畴变的方法[ Stacke2020 ]。他们的度量标准不需要带注释的数据,所以可以作为一个简单的测试,看看新数据是否可以被现有的模型很好地处理。
希望从图像和算法中获得最大的洞察力?
Heather D. Couture 是 Pixel Scientia Labs 的创始人,该实验室提取最新的机器学习研究,以帮助研发团队抗击癌症。
联系她,了解如何实施更好的模式并产生影响。
参考文献
[Aubreville2020a] M. Aubreville,C.A. Bertram,s .贾巴里,C. Marzahl,R. Klopfleisch,A. Maier,用于有丝分裂图评估的物种间、组织间域适应 (2020),Bildverarbeitung für die Medizin
[Aubreville2020b] M. Aubreville,C.A. Bertram,T.A. Donovan,C. Marzahl,A. Maier,R. Klopfleisch,一个完全注释的犬乳腺癌全幻灯片图像数据集,以帮助人类乳腺癌研究 (2020b),科学数据
[Aubreville2021] M. Aubreville,C. Bertram,M. Veta,R. Klopfleisch,N. Stathonikos,K. Breininger,N. ter Hoeve,F. Ciompi,A. Maier,量化有丝分裂检测中扫描仪诱导的结构域缺口 (2021),arXiv 预印本 arXiv:2103.16515
[Cho2017] H. Cho,S. Lim,G. Choi,H. Min,使用 gan 进行组织病理学图像的神经染色式转移学习 (2017),arXiv 预印本 arXiv:1710.08543
[Faryna2021] K. Faryna,J. van der Laak,G. Litjens,为 H & E 染色组织病理学 (2021),深度学习医学成像
[Ganin2016] Y. Ganin,E. Ustinova,H. Ajakan,P. Germain,H. Larochelle,F. Laviolette,M. Marchand,V. Lempitsky,神经网络的领域对抗性训练 (2016),《机器学习研究杂志》
【Khan 2014】一种使用图像特定颜色去卷积对数字组织病理学图像进行染色归一化的非线性映射方法
[Khan2020] A. Khan,M. Atzori,S. Otálora,V. Andrearczyk,H. Müller,对计算病理学染色颜色异质数据的卷积神经网络进行推广 (2020),医学成像
[Lafarge2019] M.W. Lafarge,J.P .普鲁伊姆,K.A. Eppenhof,M. Veta,组织学图像的学习域不变表示 (2019),医学前沿
[Lo2021] Y.C. Lo,I.F. Chung,S.N. Guo,M.C. Wen,C.F. Juang,使用肾小球检测应用对肾脏病理图像进行周期一致性 GAN 染色翻译 (2021),应用软计算
[Macenko2009] M. Macenko,M. Niethammer,J.S. Marron,D. Borland,J.T. Woosley,X. Guan,C. Schmitt,N.E. Thomas,用于定量分析的组织切片标准化方法 (2009),生物医学成像国际研讨会
[Nado2020] Z. Nado,S. Padhy,D .斯卡利,A. D’Amour,B. Lakshminarayanan,J. Snoek,评估协变量转移下稳健性的预测时间批次归一化 (2020),arXiv 预印本 arXiv:2006.10963
[Reinhard2001] E .赖因哈德,M. Adhikhmin,B. Gooch,P. Shirley,图像间的颜色传递 (2001),计算机图形学与应用
[Ren2019] J. Ren,I. Hacihaliloglu,E.A. Singer,D.J. Foran,X. Qi,]用于组织病理学全载玻片图像分类的无监督域自适应算法 (2019),生物工程与生物技术前沿
[Salehi2020] P. Salehi,A. Chalechale, Pix2pix 基染色间转换:组织病理学图像分析中稳健染色归一化的解决方案 (2020),国际机器视觉和图像处理会议
[stack e 2020]k . stack,G. Eilertsen,J. Unger,C. Lundströ,测量结构域移位以实现组织病理学的深度学习 (2020),《生物医学与健康信息学杂志》
[Tellez2018] D .特列斯,M. Balkenhol,N. Karssemeijer,G. Litjens,J. van der Laak,F. Ciompi, H 和 E 染色增强可提高用于组织病理学有丝分裂检测的卷积网络的泛化能力 (2018),医学影像学
[Tellez2019] D .特列斯,G. Litjens,P. Bándi,W. Bulten,J.M. Bokhorst,F. Ciompi,J. van der Laak,量化计算病理学卷积神经网络中数据增加和染色颜色归一化的影响 (2019),医学图像分析
【vahadane 2016】组织学图像的保结构颜色归一化和稀疏染色分离
[Zhu2017] J.Y. Zhu,T. Park,P. Isola,A.A. Efros,使用周期一致敌对网络的不成对图像到图像翻译 (2017),国际计算机视觉会议录
作为数据科学家如何提供价值
数据科学
机器学习实践者如何成为任何组织中不可或缺的资产。
里卡多·安南达尔在 Unsplash 上拍摄的照片
我们生活在一个价值驱动的社会。
时间、金钱、空间都是我们人类每天醒来积累的资源。除了时间,你只有 24 小时,和我们一样。
这让我想到了我们作为机器学习实践者带给组织的核心价值主张之一:通过创新或自动化节省时间和成本的能力。
当你阅读这篇文章时,有一个问题需要考虑:在一个价值驱动的社会中,作为一名机器学习从业者,你如何确保自己在一个组织中保持价值和重要性?
这篇文章应该能回答这个问题。实际上是五个答案。
如果你只采用数据科学家和 ML 从业者可以利用并用来为组织增加价值的五种方法中的一种,那么你就会成为不可或缺的资产。
1.学会沟通
Clint Patterson 在 Unsplash 上拍摄的照片
沟通是将人类推向食物链顶端的核心技能之一。
尽管早期穴居人的交流方式与现在的方式略有不同,但交流的目的是一样的。
我们都想把信息传递给他人,以产生意识。
数据科学家如何通过交流创造或增加价值?
我在创业环境中茁壮成长。有一种关于要么沉要么游的心态让我非常激动——我希望你能理解。与大公司不同,创业团队中的每个成员都扮演着重要的角色。你被你所增加和创造的价值直接衡量。
理解公司的宗旨和管理团队的目标
要想增加或创造任何形式的价值,你首先必须明白别人对你的期望。你的团队或经理希望你带来什么?
以上问题的答案取决于你的角色和职责,但这只是最低要求。
如果你打算成为一名不可或缺的数据科学家,你必须超越自我,让自己直接与管理团队和公司的目标保持一致。
在我目前的职位上,我与公司的首席执行官/首席技术官召开季度会议,以确保我很好地理解他们的目标、期望和指标。我利用这次演示会议来强调上一季度的一些成功和经验,并指出任何可能影响未来预期的重大障碍。
展示是一项有用的活动,可以让你有机会进行各种形式的交流。
口头的、视觉的和书面的交流方式都是你在演讲中可以使用的。
在季度管理演示之后,我有一个个人研讨会,在那里我将总体目标分解为可操作的任务,这推动了我的日常活动。
你可能无法与管理团队直接会面,但你可以随时与经理和团队成员进行上述会面。
对于数据科学家来说,组织内部的口头交流发生在不同的层面。沟通可以是一对一,也可以是一对多。
谈判
谈判是一种常见的交流方式;你一天中的大多数互动都涉及到以公平的价格交换价值,通常是时间或金钱。这就是为什么要学会更有效地沟通,“我目前正在读‘永远不要分割差异*’*这是一本由前联邦调查局谈判代表克里斯托夫·沃斯(Christorpher Voss)和塔尔·拉兹(Tahl Raz)撰写的流行自助书籍。
数据科学家不谈判。
你有没有尝试过让高管增加项目预算;说服团队成员为什么您应该使用一个模型而不是另一个模型,或者请求对源代码进行更改。那么,我的朋友,你在谈判。
2.拥有企业家的心态
图片由 Xan Griffin 在 Unsplash 上拍摄
我不是说你必须在一夜之间成为埃隆·马斯克,才能为一个组织增加价值。
但是拥有企业家的心态会让你着眼于目标、期限、期望、收入等等。从不同的角度来看。
企业家的目的是通过承担普通人不愿承担的风险来创造价值,从而获得利润。这些风险可能与时间、地点和成本有关。
像企业家一样思考如何帮助数据科学家增加价值?
*‘失败得快,学习得也快’*这是初创公司员工的座右铭。
对于数据科学家来说,这意味着通过研究、实施和测试的迭代过程,尝试各种能够产生预期结果的方法。
我记得我不得不在我们公司的旗舰移动应用程序中开发实时人物细分。Tik-Tok、Instagram、Snap 等公司已经建立了非常有效的内部技术,并使细分成为消费者的一项微不足道的任务。
我没有告诉我的经理和团队成员,实时分段在这个时候可能不是用我们的资源实施的可行技术,而是戴上企业家的帽子,在互联网上搜索关于实时分段的最新研究和项目。
我尝试了几种方法,最多失败了,但从所有的方法中吸取了教训,我最终找到了一个解决方案,使结果可以实现。
回过头来看,我本可以轻松地说“我们不能做那件事”,这本来是情有可原的。尽管如此,当你像企业家一样思考时,你会尽可能地寻找机会和价值。
通过像企业家一样思考,我创造了价值,在我们的旗舰产品中提供了额外的创造力,并为我们整个公司在服务方面的主张增加了价值。你也可以这样做。
在拒绝产品功能请求或任何其他任务之前,挑战自己,接受看似不可能的任务。你可能会一次又一次地失败,但是失败得快,学得也快,你会成为一名更好的数据科学家。
几本书帮助我培养了一种企业家的心态。尽管如此,这两本关于杰出企业家的书被证明是最足智多谋的:埃隆·马斯克和阿里巴巴:马云建造的房子。
为了结束这一部分,下面是我多年来意识到的拥有企业家心态的好处:
- 更好的任务规划会议,确保考虑时间、成本和结果。
- 团队成员的动力和灵感来源。
- 更高的信心水平
- 实验可以激发更多的创造力
3.与研究保持联系
如果你经常阅读我的文章,你会遇到我经常使用的一句话:'人工智能以创新的速度前进’。
这种说法描述了机器学习领域的进步和发展速度。
作为一名机器学习实践者,你应该接触研究的前沿,通过研究收集的信息可以在组织内增加或创造价值。毕竟,知识就是力量。
尽管我的 ML 专业经验很少,但我的团队成员将我视为关于创新的可靠信息来源,并将我视为战略性产品决策的关键贡献者。
我的团队能够信任我的专业知识,因为我认为尽可能多地消化与机器学习进展相关的信息至关重要。我阅读博客、文章、研究论文和听播客,所有这些活动确保我与 ML 行业合拍。
通过不断的信息搜索和理解,我已经成为团队成员和经理们信任的来源。
我明白阅读研究论文可能会令人望而生畏,尤其是如果你没有获得高等学位的经历。对于那些难以理解研究论文的人来说,这篇文章可能有助于你建立一个基础。
此外,这里有一个博客列表,可以帮助你与行业保持联系,从而以各种方式创造价值:
4.成为自动化的倡导者
自动化是利用技术来最小化或消除任务和流程中的人工干预。
众所周知,人工智能的主要目标之一是提高工厂、家庭、办公室的自动化程度……几乎在任何可能的地方。作为机器学习的实践者,在可能的情况下,成为自动化的倡导者是你为一个组织增加价值的一种可靠方式。
通过自动化增加或创造价值是机器学习实践者最喜欢采用的价值创造方法之一。通过自动化简化的流程带来了直接和显著的价值。
通过自动化提供的价值几乎总是转化为时间和成本的减少。两个主要资源组织的优先事项,要么增加,要么减少。
数据挖掘可能是一件痛苦的事情。
在我最近的一个项目中,我不得不搜集 Instagram 的公开图片。起初,我是通过手动下载图片并将它们存储在文件夹中来完成的,你已经可以看到这种方法的缺陷了。
我的第二种方法更像数据科学。我写了一个 100 行的 python 脚本,从概要文件中抓取公共图像,处理它们,并把它们放在目标文件夹中。
这个简单的脚本为我节省了大量的时间、精力和事后成本。我通过为自己腾出更多时间来构建项目中的其他组件,从而创造了价值。
5.以产品和结果为导向
当你将你的日常行为与总体预期目标相一致时,你给组织带来的价值会变得更加明显。很容易迷失在任务、会议和无意义的工作中。
假设你的公司打算在特定时间内发布一款具有物体检测功能的应用。在过去几周内,您仍然在收集数据并注释自定义数据集。在这种情况下,你没有增加价值。你实际上是未实现价值的瓶颈。
结果驱动的数据科学家将利用预训练的模型来检测 90%的预期对象,满足截止日期并进行沟通— 参考第 1 点任何限制因素和行动,以便在未来版本中“修补”东西。
也许上面的场景太具体了。
我要传达给你的特别信息是,如果你把精力和时间集中在任务的核心部分,在一个组织内创造价值会变得更加容易。
问问自己,要实现的应用程序或工具的主要功能是什么?
回答以上问题将使你开始思考在与总体目标相关的每项任务上投入正确的时间和精力。
结论
还记得我之前问的问题吗?
作为一名机器学习实践者,你如何确保自己在一个价值驱动的社会中保持价值和重要性?
- 学会沟通
- 拥有企业家的心态
- 与研究保持联系
- 成为自动化的倡导者
- 以产品和结果为导向
作为一名组织内的数据科学家,你可以通过更多方式增加价值。上面列出的方法是基于我在机器学习行业一年的经验。我相信在 2021 年及以后,我有很多东西要学。
欢迎在评论区分享你曾经或正在使用的在组织中创造价值的方法。
要联系我或找到更多类似本文的内容,请执行以下操作:
5 种不需要写代码就能对开源做出贡献的方法
现在就开始您的开源之旅吧。
开源软件使我们能够做很多以前做不到的事情。开源软件的基础代码可以被任何人访问和修改——只要修改和使用遵循发布许可。通常,开源项目通过 GitHub、GitLab 或任何其他公共存储系统共享。
作为开发人员和数据科学家,为开源项目做贡献有许多潜在的好处,例如学习一项新技能、与社区联系、建立强大的网络以及磨练自己的技能。此外,拥有坚实的开源贡献可以让你的投资组合和简历更上一层楼,并开辟新的和有前途的未来职业机会。
在数据科学中,许多著名的日常使用的库和包,如 Numpy 和 Pandas,都是开源项目,通过全球许多开发人员的努力才取得了今天的成就。作为当今世界的一名数据科学家,为开源项目做贡献通常不仅仅是你简历上的一个很好的附件,而是一个必不可少的项目。
但是,为开源做贡献,尤其是对初学者或以前从未做过贡献的人来说,有点令人生畏。你可能会觉得自己还不具备做出贡献所需的技能,或者你的编码或技术知识还不够。所以,你继续等待,直到你达到一个知识水平,在那里你可以舒服地做出你的第一个贡献。
在学习数据科学或编程的基础知识时,有一些方法可以做出开源贡献,而不需要编写代码。这样做的问题是,你失去了很多等待的时间。本文将探讨无需编写任何代码就能为开源项目做出贡献的 5 种方式。
№1:融入社区。
如果你喜欢与人交往,组织活动和与社区交往,这可能是你做出第一次贡献的好机会。大多数大型开源项目通常都有一群追随者,他们每天都在使用和开发它。有些甚至有自己的会议和定期聚会。
你可以请求帮助组织会议或聚会。你可以提议在你所在的城市、大学或工作场所谈论或主持一次聚会。你也可以自愿为这些会议做一些管理工作。
</9-comprehensive-cheat-sheets-for-data-science-46005d72b485>
№2:设计图形。
如果你是一个有创造力和艺术感的人,你还能为一个科技项目做贡献吗?毫无疑问,答案是肯定的。如果你有图形设计知识,你可以帮助创建一个项目或任何其他图形组件的标志。
你也可以提议更好地组织和展示项目或他们的网站或文档。一些人在向项目核心团队提出他们的重组和想法以支持他们的建议之前,实际上进行了 UX(用户体验)调查。
№3:改进文档。
作为一个热爱写作和解释技术概念的人,从与文档相关的贡献开始是我的首选。为文档做贡献有许多选择,可以吸引任何愿意提供帮助的人。
一些项目需要帮助编辑和校对文档的核心。您可能会提出更好的例子和解释来提高文档或其中特定部分的质量和可读性。文档贡献还包括将文档翻译成其他语言,为项目的不同特性创建新的教程,甚至为最近的项目更新创建和维护时事通讯。
</5-new-data-science-books-that-you-should-consider-reading-c90aec1d5b0d>
№4:回答别人的问题。
大多数开源项目接受回答其他人关于堆栈溢出或 Reddit 的问题,作为对项目的宝贵贡献。所以,你可以试着回答你路过的问题,并知道答案,以帮助那些问这个问题的人,并让你的答案被认为有助于这个项目。
让我们假设你不知道这个问题的确切答案;甚至帮助人们理解为什么问题会发生,也足以帮助他们找到自己的答案。你也可以在 GitHub 中回答问题,或者帮助主持讨论板或社区对话频道。
第 5 点:回顾他人的代码。
最后但并非最不重要的是审查他人的代码。有些人宁愿仔细检查编写的代码,寻找异常或不一致的地方,也不愿从头开始编写代码。如果你现在是这些人中的一员,那么这可能是你的开源贡献选择。
另一种选择是为项目的特殊功能写博客文章和教程。这些教程将帮助人们更好地理解项目及其用途。最后,你也可以指导另一个贡献者。或者指导项目的新用户,帮助他们导航并有效地使用它。
外卖食品
许多令人惊叹的程序员和数据科学家都在那里,这使得新人有点难以招架,难以向社区和领域展示和证明他们的价值。您可以展示您的技能、参与社区并帮助他人的一种方式是为开源项目做贡献。
当我第一次想为开源做贡献时,我非常害怕,我的技能水平比不上已经做出贡献的那些了不起的人。我总是担心我的代码不好,我非常害怕被拒绝。因此,我决定从非代码贡献开始涉足开源领域,了解这个过程是如何进行的,以及我应该如何去做。
</5-python-books-to-transfer-your-code-to-the-next-level-a5af0981e204> [## 5 本 Python 书籍,让你的代码更上一层楼
towardsdatascience.com](/5-python-books-to-transfer-your-code-to-the-next-level-a5af0981e204)
我的第一个开源贡献是帮助翻译一些 Python 库的文档。我热爱写作,他们需要有人翻译成我的母语。我开枪帮忙了。这样做放松了我的心灵,消除了我对这个过程的恐惧。我认识了一些人,向他们学习,获得了开始为代码做贡献的信心。
从非代码贡献开始可以激励你克服被拒绝和不够好的恐惧,成为你开源之旅的起点。本文旨在向您推荐一些非代码开源贡献,您可以从今天开始您的贡献之旅。
5 个 YouTube 播放列表,教你所有关于数据科学的知识
从一个来源获得你需要的所有知识
Szabo Viktor 在 Unsplash 上拍摄的照片
所以,你想成为一名数据科学家,你已经对该领域、子领域做了研究,你知道——模糊地——你对该领域感兴趣,你可能想进入并进一步探索的领域,你已经准备好投入时间和精力来展示自己。
但是,你从哪里开始呢?
互联网上充满了各种各样的教程,可以教你数据科学的各个方面。它们以各种形式存在,包括书面、视频、网络研讨会,甚至是面对面的课程。不仅如此,如果你更喜欢书,有很多针对不同层次和背景知识的人的书。
这很好,因为您可以选择浏览和选择最适合您的方法。一些人喜欢书,而另一些人可能想在上班路上或做饭时通过听有声读物或播客来学习。其他人可能会学习书面教程,或者在 YouTube 或其他平台上观看一些视频教程。
无论您喜欢哪种格式,您的目的都是找到好的、简单明了的材料,您可以使用这些材料轻松地学习数据科学的各个方面,如果可能的话,还可以免费学习。
也就是说,人类是视觉生物;我们从我们所看到的比我们所听到的或读到的学得最好。这就是为什么许多人选择观看视频教程来学习他们需要的任何新技能。在本文中,我将带您浏览 5 个 YouTube 播放列表,您可以通过观看这些列表来获得开始数据科学所需的知识。
</7-tips-for-data-science-newbies-d95d979add54>
№1:数据教授的数据科学 101
这个列表中的第一个播放列表涵盖了数据科学基础知识,由数据教授制作的数据科学 101 播放列表。截至撰写本文时,该播放列表包含 46 个视频,这些视频以简单易懂的短片形式介绍了数据科学的所有基本概念。
此播放列表中的视频不仅关注数据科学的技术方面。它们还包含书籍、证书和其他免费资源的推荐,供您在数据科学学习过程中使用。
这个播放列表以及 Data Professor 的整个频道的好处在于它是如何活跃的,并且总是更新以跟上该领域的最新进展。
№2:史蒂夫·布伦顿的《数据科学导论》
了解数据科学和机器学习所有基础知识的一个令人惊叹的播放列表是由史蒂夫·布伦顿和他的团队制作的数据科学简介播放列表。Steven Brunton 是西雅图华盛顿大学的机械工程和应用数学副教授以及数据科学研究员。
虽然布伦顿教授是一名学者,但他的视频并不具有学术风格。每个视频不到 10 分钟,只专注于彻底解释数据科学和机器学习的一个方面。
布伦顿教授频道还包括一个奇妙的线性代数播放列表,教授数据科学中使用的基本线性代数知识。
№3: CSE 519 —数据科学基础,作者:
Steven Skiena
这个播放列表包含了史蒂文·索尔·斯基纳在石溪大学教授的数据科学课程。Steven Skiena 是一位杰出的计算机/数据科学教授,也是石溪人工智能研究所的主任。
斯基纳教授有一种非常容易理解的方法来解释复杂的概念,并混合了淡淡的幽默感,以保持轻松。他还非常活跃,对视频讲座中的大多数评论和问题都有回应。
由于 CSE 519 播放列表视频是讲座格式的,它们每个都超过一个小时。他的频道还包括其他重要计算方面的播放列表,如算法分析和编程基础。
№4:freeCodeCamp.org 的数据科学
freeCodeCamp.org 是最著名、设计最精良的学习资源之一,几乎是任何与科技相关的资源。该网站提供了完整的课程,你可以学习技术的所有不同方面,数据科学也不例外。
但是,除了免费代码营的官方方面,他们的 YouTube 频道为他们所有的书面教程提供了许多播放列表。数据科学播放列表包括 10 个独立的视频,有些超过一小时,专注于数据科学的某些方面。
在这些视频中,你会发现一些使用 Python 的视频和一些使用 R 编程语言的视频。除了专注于某些数据科学包的视频,如 PyTorch、Numpy 和 Pandas。
</5-online-data-science-courses-you-can-start-now-748e4a2b5403>
№5:由
Codebasics 为初学者提供的数据科学完整课程
最后但同样重要的是 Codebasics 的数据科学课程播放列表。这个播放列表可能是这个列表中最大的一个,包含了 108 个视频,还有更多视频有待上传。
这个播放列表是一个很好的起点,尤其是如果你是科技领域的新手,以前没有任何知识。该播放列表涵盖了所有基础知识,从编程基础、数学基础、可视化开始,然后是数据科学和机器学习的基础知识。
Codebase 频道还包括侧重于版本控制、数据结构以及如何使用和优化 Jupyter 笔记本环境的播放列表。
外卖食品
YouTube 是最大最好的视频流媒体网站;如果你想学习一项新技能——不管是什么——很可能你会在 YouTube 上找到不止一个视频教程。
因此,很清楚为什么你会认为 YouTube 是你学习各种数据科学方面的主要资源。但是,你应该看哪些视频呢?如果你尝试在 YouTube 上搜索数据科学,你可能会得到来自不同语言(口语和编程语言)的不同内容提供商的数百个(更有可能是数千个)结果!。
</5-data-science-programming-languages-not-including-python-or-r-3ad111134771>
你会发现视频的数量绝对是压倒性的。我写这篇文章的目的是帮助您决定观看哪些视频来开始学习数据科学。我选择这些播放列表是因为它们完整、清晰,对于初学者和那些已经有一定知识的人来说容易理解。
给他们一个尝试,看看哪一个最适合你,坚持用那个。你所需要的就是坚持不懈,不断学习。
帮助我进入数据科学的 5 个 YouTubers
数据专业人士,你应该关注 YouTube 并向其学习
诺德伍德主题公司在 Unsplash 上拍摄的照片
两年前,我开始了我的数据科学之旅。在体育分析领域工作了 4 年后,我决定继续攻读数据科学硕士学位。在我读研期间,我发现自己在互联网上做了大量关于数据科学概念和如何进入该领域的职业建议的研究。本文的目的是介绍一系列真正帮助我成长为数据科学家的数据专家。如果你是数据科学的新手,我强烈建议你关注以下专业人士。
1.肯·吉
我在 LinkedIn 上遇到了 Ken Jee,他的频道确实在职业建议和提高我的技术技能方面帮助了我。我做过的最好的决定之一是参加他的#66daysofdata 挑战。在挑战中,我不仅提高了自己的技术技能,还结识了其他参加挑战的数据专业人士,拓展了自己的人脉。他也有体育分析的背景,这真的促使我追随他。如果你还没有听说过 66 天数据挑战,我强烈建议你查看下面的链接并加入挑战。
2.亚历克斯·弗雷伯格
许多数据科学家都是从数据分析师做起的。亚历克斯是一名数据分析师,如果你想成为一名数据分析师,他可能是最好的选择。SQL 是任何数据科学家都需要掌握的关键技能之一。Alex 教授 SQL 的视频确实帮助我提高了 SQL 技能。除此之外,看他解决 LeetCode 问题真的帮助我更好地理解了如何处理 SQL 问题。参见下面的示例。
3.约书亚·斯塔默
StatQuest 的创始人约书亚·斯塔默(Joshua Starmer)将永远是我复习统计学概念或不同类型的机器学习算法的头号资源。对我来说,他是一个必须跟随的人,因为他有惊人的能力清晰地教授概念。如果你正在学习任何统计学或机器学习课程,如果你对某个特定的概念感到困惑,我强烈建议你观看他的视频。我第一次尝试学习随机森林的时候就被他卖了。看看下面的视频,自己看看他对材料的解释有多好。
4.黄婷婷
在获得整体数据科学职业建议方面,Tina 非常出色。我是通过 Ken Jee 看到她的 YouTube 的。我最喜欢她的一个视频是她谈论让她获得入门级数据科学工作的简历。许多学生或应届毕业生感谢她分享了帮助她进入这个领域的东西。如果你正在写简历,看看下面的视频。该视频帮助我更好地了解了入门级数据科学简历应该是什么样的。
5.艾玛·丁
我在阅读艾玛的鼓舞人心的故事时遇到了她,她讲述了如何获得 4 份数据科学工作,并在被解雇后两个月内将收入翻了一番。我强烈建议你读一读。请参见下面的链接:
我亲自联系了艾玛,只是想听听她是如何做到这一点的。她的 YouTube 频道真的帮我选择了适合我的数据科学职位。除此之外,她关于如何在求职期间管理时间和面试前该做什么的视频确实帮助我制定了一个成功找到工作的战略计划。
最后的话
我希望上面的列表对你的旅程有所帮助。我希望我开始的时候有一个可以追随的人的名单。如果你想起来 YouTube 上还有谁在如何提高技能或职业建议方面帮助过你,请在下面的评论区写下他们的名字。如果你能在任何社交媒体平台上分享这篇文章,我将不胜感激。谢谢,下次再见!✌️
过去两年我被问到的 50 个数据科学面试问题
微软、百事可乐、查尔斯·施瓦布、艺电等公司面试小抄…
技术驱动的数据新时代为数据领域带来了大量机遇。人们一直在面试数据角色。这使得求职竞争非常激烈。在这个挑战全球疫情负面影响的世界里,只有最优秀的人才有机会面试并被录用。在这种情况下,我们必须做好准备。
在过去的两年里,我面试了微软、百事可乐、查尔斯·施瓦布、艺电、World Pay 等公司的业务分析师(2019)、数据工程师(2019)和数据科学家(2020)。
像任何人一样,我在面试招聘经理之前做了很多功课,我得出结论:有几个概念你需要涵盖,做笔记,知道答案,以确保你正确回答关于统计,数据查询,编程和机器学习的问题!
到 2026 年,预计将有 1150 万个新的数据工作岗位(来源:美国劳工统计局)
公司以各种不同的形式进行数据科学面试,包括黑客排名评估、白板问题、产品和指标驱动的电话面试。虽然大多数面试涉及 SQL、机器学习和一些 Python 问题,但肯定有基于场景的问题、软技能测试、编程知识等。
在你参加面试之前,确保你知道-
- 采访的形式
- 该角色的日常职责
- 公司内的职能/部门
- 所需的专业水平
确定工作描述和角色
申请一份新工作时,理解工作描述和角色是至关重要的。这将确保你理解你应该完成的任务和职责,并为你工作的公司增加价值。
工作角色
- 数据科学家—构建客户机器学习模型来推动业务决策
- 机器学习工程师——编写生产级代码,用数据进行预测
- 数据分析师—可视化和描述数据;向企业传达见解
- 数据工程师—存储和维护数据,构建 ETL 管道和数据仓库
工作说明
- 数据收集:收集和测量来自不同来源的数据,并将其存储起来以便有效访问和回答相关问题
- 探索和可视化:探索和揭示趋势、模式、特征和数据点。通过仪表盘可视化、展示和交流见解
- 实验和预测:一切机器学习!
在你开始准备面试之前,确保你知道面试的形式。
- 在线评估:Leetcode、HackerRank、GeeksforGeeks、CodeChef、CodeWars 或其他
- 小组/视频访谈
- 电话筛选
概念很重要,但是基于场景的问题同样重要,它决定了你的角色。招聘人员在寻找你解决问题的能力有多强,或者你在压力下能想出最佳的解决方案。以下是我在过去两年的面试中被问到的 50 多个面试问题!
软技能面试问题
大多数面试都以关于你的个人资料、项目和目标的问题开始。你应该有很好的解释:
- 告诉我你自己和你的背景(很明显)
- 谈谈你在团队中工作的一次经历;如果有冲突,你如何管理团队
- 告诉我们你面临挑战的一次经历,以及你是如何克服的?
- 你什么时候身兼数职了?你能给我们讲讲关键学习吗?
- 当工作进度落后时,你将如何说服他人完成工作?
- 你会如何向外行人解释数据科学?
- 你对未来 5 年有什么看法?
- 你对这份工作有什么期望?
- 你能告诉我你有很多事情要做的时候吗?你是怎么处理的?
- 你如何和一个你不适合的人一起工作?
- 解释你工作中最大的失败。你从这次经历中学到了什么?
SQL 面试问题
- 给定一个数据和场景:您会使用哪种连接?
- 什么是实体和关系?
- 您在查询中使用过规范化吗?
- 你如何使用连接从句?
- 给定一个场景,你会用删除还是丢弃?
- 可以用 SQL 写用户自定义函数吗?
- 你对 NoSQL 了解多少?
- SQL 和 NoSQL 的区别是什么?
- 你能谈谈你使用 SQL 的一次经历吗?
- 你有和 NoSQL 一起工作的经验吗?
- 什么是 OLAP 和 OLTP?可以举例说明吗?
- 你用过存储过程吗?
- 如何匹配 SQL 中的模式/字符?
- 你了解散列表吗?你在哪里使用它?
- 如何衡量查询性能?
Python 的面试问题
- 在 1-10 的范围内,您对 Python 的适应程度如何?
- 如何用 Python 写函数?
- 举几个熊猫的用例,NumPy。
- 你经常使用什么图书馆?
- Python 中的局部和全局变量是什么?
- 提到使用 Python 的五个好处?
- 如何用 python 创建字典?
- 如何在 python 中将一个字符串转换成一个整型?(数据类型转换)
- 你能举例说明几个数据清理的命令吗?
- 如何获取关于数据框的信息?
- 以下代码片段的输出会是什么?[我得到了样本代码]
- 写一个程序来反转一个列表(像这样的小代码片断问题)
机器学习的面试问题
- 如何决定 EDA 要考虑哪些数据属性?
- 你能想到可以使用监督和非监督 ML 算法的问题陈述吗?
- 对于数据可视化,您要做的第一步是什么?
- 给定一个场景,你会优先考虑什么:偏差还是差异?
- 你通常为你的训练、验证和测试集分配多少数据,为什么?
- 能说说你最近做的一个机器学习项目吗?
- 你准备分析数据的方法是什么?
- 如何衡量机器学习模型的有效性?
- 你有使用大数据工具进行机器学习的经验吗?
虽然我面试中的大多数问题都围绕着基本问题,但有很多基于场景的问题,我认为这是 2021 年 ace 面试的关键。除了与微软的一轮白板编码面试,大多数问题都是可控的。
帮助我获得工作机会的秘诀!
- 访问 glassdoor.com,查看该职位常见的面试问题
- 为公司准备一个定制的项目推介,并推动讨论朝着这个方向发展
- 在面试前记住一些场景,以展示你的品质和优势
- 如果你不知道答案,不要道歉:这是你学到的新东西,你渴望学习并与团队一起成长
- 表现出对角色的热情!!
这就是我的博客的结尾。感谢您的阅读!我希望你喜欢这篇文章。请务必让我知道什么在采访中对您有所帮助,以及您在数据之旅中遇到了什么问题?
Rashi 是芝加哥伊利诺伊大学的一名研究生。她喜欢将数据可视化,并创造有见地的故事。当不赶着赶学校的最后期限时,她喜欢喝一杯好咖啡,写关于数据的博客…