5 个人工智能误解被揭穿
戴维·马托斯的照片。
人工智能可能是一个非常令人困惑的话题
问一百个人他们认为人工智能是什么,你可能会得到一百个不同的答案。这是一个宽泛的术语,有几乎无限多的解释和同样多的误解。这正是为什么我的客户会议、研讨会和人工智能讲座不可避免地会有一个两分钟的环节,我会问观众他们如何看待人工智能。毫无疑问,在任何关于人工智能的讨论开始之前,总有一些误解必须得到澄清。
一些人通过反乌托邦的好莱坞电影接触到了人工智能,一些人通过哲学播客,一些人通过深度学习教程接触到了人工智能。事实上,人工智能世界有许多切入点。人们的观点有很大的不同,这取决于他们进入人工智能世界的入口是什么。
少数误解占据了主导地位。这是我最常遇到的关于人工智能的误解,甚至来自技术专家。
人工智能和机器学习是一回事
让我们从最基本的开始。人工智能和机器学习不是同义词。互换使用这两个术语会导致交流错误。
人工智能这个术语没有一致认可的定义,所以我们来分解一下。这个术语由两部分组成:人工和智能。
人造是一个你可能不熟悉的术语,但它非常简单。它是指由人类创造的物体,与自然界中自然生长的物体相对。因此,你穿的衣服,你睡的床,当然,你用来看迷因的手机都是人造的。
那么,智力是一个几乎每个人都熟悉的术语,然而矛盾的是没有人能真正定义它。智力到底是什么?许多比我聪明得多的哲学家和科学家都问过这个问题。本质上,你可以说智力是指感知和理解周围环境的能力。
那人工智能是什么呢?人工智能这一术语一定仅仅意味着某些人造物体具有某种形式的理解能力。
也就是说,你可以将人工智能称为一个巨大的技术集合,它为人工制品(实际上是计算机)提供了理解的能力。AI 是一个宽泛的术语,包含许多技术,其中之一是机器学习。
机器学习是一种用来让计算机自己学习东西的技术,有时在人类的监督下,有时自主学习。
当一个人工智能在 1997 年击败国际象棋世界冠军时,这个人工智能并不是用机器学习开发的。相反,它是根据人类定义的规则运行的:在任何情况下,如果你愿意,都可以列出最佳可能的行动。然而,我认为这是人工智能,因为击败人类玩家的智能是人工智能的一种形式。
“人工智能是一个宽泛的术语,包含许多技术,其中之一是机器学习.”
那么,按照这种逻辑,当打印机告诉它的主人它没有墨水了的时候,难道不能认为它在使用人工智能吗?是的,绝对的。不是机器学习,不是自学,也不是特别聪明。但是机器自己清楚地观察、理解和传达它没有墨水了。
AI 和人工通用智能是一回事
这种误解在非技术观众中普遍存在,尤其是那些只通过小说作品接触过人工智能的人。
人工通用智能(AGI)也许是人工智能的终极水平。AGI 是一种人工智能,它可以完成人类可以完成的任何任务,至少和人类一样好。AGI 是小说作品中一个受欢迎的主题。在《终结者》(1984)、《我》、《机器人》(2004)、《她》(2013)等好莱坞电影中看到的人工智能都是 AGI 的例子。
需要澄清的是:AGI 并不存在。当今世界上存在的所有人工智能的例子都是被制造来执行一个特定任务的人工智能(这些人工智能有时被称为模块化人工智能或狭义人工智能)。当企业和政府实施人工智能解决方案时,他们并没有实施终结者式的超级智能生物。他们正在实施为执行一项特定任务而构建的模块化技术。
由马库斯·斯皮斯克拍摄。
AI 仅用于自动化
另一个常见的误解是,人工智能的唯一用例是自动化。事实上,人工智能可以用于两个主要目的:自动化和增强。
- 自动化是将人类从一项活动中移除。
- 增强是在一项活动中赋予人类权力。
自动化和增强是相反的极端,很少有人工智能解决方案是完全自动化或完全增强的。自动化和增强是一个包含四种策略的规模。
- 效率策略,通过自动化优化活动。
- 有效性策略,在这种策略中,活动是无缝的,使得沟通更加容易。
- 专家战略,人工智能赋予决策能力。
- 创新战略,人工智能使创造力成为可能。
增强人工智能的例子包括帮助医生诊断病人、帮助财务顾问做出货币决策或帮助产品开发人员发明新产品的机器。
人工智能是最近发明的
信不信由你,给物体带来智能的想法,今天被称为人工智能,已经存在至少 2000 年了。很久以前,在古希腊,伟大的哲学家们就以文字的形式展示了自动推理。然而,尽管他们可以对这个主题进行几天的理论化,他们却没有办法实现它。
自从有了计算机,人工智能的实际应用就一直在发展。你知道吗,虽然自动驾驶汽车近年来已经成为热门话题,但它是从 20 世纪 20 年代开始研究的。
人工智能近年来成为热门话题有三个原因:
- 用户生成的数据激增。
- 计算机变得更加强大,价格也更加低廉。
- 算法研究取得突破。
人工智能比以往任何时候都大,但这不是一个新话题。
人工通用智能遥遥无期(或者永远不会发生)
正如我前面提到的,人工通用智能(AGI)是人工智能的一种理论形式,它可以做人类可以做的一切事情,或者一样好,甚至更好。当然,AGI 并不存在。
很多人很快就认为 AGI 是科幻小说中的胡说八道。一些人自信地认为 AGI 永远不会发生;其他人则认为 AGI 在几个世纪之外。事实很简单,没有人知道。有些人认为我们将在几十年内发现 AGI,有些人认为需要几个世纪,有些人认为我们永远不会。但是研究人员认真对待这个话题。
如果我们的星球是一年前创造出来的,人类在星球上已经存在了十分钟,工业时代也就两秒钟前才开始。互联网可能只存在了几毫秒。在这么短的时间内,我们所经历的技术进步是惊人的。我个人认为有一天我们可能会发明 AGI,当那一天到来时,我们需要做好准备。这也是生命未来研究所的使命,它非常认真地对待 AGI 问题。
感谢阅读!如果你喜欢这篇文章,你可能会喜欢我的关于人工智能的书:
5 个惊人的 NLP 用例添加到您的投资组合中
使用真实数据集
由 Unsplash 上的absolute vision拍摄
为什么是自然语言处理(NLP)?
在进入主题之前,为什么在你的作品集里有一个 NLP 项目很重要?这对你的职业生涯有什么帮助?
生成的文本数据量正以前所未有的速度增长。根据 IDC 的预测,到 2025 年,大约 80%的全球数据将是非结构化的。这将是零售、科技、医疗保健等行业的模式。
过去,组织一直依赖结构化数据来获取见解,而非结构化数据的潜力尚未得到挖掘。但是现在,组织已经开始意识到非结构化数据的价值,并开始从各种来源捕获非结构化数据,如内部支持中心电话记录、社交媒体上的提及、新闻、博客等。
随着技术的进步,以下是一些组织正在寻求的基于 NLP 的用例,
- 风险感知
- 竞争分析
- 聊天机器人
- 市场调查
在这篇文章中,我将分享一些真实世界数据集上的有趣用例,这些用例可用于学习 NLP 概念和向您的投资组合添加新的 NLP 项目。
1.分析推文对比特币价格的影响
最近,我们看到了推文如何推动加密货币的价格。在 Elon Musk 的一系列推文引发推文风暴后,dogecoin 的价格大幅飙升。Twitter 无疑被视为突发新闻的良好来源。如果一个人能够尽早抓住趋势,那么这肯定可以货币化*。(*请注意,这仍有风险)
https://www.kaggle.com/alaix14/bitcoin-tweets-20160101-to-20190329
这是一个 kaggle 数据集,从 2016 年到 2019 年,它有 1600 万条与比特币相关的推文。这个数据集可以与比特币价格结合起来,以检查两者之间的模式和任何关系。
可以在该数据集上实现的一些用例有:
- 寻找推文数量和比特币价格之间的模式
- 使用推文数量来预测比特币价格的每日走势
- 提取情感并检查它是否有助于改进预测
- 为拥有大量追随者的个人资料增加更高的权重,并做出预测
- 识别负面情绪的影响
- 推特风暴、其规模以及对比特币价格影响的持续时间
Twitter 数据不是一个干净的数据源,它通常需要处理,因为它会包含特殊字符和链接。这个项目将帮助你更好地理解 tweet 数据的处理。这个项目可以很容易地超过一个投资组合,这可以很好地作为一个赚钱的机会。
亚马逊评论数据集上的情感分析
亚马逊评论数据集有大约 30 种不同产品类别的客户评论。可以通过下面的链接下载和分析,
这一最新的亚马逊评论数据集于 2018 年发布,包含 1996 年至 2018 年发布的 2.331 亿条客户评论。它包括详细信息,如评论者 id、产品 id、评论文本、评论者姓名、评论的有用性、产品评级和时间戳。
该数据集还包括元数据,用于捕获一些有用的信息,如产品名称、描述、功能、产品价格、相关/类似产品以及产品技术细节。
上面的数据集链接还包含一些 python 脚本,用于读取数据、将其转换为数据框并计算平均评级
下面是可以在这个数据集上执行的一些分析,可以非常有助于您学习 NLP 概念并构建一个良好的基于 NLP 的投资组合。
- 亚马逊上不同产品类别的平均情绪得分
- 根据客户评论的观点,确定每个产品类别中的前 100 个产品
- 平均情绪得分、产品价格和产品评级之间的任何相关性
- 正面评价和产品销售排名之间的关系
该数据集的大小可能是压倒性的,因此原始数据集的替代子集也可在同一链接上获得,该替代子集小得多,并且可用于实验和训练目的。
对堆栈溢出问题进行分类
这个数据集从 2016 年到 2020 年有 60,000 个堆栈溢出帖子,它们被分为三类,
- 优质岗位
- 通过社区编辑打开的低质量帖子
- 未经任何编辑就关闭的低质量帖子
https://www.kaggle.com/imoore/60k-stack-overflow-questions-with-quality-rate
文本分类是一种常见的 NLP 用例,在组织中广泛实施。举个例子,
- 电信公司可以使用文本分类将他们的客户支持电话记录分类为不同的问题类别,然后查看细节以获得见解
- 电子商务公司可以利用这一点,根据内容将社交媒体数据分类到他们的产品类别中
- 更传统的用例,将文本分类为正面/负面/中性情绪
因此,解决这个问题不仅会给你的投资组合增加一个项目,还能帮助你了解整个行业中文本分类用例所涉及的方法。
有助于提高 kaggle 文本分类问题的准确性的一些特征是,
- 帖子的字数
- 基于简单或复杂单词使用的帖子的复杂性分数
- 文本矢量化并将其用作一项功能
这里是到 kaggle 笔记本的链接,它有一个不同算法的简单实现来解决这个分类问题。
识别讽刺的句子
识别讽刺对人类来说很容易,孩子们在幼儿园早期就开始理解和使用讽刺。但是对于机器来说,训练它们学会讽刺还是很困难的。理解讽刺对于了解真实的语境是很重要的。
下面的 kaggle 数据集是一个高质量的数据集,用于构建识别讽刺的模型。到数据集的链接是,
https://www.kaggle.com/rmisra/news-headlines-dataset-for-sarcasm-detection
大多数情况下,我们试图在 Twitter 数据上识别讽刺,但很难获得高质量的数据集,讽刺性的推文大多是对推文的回复,因此没有上下文或原始推文,很难识别讽刺。
这个 kaggle 数据集中的讽刺文本基于 TheOnion 的标题,非讽刺文本来自《赫芬顿邮报》。从这两个来源提取的标题都是专业人士写的,因此非常干净,不需要太多处理
建立一个 NLP 模型来识别讽刺性的标题是很好的,使用这个数据集作为训练数据集并建立一个 NLP 模型来识别 Twitter 数据上的讽刺会更好。
假新闻预测
每天都会产生大量的新闻内容,这些内容中有很大一部分是虚假的,随着社交媒体被广泛用于传播新闻内容,任何虚假新闻都很容易快速传播。预测和阻止假新闻的传播非常具有挑战性,但却至关重要。
在像 covid 这样的疫情情况下,我们发现许多关于治疗的误导性消息正在传播,这些治疗可能会危及生命,并可能对社会造成更大的危害。
同样,组织需要检查假新闻,因为这可能会损害他们的声誉。下面的 kaggle 数据集有大约 20,000 条真实和虚假的新闻,这可以用来建立一个预测假新闻的算法。
https://www.kaggle.com/clmentbisaillon/fake-and-real-news-dataset?select=Fake.csv
结束语
NLP 模型有助于从大型非结构化文本数据中提取洞察力。以前,组织依赖结构化数据来获得洞察力,大多数文本数据被直接移动到归档中,从未仔细查看过。但是现在,随着技术的进步,处理文本数据变得更加容易,组织也开始意识到分析文本数据的好处。因此,在你的投资组合中有一个基于 NLP 的项目肯定会对你的职业生涯有更大的帮助。下面是一个 YouTube 视频的链接,我在那里讨论了这些用例,
保持联系
- 如果你喜欢这篇文章,并对类似的文章感兴趣,在 Medium 上关注我
- 我在我的 YouTube 频道上教授和谈论各种数据科学主题。在这里订阅我的频道。
- 在这里注册我的电子邮件列表获取更多数据科学技巧,并与我的工作保持联系
你可能不知道的 5 个令人惊奇的熊猫特征
解释强大的熊猫功能,以提高您的数据分析工作流程。
当在你的数据科学或数据分析项目中使用 pandas 时,你有时会发现你希望以前就知道的强大的新功能。以下是我个人的前 5 名。
1.网页抓取
熊猫有一个强大的方法read_html()
从网页上抓取数据表。
假设我们需要国民总收入的数据。它可以在维基百科的数据表中找到。
来源:维基百科
使用 pandas 阅读来自维基百科的所有 HTML 表格非常简单。
import pandas as pd
url = '[https://en.wikipedia.org/wiki/Gross_national_income'](https://en.wikipedia.org/wiki/Gross_national_income')
tables = pd.read_html(url)
结果是一列tables
(即数据帧)。在这个例子中,我们感兴趣的表是第四个表(注意:Python 确实使用从零开始的索引)。
tables[3]
作者图片
需要时,您可以做一些调整。
df = tables[3].droplevel(0, axis=1)\
.rename(columns={'No.':'No', 'GDP[10]':'GDP'})\
.set_index('No')
作者图片
2.激增
使用explode
方法,您可以将列表中的每个元素转换为一行,复制索引值。
cars = pd.DataFrame({
'country': ['Germany', 'Japan', 'USA'],
'brand': [['Mercedes', 'BMW', 'Audi', 'Volkswagen'],
['Toyota', 'Nissan', 'Honda'],
['Ford', 'Chrysler', 'Jeep', 'Dodge', 'GMC']
]
})
作者图片
cars.explode('brand')
3.偏移、差异和百分比变化
这些功能最好用例子来解释。我们首先生成一个包含日期和值的数据帧。
import pandas as pd
import randomrandom.seed(1)n = 14 # two weeks
df = pd.DataFrame(
{'value': random.sample(range(10, 30), n)},
index = pd.date_range("2021-01-01", periods=n, freq='D')
)
作者图片
现在让我们添加一些列来显示shift
、diff
和pct_change
方法的值。
df['shift()'] = df.value.shift() # value previous day
df['shift(7)'] = df.value.shift(7) # value 7 days ago
df['shift(-1)'] = df.value.shift(-1) # value next daydf['diff()'] = df.value.diff() # difference previous day
df['diff(7)'] = df.value.diff(7) # difference 7 days ago
df['diff(-1)'] = df.value.diff(-1) # difference next daydf['pct_change()'] = df.value.pct_change() # pct change previous day
df['pct_change(7)'] = df.value.pct_change(7) # pct change 7 days ago
df['pct_change(-1)'] = df.value.pct_change(-1) # pct change next day
作者图片
4.比较运算符的包装
Pandas 有一些超级方便的比较运算符的简短包装器,如eq
(等于)ne
(不等于)le
(小于等于)lt
(小于)、ge
(大于等于)和gt
(大于)。它们相当于==
、!=
、<=
、<
、>=
和>
。这里有一些例子。
import pandas as pd
import randomrandom.seed(102)df = pd.DataFrame(
{'A': random.choices(range(25), k=10),
'B': random.choices(range(25), k=10),
'C': random.choices(range(25), k=10),
'D': random.choices(range(25), k=10),
'E': random.choices(range(25), k=10)}
)
作者图片
df.eq(15)
作者图片
s = pd.Series([0, 5, 10, 15, 20], index=['A', 'B', 'C', 'D', 'E'])
df.ge(s)
作者图片
5.剪辑和评估
使用clip()
,您可以调整输入阈值的值。它将边界外的值分配给边界值。方法eval
用于评估描述 DataFrame 列操作的字符串。
df = pd.DataFrame({'A': range(1, 6), 'B': range(10, 60, 10)})
作者图片
df.clip(lower=2, upper = 40)
作者图片
df.clip(lower=2, upper=40).eval('C = A + B')
作者图片
最后的想法
Pandas 是一个非常棒的数据分析和数据科学图书馆。它有大量的功能。我强烈建议花些时间来研究一下文档,这样你就不会错过任何一个强大的功能。
你最喜欢的熊猫功能是什么?让我知道你的想法。
每个数据科学家都应该知道的 5 种异常检测算法
异常检测算法在异常检测中的比较
图片来自 Pixabay
真实世界的数据集通常包含异常或离群数据点。异常的原因可能是数据损坏、实验或人为错误。异常的存在可能会影响模型的性能,因此为了训练稳健的数据科学模型,数据集应该没有异常。
在本文中,我们将讨论 5 种这样的异常检测技术,并针对随机数据样本比较它们的性能。
什么是异常?
异常是数据集中突出于其他数据点的数据点,并且不确认数据中的正常行为。这些数据点或观察结果偏离了数据集的正常行为模式。
异常检测是一种无监督的数据处理技术,用于从数据集中检测异常。异常可以大致分为不同的类别:
- **异常值:**在数据收集中以非系统方式出现的短/小异常模式。
- **事件变化:**从之前的正常行为有系统的或突然的变化。
- **漂移:**数据中缓慢、无方向性的长期变化。
异常检测对于检测欺诈交易、疾病检测或处理任何具有高级别不平衡的案例研究非常有用。异常检测技术可用于构建更强大的数据科学模型。
如何检测异常?
可以使用简单的统计技术(如平均值、中值、分位数)来检测数据集中的单变量异常特征值。各种数据可视化和探索性数据分析技术也可用于检测异常。
在本文中,我们将讨论一些无监督的机器学习算法来检测异常,并进一步比较它们在随机样本数据集上的性能。
**Checklist:
1\. Isolation Forest
2\. Local Outlier Factor
3\. Robust Covariance
4\. One-Class SVM
5\. One-Class SVM (SGD)**
隔离林:
隔离森林是一种无监督的异常检测算法,它使用随机森林算法(决策树)来检测数据集中的异常值。该算法试图分割或划分数据点,使每个观察结果与其他观察结果隔离开来。
通常,异常远离数据点的群集,因此与常规数据点相比,隔离异常更容易。
(图片由作者提供),异常和常规数据点的划分
从上述图像中,可以观察到常规数据点比异常数据点需要相对更多的分区。
计算所有数据点的异常分数,并且异常分数>阈值的点可以被认为是异常。
Scikit-learn 实现隔离森林算法
局部异常因素:
局部异常因子是另一种异常检测技术,它考虑数据点的密度来决定一个点是否是异常。局部异常值因子计算一个称为异常值的异常值,用于测量该点相对于周围邻域的孤立程度。它考虑了局部和全局密度来计算异常分数。
(来源),局部异常值因子公式
Scikit-learn 实现局部异常因子
稳健协方差:
对于高斯无关特征,可以采用简单的统计技术来检测数据集中的异常。对于高斯/正态分布,远离第三偏差的数据点可视为异常。
对于本质上具有所有高斯特征的数据集,可以通过定义覆盖大部分规则数据点的椭圆超球来概括统计方法,并且远离超球的数据点可以被视为异常。
Scikit-learn 使用椭圆包络实现鲁棒协方差
一类 SVM:
常规的 SVM 算法试图找到一个超平面,该超平面最好地分离这两类数据点。对于一类 SVM,我们有一类数据点,任务是预测一个将数据点簇从异常中分离出来的超球。
Scikit-learn 实现一类 SVM
一级 SVM(新加坡元):
带有 SGD 的一类 SVM 使用随机梯度下降求解线性一类 SVM。该实现旨在与内核近似技术一起使用,以获得类似于默认使用高斯内核的[**sklearn.svm.OneClassSVM**](https://scikit-learn.org/stable/modules/generated/sklearn.svm.OneClassSVM.html#sklearn.svm.OneClassSVM)
的结果。
sci kit-学习用 SGD 实现一级 SVM
基准测试:
在两组样本数据集(行 1 和行 2)上训练 5 个异常检测。
(图片由作者提供),玩具数据集上 5 种异常检测算法的性能
一类 SVM 往往有点过度拟合,而其他算法在样本数据集上表现良好。
结论:
异常检测算法对于欺诈检测或疾病检测案例研究非常有用,在这些案例研究中,目标类别的分布非常不平衡。异常检测算法还通过从训练样本中移除异常来进一步改善模型的性能。
除了上面讨论的机器学习算法,数据科学家总是可以采用先进的统计技术来处理异常。
参考资料:
[1] Scikit-learn 文档:https://sci kit-learn . org/stable/auto _ examples/miscellaneous/plot _ anomaly _ comparison . html
喜欢这篇文章吗?成为 中等会员 继续无限制学习。如果你使用下面的链接,我会收到你的一小部分会员费,不需要你额外付费。
https://satyam-kumar.medium.com/membership
感谢您的阅读
5 个可怕的数字功能,可以在紧要关头拯救你
避免被 5 个简单的功能困住
JESHOOTS.COM在 Unsplash 上拍照
您的旅程概述
搭建舞台
用 Python 做数据科学时,包 NumPy 无处不在。无论你是用 Scikit-Learn 开发机器学习模型,还是用 Matplotlib 绘图,你的代码中肯定会有一些 NumPy 数组。
当我开始学习 Python 中的数据科学时,我对 NumPy 能做什么知之甚少。这些年来,我提高了我的数字技能,并因此成为一名更好的数据科学家。
擅长操作 NumPy 数组可以挽救你的生命…或者至少一个小时令人沮丧的搜索。当事情变得困难时,我在这里给你的五个数字函数可以帮助你🔥
在这篇博文中,我假设您已经安装了 NumPy,并且已经使用别名np
导入了 NumPy:
import numpy as np
我建议在阅读这篇博客之前先看看 NumPy。如果你对 NumPy 完全陌生,那么你可以查看一下 NumPy 的初学者指南或者 NumPy 上的这个 YouTube 视频系列。
1 —快速过滤
您可以使用where
函数根据条件快速过滤数组。假设您有一个表示为一维数组的音频信号:
# Audio Signal (in Hz)
signal = np.array([23, 50, 900, 12, 1100, 10, 2746, 9, 8])
假设您想要删除signal
中所有 Hz 小于 20 的内容。要在 NumPy 中有效地做到这一点,您可以编写:
# Filter the signal
filtered_signal = np.where(signal >= 20, signal, 0)# Print out the result
print(filtered_signal)
>>> np.array([23, 50, 900, 0, 1100, 0, 2746, 0, 0])
where
函数有三个参数:
- 第一个参数(在我们的例子中是
signal >= 20
)给出了您想要用于过滤的条件。 - 第二个参数(在我们的例子中是
signal
)指定了当条件满足时你希望发生什么。 - 第三个参数(在我们的例子中是
0
)指定了当条件不满足时您希望发生什么。
作为第二个例子,假设你有一个数组high-pitch
指示声音的音高是否应该提高:
# Audio Signal (in Hz)
signal = np.array([23, 50, 900, 760, 12])# Rasing pitch
high_pitch = np.array([True, False, True, True, False])
每当相应的high-pitch
变量这么说时,要提高signal
的音调,您可以简单地写:
# Creating a high-pitch signal
high_pitch_signal = np.where(high_pitch, signal + 1000, signal)# Printing out the result
print(high_pitch_signal)
>>> np.array([1023, 50, 1900, 1760, 12])
那很容易😃
2——重塑自我,摆脱困境
通常,一个数组的元素是正确的,但形式是错误的。更具体地说,假设您有以下一维数组:
my_array = np.array([5, 3, 17, 4, 3])print(my_array.shape)
>>> (5,)
这里你可以看到这个数组是一维的。您想将my_array
输入到另一个需要二维输入的函数中吗?在 Scikit-Learn 这样的库中,这种情况经常发生。为此,您可以使用reshape
功能:
my_array = np.array([5, 3, 17, 4, 3]).reshape(5, 1)print(my_array.shape)
>>> (5, 1)
现在my_array
是恰当的二维。你可以把my_array
想象成一个五行单列的矩阵。
如果你想回到一维,那么你可以写:
my_array = my_array.reshape(5)print(my_array.shape)
>>> (5,)
**专业提示:**简单来说,你可以使用 NumPy 函数
squeeze
删除所有长度为 1 的维度。因此,你可以使用squeeze
函数代替上面的reshape
函数。
3-重组你的形状
你有时需要重组你已经拥有的维度。一个例子可以说明这一点:
假设您将一个大小为 1280x720(这是 YouTube 缩略图的大小)的 RGB 图像表示为一个名为my_image
的 NumPy 数组。你的图像有形状(720, 1280, 3)
。数字 3 来源于这样一个事实,即有 3 个颜色通道:红色、绿色和蓝色。
如何重新排列my_image
以使 RGB 通道填充第一维?您可以通过moveaxis
功能轻松实现:
restructured = np.moveaxis(my_image, [0, 1, 2], [2, 0, 1])print(restrctured.shape)
>>> (3, 720, 1280)
通过这个简单的命令,您已经重构了图像。moveaxis
中的两个列表指定了轴的源位置和目的位置。
Pro 提示: NumPy 还有其他函数,比如
swapaxes
和transpose
,它们也处理数组的重构。moveaxis
函数是最通用的,也是我用得最多的一个。
为什么重塑和重组不一样?
照片由普里西拉·杜·普里兹在 Unsplash 拍摄
很多人认为用reshape
功能整形和用moveaxis
功能重组是一样的。然而,它们以不同的方式工作😦
最好的方法是用一个例子:假设你有矩阵:
matrix = np.array([[1, 2], [3, 4], [5, 6]])# The matrix looks like this:
1 2
3 4
5 6
如果您使用moveaxis
功能切换两个轴,那么您会得到:
restructured_matrix = np.moveaxis(matrix, [0, 1], [1, 0])# The restructured matrix looks like this:
1 3 5
2 4 6
然而,如果您使用reshape
函数,那么您会得到:
reshaped_matrix = matrix.reshape(2, 3)# The reshaped matrix looks like this:
1 2 3
4 5 6
reshape
函数只是按行处理,并在适当的时候生成新行。
4 —寻找独特的价值
unique
函数是一个很好的实用函数,用于查找数组的唯一元素。假设您有一个数组,代表从民意调查中抽取的人们最喜欢的城市:
# Favorite cities
cities = np.array(["Paris", "London", "Vienna", "Paris", "Oslo", "London", "Paris"])
然后您可以使用unique
函数来获取数组cities
中的唯一值:
unique_cities = np.unique(cities)print(unique_cities)
>>> ['London' 'Oslo' 'Paris' 'Vienna']
请注意,独特的城市不一定按照它们最初出现的顺序排列(例如,奥斯陆在巴黎之前)。
有了民调,画柱状图真的很常见。在这些图表中,类别是投票选项,而条形的高度代表每个选项获得的票数。要获得这些信息,您可以使用可选参数return_counts
,如下所示:
unique_cities, counts = np.unique(cities, return_counts=True)print(unique_cities)
>>> ['London' 'Oslo' 'Paris' 'Vienna']print(counts)
>>> [2 1 3 1]
unique
函数可以让你避免编写许多烦人的循环😍
5-组合数组
有时,您会同时使用许多阵列。那么将阵列组合成单个“主”阵列通常是方便的。在 NumPy 中使用concatenate
函数很容易做到这一点。
假设您有两个一维数组:
array1 = np.arange(10)
array2 = np.arange(10, 20)
然后您可以用concatenate
将它们组合成一个更长的一维数组:
# Need to put the arrays into a tuple
long_array = np.concatenate((array1, array2))print(long_array)
>>> [0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]
组合我们的工具
如果您想将array1
和array2
堆叠在彼此的顶部会怎么样?因此,您希望创建一个二维向量,如下所示:
[[ 0 1 2 3 4 5 6 7 8 9]
[10 11 12 13 14 15 16 17 18 19]]
你可以先用reshape
函数将array1
和array2
整形为二维数组:
array1 = array1.reshape(10, 1)
array2 = array2.reshape(10, 1)
现在您可以使用concatenate
函数中可选的axis
参数来正确组合它们:
stacked_array = np.concatenate((array1, array2), axis=1)print(stacked_array)
>>>
[[ 0 10]
[ 1 11]
[ 2 12]
[ 3 13]
[ 4 14]
[ 5 15]
[ 6 16]
[ 7 17]
[ 8 18]
[ 9 19]]
差不多了…现在您可以使用moveaxis
功能来完成工作:
stacked_array = np.moveaxis(stacked_array, [0, 1], [1, 0])print(stacked_array)
>>>
[[ 0 1 2 3 4 5 6 7 8 9]
[10 11 12 13 14 15 16 17 18 19]]
照片由 Unsplash 上的 Japheth 桅杆拍摄
厉害!我希望这个例子向您展示了您刚刚学到的一些不同的工具是如何组合在一起的。
包扎
现在,您应该对在一些棘手的情况下使用 NumPy 感到满意了。如果您需要了解更多关于 NumPy 的信息,那么请查看 NumPy 文档。
**喜欢我写的?**查看我的博客文章类型提示、黑色格式、Python 中的下划线和 5 字典提示了解更多 Python 内容。如果你对数据科学、编程或任何介于两者之间的东西感兴趣,那么请随意在 LinkedIn 上加我,并向✋问好
朱莉娅语言的 5 大优点
在我看来,Julia 编程语言的 5 大特点让它变得非常棒。
介绍
我使用(并称赞)Julia 编程语言已经有年了。到今天为止,我已经在 Medium 上写了 346 篇文章,这些文章都是从一篇关于 Julia 语言的文章开始的。在那篇文章中,我谈到了数据科学家在学习 Julia 编程语言之前可能想知道的一些事情。如果你想读这篇文章,你可以在这里找到它:
在我使用 Julia 的经历中,我相信在我使用 Julia 编写的所有模块、项目和研究之后,有很多功能我都觉得非常方便。今天我想展示一些 Julia 语言的很酷的特性,为什么我认为这些特性很棒。在某些情况下,我甚至会提供一些这种语言派上用场的真实例子,然后将它与数据科学和软件工程领域的其他语言进行比较。这将有助于我们更好地理解为什么这是一个伟大的特性,如何使用它,以及与 Julia 相比,这个行业处于什么位置。
就我对这种语言的主观看法而言,我觉得它至少在数据科学领域有很大的发展潜力。让我们详细介绍一下朱莉娅的一些优秀之处,以及它们为什么如此优秀。
№1:语言本身就是书写的。
如果我们参考 Julia Github 库,我们可以看到一个非常有趣的用于 Julia 核心的语言平衡。
(图片由作者提供)
Julia 编程语言是用 69%的 Julia 本身编写的!与大多数其他编程语言相比,这提供了许多优势,因为有些是用 C 或汇编语言编写的,而且通常语言的实际基础几乎不是用语言的实际语法编写的。这意味着像我这样的语言最终用户的一些不同的事情。
- 研究 Julia 中可能没有被很好地记录的部分的实际源代码是非常容易的。
- 如果有人提议对语言进行修改,但对 C、C++或 LLVM 编译器库一无所知,他们仍然可以对语言做出贡献。
- 更疯狂的是,人们甚至可以编写自己的语言版本,用它来代替核心语言。
对于第一点,我一直在开发一个叫做 Jockey.jl 的 Julia 包,Jockey.jl 是我正在开发的 Julia 编程语言的笔记本服务器会话。然而,我设计这个包的初衷是将笔记本放入终端。我只是想,考虑到朱莉娅·REPL 实际上是多么令人敬畏,也许可以在 REPL 的上半部分开一个笔记本会议,然后在它下面开一个常规的朱莉娅·REPL 会议。
当然,这种工作需要我们了解朱莉娅·REPL 的内部结构,以便改变终端的行为。然而,问题是这种语言在基础上没有任何明确的文档。终端模块。你可以在这里查看文档 markdown 文件,它确实很好地实现了 Github 风格的 markdown:
https://github.com/JuliaLang/julia/blob/master/stdlib/REPL/docs/src/index.md
大部分文档是为最终用户准备的,我想这是很重要的,因为我认为人们通常会关心如何使用 REPL,改变按键绑定等,而不是使用软件包来改变终端的功能。幸运的是,因为我能够浏览 Terminals.jl、LineEdit.jl 和 REPL.jl 的源代码,所以我能够获得这个包的一个简单的、有很多错误的版本,并且发布了那个特性。虽然这种使用方式非常酷,但我最终还是放弃了笔记本电脑的这种方式,因为我发现使用起来很麻烦,因为终端和终端的光标以及底部的 REPL 实在是太难管理了。
很酷的是,即使我不知道这种语言的内部,也没有真正研究过这种语言,我仍然能够进入这个包并阅读所有的源代码。即使我除了朱莉娅之外不知道其他语言,情况也是如此。
№2:构造函数中的多重分派
对于 Julia 编程语言来说,多重调度是一个非常明显的优点。Julia 的核心范式围绕着这个多态的概念。也就是说,虽然多重分派在其他编程语言中肯定是可用的,但我真的相信 Julia 编程语言已经完善了多重分派的概念。我在这篇旧文章中详细解释了我为什么这么想:
话虽如此,我想我已经谈了很多关于多重分派的问题,尽管在我看来这是一种很好的编程方式,但我认为在它上面白费力气可能不是最佳的。然而,许多没有使用过 Julia 或者不熟悉 Julia 的人并没有意识到如何通过多重调度来使用构造函数,从而产生一些令人难以置信的结果。考虑以下构造函数:
struct NormalDist <: Distribution
σ::Float64
μ::Float64
N::Int64
end
这是一个常规的构造函数,对注册到 Julia 中的该构造函数的实际调用如下所示:
NormalDist(::Float64, ::Float64, ::Int64)
如果我们用这些值调用分布,我们将得到一个新的 NormalDist 类型的返回。然而,让某人计算标准偏差、平均值,并将观察值的数量放入他们自己的计算机中,这似乎并不是最佳的选择,通常也不是像这样的正态分布类型的工作方式。也就是说,我们可以使用多重分派来编写这个调用的新版本,它将通过构建内部构造函数来调用一个函数:
struct NormalDist <: Distribution
σ::Float64
μ::Float64
N::Int64 function NormalDist(x::Array) N = length(x)
σ = std(x)
μ = mean(x)
new(σ, μ, N, cdf, apply)
end
end
现在我们有两个注册的调用,一个是对构造函数的调用,一个是对内部构造函数的调用,这个函数将返回我们构造函数的新版本,我现在称之为外部构造函数。现在我们有两个调用,一个是之前的常规构造函数,
NormalDist(::Float64, ::Float64, ::Int64)
另一个是我们的新功能:
NormalDist(::Array)
无论何时使用这个函数,另一端的程序员打算调用什么都不重要。如果他们碰巧有标准差、均值和 N,并且提供了这些参数,那么我们将得到类型。如果它们不传递,而只传递数组,那么它们将获得构造函数。我们还可以构建无限个(除了硬件限制之外)内部构造函数,以使我们的构造函数拥有我们可能需要的所有调用。
说到 Julia,最明显的比较总是 Python。尽管在范例和语法上 Julia 略有不同,但这两种语言有相似的市场定位,也许还有相似的目标。在这个正态分布的 Python 版本中,我们改为定义类型,然后与之等价的是我们的 init()函数。
class NormalDist:
def __init__(self, x):
self.N = length(x)
self.σ = std(x)
self.μ = mean(x)
由于我们必须对提供给初始化的东西进行断言,我们会损失这个函数的性能。我们也无法针对最终用户可能想要使用的不同类型进行无限次数的调用。
我们也可以通过内部构造函数传递我们甚至不知道是什么类型的函数和类型。我有一个视频来自于Julia 综合教程 ,它详细介绍了构造函数,你可以通过 ctrl+点击这个文本来观看。这可能会提供更多关于 Julia 中构造函数的信息以及所有的细节,如果你有兴趣学习 Julia,这个系列教程可能是一个很好的起点!
№3: JIT
现在让我们来谈谈真正的 Julia 编译器,以及它的速度。我必须承认——基准测试编程语言有很多细节,坦率地说,比较这些编程语言的基准存在一些根本性的问题。也就是说,我从来不认为基准测试是编程语言速度的终极目标,因为我确信在很多情况下,不同的语言在某些操作上可能会更快。尽管如此,我们仍然可以从基准测试中观察到,Julia 显然是一种相当快的语言。
我必须承认,不可能知道这个 JIT 负责多少。然而,我能说的是,朱丽亚很快。与具有相似语法的语言相比,情况尤其如此。这种语言的速度通常与 C 和 Rust 差不多。在某些情况下,这三者可以在谁最终更好的基准之间交换速度。有些人很惊讶,不相信 Julia 真的比 c 快,但是需要注意的是,这些基准测试不包括包的预编译。
也就是说,尽管如此,事实仍然是朱莉娅很快。这是一个优势,尤其是在数据科学应用程序中,有些应用程序可能会对数据进行大量的观察和操作。
№4: PKG
Julia 还有一个牛逼的地方就是包管理器,Pkg。与我作为程序员使用过的许多其他包管理器相比,Pkg 即使不是最好的,也是其中之一。照这样下去,我希望我可以用 Pkg 作为我整个操作系统的包管理器。包管理器可以很容易地为我们处理所有的依赖关系,可以生成项目目录,并且做得很容易。我认为从包管理器内部处理虚拟环境环境在我看来更理想。
虽然我认为其他语言确实有一些非常棒的包管理器,但我认为 Julia 的包管理器更好。Julia 语言的包管理器和 TOML 设置工作得很好。包和它们各自的依赖项完全由 Pkg 管理,这使得方便成为这个包管理器及其功能的一个关键特性。
举例来说,将这个包管理器与 Node 相比,我认为添加包的方式要好得多。通常,在 node 中,您会在项目目录中调用 npm,这可能会与一些项目有些混淆,因为有时这不是主目录。与 Python 进行同样的比较,环境要难得多,而且远不如 Pkg 包那样容易管理。能够用 Pkg 管理包和环境,并把 Pkg 作为一个常规的 Julia 包使用,这意味着控制 Pkg 做不同的事情有很大的灵活性。
第五名:REPL
我想分享的最后一个朱莉娅的特点是朱莉娅的 REPL。谈到编程语言的 REPL,当然有一些可取的选择。Python 的 REPL 是一个体面的 REPL,尽管它有点极简主义。在我体验之前,我最喜欢的 REPL 可能是 Steel Bank comm Lisp(SBCL)REPL,因为我发现使用保存的状态保持数据完整的声明性和功能性是一个非常棒的特性。也就是说,朱莉娅凭借其互动和动态的 REPL 彻底颠覆了 REPL。
正如我在 1 中提到的,我已经处理了 REPL 的源代码和类型。REPL 非常灵活,有很多不同的功能。在一个正常的 REPL 工作场景中,搜索、列出目录,所有这些事情有时是不可能的,或者需要编程语言中的方法调用。对于浏览文件或查看环境来说,一遍又一遍地调用 cd("dir ")和一些 LS 方法是极其乏味的。Julia 通过提供一个 Bash REPL 来解决这个问题,可以使用;朱莉娅·REPL 的来信。
julia > ;
shell > ls
更重要的是,Pkg 也有自己的 REPL,它可以解析常规的 Pkg 命令和参数来添加和源包。考虑下面的 REPL 会话:
([@v1](http://twitter.com/v1).6) pkg> activate Jockey
([@v1](http://twitter.com/v1).6) pkg> activate Jockey
Activating environment at `~/dev/Jockey/Project.toml`shell> cd Jockey
/home/emmac/dev/Jockeyshell> ls
bin config Project.toml routes.jl test
bootstrap.jl Manifest.toml public src usershell> cd src
/home/emmac/dev/Jockey/srcshell> ls
core Jockey.jl ServerControllershell> nano Jockey.jlshell>
(图片由作者提供)
能够以我习惯的传统方式处理目录,同时处理包和文件,这真是太棒了。感觉非常流畅,感觉这是在 REPL 工作的一种非常快捷的方式。每当我们将它与其他不包含这些特性和替代复制器的乏味复制器比较时,情况尤其如此。
结论
Julia 是我最喜欢的编程语言,对于任何开发人员来说都是一个极好的选择。如果你对科学计算感兴趣,我强烈建议你学习这门语言,因为它对这项任务特别有用。朱莉娅有很多优点,但这仅仅是我认为不可思议的五个。如果你想了解更多关于 Julia 的知识,你可以访问 Julia 语言网站:
非常感谢您的阅读,我希望关于 Julia 语言的一些令人敬畏的事情可能足以激发一些新的学习。我认为 Julia 是一种非常棒的语言,这就是为什么我喜欢谈论和分享它的特点,因为这是这种奇妙的语言应该得到的欣赏。祝你有美好的一天!
每个数据科学家都应该使用的 5 项 AWS 服务
亚马逊网络服务(AWS)提供了令人眼花缭乱的云服务,从众所周知的弹性计算云(EC2)和简单存储服务(S3)到平台即服务(PaaS)产品,几乎涵盖了现代计算的每个方面。
具体来说,AWS 提供了一个成熟的大数据架构,其服务覆盖了整个数据处理管道,从接收到处理和预处理、ETL、查询和分析,再到可视化和仪表板。AWS 让您可以无缝、轻松地管理大数据,而无需设置复杂的基础架构或部署 Spark 或 Hadoop 等软件解决方案。
在本文中,我将介绍五种 Amazon 服务,每一种都涵盖了现代数据科学工作流的一个基本元素。
1.亚马逊电子病历
亚马逊 EMR 托管集群平台消除了运行 Apache Hadoop 和 Spark 等大数据框架的大部分复杂性。您可以使用它来处理和分析 AWS 资源上的大数据,包括 EC2 实例和低成本 spot 实例。亚马逊 EMR 还允许您在 AWS 数据库(如 DynamoDB)和数据存储(如 S3)之间转换和迁移大数据。
储存;储备
存储层中有各种文件系统,具有不同的存储选项,包括:
- **Hadoop 分布式文件系统(HDFS)——**一个适用于 Hadoop 的可扩展的分布式文件系统,可跨集群中的实例存储多个数据副本。这确保了如果一个实例失败,数据不会丢失。HDFS 提供了临时存储,您可以使用它来缓存工作负载的中间结果。
- **EMR 文件系统(EMRFS)——**提供直接访问存储在亚马逊 S3 的数据的功能,类似于 HDFS。S3 或 HDFS 都可以用作集群的文件系统,但亚马逊 S3 通常用于存储 I/O 数据,而 HDFS 则用于存储中间结果。
数据处理框架
数据处理框架是处理和分析数据的引擎。框架可以在 YARN 上运行,也可以独立管理资源。不同的框架具有不同的功能(例如,批处理、流、交互式分析、内存处理)。您选择的框架会影响您的应用程序用来与正在处理的数据进行交互的接口和语言。
Amazon EMR 支持的主要开源框架有:
- Hadoop MapReduce —分布式计算的编程框架。您提供 Map 和 Reduce 函数,它处理编写分布式应用程序所涉及的所有逻辑。使用 Map 函数将数据映射到中间结果,使用 Reduce 函数将它们合并并生成最终输出。
- Apache Spark —用于处理大数据的编程模型和集群框架。它是一个高性能的分布式处理系统,通过内存缓存处理数据集,通过有向无环图处理执行计划。
Amazon EMR 允许您启动集群、开发分布式处理应用、向集群提交工作并查看结果,而无需设置硬件基础架构、部署和配置大数据框架。
2.AWS 胶水
AWS Glue 是一个方便数据管理的提取、转换和加载(ETL)服务。它得到全面管理且经济高效,允许您对数据进行分类、清理、丰富和传输。AWS Glue 是无服务器的,包括一个数据目录、一个调度程序和一个自动生成 Scala 或 Python 代码的 ETL 引擎。
AWS Glue 处理半结构化数据,提供可在 ETL 脚本中使用的动态框架。动态框架是一种数据抽象形式,您可以使用它来排列数据。它们提供了模式灵活性和高级转换,并且与 Spark 数据帧兼容。
AWS Glue 控制台允许您发现数据源、转换数据和监控 ETL 过程。您还可以使用 AWS Glue API 从 AWS 服务或其他应用程序访问 Glue。
您可以指定希望 AWS Glue 执行的 ETL 任务,以便将数据从源移动到目标。您可以设置作业来响应您定义的触发器,也可以按需运行它们。要转换数据,可以通过控制台或 API 提供脚本,或者使用 AWS Glue 自动生成的脚本。您可以定义爬网程序来扫描数据存储中的源,并用元数据填充数据目录。
3.亚马逊 SageMaker
这种完全托管的 MLOps 解决方案允许您构建和训练机器学习(ML)模型,并轻松地将它们直接部署到生产环境中。您可以使用 Jupyter notebook 实例轻松访问数据源,而无需管理服务器。
SageMaker 提供针对分布式环境中的大数据优化的内置 ML 算法,并允许您带来自己的定制算法。使用 SageMaker 控制台或 SageMaker Studio 将您的模型部署到一个可伸缩的安全环境中。与大多数亚马逊服务一样,数据培训和托管的成本根据实际使用情况计算,没有前期费用或最低费用。
要训练您的模型,您需要创建一个训练作业,包括以下详细信息:
- 存储培训数据的 S3 存储桶的 URL
- 在哪里存储输出
- 计算资源(ML 计算实例)
- 在 Amazon 弹性容器注册表(ECR)中存储训练代码的路径。这可以是内置算法之一,也可以是您自定义的 Python 代码。
最后,一旦训练作业正在运行,您就可以使用 SageMaker 调试器来调优训练数据、参数和模型代码。
4.亚马逊 Kinesis 视频流
许多由组织创建和管理的内容正在向视频转变,这就产生了处理和分析视频内容的需求。亚马逊 Kinesis Video Streams 是一项完全托管的服务,用于向 AWS 云传输直播视频,实时处理视频,并执行面向批量的分析。
您可以使用该服务来存储视频数据,在视频内容上传到云时实时访问视频内容,并监控直播流。
Kinesis 视频流允许您从数百万台设备中捕捉大量实时数据。这包括视频和其他数据,如热成像和音频数据。您的应用程序可以低延迟地访问和处理这些数据。您还可以将 Kinesis 与各种视频 API集成,以对视频内容进行额外的处理和处理。Kinesis 可以配置为在指定的保留期内存储数据,并对静态数据进行加密。
以下组件相互作用:
- 制作者— 为视频流提供数据的来源。这可以是生成视频或非视频视听数据的任何设备。
- Kinesis 视频流 —支持实时视频数据的传输,并使其可实时或临时或批量传输。
- 消费者— 数据的接收者,通常是用于查看、处理或分析视频数据的应用程序。消费者应用程序可以在 Amazon EC2 实例上运行。
5.亚马逊 QuickSight
这是一项完全托管的基于云的商业智能(BI)服务。 Amazon QuickSight 结合了来自多个来源的数据,并将其呈现在一个仪表盘中。它提供了高级别的安全性、内置冗余和全球可用性,以及可用于管理大量用户的管理工具。您无需部署或管理任何基础架构,即可立即投入运行。
您可以从任何移动或网络设备安全地访问 QuickSight 仪表盘。
您可以使用 Amazon QuickSight 访问数据,为分析做准备,并将准备好的数据作为直接查询或保存在 SPICE 内存中(QuickSight 的超快速并行内存计算引擎)。要创建新的分析,您需要添加现有的或新的数据集;创建图表、表格或见解;使用扩展功能添加变量;并将其作为仪表板发布给用户。
结论
在本文中,我讨论了实现现代数据科学项目基本功能的 AWS 服务:
- 亚马逊 EMR — Hadoop 和 Spark 即服务,无需复杂设置即可在任何规模运行。
- AWS Glue —半结构化数据的无服务器 ETL 引擎。
- 亚马逊 sage maker——机器学习盒子,让你组装机器学习管道,并将其部署到生产中。
- 亚马逊 Kinesis 视频流——让你处理和分析视频数据,这是大多数组织都在争相掌握的新数据源。
- Amazon QuickSight —快速简单的可视化和仪表盘,没有复杂的集成。
我希望这将有助于您评估云在您的数据科学之旅中的作用。
5 个初学者友好的机器学习项目
千里之行始于足下
Jukan Tateisi 在 Unsplash 上拍摄的照片
应用是最好的学习方法。有许多书籍、博客、视频等。机器学习及其应用。成为这类内容的连续消费者很容易让你陷入一个陷阱,以为你离能力越来越近了,但事实上你并没有。
知道你是否理解了机器学习的应用方面的秘密很简单。为自己实现。如果你不能,这并不意味着你是愚蠢的,这只是意味着你的知识有差距,因此你必须回去学习。
真正的理解来自实施,失败,从失败中学习,再实施。
这是有经验的从业者建议初学者尽快开始项目的众多原因之一。项目工作的另一个理由是曝光。在项目中工作,尽可能接近现实世界中正在解决的问题,会让初学者很好地理解在现实环境中工作是什么样的。
知道从什么项目开始会很有挑战性,所以这里有一些想法:
#1 解决个人问题
我们的生活中都有问题。面对我们的问题通常是一个巨大的成长机会,但由于我们天生害怕失败,这可能会令人生畏。能够感受到恐惧并继续前进对于我们自己的生活来说是一项非常有价值的技能,我们可以通过使用我们的机器学习技能来让它变得有趣。
能够发现问题并将其转化为机器学习问题本身就是一种技能,因此我个人总体上更喜欢这种方法。解决你自己发现的问题显示了你的能力范围,因为根据你的角色,你可能会从事一些你不需要做的工作。
例如,在生产中部署和监控机器学习模型可能需要成为您作为 ML 工程师的核心能力的一部分,但构建您自己的项目将为您提供关于 ML 模型管道中其他领域的重要见解,如数据采集。
#2 从头开始编写机器学习算法
我记得有一天我的直线经理让我谈谈决策树——不是因为它有用,他只是对 ML 方法感到好奇。长话短说,我被难住了。我说了一大堆废话,这让我很困扰,因为在我读到决策树之后,我非常确定我明白了它是如何工作的。
我对各种机器学习算法的最大理解来自于我从零开始的算法系列。我的想法是学习每种算法,从头开始编写代码,然后将我的实现与 Scikit 提供的实现进行比较——了解我的表现。
https://github.com/kurtispykes/ml-from-scratch
这个阶段发展了我对各种机器学习模型背后的机制的理解,我学会了如何将数学公式转化为代码。
我给开始使用这种方法的人的唯一一点建议是,试着从尽可能简单的开始,然后逐步积累。例如,从实现线性回归开始,然后将线性回归模型扩展到逻辑回归模型。
#3 带 MovieLens 的推荐引擎
YouTube、亚马逊和网飞都是应用推荐引擎为最终用户创造价值的典范。当我们访问某些网站时,期望有某种程度的个性化是很常见的。因此,推荐系统已经变得非常流行,了解它们可能是特别有趣的。
MovieLens 是一个已知的数据集,这意味着如果你遇到困难,网上有许多实现可以帮助你。该数据集由 162,000 名用户的 62,000 部电影组成。我过去对这个数据集做过一些工作,你可以把它作为一个起点。
https://github.com/kurtispykes/recommender_system
#4 假新闻检测
每当我听到“假新闻”这几个字,我都会不由自主地想起唐纳德·特朗普。虽然我不同意他的许多观点和意识形态,但他对假新闻的厌恶多少是有道理的。
GIF 由@snl 在 GIPHY 上
随着如此多的人通过社交媒体等联系在一起,假新闻可以像野火一样传播,而且它经常这样做。辨别假新闻比以往任何时候都更加重要,因此脸书已经创建了自己的假新闻检测器,从人们的新闻提要中过滤假新闻。利用机器学习和自然语言处理,您可以构建自己的假新闻分类器来检测假新闻。
#5 波士顿房价预测
波士顿房价数据集是一个非常受欢迎的资源,已被用于基准算法。该数据包含由美国人口普查局收集的有关波士顿地区住房的信息。最初,它是由 Harrison d .和 Rubin feld d . l .出版的《享乐价格和对清洁空气的需求》,J. Environ。经济学与管理学,第 5 卷,81–102 页,1978 年。
托德·肯特在 Unsplash 上的照片
房子的价格取决于各种因素(即房间数量、位置、离学校的远近等)。使用 ML 是揭示潜在模式和基于各种特征估计属性价值的好方法。
在进行这个项目时,你可能会决定收集更多的数据,并将预测扩展到波士顿以外的房子。
包裹
我绝对相信这篇文章中分享的项目想法有利于发展你的直觉,这是非常必要的。然而,说到被录用,我相信如果你想脱颖而出,你应该做得更多一点。这并不一定意味着要做更多的项目。相反,我会建议专注于做 1 到 2 个项目,并把它们做好。
我是 Vin Vashista 在 YouTube 上的视频的超级粉丝。如果你有兴趣让你的项目更上一层楼,我强烈建议你看看他关于建立独立数据科学项目的视频,这些项目会让你被录用。
感谢阅读!
如果你喜欢这篇文章,请通过订阅我的免费 每周简讯与我联系。不要错过我写的关于人工智能、数据科学和自由职业的帖子。
相关文章
</5-ideas-for-your-next-nlp-project-c6bf5b86935c> https://neptune.ai/blog/best-practices-for-data-science-project-workflows-and-file-organizations
Python 中的 5 个最佳 GUI 库
用 Python 制作 GUI 的一些最佳应用程序的比较
(src =https://pixabay.com/images/id-1895383/
介绍
对于数据科学等应用程序,Python 是最受欢迎的选择之一。它在 web 开发领域也非常流行。鉴于 Python 的声明性和脚本语言分类,这两个应用程序看起来很容易。然而,Python 确实有一个生态系统来促进更多的应用,而不仅仅是它所应用的标准应用。
这些学科中有一个相当广泛的生态系统,那就是软件开发。当然,我们已经习惯了在一些软件中使用 Python,但是通常这种语言并不用于为普通用户编写在他们的系统上运行的应用程序。这是因为 Python 不是一种编译语言,因此很难从 Python 应用程序中获得编译后的二进制文件。然而,我们仍然可以使用为传统软件工程创建的库来增强我们的开发体验。我们可以用于此目的的一些模块的一个例子是图形用户界面,或 GUI,框架。我们甚至可以通过数据科学做到这一点,这非常令人兴奋!今天我想比较一些我最喜欢的 Python 语言的图形用户界面模块。
№1:基维
这个列表中我最喜欢的模块之一是 Kivy。Kivy 是一个很好的框架,因为它比这个列表中的许多其他选项更加通用。你甚至可以用 Kivy 开发手机应用!用户界面也很漂亮。但是,我要说的是,那种美颜的定制相当乏善可陈。虽然你可以用这个模块创建一个很棒的应用程序,但很难让它看起来像你自己的,而不只是像其他人的 Kivy 应用程序。
使用 Kivy 的最大缺点可能就是它有多大。Kivy 里面有很多东西要打开。这个包包含了很多看起来不太必要的东西,所有的子模块都让文档有点混乱。与列表中的其他选项相比,我认为 Kivy 可能是最不友好的。虽然我可以肯定地说它是构建 GUI 的一个很好的库,但我也要指出,这个库有时会有点让人不知所措,尤其是对初学者来说。
第二名:Gtk
如果你像我一样,并且你碰巧喜欢 Gnome 桌面环境,那么你可能听说过 Gtk。Gtk 是一个用 C 编写的跨平台 GUI 框架。Gtk 的伟大之处在于它跨越了跨语言的障碍,是为 C、Vala 和 Python 以及其他选项而构建的。
这意味着关于 Gtk 库的知识可以从 Python 移植到其他选项中,例如 c。这可以为您提供一个可靠的选项,用 Python 构建应用程序的原型,然后编写一个用 c 编译的版本。我认为 Gtk 是这个列表中最可靠的选项之一,因为它的 API 非常容易使用,它有很好的文档,并且它的包本身是值得尊敬和经过验证的。
然而,关于 Gtk 需要注意的一点是,Gtk 世界中的一切都是标准化的。最终,定制取决于最终用户的个人 Gtk 主题。当涉及到与其他操作系统一起工作时,这个库也不是那么通用。举例来说,虽然让 Gtk 在 Windows 上工作是可能的,但是这比这个列表中的其他例子要复杂得多。这个库当然有缺点,但是我经常用它来编写 GUI 来控制我自己的东西,因为我个人使用 Gnome 和 Linux。然而,当要写一些与他人分享的东西时,Gtk 有时可能不是最好的解决方案。
№3: PyQT5
QT5 在很多方面和 Gtk 库的地位差不多。它还被用作桌面环境的 Linux 标准,最常与 KDE 一起使用,它几乎和后者一样古老和久经考验。我要说的是,PyQT5 的文档与这个列表中的许多其他文档相比非常突出。文档写得很好,功能齐全,使得 QT5 成为最容易使用 Python 的 GUI 框架之一。
这个 QT5 绑定也为所有支持 QT5 的平台提供了足够的支持。Gtk 的情况就不一样了,它的软件没有 QT5 或 Kivy 那么通用。与 Kivy 一样,QT5 也能够开发移动应用程序。总的来说,这个包很像 Kivy,继承了它许多令人惊奇的特性,但是也保留了这个库的一些问题。一个受欢迎的区别是 PyQT5 比 Kivy 更容易接近,也没有 Kivy 复杂。
№4: PySimpleGUI
这个列表中一个有趣的解决方案是 PySimpleGUI。GUI 编程可能相当复杂,但在许多情况下,它真的不需要如此复杂!PySimpleGUI 简化了 Tkinter、Remi、Wx 和 QT5 库中的东西。使用这个模块的好处是,它将比使用列表中的任何其他解决方案容易得多。虽然它只实现了 GUI 界面的一个子集,但我认为对于那些希望看到更容易理解的东西的人来说,它是值得添加的。我认为这对于那些想开发一个应用程序来快速控制 Python 的人来说也是很棒的,就像我个人使用的例子一样。
№5: Tkinter
Tkinter 是用 Python 编程 GUI 的精华库。这个库被认为是用这种语言开发 GUI 的标准。该模块实际上通常随标准 Python 安装一起分发。虽然这是一个相对基础的框架,但我认为它确实值得一看,当然这取决于你的项目。
像 PySimpleGUI 和 Gtk 一样,我认为这将是构建快速 GUI 来做某事的另一种选择。它非常容易使用,很多人都用过。它绑定到 Tk 库,这是一个在软件开发中已经使用了很长时间的选择。与 Gtk 之类的东西相比,它也是一个非常通用的选项,因为它可以轻松地在所有平台上运行。
结论
GUI 当然是一个有用的东西。虽然 Python 没有经过编译,所以不太可能用这种语言编写一个全功能的应用程序来发布,但它总是让事情快速运行的一个很好的选择。这也展示了 Python 构建应用程序原型的能力。由于库最终通常驻留在 C 生态系统中,所以您可以用 Python 来验证应用程序的概念,然后再使用 C 来完成它。
这些图形用户界面当然也可以应用于数据科学!过去,我一直使用 GUI 来处理模型、数据和底层硬件系统。我认为,当您想为自己创建一个使用这些技术的应用程序时,潜力是无限的。感谢您的阅读!
机器学习项目中特征工程的 5 个最佳实践
改善您的机器学习体验
丹尼尔·切卡洛夫在 Unsplash 上拍摄的照片
当处理一个新的机器学习问题时,没有办法从一开始就知道解决方案是什么,除非尝试和测试各种不同的实验。随着时间的推移,从业者已经实现了各种不同的技术,以查看在大多数机器学习项目中什么有效,什么无效。由此,当在机器学习管道中执行特征工程步骤时,我们已经能够生成一组最佳实践。
请注意,这些最佳实践中的每一个可能会也可能不会改进您对每个特定问题的解决方案,但是它们不太可能对最终的结果造成极大的损害。
#1 生成简单的特征
首次开始建模过程时,尝试生成尽可能多的简单特征。简单的意思是,尽量生成不需要很长时间编码的特性。例如,不要训练 Word2vec 模型,而是从实现一个简单的单词包开始,它用最少的代码生成数千个特性。其思想是,您希望在开始时使用任何可测量的东西作为特征,因为没有明确的方法可以提前知道一个或多个特征的组合是否对预测有用。
# 2 IDs 可以是特性(需要时)
将 ID 作为特性集的一部分可能听起来很傻,因为唯一的 ID 可能对模型的泛化贡献不大。然而,包含 IDs 使从业者能够创建一个在一般情况下有一个行为而在其他情况下有不同行为的模型。
例如,假设我们想要根据描述某个位置的一些特征来预测该位置。通过将位置的 id 作为功能集的一部分,我们将能够为一个一般位置添加更多的训练示例,并训练模型在其他特定位置表现不同。
#3 降低基数(如果可能的话)
一般来说,如果我们的某个分类特征有许多不同的唯一值(比如说超过 12 个),那么只有当我们希望模型根据该特征表现出不同的行为时,才应该使用该特征。例如,在美国有 50 个州,因此如果您希望模型的预期行为在加利福尼亚是一种方式而在佛罗里达是不同的,您可以考虑使用名为“states”的特性。
另一方面,如果我们不需要根据“States”特性表现不同的模型,那么减少“States”特性的基数会更好。
我们将在另一篇文章中介绍这方面的技术。
#4 小心计数
在某些情况下,随着时间的推移,计数大致保持在相同的范围内——如果文档长度不随着时间的推移而增长或收缩,单词包(BoW)就是这种情况。
计数可能导致问题的实例。以这样一个场景为例,我们有一个功能,可以监控一个用户自从订阅了一项服务后所拨打的电话数量。如果提供订阅服务的企业已经存在了很长时间,很可能他们会有一些在最近的订户之前很久就订阅的订户,因此与最近的订户相比,他们可能已经打了大量的电话。
随着数据的增长,今天不太频繁的值将来可能会变得更频繁,因此,重新评估这些特性非常重要。
#5 进行功能选择(必要时)
以下是仅在绝对必要时才执行特性选择的一些理由;
- 模型必须是可解释的,所以最好保留最重要的特征
- 有严格的硬件要求
- 没有太多时间来执行大量实验和/或为生产环境重建模型
- 在多个模型训练回合之间有一个预期的分布转移
包裹
我们并没有涵盖所有的最佳实践——正如标题中提到的,我只涵盖了 5 个。好奇的读者应该考虑购买机器学习工程,这本书是这篇文章的灵感来源。机器学习工程是安德烈·布尔科夫写的,他是《T4这本百页机器学习书籍 的作者,我向任何寻求提高机器学习技能的人强烈推荐它。
注意:点击上面的图书链接,你将通过我的会员链接被导向亚马逊。我还集成了地理链接,所以如果你不在英国,你会被自动引导到你当地的亚马逊商店。
感谢阅读!
如果你喜欢这篇文章,请通过订阅我的免费**每周简讯与我联系。不要错过我写的关于人工智能、数据科学和自由职业的帖子。**
相关文章
** </7-common-gotchas-of-data-projects-62e8646552f2> [## 数据项目的 7 个常见问题
towardsdatascience.com](/7-common-gotchas-of-data-projects-62e8646552f2)**
2021 年使用的 5 个最佳云数据库
亚马逊 DynamoDB,谷歌 BigQuery,Azure SQL Server,Azure Cosmos DB,亚马逊红移
来源: Shutterstock
2012 年,亚马逊发布了第一个云数据库 DynamoDB,从此改变了数据库格局。从那以后,云数据库在采用和创新方面经历了飞速的增长。随着整个软件开发行业转向云原生开发,云数据库将在未来变得越来越重要。Gartner 预测,到 2022 年底,75%的数据库将迁移到云:
为什么云数据库越来越受欢迎?在数据库技术方面,公共云数据库与其他 SQL 或 NoSQL 数据库没有什么不同。然而,公共云数据库的关键卖点在于数据库管理和扩展。
在传统的 SQL 数据库和许多 NoSQL 数据库中,应用程序所有者管理数据库,包括复制、分片、备份、恢复和扩展。但是在云数据库中,云提供商管理数据库。
大多数云原生数据库除了基本的数据库管理系统之外,还提供以下特性:
- 通过托管分区/分片实现水平扩展。
- 自动备份和恢复。
- 保证 SLA 的高可用性。
- 跨数据中心复制。
- 支持不同的一致性级别(强一致性、最终一致性)。
- 云原生。
- 支持多模式。
- 通过全局分布将数据移动到边缘。
- 无服务器。
- 行星尺度。
尽管主流的 SQL 和 NoSQL 数据库现在正试图改进这些特性,但它们并不是为满足这些需求而从头开始构建的。
在本文中,我将根据以下标准对五个最受欢迎的云原生数据库进行排名:
- 关键特征
- 流行
- 趋势
- 主流用途
- 美好未来
1.亚马逊 DynamoDB
在 2004 年 12 月的圣诞节促销期间,Amazon 痛苦地认识到,集中、强大、一致的 RDBMS 无法处理 Web 级的应用程序负载。由于严格的一致性模型、关系结构和两阶段提交,传统的 SQL 数据库无法提供 Amazon 所寻求的高可用性和水平可伸缩性。亚马逊工程团队开发了一个新的 NoSQL 数据库 DynamoDB,并于 2007 年在他们的 Dynamo 论文中发布了他们的发现。亚马逊发电机纸在后来的 NoSQL 数据库如 Cassandra,Riak 的发展中起到了至关重要的作用。
虽然 DynamoDB 被用作亚马逊购物车应用的主要数据库,但它在 2012 年才公开。此后,DynmoDB 成为最受欢迎的公共云数据库和最受欢迎的 AWS 服务之一。
5 个关键特征
- 这是一个基于键值和文档的 NoSQL 数据库。
- 这是一个全面管理的、多区域、多主、高可用性的数据库。
- 它是为网络规模的应用而设计的。它每天可以处理超过 10 万亿个请求,并支持每秒超过 2000 万个请求的峰值。
- DynamoDB 加速器(DAX)提供了一个完全托管的内存缓存。
- 凭借其多区域复制功能,它可以在任何规模下提供个位数毫秒级的响应时间。
何时使用 DynamoDB
- 当 AWS 是首选公共云提供商时。
- 当需要键值或文档数据库时。
- 当超大规模和高可用性优先于一致性时。
- 当首选完全托管的公共云数据库时。
- 何时需要地理空间数据类型。
何时不使用 DynamoDB
- 当 AWS 不是首选公共云提供商时。
- 作为需要 ACID 事务保证的主数据库(OLTP)。
- 由于法规、数据保护或关键业务需求而首选本地数据库时。
- 当需要柱状数据库或图形数据库时。
- 当需要分布式 SQL (NewSQL)数据库时。
可供选择的事物
人气:
亚马逊 DynamoDB 是使用最多的超大规模云数据库之一。也是最 AWS 的服务之一。
近年来,它正面临来自开源数据库(如 Cassandra、MongoDB)和其他公共云数据库(Azure Cosmos DB)的激烈竞争。
由于亚马逊是领先的公共云提供商,DynamoDB 仍然是公共云中最受欢迎的 NoSQL 数据库。
根据流行的数据库排名网站 DB-Engines,它是第二大流行的公共云数据库,仅次于 Azure SQL 数据库:
图片由作者提供(数据: DB-Engines
《2020 年栈溢出开发者调查》将 DynamoDB 列为 2020 年第 11 大最受欢迎的数据库。考虑到 DynamoDB 是该列表中唯一的公共云数据库,这是一个壮举:
趋势
自 2012 年推出以来,DynamoDB 是业内最时尚的数据库之一。DB-Engines 显示了 DynamoDB 在其整个生命周期内的持续增长趋势:
来源: DB-Engines
谷歌趋势还显示,在过去十年中,DynamoDB 的受欢迎程度呈线性增长:
来源:谷歌趋势
2.谷歌大查询
很少有公司能像谷歌一样处理如此庞大的数据集。难怪谷歌凭借许多新颖的想法和创新引领着 21 世纪的大数据格局。在本世纪初,谷歌发现“一刀切”的 SQL 数据库对于分析工作负载来说不够好。他们开发了一个新的数据库“Dremel”,用于数据仓库,即处理大量的分析数据。谷歌在 2010 年发表了一篇论文,“ Dremel:网络规模数据集的交互分析 **,”**将他们的发现公之于众。
后来,谷歌在 2011 年将他们内部的 Dremel 数据库公开为 BigQuery 数据库。从那时起,它就是数据仓库和分析负载的领先和最具创新性的数据库。谷歌云(GCP)在数据存储领域有着强大的影响力,BigQuery 在其中发挥着举足轻重的作用。
5 个关键特征
- 高度可扩展的多云数据仓库解决方案,具有独立的存储、计算和处理能力。
- 它采用无服务器体系结构,具有受管配置、维护、安全性和可扩展性。它具有多位置复制存储的自动高可用性。
- BigQuery ML 使用户能够使用标准的 SQL 查询在 BigQuery 中创建和执行机器学习模型。
- 其高速流插入 API 为实时分析提供了坚实的基础。
- BI 引擎(内存分析服务)通过标准 ODBC/JDBC 为流行的 BI 工具提供亚秒级查询响应时间和高并发性。
何时使用大查询
- 对于大规模(Pb 级)数据仓库解决方案。
- 当需要内置 ML 和 AI 集成时,例如 TensorFlow。
- 当实时分析是一项重要要求时。
- 何时需要地理空间数据类型。
- 当首选无服务器数据库时。
何时不用大查询
- 它的多云产品“BigCloud Omni”仍处于“私有 alpha”阶段。在多云场景中慎用。
- 作为需要 ACID 事务保证的主数据库(OLTP)。
- 由于法规、数据保护或重要的业务机密而首选本地数据库时。
- 当需要文档数据库或图形数据库时。
- 当数据集不大时。
可供选择的事物
人气:
BigQuery 彻底改变了数据仓库。根据 DB-Engines 排名,它是第三大最受欢迎的云数据库:
作者图片(数据: DB-Engines )
趋势
BigQuery 的受欢迎程度在过去几年里急剧上升,这一点已被 DB-Engines 趋势所证实:
来源: DB-Engines
它是最时尚的数据仓库解决方案之一,近年来引起了广泛的关注,如下所示:
来源:谷歌趋势
3.Azure SQL 数据库
微软是数据库领域的另一个大玩家。凭借 Microsoft SQL Server,微软主导了中端 Windows 系统的商业数据库市场。当微软在 2010 年代采用云优先的方法时,它在微软 SQL Server 上提供了托管数据库服务。在接下来的几年中,Microsoft 托管的 SQL Server 经历了许多变化。
目前,Azure SQL 数据库不仅是微软 SQL Server 的托管数据库即服务,还提供了许多其他增值的额外功能。对于许多企业来说,尤其是那些已经在使用 Microsoft SQL Server 的企业,它是云中的首选数据库,因为他们可以轻松地将其本地 Microsoft SQL Server 迁移到云中。
5 个关键特征
- Azure 云上的托管 SQL 数据库。
- 除了独立的数据库,它还提供灵活的弹性池,以经济高效的方式管理和扩展具有可变负载的多个数据库。
- 它提供无服务器计算层。
- 这是一个超大规模的 SQL 数据库,即使在基础架构出现故障的情况下也具有 99.99%的可用性,几乎可以即时备份,并且可以快速恢复数据库。
- 除了标准层,它还为超大规模 SQL 数据集提供超大规模服务层。
- 以轻松的方式将本地 Microsoft SQL 数据库提升并转移到 Azure SQL 数据库。
何时使用 Azure SQL 数据库
- 如果 Azure 是首选的公共云提供商。
- 如果一家公司已经拥有 Microsoft SQL 服务器,并希望将其迁移到云中。
- 出于各种原因(大型 SQL 数据库、快速备份/恢复、高吞吐量),需要超大规模的 SQL 数据库。
- 如果企业级数据保护需要加密、身份验证,限制用户对数据的适当子集的访问。
- 如果出于成本目的需要数据库的弹性池。
何时不使用 Azure SQL 数据库
- 当 Azure 不是首选的公共云提供商时。
- 由于法规、数据保护或关键业务需求而首选本地数据库时。
- 当需要柱状数据库或图形数据库时。
- 当需要分布式 SQL (NewSQL)数据库时。
- 当数据是半结构化和非结构化时。
可供选择的事物
人气:
Azure SQL 数据库不像这个列表中的其他一些数据库那样具有破坏性或创新性。但是云中的托管 SQL 数据库有着巨大的市场。在这个领域,Azure SQL 数据库表现出色。
根据 DB-Engines 排名,它是最受欢迎的公共云数据库:
图片由作者提供(数据: DB-Engines
趋势
Azure SQL 数据库不像该列表中的其他一些数据库那样具有趋势性。但在过去十年中,它仍然产生了积极的趋势,前一年出现了高峰:
来源: DB-Engines
Google trends 也显示了 Azure SQL 数据库的稳定趋势。
来源:谷歌趋势
4.天蓝色宇宙数据库
微软是传统的大型科技公司,业务遍及全球。当微软在 2010 年启动云优先政策时,他们希望开发自己的星球级 NoSQL 数据库,以关注最大的灵活性和开发者友好性。最后,经过七年的密集研发,他们在 2017 年发布了他们的多模型、多一致性、全球分布式数据库 Azure Cosmos DB。在许多方面,Azure Cosmos DB 引入了数据库技术中的几个新特性。虽然它不是第一个多模型数据库,但它是迄今为止最先进的多模型数据库。它还提供了额外的开发人员友好的特性。
如今,Azure Cosmos DB 是市场上增长最快的数据库之一。在现代,寻找“主数据库”,即“一个数据库来管理所有数据库”,是一个热门话题。在所有潜在的“主数据库”候选者中,Azure Cosmos DB 是目前最合适的候选者。
关键特征
- 面向云的多模型、全球规模的 NoSQL 数据库。
- 它支持几乎所有的主流数据模型:文档数据库(半结构化数据),高度关系数据的图形数据库,高吞吐量数据的宽列存储。
- 它还提供了多种已知的访问模式和 API:SQL、MongoDB API(文档数据库)、Cassandra API(宽列数据库)和 Gremlin(图形数据库)。
- 它提供了最高级的一致性级别和有保证的 SLA:强的、有限的陈旧性、会话、一致的前缀、最终。
- 它是一个全球分布式数据库系统,允许以一位数毫秒延迟从数据库的本地副本中读取和写入数据。
何时使用 Azure Cosmos DB
- 当需要多模型 SQL 数据库时。
- 当需要具有行业标准 API 的 NoSQL 数据库时。
- 当需要具有灵活一致性级别的全局分布式数据库时。
- 当 Microsoft Azure 是首选公共云时。
- 当需要完全受管理的无服务器数据库时。
何时不用 Azure Cosmos DB
- 当 Microsoft Azure 不是首选的公共云提供商时。
- 当由于法规、数据保护或关键业务机密而首选本地数据库时。
- 当需要数据仓库系统时。
- 当需要分布式 SQL (NewSQL)数据库时。
- 如果预算和成本是一个问题,相对昂贵的 Cosmos DB 不是一个好的选择。
可供选择的事物
人气:
Azure Cosmos DB 是这个列表中最年轻的数据库,也是最近四年才上市的。尽管如此,它在行业中的采用率非常高,在云数据库普及度方面排名第四:
作者图片(数据: DB-Engines )
趋势
来源: DB-Engines
来源:谷歌趋势
5.亚马逊红移
作为领先的先锋云提供商,亚马逊希望快速发展。众所周知,亚马逊采用了许多开源数据存储,并在此基础上构建了自己的 AWS 服务。当谷歌在 2011 年用 Big Query 撼动数据仓库场景时,亚马逊采用了流行和创新的 SQL 数据库 PostgreSQL,并在此基础上构建了自己的数据仓库解决方案。2013 年,他们发布了亚马逊红移(Amazon Redshift)作为企业级云数据仓库解决方案。
由于 AWS 在公共云领域的主导地位,Amazon Redshift 是领先的数据仓库解决方案之一。另一方面,由于对 PostgreSQL 的强烈依赖,Amazon Redshift 的发展速度不如其竞争对手(如 BigQuery、Snowflake)。
5 个关键特征
- 完全托管、云就绪、Pb 级数据仓库解决方案。
- 与许多 AWS 云和数据服务无缝协作(S3、亚马逊雅典娜、亚马逊 EMR 、 DynamoDB 和亚马逊 SageMaker )。
- 与 AWS 分析生态系统的本机集成(ETL 的 AWS Glue ,高级 BI 的 Amazon QuickSight ,安全数据湖的 AWS Lake Formation )。
- 凭借其硬件加速的查询缓存 AQUA,它可以提供 10 倍的查询性能。
- 它的无共享大规模并行处理(MPP)带来了缓存、高效存储、闪电般的分析查询和并发分析。
何时使用亚马逊红移
- 对于大规模(Pb 级)数据仓库解决方案。
- 当亚马逊是你的公共云提供商时。
- 当各种亚马逊数据分析工具和数据平台已经在使用的时候。
- 当团队熟悉 PostgreSQL 语法和连接性时。
- 除了增强的数据库安全功能,Amazon 还有一个广泛的集成合规计划。
什么时候不用亚马逊红移
- 当亚马逊不是你的公共云提供商时。
- 当需要内置 ML 和 AI 集成时,例如 TensorFlow。
- 作为需要 ACID 事务保证的主数据库(OLTP)。
- 当由于法规、数据保护或关键业务机密而首选本地数据库时。
- 当具有即时水平扩展的无服务器数据仓库成为关键需求时。
可供选择的事物
人气:
从受欢迎程度来看,亚马逊红移在这个列表中落后于其他公共云数据库,如下图:
图片由作者提供(数据: DB-Engines
趋势
亚马逊红移不是市场上最时尚的数据仓库解决方案,落后于 BigQuery 和雪花。近年来,它的牵引力变得平缓,如 DB-Engines 趋势所示:
来源: DB-Engines
来源:谷歌趋势
结论
在这个列表中,Amazon SQL 数据库是唯一的公有云 SQL 数据库。
Amazon DynamoDB 是云数据库中使用最多的 NoSQL 数据库。
Google BigQuery 彻底改变了数据仓库的面貌,是最具创新性的数据仓库解决方案。Amazon Redshift 是构建在 PostgreSQL 服务器上的另一个流行的数据仓库解决方案。
尽管相对较新,Azure Cosmos DB 是一个非常有前途的数据库,是 master 数据库的主要候选数据库。
许多其他公共云数据库无法进入这一候选名单。其中,Google Spanner 和 Amazon Aurora 在分布式 SQL 数据库领域前景非常看好。
如果您已经在公共云中或者计划迁移到公共云中,您也应该考虑公共云数据库。公共云数据库将继续存在,并将在未来的不同场景中提供托管数据库。
类似文章
</21-predictions-about-the-software-development-trends-in-2021-600bfa048be>
5 个最好的 Python 项目,代码可以在一小时内完成!
用完整的代码构建五个很酷的 Python 项目,开发人员可以在一个小时内完成这些项目,并添加到您的简历中!
由 Unsplash 上的 krakenimages 拍摄的照片
Python 对于任何开发人员来说都是一种非凡的编程语言,因为它简单、易用、功能多样。除了每个即将到来的版本所带来的持续发展、改进和进步之外,Python 拥有最具支持性和最成熟的社区,该社区拥有大量富有成效和有用的资源,可以以各种可能的方式帮助您。
在 Python 及其等效库的帮助下,我们可以通过构建不同类型的独特项目来实现巨大的成就。Python 的灵活性允许您探索任何您想探索的选项,并且大量精彩的资源将帮助您更轻松地完成您想要的任务。因此,开始从事大量的 Python 项目来添加到你的简历中是一个很棒的主意。
我试图涵盖大多数对初学数据科学的爱好者和程序员有用的主题。如果您有兴趣学习如何在 12 个月内掌握数据科学,您应该查看以下指南,其中建议了实现这一目标必须遵循的 12 个步骤。
</12-steps-for-beginner-to-pro-in-data-science-in-12-months-c6f6ba01f96e>
在本文中,我们将看看五个不同的令人惊叹的项目,您可以使用 Python 及其库来构建它们。您可以在一个小时的时间范围内有效地计算在各自部分中提到的所有项目。我们将从四个简单的 Python 项目开始,以及一个涉及人工智能的稍微复杂一点的 Python 任务。让我们开始建设我们的项目吧!
1.提醒提醒:
在 Python 的帮助下,自动化大多数任务变得非常容易,否则这些任务对人类来说会被认为是棘手或复杂的。在适当的库和编码模式的帮助下,有可能在 Python 的帮助下自动化您的 PC 来实现合适的任务。在这一节中,我们将探索一个类似的项目,通过它我们可以执行这样一种类型的自动化,这将通过提醒我们要完成的任务的警报来提示我们。
在第一个项目中,我们将研究如何及时设置提醒警报,以便您能得到相应的通知。对于这个任务,我们将利用两个基本的库来完成这个项目。Python 中导入的时间模块和 plyer 库(可以用简单的 pip 命令安装)可以用来指定相应的通知请求。下面提供的代码块是实现该项目的预期结果的一个很好的起点。
import time
from plyer import notificationif __name__ == "__main__":
while True:
notification.notify(
title = "ALERT!!!",
message = "Take a break! It has been an hour!",
timeout = 10
)
time.sleep(3600)
上述代码示例演示了此 Python 项目的过程性工作。然而,还可以实现许多进一步的改进和提高。有关使用以下项目和库可以完成的整个过程的完整说明,请访问下面提供的链接,因为与以下主题相关的每个概念和属性都有详细介绍。
2.Python 计算器:
用 Python 创建计算器是一项有趣的任务。在我以前的文章中,我们已经探讨了计算器的几个概念,从执行简单计算的简单计算器到构建具有微分和积分的更复杂的计算器架构。虽然以下代码块利用了纯代码和即时响应,但在本项目中,我们将重点关注使用 Python 创建一个更具交互性的图形用户环境。
对于这个项目,在第一个代码块中,我们将声明声明表达式、创建按钮和等号按钮工作的所有基本要求和强制函数。下面是该项目的第一个示例代码块。该示例代码块的完整代码参考来自以下网站。有关更多信息和整个编码过程,请参考它。
# Import Tkinter
from tkinter import *# globally declare the expression variable
expression = ""# Function to update expression in the text entry box
def press(num):
global expression
expression = expression + str(num)
equation.set(expression)# Function to evaluate the final expression
def equalpress():
try:
global expression
total = str(eval(expression))equation.set(total)
expression = ""except:equation.set(" error ")
expression = ""
在下一个示例代码块中,我们将查看基本 GUI 界面的构造,在该界面中,您可以显示大量按钮并构造整个项目。出于这个示例代码块的目的,我将只显示创建一些基本功能的一些基本元素。从 1 到 3 的数字可以如下创建,我们可以在单击 equals 按钮后测试加法运算。单击按钮元素以显示数字,并相应地执行所需的操作。计算完成后,您可以单击“等于”按钮来显示最终结果。
# Driver code
if __name__ == "__main__":
# create a GUI window
gui = Tk()# set the background colour of GUI window
gui.configure(background="light green")# set the title of GUI window
gui.title("Simple Calculator")# set the configuration of GUI window
gui.geometry("270x150")# we create an instance of this class
equation = StringVar()# create the text entry box for
expression_field = Entry(gui, textvariable=equation)# grid method is used for placing
expression_field.grid(columnspan=4, ipadx=70)# create a Buttons and place at a particular.
button1 = Button(gui, text=' 1 ', fg='black', bg='red',
command=lambda: press(1), height=1, width=7)
button1.grid(row=2, column=0)button2 = Button(gui, text=' 2 ', fg='black', bg='red',
command=lambda: press(2), height=1, width=7)
button2.grid(row=2, column=1)button3 = Button(gui, text=' 3 ', fg='black', bg='red',
command=lambda: press(3), height=1, width=7)
button3.grid(row=2, column=2)plus = Button(gui, text=' + ', fg='black', bg='red',
command=lambda: press("+"), height=1, width=7)
plus.grid(row=2, column=3)equal = Button(gui, text=' = ', fg='black', bg='red',
command=equalpress, height=1, width=7)
equal.grid(row=5, column=2)clear = Button(gui, text='Clear', fg='black', bg='red',
command=clear, height=1, width=7)
clear.grid(row=5, column='1')Decimal= Button(gui, text='.', fg='black', bg='red',
command=lambda: press('.'), height=1, width=7)
Decimal.grid(row=6, column=0)
# start the GUI
gui.mainloop()
作者图片
要查看关于这个主题的更多信息,我建议查看来自 Geek for Geeks 的参考资料。如果你有兴趣通过视频指南了解这个概念,我建议你在 YouTube 上跟随这个视频指南。如果您想了解更多关于图形用户界面和其他可用选项的信息,请查看我以前的一篇文章,其中介绍了七种这样的工具,以及一些用于项目开发的入门代码。
</7-best-ui-graphics-tools-for-python-developers-with-starter-codes-2e46c248b47c>
3.构建您自己的有声读物画外音:
有声读物画外音项目,顾名思义,会涉及一些文字和语音需求。对于这个 Python 项目,我们将把信息转换成文本,并获得一个您可以自动收听的语音记录。该项目将包括两个主要阶段。
第一阶段是将文本数据转换成音频记录,第二步是将电子书翻译成可读格式。对于第一项任务,我们将使用 Python 来利用 Google 文本到语音转换,而在第二阶段,我们将利用光学字符识别(OCR)技术来实现可能的最佳结果。
从项目的第一阶段开始,我们可以开始探索谷歌文本到语音(GTTS)模块,以实现将文本信息转换为音频文件的任务。一旦我们获得了这个音频文件的可播放版本,我们可以选择保留或删除这个特定的文件。执行以下操作的代码如下。
from gtts import gTTS
import ostext = "Hello! My name is Bharath."tts = gTTS(text)
tts.save("hi.mp3")os.system("hi.mp3")
为了获得更多的信息和了解关于这个库工作的复杂细节,建议通过下面提供的链接查看我以前的一篇文章,这篇文章广泛地讨论了这个主题。
在这个项目的第二阶段,我们将专注于将通常为 PDF(或文本文件)格式的电子书阅读成文本描述,以便 GTTS 模块可以阅读。阅读 pdf 或图像中的信息需要使用光学字符识别(OCR)技术。我们将使用 Pytesseract 模块进行这些 OCR 转换。
Pytesseract OCR 模块是解释视觉信息并从特定图像或文档中提取文本描述的最佳选项之一。让我们用这两种技术计算构建有声读物阅读器项目的最终代码块。
#Importing the libraries
import cv2
import pytesseract
from PIL import Image
from gtts import gTTS
from playsound import playsound# Specifying the path
pytesseract.pytesseract.tesseract_cmd = r'C:/Program Files/Tesseract-OCR/tesseract.exe'
# Reading the image
image = cv2.imread('1.png')
# Extraction of text from image
text = pytesseract.image_to_string(image)
# Printing the text
print(text)# Create the voice_text variable to store the data.
voice_text = ""
# Pre-processing the data
for i in text.split():
voice_text += i + ' '
voice_text = voice_text[:-1]
voice_text
tts = gTTS(voice_text)
tts.save("test.mp3")
playsound("test.mp3")
要了解关于光学字符识别和这个库模块的完整工作过程的更多信息,我建议通过下面提供的链接查看我以前的一篇关于用 Python 进行 OCR 的文章,这篇文章广泛地讨论了这个主题。
4.Python 游戏:
作者截图
在这一节中,我们将讨论几个游戏项目,您可以借助 Python 来构建它们。借助 Python 和它提供给用户的各种模块,你可以构建各种各样的游戏。您可以构建像 hangman、tic tac toe、石头剪刀布等更多游戏,包括更多面向图形的游戏,如借助 Pygame 的 flappy bird 或 Mario 副本。
在本文的第一部分,我们将更多地讨论如何使用 Python 中不同的库来创建自己独特的游戏。借助 Python 中预先构建的库模块(如 turtle 包和 random 库),您可以构建一个具有轻微图形化风格的独特项目。
在下面显示的代码块中,我们定义了一个绘制赛道的函数,一旦赛道完成,我们计划放置几只乌龟,这样它们可以互相比赛。比赛的动作可以用随机库来随机化,每次掷骰子的结果都不一样,因此哪只乌龟赢了比赛每次也不一样。
def treat():
speed(0)
penup()
goto(-140, 140)
for step in range(15):
write(step, align='center')
right(90)
for num in range(8):
penup()
forward(10)
pendown()
forward(10)
penup()
backward(160)
left(90)
forward(20)
turtle1 = Turtle()
turtle1.color('red')
turtle1.shape('turtle')
虽然上面的代码块是我们计划构建的项目的示例代码,但是您可以从这里继续自己的一些独特的想法,或者参考我为万圣节构建的一个有趣的 Python 项目。如果你有兴趣建立一个类似的海龟赛跑项目,请点击下面的链接。这是一个详细的指南,告诉你如何在不需要太多编程知识的情况下,用独特而有趣的想法创建任何类型的 Python 游戏。
对于第二部分,您可以使用 Pygame 构建大量项目。它是 Python 中最好的库之一,允许你在许多不同的游戏项目上工作。你可以用这个游戏库建立更简单的项目想法,或者用深度学习和强化学习构建更复杂的项目。如果你有兴趣了解更多关于开发游戏的知识,以及为什么你应该用 Python 和人工智能自己开发一个游戏,那么请从下面提供的链接查看下面的文章。
</5-reasons-why-you-should-develop-a-game-with-python-and-ai-9f5f276e7637>
5.情感分析:
与我们之前讨论的项目不同,情感分析项目将涉及更多与人工智能相关的其他等效主题,如机器学习和深度学习。然而,我发现可以在许多不同的层次上执行多种多样的情感分析,并且复杂性可以随着任何特定操作的每种变化而不断提高,类似于本文第二点中描述的计算器项目。
让我们首先了解什么是情感分析,以及如何用一个示例代码块在 Python 中执行以下操作。情感分析(也称为观点挖掘或情感 AI)是指利用自然语言处理、文本分析、计算语言学和生物识别技术,系统地识别、提取、量化和研究情感状态和主观信息。
为了执行情感分析的任务,我们可以借助多种方法来获得最成功的结果。通常,对于初学者来说,最好的方法是在清理可用的文本数据并执行标记化的所有基本操作后,从众多的机器学习算法开始。像逻辑回归和朴素贝叶斯这样的机器学习算法是解决这个问题的方法。
我们将在本文中构建的项目将使用自然语言处理工具包的一些元素和内置的朴素贝叶斯算法。我们正在尝试使用电影语料库数据集,并执行某种类型的情感分析。下面显示的完整代码块取自下面的链接。查看以下主题的更多信息和细节。
# Load and prepare the dataset
import nltk
from nltk.corpus import movie_reviews
import randomdocuments = [(list(movie_reviews.words(fileid)), category)
for category in movie_reviews.categories()
for fileid in movie_reviews.fileids(category)]random.shuffle(documents)# Define the feature extractorall_words = nltk.FreqDist(w.lower() for w in movie_reviews.words())
word_features = list(all_words)[:2000]def document_features(document):
document_words = set(document)
features = {}
for word in word_features:
features['contains({})'.format(word)] = (word in document_words)
return features# Train Naive Bayes classifier
featuresets = [(document_features(d), c) for (d,c) in documents]
train_set, test_set = featuresets[100:], featuresets[:100]
classifier = nltk.NaiveBayesClassifier.train(train_set)# Test the classifier
print(nltk.classify.accuracy(classifier, test_set))
如果您有兴趣用更深入的学习方法来处理下面的问题陈述,那么您应该考虑使用 LSTMs 开始寻找解决方案。然后,你可以用一种更复杂的方法来处理下面的问题,这种方法是从序列到序列模型,或者使用一维卷积层等等。作为起点,我建议查看下面的链接,开始使用情绪分析项目的深度学习方法。
如果您有兴趣了解更多关于自然语言处理和其他类似任务的信息,您可以使用 NLP 和深度学习来执行这些任务,请随时查看我以前的一个项目,该项目涵盖了下一个单词预测的主题。在这个项目中,我深入研究了如何在深度学习的帮助下构建下一个单词预测模型,并使用 LSTM 进行预测搜索。
结论:
照片由 Aaron Burden 在 Unsplash
“编写 Python 代码的乐趣应该在于看到短小、简洁、易读的类,这些类用少量清晰的代码表达了大量的动作,而不是让读者厌烦得要死的大量琐碎代码。” —吉多·范·罗苏姆
Python 的简单性允许开发人员直接创建出色的项目。借助 Python 中可用的各种非凡工具,爱好者可以构建他们想要探索的几乎任何类型的项目。由于这种编程语言的多功能性,你可以构建任何类型的人工智能、数据科学、计算机视觉或自然语言项目。
在本文中,我们讨论了如何构建五个不同的 Python 项目,即自动化您的 PC、GUI 计算器、有声读物画外音、Python Hangman 游戏和情感分析。有了代码块、各种引用和其他资源,您应该能够轻松地构建这些项目,而不会有太大的困难。
完成这些项目后,采取一些你自己的选择,并开始探索和尝试这些其他的选择。不断建立越来越多的项目,直到你学到更多。如果你对这篇文章中提到的各点有任何疑问,请在下面的评论中告诉我。我会尽快给你回复。
看看我的其他一些文章,你可能会喜欢读!
</14-pandas-operations-that-every-data-scientist-must-know-cc326dc4e6ee> [## 在各种预算范围内,最适合深度学习的电脑
towardsdatascience.com](/best-pc-builds-for-deep-learning-in-every-budget-ranges-3e83d1351a8) </15-numpy-functionalities-that-every-data-scientist-must-know-f6d69072df68> </17-must-know-code-blocks-for-every-data-scientist-c39a607a844d> </6-best-projects-for-image-processing-with-useful-resources-f860f3dfe977> [## 6 个最佳图像处理项目和有用的资源
towardsdatascience.com](/6-best-projects-for-image-processing-with-useful-resources-f860f3dfe977)
谢谢你们坚持到最后。我希望你们都喜欢这篇文章。祝大家有美好的一天!
从数据科学中赚取收入的 5 种最佳方式!
意见
探索作为数据科学爱好者或数据科学家的五种最佳创收方式!
马特·拉默斯在 Unsplash 上拍摄的照片
近十年来,由于围绕数据科学的大肆宣传和进步,数据科学已经变得非常流行。由于这种快速发展,为有技能的个人创造了巨大的机会。
今天几乎每个人都想成为数据科学家!但是你实现这个目的的必要条件是什么呢?最终,你获得收入的最佳方式是什么,以便在上升到更高的高度时在更高的水平上成功地表现。
如果你好奇什么最适合你,什么是你可以利用的职业选择和机会,那么请继续关注我们为人工智能有志者探索的五个最佳职业选择。
在我们直截了当地回答手头的问题之前,让我们了解一下数据科学到底是什么,以及为什么它会获得持续的炒作和流行。让我们从简单介绍数据科学开始。
如果您已经非常熟悉数据科学及其各种术语,那么请随意跳到涵盖利用数据科学赚取收入的五种最佳方式的部分!
什么是数据科学?
数据科学是一个跨学科领域,它使用科学的方法、流程、算法和系统,从许多结构化和非结构化数据中提取知识和见解。数据科学与数据挖掘、机器学习和大数据相关。
数据科学是将统计学、数据分析及其相关方法统一起来,以便用数据来理解和分析实际现象的一个概念。它使用数学、统计学、计算机科学、领域知识和信息科学范围内的许多领域的技术和理论。
图灵奖获得者吉姆·格雷(Jim Gray)将数据科学想象为科学的“第四范式”(实证、理论、计算和现在的数据驱动),并断言“由于信息技术和数据泛滥的影响,科学的一切都在发生变化”。
在继续下一个主题和下一节之前,我强烈建议查看我以前的一篇文章,该文章涉及了成功数据科学家的五个最重要的特征。这些品质非常重要,将在从数据科学中赚取收入的各种方式中发挥重要作用。
为什么是数据科学?
数据科学被称为 21 世纪“最性感的工作”。数据是这一代人的宝贵资源,它有能力改变或改善整个世界的现状。
几乎每一家公司,无论是小型初创公司还是大型科技巨头,如谷歌、微软、脸书、亚马逊等。和许多其他公司一样,正在投入他们宝贵的时间和全面的资源来聚集熟练的数据科学家。
这些公司的目标是完成令人难以置信的壮举,并利用人工智能和数据科学开发杰出的创新项目,以全面改善社会和整个世界。
人工智能和数据科学是当今发展最快的领域。人工智能的进步正在快速发展。不缺乏开放的职位以及职业机会。
在现代,数据科学和人工智能,以及人工智能相关的子领域,如机器学习、深度学习、计算机视觉和自然语言处理等,都有广泛的机会。
如果你好奇什么最适合你,什么是你可以利用的职业选择和机会,那么请继续关注我们为人工智能有志者探索的五个最佳职业选择。
随着世界上不断产生的所有这些数据,它为熟练的数据科学家开辟了一个巨大的市场。它允许他们积极参与这一演变,并从这一壮观的数据科学领域赚取边际利润或丰厚利润。
在本文中,我们将系统地分解作为数据科学家的五种赚取收入的方法,以及如何利用这些机会为自己谋利。所以,事不宜迟,让我们开始分析这些可能性。
利用数据科学赚取收入的五种最佳方式
1.很酷的数据科学工作
照片由亚历克斯·科特利亚斯基在 Unsplash 上拍摄
作为显而易见的先生,这个条目是显而易见的。在获得该领域的专业知识后,获得一份数据科学工作是获得定期、及时收入的最佳方式之一。
如果你有相关的经验和技能,那么现在是考虑全职工作的绝佳时机。那里有大量的机会,就业市场对熟练的数据科学家敞开大门。
人工智能是当今发展最快的领域。据《财富》杂志报道,统计数据显示,在过去的四年里,人工智能专家的雇佣量增长了 74%。人工智能被认为是当代人的*【最热门】*工作。
对熟练数据科学专家的需求正以前所未有的速度增长。对机器学习、深度学习、计算机视觉、统计学和自然语言处理等人工智能子领域专家的需求和空缺职位每天都在激增。
工作机会不仅限于数据科学家的角色。其他可供有志之士选择的职位包括机器学习工程师或机器学习科学家、应用程序或企业架构师、数据或基础设施架构师、数据工程师、统计学家、商业智能开发人员和数据分析师等。
对高质量数据科学专业人员的需求很高,提供的薪水也很高。如果你有足够的所需教育和资格,或者如果你对自己的技能水平和投资组合有信心,可以通过面试获得一份数据科学工作,这可能是你最好的方法和正确的方向。
2.创业公司
所以,你的预算很少,但想法很棒。想知道你的下一步必须是什么?
还有什么更好的时机来创业呢?你可以成为一名拥有一些数据科学技能和知识的白手起家的企业家。感谢所有的大肆宣传,这是在人工智能领域建立自己的创业公司的最佳时机。然而,这需要一些事实核查和挖掘。
除了技术技能,创业时最重要的品质是各种软技能,如自信和有效的沟通。如果你能够从一个组织那里获得你的想法所需要的资金,那么这将会给你一个坚实的优势。
即使在其他方面也完全没问题。如果你有信心你的人工智能项目可以在你的时间框架内完成,也可以在你的预算内实施,我会高度鼓励和推荐你尝试创业的想法。作为一个个人或与一小群对人工智能感兴趣的伙伴一起开始,并最终成为未来的企业家是一种很棒的感觉。
确保你的想法建立了一个坚实的基础,以产生足够的收入来最初维持和继续你的创业项目的进展,而不做出任何妥协,这是至关重要的。在一天结束的时候,自我满足和对你所感知的事物感到快乐是生活中最重要的事情。
如果你选择继续创业,享受你的创业之路,不要害怕失败。确立你的创业想法和具体计划对你的创业成功和成为成功企业家至关重要。
请随意查看我以前的一篇文章,其中包含了我对人工智能和数据科学的六个最佳创业选择的见解。
</6-best-startup-choices-with-artificial-intelligence-360260ccf89e>
3.实习
对于数据科学领域的有志之士来说,在一家成熟的公司获得实习机会大有裨益,因为它可以帮助你获得相关经验和未来的工作机会。
如果你是一名正在攻读硕士学位或博士学位的学生,或者你已经积极参与了许多与数据科学相关的项目,那么你最好更多地接触这个行业。因此,作为一名数据科学家,你应该考虑实习机会,以发展工业层面所需的基本技能。
数据科学实习是与该领域的专家一起工作并分析必须执行的各种复杂任务的绝佳机会。它还提供了一个极好的机会来处理实时问题,并衡量全面深入的理解和经验。
类似于各种工作机会和创业选择,有很多实习选择。通常,人们更愿意加入任何有机会获得的实习。然而,强烈建议你瞄准一个你未来有强烈兴趣从事的实习。
如果你对特定的研究分支或特定领域感兴趣,如计算机视觉、自然语言处理、机器人人工智能、与人工智能集成的物联网或其他类似方面,那么就争取在各自感兴趣的学科和领域获得实习机会。
除了被动的收入和现实生活的曝光之外,在一家成熟的公司或组织实习的最大好处是,将同样的实习转换为全职数据科学工作的可能性很高。这种转换能力基于你的表现和技能。所以,不要忽视这些实习机会,充分利用它们!
4.当自由职业者
埃菲社在 Unsplash 上拍摄的照片
作为一名自由代理人,去开放的世界探索你喜欢的各种数据科学项目。
自由职业者是个体经营者,不为任何特定的雇主工作。有大量的选择和选项供他们选择,尤其是在数据科学领域。这些可能不同于自然语言处理、图像分割、计算机视觉等项目。
选项还包括帮助某人完成学校作业或辅导某人与数据科学相关的特定主题。收入显然因项目而异,但这是一种学习和探索新领域的有趣方式。
数据科学和 Python 的自由职业市场非常开放。数据科学自由职业者的门口有无数的机会等着你。最重要的一步是找到一个独特的利基市场,并适应各自的市场。
此外,你可以赚一些钱,这是一个双赢的局面。初学者、中级开发人员或专家都可以将自由职业视为自我发展、学习和赚钱的可行选择。你的工资或收入因每个项目而异。
自由职业最大的好处是你可以协调自己的工作。你也可以决定每个任务或项目的价值,然后决定相应地协商你的报酬。在成功完成分配给你的自由职业项目的同时,可以建立很多机会和有用的联系。
寻找自由数据科学或 Python 在线工作的最佳地点是像 freelancer.com 或 Fiverr 这样的网站。如果你正在寻找一种更直接的方法,在你感到舒适和自信的特定领域获得一份自由职业数据科学工作,那么你最好建立更多的联系,接受公司、组织或初创公司提供的任务和项目。
最初的旅程可能会有点艰难,但这确实是你可以克服的。一个自由职业的数据科学家最重要的方面是有效沟通的能力,并根据需要遵循指示。培养一些毅力和做出艰难决定的能力。你将能够取得伟大的成就,最起码,在学习和探索的同时获得一些体面的收入!
5.内容创作
威廉·艾文在 Unsplash 上的照片
运用创造性和分析性思维制作独特、创新的内容,造福大众!
这是一个稍微被低估的方法,但是现在,由于社交媒体和互联网的兴起,内容创作越来越受欢迎和感兴趣。因此,这种方法现在被作为一种赚钱和吸引追随者的实际手段。
内容创建是产生吸引你的购买者角色的主题想法,围绕这些想法创建书面或视觉内容,并以博客、视频、信息图表或其他格式使你的受众可以访问这些信息的过程。
换句话说,内容创作是信息对任何媒体的贡献,尤其是对特定环境中最终用户/观众的数字媒体的贡献。由于数据科学内容的高受欢迎程度以及新用户和关注者的快速增长,它有很大的发展空间。
数据科学中的内容创作可以涵盖多种内容。它可以在 YouTube 等平台上上传数据科学和人工智能相关的视频,撰写关于人工智能和数据科学的博客或文章,发布关于特定概念的故事和书籍,等等。
内容创作的最初旅程需要时间、耐心和奉献。你一开始就获得的收入可能没有你预期的那么高。另一方面,你可能需要投资一些资源来制作更好的内容。然而,最好的部分是,一旦你能够保持精神并努力工作,你将获得体面的收入,如果你变大了,你也可以将其转化为全职职业。
你越有技能和自信,你突破和成功的机会就越大。这个现代时代给内容创作者提供了广泛的机会来探索,通过加速浏览来成长,并实现繁荣和成功。
数据科学中的内容创作需要时间、奉献、技能、天赋和独特性才能脱颖而出。为了成为一名成功的内容创作者,你需要研究并有能力不断学习和探索新的想法。最重要的是,由于数据是一个发展迅速的领域,您需要保持更新!
结论:
由 Austin Distel 在 Unsplash 上拍摄的照片
在本文中,我们讨论了作为一名数据科学家赚取收入的一些方法。这些方法包括技术性方法,如一份很酷的全职数据科学工作或实习,或者自由职业和内容创作中更具创造性和创新性的方法,或者最终将你自己的资源投资于上述项目的组合,以创建一个成功的初创企业。
然而,前面提到的每种方法都有各自的优缺点。每个人的奋斗、胜利和旅程都是不同的。归根结底,创造性、批判性和分析性思维是数据科学家最迷人的特征。
对于一名成功的数据科学家来说,跳出框框思考和实施创新想法的能力是必要的。这些属性是在行业水平上表现突出的一些关键方面。
老实说,在一天结束的时候,追随你的心、激情和梦想是生活中最重要的部分。享受你所做的,一切都会好的。无论你选择哪一个,保持满足和快乐是生活中最重要的事情。
如果你有兴趣追求数据科学和人工智能的未来,我祝你好运。希望你能从这篇文章中受益。走出去,探索世界,选择最适合你的。如果我错过了作为数据科学家赚取收入的其他酷方法,请告诉我。我很想知道,所以请务必在下面留言。
看看我的其他一些文章,你可能会喜欢读!
</10-best-tools-and-technologies-for-data-science-e335fb99c2f2> </15-awesome-python-and-data-science-projects-for-2021-and-beyond-64acf7930c20> </12-steps-for-beginner-to-pro-in-data-science-in-12-months-c6f6ba01f96e>
谢谢你们坚持到最后。我希望你们喜欢阅读这篇文章。我希望你们都有美好的一天!
作为数据科学家兼顾工作和学习的 5 个最大技巧
给有抱负的数据科学家的建议
我个人平衡学习、工作和生活的经验
来源( unsplash )
兼顾硕士学位和全职工作
上个月,我写了关于我参加佐治亚理工学院 OMSCS 项目的兼职硕士学位的故事。从那以后,我收到了更详细地谈论斗争和艰辛的请求。
同时拥有硕士学位和全职工作是很可怕的。作业和截止日期已经占用了我周末的空闲时间。但是尽管我失去了所有的空闲时间,我相信我在生活中拥有更好的待遇。
在石头路的尽头寻找宝藏
我在学习和工作期间经历了改变生活的时刻:我在谷歌换了工作,我向我的女朋友(现在是未婚妻)求婚,由于疫情,我搬到雅加达和家人住在一起。
经过 10 个模块,无数艰难的项目,和 2.5 年的非全日制硕士学习,我终于毕业了。
我努力工作和努力学习的成果。感谢阿尔伯特·宾格尔的图片。
为什么有效的学习和工作很重要?
作为一名数据科学家,这有三个重要原因:
- 首先,您需要不断更新关于最佳实践的知识。你会发现新的 ML 和可视化技术每天都在更新,很容易迷失。
- 第二个,你需要刻意练习,找出知识的缺口。自满是敌人。作为一名数据专家,你需要管理好你的工作和学习。
- 最后,数据科学家是有竞争力和挑战性的。看看与 5 年前相比,LinkedIn 中有多少拥有*【数据科学家】*头衔的专业人士。更不用说需要不断发展的技能集——数据分析、机器学习和软件工程。
不断的创新、审慎实践的需求以及数据领域日益激烈的竞争意味着需要有效地学习和工作。
在学习和工作中保持领先的秘诀
在这篇文章中,我将与你分享五个提高效率的小技巧,告诉你如何在管理你的事业和人际关系的同时,在学习方面表现出色。
1.好好计划你的期望和时间
让期望与你的经理和同事保持一致。
我之所以可以一边工作一边攻读硕士学位,是因为我的经理、家人和女朋友对我的期望一致。
让我给你举个例子。光是拿大师,每周就要占用你至少 20 个小时的时间。这意味着,如果你是全职工作,它很容易占用你的周末和工作日的另一个半天。这不包括因疾病或家庭事件而导致的非生产期。
这就是为什么你应该告诉你的经理,希望偶尔在工作时间有更多的时间学习。这会让你灵活地抽出时间专注于作业或考试。
同样,你也应该安排好和家人及爱人在一起的时间。确保你得到他们的同意,优先考虑工作和学习。
2.稍后设计第一个代码。
创建设计文档将让您了解您的目标,从而消除时间沉淀并产生影响。
让我们假设你收到了一个新项目。理解了问题之后,您开始编写代码,希望能够快速解决您的项目。
但是后来你意识到你引入了很多 bugs 开源软件包被破坏,支持是可怕的。绝望中,你花了几个星期排除故障。
完成后,你意识到你的作业只分配了 20%的代码评分方案。心怀不满,你又花了一整夜写了一份草率的报告。
这个错误是不必要和昂贵的,但我发现这是常见的。
相反,您应该在构建项目时将目标以设计文档的形式表达出来:
- **目标:**你为什么要建这个?
- **最小可行产品:**对你的受众来说,什么是重要的?
- **研究和探索:**有什么时间和资源可以利用?
- **里程碑和成果:**能实现什么?
- **结论:**有什么总结?
作为一个例子,你可以查看这个设计文档 收集并分析 Yayasan Merajut Hati Instagram 数据 。
我为 Yayasan Merajut Hati 创建的设计文档样本(来源于作者)
3。批量你的对焦时间
生产力=时间*专注
如果你是一个早起的人,不要在晚上进行高强度的编程。你会陷入时间陷阱,制造不必要的错误。
相反,把你的生产时间分配给密集的任务。你会做得更多。
就我而言,我通常早上 8 点来上班,下午 4 点下班。这是为了在早上我效率最高的时候专注于复杂的代码片段或设计文档。然后我用下午的时间放松、锻炼和管理电子邮件。
通过为工作、学习和人际关系分配时间,你会完成更多的事情。
注: 有很多天你会觉得不管时间批次都不思进取。在这种情况下,休息,善待自己,必要时请几天假。
4。投资更好的学习策略。
对每一项都有一个好的技巧会让你养成习惯去改善和修剪低效的部分。你会学得更快,并在你的领域出类拔萃。
记笔记和最大限度地利用注意力是很重要的。您可以投资这些工具来管理您的任务和笔记:
- 日历应用(Google Calendar/Keep): 花时间和自己安排会议为专注时间(通常我会放勿扰时间)。为你的待办事项分配时间跨度,坚持你的时间表。
- 管理任务(看板/Trello) : 在仪表板中组织您的每日/每周/每月任务。
- 记笔记(漫游/黑曜石):使用 Zettelkasten 方法记笔记。 Zettelkasten 是一种使用链接笔记的笔记方法,它建立了易于检索的知识存储(想象一下建立自己的图书馆语料库)。建议你用黑曜石(免费)或者 Roam(付费)来实验。
5。让志同道合的朋友和同事参与进来
艾伯特(我最好的朋友)和我在星期六早上一起学习 OMSCS
承认你的弱点,人无完人。找到能帮助你的人,并感谢他们。你的人际关系是你最大的资产,让你不断前进。
我和艾伯特·宾格尔和拉农·西姆一起学习。他们是同样的朋友,在我因学习和工作而陷入深深孤独的时刻,他们一直陪伴着我。没有上帝的恩典和这些人际关系,我不可能超越今天的我。
同样,你应该向朋友寻求学习。目标越接近,越应该寻求帮助,一起坚持下去。一起坚持比独自奋斗更有力量。
总结:学习和工作就是持之以恒
周末用来学习和做项目。为了寻求新的知识和技能,牺牲了大量的闲暇时间。但是回顾奋斗的历程,我坚持了下来……我成长了。
通过这篇文章,我希望你学会:
- 好好计划你的期望和时间:让你的期望与你的经理和同事保持一致。
- **以后再设计第一个代码:**理解你的目标,避免时间下沉,交付影响。
- **批量你的专注时间:**生产力=时间*专注
- **投资于更好的学习策略:**培养习惯,改善和减少低效
- 让志同道合的朋友和同事参与进来:你的人际关系是你前进的最大财富。
感谢 Albert Bingei 修改这篇帖子。
索利·德奥·格洛丽亚
来自作者的更多提示:
关于作者
我用 ML @ Google 对抗网络钓鱼。
我热爱我的工作,因为我使用先进的 ML 算法和 MLOps 来保护 Chrome、Gmail 和 Android 用户免受钓鱼攻击,窃取弱势群体的生活积蓄。
我也是一名面向数据科学媒体的作家,为全球 50 多万观众的有志 ML 和数据从业者提供指导。
在我的空闲时间,我写中型文章,在 Kaggle 上编码,为铁人三项/自行车旅行训练。
最后,请通过 LinkedIn 、 Medium 或 Youtube 频道联系文森特
帮助你掌握熊猫图书馆的 5 本书
超越“进口熊猫作为 pd”
成为一名数据科学家后,即使只是很短的一段时间,有些事情也会成为你的第二天性。例如,当你分析数据时,你的眼睛被训练来寻找模式和检测异常,你习惯于知道如何处理数据集中缺失的数据点,并且——如果你在旅途中使用 Python 你习惯于编写import pandas as pd
作为你的第一行代码。
Python 是一种非常流行的编程语言,它有成千上万的库,几乎可以满足您使用代码完成的任何事情。但是,当我们谈论一个特定的领域,即数据科学时,一些库和模块比其他的更为人所知和使用。有些我们甚至默认连接到现场。
例如,如果我说我正在使用 Python 来构建一个数据科学项目,那么很有可能,我将在我的代码中的某个地方以某种方式使用 Pandas 库。Pandas、Matplotlib、NumPy、SciPy 和其他是数据科学项目中经常使用的著名 Python 库。事实上,大多数数据科学项目使用所有 4 个库。
</5-new-data-science-books-that-you-should-consider-reading-c90aec1d5b0d>
因为这些库对于外业来说非常重要(至少目前如此),所以知道如何正确使用它们可以使您的工作流程更加高效。正如我经常说的,如果你想学习任何关于数据科学的东西,有各种类型的方法可以采用;你可以看一段 YouTube 视频,读一篇博客文章,或者看一本书。
在本文中,我将重点讨论后者。书籍是很好的学习资源,因为它们把你需要学习的所有信息都集中在一个地方。因此,我将向您提供 5 本书,帮助您掌握熊猫图书馆,并帮助您成为数据处理大师。
第一册:熊猫的动手数据分析
让我们从彭博的数据科学家和软件工程师斯蒂芬妮·莫林的一本书开始吧。斯蒂芬妮写这本书是为了帮助初学者建立一个坚实的熊猫基础,以及如何用它们来处理不同大小的数据集。如果你刚刚接触数据科学,但已经掌握了一些 Python 知识,这本书是我最喜欢的。
这本书涵盖了所有基本的数据操作主题,如 EDA(探索性数据分析),统计学基础,处理数据点,应用一些机器学习算法,并可视化您的数据。本书的作者斯蒂芬妮有时也会为那些希望通过信息得到指导和支持的人提供培训。这本书的结尾进入了一些高级主题,并且也提到了 Git 和 GitHub。
第二册:学习熊猫
接下来是另一本对初学者友好的书,帮助你建立良好的数据分析基础,这是学习熊猫作者迈克尔·海特。Michael 是一名程序员和培训师,写了多本关于数据科学和金融的书。这本书的一个优点是,它只关注熊猫的使用,不会让读者对许多库和概念感到困惑。
这本书采用平稳的学习轨迹来解决熊猫的一切问题,从安装库到获取数据(导入、读取、导出),处理杂乱的数据或使用复杂数据结构呈现的数据,分析数据,并找到模式以有效地将其可视化。
第三册:熊猫食谱:使用 Python 进行科学计算、时间序列分析和数据可视化的食谱
列表中的下一本书讲述了比前两本更高级的话题,那就是西奥多·彼得鲁的《熊猫食谱》。Teddy 是 Dunder Data 的创始人,这是一家培训和教育公司,致力于学习个人和公司如何更好、更高效地进行数据分析。
这本书从 Pandas 的基础知识开始,通过实际项目解释它,从 Pandas 中的数据类型到利用系列方法、基本数据框架方法,以及选择函数和可视化数据的优化。然后,为了跟上熊猫图书馆的更新, Matt Harrison 和 Theodore Petrou 联手发布了这本书的第二版, Pandas 1.x Cookbook 。
第四册:学习熊猫图书馆
《熊猫食谱》第二版的合著者之一马特·哈里森写了另一本关于熊猫的书,了解熊猫图书馆。Matt 希望为初学者编写一本简单、易于理解、数据量不大的书,这样他们就可以专注于学习数据分析技术和 Pandas 的功能,而不是使用特定的数据集。
由于这种简单性,通过阅读这本书,你可以很快学会熊猫的所有基本知识。这本书的主要重点是提供对熊猫数据框架的清晰理解,如何有效地使用它,并让我们一瞥熊猫在现实生活中的应用有多强大。
</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 数据分析
最后但并非最不重要的是,丹尼尔·陈的书《熊猫为大家》。如果你是数据科学和编程的初学者,这本书非常棒。在本书中,Daniel 将带您并行学习 Python 和 Pandas,以有效利用您的时间。这本书更多的是指导你如何继续你的数据科学之旅。
因为这本书讲述了 Python 和 Pandas,所以有一些章节专门讲述了更多的编程概念,比如数据类型和函数,还有一些章节侧重于数据建模和操作。这本书的伟大之处在于各章之间的过渡看似流畅。最后,作者丹尼尔(Daniel)在 PyCon 2019 上举办了一场研讨会,利用本书中的材料帮助人们开始接触熊猫。
最后的想法
如果您曾经使用 Python 来构建和实现您的数据科学项目,那么您一定使用过 Pandas 库来读取、分析和讨论您的数据。如今,Pandas 是数据科学项目中使用的最著名的 Python 库之一。
</6-best-python-ides-and-text-editors-for-data-science-applications-6986c4522e61> [## 数据科学应用的 6 个最佳 Python IDEs 和文本编辑器
towardsdatascience.com](/6-best-python-ides-and-text-editors-for-data-science-applications-6986c4522e61)
因为 Pandas 是一个广泛使用的库,它处理实现的重要步骤,包括读取数据、清理数据、分析数据以及为处理做准备。如果这一步做错了或者其中有一些错误,那么项目的最终结果将受到严重影响。
知道如何有效地使用 Pandas 并学习它的技巧和诀窍可以在处理 missy 数据集时产生巨大的变化,减少麻烦。这就是为什么我认为每个数据科学家在投入项目之前都应该花一些时间来掌握这些工具,包括熊猫,只是为了更有效地利用他们的时间。
在这篇文章中,我与你分享了 5 本好书,它们将帮助你掌握熊猫图书馆,使处理你的数据变得轻而易举。我希望这些书或至少其中一本书对您的数据科学之旅有所帮助。
5 本书,让你的数据可视化技能更上一层楼
更好的可视化等于更好的沟通
爱德华·豪厄尔在 Unsplash 上拍摄的照片
数据科学最吸引我的一点是,它就像解决一个难题。原始数据是你的线索,其中有一些你需要揭示的秘密模式和趋势,以帮助你在未来做出更好的决策。发现这些模式和趋势基本上就是数据科学的全部内容。
我喜欢通过理解数据试图传达的故事来揭示这些模式。这是每个数据科学项目的首要步骤。当数据科学家第一次看到原始数据和一些需求时,您需要探索这些数据,并试图找出其中是否隐藏了什么。然后你将分析它,应用你的模型并获得一些结果。
有一项技能可以帮助你进行更好的初始数据分析并展示最终结果,那就是可视化。数据可视化是数据科学最关键和最具创造性的方面之一。知道使用什么样的可视化可以帮助您快速找到模式,或者花几个小时甚至几天的时间找到对数据有价值的见解。
</10-newsletters-you-need-to-subscribe-to-as-a-data-scientist-d12c7f33fbab>
这同样适用于展示你的发现。如果你使用正确的视觉化,你将更容易传达你的结果。因此,人们会更好更快地理解它们;因此,提高数据可视化技能绝对是一项值得做的工作。此外,它将帮助你更有效地完成你的工作。
作为一个书籍爱好者,我发展技能的最佳途径就是阅读关于该技能的书籍。因此,在本文中,我将向您推荐我最喜欢的数据可视化书籍,我相信这些书籍将帮助您将数据可视化游戏提升到一个新的水平。
№1:有效的数据可视化:针对正确数据的正确图表
让我们从斯蒂芬妮·d·h·常青树的一本书开始吧,她是一名研究人员,专注于帮助人们通过可视化和图表更好地交流他们的工作。她在这个榜单上的第一本书是 有效数据可视化:正确数据的正确图表 。
虽然,这本书的重点是使用 Excel 图表和图形来改善数据发现交流。你从阅读它中学到的经验可以应用到你正在使用的任何软件和可视化工具中。Evergreen 写的书最好的部分是她如何使用幽默和易于理解的方法来解释概念和传递不同的数据故事。
这本书涵盖了许多概念,从什么是成功的可视化到为您的数据选择正确的图表,颜色如何影响图表,以及如何更好地与您的同事或客户分享您的数据发现。
</9-comprehensive-cheat-sheets-for-data-science-46005d72b485>
№2:用数据讲故事:商业专家数据可视化指南
接下来是 Cole Knafic 的 用数据讲故事:商务人士数据可视化指南 。这本书和它的实践续集将帮助你通过可视化学习令人信服的讲故事的基础。阅读这本书,你将学会如何利用你的数据,并让它讲述自己的故事。
这本书将带你通过步骤来创建吸引人的,信息丰富的,引人注目的可视化应用于现实生活中的问题。你将会学到情境在你的视觉化中的重要性,选择一种图表类型,消除不必要的信息,以及学习如何将你的观众的注意力转移到你的视觉化的要点上。
因此,如果你想知道如何将你的数据转化为高效和难忘的视觉效果,这本书将会给你提供你所需要的所有信息。
№3:数据可视化速写本
由 Stephanie Evergreen 写的另一本好书是 数据可视化速写本 。这本书是为我们这些喜欢在把东西变成视觉图形之前用手画草图的人而写的。它将带您浏览草图、仪表板、幻灯片设计和报告结构。
当我学习如何编码时,我喜欢先用笔和纸来解决它;这样做将有助于我更好地理解这个问题,并找到解决问题的新方法。这同样适用于可视化。这本书将向您展示如何创建一个好的组合,并在同一个信息图或仪表板中适合不同的图表。
№4:更好的数据可视化:学者、研究人员和书呆子指南
接下来是乔纳森·施瓦比什的一本书。经济学家和数据可视化作家。乔纳森的作品帮助你改善他们如何向同事、合作伙伴、客户和选民传达他们的工作和发现。上榜的书是 《更好的数据可视化:学者、研究人员和书呆子指南 。
今天,比以往任何时候,我们需要与世界分享的任何内容都需要可视化,以便传播和被他人理解。任何领域的一个重要分支都是研究。研究帮助我们提出新的算法和更好的解决方案。但是,从来没有人教过研究人员如何更好地展示他们的发现。
</5-books-to-help-you-master-the-pandas-library-acb5c305159b>
№5:共鸣:呈现改变观众的视觉故事
最后但同样重要的是,我一直最喜欢的一本书是传播专家南希·杜阿尔特的《共鸣:呈现改变观众的视觉故事》。创建数据可视化不仅仅是把漂亮的图表放在一起或者用颜色理论做实验;它是关于创建数据的可视化表示,以便您的观众和同事能够记住。
在本书中,Nancy 将教您如何通过使用故事原则来创建记忆数据可视化,如何将您的观众置于故事中,使他们与您的发现相关联,并以结构化、有效的方式与他们交流。
最后的想法
要成为一名优秀的数据科学家,你需要掌握一些技能,这些技能可能看起来不相关,但它们合在一起就构成了数据科学领域。这些技能包括编程、数据可视化、商业模式、数学和统计学。
当我开始我的数据科学之旅时,我需要学习或发展的大多数技能似乎都非常简单。但是,除了数据可视化,我觉得这种特殊的技能需要更多的创造力和视觉智能,我认为我不具备。但是,这让我比其他人更加努力地学习这项技能变得更加重要。
</6-best-python-ides-and-text-editors-for-data-science-applications-6986c4522e61> [## 数据科学应用的 6 个最佳 Python IDEs 和文本编辑器
towardsdatascience.com](/6-best-python-ides-and-text-editors-for-data-science-applications-6986c4522e61)
数据可视化对数据科学至关重要;使用正确的可视化将有助于您更好地理解数据;因此,更快地选择正确的模型,更有效地展示您的发现。在本文中,我分享了 5 本很棒的书,它们可以帮助你将数据可视化技能提升到一个新的水平,成为一个更好的沟通者。
你可以阅读的关于人工智能的 5 本书
跟上时代
Pawel Czerwinski 在 Unsplash 上的照片
书,书,书!在我开始机器学习之旅之前,我从当地的 Waterstones 书店堆积了一堆关于人工智能的书籍。我的想法是尽可能多地收集关于人工智能潜力的知识,以及我是否认为这是我可以做的事情。
三年过去了,我成功地完成了从 post-man 到机器学习工程师的转变,现在我又回到了一些在我的旅程早期启发过我的书籍上。
这里有一些很棒的书,你可以拿起来学习人工智能。
主算法:对 Ulitmate 学习机的探索将如何重塑我们的世界
作者:佩德罗·多明戈斯
来源 : 亚马逊
对于那些害怕决策机器出现的人来说,佩德罗·多明戈斯非常清楚地表明,机器已经深深地融入我们的生活很长一段时间了。平心而论,这是有一定道理的。我们的生活是由算法运行的,当它消耗我们提供的数据时,这些算法正在学习更多关于我们的事情。一些很好的例子是 YouTube、网飞和谷歌。总的来说,这本书涵盖了对一种能够改变机器学习和我们生活的主算法的探索。
如何创造思维:揭示人类思维的秘密
作者:雷·库兹韦尔
来源 : 亚马逊
关于计算机是否能与人类智力相匹敌的观点可能正在慢慢改变。计算机在许多任务上已经超过了人类——玩 Jeopardy 和象棋就是一个很好的例子。埃隆·马斯克关于人工智能将在 2025 年超越人类的评论进一步推动了这一论点。雷·库兹韦尔(Ray Kurzweil)是早期相信人工智能可以超越人类智力的人之一,仅仅是基于模仿负责高阶思维的基本原则和神经网络相对简单的想法。这本书分享了他的见解。
超级智能:路径、危险、策略
作者:尼克·博斯特罗姆
来源 : 亚马逊
超智能计算机通常被描绘成一台肩负接管世界使命的机器。这个想法已经存在多年,但随着我们进入人工智能时代,许多问题正在被提出。尼克·博斯特罗姆试图回答“一旦我们设法制造出比我们更聪明的计算机,将会发生什么?”。他分享了他的想法,关于我们可能需要采取什么行动,它将如何工作,以及为什么必须以正确的方式来保护人类。
生活 3.0:成为人工智能时代的人类
作者:马克斯·泰格马克
来源 : 亚马逊
这本书以一个虚构团队(Omega)的故事开始,讲述了他们如何能够使用普罗米修斯(Prometheus)接管世界——一种超级智能的人工智能,可以学习和设计任何东西。起初,你会认为这本书会像许多关于人工智能的传统电影一样,但马克斯·泰格马克做了很好的工作来引导它的方向。他强调了人工智能的粒度以及它发生的速度。泰格马克认为人工智能可能会改变人类的未来,因此人类理解硬币的两面(赞成和反对)并参与定义我们想要的未来是至关重要的——如果你没有目标,你肯定会错过。
人工智能:关于我们的未来,你今天必须知道的 101 件事
作者 : Lasse Rouhiainen
来源 : 亚马逊
在这份书单上的所有书中,这是我唯一还没读过的一本书。我看到它在 Goodreads 上有很好的评价,就想把它捡起来。从我对这本书的收集来看,它涵盖了人工智能如何改善和改变我们的生活。一些章节包括:人工智能如何改变许多行业,人工智能如何改变我们所知的就业市场,以及机器人&它们将如何改变我们的生活。
最后的想法
很多书的存在是为了帮助你学习人工智能。在每本书中,不同的作者对人工智能对未来的影响都有自己的倾向。我个人的建议是尽可能多的阅读那些详细描述争论双方的书籍,并从中得出你自己的结论。
感谢阅读!
如果你喜欢这篇文章,请通过订阅我的**每周简讯与我联系。不要错过我写的关于人工智能、数据科学和自由职业的帖子。**
相关文章
**</5-free-books-to-take-your-data-science-skills-to-the-next-level-a2026c8cad71> </4-data-related-books-ill-be-reading-in-april-efd06b367e35> https://medium.datadriveninvestor.com/machine-learning-engineers-must-read-these-5-books-583e81922b84 **
关于 Python Timedelta 的 5 个冷知识点
由 anncapictures 在 Pixabay 拍摄的照片
了解 datetime.timedelta 的功能范围
作为 Python 中最重要的内置库之一,“ datetime ”库是任何 Python 学习者的必学之作。在这个库中,表示时间间隔的“ timedelta ”是我最喜欢的模块。它提供了许多有用的功能,让我们能够实现开箱即用的特性,并实现使用模式的最大灵活性。毫无疑问,这个库可以成为任何开发者的“角色模块”,展示什么是“Pythonic”。
对于这样一个常见的库,我相信你一定用过或者已经掌握了。但是,仍然有一些关于“时间增量”模块的“冷知识”需要你去了解。它可能会帮助您在开发过程中节省大量时间。希望这篇文章能有所帮助。
from datetime import timedelta
导入此模块后,我们可以开始演示。
1.时间界限
你应该知道使用 timedelta 定义时间间隔是非常容易的。例如,timedelta(days=1)
表示正好是一天的时间间隔。
但是,你知道 timedelta 其实是有边界的吗?我们可以按如下方式检查边界。
timedelta.min
timedelta.max
如果我们想定义一个超出界限的时间间隔呢?我们试试在上限上加一天。
timedelta(days=1) + timedelta.max
如图所示,Python 将抛出一个溢出异常,因为 timedelta 不是为处理那么长的时间间隔而设计的。它有多大?如果用 9999999999 天除以 365(粗略估计忽略闰年),大约是 275 万年。
嗯,如果我们不使用时间增量来计算一些关于恐龙的历史,那就足够了:)
2.时间分辨率
众所周知,我们可以使用days
、hours
、minutes
、seconds
和microseconds
来定义使用时间增量的时间间隔。顺便说一下,我们不能使用超过days
的单位是有道理的,因为一个月可能有 28-31 天,而一年可能有 365 或 366 天。
但是,我们需要知道 timedelta 的分辨率是微秒。这意味着我们不能使用 timedelta 来处理纳秒。抱歉让物理学家和化学家失望了:)
事实上,我们可以通过调用 timedelta 模块的属性resolution
来获得这个最小分辨率。
如果我们试图让时间间隔小于分辨率呢?这里有一个例子。我们可以试着得到半微秒。
timedelta.resolution / 2
timedelta 对象将简单地变成零,这意味着在这个“间隔”中实际上没有时间跨度。这肯定是真的,因为我们可以通过在分裂后试图将其恢复到 1 微秒来证明这一点。
(timedelta(microseconds=1) / 2) * 2
它仍然是零,因为当我们除以它时,我们失去了它。
3.属性范围
在 timedelta 对象的实现中,days
、hours
、minutes
、seconds
、microseconds
是类属性。这些属性将有自己的有效范围。
这绝对有意义,因为我们知道 1 天只有 24 小时,1 小时包含 60 分钟。然而,即使我们定义了超出范围的 timedelta 对象,我们也不会触发溢出异常,也不会丢失超出的部分。它会自动转换成更高或更低的单位。
例如,如果我们定义一个 1000000 微秒的间隔,正好是 1 秒,我们将简单地得到一个等于 1 秒的间隔。
one_second = timedelta(microseconds=999999 + 1)
如果我们仅使用seconds
属性定义一个间隔,并使其超过 1 天,timedelta 将会很好地处理它。
one_day_and_one_second = timedelta(seconds=86401)
然而,属性seconds
是在时间增量中具有更高优先级的主要属性。这意味着只要间隔少于一天,timedelta 将使用seconds
来指示它,而不是使用hours
或minutes
。
three_thousands_six_hundred_seconds = timedelta(minutes=60)
4.时间增量的操作
在这一节中,我想展示 timedelta 模块是如何灵活的。您几乎可以对 timedelta 对象应用任何类型的数值运算。在上一节中,我们已经定义了一些对象,这样我们就可以在演示中重用它们。
首先,减法会起作用并不会让人感到意外。
one_day = one_day_and_one_second - one_second
这也意味着我们可以像元素是数字一样转换方程。
assert one_day + one_second == one_day_and_one_second
assert one_day_and_one_second - one_day == one_second
我们可以用数字来乘或除时间间隔。比如 1 天 10 次就是 10 天。
one_day * 10
我们可以将时间间隔除以另一个。下面的例子显示了“一天有多少秒”。
one_day / one_second
如果我们想要一个整数,双斜线也给我们一个结果的“底数”。
one_day // one_second
我们甚至可以在 timedelta 对象之间进行模运算。
timedelta(seconds=5) % timedelta(seconds=2)
一些数字函数也可以应用于 timedelta 对象,比如获取绝对值。
abs(timedelta(days=-7))
当您正在获取两个 datetime 对象之间的“差异”并且不在乎哪一个是先例时,这将非常有帮助。
除秒以外的展平时间间隔
有时,出于比较或存储的目的,我们可能需要将时间间隔转换成统一的时间单位。大多数时候我们可以调用total_seconds()
函数将一个 timedelta 对象“展平”成秒。
one_day.total_seconds()
这其实相当于one_day / timedelta(seconds=1)
。因此,我们可以轻松地将 timedelta 对象展平为其他时间单位。例如:
one_day / timedelta(hours=1)
one_day / timedelta(microseconds=1)
5.字符串的时间增量
照片由 nattanan23 在 Pixabay 上拍摄
最后,不仅 datetime 对象可以方便地转换为字符串以供输出,timedelta 对象也可以。
str(timedelta(days=7, hours=10, seconds=30, microseconds=300000))
它可能不完全是您所期望的,因为我们每次开发的应用程序都有不同的需求。然而,这绝对是一种输出时间间隔的有效方法。
同样,我们可以使用类函数repr()
将对象输出为字符串。
repr(timedelta(days=7, hours=10, seconds=30, microseconds=300000))
摘要
在本文中,我假设您已经知道 Python 内置的 datetime 库中的 timedelta 模块。我试图组织一些知识点,这些知识点不太可能被每个开发人员,尤其是学习者所了解,并且在本文中有所解释,比如对象之间的边界和稀有操作。希望它能满足你的一些好奇心。
https://medium.com/@qiuyujx/membership
如果你觉得我的文章有帮助,请考虑加入 Medium 会员来支持我和成千上万的其他作者!(点击上面的链接)