TowardsDataScience 博客中文翻译 2016~2018(三百二十三)

原文:TowardsDataScience Blog

协议:CC BY-NC-SA 4.0

我们的鱼从哪里来?

原文:https://towardsdatascience.com/where-does-our-fish-come-from-9457c90d4ff0?source=collection_archive---------9-----------------------

开放数据的世界异常复杂,任何数据科学家都有可能证明这一点。对于我这个刚刚毕业的理学学士来说,这是一个相对陌生的世界。但本周,在安妮·麦克罗森(数据业务专家、内脏业务的创始人、康沃尔郡开放数据研究所的负责人)的指导下,我试图探索这个世界,以回答一个我长期思考但从未完全理解的问题——我们在英国消费的鱼到底来自哪里?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Over 1.1 million tonnes of fish were landed in the UK in 2016 alone. Can open data be used to discern which fish came from where?

这似乎是一个简单的问题,任何人都可以在超市拿起一罐金枪鱼进行检查,但我特别感兴趣的是渔业的整体范围;更具体地说是英国的“五大”:鳕鱼;黑线鳕;三文鱼;金枪鱼;还有小虾和对虾。作为一个国家,我们与这 5 种鱼类紧密相连。它们主宰着英国的鱼类市场,以至于超市已经开始宣传其他鱼类的存在,并且至少应该被考虑。我本人对这个问题很感兴趣,因为我最近完成了一个保护生物学和生态学学位,我的研究侧重于海洋问题。我学到的是,就像开放数据的世界一样,渔业很难理解;进出口似乎在全球范围内随机流动。鱼类资源的枯竭和水产养殖的兴起导致了这种复杂性,但我决定主要关注这五大鱼类的来源,并可能提供一些关于人们应该瞄准(或避免)哪些鱼类的建议!)如果他们想减少他们的环境足迹。

那么,如何使用开放数据来回答这个问题,并以一种易于向更广泛的受众传达的格式呈现它呢?这是我的任务,要理解它,你必须理解什么是开放数据本身。开放数据研究所将开放数据定义为“每个人都可以访问、使用和共享的数据”。看起来很简单,但是对于这个行业来说,现在还是早期,开放数据的世界才刚刚发展起来。存在各种经过验证的政府数据库(【data.gov.uk】、欧盟统计局等),但当前形式的公开数据的问题是很少有人知道去哪里找,更不用说如何解释他们找到的东西了。

我在我的实习培训周期间亲身经历了这一点,这是由埃克塞特大学的就业能力项目设立的,当时我和我的小组在众多数据库中搜寻公司使用塑料的任何证据。从我收集的信息来看,无论如何,在现阶段,企业开放数据库几乎不存在,政府数据库也很难浏览,其中包含大量高度具体的配额、电子表格、调查和各种记录,有时可以追溯到几个世纪前。

培训周让我对数据行业有所了解,但也让我思考我到底应该如何利用它,以及在哪个部门。安妮帮助回答了第二个问题,她说我们将专注于食品数据,但即使在这方面也有太多的工作要做。我花了一段时间进行调查,然后才明白渔业是开放数据供应充足的一个领域。进口数据、出口数据、上岸配额、捕捞配额、生态系统生存能力,凡是你能想到的,都有政府的电子表格。带着一个清晰的问题,我开始了我的数据搜索,寻找我们五大巨头的模式和趋势。

找到一个可行的数据集花了一段时间——有很多,只有一小部分是可下载的,更不用说是可解释的了。然而,在第一天快结束时,我看到了“英国海洋渔业年度统计数据”——这绝对是一个可以追溯到多年前的金矿,尽管附带的档案部分保存了 2012 年之前的数据。

我认为从最基本的层面——消费者本身——开始是值得的。与其他食品相比,普通人每周吃多少鱼,他们在鱼上的花费是多少?这方面的数据大部分是一致的——在某些情况下,年份被分开了,如下图所示,但它确实产生了结果。答案并不令人惊讶——多年来,英国的鱼类消费一直遵循与肉类和奶酪相似的趋势(图 1a、b、c ),保持相对稳定,但价格随着通货膨胀而上涨。最令人惊讶的结果实际上是由我们的鸡蛋消费量带来的(图 1d)——我不知道英国人的平均鸡蛋消费量在 20 世纪末基本上减少了一半。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure 1a: Fish (processed, frozen, fresh + prepared) consumption, per person per week (1960–2015). As with the following graphs, years are denoted by the format in which they are presented in the UK Sea Fisheries Annual Statistics Chapter 4 (hence the “(b)s” and “/s”).

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure 1b: Meat consumption, per person per week (1960–2015) taken from UK Sea Fisheries Annual Statistics Chapter 4.

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure 1c: Cheese consumption, per person per week (1960–2015) taken from UK Sea Fisheries Annual Statistics Chapter 4.

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure 1d: Egg consumption, per person per week (1960–2015) taken from UK Sea Fisheries Annual Statistics Chapter 4.

接着,我转向了鱼本身。从总体数据开始,我转到了 Big 5(cod;黑线鳕;三文鱼;金枪鱼;以及每组的进出口比率。如你所见,最初的图表完美地描述了整个 20 世纪底栖鱼类的开发情况,远洋(开阔水域)和贝类的情况稍好一些(图 2a)。然而,这一趋势在 21 世纪已经稳定下来(图 2b),因此我将重点关注最近的数据。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure 2a: Landings data into the UK by all vessels (1938–2016) acquired from UK Sea Fisheries Annual Statistics Chapter 3.

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure 2b: Overall landings data for the UK (2006–2016) taken from UK Sea Fisheries Annual Statistics Chapter 4.

然而,转到最近的 Big 5 数据(图 3),一些令人吃惊的结果开始显现出来,也许为图 2a 中看到的平稳提供了解释。值得注意的是,这只是 2016 年的数据,然而,在修订了前几年的数据后,我发现 2016 年并不是特别反常,因此我选择只关注今年。我发现,英国船只在国内卸货的数量少得惊人,而且至少可以说,某些鱼类的进出口比率非常有趣。以鲑鱼为例。在过去的五年里,三文鱼碰巧是英国进口和出口最多的鱼类,但我没有发现英国三文鱼真正登陆英国的记录。为什么会这样,很可能与我专业领域之外的经济因素有关,然而这个发现很有趣。更令人惊喜的是在英国使用的英国捕获的黑线鳕的数量。其余 5 个国家的统计数据,例如完全没有英国捕捞的金枪鱼、小虾和对虾,以及英国捕捞的低水平鳕鱼(我们的鱼类资源是出了名的枯竭——再次参见图 2a ),与我之前读到的一致。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure 3: Big 5 Import, UK-caught and Export data (2016) taken from UK Sea Fisheries Annual Statistics Chapter 4.

因此,在发现(黑线鳕除外)我们的鱼并非真的来自英国注册的渔船后,我开始回答我的总体问题——它是从哪里来的?下图很好地说明了这一点。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure 4a: Cod imports (2016) taken from UK Sea Fisheries Annual Statistics Chapter 4.

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure 4b: Haddock imports (2016) taken from UK Sea Fisheries Annual Statistics Chapter 4.

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure 4c: Salmon imports (2016) taken from UK Sea Fisheries Annual Statistics Chapter 4.

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure 4d: Tuna imports (2016) taken from UK Sea Fisheries Annual Statistics Chapter 4.

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure 4e: Shrimp and Prawn imports (2016) taken from UK Sea Fisheries Annual Statistics Chapter 4.

如图所示,鳕鱼和黑线鳕(图 4a,b)显示出类似的趋势,都主要从英国和欧洲进口(黑线鳕显示出英国占主导地位的贸易)。然而,乍一看令人惊讶的是,中国分别是我们第二和第三大最受欢迎的炸鱼薯条来源。这可能是因为他们在全球水产养殖(鱼类养殖)市场的完全主导地位——粮农组织 2011 年的数据显示,中国对全球水产养殖的贡献超过了前 20 名国家的总和。鲑鱼(图 4c)已经被证明是进口和出口最多的鱼类,也主要来自北欧,泰国和加拿大也有所贡献。如前所示(图 3),我找不到英国为自己的三文鱼供应做出贡献的记录。

然而,五巨头中的另外两个成员显示出完全不同的趋势。金枪鱼(图 4d),在最好的情况下也是一种有争议的鱼类,来自世界各地,令人惊讶的是,加纳竟然是我们最大的供应国。事实上,绝大多数英国金枪鱼来自欧洲以外,其他非洲国家塞舌尔和毛里求斯、东南亚国家和厄瓜多尔的贡献也超过了欧洲最大的供应国西班牙。最后,虾和对虾(图 4e)显示了其供应量的最大变化。同样,东南亚是一个关键的参与者(水产养殖也可能是原因,因为数据显示,这些国家都是养虾业的重要投资者),然而,拉丁美洲国家洪都拉斯和厄瓜多尔以及某些欧洲国家也做出了贡献。从这些图表中你可以看到,我个人已经获得了很多关于我们五大成员在到达我们之前会走多远的理解,并且在购买金枪鱼、虾和对虾之前会三思而行。

总的来说,我非常享受我对开放数据世界的探索,以及和 Anne 一起工作的时光。在使用公开数据回答一个问题时,我瞥见了它的潜力,但我也开始意识到这个领域实际上是多么年轻。还有多少其他问题的答案等着从政府数据库代表的迷宫中挖掘出来?如果政府和企业提供更开放的数据源,让现有的数据更容易获取,还能回答多少问题?我刚开始接触开放数据,但我很快就明白了为什么像安妮这样的人致力于发展这个新兴的、令人兴奋的领域。

在我的整个研究过程中,我都有一个日志,包含了我使用过的或考虑使用的所有数据库,以及我在查看它们时的想法。这里可以查看

我的图标和图像主要来自于这个名词项目。每条鱼的单独图像链接(鳕鱼);黑线鳕三文鱼金枪鱼;和小虾和大虾挂钩。

非常感谢安妮·麦克罗森在整个项目中给予的帮助和指导。

你去哪里了?(谷歌知道)

原文:https://towardsdatascience.com/where-have-you-been-google-knows-9bfa0ee59427?source=collection_archive---------3-----------------------

在我打开详细位置共享(作为在我的 Android 手机上使用 Google Now 的一部分)的四年半时间里,谷歌已经对我的位置进行了 740,176 次采样!大约每天 450 个样本,大约每 3 分钟一个。

如果你相信谷歌会保密,那就只用它,等等。所有这些数据对于生活日志记录都非常有用,我将在这里简单演示一下。

如果在斯诺登事件后,你不信任他们,那么现在就关闭位置共享,因为你去的地方不会超过 3 分钟,他们不会知道,或者不会与第三方共享。

映射它

通过 R 分析了所有的数据后,我将粗略地向你们展示我在过去四年半的时间里去了哪里。

我去过的地方:2012 年 11 月至 2016 年 6 月

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

红色越深,我在那里呆的时间就越长(一些最模糊的点和条纹——迪拜、多哈、明尼阿波利斯——是中途停留),但你可以得到比这更精确的结果。

每个国家到底有多少天?以下是我的十大选择:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

想回忆一下你的某次旅行吗?提供的细节可能会让你吃惊。这是我去斯洛伐克布拉迪斯拉发的旅行,回忆起过去两个夏天,我的位置根据一天中的时间用颜色标出:

布拉迪斯拉发:2012 年 6 月

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

光看这个就勾起了很多回忆。

在我在那里的 8 天里,你可以从我的酒店(左上)和客户网站(右下)看到很多白天的旅行(绿色到粉色)。你还可以在可爱的老城区(左下方)周围看到一些夜间蜿蜒的道路(橙色到红色),友好的客户带我去尝试国家饮料 Borovič ka。(谷歌可能也有一些我被扣在鹅卵石广场上的卫星照片,那东西从我的鼻孔里喷出来。)

制图活动

而且不仅仅是空间数据。谷歌试图通过推断活动为你分解样本。并不是每个样本都有这些额外的数据,而且,正如置信值将向您展示的那样,通常并不十分确定您到底在做什么。

这是我过去 12 个月的活动明细,按小时计算:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

不出所料,我大部分时间都在忙着。这相当于一年中将近 70%的时间是坐着度过的(在我看来,这确实包括睡眠)。“倾斜”最有可能是阅读,因为我倾向于躺在床上用手机阅读大量书籍。

我没有车,所以有相当一部分时间我都在步行,尽管这段时间仍然只占一年中 5%多一点的时间。

“骑自行车”的时间很可能是我骑着我的摩托车,或者坐在曼谷的摩托车出租车上,所以我不能在那里申请任何健身积分。

你明白了。您可以看到有许多方法可以将您的数据分割成小块。想试试吗?以下是一些建议。

DIY 技巧

  1. 按照这些说明下载您的位置数据。
  2. 如前所述,你可能有成千上万的位置记录要查阅,所以我不确定 Excel 能否处理好。给 R 一个旋转切片和切块。这篇文章会给你一些提示,告诉你如何用几行代码就能得到地图。
  3. 如果你觉得不太方便,有各种自动化服务,其中没有一个我亲自尝试过,将从你的数据生成热图。这篇文章描述了一个看起来很有趣的。

蚊子在哪里——香港登革热前线:第一部分数据清理

原文:https://towardsdatascience.com/where-is-the-mosquito-hk-dengue-fever-frontline-part-1-data-cleaning-d3dc165ba3db?source=collection_archive---------14-----------------------

第 2 部分:创建 SQLite 数据库第 3 部分:可视化诱蚊产卵器索引

今年夏天登革热的爆发令许多香港市民担忧。根据香港特区卫生防护中心,到目前为止已经有 29 例。这种疾病由登革热病毒引起,可通过白纹伊蚊(一种身体上有白色条纹的蚊子)作为媒介感染人类。在东南亚,它是许多国家的地方病。由于登革热病毒可导致严重疾病,香港政府使用一种名为产卵诱捕器(诱蚊产卵器)的设备监测登革热蚊子的分布,这有助于反映选定区域蚊子的分布范围。

为了抗击这种疾病,了解蚊子的活动区域至关重要。因此,我收集和整理了香港特别行政区食物环境卫生署(FEHD)在 2008 年 1 月至 2018 年 7 月期间的区域诱蚊产卵器指数(AOI)数据,希望找出它们在这些年的大本营。

整个数据清理过程有四个步骤。2008 年至 2017 年的数据从 FEHD 网站下载 PDF 格式,2018 年 1 月至 2018 年 7 月的数据从 FEHD 网站废弃。

下面是下载的 PDF 的样子:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这份双语文档有十页,每一页都有一个表格,由当年每个月每个地点的 AOI 组成。每一页都以一个 FEHD 标题和一个副标题开始,然后是一个表格。在每个表格的最后一行,有一个每月诱蚊产卵器指数(MOI)行,其中包含该年每个月的平均诱蚊产卵器指数。

步骤 1)从 FEHD 文档中提取所需数据

在将文档加载到 Jupyter 笔记本之前,我将其转换为 CSV 格式,以便于数据准备。正如我们在上面看到的,一些数据行(如 FEHD 标题)应该被删除,一些重要的数据需要提取(如副标题“2008 年每月登革热媒介监测”中的 2008 年)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Function ‘matched’ and ‘replace_value’ are created to clean the original dataframe and web scrapped data

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Assigning the dataframe header and drop data that are not needed

尽管原始文档中的每个表格都有标题,但由于 FEHD 标题、副标题及其双语性质的存在,它不能直接用作 dataframe 标题。因此,我从表格中提取了标题的英文部分,并将其设置为 dataframe 标题。然后,使用正则表达式找到不需要的行并删除。如前所述,每个表格都有一个表头。因此,只有第一个表头被保留,而其他表头也被删除。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

当探索数据时,发现一些区域被分成更小的部分,因此相同的位置被不同地调用。例如,“将军澳”分为“将军澳南”和“将军澳北”。根据 FEHD,分区前的“将军澳”现与“将军澳南”相同。为了使十年数据更加一致,这些位置基于最近(2018 年 7 月)的区域划分进行处理,当将该数据集与从 FEHD 网站收集的 2018 年数据相结合时,将再次处理该区域划分。此外,原始列“Locations”有英文和中文名称,中间用“\n”分隔。因此,我把它们分成两个新的栏目,分别叫做“Eng”和“Chi”。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在获取 2018 年的数据之前,这个数据帧不包含告诉我们该行属于哪一年的数据。通过观察数据集,我发现虽然地点数量从 2008 年的 38 个增加到 2017 年的 52 个,但每年都是从地点“柴湾西”开始。意思是找到“柴湾西”的行,我就找到了每年的第一行。这个模式支持我创建新的列“Year”来存储行中相应的年份。

为了更容易识别文档数据和 web 数据,在下面的步骤中,它们将被分别称为“存档”和“当前”。

步骤 2)从 FEHD 网站收集数据

由于登革热在今年夏天爆发,因此也应该收集 2018 年的数据。虽然 2018 年的诱蚊产卵器指数只能从 FEHD 网站收集,但当前数据集和存档数据集之间的差异需要额外的努力才能将它们结合在一起。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

The two Chinese words in “pattern” means “District” and “Month” respectively

首先,BeautifulSoup 帮我删除了 FEHD 网站上的数据。从报废的内容来看,除了 10 行不相关的数据和几个标题行,发现有一个新的栏目叫“区”。区数据在进一步的分析中可能很有用,但是,最好在合并两个数据集后再包含它们。此外,为了将 web 数据与归档数据集相结合,不使用废弃数据的头。由于中文版的标题行具有更易识别的表达方式,所以网站的中文视图用于网页报废。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

The Chinese words in line 5 means “Hong Kong International Airport”

之后,需要所有剩余的数据。每行应包含 1 月至 12 月的位置和诱蚊产卵器指数,因此,列表中的每 13 个数据代表一行。本项目以居民区诱蚊产卵器指标为目标,因此不考虑港区。在合并数据集之前,最后一项任务是确保两个数据集具有相同的标题,并且每一行具有相同的长度。由于该网站是中文版,收集的数据中没有这些地点的英文名称。因此,他们现在将被替换为 NaN。对于要放在“年份”列中的值,肯定是 2018。

步骤 3)组合“存档”和“当前”

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

是时候将数据集合并成一个了。两个数据集有相同的头,所以 pandas.concat()可以很容易地完成这项工作。2018 年似乎有新的区域划分,这意味着同一个地点可能有不止一个名字。再次调用 replace_value 函数,它们现在有了一致的名称。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在是时候填写 web 数据的空英文名称了。为此,需要创建一个名为 translations 的列表,其中包含所有的英文和中文位置。仅在 2018 年有 5 个新地点,因此,它们的翻译是手动输入的。完成后,组合过程就完成了。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

A preview of the combined dataframe

然而,这还不够好。组合数据框架基于 FEHD 表结构,这对于分析来说不够灵活。所以,有了后期创建一个简单 SQL 数据库的想法,我决定做一个改变。

步骤 4)一个新的表格结构

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Three functions are created to serve the purpose of making the new dataframe

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

The process of creating the new dataframe

通过上述功能,您可能会意识到,我将在新的数据帧中创建代表某个位置的特定月份的每一行,并创建一个名为“分类”的列,以根据 FEHD 指南指示诱蚊产卵器指数的级别。将诱蚊产卵器索引从字符串类型转换为浮点类型时,发生了一个意外事件。一个诱蚊产卵器指数有一个错别字,在数字和%之间有一个“/”。这就是为什么“convert_float”函数有第一个 if 语句。

在整个数据清理过程之后,数据帧如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

感谢您的阅读!数据清理已经完成,但是与蚊子的捉迷藏才刚刚开始。在下一篇文章中,我将分享我是如何将数据存储到 SQLite 数据库中的。这是我在数据科学领域的第一个独立项目。对于任何有兴趣加入这个旅程的人,你可以访问我的 Github 来仔细看看代码。

如果任何人有任何想法,请随时分享。我非常愿意倾听和学习:)

蚊子在哪里——香港登革热前线:第二部分建立 SQLite 数据库

原文:https://towardsdatascience.com/where-is-the-mosquito-hk-dengue-fever-frontline-part-2-create-a-sqlite-database-d8d90968ef10?source=collection_archive---------23-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

数据清理过程中,我们从香港食物环境卫生署 (FEHD)可下载的 PDF 文档和网站中,清理并合并了 2008 年 1 月至 2018 年 7 月期间的区域诱蚊产卵器指数(可反映每个月选定区域成蚊的广泛程度)数据。为了有一个更灵活的分析,原来的 FEHD 表结构被改成了这样:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

从上面的快照中,我们可以看到表中有 5600 多行。然而,并非每次分析都需要所有数据(例如,如果您只对 2010 年九龙区的诱蚊产卵器指数感兴趣),每次都将整个文件加载到 pandas dataframe 中并不是一个好主意。因此,我想设计一个 SQL 数据库。对于任何想用数据库做自己分析的人,可以从这个 Github 库下载。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Relational Schema of the AreaOvitrap Database

数据库的表格和关系简单而直接。对于诱蚊产卵器指数,位置和记录的月份和年份构成了分析的背景。香港一般分为三个主要地区和 18 个地区。不过,FEHD 把香港分为 4 个主要地区和 19 个地区,以记录诱蚊产卵器指数。对于每个位置,它属于一个区和一个区域。然而,原始数据不支持针对特定地区或区域的分析。因此,在 Jupyter 笔记本中使用 sqlite3 创建数据库之前,需要准备以下字典:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

The division of districts in Hong Kong according to FEHD

这本字典有三个层次。第一层包括四个主要地区,然后是 19 个区,以及每个区内的诱蚊产卵器位置。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

虽然每个诱蚊产卵器位置都有中英文名称,但地区应该相同。将地区的中文名称与相应的英文名称配对后,地区应根据四个主要地区进行分组。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Generate ID for every district

在为地区和区域分配了 district_id 和 area_id 之后,就该创建数据库了。左边的图片显示了在生成任何 ID 之前的区域匹配,右边的数据帧快照就是结果。您可能会注意到,district_id 包含两个部分。第一部分是地区所属的区域(如 HKD: HK 翁岛 D 伊斯特里茨),第二部分是一个整数。整数部分可以告诉我们一个地区有多少个区(例如,香港岛只有 4 个区,因此香港岛的最后一个区 id 是 HKD04)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在可以创建数据库了。让我们导入 sqlite3 并创建两个函数来简化这个过程。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

表格:区域

区域仅包含代表香港四个主要区域的四行,因此可以手动输入数据。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Creating table ‘Area’

表格:地区

如上所示,如果在上一步中已经在数据帧“district_only”中处理了所需的数据,则可以使用 df.to_sql()方法直接迁移 district 表中的数据。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Creating table ‘District’

表格:位置

对于位置,让我们为每个位置创建一个 location_id,就像 district_id 一样。为此,创建了两个函数来匹配位置和地区,然后生成代码。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

为该过程创建新的数据帧“位置”。它包含每个地点的中英文名称,然后通过检查该地点是否出现在主词典“all_districts”的子词典中,将该地点与地区进行匹配,主词典是在开始时创建的,用于记录所有地区和地点。之后,为了生成 location_id,创建了一个用于 district_id 的列,它使用 district_id 作为基础。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

A snapshot of dataframe “locations “

数据帧“locations”的快照显示,location_id 具有类似于 district_id 的结构,district _ id 是基于 district 具有的位置的数量来决定的。location_id 由两部分组成,第一部分是 district_id,它也反映了 district 所属的区域,第二部分是一个整数。这个整数部分可以告诉我们该地区有多少个位置(例如,对于万佳区(HKD04),它有三个位置)。第一个位置是 HKD0401,第二个位置是 HKD0402,第三个位置是 eis HKD0403)。

当还生成了 location_id 时,不仅表“location”,第四个表“area_ovitrap_index”也准备好被创建。在将 district_id 和 location_id 集成到原始数据帧“data”中之后,表“origin”由 df.to_sql()生成,因此最后两个表可以仅使用 sql 来创建

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在,创建了表“位置”和“区域 _ 诱蚊产卵器 _ 索引”。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Creating tables “Location” and “Area Ovitrap Index”

最后,不要忘记删除“origin”表,它已经做了很好的工作。

【run _ command】【若存在原点则删除表格】

感谢您阅读这个项目的第二部分!这是我第一次独立的数据科学项目。如果任何人有任何意见或建议,我非常欢迎听取和借鉴。此外,对于有兴趣使用数据库进行自己的分析的人,我想提一下,当你在计算区域诱蚊产卵器指数的月平均值(例如,2017 年 7 月的月平均诱蚊产卵器指数)时,你可能不会得到与 FEHD 文件所示相同的结果,但你也会发现所有数据都是正确的。FEHD 在计算每月诱蚊产卵器指数时,可能没有如文件所示进行四舍五入。因此,舍入误差是可能的。

这个项目的最后一部分将是寻找和可视化具有最高诱蚊产卵器指数的位置。我们去抓蚊子吧!

有兴趣加入旅程的人可以访问我的 Github 仔细看看代码:)

蚊子在哪里—香港登革热前线第三部分:可视化诱蚊产卵器指数

原文:https://towardsdatascience.com/where-is-the-mosquito-hk-dengue-fever-frontline-part-3-visualising-ovitrap-index-f04f3295c63a?source=collection_archive---------14-----------------------

这是“独立计划”的第三篇帖子,寻找香港哪个地区的诱蚊产卵器指数最高。对于任何对这篇文章中使用的数据感兴趣的人,欢迎阅读该项目的第 1 部分:数据清理第 2 部分:创建一个 SQLite 数据库

清理完数据放入数据库,终于到了探索香港哪个区域诱蚊产卵器指数最高的时候了。简单回顾一下,诱蚊产卵器指数是由 FEHD 食物卫生署用来了解登革热的分布范围,这种蚊子能够在东南亚选定的地区传播一种常见但危险的疾病“登革热”。该地区诱蚊产卵器指数(AOI)使我们能够找出哪个地区需要更多的蚊虫控制,尽管较高的 AOI 并不意味着一定有登革热。由于数据收集过程是在 2018 年 8 月初,使用的数据是 2008 年 1 月至 2018 年 7 月。FEHD 网站在 8 月份之后已经更改,AOI 分两个阶段收集,并将从 2018 年 9 月开始以计算的平均值显示在网站上。但是,由于该项目使用的是变更前的数据,因此该分析不受影响。

我们先来看一个更大的画面。根据 FEHK 分部的统计,香港总共有 19 个区(对任何困惑的香港人来说,是的,这里有 19 个区)。虽然一些地区有更多的诱蚊产卵器的位置,这是更一致和更符合逻辑的划分 FEHD。

每个地区的全年诱蚊产卵器指数的计算方法是将同一地区的地点的全年诱蚊产卵器指数相加,然后除以该地区的地点数目。例如,湾仔区有三个地点:天后、湾仔北和跑马地。计算这三个地点的全年诱蚊产卵器指数,然后将总和除以 3,即湾仔区的诱蚊产卵器指数。

SQL 不仅可以从数据库中提取所需的数据,还可以有效地支持计算。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

“?” after “LIKE” is a placeholder which represents the years from 2008 to 2017

然后创建一个数据帧来存储这些提取的数据。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在我们可以开始回答这样的问题:

从 2008 年到 2017 年,有哪个地区的 AOI 持续较高?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Top three districts in each year. Black means highest Ovitrap Index, followed by red, and orange.

这个柱状图告诉我们从 2008 年到 2017 年各区每年的诱蚊产卵器指数。因为我们想知道哪个地区的诱蚊产卵器指数比其他地区高,所以每年最高的三个地区被涂上颜色。诱蚊产卵器指数越高,颜色越深。获胜者穿黑色衣服,亚军穿橙色衣服。我们可以看到,前三个区之间的差异并不总是那么大。然而,似乎有些地区比其他地区更具色彩。

我们来做一个简单的计数器,检验一下是否属实。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Districts that have never been top three are not in the Counter

观塘区在 10 年中有 9 年是前三名,但观塘区包括几个位置。在决定整个地区是否需要更多的蚊子控制之前,最好仔细看看这个地区。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Only the highest and lowest Ovitrap Index are presented because the differences between each location are already clearly shown.

2008 年至 2017 年观塘区有三个地点。除 2008 年和 2014 年外,观塘市中心区的诱蚊产卵器指数较蓝田为高。虽然九龙湾在 2014 年后才启用,但观塘中区很可能是观塘区在 2015 年前诱蚊产卵器指数较高的原因。此外,令人担忧的是,去年九龙湾的诱蚊产卵器指数迅速上升,远远超过观塘中区。

我们现在知道观塘区的诱蚊产卵器指数在过去 10 年一直相当高,让我们看看它在 2018 年 1 月至 2018 年 7 月的表现。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

All districts are shown in this line plot

虽然未达到最高指数(北区的 27.6%),但持续上升,今年 7 月成为最高。很明显,观塘区应该有更严格的防蚊措施。结案之前,我们再考虑一个问题。

卫生防护中心表示,今夏大部分登革热个案在黄大仙(黄大仙区)和长洲(离岛区)。正如我们从下图所见,高诱蚊产卵器指数并不一定会导致登革热爆发,但高诱蚊产卵器指数地区的潜在风险不容忽视。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

虽然黄大仙在地理上接近观塘,但如果黄大仙爆发的登革热蔓延至这几年诱蚊产卵器指数高企的观塘,情况会非常令人担心。虽然这似乎不会发生,但打安全牌并没有错。为了应对这种令人担忧的组合,让我们更仔细地看看这两个地区:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

从上述线状图来看,黄田仙中及九龙湾应被视为实施更严格灭蚊措施的首要地区。正如上文所讨论的,九龙湾保持了前一年的势头,但观塘中心似乎受到控制。然而,你可能会注意到右边的红点代表油塘有一个可怕的 AOI。这是 2018 年 6 月之后才记录的,所以那里的蚊子控制可能比其他地方少。相信油塘并不是唯一的个案,因此,要更全面了解香港蚊患的范围,诱蚊产卵器应监察更多地区。

由于导致登革热在一个地区爆发的因素很多,诱蚊产卵器指数只是其中一个有用的监测工具。不过,如果诱蚊产卵器指数能有效地运用,灭蚊工作便可以更有效率地进行。

感谢阅读。这是我第一个独立项目的最后一部分。这一次,我们发现了需要更多和更严格控制蚊子的地点。虽然还有很多探索没有涉及,但我希望这个项目也能告诉你为什么诱蚊产卵器指数和监测 Aedine 蚊子很重要。对于任何对完整代码感兴趣的人,欢迎访问这个 Github 。还有,如果谁有什么意见,我非常欢迎去听,去借鉴:)

人们对数据可视化和数据科学最感兴趣的地方

原文:https://towardsdatascience.com/where-people-are-most-interested-in-data-visualization-and-data-science-16079ad706e0?source=collection_archive---------4-----------------------

今天,我使用 R 提取了 Google Trends 数据,找到了在“数据可视化”和“数据科学”中搜索次数最多的城市,以及与这两个主题相关的趋势话题。

利益在哪里

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在过去四年中,我们可以看到西雅图、旧金山和华盛顿等美国西海岸城市对数据可视化有着极大的兴趣。东海岸城市波士顿在 2015 年的搜索趋势中排名第一,但随着纽约的兴趣增加,排名有所下滑。芝加哥今年新进入前十名。

包括新加坡、首尔和印度的一些城市、孟加拉、海德拉巴和钦奈在内的亚洲城市也有不错的代表性。

在搜索“数据科学”方面,剑桥和伯克利在过去两年中名列榜首。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

大多数城市,甚至那些在四年中只出现过一次的城市,都在美国,这可以归因于对这个角色的高需求。

硅谷的桑尼维尔市是 Linkedin 和 NetApp 等科技公司的总部所在地,似乎对这个话题的兴趣已经消退。

几个印度城市出现在列表中,搜索量要么下降,要么上升。

哪些话题是热门话题

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2015 年关键词“二战”获得了很多关注,这可能是这部数据即电影。2016 年,用于数据可视化的“虚拟现实”正在升温。今年,视觉分析、SVG、React 等主题的搜索量增加,汉斯·罗斯林的去世也是如此。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

就数据科学而言,教育主题具有很强的吸引力。在在线课程中,人们的兴趣已经从约翰霍普金斯大学的数据科学专业转向了微软认证专家。2016 年搜索研究生教育几乎翻倍。2017 年,人工智能和深度学习成为增长最快的话题。

数据和过程

gtrendsR 包提供对 Google Trends API 的访问,并返回一个数据框架列表,包括一段时间内的兴趣、地理区域的兴趣和相关主题。考虑到较大的国家将有更多的搜索量,使用范围从 0 到 100 的搜索指数来归一化人口效应。API 还将相关主题分为“热门”、“上升”和“突破”。

这将主要反映英语地区的搜索兴趣,因为不使用谷歌或在搜索中使用其他语言的国家不会出现在数据中。

该软件包的一个问题是,它不采用包含其他拼写的组合术语,如“可视化”(而谷歌趋势可以做到这一点)。主要影响澳大利亚。当软件包更新时,我们可以更新。

相关读数

如果你对谷歌趋势感兴趣,你可能会发现这两个很有趣:

xaquín g . v .及其合作者最常搜索的方法

r-blogger 上的 gtrendsR

在视觉方面,这些帖子是相关的:

如何创作 bumpchartviz-a-lot 先生

对多面 ggplot2 内的列进行排序

这是我关于数据科学和视觉故事的# 100 日项目的第 56 天。如果喜欢,请分享。我的 github 上的全部代码。建议和反馈总是受欢迎的。感谢阅读。

我在哪里执行我的模型?

原文:https://towardsdatascience.com/where-the-f-k-do-i-execute-my-model-2591d302bcb1?source=collection_archive---------8-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

或者:走向机器学习部署环境。

现在,机器学习领域的大牌都有自己的数据科学分析环境和生产中的机器学习执行环境。其他人有定制零件的大杂烩,或者足够幸运,现有的商用机器学习环境符合他们的需求,他们可以使用它们。有几个商业可用的数据科学环境,Gartner 在其数据科学和机器学习平台的魔力象限中提到了最知名的参与者(尽管每周都有新的参与者出现)。然而,这些平台中的大多数(如果不是全部的话)都受到限制,这可能会阻止一些行业采用它们。这些平台中的大多数都有一个前提,即它们将在单个云(无论是公共云还是私有云)上执行所有内容。让我们来看看为什么不是每个用例都是这样。

一些机器学习模型可能需要远程执行。让我们以自动驾驶汽车行业为例。延迟和安全性阻碍了云中的执行(除非云是车载的)。一些工业用例可能需要以边缘计算或雾计算的方式执行模型,以满足延迟需求。某些行业的数据敏感性可能需要在客户设备上执行某些算法。除了在云中进行数据科学分析之外,还有许多其他原因可以让您在其他地方执行您的模型。

如前所述,大多数商用产品都不符合这一要求。在现有解决方案的基础上增加一个简单的功能并不是一件小事。在某些情况下,允许这种分布式和异构的分析和部署环境有一些深刻的含义。我们只看一些注意事项。

首先,我们必须认识到机器学习模型和完整用例之间的区别,或者像一些人喜欢称之为人工智能。机器学习模型只是被提供一组数据,并返回一个“答案”。它可以是分类任务、回归或预测任务等。但这是机器学习模型的终点。为了从模型中获得价值,人们必须将它包装在一个完整的用例中,有些人称之为人工智能。您如何可靠地获取所需的数据?你如何呈现或按照模型给出的答案行动?这些以及更多的问题需要由机器学习部署环境来回答。

认识到这一点,部署一个完整的用例首先需要做的事情之一就是访问数据。在大多数行业中,数据的来源是有限的(数据库、web 查询、csv 文件、日志文件等等),处理它们的方式是重复的,也就是说,一旦我找到了一种处理数据库查询的方式,下一次我的大部分代码看起来都是一样的,除了查询本身。因此,数据访问应该由机器学习部署环境来促进,该环境应该提供“数据连接器”,其可以根据需要进行配置,并且部署在数据可用的地方。

一旦您可以访问数据,您将需要关于何时需要执行机器学习模型的“规则”:是一天一次,还是应请求…同样,有许多可能性(尽管当您开始考虑它时,许多都是相同的),但是表达这些“规则”应该通过部署环境来促进,这样您就不必为每个用例重写新的“数据调度程序”,而只需配置一个通用的“数据调度程序”。

现在我们有了数据,我们准备调用一个模型,对不对?没那么快。虽然有些人认为数据准备是模型的一部分,但我更愿意把它看作是一个中间步骤。你为什么会说?原因很简单,因为数据准备是一个确定性的步骤,其中不应该包含学习,而且在许多情况下,您将显著减少该步骤中的数据大小,这些数据是您可能希望存储以监控模型行为的数据。但我稍后会谈到这一点。就目前而言,只需考虑可能需要“数据简化”,而这一点不可能是通用的。您可以将它视为一个预模型,它以一种您的模型可以使用的方式格式化数据。部署环境应该有助于此类组件的打包,并提供轻松部署它们的方法(同样,在任何需要的地方)。

我们现在已经准备好执行机器学习了!您已经从数据科学活动中产生了一个模型,这个模型需要被称为。至于“数据缩减”,应该通过部署环境、打包和部署来促进“模型执行”。

对于那些经历过创建模型循环的人来说,你肯定会有这样的问题:但是你是如何训练这个模型的呢?所以,是的,我们可能需要一个“模型训练”组件,它也依赖于模型本身。部署环境还应该促进培训组件的使用/部署。然而,这回避了另一个重要的问题。用于训练的数据从何而来?如果模型漂移,不再准确,需要重新训练呢?您将需要数据…因此,另一个必需的组件是“数据采样”组件。我说数据采样是因为你可能不需要所有的数据,也许一些样本就足够了。这可以是由模型执行环境提供的,并根据用例进行配置。您还记得之前关于数据简化的讨论吗?嗯,只存储来自简化数据的样本可能是明智的……您可能还想存储由模型做出的相关预测。

无论如何,您将需要一个“样本数据库”,它需要根据用例配置适当的保留策略(除非您想永久保留该数据)。

正如我们所说,模型可能会漂移,因此数据运营团队必须监控该模型/用例。为了方便起见,应该有一个“模型监控”组件,它将从执行环境本身以及示例数据库中获取线索,这意味着您需要一种方法来配置要监视的值。

这些涵盖了所需的最基本的组件,但可能还需要更多。如果您要以分布式和异构的方式部署这个环境,您将需要一些“信息传输”机制或组件,以便在不同的域之间以安全和简单的方式交换信息。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Machine Learning Execution Environment Overview.

您还需要一个模型协调器,它会根据需要放大或缩小所有这些部分。那么模型生命周期管理、金丝雀部署或 A/B 测试呢……你看,这里需要考虑的甚至更多。

需要注意的一点是,即使在这个阶段,您只有模型“答案”…您仍然需要以对您的用例有用的方式使用它。也许它是一个仪表板,也许它是用来启动某个过程的……故事并没有就此结束。

对于我在爱立信的朋友,你可以在我写的关于这个主题的备忘录和架构文档中找到更多的信息:“走向机器学习部署环境”。对于其他人来说,如果你正在建立这样一个环境,我希望这些想法可以帮助你。

封面照片由 弗朗斯·范·黑尔登在佩克斯 拍摄。

原载于 2018 年 7 月 13 日【thelonenutblog.wordpress.com】

在哪里投资放射学人工智能

原文:https://towardsdatascience.com/where-to-invest-in-radiology-ai-31213f4ba7a8?source=collection_archive---------4-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

随着我们到达围绕人工智能及其对放射学领域的影响的炒作曲线的顶点,精明的投资者意识到这一前进空间的危险和陷阱比以往任何时候都更重要。对于所有的梦想和初创企业的咆哮来说,有大量的艰苦工作、监管官僚主义、科学验证和制度偏见需要克服。所有这些都不是不可克服的,但是为了获得最大的成功机会,我们需要后退一步,在决定最佳投资策略之前,调查一下我们的周围环境。

在这篇文章中,我将讨论将深度学习应用于放射学的承诺、希望和严酷的现实,以及在选择下注地点时要寻找的令人兴奋的方面。

大肆宣传

我们现在应该停止培训放射科医生。

我是人工智能在放射学中的巨大传播者,但也是实用主义者和现实主义者。我不同意放射科医生将在短短 5 年内被取代的观点,但我相信放射科医生将在未来十年内得到人工智能难以置信的良好服务和增强。我非常尊敬杰弗里·辛顿;毕竟,他的确是图像感知的教父。然而,他的名言大大夸大了布丁(我相信,如果被追问,他会澄清和缓冲这一声明!).首先,他的言外之意是放射科医生唯一做的事情就是解读图像——这是对整个职业的巨大曲解。他还假设医院会毫无疑问地接受新技术。我只需要指出过去十年对 CADx 软件的极度依赖,就可以证明将新技术注入临床一线是多么困难…

人工智能承诺未来会有巨大的回报,但在可预见的未来不会完全取代放射科医生。是的,放射学正处于需求超过能力一个数量级的转折点,但这正是这个领域如此突出的原因——问题如此巨大,解决方案如此接近!我们当然需要 AI!当然能有帮助!我们当然迫切需要它!但是这些说法实际上并不意味着它会很快发生。这只会助长炒作泡沫。

有些炒作是好的;它有助于推动研究,带来投资,提高意识,创造竞争。但是炒作也是有害的;它会导致过度承诺、缺乏改善当前实践的投资,以及仓促采用不科学的方法来解决问题。

穿越低谷

当我们开始从炒作的顶点跌入幻灭的低谷时,我们将开始看到兴奋随着现实的到来而迅速消退。这是聪明的投资者可以大赚一笔的地方。

这里将有两种主要类型的投资机会:在这种环境下寻求种子资金的公司将必须证明自己比他们的前辈强得多,而迄今为止幸存下来的强者将寻求 A 轮或 B 轮融资以进入下一步。在这个阶段,应该根据他们最初的承诺对他们的结果进行认真的分析,以确保他们是可靠的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在这一点上,我们应该投资什么样的技术进步?会出现哪些在宣传阶段没有预见到的挑战?需要什么类型的基础设施来支持这些公司的扩展?这些是投资者应该问的关键问题,我现在就试着回答它们…

大梦想,小现实,聪明的钱

雄心和远大的梦想在被夸大的种子资金轮中是伟大的,但在幻灭的低谷期就没那么有用了。这个阶段承诺世界的公司需要避开。关注那些已经将他们的眼光锁定在关键问题上的公司,这些问题越小越好。在放射学人工智能中,这意味着几件事:

  • 对特定医学问题的敏锐关注。避免那些声称已经解决了所有问题的公司。相反,寻找那些只在一个问题上有深度的专业知识,并且已经显示出成果的人。您可以在以后扩大这些公司的规模,以解决其他重点问题。一个例子是一家公司声称已经解决了胸部 CT。这是炒作。避免。相反,投资一家致力于解决胸部 CT 成像中一个问题的公司。一个很好的例子是 Arterys 专注于一个问题——在 MR 上测量心脏流量。
  • 尽早与监管机构接触。如果一家公司不知道这些规定或者对这些规定没有准备,那就避开它们。任何为临床目的解读图像的产品都是医疗设备,这意味着需要严格的流程来满足这一要求。只投资那些团队中有人已经成功通过监管领域,或者已经适当聘用,或者已经做出财务安排外包这项工作的公司。没有什么比长达 4 年的意外临床试验更能扼杀一家初创企业。
  • 避免声称要取代人类的公司。没有一家公司的临床诊断设备能够获得 FDA 的批准,而不是由人来监督。相反,为了减轻监管负担,寻找生产软件的公司,这些软件与人类一起工作并增强人类的能力,被称为临床决策支持。这些可能是分类系统,定量分析工具,登记或分割系统。如果你一定要投资诊断服务,一定要有足够的钱——FDA 对 PMA 的收费起价是 25 万美元。祝你好运!
  • 临床上有效的用例。这似乎很明显,不是吗?但是,你不会相信我从初创企业创始人那里听到了多少虚张声势。"我们将通过观察骨密度来测量一个人的年龄."听起来像一个有趣的科学实验——但是临床益处在哪里呢?有人会为这种服务付费吗?难道没有更便宜更简单的方法来达到同样的效果吗?只投资那些拥有强大的科学委员会,并解决了临床问题的公司。确保人工智能是解决临床问题的正确方法,并且问题确实需要解决。避免锤子找钉子。
  • 寻找致力于消除偏见的公司。人工智能有一个巨大的偏见问题——我们可以在大量数据上训练神经网络,但这意味着算法总是偏向于它被训练的人群。在某些情况下,这意味着算法是明显的种族主义者、年龄歧视者、性别歧视者或者更糟。一家拥有减少学习偏差的聪明解决方案的公司将胜过有偏差的算法,更有可能在监管环境中取得成功,并在现实世界中更有用。医学讲究精准,需要精准的工具。
  • 权力属于人民。许多放射学人工智能初创公司从大学和学术机构剥离出来,声称达到“95%的特异性”和其他令人印象深刻的性能指标。这是炒作。避免。检查他们的数据集大小。它远没有大到足以证明任何事情。例如,他们可能只训练了几千张图片。相反——关注那些可能报告较低准确性指标,但可以访问大得多的数据集(想想数百万)的公司。这些公司是现实主义者!当然,数据访问是机器学习中一个至关重要的障碍,但这让我想到了最后一点…
  • 投资将有助于放射学人工智能作为一个部门发展的公司,而不仅仅是终端产品。如果我有一个几百万的基金来投资,我甚至不会去找涉及图像解读的公司。这个领域最需要的不是算法(这些是果实)——而是算法背后的基础设施(树)才是重要的。投资果园!寻找零知识转移数据存储系统的创新解决方案,用于匿名医疗数据的工具,用于访问 EHR 数据的 API,符合 DICOM 标准的区块链服务,以及用于构建临床自由文本的 NLP 服务。这些将是放射学人工智能革命的支柱,找到一家整个行业最终依赖的公司来构建他们的图像解释算法可能会被证明是非常有益的。

如何找到这些公司

所以,你知道要找什么,但是从哪里开始呢?对于种子基金投资,去资源和网络深入放射科医生,科学家和研究人员。在全球范围内,有如此多的医院和研究网络致力于成像领域的深度学习,每个都有一大批科学家,他们只是希望能够将自己的想法推向市场。投资者应该接近大学附属机构、机构合作者甚至科学家本人。Arxiv.org 是寻找科学界有影响力的人的一个很好的方式,也是了解该领域最新研究的一个非常有用的资源(这是我保存的对放射学论文的搜索)。如果你想避免与受资助的大学研究衍生产品相关的重大知识产权问题,那么尽早与研究人员建立关系网对于让他们参与进来至关重要。投资者应该寻求与这些在放射学和机器学习领域值得信赖的人建立合作伙伴关系,并开发一种利用合作伙伴的专业知识寻找新技术的策略(在试图决定是否投资动态对比度增强 MRI 序列的像素聚类分析时,银行学位不会起作用)。

对于首轮融资来说,理想的情况是找到处于隐形模式的公司,而不是那些闪亮的、大肆宣传的、寻求增长的种子基金资助的初创企业。很少有成长期的放射学人工智能公司真正拥有完全监管批准的可上市产品,即使有,也已经超额认购。隐形模式公司是一个更安全的赌注,但更难找到,但同样,这是与科学家建立联系的回报——他们知道谁在建造什么,谁是可信的,谁是该领域的领导者。

我的最后一条建议很简单:做一只乌龟,而不是兔子。你要长期坚持下去。不要期望在 3 年的时间尺度内有显著的回报。分散投资,为 5-10 年(甚至 15 年)的扩张期做好计划。那些现在就进行明智投资、选择能够在重点问题上灵活扩展的公司的人,能够引领市场基础设施。那些急于求成和过度承诺的人只能在以后的日子里迎头赶上。

如果你和我一样对人工智能在医学成像领域的未来感到兴奋,并想讨论这些想法,请联系我们。我在推特@drhughharvey

如果你喜欢这篇文章,点击推荐并分享它会很有帮助。

关于作者:

哈维博士是一名委员会认证的放射科医生和临床学者,在英国国民医疗服务体系和欧洲领先的癌症研究机构 ICR 接受过培训,并两次获得年度科学作家奖。他曾在 Babylon Health 工作,领导监管事务团队,在人工智能支持的分诊服务中获得了世界第一的 CE 标记,现在是顾问放射科医生,皇家放射学家学会信息学委员会成员,以及人工智能初创公司的顾问,包括 Kheiron Medical。

我的深度优先搜索机器学习呢?

原文:https://towardsdatascience.com/wheres-my-depth-first-search-machine-learning-6dd83436adab?source=collection_archive---------2-----------------------

作为一个狂热的图书读者,我对亚马逊这样的商店如何向我推荐与我将要购买的图书相关的书籍有一个问题,无论是以“购买了该商品的顾客也购买了……”还是“与该商品相关的赞助产品”的形式。我认为这些建议以广度优先搜索的方式起作用,就像在*这里你有所有这些关于你想阅读的主题的书,*但在我的情况下,我更喜欢亚马逊根据我正在阅读的作品中引用的内容来推荐书籍,或者深度优先搜索

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

The Unwomalny Face of War

在这一点上,你可能会说……这就是书末参考文献的作用。首先,并不是所有的书最后都有参考书目。第二,我说的是书中引用的作品,作者特别强调了这一点,比如“你应该读一读 ZYX 作者写的这本 XYZ 的书”。一个问题是,很多时候作者并没有明确表达这种观点,但他们只是给你一些线索,说 XYZ 的书对他们很有影响。让我举几个例子来说明我的观点。

我第一次意识到这种需要是在我阅读卡米尔·福涅尔的《经理之路》时。她在导言中写道:

如果你对提高领导力的人员管理方面感兴趣,像《第一,打破所有规则》这样的书是很好的参考。

我看完那句话的第一个想法是:“为什么我在买卡米尔的时候,亚马逊不给我推荐那本书?”

然后我开始读刘慈欣的《三体问题》。在那本书的第一部分,他们提到了另一本名为寂静的春天的书,据《三体》报道,这本书似乎被文革审查过。在不破坏故事的情况下,寂静的春天是故事中非常重要的元素,直到后来我意识到这本书的第一部分实际上叫做寂静的春天

在《三体》中,《寂静的春天》这本书只在这里和那里的角色中被提及,当我们读完这本书的一半时,我们意识到了解它的重要性。虽然阅读《寂静的春天》并不是理解《三体》的必要条件,但这似乎是一本非常有趣的书。所以在读这篇文章的时候,我也在想:“为什么我买《三体》的时候,亚马逊不推荐我那本书?

最后,我刚刚开始阅读诺贝尔奖得主斯维特拉娜·阿列克谢耶维奇的《战争中不具女性色彩的一面》( T1 ),这本书描述了二战期间参战的苏联女性。在介绍中,她写道:

曾经有一本书落到我手里:我来自一个燃烧的村庄,作者 a .阿达莫维奇,雅。Bryl 和 V. Kolesnik。我以前只经历过一次这样的震惊,当我读陀思妥耶夫斯基的时候。这是一种不寻常的形式:这部小说是由生活本身的声音组成的,由我童年时听到的声音组成,由现在在街上、在家里、在咖啡馆、在公共汽车上听到的声音组成。那里!圈子被封闭了。我找到了我一直在寻找的东西。我知道我会的。

阿莱斯·阿达莫维奇成了我的老师…

在这两段中,阿列克谢耶维奇告诉我们为什么那本书很重要,它对她意味着什么,但她不是说你应该读这本书,她只是告诉我们为什么那本书对她的生活有影响。我也想了解那本书,所以你现在可能已经猜到了,我也问自己:“当我买《战争的非女性面孔》时,为什么亚马逊不推荐我那本书?”。

这就是我希望机器学习帮助我的地方。我想要一种足够智能的算法来解析一本书的内容,并且足够好地理解文本的含义,从而知道作者正在推荐一本书,并且能够根据作者对这些推荐的内容进行排名。这意味着,仅仅在一本书上提到一个标题并不足以让它变得有趣:如果作者这么说,它就会变得有趣,无论是明确地说出来,类似于《经理之路》中的内容,还是战争中的非女性面孔;或者像三体问题中那样是隐含的。

所以,亲爱的杰夫·贝索斯,这是我的用户故事,作为一个购书者,我希望亚马逊根据书籍的实际内容向我推荐书籍,而不仅仅是根据人们在你的平台上购买了什么。

这是哪个品种的猫?一个更复杂的认知计算测试用例

原文:https://towardsdatascience.com/which-cat-breed-is-this-a-more-complex-test-case-for-the-cognitive-computing-bce46aa64483?source=collection_archive---------7-----------------------

本周早些时候,我写了一个简单的机器学习实验,试图确定一个给定的图像是否是一个玉米卷。

[## 这是玉米卷吗?自定义视觉的机器学习实验

想知道如何获得机器学习(ML)吗?嗯,现在你可以通过机器学习服务…

medium.com](https://medium.com/towards-data-science/is-this-a-taco-a-machine-learning-experiment-with-custom-vision-d33291a36b9c)

使用相同的基于云的认知机器学习技术,定制视觉,我想处理一个更复杂的场景。

机器学习算法能决定猫的品种吗?

训练数据集

像往常一样,我需要为机器学习算法提供多组图像,以理解它应该学习什么。

首先,我找到了一个猫品种的列表,上面有它们的名字和照片,以此作为我在网上寻找图片的基础。

然后,我去 Flickr 搜索每个品种的名字,用 Chrome 扩展插件从第一页下载图片。

我使用 Flickr 而不是 Google Images 的原因是为了下载高分辨率的图像。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Scottish Fold cats on Flickr

它也更容易瞄准用户上传到 Flickr 上的图片,这些图片比不切实际地编辑过的猫的图片更实用。

花了一个小时左右的时间下载猫的照片后,我不得不策展它们。

显然,我必须删除所有不是猫的图像,这样它们才不会影响训练集。

然后,我去剔除同一场景中同一只猫的图像,实际上只是同一只猫的连拍。

这是为了避免算法过度训练,它会寻找照片的精确匹配,而不是更具预测性。

请记住,机器学习的目的是让算法识别以前从未见过的新信息。

我必须确保的最后一部分是收集至少 5 张特定品种的图像,因为这是您在 Custom Vision 上创建的每个标签所需的图像数量。

我承认数据中存在一些偏差,因为一些普通品种的猫有超过 20 张图片,而一些不常见的品种只有超过 6 张可用的图片。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

A varying amount of training images per breed

这可能会扭曲识别猫品种的结果,但至少我们意识到了算法中的潜在偏差。

所以最后,我收集了 50 种不同猫的 900 多张照片。

一旦我完成了数据收集,我就把所有的图片上传到 Custom Vision,并给每张照片贴上相应品种的标签。

之后,你只需点击一个按钮来训练算法,它就可以在几秒钟内为你运行一个预测。

测试数据集

这就是乐趣开始的地方,我们先来看看算法的性能。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

The result of performance is so-so

基于 900 张图像和 50 个品种标签,该算法的性能预计一般。

我预计性能会很低,因为它不仅仅是从其他物体中识别出一只猫。

对于没有受过辨别差异训练的人来说,察觉猫品种差异的细微差别也是困难的。

所以半信半疑,我决定用算法从未见过的图像来测试算法。

首先是索拉,我的苏格兰折耳猫(我知道)

首先,我用我的猫测试了这个算法,我很确定它是一只纯苏格兰品种的猫。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

53.9% chance that she is a Scottish Fold

用训练集测试我的猫很有趣,因为训练集中所有的苏格兰褶皱都有一个褶皱的耳朵。

我怀疑这有多大的影响,所以我接着测试了我的猫的特写照片。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Only 34.1% chance it’s a Scottish Fold

突然之间,我的猫被预测有很高的几率患 Cymric。

因此,我检查了训练集中所有标记为 Cymric 的图像,发现了一张与她一模一样的猫的图像。

尽管不同品种的猫有着截然不同的外貌,但来自不同品种的两只猫在面部模式上看起来非常相似也是有可能的。

在这种情况下,匹配不幸是巧合,也许更多种类的 Cymric 图像可以避免这种问题。

成功的测试案例

下面让我们快速看一下一些跨不同品种的成功测试案例。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

96.9% Siamese, Credit: Max Pixel

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

99.8% Abyssinian, Credit: Max Pixel

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

99.9% Savannah, Credit Max Pixel

我必须说,当你测试随机品种图像时,这种算法是正确的,感觉很神奇。

然而,该算法并非没有缺陷,所以让我们来看看一些它失败的棘手情况。

失败测试案例

让我们来关注一下暹罗猫,因为该算法在前面的例子中表现得非常好。

首先,从后面来一张暹罗的图片怎么样?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Unlikely a Siamese, Credit Max Pixel

老实说,这并不太令人惊讶。

所有暹罗的训练图像集都让他们的脸朝向相机,而不是看向侧面。

给暹罗猫一个特写怎么样?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

11.1% Siamese, Credit Max Pixel

这个结果好像和之前测试我家猫咪的特写脸差不多。

也许当算法不仅仅看到一只猫的脸来确定品种时,它会工作得更好。

老实说,考虑到暹罗训练集有相似的图像,我认为它不会比 11.1%好多少。

然而,让我们继续测试非猫图像。

狗,兔子,豚鼠

你可能已经意识到每个结果都有一个“猫”标签。

使用自定义视觉,您需要用至少两个标签标记每个图像。

所以让我们用其他毛茸茸的动物照片来测试一下。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

this dog is definitely not a cat, Credit Max Pixel

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

this dog is possibly a cat, Credit Max Pixel

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

this rabbit is definitely a cat, Credit Max Pixel

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

this rabbit is also definitely a cat, Credit Max Pixel

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

this guinea pig is definitely a cat, Credit Max Pixel

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

this guinea pig is unlikely to be a cat, Credit Max Pixel

显然,如果它们看起来足够相似,算法很难区分什么是猫,什么不是猫。

很有可能,经过训练的算法会根据颜色、图案和整体形状来模糊匹配它看到的东西。

裁决

给定一个粗略的训练集,训练后的算法在某些条件下表现良好,可以识别猫的品种。

然而,它没有做好它没有被训练去做的事情,比如区分猫和非猫动物。

因此,在任何人投入时间训练任何机器算法之前,界定它应该能够处理的范围似乎是明智的。

你养猫吗,很好奇算法对它们的照片表现如何?

欢迎在评论中给我发一个图片网址,我会帮你测试的!

我是 Fresh Consulting 的前端开发主管。我写关于有影响力的技术领导()和最新的技术实验。

跟我上 推特

哪个导演拍的电影最好?

原文:https://towardsdatascience.com/which-director-makes-the-best-films-1050e5a73dc4?source=collection_archive---------4-----------------------

看数据来支持我的观点,马丁·斯科塞斯是最伟大的电影导演

我取了自 1960 年以来 12 位最多产导演的电影的 meta scores(Meta critical的加权和标准化的评论家评分平均值),并绘制了如下的方框图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

A box plot of metascores for 12 directors, each point represents a film. The line bisecting the box is the median value, and the width of the box is the interquartile range. Unlike most box plots, all the data points are shown.

谁是最棒的?

斯科塞斯是得分最高的导演,其次是理查德·林克莱特,然后是科恩兄弟。这些导演的顶级电影是**(斯科塞斯)《少年时代》(林克莱特)和**《老无所依》(科恩兄弟)。得分最低的导演是朗·霍华德,他评分最差的电影是《倒叙》。

谁最始终如一?

上图中方框的宽度对应于四分位距,这是数据可变性的一种度量。为了更清楚地了解这一点,我在条形图中绘制了每个控制器的四分位数范围(控制器元得分的 75%位于该范围内):

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Interquartile Range of the metascores of the 12 directors.

最稳定的导演是伊史蒂芬·索德伯格,其次是斯科塞斯和林克莱特。弗朗西斯·福特·科波拉的元得分最多;评分最高的(《教父》** ) 和评分最低的(《杰克》)都是他的电影。**

结论

根据评论家的说法,马丁·斯科塞斯是最好的导演,也是十二位最多产导演中第二个最稳定的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

后记:关于元符号分数的注释

自 1999 年推出以来,Metacritic 为绝大多数电影配乐。然而,在此之前对电影的报道较少。这可能会扭曲那些在 1999 年之前有很多电影的导演的结果。例如,可能存在对过去更受好评和著名的电影的评论的偏见,这可能会使这些电影的导演的分数向上倾斜。

作为一名远程机器学习工程师,我应该使用哪种硬件?

原文:https://towardsdatascience.com/which-hardware-should-i-use-as-a-remote-machine-learning-engineer-35af52301d3c?source=collection_archive---------2-----------------------

数字游牧的前提是伟大的:作为一名程序员,你可以带着你纤薄的 MacBook 去巴厘岛的海滩,在那里工作。但是如果你从事机器学习工作,工作需要昂贵而强大的 GPU 呢?几个选择。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在远程工作甚至四处旅行时,如何处理硬件有多种选择。他们每个人都有自己的优点和缺点,所以我想通过他们。

最显而易见的选择——就像在非偏远的工作场所一样,在你的办公桌旁边放一个结实而强大的塔。当然,它会让你的办公室变热——但你要对自己的硬件负责。你可以随时升级你的机器。另外,如果你做大量的训练,这可能是一个更便宜的选择。

顺便说一下,在海滩和/或咖啡馆工作不再是一种选择——你将被束缚在办公室里。

  • 掌控您自己的硬件
  • 价格

Con

  • 受公职约束
  • 功率和热量消耗

游戏玩家笔记本

如果你想灵活消费,但仍想离线/在自己的硬件上工作,你可能需要考虑游戏笔记本电脑。虽然游戏笔记本电脑过去几乎与塔式机一样宽,使用时电池运行时间不到 2 小时,但现在它们在这方面要好得多!现代游戏笔记本电脑只比传统笔记本电脑宽一点点,电池运行时间通常在 7-9 小时之间!

不过它也有缺点:游戏笔记本经常会有发热问题,而且更容易坏。它们也非常昂贵并且不容易修理。意思是:如果你有灰尘或者短路什么的,你可能不得不买一个 2000 多美元的新笔记本。

Pro

  • 更加灵活
  • 拥有硬件

Con

  • 价格
  • 可修性
  • 供暖问题

笔记本+塔式

如果你是一家拥有几名机器学习工程师的初创公司,这是一个很好的选择。工作时,你坐在任何笔记本上,比如 Macbook。一旦你准备好训练,你就进入了一个强大的 ML 机器,有几个 GPU 等等。该塔可以位于办公室、服务器机房或任何其他地方。

虽然您仍然可以控制您的硬件,并可以随时升级,但您不必担心灵活性、电池运行时间或东西损坏。如果你让你的 MacBook 掉进了海里——买一台新的。培训仍在其他地方进行。

Pro

  • 灵活的
  • 控制硬件
  • 培训与工作机器是分离的

Con

  • 需要互联网连接
  • 两台机器->总价更高

笔记本+ eGPU

如果你是一个单独的工程师,不在团队中工作,你可能不值得买一个塔和一个笔记本。一个简单但仍然灵活的解决方案是外部 GPU!你仍然可以把你的笔记本带到海滩或任何地方,但你可以让你宝贵的 GPU 留在酒店房间里。一旦您准备好接受训练,您就可以插入 eGPU 并开始训练——所有这一切仍然保持对您的硬件的控制。

Pro

  • 控制硬件
  • 培训与工作机器是分离的
  • 比塔式便宜
  • 脱机的

骗局

  • 不完全灵活

笔记本+云[AWS/GCP]

最后一种解决方案也是单身工程师或早期创业公司的首选。

许多云提供商,如亚马逊、谷歌或 Paperspace,允许你在他们的机器上训练你的模型。这是您不必担心自己的硬件的唯一解决方案。这有好的一面也有不好的一面:一方面,你不用担心坏了的 GPU、用电量、散热等等。另一方面,您将无法随时升级您的硬件——提供商决定何时升级以及升级什么。

此外,如果你在一个团队中工作,这可能不便宜。您将为使用云实例的每一分钟付费——让它整夜运行会变得非常昂贵。

  • 不控制硬件
  • 独处时的价格
  • 非常灵活
  • 培训与工作机器是分离的

Con

  • 不控制硬件
  • 团队价格

结论

我曾与许多这样的变体合作过:

  • 当我在 NVIDIA 实习的时候,我有强大的本地机器可以使用。
  • 当我做自己的工作时,我通常在 AWS 上工作
  • 在目前的职位上,我在 GCP 工作

我个人对远程公司的建议是,一开始就使用轻型笔记本电脑和云提供商。它为您的员工提供了很大的灵活性,而且没有人需要维护硬件。

当团队成长时,我也会开始使用共享机器。在某个时候,它会开始为你省钱,但你必须有人来维护它(可能还有一个集中的办公空间),所以这个选项并不适合每个人。

本文首次发表于Remote ml——远程机器学习工程师社区。

执行哪个假设检验?

原文:https://towardsdatascience.com/which-hypothesis-test-to-perform-89d7044d34a1?source=collection_archive---------3-----------------------

各种假设检验的概述,并附有一个单样本 t 检验的例子

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

统计学的目的是根据样本中包含的信息对总体进行推断。用于表征群体的数值度量被称为 参数 。人口参数是:

  1. μ:平均值
  2. 男:中位数
  3. σ:标准偏差
  4. π:比例

大多数推断问题可以表述为对总体的上述参数之一的推断。进行推理的方法分为两类:

  1. 估计人口参数的值
  2. 测试关于参数值的假设

有许多测试可以用来测试假设——但是我们什么时候使用哪种测试呢?这要看我们有什么信息,要检验什么假设。下面的流程图总结了各种假设检验以及何时应该使用。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在本文中,我们将更详细地研究单样本 t 检验****。

单一样本 t 检验

单样本 t 检验确定样本均值是否在统计上不同于已知或假设的总体均值。

假设

双尾单样本 t 检验的无效假设和替代假设为:

**零假设:**样本均值等于建议总体均值

**替代假设:**样本均值不等于建议的总体均值

类似地,我们可以陈述右尾和左尾检验的假设。无效假设和替代假设可总结如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

检验统计量

单样本 t 检验的检验统计量可以使用以下公式计算:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在哪里,

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

将计算出的 t 值与自由度为 *df = n-1 的 t 分布表中的临界 t 值进行比较。*如果计算出的 t 值>是临界 t 值,那么我们拒绝零假设。

例子

在一项青光眼研究中,从 21 名老年受试者的样本中记录了以下眼内压值。根据数据,我们是否可以得出结论,人群的平均眼内压 不同于 14 毫米汞柱?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

步骤 1:测试方法

我们需要使用的检验是一个 对均值 的单样本 t 检验(对均值的假设检验是一个 t 检验,因为我们不知道总体标准差,所以要用样本标准差 s 来估计)。

第二步:假设

列出测试有效的所有假设。即使假设未被满足,我们也应该评论这将如何影响我们的结果。

因变量必须是连续的。

观察结果相互独立。

因变量应近似呈正态分布。

因变量不应包含任何异常值。

第三步:假设

零假设描述了一个关于总体均值的断言。因此,零假设表明眼内压的群体平均值为 14 毫米汞柱,替代假设表明眼内压的**群体平均值不同于 14 毫米汞柱。**它可以用数学公式表示如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

步骤 4:计算测试统计量

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

ȳ =样本平均值= 15.623

s =样本标准偏差= 3.382

n = 21

μ = 14

代入该值,我们得到, t = 2.199

在这种情况下(双尾),p 值是 t 分布两个尾部的面积。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

步骤 5:确定 p 值并与显著性水平进行比较

在计算了检验统计量之后,现在我们可以计算 p 值了(使用 t 表)。t 统计对应的 p 值为 0.0398

那么,p 值是多少呢?假设零假设为真,这是观察样本结果或更极端结果的机会。如果这种可能性很小,我们可以拒绝零假设。

在我们的示例中,p 值是观察到样本平均值为 15.623 毫米汞柱的概率,或者是一个更极端的值,假设真实平均压力为 14 毫米汞柱。

p 值= 0.0398,小于 0.05(我们选择的显著性水平),我们拒绝零假设。有足够的样本证据证明真实平均眼内压不同于 14 毫米汞柱。

我们可以通过使用 scipy 模块在 Python 中实现单样本 t-test。

输出:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

LinkedIn 上连接。

哪几局对赢得 MLB 棒球比赛最有影响?

原文:https://towardsdatascience.com/which-innings-are-most-influential-in-winning-mlb-baseball-games-e1a405b4fdc7?source=collection_archive---------17-----------------------

线性回归可以显示哪些局影响 MLB 棒球比赛的输赢吗?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Image from https://www.covers.com/sports/mlb

不管你在 sabermetrics 的爱与恨的光谱中处于什么位置,都不能忽视它们。每一次击球手的转变,替补投手开始比赛,以及像“发射角度”和“每分钟转数”这样你在一百万年内都不会想到的统计数据给比赛带来了前所未有的价值。棒球迷谈论的 sabermetrics 主要围绕个人击球,以显示什么可以使团队防守更好,或者一个进攻球员打出更多的本垒打,但没有一个真正表明球队在年底会赢得多少胜利。

有很多方法来确定什么将帮助一个团队获胜,但我想更多地关注每一局,以确定哪些局影响输赢。当然,团队希望“赢得”每一局,让他们的团队有最好的机会赢得比赛,但是否有特定的局比其他局更重要?一局中得分或允许得分会影响赢多少场比赛吗?我浏览了 2015-2018 赛季每场比赛的每一局,看看球迷是否应该比其他人更近距离地观看比赛。

一如既往,你可以在我的 GitHub 页面上查看我的代码和更深入的数学分析:https://GitHub . com/anchor p34/Baseball-Reference-Extracts/blob/master/Regression % 20 analysis % 20 on % 20 inning % 20 net % 20 runs . ipynb 这也将是未来更多棒球分析的主要数据来源,可以从我在https://github.com/anchorP34/Baseball-Reference-Extracts 的 web 抓取脚本或 JSON 文件中使用

在看每一局之前,我想看看每个赛季的胜利分布。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Wins for each team for the last 4 years

2015-2017 年的胜利分布彼此非常相似,但 2018 年更加分散。2018 年,巴尔的摩金莺队经历了棒球史上最糟糕的赛季之一,而波士顿红袜队则是最好的赛季之一。看看这两个队在每一局的表现会很有趣。

为了保持主题,看看年度概览,我们可以看看每支球队的总得分,看看进攻与总胜率有多大关系。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Offensive Runs vs Season Wins for each year

如果没有显示每个赛季的最佳拟合线,你就不会说得分越高,赢得的比赛就越多。这与净运行相比如何?净得分的计算是每个队在那个赛季得分的次数减去他们在那个赛季允许的得分次数。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Net Runs vs Season Wins for each year

每个赛季的净得分是一个更好的指标,可以显示一个球队在赛季结束时的总得分。R 平方值是. 908,这意味着净得分可以解释一个赛季中 90.8%的胜率变化。R 平方值越接近 1,变量之间的线性关系越好。作为参考,2018 赛季进攻得分的 R 平方值为 0.704。

我们还可以看到,线性函数是 0.097 *总净得分+ 81.033,这意味着一支球队在一个赛季中的平均胜场数是 81.033 场(几乎正好是一个赛季 162 场比赛的一半),总净得分的每一个正或负变化都会使球队赢得/输掉大约 1/10 的比赛。因此,如果一支球队在赛季中的总净得分是 50,我们预计他们会赢得 86 场比赛(81+50 * 1 = 86)。

不过这只是 2018 赛季。如果我们想把所有的季节放在一起看,净总运行次数会有一点点的变化,但总体趋势是相同的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Net Runs vs Season Wins for all seasons

我们可以看到所有的季节加在一起将给出 0.864 的 R 平方分数,这将是我们前进的基线标准。这将被用来确定是否使用个别局更有助于预测一个球队在赛季结束时将获得的胜利数。

为了分析,我们需要做一个改变。由于有些比赛可以有加时赛,所以我取了每场比赛所有加时赛的净跑,称之为“Net_Inning_10”。单独查看每个额外的一局没有意义,因为有些游戏可以进行 10 局,有些可以进行 18 局,但除此之外,我不需要做太多的数据清理。

由于我们无法真实地可视化 11 维的东西,我们将会看到一个 ANOVA(aanalysisofVariance)图表,该图表显示了我们感兴趣的调整后的 R 平方度量以及系数和度量,以显示每一局的相互比较价值。这是我们基线回归的方差分析图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们最感兴趣的指标用红色方框标出。如您所见,我们有与散点图相同的 R 平方值以及相同的系数(. 094 *总净运行数+ 80.98)。但是,我们将开始查看调整后的 R 平方度量,因为它会惩罚变量数量增加的模型。t 值有助于我们确定每个变量的重要性以及它们是否具有统计显著性。t 越远离 0(正或负),该变量在预测一个赛季的总胜率方面的统计意义就越大。

P >|t|度量是“P 值”,它是该特征的斜率为 0 的概率,这将是一条水平线,因此对预测获胜总数没有影响。统计学家通常使用 0.05 作为该指标的阈值,这意味着任何低于 0.05 的指标都被认为对该回归模型具有统计显著性。

首先,我想看看各个季节,看看我们是否得到相似的结果。以下是 2015 赛季和 2018 赛季的方差分析图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2015 Anova Chart

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2018 Anova Chart

在调整后的 R 平方值方面,我们可以看到,2018 赛季的总胜场数可以比 2015 赛季更好地解释,只要看一下从 2015 年的. 746 到 2018 年的. 912 的每局总净得分。这并不意味着 2018 年是一个更好的分析年,只是意味着每局的净得分比 2015 年的模型更好地解释了 2018 年的赛季胜利。对于统计显著特征,2015 年刚好有第 5 局,而 2018 年是第 1、5、9、10+局。最后,两个模型的每一局的系数都是正值,这意味着不管哪一局,你在那一局的净得分越高,你在年底的胜场就越多。这两个模型没有我想象的那么接近。

既然我们已经看到了每个季节分别建模,让我们一起建模所有的季节。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Regression analysis for seasons 2015–2018

从调整后的 R 平方指标 0.868 开始,这几乎等同于总净运行模型 R 平方值 0.864。为了简单起见,只使用基线模型更有意义,因为您只需要使用一个变量,而不是在完整的模型中使用所有 10 个变量。我们还在最终模型中看到,在预测总胜率时,每一局都被认为具有统计学意义。

如果有一个局的特定子集,比模型中的所有局给我们提供了更好的调整 R 平方值,会怎么样?我能够运行每一个可能的场景,随着每一局的增加,调整后的 R 平方值增加:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

The best feature set for the number of input features of the model

从上到下,我们可以看到第四局本身是最有影响力的一局,调整后的 R 平方值为 0.432。这很有意思,因为在最终模型中还有 5 局比第 4 局更有统计学意义。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Graph showing how the Adjusted R Squared value increases with each additional inning that gets added into the model

您还可以看到,随着模型中要素数量的增加,校正后的 R 平方值也会增加。从这个分析中,我们可以得出结论,最佳调整的 R 平方值将包含所有局的分析。

结论:

模型中最有影响力的四个局是第 5、第 1、第 8 和第 2 局。这些局是有意义的,因为第一局和第二局是投手必须始终面对球队中最好的击球手的时候(顺序中最少 1-6),第五局是先发投手想要结束的一局,因为他们必须投完 5 局才能获胜,第八局之后的得分决定了球队是否需要使用他们的终结者。对于使用这种分析的球队来说,如果他们看起来开始累了,他们需要非常小心第五局的首发投手。从长远来看,搞砸这一局会对他们的赛季总胜率产生严重的影响。

我们还可以看看 2018 年波士顿红袜队和巴尔的摩金莺队的净局数,看看是什么让他们如此不同:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

与红袜队相比,金莺队的这个赛季如此糟糕,原因显而易见。两队之间,有些局彼此接近,但像第 5 局和第 1 局这样最有影响力的局,结果却截然不同。金莺队在可能的 10 局比赛中有 8 局是负的,而红袜队在 10 局比赛中只有 1 局是负的,但即使是这 1 局也比金莺队的一些净局数(-56,-61)少了(-9)。

这一分析的总体信息非常清楚。每一局都对你的团队在年底能否成功有很大的影响。你可能会看到每一年都有不同的价值,但是把所有的年份都考虑进去就会发现每一局都是有价值的。我们也看到了没有必要将每一局都放入一个模型中,而只需要整个赛季的总净得分。如果你想在年底进入季后赛,你需要在每一局持续得分超过你放弃的分数。

欧洲最激动人心的足球联赛是哪个?

原文:https://towardsdatascience.com/which-is-the-most-exciting-soccer-league-in-europe-529c6639e84a?source=collection_archive---------12-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Photo by Thomas Serer on Unsplash

从根本上说,足球是一项简单的运动。你开球,连续打 45 分钟,休息 15 分钟,再打 45 分钟。但是根据比赛地点的不同会有很大的不同。例如:英格兰超级联赛历史上一直以注重比赛的身体方面而牺牲更多的技术和战术方面而闻名,尽管这种情况最近正在发生变化。意大利的意甲联赛被誉为欧洲主要联赛中最具战术性和防御性的联赛。

在本帖中,我将深入数据,分析各个联赛之间的差异,目标是回答以下问题:哪个联赛最值得看?

数据

这个 Kaggle 数据集提供了来自欧洲五大联赛(英、法、西、意、德)的 9000 多场比赛的详细信息。它涵盖了从 2011/12 赛季开始到 2016-17 赛季中期(准确地说是到 2017 年 1 月 25 日)的比赛。理想情况下,我会喜欢更新的数据,但我会在这次分析后努力获取这些数据。

我选择这个数据集是因为它提供了每场比赛的事件级数据,包括投篮次数、黄牌和换人。有了这种详细程度,我可以做很多分析,这是我无法用一个只到游戏级别的数据集做的。

这个数据集相当均匀地分布在五个联赛中,只有一个例外:德国。这是因为德甲是唯一拥有 18 支球队的联赛;其他联盟都有 20 个。少两支球队显然会导致每个赛季的比赛减少。

另一点:英超的比赛比法甲、意甲和西甲略多,因为它是唯一没有冬歇期的联赛。由于这个数据集将于 2017 年 1 月结束,英格兰队将在假期期间比赛,而其他联赛将会休息。其他联盟通常会在赛季末补上这些比赛,但这个数据集并没有考虑到这一点。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这些数据也在不同的季节平均分布,这是你所期望的。2016-17 赛季仅占数据集的 9.7%,而其他赛季占 18.1%,因为该数据集仅涵盖到 2017 年 1 月 25 日。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

哪个联赛进球最多?

对于大多数人来说,更多的目标=更多的兴奋。所以我会先看看每个联赛中每场比赛的平均进球数。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Average Goals Per Game

德甲平均每场 2.87 个进球,远远高于其他联赛。这种超额表现的一部分可能是因为联赛中的球队越来越少,比赛越来越少,但这仍然是一个实质性的差异。法甲联赛场均进球 2.52 个,排名垫底。

在我们给出德甲在这一点上的优势之前,让我们看看得分的分布,即进球在某些比赛中的集中程度。他们是平均分布还是几场比赛进球比例大?这对联赛的观赏性/精彩程度有很大的影响。例如,我们有理由假设零比零平局越少,联赛就越精彩。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Distribution of goals scored in a game

上面的图表显示的是每个联赛中每个可能进球总数的概率。举例来说,图表显示,在意大利,一场比赛有 17%的机会以 1 球结束,有 15%的机会以 4 球结束。在西班牙,一场比赛有 15%的几率有 4 个进球,有 7%的几率有 5 个进球。

我们可以看到联盟中的分布看起来非常相似。它们每个都有一个近似的正态分布,最常见的结果是在一场比赛中打进 2 到 3 个球。一个小的兴趣点:英超是唯一一个比赛进 3 个球比进 2 个球更常见的联赛,尽管只是稍微更常见。

由于上面的分布看起来彼此相似,我们可以说,就进球在游戏中的集中程度而言,各联盟之间没有实质性的差异。

外卖:

  • 德甲和西甲的场均进球数最高,英超接近第三。意甲第 4,法甲最后。
  • 不管是哪个联赛,只有 7-8%的比赛没有进球。

哪个联赛的比赛最接近?

势均力敌的比赛紧张、刺激、有压力。他们很棒。所以让我们看看每个联盟的胜率。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Average margin of victory, in goals, for each league

场均进球数最低的法国队实际上拥有最接近的比赛,胜率为 1.27 球。因此,如果你看一场法甲比赛,你可能会看到稍微少一些的进球,但比赛通常会更接近。因此,对于法甲球迷来说,这并不完全是悲观的。

意大利仅略落后于法国,MoV 为 0.02 个进球。这种差异实际上非常微小,没有统计学意义。Scipy stats f_oneway 函数的 p 值为 0.49。这意味着法国和意大利之间的胜利差距可能只是偶然,而不是由于联赛之间的任何根本差异。类似地,当比较西班牙和德国时,P 值为 0.66,因此这种差异在统计上也不显著。然而,法国/意大利和英国和西班牙/德国之间有显著的不同。

就像我们对进球得分所做的那样,让我们看看胜率的分布,看看是否有任何一个联赛有更大比例的势均力敌的比赛。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Distribution of the margin of victory in a game

各联盟之间似乎没有什么显著差异。

外卖:

  • 最接近的比赛,看法甲或者意甲,他们的比赛是由~1.3 个进球决定的。
  • 德甲和西甲的胜率最大,约为 1.45 球。

哪个联赛的后期进球最多?

目标就是目标就是目标。但是在比赛的余烬中进球,当一支球队拼命想扳平比分或赢得比赛时,那就更好了。所以让我们看看哪个联盟给你最惊心动魄的结局。我将把迟到的进球定义为在第 75 分钟或更晚的时候进球。

首先,不是所有的游戏都有我需要的事件级数据。下图是各联赛此类比赛的场次。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

绝大多数没有高级统计的游戏都来自英超联赛。我认为这不会对分析产生太大影响,因为我更感兴趣的是后期进球的百分比,而不是原始数据,但我不能肯定。如果我有所有比赛的这些统计数据,那肯定是理想的,但是现在,我会对我有这些数据的比赛进行分析。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Fraction of goals that are scored in 75th minute or later

法甲拥有最高的后期进球比例,远远超过其他任何联赛。这对我来说有点意外,因为我预计英超联赛的后期进球比例最高,因为它以快速和激烈而闻名。

我也很想知道如果我们算上上半场的最后 5 分钟,情况会有什么变化。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Goals scored in minutes 40–45 and 75+

如果把上半场结束时的进球计算在内,法国队仍然领先。看起来德国队在 40-45 分钟内的进球相对较少。在之前的图表中,德国和英格兰都徘徊在 23%左右,但在这张图中,德国大大落后于英格兰,29.7%比 31%多。

外卖:

  • 在法甲联赛中,每 4 个进球中就有近 1 个(25%)是在第 75 分钟或更晚的时候打进的
  • 德甲后期进球比例最低,为 22.75%。
  • 德甲联赛在 40-45 分钟内的进球也略少:7%,而其他联赛为 8%。

哪个联赛进球间隔时间最少?

最后,我们来看看哪个联赛的进球次数最多。换句话说,从一个目标到下一个目标你需要等待多少分钟。显然,进球之间的等待时间越短,比赛就越精彩。

下图显示了至少有 2 个进球的比赛中进球的平均间隔时间。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Minutes between goals (in games with 2+ goals)

英超在这一指标上名列前茅,平均每场比赛的进球间隔略多于 22 分钟。另一方面,法甲比赛的进球间隔时间为 24.5 分钟。

注意:对于上面的图表,我没有考虑那些只有一个目标的游戏。“进球间隔时间”的概念在这些比赛中并不适用。但是为了以某种方式将这些游戏结合起来,让我们来看看一场游戏的第一个进球是什么时候打进的。我的假设是,你等待看到第一个进球的时间越少,比赛就越精彩。现在,第 89 分钟的进球可以和第 2 分钟的进球一样令人兴奋,如果不是更多的话,但是我认为如果在前 65-70 分钟没有进球,很多观众会感到厌烦。这就是为什么我认为一个早期的目标对于决定哪场比赛,以及哪一个联盟,最能吸引观众的注意力是很重要的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

When is the first goal scored during a game?

如上图所示,一般德甲比赛的第一个进球至少比其他联赛早一分钟,所以如果你想看到提前进球,德国是最好的选择。

外卖:

  • 德甲比赛的平均第一个进球比任何其他联赛都要早,法甲比任何其他联赛都要早。

结论

如果你想要进球,西甲和德甲是值得看的联赛。如果你希望进球一个接一个的快速到来,这就是英超。如果你想要势均力敌的比赛或者有进球动作的比赛,去法甲吧。

哪种机器学习算法将在 2118 年继续使用?

原文:https://towardsdatascience.com/which-machine-learning-algo-will-continue-to-be-in-use-in-year-2118-59d0461160f3?source=collection_archive---------6-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Image source : Pixabay

那么你脑海中闪现的答案是什么?随机森林、SVM、K 均值、Knn 甚至深度学习及其变种?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Image adapted from imgflip.com

现在你们中的一些人可能会笑着说,你怎么能预测那么远的未来,预测 100 年后的事情是疯狂的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Image adapted from imgflip.com

你凭什么说 2118 年还会继续用回归?

答案是林迪效应。是的,我用来预测这是林迪效应的试探法。

好吧,下一个合乎逻辑的问题是什么是林迪效应?

林迪效应

维基百科对林迪效应的定义如下

“林迪效应”是一个概念,即一些不易腐烂的东西,如技术或想法的未来预期寿命与它们当前的年龄成正比,因此每增加一段生存时间就意味着更长的剩余预期寿命。

我最喜欢的作家之一纳西姆·塔勒布在他的名著《抗脆弱:从无序中获得的东西》中对林迪效应定义如下。

如果一本书已经出版了 40 年,我可以预计它还会出版 40 年。但是,这是主要的区别,如果它能再生存十年,那么它将有望再出 50 年。简单地说,作为一个规则,这告诉你为什么存在了很长时间的东西不像人一样“老化”,而是相反地“老化”。没有灭绝的每一年都会使预期寿命增加一倍。这是某种稳健性的指标。一个物品的坚固程度和它的寿命成正比!

一位名叫呼唤的专家写了一篇关于林迪效应的文章,强烈推荐阅读。

那么,为什么衰退会持续那么久呢

因为它存活了这么久。回归(最小二乘法)作为一个概念最早是由卡尔·弗里德里希·高斯阿德里安·玛丽·勒让德在 19 世纪发明的。他们用它来确定行星和其他天体围绕太阳的轨道。

“回归”一词是由弗朗西斯·高尔顿创造的,用来描述观察到的高个子父亲往往有相对较矮的儿子,而矮个子父亲往往有相对较高的儿子!!

很明显回归已经存在了 200 多年了!!所以根据林迪效应的启发,它还会持续 200 年。所以事实上,我可能有点保守地说,回归将在 2118 年继续使用。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Adapted from Grandpa Meme

回归长寿背后的秘密是什么?

这方面的例子是 2016 年 Kdnuggets 调查的以下报告

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

事实上,在 2011 年 kdnuggets 在进行的另一项调查中,回归紧随其后。因此,通过林迪效应,它在 5 年内成为“更不朽”的排行榜冠军!!

(更新:在写这篇文章的时候,我不知道还有一个 2017 年调查。2017 年的调查也显示回归名列榜首)

回归仍然是广泛使用的 ML 算法。人们使用回归或者继续使用回归是因为

这很简单

高度可理解性(即使是呆伯特的老板也能理解:P)

它工作了

“有效”的部分

不同领域的人们继续使用回归,因为它对他们有用。人们通过使用回归获得了明显的投资回报。例如,在市场营销中,市场组合建模背后的驱动力是回归。这仍然是一种流行的技术,许多快速消费品公司相信 MMM 的输出。其他领域也是如此。如果回归在交付结果时没有用,它将会以渡渡鸟的方式消失。它仍然被工业界和学术界使用,因为“它有效”。

神经网络及其变体呢?2118 年会用到它们吗?

到目前为止,林迪效应对神经网络并不友好,或者让我们称之为人工智能。它已经面临艾冬。神经网络及其变体的寿命受到了 20 世纪“人工智能冬天”的阻碍。这种破坏对于技术或算法的寿命来说不是一个好兆头。

但从光明的一面来看,在过去十年里,人工智能相关的进步越来越强大。而我作为一个永远的学生,继续着迷于最新的人工智能突破。因此,一个安全的赌注可能是,我们可以看到神经网络及其变体再生存 10-20 年,希望埃隆·马斯克表达的“奇点”恐惧不会导致另一个人工智能冬天。

什么可以减轻机器学习算法的林迪效应?

机器学习矫枉过正:是的,林迪效应会因为机器学习算法的错误应用和矫枉过正而减轻。我遇到过人们使用机器学习算法的情况,而简单的常识基线方法可能会奏效。Rama Ramkrishnan 先生在他的文章中很好地抓住了这一本质。

最近流行的数据科学是最性感的工作,这也无助于这项事业。机器学习算法在数据科学家手中已经变得像一把锤子。每件事看起来都像一个钉子。在适当的时候,机器学习的错误应用或过度使用将导致人们在它不提供价值时不再抱有幻想。这将是一个自己造成的“人工智能冬天”。

但是目前回归将会笑到最后,甚至可能在 2118 年。

如果你喜欢我的文章,给它一些掌声,你也可以在下面评论你对这篇文章的看法。

你可以联系我

领英

推特

我的博客:分析洛卡

用机器学习评估 NBA 球员的相似性

原文:https://towardsdatascience.com/which-nba-players-are-most-similar-machine-learning-provides-the-answers-r-project-b903f9b2fe1f?source=collection_archive---------8-----------------------

使用无监督机器学习和主成分分析来确定哪些 NBA 超级明星最相似

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Photo by NeONBRAND on Unsplash

背景

如果你很了解我,你可能会意识到我的篮球爱好已经成为我生活中的一个重要特征。你可能也知道我是多么喜欢记录我最喜欢的球员的赛季平均数据,经常在观看比赛时,每次投篮后都在脑子里计算数据。但这是我第一次使用应用统计学/机器学习(ML)工具来研究 NBA 数据。不用说,我对我们的进展感到非常兴奋。我们开始吧!

定义问题

正如无监督的 ML 项目的性质一样,没有一个特定的预测问题是我们想要解决的。但是,即使没有具体的目标,仍然有很多东西可以从开放式探索中学习。在这个项目中,我们将着眼于 NBA 上一个完整的常规赛的球员统计数据。我们将探索个别球员和他们之间的差异/相似之处,看看这些数据是否符合球迷和专家们认为的 NBA 球员的基本事实。篮球运动的每一个方面当然都不是统计上可以衡量的,在一项团队运动中观察个人数据只能给我们一个更大图景的片断视图。但即使有这些限制,体育数据科学的进步所提供的见解已经彻底改变了现代篮球。鉴于每支球队都向其球员支付数亿美元,所有 NBA 球队(最终都是数十亿美元的企业)都在这一领域投入更多资金以评估其投资(球员)的质量就不足为奇了。在这个项目中,我们将试图得出我们从表面上看数据无法得出的结论,并希望得出粉丝和分析师都感兴趣的发现。

使用的数据集

我们使用了 2017-18 赛季 NBA 常规赛的球员数据,并结合了网站上的三个数据集,篮球参考和【NBAmining.com 。来自 Basketball-reference 的第一个数据集由传统的 NBA 统计数据(得分、篮板等)组成。我们关注的是 36 分钟比赛时间的球员统计数据,而不是平均每场比赛的数据。按每场比赛的分钟数来标准化给了我们一个更公平的代表每个球员的贡献。相反,如果我们看每场比赛的统计数据,像勒布朗·詹姆斯这样打更多分钟的球员在理论上比像斯蒂芬·库里这样在精英球队打球的球员更好,他们通常不会在大获全胜的比赛结束时上场。现在,你可能会说我们的方法对那些打更多分钟的球员不公平,如果勒布朗像库里一样打更少的分钟,而不是在疲惫的边缘被迫打更长时间,他可能会在 36 分钟内打出更好的数据。也有人认为每 100 场比赛的数据是评估球员影响力的最佳指标,因为他们根据球队的节奏来标准化球员的数据。我认为这个标准也有它的缺点,它减少了那些没有得分选项的球员的影响,因此不会习惯于球队不得不匆忙得分的控球。不幸的是,在评估体育统计数据时,我们永远无法完全摆脱这种偏见。但是我们可以尽力减少这些偏差,并在以后评估我们的结果时注意这些偏差。这也是为什么人的因素在评估 ML 结果中至关重要的部分原因。我们正在使用的第二个篮球参考数据集包括来自同一组球员在整个赛季中的“高级”统计数据(使用百分比、总篮板百分比等)。我们使用的第三个数据集来自一个不太知名的网站,名为 NBAminer.com。这一个提供了各种各样的统计数据(快攻点,内线得分等),提供了关于球员影响力的有用见解,这在前两个数据集中没有包括。

“传统”数据集有关于 540 名球员(都是现役球员)的数据,有 29 个特征,“高级”数据集有关于相同球员的数据,有 27 个特征,“杂项”数据集包含关于 521 名球员的数据,有 14 个特征。就像我参与的所有其他项目一样,我乐于探索和改进我的模型。因此,如果你知道任何更多的数据集/统计数据来源,可以纳入这个模型,以更好地代表球员的影响,随时让我知道。

预处理:数据清理和特征工程

该项目将于 R 完成。R 非常适合无监督学习项目,因为数据可视化是 R 的主要优势之一,在这类项目中非常方便。我的 R 代码和情节在 Github 上公开。

**合并数据集并修复不匹配:**我们使用的前两个数据集来自同一个来源,拥有关于相同球员的数据。所以将它们合并在一起只需要一行代码。然而,第三个“杂项”数据集来自不同的来源,因此我们需要解决一些差异。这个新的数据集少了 19 名球员的信息。但是当我们通过匹配球员姓名进行调查时,我们会发现实际上前两个数据集中有 45 名球员在第三个数据集中似乎没有任何数据,反之亦然有 26 名球员。仔细观察,我们发现当名字中包含句点(.)、数值(例如:IV)或后缀(例如:Jr .)。因此,一个数据集中的“JJ Redick”在另一个数据集中被命名为“J.J. Redick”。我们去掉了特殊字符,发现在数据集中仍然有五个球员的名字不同(其中一个因为某种原因决定不包括内内的姓)。所以我们手动修复它们。现在我们只剩下第三组数据中缺失的最初的 19 名球员。如果你像我一样进一步调查这些球员的数据,你会发现他们中的大多数人在很少的比赛中只打了很少的时间。但是我们不必担心这些玩家,因为当我们对数据进行子集划分时,我们已经将他们排除在外了。

**移除特征:**在合并上述数据集之后,我们移除重复的特征(例如:玩过的游戏)。接下来,我们删除多余的特征,如季节编号和季节类型,因为我们只查看一个季节。我们也删除了排名这个特性,因为它是一个没有意义的索引变量。最后,我们还删除了所有 4 个季度的每季度得分,因为这些值没有按照球员在每个季度的平均上场时间进行标准化。

缺失值:与大多数 ML 的真实数据集不同,缺失值在这里不是一个大问题。谢天谢地,NBA 雇佣了专业人士来确保这一点。唯一有缺失值的特征是 3P%,2P%,英尺%和 TS%。在子集化我们的数据集之后(同样,很快会有更多),唯一仍然有缺失值的特征是 3P%。对于在整个赛季中没有尝试过三分球的球员来说,这是缺失的。在这种情况下,我们将这些缺失值替换为 0%,因为公平地说,这些球员的 3 分投篮技能可能与赛季中试图投中一个 3 分球但没有投中的其他人相似。

**特征提取:**在我们目前掌握的特征中,我们可以提取两个更重要的特征。首先是每场比赛的分钟数,这可以很容易地从赛季总分钟数和比赛总场次中计算出来。第二个是助攻失误率。尽管它是两个现有变量的线性函数,但它通常被认为是评估进攻组织者在进攻中对球的小心/粗心程度的重要指标。

**子设定数据:**我们这个项目的目标是在对游戏做出重大贡献的玩家之间进行比较,而不是根据所有玩家的数据做出准确的预测。所以我们将对我们的数据进行分组,以观察更有趣的玩家。这是防止我们的可视化和集群变得过于混乱的好方法。对数据进行分组的一种方法是为每场比赛的最小分钟数设定一个阈值,并包括符合该阈值的球员。我们将这个阈值设定为每场比赛 28.5 分钟,这将我们的数据集限制为 104 名球员。

在结合了 3 个表格、特征工程和子设置我们的数据之后,我们有了关于 104 名具有以下 55 个特征的球员的数据:

  1. 玩家 —玩家姓名

  2. 位置 —位置

  3. 年龄 —该赛季 2 月 1 日开始时球员的年龄。

  4. Tm —团队名称

  5. G —玩过的游戏

  6. GS —游戏开始

  7. MP —整个赛季的上场时间

  8. MPG —每场比赛的平均上场时间

  9. 最终目标 —每 36 分钟的目标

  10. FGA——每 36 分钟射门次数

  11. FG% —投篮命中率

  12. 3P——每 36 分钟 3 分

  13. 3PA —每 36 分钟尝试 3 分投篮

  14. 3P %—3 点 fga 上的 FG%。

  15. 2P —每 36 分钟得 2 分

  16. 2PA —每 36 分钟 2 分的投篮尝试

  17. 2P %—2 点 fga 上的 FG%。

  18. FT —每 36 分钟罚球

  19. FTA —每 36 分钟罚球次数

  20. FT% —罚球百分比

  21. ORB —每 36 分钟的进攻篮板

  22. DRB —每 36 分钟的防守篮板

  23. TRB——每 36 分钟总篮板数

  24. AST —每 36 分钟助攻数

  25. STL —每 36 分钟抢断一次

  26. BLK —每 36 分钟阻塞一次

  27. 每 36 分钟的失误

  28. a2 到 —协助周转定额

  29. PF——每 36 分钟的个人犯规

  30. 点数 —每 36 分钟的点数

  31. **——球员效率等级- 每分钟生产标准化的衡量标准,联盟平均水平为 15。

  32. 【TS %】——****真实投篮命中率——**考虑 2 分投篮命中率、3 分投篮命中率、罚球命中率的投篮效率衡量指标。

  33. 3PAr—****三分球命中率—**三分球范围内投篮命中率

  34. FTr—****罚球命中率—**每次罚球尝试的罚球次数

  35. ***—****进攻篮板百分比—*一个球员在场上抢到的可用进攻篮板百分比的估计值。

  36. ****——****防守篮板百分比——球员在场上抢到的可用防守篮板百分比的估计值。

  37. ****—****总篮板百分比—一个球员在场上抢到的可用篮板百分比的估计值。

  38. *****【AST %】****——****助攻百分比——*一名球员在场上助攻队友投篮得分的估计百分比。

  39. ****—****抢断百分比—对手在场上抢断的估计百分比。

  40. ****—****盖帽百分比—对球员在场上时对手两分球投篮次数被盖帽的百分比的估计。

  41. ****—****失误百分比—每 100 场比赛失误的估计值。

  42. *****【USG %】****——****使用百分比——*一名球员在场上使用团队打法的百分比估计值。

  43. *****【OWS】****——****进攻获胜份额——*一名球员因进攻而贡献的获胜次数的估计值。

  44. ****——****防守获胜份额——一名球员因防守而贡献的获胜次数的估计值。

  45. *WS—****赢股—*一个玩家贡献的赢数的预估值。

  46. *WS/48—****每 48 分钟的赢球份额—*每 48 分钟一名球员贡献的赢球数的估计值(联盟平均值约为. 100)

  47. BPMBox 加减- 一个 Box 分数一个球员贡献的每 100 份财产的分数高于联盟平均水平球员的估计值,转换为平均水平的球队。

  48. 快攻点数 —每局快攻点数

  49. 点彩 —每局点彩得分

  50. 分至——对方将球翻转后得分**

  51. 第二次机会得分——进攻球员已经尝试一次射门但未命中后,在控球期间得到的任何分数**

  52. 每杆得分——计算方法是将总得分(2P 得分和 3P 得分)除以投篮总次数。**

标准化数据:我们也在标准化我们的数据集。这意味着,对于每个值,我们将从该值中减去特征范围的平均值,然后除以特征的标准偏差。这确保了具有高值范围的特征(例如得分)不会比具有低值范围的特征(例如盖帽或抢断)对我们的整体相似性比较产生更大的影响。注意,通过标准化数据,我们用自己的偏见来影响结果。让数据保持原样,或者对其进行处理以使防守统计数据(如抢断)具有更高的范围,这样做是否不正确?不会的。这只是意味着,我们将在最后评估的相似性结果将更倾向于那些特定的统计数据。

数据分析方法

我们将应用以下统计方法来调查我们的数据:
1)主成分分析
2) K 均值聚类
3)层次聚类

对于每种方法,我们将根据总体影响(来自所有可用的统计数据)来比较参与者。有意思的时候我们还会看看进攻影响**(来自进攻统计)和防守影响(来自防守统计)。******

对于总体影响计算,我们将最后 48 项功能(上面编号为 8-55 的功能)视为。我们对统计数据不感兴趣,比如整个赛季的上场时间和比赛场次,因为我们不想把因伤错过比赛的球员和其他人分开。我们也没有在计算中使用分类变量,但我们会在检查结果时使用它们。对于进攻影响的计算,我们将从上面看以下特征:8:20,23,26,28,30:33,36,39:41,45,49:53,55。对于防御影响的计算,我们将会看到编号为 21,24,25,27,34,37,38,42,46 的特征。

在应用任何统计方法之前,最好快速浏览一下特征之间的相关图,看看是否有什么有趣的东西。除非你准备好了显微镜,这里有一张下面 48×48 相关矩阵的放大版。不出所料,二次机会得分与进攻篮板%正相关,三分球命中率与内线得分负相关,等等。没什么奇怪的。****

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

方法 1-主成分分析

PCA 是一种有 117 年历史的统计降维方法。根据维基百科第页,五氯苯甲醚被定义为:

“使用 正交变换 将一组可能相关的变量(每个变量取不同数值的实体)的观察值转换为一组线性不相关的变量的值的统计过程,称为。如果有 n 个带有 p 个变量的观测值,那么不同主成分的个数是 最小(n-1,p) 。这种变换是这样定义的,第一个主分量(PC1)具有最大可能的 方差 (即,尽可能多地考虑数据中的可变性),并且每个随后的分量在与前面的分量 正交 的约束下依次具有最大可能的方差。得到的向量(每个向量都是变量的线性组合并包含 n 个观测值)是一个不相关的正交基集。****

对于有兴趣学习 ML 的读者来说,理解这种方法背后的线性代数是至关重要的。对于那些不太关心的老篮球迷来说,请允许我用一种过于简化的方式来解释 PCA。我们试图在我们的数据集中得到两个主要的主成分。这意味着我们将所有正在研究的 48 个特征进行组合,并提取 2 个新特征来代表之前特征的组合。这两个主要成分是两个特征的最佳组合,从数字上表达了玩家之间的差异。为了评估对进攻和防守的影响,我们重复这个过程,但是从我们在上一节中提到的有限的特性集开始。现在是分析数据的有趣部分。让我们看看玩家在我们的第一个 PCA 图中的总体影响。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

OVERALL PLAYER IMPACT

上面的图充分说明了我们数据中的玩家。代表每个球员的圆圈的大小取决于球员的 VORP(超过替补球员的价值)评级,该评级与 PER 一起被认为是衡量球员整体影响力的最佳全面统计数据之一。如果我们在右上角画一条线将 8 名球员分开,我们将得到本赛季的 8 名最佳得分手。勒布朗,拉塞尔·威斯布鲁克,斯蒂芬·库里,尤其是詹姆斯·哈登,都在这个群体的边缘。不出所料,这是过去 5 个 MVP 中的 4 个,第 5 个,凯文·杜兰特,就在他们旁边。达米恩·利拉德与上述精英群体的接近可能是重新思考他作为一名球员的价值的一个好理由。还要注意的是,球员是按照他们传统的 NBA 位置进行颜色编码的。随着 NBA 比赛风格和位置职责的不断演变,位置之间有很多重叠。但是,在大多数情况下,踢相同位置的球员也是聚集在一起的。在右边(中间到底部)我们有 NBA 最好的篮板王。这些大多是打中锋的球员,但当我们走向中锋时,他们加入了像安东尼·戴维斯和扬尼斯·阿德托昆博这样畸形的运动大前锋,还有本·西蒙斯,NBA 历史上最高的控卫。Antetokounmpo 和 Davis 似乎在剧情中有自己的领地,这一点特别有趣,因为这两人被选为 NBA 经理们在 2018-19 赛季开始时最想开始特许经营的顶级球员。此外,请注意中锋如何被分为主要以防守和篮板著称的球员群(底部的球员群)和同样以得分闻名的球员群(顶部的中锋群)。控球后卫似乎大多聚集在顶端,像库里、利拉德和凯里·欧文这样的高分球员聚集在一起。得分后卫(SG)和小前锋(SF)从中心到左下方有自己的空间,中间有很多重叠。但是总的来说,小前锋比得分后卫更接近大前锋。让我们继续进攻主成分分析图。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

OFFENSIVE IMPACT

该图与总体 PCA 图非常相似。这是有意义的,因为我们看到的大多数统计数据都是进攻统计数据,因此这些数据主导了我们的整体分析。但有趣的是,很少有事情会改变。请注意那些通常只从低位得分的球员是如何把他们的独立组合放在高位的。也请注意,尼古拉·约基奇和马克加索尔,可以说是当今 NBA 最好的组织核心,发现他们更接近得分后卫的领地,而不是中锋的位置。本·西蒙斯是所有控卫中距离最远的,紧挨着低位球员。这是可以理解的,因为他缺乏中距离投篮和篮板能力。卫冕 MVP 哈登又一次成为联盟中离其他球员最远的球员。最后,让我们看看 PCA 的防守统计。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

DEFENSIVE IMPACT

看来反弹能力是 x 轴上决定主成分 1(PC1)值的一个重要因素。最右边的球员是那些在篮板上领先联盟的球员。左边的,像 JJ Redick,可以说是我们选择的子集中最不为人知的篮板手。但这一部分不仅仅是反弹。如果你仔细看,凯文·杜兰特在拉塞尔·维斯特布鲁克的右边,而杜兰特抢下的篮板(场均 6.8 个)远少于威斯布鲁克(场均 10.1 个),他在盖帽等其他防守数据方面更接近大个子(联盟第五)。这并不奇怪,他接近右上集群,其中有一些联盟中最可怕的边缘保护者。如果你回到之前的进攻情节,你会注意到中锋似乎以一种非常多样化的方式影响着比赛的进攻。但在防守上,他们并不分散,因为他们的主要工作是保护篮筐和确保防守篮板。离其他人最远的中锋史蒂芬·亚当斯是一个可以理解的局外人。OKC 雷霆队以其让史蒂芬·亚当斯放弃防守篮板的策略而闻名,否则他会得到这些篮板,这样拉塞尔·维斯特布鲁克就可以得到它们并领导快攻。尽管在抢下篮板方面领先联盟,亚当斯还是经常抢下低位防守篮板。在上个赛季一个更奇怪的数据中,他场均进攻篮板比防守篮板多。还要注意的是,勒布朗詹姆斯,经常被认为是联盟中最全能的防守者之一,正处于这个情节的中间。

PCA 图的缺点是,虽然一些参与者可能看起来彼此非常接近,并且在 2d 图中几乎重叠,但是当我们考虑进一步的主成分时,它们可能在数英里之外。所以这种可视化方法没有利用我们所有的数据差异。为了解决这个问题,我们转向更复杂的无监督最大似然的统计过程。

方法 2- K-means 聚类

如果你想了解这个流行的无监督最大似然算法是如何工作的从这里开始。我们不再深入讨论统计方法,而是将重点放在它们的应用上。聚类的目标是确定一组未标记数据的内部分组。在 K 均值聚类中,我们的算法将数据分成 K 个聚类,每个聚类由其质心/中心表示,即该聚类中玩家的均值。关于编程的细节,请参考我在 Github 上的 R 脚本。********

****距离测量:为了将玩家分组,我们需要一种方法来计算每对玩家之间的距离或相似度。这种计算的结果被称为相异度或距离矩阵。选择距离度量是关键的一步,因为它定义了每个玩家对之间的相似性,并影响了聚类的形状。我们选择经典的“欧几里德距离”作为我们的距离度量来确定玩家相似性。标准化数据和替换丢失的值是所有这一切的先决条件,但我们已经处理了这一点。

一旦我们计算出距离矩阵,我们就可以在下图中看到它。这是一张放大的图片,这样我们可以更好地研究它。红色表示高度相异,蓝绿色表示玩家之间高度相似。不出所料,扮演相似角色的玩家之间的距离最小。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Distance matrix between players

计算 K-means: 简单来说,算法可以用这五个步骤来概括:

  1. 指定要创建的集群数量(K)
  2. 从数据集中随机选择 k 个玩家作为我们的初始聚类质心
  3. 根据欧几里德距离,给每个玩家分配最近的质心
  4. 对于 k 个聚类中的每一个,通过计算聚类中所有玩家特征的新平均值来更新聚类质心。第 k 个集群的质心是长度为 p 的向量,包含第 k 个集群中玩家的所有特征的平均值,其中 p 是特征的数量。
  5. 重复步骤 3 和 4,直到聚类分配停止变化或达到最大迭代次数(R 使用 10 作为最大迭代次数的默认值)。

确定最佳聚类数(k): 没有完美的方法来确定最佳聚类数。但是有几个统计度量允许我们调查 k 的值如何影响我们的聚类,因此我们可以得出合理的结论。我们使用以下两种方法:

  1. - 聚类平方和(WSS) 内的是每次观测和聚类质心的方差之和。一般来说,平方和小比那些平方和大的簇更紧凑。直观地说,随着 k 值的增加,这个分数只会变小,聚类也会变小。因此,我们在我们的图中寻找一个称为“肘/膝”的点,在该点处,WSS 值显著下降,然后随着 k 值的增加下降不太多。不幸的是,从我们的图中可以看出(如下),我们的图中没有肘。
  2. **我们用来寻找最佳 K 值的第二种方法是观察**间隙统计。它在数学上比之前的测量更复杂,所以我们不会深入讨论它是如何工作的,但是你可以通过这个链接来看一看。间隙统计的值越高,我们的值 k 就越好。同样,我们的目标是在最小化 k 的同时获得最佳聚类。我们看到(见下文)间隙统计在 k = 8 时达到峰值

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

WSS

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Gap Statistic

根据我们的发现,我们将使用 k-means 聚类法将我们的数据分为 8 类,并对结果进行分析。如果您想知道为什么下面的 X 轴和 Y 轴看起来与 PCA 分析中的 PC1 和 PC2 轴非常相似,那是因为它们是相同的。每当处理 2 个以上的特征时,我们使用的 R 函数执行 PCA 并将数据点绘制到前两个主成分上,因为它们解释了大部分数据方差。但是不要把 PCA 和 K-means 聚类混为一谈,因为后者有更多的内容。转到有趣的部分,我们现在将分析每个集群是如何脱颖而出的,并根据我们对集群表示的统计数据,为它们提出适当的标签。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 黑色集群:【邮差】
    特色球员——德安德鲁·乔丹
    在我们剧情的左下方,我们有在低位“发力”的球员,在内线之外做的不多。如果你要求俗气和非原创的标签,你得到了。但是不要认为这些球员像卡尔·马龙一样是可靠的低位得分手。他们在投篮命中率,篮板率,盖帽率方面领先所有球队,尽管他们在投篮命中率方面领先,但是他们在得分方面远远没有领先。就平均分数而言,它们实际上是所有集群中第二差的。而这些点往往伴随着回撤或空中接力而来。不出所料,他们的罚球命中率,3P 命中率和快攻得分都是最低的。就 PER 和 VOPR 而言,他们排名第三,这表明尽管他们得分低,但他们在球场上非常有价值。
  2. 浅灰色集群:“巨星护卫/狂魔”
    特色玩家——詹姆斯·哈登
    这是精英中的精英,在 Win-shares、Points、PER、VORP 上领先其他所有集群。正如精英后卫/杀手所料,他们也在 3P、助攻、罚球命中率和投篮命中率方面领先,仅次于“邮差”。
  3. 黄金组合:“超级巨星”
    特色球员:卡尔·安东尼·唐斯
    在中左路,我们有联盟中最好的双向球员,他们主要在内线活动,但在外线也很自在。他们在内线得分上领先所有球队,在篮板和防守篮板上仅次于“邮差”,排名第二。他们还拥有第二好的 PER,VOPR,每 36 分钟得分和赢球份额,仅次于“超级后卫/杀手”
  4. 榛子集群:【可靠得分手】
    特色球员:楼威廉姆斯
    这个集群有点多样化。它主要由可以在多方面得分的球员组成,但在所有得分类别上都落后于我们的“超级明星后卫/杀手”。当谈到像 PER,VORP 和 Win-Shares 这样的全面统计数据时,他们处于中间位置。
  5. Indigo cluster:“低得分组织者”
    特色球员:朗佐·鲍尔

    在中右,我们有更擅长让别人得分而不是自己得分的球员。他们在所有集群中拥有最佳的助攻失误率,并在 TOV%(每 100 次控球失误率)方面领先所有集群。这支球队在得分率和得分方面也落后于其他球队,所以我必须再次强调,他们的得分能力并不是这些球员获得 28.5 分钟以上的原因。
  6. 中蓝色集群:【替补射手】
    特色球员:特雷沃·阿里扎

    这是拥有 19 名球员的较大集群之一,所以这里没有最具体的技能组合。他们的得分确实是 3P 最高的,失误最少,而且在罚球命中率和三分球命中率方面排名第二。但他们也是所有集群中得分第三少的。因此,看起来这个集群的球员不是自己创造投篮机会的得分手,而是擅长高命中率空位投篮的球员。
  7. 红色集群:“高位球员”
    特色球员:赛迪斯·杨
    这个集群似乎是由内线和外线对游戏有贡献的球员组成的。这个群体在盖帽,篮板和第二次机会得分上排名第三,仅次于“超级巨星”和“邮差”。但是这个集群比“邮差”拍了更多的照片。这个群体也比“超级巨星 Bigs”拍摄和制造更多的外线镜头。
  8. 天蓝色集群:“低产出球员”
    特色球员:卡梅隆安东尼
    记住我们只看出场时间 28.5+的球员。但是在这组著名的 NBA 球员中,这组球员在个人平均工资、VORP、胜率以及进攻和防守的正负计算方面相对来说是最差的。当然,有些球员做出了统计上看不出来的贡献。但是如果这些球员中的一些不是这样,如果这些球员也不年轻,有潜力提高,球队应该重新考虑这些球员获得多少比赛时间。

K-MEANS 来自进攻统计的聚类

查看差距统计数据,我们再次发现 8 是集群的最佳数量。正如预期的那样,总体细分仍然相似,但有一些有趣的变化。一旦你去掉他的防守数据,拉塞尔·维斯特布鲁克就不再是“超级后卫/杀手”的一部分了。这与威斯布鲁克作为低效得分手的持续批评相一致。他可以说是最近 NBA 历史上效率最低的得分手,事实上他的投篮命中率比“超级后卫/杀手”中的任何人都要低。这让我想知道,如果他没有得到史蒂芬·亚当斯帮助他抢到的防守篮板,他将会落在哪里。本·西蒙斯也离开了“超级巨星”,加入了“邮差”。这是有道理的,因为在进攻上,本·西蒙斯的得分武器缺乏任何形式的跳投。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

8 CLUSTERS- OFFENSE

k-均值来自国防统计的聚类

最佳的 k 被发现是 3,使用它,我们得到下面的图。灰色的集群由防守篮板、盖帽和防守得分最高的球员组成(DWS)。蓝色集群提供最高的抢断和抢断百分比统计,是第二好的 DWS。第三个黄色集群在所有防守统计中数值最低。但是我们会注意到,根据这些聚类,克莱·汤普森,一个顶级的外线防守者,应该比他的队友斯蒂芬·库里更差,因为他的防守明显比汤普森差。因此,这种聚类要么突出了 K-means 算法的局限性,要么突出了 NBA 统计数据在准确传达球员防守影响方面的局限性。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3 CLUSTERS- DEFENSE

方法 3:凝聚层次聚类

**最后,我们将进入最后一个检查方法。与 K-means 聚类不同,层次聚类不需要我们预先指定聚类的数量。我们将执行自底向上/聚集聚类而不是**划分/自顶向下层次聚类。前者更擅长识别小集群,而后者更擅长识别大集群。

该算法从最初被认为是单元素簇/叶的所有玩家开始。在每个新步骤中,最相似的两个集群被组合成一个新的更大的集群(节点)。如此反复,直到所有点都汇聚成一个大的簇/根,如下图所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在我看来,这是迄今为止最好的可视化。它允许我们选择任何球员,并找出他们最相似的人。树状图克服了 K-means 聚类中大聚类的问题,其中聚类包含不一定总是相似的玩家。当我第一次看到这个的时候,我有几个“啊哈”的瞬间,我看到球员们最紧密地配对,并建立了我以前从未建立的联系。

有趣的观察:
1。勒布朗和杜兰特,这两个处于谁是 NBA 最佳球员争论中心的球员,彼此最相似。
2。最后 5 个 MVP(哈登、威斯布鲁克、库里、杜兰特、勒布朗)全部落入一个专属迷你集群。也许现代的 MVP 需要遵循比我们意识到的更严格的模式来赢得这个奖项。
3。安特托昆博和安东尼·戴维斯,这两个被 NBA 总经理认为最有潜力的年轻球员,彼此最相似。
4。卢·威廉姆斯是一群相当致命的得分手(欧文、利拉德、德罗赞、巴特勒和沃克)。对一个 30 多岁就达到巅峰的人来说还不错。
5。我们的 K-means 图中的“超级巨星 Bigs”簇仍然是一个紧密的单元。

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

我们对上个赛季 NBA 球员的冗长分析到此结束。如果你做到了这一步,我希望你能像我喜欢写这篇文章一样喜欢读它。感谢您的阅读。如果你认为你认识的其他人会对我感兴趣,请与他们分享。如果你喜欢这篇文章,并有什么想与我分享的,请随时发表评论,通过电子邮件联系我,地址是 nadir.nibras@gmail.com 或 https://www.linkedin.com/in/nadirnibras/
我致力于改进我的方法、分析或数据集,因此如果您有任何建议,请随时评论或告诉我。如果你想关注我在数据科学方面的更多工作,请在 Medium 和 Linkedin 上关注我。另外,如果你是数据科学或 NBA 分析的粉丝,请联系我。和讨厌统计的人聊天总是很有趣:)

应该使用哪个 Python 包管理器?

原文:https://towardsdatascience.com/which-python-package-manager-should-you-use-d0fd0789a250?source=collection_archive---------0-----------------------

每个接触代码的人对他们的编程环境都有不同的偏好。Vim 对 emacs。制表符对空格。虚拟人对巨蟒。今天我想和你们分享我处理数据和进行机器学习的环境。

您肯定不需要复制我的设置,但是其中的一些内容可能会对您的开发环境有所启发。

首先,我们需要谈谈 Pip。Pip 是 python 的包管理器。它内置到 Python 中已经有一段时间了,所以如果你有 Python,你可能已经安装了 pip。

Pip 安装了 tensorflow 和 numpy、pandas 和 jupyter 等软件包及其依赖项。

pip install <your_favorite_library>

许多 Python 资源是以 pip 包的形式交付的。有时你可能会在某人的 Python 脚本文件夹中看到一个名为requirements.txt的文件。通常,该文件概述了该项目使用的所有 pip 包,您可以使用

pip install -r requirements.txt

作为这个生态系统的一部分,有一个完整的版本号和依赖关系的世界。我有时需要为我正在处理的不同项目使用给定库的不同版本,所以我需要一种方法来将我的包组组织到不同的、隔离的环境中。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Doing web development and data science on the same machine can leave your Python packages in a jumble

目前有两种流行的管理不同 pip 包的方法:virtualenv 和 anaconda。

虚拟

irtualenv 是一个允许你创建命名的“虚拟环境”的包,在这里你可以以隔离的方式安装 pip 包。

如果您想详细控制为您创建的每个环境安装哪些软件包,这个工具非常棒。例如,您可以为 web 开发创建一个包含一组库的环境,为数据科学创建一个不同的环境。

这样,您就不需要让不相关的库相互交互,并且它允许您创建专用于特定目的的环境。

蟒蛇

现在,如果您主要从事数据科学工作,Anaconda 也是一个不错的选择。Anaconda 由 Continuum Analytics 创建,它是一个 python 发行版,预装了许多用于数据科学的有用的 Python 库。

Anaconda 之所以受欢迎,是因为它一次安装就带来了许多数据科学和机器学习中使用的工具,因此它非常适合进行简短的设置。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

和 Virtualenv 一样,Anaconda 也使用创建环境的概念来隔离不同的库和版本。Anaconda 还引入了自己的包管理器,名为conda,您可以从这里安装库。

此外,Anaconda 仍然具有与 pip 的有用交互,允许您安装 Anaconda 包管理器中没有的任何附加库。

如何选择?

我该用哪一个,虚拟人还是蟒蛇?嗯,我经常发现自己在 Python 2 和 Python 3 之间测试 TensorFlow 和其他库的新版本。

理想情况下,我还可以尝试 virtualenv 和 anaconda 上的库,但有时这两个包管理器并不友好。

认识 pyenv

所以我选择两者都用,并使用一个名为pyenv的库来管理整个事情。从概念上讲,pyenv 位于 virtualenv 和 anaconda 之上,它不仅可以用于控制使用哪个 virtualenv 环境或 anaconda 环境,还可以轻松控制我运行的是 Python 2 还是 Python 3。

pyenv 的最后一个我喜欢的方面是为给定目录设置默认环境的能力。这使得当我进入一个目录时,所需的环境被自动激活。我发现这比我每次做一个项目时试图记住我想使用哪个环境要容易得多。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

应该使用哪个 Python 包管理器?这真的取决于你的工作流程和偏好。

如果您通常只使用核心数据科学工具,并且不关心安装一些您不使用的额外库,Anaconda 可能是一个很好的选择,因为它可以根据您的需要和偏好简化工作流。

但是,如果您喜欢定制您的环境,并使它完全符合您的喜好,那么像 virtualenv 甚至 pyenv 这样的东西可能更适合您。

包裹

管理 Python 库没有“一个”正确的方法,当然,除了我刚才介绍的选项之外,还有很多其他的方法。

随着不同工具的出现和消失,重要的是要记住每个人都有不同的需求、偏好和用例,因此您必须自己选择适合您的工具。

您的 python 环境是什么样的,您如何防止它失控?在下面的评论中分享你的设置吧!

感谢阅读本集云 AI 冒险。如果你喜欢这个系列,请为这篇文章鼓掌让我知道。如果你想要更多的机器学习动作,一定要关注媒体上的me或订阅 YouTube 频道的来观看未来的剧集。更多剧集即将推出!

哪些州是最纯素食的州?还有,哪些州不是(但真的想成为)?

原文:https://towardsdatascience.com/which-states-are-the-most-vegan-and-which-states-arent-but-really-want-to-be-5ff619a87f4b?source=collection_archive---------7-----------------------

这是我这种吃货的黄金时代。你不仅可以找到每一种菜肴,还可以找到迎合 SoCal 居民饮食限制的餐厅概念,无论是需要的还是想象的。我经常从从其他地方搬到加州的人们那里听说,加州有比其他任何地方都多的餐馆,为那些对乳制品、麸质等过敏的人提供饮食帮助。出现的最大的饮食需求之一是素食热潮,这意味着食物不含任何动物产品,也不是用任何动物产品制成的。越来越多的人对在纯素食餐厅用餐表现出兴趣,如下图所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在过去的五年里,当查看谷歌趋势来研究“纯素食餐馆”这个词的搜索频率时,这个词的兴趣有了普遍的倾向,但在过去的几周内绝对飙升。

一个安全的假设是,在我们伟大的国家,不是每个州都对这一新趋势表现出同样的热情。让我们看看哪个州的居民最感兴趣(在下图中用红色菱形表示)。

谷歌搜索对素食餐馆最感兴趣的州是…

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

内华达???

等等,什么?

我承认我有点喜欢加利福尼亚,我们接受所有人的各种饮食偏好,但这仍然令人震惊。当然,加州在俄勒冈州之后排名第三在某种程度上是有道理的,热爱自然的波特兰人(波特兰人?)可能会比洛杉矶洛杉矶的 LA fad diet 更受素食者的青睐,但令人哭笑不得的是,罪恶之城的家乡内华达州拿走了蛋糕。我的意思是,我不认为我曾经偷听到有人喝醉了跌跌撞撞地走在拉斯维加斯大道上寻找甜菜沙拉和芋头片。

如上图所示,红色菱形表示谷歌搜索的相对比例,上面覆盖着绿色条,标志着人均素食餐厅的实际频率(指标是每 10 万州居民中素食餐厅的数量)。虽然内华达州的搜索兴趣最大,但它远非真正的素食餐厅最多,每 10 万居民中只有 6.77 家素食餐厅。虽然这使内华达州远远落后于其他领导者,如华盛顿州 DC(每 10 万居民 22.75 家素食餐馆)和俄勒冈州(每 10 万居民 15.95 家),甚至夏威夷州(每 10 万居民 20.44 家素食餐馆),其相对搜索频率仅为 69。它被夏威夷和马萨诸塞州等搜索排名前十之外的州打败了。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

当看着同样的视觉,但按实际餐厅频率排序时,有一些更有趣的见解。虽然前三名(DC、夏威夷州和俄勒冈州)都有相对较高的搜索频率,但缅因州、佛蒙特州和阿拉斯加州(分别是排名第四、第五和第六的州)对“素食餐厅”的谷歌搜索很低,以至于它们在总搜索中的比例为零。事实证明,我关于加州是素食者的麦加的看法是完全错误的,因为这个黄金之州的人均纯素食餐馆数量仅排在第十位。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

上图比较了各州的相对需求(各州在谷歌搜索比例中的排名)与素食餐厅的实际可用性(各州每 10 万居民中素食餐厅数量的排名)。

与谷歌搜索频率相比,深红色的州素食餐馆相对过多。非沿海西部的北部各州(蒙大拿、怀俄明等。)和东北部(缅因州、佛蒙特州和新罕布什尔州)的素食餐馆数量都超过了当地居民在网上显示的兴趣。深绿色的州素食餐馆相对较少,而谷歌搜索中指向“素食餐馆”的比例要高得多。列表中一些令人惊讶的州,如德克萨斯州、田纳西州和阿拉巴马州恰好是“烧烤带”的成员(这个词是我随便编造的)。浅色的州,如宾夕法尼亚、俄勒冈,以及明尼苏达州南部边境的任何州(开玩笑,爱荷华州……是的,我很确定那是爱荷华州),都有与纯素食餐馆的实际实体代表接近的在线兴趣量。

感谢您阅读我最新的数据帖子。作为一名产品营销和数据分析专业人士,我对数据支持的讲故事充满热情。这些帖子是我将真实数据与我个人不同的兴趣结合起来的方式,这些兴趣包括从旅行和娱乐到经济和社会问题的任何事情。
如果您有任何评论、故事想法或预期的数据项目,请随时发送电子邮件至 dwpwriting <至> gmail < dot > com 或通过
LinkedIn 联系我。

杰里米·科尔宾对哪些选民有吸引力?

原文:https://towardsdatascience.com/which-voters-does-jeremy-corbyn-appeal-to-42c809a9fbf0?source=collection_archive---------4-----------------------

这是我上一篇选举博客的后续文章,这次关注的是哪些人口统计因素导致了工党出人意料的 9.5%的摇摆

我将工党摇摆(2015 年和 2017 年选举之间投票份额的百分比变化)与英格兰和威尔士选区的一些人口统计特征进行了比较,试图看看是什么因素导致了 2017 年大选中(大部分)出乎意料的工党摇摆。

我从 constituencyexplorer.org.uk 获得了选区的人口统计数据,从 BBC 选举网站获得了选区摇摆数据。我绘制了每个人口统计数据与劳动力变动的关系图。我观察的人口统计特征是:

  • 某些年龄组的百分比
  • %拥有 4 级或以上教育(学位或以上)和%拥有 1 级或以下教育(普通中等教育证书或以下),
  • 骑自行车上下班的百分比(16-74 岁的就业人口)
  • 自称是白人的百分比

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Labour Swing against demographic characteristics. Each point represents a constituency. A linear regression line is shown on each chart

在图中,每个点代表一个选区,并显示最佳拟合的线性线。直线斜率的陡度表明人口特征对劳动力变动的影响有多大。

左侧的地块具有正斜率,,即具有较高比例人口特征的选区通常具有增加的劳动力摆动。右手边的情况正好相反。

下面是一个条形图,其中条形的高度对应于上述八个图中每个图的斜率。颜色与皮尔逊相关系数相对应,皮尔逊相关系数是一种衡量每个点平均距离最佳拟合线有多远的指标,0 表示不拟合,-1 和 1 分别表示完全负拟合和正拟合。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Slope of linear regression for demographic characteristics of constituencies. The colour corresponds to how good a fit the regressions is (i.e. how close to the regression line each point is on average).

看一下图表,年龄对劳动力变动的影响最大。年轻选民的选区表现出较大的积极波动,而年长选民的选区表现出较大的消极波动(尽管有趣的是,45-64 岁的选民比 65 岁以上的选民表现出更大的消极波动)。骑自行车上下班似乎也对劳动力流动产生了相对较强的积极影响。拥有普通中等教育证书或更低的资格对劳动力流动有相当大的负面影响。拥有大学学位和自我认同为白人分别对劳动力摆动产生积极和消极影响,尽管这些影响相当微弱。

结论

杰里米·科尔宾似乎有极化效应;他增加了年轻选民中工党的投票份额,但减少了年长选民中的投票份额。骑自行车上下班的人比例较高对劳动力流动有积极影响,而 GCSE 或更低的教育水平有负面影响。

我和谁有联系?

原文:https://towardsdatascience.com/who-am-i-connected-to-1660df1b140e?source=collection_archive---------20-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

当你处理数据时,一个经常出现问题是找出事物之间的联系。例如,可以从你所有的朋友、你的朋友关系、你的朋友的朋友关系……来确定你与谁直接或间接相关,或者你与这样或那样的关系有多少分离度。幸运的是,您可以使用一些工具来进行这样的分析。这些工具属于网络理论的范畴,我将在这篇文章中介绍一些基本技巧。

首先让我们来了解一些术语。节点是我们联系的事物,例如你,你的朋友,你的朋友的朋友。顶点是那些节点连接方式。例如,在下面,节点 0 连接到节点 1 和 2,使用两个顶点来描述这些连接。节点 1 通过一个顶点连接到节点 3,等等。对于第一个例子,我们使用单向顶点,但没有什么阻止我们使用双向顶点。一般来说,如果所有顶点都是双向的,我们就称之为无向图,这是朋友的情况(通常是这样),因为你认识你的朋友,他也认识你!

网络分析中引入的第一个重要概念是邻接矩阵。邻接矩阵是表示节点之间的顶点连接的矩阵。邻接矩阵中的第一行表示节点 0 的连接。因此,节点 0 连接到节点 1 和 2,但不连接到自身或节点 3。所以第一行是 0,1,1,0。第二行表示节点 1 的连接,它只连接到节点 3。所以第二行是 0,0,0,1。请注意,我们可以有双向连接,在这种情况下,连接将同时出现在行和列上,但在本例中并非如此。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

通过检查邻接矩阵,我们可以重建节点/顶点图。它在第一跳连接中告诉我们:谁是你的朋友。但是我们如何知道第二跳连接,例如节点 0 通过节点 1 和节点 2 连接到节点 3?一个非常简单的方法是将邻接矩阵乘以自身(A*A)。这个乘法的结果是第二跳连接。这里,我们看到节点 0 通过 2 跳连接到节点 1(通过节点 2),并通过 2 跳连接到节点 3。我们甚至可以看到,从节点 0 到节点 3 的两跳中有两个这样的连接。最后,我们看到节点 2 通过 2 跳连接到节点 3(通过节点 1)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如果我们再次将 A*A 乘以 A 本身,我们将获得三跳连接,在这种情况下,这仅限于节点 0 连接到节点 3。

总的来说,我们感兴趣的网络比这个简单的 4 节点图要大得多。同样,一般来说,所有节点都不会相互连接。嗯,他们说每个人都通过六度间隔(六跳)与每个人相连,但是对于大多数其他实际应用来说,并不是所有的节点都相互连接。让我们看一个更大的例子,看看上面举例说明的原理是如何大规模应用的。让我们假设下面的无向网络图。这里,因为我们有一个无方向的网络图,您会看到连接值出现在行和列中。这个特例显示了对角线的对称性。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

像以前一样,如果我们计算 A*A,我们会得到第二跳连接。请注意,节点通过第二跳相互连接。例如,节点 1 通过第二跳经由节点 0、7 和 8 连接到自身 3 次。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如果您对所有第一跳连接和第二跳连接感兴趣,您可以将 A*A 和 A 相加,得到以下矩阵。您可以继续向前寻找第三个跳跃点,但是在这个例子中没有其他的连接,所以虽然您在这里看到的数字会增加,但是零的模式不会改变。我们已经找到了这张图的所有联系。我们发现节点 0 连接到节点 1、7 和 8。节点 2、3 和 4 相连。节点 5、6 和 9 相连。最后,我们看到节点 10 没有连接到任何其他节点。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在实践中,矩阵乘法可以很好地找到下一跳的邻居。如果恰好对于您的问题(如上一个),大多数连接都不存在,即 0,那么您可以使用稀疏矩阵来存储(并且可能使用)您的邻接矩阵。然而,这些矩阵很快就会变得非常庞大,需要进行大量运算才能计算出来。如果您正在使用 SQL 或 spark,一个很好的技巧可能是在表上使用联接。

要做到这一点,你需要彻底解决这个问题。您将创建一个连接表,而不是创建节点如何连接的邻接矩阵。为了跟上我们的第二个例子,您可以将下面的网络图转换为节点/连接表。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在,我们已经有了节点/连接表,我们的目标将是尽可能减少连接的数量,并最终得到类似下面这样的东西来查看所有连接的东西(我们不关心有多少跳会引导我们)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

为了实现这个目标,我们将通过两个步骤来迭代。首先,我们将执行连接缩减,然后更新节点/连接表。然后,我们反复冲洗,直至无法再减少连接数量。

假设上面的节点/连接表(node_connections ),我们可以通过以下 SQL 查询减少连接数,并将其存储为 new_connections 表:

SELECT A.connection, MIN(B.connection) AS new_connection 
FROM node_connections AS A 
JOIN node_connections AS B 
ON A.node = B.node 
GROUP BY A.connection

然后,您可以使用以下 SQL 查询更新 node_connection 表:

SELECT DISTINCT B.new_connection AS connection, A.node 
FROM node_connections AS A 
JOIN new_connections AS B 
WHERE A.connection = B.connection

重复这两个步骤,直到 node_connections 表不再发生变化,这样,您就有了一个通过不同连接连接的所有节点的图。

这只是可能的用例之一,但是对于大规模的应用来说,连接表可能比创建和乘邻接矩阵更容易和更快。我用 SQL 展示了逻辑,但是显然您可以使用 spark 获得类似的结果(对于我的特定应用程序,我使用 pySpark)。

如果你对网络理论在某个问题上的应用有疑问或有趣的想法,请随时加入讨论!

封面照片由 迈克尔·盖达在 Pixabay 拍摄。

原载于 2018 年 10 月 16 日thelonenutblog.wordpress.com

谁是无家可归者

原文:https://towardsdatascience.com/who-are-the-homeless-a5a3516f0e3b?source=collection_archive---------6-----------------------

我一直想把无家可归形象化,但直到今天才找到任何数据。这个数据集包含美国各州无家可归者的几个属性(长期或暂时、有保护或无保护、家庭或个人等)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Source: Department of Housing and Urban Development

按位置分解这些百分比,我们可以观察到:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

homelessness in 2016

  • 内华达州的无家可归家庭比例最低,无人陪伴的青少年比例最高
  • 关岛受庇护家庭的比例最低,无家可归家庭的比例最高
  • 南达科他州长期无家可归者的比例最低

我今天学到的是如何用华夫饼包和 fontawesome 在 R 中制作华夫饼图表(饼状图的替代品)。

library(waffle)
library(extrafont)
parts <- c(Sheltered=64, Unsheltered=36)
waffle(parts, rows=10, colors=c("#009bda", "#969696"), 
       use_glyph="home", glyph_size=6)

这是我关于数据科学和视觉故事的# 100 天项目的第 44 天。我的 github 上的全部代码。感谢阅读。欢迎新主题的建议和反馈。

AI 谁来赚钱?第一部分

原文:https://towardsdatascience.com/who-is-going-to-make-money-in-ai-part-i-77a2f30b8cef?source=collection_archive---------1-----------------------

我们正处于人工智能的淘金热之中。但是谁将获得经济利益呢?都是淘金的创业公司的大众?那些拥有大规模金矿开采业务的公司?提供镐和铲的科技巨头?哪个国家有最丰富的金矿?

欢迎来到人工智能淘金热!

我们目前正在经历人工智能的另一次淘金热。数十亿美元正在投资于人工智能初创公司,涵盖所有可以想象的行业和商业功能。谷歌、亚马逊、微软和 IBM 正在进行一场重量级的战斗,在 2016 年投资超过 200 亿美元用于人工智能。企业正在争先恐后地确保在竞争对手之前实现人工智能的生产力优势,同时关注初创公司。中国正在大力支持人工智能,欧盟正在讨论 220 亿美元的人工智能投资,因为它担心输给中国和美国。

AI 无处不在。从谷歌上的 35 亿次每日搜索,到使用面部识别的新苹果 iPhone X,再到可爱地回答我们问题的亚马逊 Alexa。媒体头条吹捧人工智能如何帮助医生诊断疾病,银行如何更好地评估客户贷款风险,农民如何预测作物产量,营销人员如何锁定和留住客户,以及制造商如何改善质量控制。还有专门研究人工智能的物理、网络和政治风险的智库。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

So who will make the money in AI?

人工智能和机器学习将成为无处不在的**,并融入社会的结构。但是和任何淘金热一样,问题是谁会找到金子?只会是勇敢者、少数人和大人物吗?或者时髦的暴发户能抢到他们的金块吗?那些提供镐和铲的人会赚大部分的钱吗?谁会找到宝藏呢?**

那么 AI 创造的价值在哪里呢?

当我开始思考谁将在人工智能中赚钱时,我提出了七个问题。谁将在(1)芯片制造商,(2)平台和基础设施提供商,(3)使能模型和算法提供商,(4)企业解决方案提供商,(5)行业垂直解决方案提供商,(6)人工智能的企业用户和(7)国家之间赚钱?虽然有很多方法可以揭开人工智能领域的面纱,但希望下面能提供一个有用的解释框架——一种价值链。所提到的公司是每个类别中较大公司的代表,但这份名单并不全面或具有预测性。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

This is an example of an AI value chain. The companies noted are representative of larger players in each category but in no way is this list intended to be comprehensive or predictive. © Best Practice AI Ltd.

1.谁有最好的人工智能芯片和硬件?

尽管计算能力的价格呈指数级下降,但需求却在以更快的速度增长。人工智能和机器学习有着巨大的数据集和数万亿的向量和矩阵计算,有着凶猛而永不满足的胃口。带上筹码**。**

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

NVIDIA 的股票在过去两年中上涨了 1500%,这得益于他们的图形处理单元(GPU)** 芯片在历史上用于渲染美丽的高速流动游戏图形,非常适合机器学习。谷歌最近推出了第二代 张量处理单元【TPUs】。而 微软 正在打造自己的脑波 AI 机器学习芯片。与此同时,像 Graphcore 这样已经筹集了超过 1 . 1 亿美元的初创公司正在寻求进入这个市场。现有的芯片供应商如 IBM、英特尔、高通、T21 和 AMD 都没有止步不前。甚至有传言说脸书正在组建一个团队来设计自己的人工智能芯片。随着剑桥科技上周宣布推出首款云人工智能芯片,中国正在成为认真的芯片玩家。**

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Who made the money? Levi Strauss and Samuel Brannan didn’t mine for gold themselves but instead made a fortune selling supplies to miners — wheelbarrows, tents, jeans, picks and shovels, etc.

显而易见的是,设计和制造芯片,然后保持全球芯片领导者地位的成本非常高。这需要极其雄厚的财力和世界级的芯片和软件工程师团队。这意味着新的赢家将会很少。就像淘金热时期一样,那些提供最便宜和最广泛使用的镐、铲将会赚很多钱。

2.谁拥有最好的人工智能基础设施和平台云?

人工智能竞赛现在也在云中进行。亚马逊很早就意识到,初创公司更愿意租赁电脑和软件,而不是购买。因此,它在 2006 年推出了亚马逊网络服务(AWS)。今天,人工智能对计算能力的需求如此之大,以至于越来越多的公司转向云,通过基础设施即服务 (IaaS)和平台即服务(PaaS)产品来租赁硬件。****

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Amazon is the leader in cloud services but hot on their tales are Microsoft, IBM, Google and Alibaba.

科技巨头之间的斗争正在进行。微软正在提供他们的混合公共和私有 Azure 云服务,据称拥有超过一百万台计算机。在过去几周,他们宣布他们的 脑波 硬件解决方案 极大地加速了机器学习,他们自己的必应搜索引擎性能提高了 10 倍。谷歌正急着用自己的谷歌云产品迎头赶上。我们看到中国的阿里巴巴开始占据全球份额。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Large cloud players are racing to ensure they are positioned for the massive demand that will be driven by AI.

亚马逊——微软——谷歌和 IBM 将继续一决雌雄。请注意来自中国的大规模云玩家。那些拿着大镐和铲子的家伙会再次获胜。

3.谁有最好的实现算法?

今天,谷歌是世界上最大的人工智能公司,吸引了最优秀的人工智能人才,在 R&D 上花费了小国规模的 GDP 预算,并坐拥来自其服务的数十亿用户的最佳数据集。人工智能正在推动谷歌的搜索、自动驾驶汽车、语音识别、智能推理、大规模搜索,甚至是它自己在药物发现和疾病诊断方面的工作。

令人难以置信的人工智能机器学习软件和算法正在推动谷歌的所有人工智能活动——tensor flow——现在正在免费赠送。是免费的!TensorFlow 现在是一个面向全球开放的开源软件项目。他们为什么要这么做?正如 Google Brain 的负责人 Jeff Dean 最近所说,今天世界上有 2000 万个 T21 组织可以从机器学习中受益。如果数以百万计的公司使用这种同类最佳的免费人工智能软件,那么他们可能需要大量的计算能力。谁能提供更好的服务呢?当然,谷歌云针对 TensorFlow 和相关的人工智能服务进行了优化。一旦你变得依赖他们的软件和云,在未来的许多年里,你就会成为一个非常顽固的客户。难怪亚马逊-微软 IBM 也提供自己的廉价或免费人工智能软件服务,这是一场争夺全球人工智能算法主导地位的残酷比赛。

我们也看到了不仅是机器学习算法,还有为对话代理和机器人、语音、自然语言处理(NLP)和语义、视觉和增强核心算法提供服务的认知 算法的斗争。在这个竞争日益激烈的领域,一家初创公司是 Clarifai ,它为企业提供先进的图像识别系统,以检测近似重复和视觉搜索。在过去三年里,它已经筹集了近 4000 万美元。视觉相关算法和服务的市场预计在 2016 年至 2025 年间的累计收入为 80 亿美元。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

The race is on for the deep learning and cognitive algorithms that will enable and power applied AI solutions.

巨人并没有停滞不前。例如,IBM 正在提供其沃森认知产品和服务。他们有大约 20 个用于聊天机器人、视觉、语音、语言、知识管理和移情的 API,可以简单地插入公司软件中,以创建人工智能应用程序。认知 API 无处不在。 KDnuggets 在这里列出了 50 多个来自巨头和初创公司的顶级认知服务。这些服务被作为人工智能即服务 (AIaaS) 放到云中,以使它们更易于访问。就在最近,微软首席执行官塞特亚·纳德拉声称,有 100 万开发者正在使用他们的人工智能 API、服务和工具来构建人工智能应用,近 30 万开发者正在使用他们的聊天机器人工具。我不想成为一家与这些巨人竞争的创业公司。

这一领域的赢家可能会再次青睐重量级企业。他们可以雇佣最优秀的研究和工程人才,花最多的钱,访问最大的数据集。初创公司要繁荣发展,必须有充足的资金,由拥有一整套知识产权专利和已发表论文的领先研究人员支持,拥有深厚的领域专业知识,并能获得高质量的数据集。他们应该有出色的导航技能,可以在巨人之前航行或参加不同的比赛。将会有许多初创企业受损,但那些能够扩大规模的企业将会发现自己成为全球性企业,或者很快被重量级企业收购。即使一家初创公司没有找到商业化的道路,如果他们与一个强大的研究导向型团队一起致力于实现人工智能算法,那么他们也可能成为收购者(因其人才而被收购的公司)。我们在 2014 年看到了这一点,当时 DeepMind ,一家成立两年的伦敦公司,开发了独特的强化机器学习算法,w 谷歌以 4 亿美元收购。

4.谁拥有最好的企业解决方案?

企业软件一直被 Salesforce、IBM、Oracle、SAP 等巨头把持。他们都认识到,人工智能是一种工具,需要集成到他们的企业产品中。但许多初创公司正急于成为下一代企业服务,填补现有企业目前没有涉足甚至没有试图破坏的空白。

我们分析了企业领域的两百多个用例,从客户管理到营销、网络安全、智能、人力资源到认知机器人流程自动化(RPA)的热门领域。企业领域比以前的领域更加开放,有许多初创公司为这些用例提供单点解决方案。今天,有超过 200 家人工智能公司正在招聘,其中许多是人工智能初创公司。网络安全领导者 DarkTrace 和 RPA 领导者 UiPath 拥有 1 亿美元的战争资金。现任者还希望确保他们的生态系统处于前沿,并投资于初创公司,以增强他们的产品。Salesforce 投资了一个客户管理解决方案Digital****Genius和类似的提供企业翻译服务的un able。在职者也经常有更紧迫的问题。例如,SAP 急于在提供云解决方案方面迎头赶上,更不用说在人工智能方面迎头赶上了。我们也看到工具提供商试图简化在企业中创建、部署和管理人工智能服务所需的任务。例如,机器学习培训是一个混乱的行业,80%的时间可以花在数据争论上。并且在测试和调整所谓的超参数上花费了过多的时间。Petuum总部位于美国匹兹堡的工具提供商已经筹集了超过 1 亿美元来帮助加速和优化机器学习模型的部署。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Enterprise AI solutions will drive improved customer service and productivity.

如果这些企业初创提供商能够迅速证明他们正在解决和扩展解决方案以满足现实世界的企业需求,他们中的许多人都可以拥有一个健康的未来。但正如软件淘金热中经常发生的那样,每个类别都会有少数赢家。对于那些人工智能企业类别的获胜者来说,如果他们看起来太具威胁性,他们很可能会与最好的同类工具提供商一起被巨头们抢购。

5.谁有最好的垂直解决方案?

人工智能正在推动一场最佳垂直行业解决方案的竞赛。有大量新的人工智能初创公司为医疗保健、金融服务、农业、汽车、法律和工业部门的企业用例提供解决方案。许多初创公司正在采取雄心勃勃的方式,通过直接向相同的客户提供服务来颠覆现有的企业。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

New industry AI solutions will either power or disrupt organisations.

很明显,许多初创公司正在提供有价值的点解决方案,如果他们能够获得(1)大型和专有的数据训练集,(2)领域知识,这使他们对某个行业内的机会有深刻的见解,(3)围绕应用人工智能的人才,以及(4)资金雄厚的资本,以资助快速增长,他们就能取得成功。那些做得很好的创业公司通常以完善的上市计划的形式来表达客户、业务效率和投资回报率的企业商业语言。

例如, ZestFinance 已经筹集了近 3 亿美元来帮助改善信贷决策,为每个人提供公平透明的信贷。他们声称拥有世界上最好的数据科学家。但他们会的,不是吗?对于那些寻求颠覆现有企业的初创公司来说,它们需要真正雄厚的资金。例如, 肯定 在销售点向消费者提供贷款,已经融资超过 7 亿美元。这些公司很快需要创建一个可防御的护城河,以确保他们保持竞争力。这可能来自数据网络 效应更多数据产生更好的基于人工智能的服务和产品,从而获得更多收入,客户获得更多数据。于是飞轮效应继续。

6.哪些企业将抓住人工智能的价值?

虽然企业可能会在自己的行业中寻找新的供应商来提供人工智能解决方案,以提高他们的收入和利润,但他们不会坐视不理,让新贵强行进入他们的客户。他们不会坐以待毙,让他们的企业竞争对手通过人工智能获得第一优势。目前有一场大规模的企业创新竞赛。大公司有自己的风险投资小组,投资创业公司,运行加速器,建立自己的创业公司,以确保他们是人工智能驱动的创新的领导者。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Corporates are well positioned to capture value from AI in the form of enhanced customer service, increase productivity and improved products and services.

由于拥有数据资产,大公司在与初创公司和小公司的竞争中处于有利地位。数据是人工智能和机器学习的燃料。谁能比拥有大量承保索赔历史数据的保险公司更好地利用人工智能呢?这家金融服务公司对消费者的金融产品购买行为了如指掌?或者是用户搜索信息最多的搜索公司?

大大小小的企业都有能力从人工智能中获取价值。事实上,Gartner 研究公司预测,到 2022 年,人工智能衍生的商业价值预计将达到 3.9 万亿美元(T2)。有成百上千个有价值的用例,人工智能可以跨组织解决。企业可以改善客户体验,节省成本,降低价格,增加收入,销售更好的人工智能产品和服务。人工智能将帮助大公司变得更大,通常是以牺牲小公司的利益为代价。但是他们需要展示出强大的远见卓识的领导能力,执行能力,以及对不总是在第一次尝试中就获得技术支持项目的宽容。

7.哪些国家将从人工智能中受益最多?

各国也在争夺 AI 霸权。中国并不羞于呼吁人工智能的出现。它正在大量投资培养技术人才和发展创业公司。其更宽松的监管环境,特别是在数据隐私方面,有助于中国在安全和面部识别等人工智能领域处于领先地位。就在最近,就有这样一个例子:在一场音乐会上,中国警察从 5 万名观众中挑出了一张通缉犯的脸。大规模分析人脸和图像的 SenseTime Group Ltd 报告称,它筹集了 6 亿美元,成为最有价值的全球人工智能初创公司。中国人指出,他们的移动市场是美国的 3 倍,移动支付是美国的 50 倍,这是一个巨大的数据优势。欧洲对数据隐私监管的关注可能会使他们在人工智能的某些领域处于不利地位,即使联盟正在谈论在人工智能领域投资 220 亿美元。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Will this be the sovereign winners in AI? China? US? Japan? Germany? UK? France?

英国、德国、法国和日本最近都宣布了他们的国家人工智能战略。例如,总统马克龙表示,法国政府将在未来五年内花费 18.5 亿美元支持人工智能生态系统,包括创建大型公共数据集。像谷歌的 DeepMind 和三星这样的公司已经承诺开设新的巴黎实验室,富士通正在扩大其巴黎研究中心。英国刚刚宣布投入 14 亿美元到人工智能领域,包括资助 1000 名人工智能博士。但是,虽然各国都在投资人工智能人才和生态系统,但问题是谁将真正抓住价值。法国和英国会只是补贴将被谷歌聘用的博士吗?虽然工资税和所得税对这六位数的机器学习工资来说是健康的,但创造的大部分经济价值可能是由这家美国公司、其股东和微笑的美国财政部创造的。

人工智能将提高公司和国家的生产率和财富。但是,当头条新闻显示我们 30%到 40%的工作将被机器取代时,这些财富将如何分配呢?经济学家可以从数百年来不断增长的技术自动化中吸取教训。会有净工作岗位创造还是净工作岗位损失?公开辩论经常引用机器学习的教父杰弗里·辛顿的话,他认为随着机器从医学图像中诊断疾病,放射科医生将会大量失业。但是我们可以看看中国人,他们正在使用人工智能来帮助放射科医生管理每年审查 14 亿次肺癌 CT 扫描的巨大需求。结果不是失业,而是市场扩大,诊断更加有效和准确。然而,可能会有一段动荡时期,届时大部分价值将流向控制人工智能技术和数据的少数公司和国家。低技能国家的财富依赖于人工智能自动化目标的工作,这些国家可能会受到影响。人工智能将青睐大型企业和技术熟练的企业。

那么这一切意味着什么呢?

在审视人工智能的前景时,很明显我们现在正在进入一个真正的人工智能黄金时代。关于经济 价值将迁移到哪里,几乎没有什么关键主题出现:

  • 全球科技巨头是这场淘金热的——为想冲进去的人提供人工智能。谷歌-亚马逊-微软和 IBM 在人工智能领域展开军备竞赛。他们正在为提供最好的芯片人工智能算法服务而激烈竞争。紧随其后的是中国科技巨头阿里巴巴和百度。很少有创业公司会在日益成为商品的云计算上比微软花费更多、更聪明或提供更低的价格,或者比谷歌的张量处理单元建立更好的人工智能芯片,或者比亚马逊建立更好的物体识别认知算法。****
  • 人工智能初创公司纷纷提供认知算法、企业解决方案和深度行业垂直解决方案。为了繁荣,初创公司需要获得独特的数据集、深厚的领域知识、雄厚的财力以及吸引和留住日益紧缺的人工智能人才的能力。这不是一个车库里的应用程序会改变世界的案例。人工智能初创公司的赢家将是那些解决有价值的现实世界问题、迅速扩大上市规模并建立可防御的阵地的公司。初创公司应该专注于企业和行业解决方案,在这些领域有许多高价值的用例需要解决。然而,随着人才大战的继续,至少在未来几年内,算法领域的初创企业收购者将会变得有些普遍。正如任何淘金热一样,一路上会有许多初创企业伤亡,每个类别都会有少数赢家。这些赢家可能会发现巨头们给了他们诱人的支票。
  • 企业处于有利地位,可以从人工智能中获取大量价值,有人说价值在数万亿美元。人工智能将越来越多地推动客户体验的改善,通过协助和自动化主要业务流程来帮助提高生产率和降低成本,并提高产品和服务的竞争力。最大的价值将从那些有规模的公司获得——最好和最大的数据集、最多的客户和最大的分布。越大的可能越大。但这只有在企业展现出强有力的领导力,并且灵活地执行的情况下才会发生,而这通常不是他们的名片。在人工智能执行方面领先的公司再次成为谷歌、脸书、苹果和亚马逊的科技巨头,他们提供人工智能产品和服务,覆盖全球数十亿受众。随着科技巨头利用人工智能进入和破坏新的领域,从零售到医疗保健到媒体等行业的企业都感到害怕。****
  • 民族国家也在进行人工智能竞赛。中国毫不掩饰其到 2030 年成为人工智能世界领导者的意图。它认为自己具有结构优势。虽然许多欧洲国家都在吹捧他们政府支持的人工智能承诺,但风险在于,他们只是在补贴全球人工智能巨头的人才,并加速其他主权国家的财富。强有力的数据隐私法规会伤害欧洲国家在人工智能方面的创新吗?人工智能带来的财富可能会流向那些控制和利用领先人工智能技术和数据的国家和公司——想想美国和中国。随着自动化侵蚀越来越低收入的工作,那些没有工作的人可能会受到挑战。

简而言之,看起来人工智能淘金热将有利于拥有控制权规模的公司和国家,而不是最好的人工智能工具和技术、数据、最好的技术工人、最多的客户和最强的资本渠道。那些有规模的企业将从人工智能中获取最大份额的经济价值。从某些方面来说,这是一种改变,也是一种选择但是也会有一些勇敢的创业公司发现巨大的金块。但是就像任何淘金热一样,许多创业公司都会有所收获。许多个人和社会可能会觉得他们没有看到淘金热的好处。

这是我打算写的关于人工智能经济学的系列文章的第一部分。我欢迎你的反馈。

作者 作者 西蒙·格林曼

我热爱技术以及如何将技术应用于商业领域。我经营着自己的咨询公司最佳实践人工智能帮助企业和初创公司的高管加速采用基于 ROI 的人工智能应用。请联系讨论此事。如果你喜欢这首曲子,我希望你能按下拍手按钮👏所以其他人可能会偶然发现它。请发表您的评论,或者您可以直接给我发电子邮件或在 LinkedIn 或 twitter 上找到我。

谁动了我的二进制文件?

原文:https://towardsdatascience.com/who-moved-my-binaries-7c4d797cd783?source=collection_archive---------17-----------------------

在机器学习项目中试验软件开发管道——第三部分——二进制文件、可执行文件等等…

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们现在已经到了这一系列文章的第三篇,是关于我在修改我的软件开发管道以包含我的新 ML 东西时所做的实验。为了总结前面的部分,我们讨论了源代码控制和版本控制,以及旨在生成构成应用程序的二进制包的构建过程。特别是,我们已经看到了如何利用 Tensorflow 和 Keras 库,我被迫在一个以前主要由为不同技术栈(在我的例子中是 Java)编写的模块组成的应用程序中包含给定编程语言(例如 Python)的部分代码。

到目前为止,我们所缺少的是如何处理作为这个编写和构建过程的结果而得到的不同的二进制工件。这个阶段也受到我们的应用程序的多语言特性的影响(也就是说,不同的组件是用不同的编程语言编写的),因为它的结果包含了许多不同的、不兼容格式的二进制包:。java 模块的 jar 文件。python 的 whl(“wheels”)等等。

我们需要处理好这件事。但是首先,让我们先试着更好地理解我们正在处理的东西,因为许多不同的东西都可以归入“二进制包”的一般定义,通常服务于不同的目的,并且在我们软件开发生命周期的不同阶段使用。仅举几个例子,我们可能有:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

可重用软件库,提供良好记录和封装的功能。这些是作为依赖项导入并嵌入到我们的代码中的(还记得吗?我们首先选择了 Maven 这样的工具来处理这些问题)。这应该是每个人都熟悉的:我们谈论的是 Tensorflow 或 Keras 之类的东西,它们构建在较低级别的 API(例如 Numpy)之上,以提供更通用的抽象级别。当然,这里我们不考虑公开可用的通用库,如上面两个,而是由我们的团队设计和制作的库,以满足我们公司或我们应用程序的特定需要和要求。一个例子?不知道…可能你公司的数据是一堆图像文件,需要非常具体的预处理步骤。我们不必在每个应用程序组件中重复代码来执行 preproc,而是将这种功能抽象并捆绑到一个可重用的库中,使用它自己的 API,并在我们的存储库中保持可用。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

**应用组件或模块。**实际上,这也是一个非常通用的术语,从技术上讲,这些库和上面的可重用库没有明显的区别。我只是喜欢使用不同的术语来区分前一种情况,在这种情况下,功能的开发考虑到了未来的重用,而开发的任何软件模块都是作为应用程序的一个非常特定的部分来运行的,可能符合一些给定的组件模型(想想在电子商务应用程序中提供一些特定业务功能的 EJB,Flask python REST 服务,等等)。).

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

**随时可部署的可执行文件。**该说的都说了,该做的都做了,我们需要的是在某个地方运行的某个软件。在一个经典的(所谓的“单片”)应用程序中,这可以是一个单独的可执行文件(和。用于 windows 系统的 exe,一个可执行文件。jar,或者类似. war/的东西。对于 Java 企业应用程序来说是 ear archive),将我们所有的库、应用程序组件等等捆绑在一起。一个这样的包可以在某个目标环境中配置、部署和运行。另一方面,在微服务架构[i]中,我们的应用程序可以由几个独立的可部署和可执行的模块组成。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在我们的嘉宾明星来了:经过训练的 ML 模特。这样,我指的是在内存中重新创建先前训练的模型所需的所有信息的序列化副本,而不需要例如从零开始重新训练它。对于简单的逻辑回归模型,这些信息可能只包含几个数字参数,对于复杂的多层深度神经网络,这些信息可能包含数百万个浮点值的矩阵。

您可能会在概念上认为这些与当前的讨论无关,也就是说,将它们视为普通的数据文件。毕竟,它们本身并不直接提供可执行的功能,而是需要一些运行时组件或服务环境来赋予它们生命。它们甚至可能以非二进制(例如文本)格式存储[ii],这使它们明确地脱离了“软件二进制”的定义。

正如您所猜测的,我倾向于采用相反的观点,将它们视为以某种序列化形式提供可执行功能的另一种模块——并将它们包括在本文的讨论中。

现在让我们讨论一下如何管理我们到目前为止讨论过的所有不同种类的二进制文件。首先,这些是为了不同的目的而存在的,所以不同的工具将会方便地管理它们。粗略地说,我们可以根据它们的用途将上述二进制文件分为两组。

第一组由我们在代码开发过程中需要作为依赖项的那些二进制文件组成——我们在应用程序代码中捆绑的软件片段,用于构建其他二进制文件。不仅是通过构建我们自己的代码生成的二进制文件,还有第三方的二进制组件,比如免费开源或授权的商业库。在这种情况下,我们需要一个二进制存储库管理器——一个专用的服务器应用程序,用于存储、版本化和提供二进制组件。选择通常取决于我们使用的包格式/构建工具。例如,对于基于 Maven 的项目,我过去使用的一种工具是 Sonatype Nexus[iii]存储库,但是存在许多有效的替代方案,一个显著的例子是 JFrog 的 Artifactory[iv]。Artifactory 也主要是面向 Maven 的,但它被宣传为*“唯一支持所有主要打包格式、构建工具和 CI 服务器的通用存储库管理器”*——这包括标准的 Python 工具,如 pip 和 distutils(尽管我猜想如果你专门使用 Python,你可以在 CI env 上安装你的私有 PyPI 服务器)。

至于第二组,一旦您构建了您的应用程序或服务,您需要保持完成的“可执行”包准备好在某个目标运行时环境中进行部署和配置。同样,使用不同的技术可能会使事情变得复杂,但这里有一个名为 docker 的小工具来拯救我们。

你不太可能还没听说过 docker。这项技术在几年前以一种“革命”的形式出现,我真的无法想象以前没有它我是如何生活的。它提供了一种在所谓的“容器”中统一打包应用程序的方法,这是一种轻量级的自包含虚拟机,将应用程序代码及其所有依赖项捆绑为一个完全自包含的高度可移植的包。[v]

Docker 有自己的存储库,名为 docker registry,您可以在自己的服务器上安装并保护它,以存储和管理容器的图像——除此之外,Artifactory 似乎也与 docker 格式兼容,可以用作容器图像的存储库。

系列化的预训练 ML 车型呢?正如我前面所说,这些通常是以某种序列化格式存储的一组参数:TensorFlow 以 Google 的协议缓冲区格式存储文件,Keras 提供了使用 HDF5 标准的基本保存格式,或者您可以将 numpy 数组定制到自己的数据结构中。

事实是,虽然在最简单的情况下,这些文件可能只包含有限的一串数字(如在简单的线性回归模型中),但一般来说,它们可能会变成具有数百万浮点参数的巨大文件,例如在非常深度的神经网络的情况下。管理巨大的文件意味着在存储和版本控制方面面临巨大的限制。幸运的是,有一个 GIT 扩展专门解决大文件管理的问题[vi]。一个更好的消息是,Artifactory 似乎也支持 GitLFS。(再说一次,我从未将 Artifactory 作为二进制库使用过,但它肯定在我的任务列表中……)。

更具体地说,最近的发展已经看到了一个全新类别的产品的出现,这些产品被命名为模型服务器,例如 TensorFlow 服务器、Apache MMS(Apache MXNet 的模型服务器)、clipper.ai 等。就我们目前的讨论而言,这些似乎更面向产品的部署阶段——而不是支持软件开发阶段的模型的存储和版本化——因此,也许这些值得在未来的帖子中专门讨论。

这篇相当长的文章我差不多要看完了。让我们总结一下到目前为止我们所拥有的:
我们已经在我们的软件工厂中建立了许多软件“机器”,一个源代码版本服务器(gitlab),一个二进制存储库(nexus,artifactury,…),一些模型服务器和一个可部署 docker 容器的存储库。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

仍然缺少的是一些将所有东西粘在一起的“胶水”。我指的是允许从编写代码到构建到测试再到部署……无论什么,而不必手动与我们谈到的每个软件工具交互的东西:也就是说,我们需要某种持续集成引擎(如 Jenkins),它有助于自动化整个过程。但是…我认为这篇文章已经太长了,所以我会在下一次的某个时候再讨论这个话题。

希望你资助我们讨论的有趣的东西!

链接和参考

[我]查看我以前的帖子

[ii]例如,它们可以存储为基于 XML 的交换格式,就像 PMML 的情况一样,这是表示预测解决方案的事实标准。

https://www.sonatype.com/nexus-repository-sonatype

【ⅳ】https://jfrog.com/artifactory/

https://www.docker.com/

https://git-lfs.github.com/

谁需要大数据呢?

原文:https://towardsdatascience.com/who-needs-big-data-anyway-bf545b34ca78?source=collection_archive---------3-----------------------

能否从大数据入手,从小处着手?

大数据、机器学习以及随之而来的一切正变得日益流行。不可否认,大数据蕴含着巨大的商机。很多大企业启动项目只是为了收集未来价值的数据。他们投入巨资向客户提供“免费”服务。这些服务不是免费的。你用你的数据付费。由此可见这些数据的价值有多大。

但是如果你在经营一家小公司呢?如果你没有巨额投资的资源怎么办?如果你的用户群仍然很小怎么办?你只是忽略了这些机会吗?或者可以从小处入手大数据?不是每一位数据都有一些价值吗?我们如何访问这个值?这些是我在寻找新的商业机会时开始问自己的问题。我想和你分享我的想法。

为什么不从头开始学呢?这就像一个小孩学习玩电脑游戏一样。它通过反复试验来学习。或者谷歌 DeepMind learn 如何玩 Atari Breakout 。也许我们不会使用相同的算法或软件,但基本思想是相同的。我将借助一个例子来演示这个想法的基本方法。

最近我一直在整理我的个人财务。我想知道我的钱去了哪里。基本上,我想把我所有的花费归为某一类。有“免费”的在线服务可以为你做到这一点,但作为一名软件工程师,我看到了一个很好的挑战;我想用这个来验证我的想法。下面是基本方法。

首先开始思考你的数据。你当初要它做什么?但更有趣的问题是,这些数据还能用来做什么?我想掌握我的财务,因此给我的支出贴上标签。也许我们还可以用它来找到一些储蓄。或者,如果我们从其他人那里获得更多数据,也许我们可以找到一个健康的支出模式。我们现在对数据的价值有了一个概念。永远记住这一点。

开始收集数据。确保你拥有实现目标所需的一切。你怎样才能用最少的努力做到这一点?是不是少了什么?我能在哪里得到这个?我该怎么补偿呢?在我的案例中,标签/类别丢失了。我们将不得不使用一种无监督学习算法。在这种情况下,我们将使用这种算法来识别不同的消费群。之后,我们可以手动为每个集群指定一个标签或类别。

开始实验不同的算法和一种算法的用法。最有可能的情况是,如果您按原样使用您的银行交易数据,您会发现基于交易金额的分类。例如,您将找到一个所有费用都在 1400 到 1500 欧元之间的分类。这个用处不大。您需要转换数据,以便还可以使用帐号、帐户描述和消息信息。我不会详细介绍如何做到这一点,但是如果你感兴趣,可以看看下面的:如何处理分类变量单词包模型。现在,您可能会找到一些有用的聚类,它们确实使标记您的数据变得容易得多。然而,我们还没有到那一步。例如,所有不同的保险可能会有自己的分类。我们该如何处理这件事?

在大数据中,算法可以从数据中检索领域知识,这在我们的情况下可能是不可能的。为什么不自己加领域知识?当你请朋友帮忙标记你的银行交易时,你可能也会告诉他识别某些保险公司的描述。我们可以在模型中添加一些简单的规则来增加这个领域的知识。例如,我们可以添加一个规则,当描述包含某个单词(例如保险公司的名称)时,将交易标记为支付给保险公司的费用。

我们已经标记了数据!现在我们可以重复我们的过程,并使用监督学习算法向我们提出新数据的标签。随着我们收集更多的数据,我们可以重新训练和改进监督学习算法。

我在这里给出的方法只是一个例子。它可以被重用,但它不是一个通用的方法。我希望这种方法或基于这种方法的方法会给你带来一些新的想法或机会。我一直在用我自己的银行交易数据运行我的想法。我是如何做到这一点的超出了本文的范围,但也许我会在未来的文章中分享这一点。

回到我的问题:“你能从大数据开始吗?”我想我的问题的答案是:“是的,你可以!”。大数据当然更有价值,但你没有的东西没有价值。因此,开始思考你所拥有的数据及其价值。我希望我给了你一些精神食粮。请分享你的想法!

谁想要音乐数据和版权管理的全球解决方案?

原文:https://towardsdatascience.com/who-wants-a-global-solution-for-music-data-and-rights-management-68f770156925?source=collection_archive---------11-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

建立一个全球性的解决方案来解决由音乐元数据、版权所有和许可的脱节组织所导致的无数问题,仍然是音乐行业最棘手的问题之一。

最近有消息称,美国专家 ASCAP 和身体质量指数正在开发一个公开的、综合的音乐版权数据库,这是解决这一长期问题的全球性综合解决方案的关键吗?支持者称,该数据库将“对美国绝大多数授权音乐的所有权份额提供一个权威的观点”。

不正确或不完整的元数据会导致大量破坏性问题。其中,歌曲使用的跟踪和分发缺乏透明度和准确性,这可能导致版权所有者错过版税支付。此外,演出版权组织(PROs)使用大量的专有系统。因此,即使元数据存在且完整,在版税到达合法所有者手中之前,仍然有许多漏洞。

大多数音乐行业专家认为,解决这个大问题的唯一全面的解决方案在于开发一个单一的、统一的数据库,将作品与录音配对,供全球所有专业人士使用。尽管对于哪种技术或工具组合最适合这一目的(如区块链)众说纷纭,但对当前形势的深入分析充分表明,一个普遍整合的系统对于提高效率和准确性至关重要。

那么,我们还在等什么?

这项技术的存在是为了让这个梦想成为现实,它给音乐行业的每个人带来的好处是广泛而明确的,包括艺术家、出版商、唱片公司和专业人士。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

不幸的是,虽然许多国家只有一个 PRO,但美国有四个组织代表歌曲的表演权,这进一步分散了数据。虽然 ASCAP 和身体质量指数更紧密地整合他们的数据库的举措可能是朝着正确的方向迈出的一步,但排除其他两家总部位于美国的专业公司——SESAC 和全球音乐版权公司——将导致即使在美国市场也存在不完整的数据集,更不用说全球了。

这只是整个行业担忧的开始。ASCAP/身体质量指数的合作只是为音乐作品创建一个集中和透明的数据库的长期努力中的最新一项,迄今为止,没有一项成功。

ASCAP 和身体质量指数只是对最近国会可能很快创建一个中央统一音乐数据库的声明做出反应吗?许多行业专家认为,这种系统包含政府所有权的模式将带来灾难性的后果。例如,如果版权所有者不使用他们的信息支持数据库,则限制版权所有者对版权侵犯提起侵权诉讼的补救措施。因此,也许 ASCAP/身体质量指数的声明主要说明了这些组织试图让政府置身于元数据和权限管理之外,而不是真正致力于开发一个全面的系统。

不管是哪种情况,这则新闻似乎都没有给出一个完整的解决方案。但是事情是这样的:所需的技术和专业知识已经在这里了。为了实现绝对的准确性和透明度,我们必须采用一种高效、全球认可的技术解决方案,从而让行业将这一长期存在的问题抛在脑后。

谢尔盖·布多夫
SVP,
媒体&娱乐报

发现更多谢尔盖·布鲁多夫的故事

为什么我今年要去 GDC。

原文:https://towardsdatascience.com/whos-exhibiting-at-gdc-this-year-40d285dbd462?source=collection_archive---------4-----------------------

…并采用数据驱动的方法来做决定。

这是你在参加任何会议之前可能会问的一个问题,尤其是在繁忙的时候和一个大的、有利润的季度交易接近尾声的时候。

你可以浏览一个网站,得到一个随机的无意义的名字列表,或者…你可以数据化一个完整的数据驱动的方法。

我想采取数据驱动的方法来回答这个问题,看看它是否值得第一次参加。

使用 Cooladata ,我能够产生一个很好的结果摘要,并与我的团队快速分享。

我参加会议有各种各样的原因:职业发展、人际关系和业务发展等等。就 GDC 而言,我主要感兴趣的是与游戏公司建立联系,Cooladata 可能非常适合作为他们的分析解决方案。

鉴于我参加会议的标准相对宽松,我需要一些准则来坚持。以下是我喜欢寻找的东西:

  • 中小市场范围的公司
  • Cooladata 服务良好的行业中的公司(即游戏)
  • 主要是 B2C 公司
  • 资金相当充足的公司

方法

首先,我需要拿到一份参展商名单,看看哪些公司计划参展。幸运的是,GDC 的人通过提供一个方便的公司列表和他们的域名列表,使这变得容易了一些:http://expo.gdconf.com/2018/exhibitor-list/

一旦我有了这个列表,我需要用一些关键的公司信息来充实它,比如员工数量、行业、资金和其他一些数据点。

最后,我需要做一些探索性的分析,看看参展的公司是否具备我想要的特征。

方法

为了从 GDC 列表中捕获公司域,我使用 R 下载了网页,并采用了一些非常简单的键值提取技术来收集所有公司域的列表。

一旦我有了这些公司的程序清单,我就使用 Clearbit 的 Enrichment API 尽可能多地了解这些公司。Clearbit 返回了每家公司大约 28 个不同的数据点(有时更多),这些数据点对于详细描述这些公司的一些非常具体的属性非常有帮助。

在我丰富了我的公司列表后,是时候做一些探索性的数据分析了。我使用了dplyrggplot2的组合来产生这些视觉效果。您可以在 GitHub 上找到这些图的源代码。

结果

让我们分别来看看这些标准。

公司规模

Clearbit 返回了大约 38%公司的收入范围。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

基于抽样偏差,我认为大公司的数据可能比小公司更容易获得,所以这对我来说是一个好兆头,因为我看到大多数公司都在范围的低端,尽管抽样偏差对我不利。

Clearbit 返回了大约 48%公司的员工范围数据。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

再一次,考虑到我所认为的小公司、中端市场公司和不太多的大企业的健康组合,事情对我来说看起来很好。

为了确保这里没有任何奇怪的事情发生,我想看看这两个分类变量之间的相互作用。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

看起来,这些公司的健康组合正好在我的理想范围内,收入不到 1 亿美元,员工人数大大低于 250 人。

工业

Clearbit 返回“标签”,这些标签是根据他们对某个公司可能属于哪个行业、部门或集团的最佳猜测而生成的。这里的数据可用性是 100%,所以我决定应用一个非常严格的规则来过滤掉这些干扰。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

“游戏”类别中的公司是标签中有“游戏、游戏或游戏”的公司。虽然这张图对我来说不是一个好兆头(我想和游戏公司谈谈),但仔细看看数据就会发现,许多“游戏公司”被归类为“互联网”或“技术”。

这只是表明,如果有些东西看起来有误导性或似乎不合理,你总是需要查看你的数据。人工检查是不可忽视的方法!

B2B 与 B2C

如果会议由 B2B 供应商主导,很难逃脱噪音并表现出极端的销售 y。另一方面,如果它完全面向消费者,我可能不会遇到我正在寻找的那种人。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在我看来,公司的崩溃非常健康。就像我说的,我参加过严格意义上的 B2B 会议,当每个人都试图向你推销东西时,试图进行对话是一件很麻烦的事情。

提供资金

最后说一下风投资金。有理由假设 Clearbit 从 Crunchbase 获取融资数据,这是一个“最好”的融资资源。当然,鉴于融资交易通常是很少向公众披露的私人事务,我可以理解为什么这里的数据很少。

在这里,只有 9%的公司有融资数据。这可能意味着只有 9%的公司得到了某种形式的资助。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

坦白说,我不知道这个分布是好是坏。但它确实显示了相对于其他公司而言, Magic Leap 筹集了多少资金。

结论

总的来说,这看起来像是第一次参加一个伟大的会议。正如大多数人会注意到的,会议都是关于人的,不一定是参展的技术公司。

你可以在我的同事和团队成员的 GitHub 上找到这些例子的所有代码。

如果你想在会议上见面,请随时给我发电子邮件,地址是丹·cooladata.com!

谁在说话?—使用 K-Means 聚类对 Python 中的神经事件进行排序

原文:https://towardsdatascience.com/whos-talking-using-k-means-clustering-to-sort-neural-events-in-python-e7a8a76f316?source=collection_archive---------13-----------------------

尖峰分类

癫痫是一种大脑疾病,其中同步脑电活动过度导致癫痫发作,其范围可以从根本没有任何外部症状到抽搐运动(强直阵挛性癫痫发作)和意识丧失(失神癫痫发作)。对于一些癫痫患者来说,手术切除受影响的脑组织可能是一种有效的治疗方法。但是在进行手术之前,需要精确定位患病的脑组织。为了找到这个*癫痫发作病灶,*记录电极被插入患者大脑,通过它可以实时监测神经活动。在之前的一篇文章中,我们研究了如何处理来自人类癫痫患者的这种电生理数据,以便提取棘波事件。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如上所述的这种尖峰事件反映了单个神经元的活动,因此可以对疾病的性质给出重要的见解。然而,如下图所示,单个电极通常一次从一个以上的神经元获得信号。虽然这可能不是定位癫痫发作焦点的问题,但与癫痫发作背后的机制相关的研究问题通常需要更详细地了解哪个神经元在什么时间活跃。那么,我们如何才能算出有多少神经元对我们的信号有贡献,以及每一个神经元何时活跃?

现在,在我们开始回答这些问题之前,我想提醒你,你可以在这里找到这篇文章的代码。当然,您也可以在 Twitter 上关注我,或者通过 LinkedIn 联系我。

尖峰分类

找出上述哪种尖峰波形属于某个神经元是一项具有挑战性的任务,由于我们没有任何地面真实数据来比较我们的结果,这一任务变得更加复杂。因此,应用无监督聚类算法对尖峰数据进行排序似乎是一个不错的选择。尖峰分类实际上是一个复杂的话题,也是一个正在进行的研究领域,如果你想有一个更详细的概述,你可以看看这里的。在下文中,我们将使用 K-means 聚类对峰值进行分类,并概述峰值分类的一般过程。然而,应该注意的是,在实践中,K-means 不是用于分类尖峰的最佳算法。如上所述,有更复杂的算法可以产生更好的结果,但是为了说明提取和分类尖峰信号的一般过程,K-means 做得很好。

特征选择

因此,我们需要做的第一件事是决定我们的尖峰波形的什么特征要输入到我们的算法中。此时,每个波形由 90 个样本定义,总持续时间约为 2.8 毫秒。然而,并不是所有的样本都具有相同的信息量。例如,大多数波形的第一个样本在 0 左右波动。而样本 25 至 30 代表波形的第一次正偏转,并且似乎分成两组,一组具有高峰值,一组具有低峰值。因此,我们应该选择一些能够很好地代表棘波波形的特征,并去除其他特征。做到这一点的一种方法可以是获取尖峰的最大和最小幅度或其宽度或定时参数。另一种常见的方法是应用主成分分析(PCA)并将主成分用作特征。scikit-learn 的 PCA 实现可以在本教程的 Jupyter 笔记本中找到。在下图中,第一个主成分与第二个主成分相对应,而第三个主成分用点的颜色表示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

从图上看,我们的数据中似乎有三个不同且略有重叠的聚类。中间的一个大星团被左右两个小星团包围。所以我们实际上做的是降低数据的维度。之前,每个棘波波形由 90 个样本表示,而现在维数减少到只有三个特征,这允许我们将每个棘波分配到一个簇。为此,我们现在需要我们的 K 均值聚类算法。

k 均值聚类

我们实现 K-means 的方式非常简单。首先,我们从样本中选择若干个 K 随机数据点。这些数据点代表聚类中心,它们的数量等于聚类的数量。接下来,我们将计算所有随机聚类中心和任意数据点之间的欧几里德距离。然后,我们将每个数据点分配到离它最近的聚类中心。显然,用随机数据点作为聚类中心做所有这些不会给我们一个好的聚类结果。所以,我们重新开始。但是这次我们不使用随机数据点作为聚类中心。相反,我们基于之前的随机分配计算实际的聚类中心,并再次开始这个过程…一次又一次…一次又一次。随着每次迭代,切换聚类的数据点将变得更少,我们将达到(希望)全局最优。下面你可以找到如上所述的 K-means 的 Python 实现。

import numpy as npdef k_means(data, num_clus=3, steps=200): # Convert data to Numpy array
    cluster_data = np.array(data)

    # Initialize by randomly selecting points in the data
    center_init = np.random.randint(0, cluster_data.shape[0],
                  num_clus) # Create a list with center coordinates
    center_init = cluster_data[center_init, :] # Repeat clustering  x times
    for _ in range(steps): # Calculate distance of each data point to center
        distance = []
        for center in center_init:
            tmp_distance = np.sqrt(np.sum((cluster_data - 
                           center)**2, axis=1))
            tmp_distance = tmp_distance + 
            np.abs(np.random.randn(len(tmp_distance))*0.0001)
            distance.append(tmp_distance) # Assign each point to cluster based on minimum distance
        _, cluster = np.where(np.transpose(distance ==
                     np.min(distance, axis=0))) # Find center of each cluster
        center_init = []
        for i in range(num_clus):
            center_init.append(cluster_data[cluster == i, 
            :].mean(axis=0).tolist())

   return cluster

聚类数

很好,我们准备好了。我们从数据中提取了峰值,选择了特征,并编写了 K 均值函数。现在最后一个问题是:我们期望在数据中找到多少个集群?有几种方法可以解决这个问题。一种是利用我们的领域知识。根据经验,我们预计从单个电极记录中不会发现多于两个或三个可分离的簇。本文中的第一个情节似乎证实了这一观点。另一个更客观的方法是用肘法。为此,我们对我们的数据运行 K-means 函数几次,并且每次运行都增加聚类的数量。对于每次运行,我们计算每个数据点到其聚类中心的平均距离。如下图所示,随着聚类数量的增加,平均聚类间距减小。这并不令人惊讶,但我们也可以看到,当我们达到六个集群时,到集群中心的平均距离不再有太大变化。这被称为“拐点”,它为我们提供了使用多少集群的建议。

# Define the maximum number of clusters to test
max_num_clusters = 15# Run K-means with increasing number of clusters (20 times each)
average_distance = []
for run in range(20):
    tmp_average_distance = []
    for num_clus in range(1, max_num_clusters +1):
        cluster, centers, distance = k_means(pca_result, num_clus)
        tmp_average_distance.append(np.mean([np.mean(distance[x]
        [cluster==x]) for x in range(num_clus)], axis=0))
    average_distance.append(tmp_average_distance)# Plot the result -> Elbow point
fig, ax = plt.subplots(1, 1, figsize=(15, 5))
ax.plot(range(1, max_num_clusters +1), np.mean(average_distance, axis=0))
ax.set_xlim([1, max_num_clusters])
ax.set_xlabel('number of clusters', fontsize=20)
ax.set_ylabel('average inter cluster distance', fontsize=20)
ax.set_title('Elbow point', fontsize=23)
plt.show()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

对数据运行代码

好吧,六个集群似乎有点高,但让我们看看我们得到了什么。下面的左图再次显示了第一和第二主成分,但这次颜色代码表示 K-means 算法将每个数据点分配给的聚类。右图显示了每个簇的平均尖峰波形。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如我们可以从上面的右图中看到的,我们的 K-means 算法在聚类波形方面做得很好。事实上,我们有三个以上的集群。标有绿色“簇 2”的平均波形是具有高振幅峰值的波形。棕色“簇 5”是具有低峰值振幅的尖峰的平均波形,而橙色“簇 1”具有大量噪声和高标准偏差(阴影区域)。似乎我们在这个集群中总结了很多工件,所以我们应该放弃它。最后,群集 0、3 和 4 看起来完全相同,因此我们可以将它们合并为一个群集。这样做将总共给出四个集群,其中一个包含大部分工件。所以我们有多于三个但少于六个的集群。下图显示了产生的三个集群。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在我们结束之前,我们应该再次思考这些结果实际上意味着什么。肘方法告诉我们在数据中寻找六个集群。然而,根据经验,我们知道这个数字有点过于乐观。因此,我们用六个初始聚类对数据进行聚类,查看每个聚类的平均波形,然后根据平均波形的相似性将三个聚类合并为一个。另一个集群我们放弃了,因为它主要包含噪音。最后,我们有三个集群,但这是否也意味着我们记录了三个独立神经元的信号?不一定。要回答这个问题,我们必须更详细地检查数据。例如:在一个神经元产生一个尖峰信号后,它在 1-2 毫秒内不能产生新的尖峰信号。这被称为不应期,它限制了神经元的最大尖峰频率,并确保信号只从神经元的细胞体沿着轴突传播到突触,而不是相反。因此,如果我们要计算其中一个簇的棘波之间的时间差,并且我们将得到小于 1 毫秒的时间差,则我们必须得出结论,该簇包含来自不止一个神经元的棘波。此外,大脑在颅骨内脉动,这意味着神经元和电极尖端之间的距离会随着时间的推移而改变,这将影响尖峰的波形。因此,同一个神经元仍然可以产生两种略有不同的波形。总之,我们概述了棘波分类过程和 K-means 在 Python 中的实现,但所有这些只是一个起点,而不是对有多少神经元实际上对信号有贡献的明确答案。

如果你想要这个项目的完整代码,你可以在这里 找到它 。当然,你也可以在 Twitter 上关注我,或者通过 LinkedIn 联系我。

** [## akcarsten/spike _ 排序

在 GitHub 上创建一个帐户,为 akcarsten/spike_sorting 开发做贡献。

github.com](https://github.com/akcarsten/spike_sorting)**

谁在椭圆形办公室发微博?

原文:https://towardsdatascience.com/whos-tweeting-from-the-oval-office-96ea5b60c03?source=collection_archive---------1-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Did Trump type out that tweet? Or was it an aide in Trump clothing?

更新:我已经写了一篇后续文章来详述我如何通过构建一个 Twitter 机器人来部署我的模型。

我已经开发了一个推特机器人@ who sintheval,它转发唐纳德·特朗普的每一条推文,并预测这条推文是由特朗普本人还是他的一名助手写的。请务必在 Twitter 上关注这个机器人,并继续阅读以了解我是如何构建这个模型的!

我是 Greg Rafferty,湾区的数据科学家。你可以在我的 github 上查看这个项目的代码。如有任何问题或反馈,请随时联系我!

动机

2017 年 12 月 1 日,迈克尔·弗林承认向联邦调查局撒谎。第二天,特朗普的个人推特账户发推文称:

这颇具争议,因为在那年的 2 月 14 日,也就是弗林辞职的第二天,川普要求时任联邦调查局局长的詹姆斯·科米放弃对弗林的任何调查。如果特朗普在向科米提出要求时知道弗林确实向联邦调查局撒谎,那么特朗普的推文可以被视为特朗普企图妨碍司法公正的证据。在几名法律专家论证了这一点后,特朗普为自己辩护说,他的律师约翰·多德写下并发布了这条推文。但他真的这么做了吗?

本文分为四个部分:

  • 背景
  • 特征选择
  • 模型
  • 结果

中间的两个部分(尤其是模型部分)有点技术性;因此,如果你对此不感兴趣,而你只是想直接跳到结果,看看到底是谁发布了弗林的推文,请随意!

背景

法医文本分析是机器学习的一个早期领域,已经被用于各种案件,从识别尤那邦摩恐怖分子发现 J.K .罗琳是作者罗伯特·加尔布雷斯的真实身份确定每篇联邦党人论文的具体作者。这个项目旨在使用机器学习和这些相同的技术来识别在 @realDonaldTrump 上的推文,这些推文是由特朗普本人或他的工作人员在使用他的账户时写的。然而,这项任务是独特的,特别具有挑战性,因为推文很短——在这么短的文本中没有太多信号。最终,我还是成功了,准确率接近 99%。继续关注我的 Twitter 机器人@ who sintheval吧,每当特朗普发推文时,它都会实时发布预测。

数据

在 2017 年 3 月 26 日之前,特朗普使用三星 Galaxy 设备发推文,而他的员工使用 iPhone 发推文。从每条推文的元数据中提供的这些信息,我们知道是特朗普本人还是他的工作人员发推文(见这些链接了解一些 文章 讨论这个假设)。然而,在 3 月之后,特朗普也改用 iPhone,所以对推特的识别不能仅来自元数据,而必须从推特的内容中推断出来。

我使用布伦丹·布朗的特朗普推文数据档案收集了特朗普账户从 2009 年年中开始到 2017 年底的所有推文。这一组包括近 33,000 条推文。尽管我知道一条推文来自谁的设备,但作者身份仍有一些模糊之处,因为众所周知,特朗普会向助手口述推文,所以一条推文可能具有特朗普的特征,但却是从非特朗普设备发布的,而且(特别是在竞选期间)还会与助手合作写推文,因此真正的作者身份不清楚。

从 2009 年 5 月 4 日特朗普的推特账户开始,直到 2017 年初他停止使用安卓设备,我知道(或至少很好地猜测)作者的推文超过 3 万条(关键是,弗林的推文不在这个日期范围内,所以我让我的模型对真正的推文者进行了最佳猜测——在本文后面的结果部分有更多信息)。这 30,000 条推文在安卓/非安卓之间平均分配(47% / 53%),所以阶级不平衡不是问题。这是我的训练数据。使用几种不同的技术,我从这些数据中创建了近 900 个不同的特征,我的模型可以用它们来预测作者。

选择功能

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

So many important decisions!

我着眼于六大类特征来构建我的模型:

  • 特朗普怪癖
  • 风格
  • 感情
  • 情绪
  • 词汇选择
  • 语法结构

特朗普怪癖

数据科学有时可能更像艺术而不是科学。为了开始我的模型,我首先想到我作为一个人如何识别一条推文是特朗普的。然后,我尽最大努力将这些“感觉”转化为基于规则的代码。例如,一些显而易见的怪癖可以识别特朗普本人是否在键盘后面,这些怪癖是在他的推文中滥用所有大写字母,随机大写特定的单词,或者是无偿的!感叹号的使用!!!!!

事实上,我的模型中最有影响力的特征之一就是我后来提到的引用转发。特朗普似乎不知道如何在推特上转发某人。在全部 33,000 条推文中,只有一条来自安卓设备的转发。相反,特朗普复制了别人的推文,@提到了用户并用引号将推文括起来,然后自己发布:

这些经常是,但不总是,像这样自我庆祝的推文,这就是为什么,正如你将在我的下一篇讨论结果的帖子中看到的,唐纳德·川普倾向于“经常提到自己。**

风格

风格特征是那些不特定于特朗普个人风格的特征,而是可以用来识别任何推特用户。这些类型的特征包括推文、句子和单词的平均长度。我还查看了各种标点符号的使用次数(特朗普几乎从不使用分号;他的助手做得更频繁)。一条推文中的@提及次数、#标签数和 URL 数都被证明是强预测特征。最后,这条推文发布的日期和时间很能说明问题。

感情

我用 C.J .休顿的 VADER 软件包来提取每条推文的情感。VADER,它代表着ValenceAwareDictionary 和 sEentimentReasioning(因为,我想,VADSR 听起来很傻?),是一个专门针对社交媒体的词典和基于规则的工具。给定一个文本字符串,它输出一个介于 0 和 1 之间的十进制数来表示文本的消极、积极和中性,以及一个介于-1 和 1 之间的复合分数,它是一个聚合度量。

关于 VADER 软件包的开发、验证和评估的完整描述可以在本文中找到,但要点是该软件包的作者首先构建了一个与情感相关的词汇特征(或简单英语中的“单词和短语”)列表,然后将该列表与一些描述短语的语法结构如何增强或减弱情感的规则相结合。当与人类评分员进行测试时,VADER 的准确率高达 96%到 84%。

情绪

加拿大国家研究委员会创造了一个超过 14000 个单词的词汇库,每个单词被分为与两种情绪(消极、积极)或八种情绪(愤怒、期待、厌恶、恐惧、快乐、悲伤、惊讶、信任)中的任何一种相关或不相关。他们友好地向我提供了词典,我写了一个 Python 脚本,循环遍历 tweet 中的每个单词,在词典中查找,并输出与该单词相关的任何情绪。然后,每条推文都被分配了一个分数,对应于与该情绪相关的词的数量。

词汇选择

为了分析单词选择,我使用了一种叫做TF–IDF的技术,它代表词频——逆文档频率。它基本上是衡量一个单词对文档的描述性和独特性的一种方法。假设您想将一些新闻文章组合在一起,这样您就可以向读者推荐相似的文章。你把你的电脑设置成阅读每篇文章,其中一篇文章出现了 10 次“棒球”这个词。那一定是文章中非常重要的一个词!这就是术语频率部分。

但现在,同一篇文章也有 8 次“说过”这个词。这似乎也是一个非常重要的词。但是我们人类却不这么认为;我们知道,如果几篇文章提到“棒球”,它们可能是关于同一个主题,但如果几篇文章提到“说”,这并不能告诉我们多少文章的相似性。因此,我们接着查看集合中的所有文章,并计算其中有多少文章包含单词“baseball”和“said”比方说,在 1000 篇文章中,只有 30 篇有“棒球”这个词,但 870 篇有“说”这个词。因此,我们取该计数的倒数,即 1/30 和 1/870,然后乘以频率项,即 10 和 8。这是逆文档频率部分。因此,单词“baseball”的得分为 10/30 = 0.333,单词“said”的得分为 8/870 = 0.009。我们对每个文档中的每个单词都这样做,简而言之,看看哪些文章具有相同的高价值单词。这是 TF–IDF。

为了减少我的模型的计算需求,我只查看了单字,而不是二元和三元模型(TF-IDF 处理这些小短语的方式与处理单字完全相同)。每一个 n-gram 都需要成倍增加的处理时间,我认为“弯曲的希拉里”或“说谎的特德·克鲁兹”仍然会被“弯曲的”和“说谎的”这两个词单独提取出来。我还忽略了超过 99%的推文中出现的单词(称为语料库专用停用词),以及不到 1%的推文中出现的单词。我在整个项目中大量使用 Python 的 scikit-learn 包,其中包括他们的TF–IDF 实现

语法结构

对当前事件使用自然语言处理的主要挑战之一是事件会随着时间而变化。虽然“不诚实的希拉里”和“撒谎的特德·克鲁兹”这两个词在川普的总统竞选中出现了很多次,但在最近的推特上却几乎没有出现过。我想捕捉特朗普推文的更基本形式,所以我使用自然语言工具包将每条推文转换成词性表示。

这实质上是将每个词转换成它的词性,保持对该词在句子中的作用的意识,以便将句子“”中的名词“侮辱”与句子“中用作动词的同一个词区分开来。当 Trump 提到他的政治对手时,“Crooked Hillary”用作侮辱,而“你通过将政治过程简化为幼稚的骂人来侮辱政治过程”。

这将短语“我不得不解雇弗林将军,因为他对副总统和联邦调查局撒谎”更改为其更基本的词类形式为“PRP VBD TO VB NNP NNP IN PRP VBD TO DT NNP NNP CC DT NNP”,使用 Penn 词类标签 (PRP =人称代词,VBD =动词,过去式,TO = to,VB =动词,基本形式,NNP =单数专有名词等)。使用与之前相同的 TF-IDF 流程,但这一次忽略了 unigrams,而是专注于 bigrams 和 trigrams,我可以提取出特朗普或他的助手在推特上发布的更通用的方法。

最后,我使用了斯坦福命名实体识别(NER)标签将所有的名字替换为“人”,将所有的地点替换为“地点”,将所有的组织替换为“组织”这是又一次试图将推文从可能随时间变化的细节中概括出来。在处理这些推文的过程中,这个 NER 过程是到目前为止计算量最大的过程,如果我再次做这个项目,我会认真考虑一个不依赖于高级统计学习算法的不太先进的 NER 标记器,并且会大大加快处理时间*。你已经被警告了!***

模特们表现如何?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

They did well, very well

首先,按照这个领域的标准,我将我的数据分成 80%的训练集和 20%的测试集。我将测试集放在一边,直到我对我的所有模型尽可能准确感到满意,然后发送测试集通过它们来获得我将在这里报告的性能度量。

特征重要性

我做的一个更重要的任务是将我的特征按照它们对模型结果的影响排序。为此,我使用了 scikit learn 的脊分类器。岭回归是逻辑回归的一种形式,它包括一个正则化因子α。在α= 0 时,岭回归与非正则化逻辑回归相同;在低 alpha 级别,影响最小的特征的系数被强制为零,有效地将它们从模型中移除;在更高的 alpha 级别,会移除更多的功能。我递归地迭代每个 alpha 级别,一个接一个地删除特性,直到一个都没有。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如你在上面的图中所看到的,当 alpha 值刚刚超过 10 时,第一个(影响最小的)特征就消失了。在 10 ⁵的范围内,特征丢失迅速增加,仅留下最有影响的特征留在高于 10 ⁶.的 alpha 级别

单个模型

我一共建立了 9 个模型:高斯朴素贝叶斯多项式朴素贝叶斯K 最近邻逻辑回归支持向量分类器支持向量机以及 AdaBoost梯度提升随机森林的集成方法。每个模型都经过仔细的调整,仅在训练数据上使用 10 重交叉验证,并在测试数据上进行评估。

交叉验证是一种有效的技术,用于训练这些模型,而不会使它们过于偏向正在被训练的特定数据;换句话说,允许他们更好地归纳未知数据。在 10 重交叉验证中,数据被分成 10 个大小相等的组,即组 1-10。在第一次训练迭代中,模型在组 1–9 上训练,在组 10 上测试。重复这个过程,但这次是在第 1-8 组和第 10 组进行训练,在第 9 组进行测试。这个训练步骤总共重复 10 次,因此每个组从训练集中保留一次,并用作不可见的测试集。最后,在所有 10 次折叠中具有最佳平均性能的模型参数组合是在最终模型中使用的一组参数。

这些模型背后的算法都非常迷人;它们各有优缺点,在偏差—方差权衡上有不同的平衡,有时处理时间也大不相同(例如,训练朴素贝叶斯只需要几分之一秒,而支持向量分类器和梯度推进方法都需要一整个周末来执行网格搜索)。如果你有兴趣了解更多,我会从这些模型的维基百科条目开始:

此外,使用上面生成的那些特征重要性,我在总共近 900 个特征的子集上训练每个模型。例如,朴素贝叶斯仅使用前 5 个特征表现最佳,而两个增强模型在处理前 300 个特征时都最开心。这部分是由于维数灾难;事实上,在高维空间中,两个看起来很近的点(当在我们的三维头脑中想象时),实际上可能相距非常非常远。特别是,k-最近邻模型(knn)对太多的维度高度敏感,所以我也将主成分分析 (PCA)应用于馈入该模型的数据。

PCA 是一种既能降低维数又能消除特征间共线性的技术。如果你能想象高维空间中的一组向量,PCA 将扭曲和按摩这些向量,使它们中的每一个都垂直于所有其他向量。如果这些矢量表示要素,那么通过强制它们全部正交,我们还可以确保它们之间不存在共线性。这将极大地改善 knn 等模型的预测,并允许我们在不减少信息量的情况下减少发送到模型的特征数量。简而言之,这使我能够从我的 knn 模型中获得更好的性能。

合奏

最后,我为每个模型创建了两个不同的集合。第一个是简单的多数投票:由于模型数量为奇数,输出为二进制,有分歧的模型之间永远不会出现平局,所以我简单地将特朗普的所有预测和助手的所有预测相加,并为我的最终预测提供更大的预测。我的第二个组合更复杂一些:我把前九个模型的结果输入到一个新的决策树中。这个最终模型在我的测试集上具有近乎完美的准确性。

现在,终于有了结果…

结果

可以看到,梯度提升模型和随机森林的表现最好,错误率只有 1/20。

其他模特的个人表现不太好,但对最终的组合贡献很大。我根据第一组 9 个模型的结果构建的决策树的准确率超过了 99%!

如果你不清楚所有这些措施是什么,这里有一个简单的解释。准确性是这些衡量标准中最直观的,它就是正确的猜测数除以总猜测数,也就是说,在我所有的猜测中,有多少是正确的? Precision 回答问题,在所有我猜测是特朗普的推文中,有多少是真的特朗普?回忆几乎是精确的反义词;它回答了这个问题,在特朗普写的所有推文中,我答对了多少?F1 分数是精确度和召回率的混合,从技术上来说是两者的调和平均值。它远不如准确性直观,但当班级不平衡很大时,f1 分数是比准确性更好的衡量标准。然而,在这个 tweet 数据的例子中,我的类被很好地平衡了,这就是为什么在上面的图表中所有的度量或多或少是相等的。如果这让你感到困惑,或者你只是想了解更多,这里有一篇关于这些措施的极好的博客文章。

那么,特朗普的推文有什么特点呢?

  • 引用转发
  • @提及次数
  • 晚上 10 点到早上 10 点之间
  • 惊讶、愤怒、消极、厌恶、喜悦、悲伤、恐惧
  • 感叹号
  • 完全大写的单词
  • @realDonaldTrump

正如我所料,我在这篇文章的功能选择部分描述的引用转发高度预测了特朗普的推文。其他用户的“提及”也是如此。特朗普经常在晚上和凌晨以及周末发推特。他表现出惊讶、愤怒、消极、厌恶……事实上所有的情绪,而不仅仅是媒体强调的消极情绪。他确实使用了超出语法需要的惊叹号和全大写单词。最后,他经常提到自己。

另一方面,他的助手发布的推文的特点是:

  • 真实转发
  • “via”这个词
  • 上午 10 点到下午 4 点之间
  • 分号
  • 周期
  • 资源定位符
  • @巴拉克·奥巴马

如果一条推文是正确的转发,你可以确信它是由助手发布的。有趣的是,“via”这个词在助手的推文中出现了很多次——他们经常会引用一篇文章或一张图片,并将其与这个词联系起来。可以预见的是,他们在工作日发微博,而不是经常在工作之外。他们的语法更复杂,有更好的句子结构和标点符号,他们非常频繁地发布其他来源的 URL。有趣的是,如果巴拉克·奥巴马的推特用户名在一条推文中被提及,那通常是一个助手。特朗普会提到他的名字,但不会用“提”的方式。

至于词性标签,川普最常用的组合是 NN PRP VBP,或者是名词、人称代词和动词。这些推文经常采用@ reference 后跟“我感谢…”或“我有…”的形式。助手经常写 NNP NNP NNP,连续三个专有名词,这通常是一个组织的名称。他们还在文本后使用#标签,而特朗普在@提及后使用#标签。

我有点失望,词性标签对模型来说并不重要。我知道 tweet 中的特定词汇会随着时间的推移而变化,所以我想捕捉更多的语法结构,我认为这些结构会更加稳定。然而,这个项目的主要挑战是推文的简短性质,这确实大大减少了我的模型可以拾取的语法信号的数量。这对我的模型意味着,尽管它对历史推文有近乎完美的准确率,但对当前推文的准确率有所下降。

此外,对历史推文具有高度预测性的三个特征是推文长度、收藏次数和转发次数。然而,我不得不放弃所有这三个功能,并重新训练我的模型,以便部署在实时推特上。对于后两个功能,收藏计数和转发计数,原因有点显而易见:我试图在推文发布后立即预测作者,因此它还没有被收藏或转发。然而,Tweet length 因为不同的原因被删除了。在我的训练数据的所有 33,000 条推文中,Twitter 将字符数限制在 140 个。但是直到最近 Twitter 才把这个数字增加到 280。这意味着所有关于这一特性的培训都必须放弃。

一个小游戏

考虑到这些特征,我们来玩一个小游戏。我会发一条推文,请你猜作者是谁。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Is it Trump or one of his aides?

不要向下滚动太远,因为答案就在下面!这是第一个。这是谁写的,特朗普还是助手?

这有点简单。你看到了什么?有一个词“via”,高度表示一个助手推文。它包括一个链接,又一个助手的迹象。它是在中午发布的(我从加州刮来的这条推文,所以时间戳比华盛顿 DC 晚 3 个小时),非常正式,不带感情色彩:所有迹象都表明是一名助手。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

是的,你说对了,那是一个助手发布的!好吧,这里还有一个:

那是特朗普还是助手?还是那句话,我们一起过一遍。这条推文比另一条包含更多的情感,这通常是特朗普的标志。这就是那个惊叹号:又一个特朗普式的风格。记得在时间戳上加 3 小时;时间是下午 7:30,一天工作结束后。考虑到这一点,我们可以自信地猜测这是由…

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

特朗普!是的,又答对了!

弗林的推特

这是一条重要的微博,这条微博开启了整个项目:

现在,这条推文是在 2017 年 3 月 26 日之后发布的,如果你记得早些时候是在这个日期之后,没有标签来识别真正的推文者。我们要做的就是我的模型。事实上,这是一条难以猜测的推文。它包含了“撒谎”、“有罪”、“羞耻”和“隐藏”这些词这些都是非常情绪化的话——可能表明特朗普是作者。但也有点正式。语法写得很好,并且包含一些比平均长度更长的单词:那些是助手的标志。这条微博是在中午发布的,也暗示了一名助手。但很个人化,建议川普。那么模特们说了什么?以下是原始输出:

***rf [ 0.23884372  0.76115628]
ab [ 0.49269671  0.50730329]
gb [ 0.1271846  0.8728154]
knn [ 0.71428571  0.28571429]
nb [ 0.11928973  0.88071027]
gnb [ 0.9265792  0.0734208]
lr [ 0.35540594  0.64459406]
rf [1]
ab [1]
gb [1]
knn [0]
nb [1]
gnb [0]
svc [1]
svm [0]
lr [1]([1], [ 0.15384615,  0.84615385])***

顶部的“rf”是随机森林。它以 76%的概率预测了 1 或特朗普(前七行显示了首先是助手,然后是特朗普的概率;接下来的九行显示预测:0 表示助手,1 表示川普)。“ab”是 AdaBoost,它也预测到了川普,但只有 51%到 49%的概率——一点都不太自信。梯度推进模型更有信心,87%的可能性是特朗普。然而,KNN 不同意:71%的可能性是由助手写的。多项式朴素贝叶斯预测了特朗普,但高斯朴素贝叶斯预测了助手。两个支持向量机模型也存在分歧:SVC 预测了川普,SVM 预测了助手(由于这些模型的创建方式,它们无法输出概率估计,这就是为什么它们没有出现在结果的上半部分)。逻辑回归有点骑墙,特朗普的概率为 64%,助手的概率为 36%。特朗普有 6 个模特,助手有 3 个。

事实上,在花了几周时间阅读和分析了数千条特朗普的推文后,我认为这条推文是合作撰写的推文的最佳例子之一。从话题和情感上来说,这是 100%特朗普式的。但是从文体和语法上来说,它似乎来自一名助手。在我看来,特朗普很可能与多德一起起草了这条推文。特朗普告诉多德他想说什么以及他想怎么说,多德撰写了这条推特。这是我最好的猜测。

这只能说明这些模型并不完美,有很多不同意见;此外,一条推文包含的用于机器学习训练的信息非常少。我的最后一个组合,决策树,在我的测试集上准确率超过 99%,确实提供了对 Trump 的最终预测,概率为 85%(这是上面输出的最后一行)。所以这就是我们要选的:川普。不是他的律师约翰·多德。所以他们声称多德写了这条推文,而不是特朗普,我们只能假设这是:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值