beplay体育手机官网安卓版计算遇上知识"width=

在Wolfram数据科学训练营的普查数据探索beplay体育手机官网安卓版

在Wolfram数据科学训练营的普查数据探索beplay体育手机官网安卓版"width=

我最近完成了为期两周的培训beplay体育手机官网安卓版Wolfram数据科学训练营我学到了很多关于如何把一个项目从一个最初的问题变成一个连贯的、可视化的答案。正如我们所知,多范式数据科学方法有多个步骤:

多范式数据科学三角"title=

我想用我在营地学到的一些东西来展示我们如何通过使用beplay体育官网下载app实体关系数据框架。我决定尝试一个非常大的数据集,并从beplay体育手机官网安卓版Wolfram数据存储库.我找到了一个拥有72,818个实体的数据集人口普查地段实体商店

我们可以通过编程的方式提取该数据的描述:

ResourceObject"title=
& # 10005


            

美国被划分为小的“区域”,每个区域都有大量的数据。这个数据集允许我们注册一个实体存储,该实体存储建立一个关系数据库,我们可以查询以提取数据。幸运的是,我们在关系数据库方面上了一课列昂尼德•Shifrin在营地的早期;否则,这对我来说会很困难。

注册这个实体商店非常简单:

EntityRegister"title=
& # 10005


            

实体是一个非常强大的框架,可以在不离开Wolfram语言的情况下访问数据。beplay体育官网下载appbeplay体育手机官网安卓版例如,我们可以很容易地得到法国的人口:

实体"title=
& # 10005


            

以同样的方式,这段代码使用类的实体“国家”,我们现在有类的实体“CensusTract”(由我们的EntityRegister行),其中包含我们所有的数据。查看整个实体类可能令人生畏,特别是当有超过72,000个单独的实体时。我学会了从随机抽一个开始:

randomEntity =随机实体"title=
& # 10005


            

实体的标签立即告诉我们实体属于哪个县和哪个州。我们可以用多边形

地理"title=
& # 10005


            

我们看到,这个地区比整个县要小得多,甚至比一个城市还要小。在一个单一的两个显示GeoListPlot让我们了解到这些人口普查区域有多细:

GeoListPlot"title=
& # 10005


            

考虑到美国有超过72000个人口普查区,人口普查区这么小也就不足为奇了:

EntityValue"title=
& # 10005


            

探索

让我们试着从数据中创建一些可视化的东西,从简单的东西开始,比如人口。

我想画出我家乡康涅狄格州的人口密度。这包括寻找返回人口普查区的财产。当有这么多属性时,这可能会很困难:

EntityValue"title=
& # 10005


            

幸运的是,属性的命名通常是直观的。使用我们之前选择的随机实体,我们可以很容易地得到总体:

randomEntity"title=
& # 10005


            

如果我们需要搜索一个属性,我们可以将所有属性放入数据集所以我们可以把它们形象化。在我们的例子中“人口”属性接近列表的底部:

数据集"title=
& # 10005


            

现在我们知道如何得到一块土地的人口。下一个问题是:我们如何过滤只有康涅狄格州的人?我的第一个尝试是通过使用找到康涅狄格州内的所有实体GeoWithinQ

EntityClass"title=
& # 10005


            

这创建了一个隐式的实体类,过滤后它们都在康涅狄格州内部。的EntityClass我们所创建的返回值是未赋值的因为我们还没有要求它计算任何东西。如果我们用EntityList以这种方式列出康涅狄格州的所有实体,它需要运行GeoWithinQ在所有72,000个实体上运行,这将花费相当长的时间。相反,让我们看看数据存储库中提供的一个示例代码片段,该代码用于绘制伊利诺伊州库克县的人口普查区域:

地理"title=
& # 10005


            

这向我们展示了一种更好的按位置过滤的方法。这个例子通过使用一个属性来查找给定县内的所有区域,“ADM2”,表示县数据。特别地,我们看到还有一个“ADM1”表示状态的属性:

取"title=
& # 10005


            

对于我们在西弗吉尼亚州的随机实体,我们看到:

randomEntity"title=
& # 10005


            

通过查看数据的示例使用,我们发现了一种更好的方法,可以将所有区域置于单一状态。我们可以为康涅狄格州内的所有实体创建一个类,并要求它们的人口为正,因此我们得到所有人口稠密的地区:

CT =实体类"title=
& # 10005


            

接下来,我们通过创建一个新的EntityFunction这将人口划分为土地面积。把这个扔进EntityValue调用,我们可以创建所有实体及其人口密度的关联:

popCT = EntityValue"title=
& # 10005


            

让我们看看5个随机条目,以确保我们的数据是我们想要的格式:CensusTract指向其人口密度的实体:

RandomSample"title=
& # 10005


            

看起来不错!让我们画出这些地方的人口密度,使用GeoRegionValuePlot

densityCT = GeoRegionValuePlot"title=
& # 10005


            

看起来我们已经有了一些人口密度很高的热点——大概是那些主要城市,但我们不想把任何事情都视为理所当然。让我们通过使用内置的找到康涅狄格州人口最多的城市来验证城市实体和创建SortedEntityClass,按递减数量排序:

citiesCT = EntityList"title=
& # 10005


            

现在我们有了这些,我们可以将标签覆盖到人口密度图上:

显示"title=
& # 10005


            

很好——看起来大城市的位置与我们从数据集中发现的人口密度较高的中心是一致的。这是一个有价值的练习,以确保我们的数据代表了我们认为它所做的事情,并且我们知道如何操纵它来创建可视化。

多边形

对我来说,我们刚刚创建的可视化的一个突出特点是,它非常精确地遵循康涅狄格州的海岸线。事实上,这个数据集的最大优势之一是它非常准确多边形数据。如果我们看看康涅狄格州所有城市的多边形,我们会发现大多数城市还没有这样的数据:

GeoGraphics@ EntityValue"title=
& # 10005


            

如果我们放大海岸线上的一个城市,我们可以看到我们可以从t得到更准确的海岸表示人口普查ataset。首先,我们需要收集一个沿海城市的所有土地。这次,我要用GeoWithinQ因为我找不到比县更小的人口普查名称,对于一个小州的小城市来说,这并不是非常低效:

斯坦福德=实体类"title=
& # 10005


            

然后我们可以将这些多边形与延伸到长岛海峡的斯坦福德多边形进行比较:

GeoListPlot"title=
& # 10005


            

城市的多边形延伸到其拥有的沿海水域是很重要的,这是有原因的,但对于对海岸线感兴趣的人来说“CensusTract”多边形的纹理要细得多。为你的项目找到最好的数据集是至关重要的。

记得之前我限制我的EntityClass康涅狄格州只包括人口超过1人的地区吗?这是因为在我对数据的探索中,我发现了几个人口为零的地方。我在康涅狄格最喜欢的是这颗宝石:

地理"title=
& # 10005


            

这很好多边形包围了布莱德利国际机场根据美国人口调查局数据,没有人住在那里。我想知道通过使用这个数据集,人们还能了解到机场的哪些信息?

探索

我们有成千上万的属性可以从中获取数据。想要缩小范围是非常困难的,这就是EntityPropertyClass可以派上用场。将数据的所有属性类安排为一个数据集可以帮助我们将它们形象化:

数据集"title=
& # 10005


            

像这样排列数据的好处是,您可以滚动并选择您想了解更多的内容,然后围绕该数据创建自己的自定义可视化。对我来说,车辆数据引起了我的注意。我们看看能不能用求每个家庭的平均汽车数量。

一个EntityPropertyClass包含多个EntityProperty,我发现一个清晰的方法来可视化这些是通过使用方便信息功能:

Information@EntityPropertyClass"title=
& # 10005


            

这给了我们一个类中的属性列表——有30个!从那里,我找到了帮助我们回答问题的答案:

cars = EntityProperties"title=
& # 10005


            

它们告诉我们拥有一定数量车辆的家庭总数。例如,使用我们之前随机选择的实体,我们可以创建一个由汽车数量组成的键和由家庭数量组成的值的关联:

AssociationThread"title=
& # 10005


            

我创建了一个IndependentUnit命名汽车这将帮助我们跟踪数据,并最终标记我们的图。家庭总数也是属性之一,所以我们确认所有家庭的总和等于这个值:

总计"title=
& # 10005


            

让我们继续创建一个EntityClass代表了康涅狄格州所有人口普查区的住户:

CTclass =实体类"title=
& # 10005


            

我们可以创建一个EntityFunction它计算出在特定的人口普查区域内每户家庭的平均汽车数量,使用WeightedData用家庭数量来衡量汽车数量:

meanCarFunc = EntityFunction"title=
& # 10005


            

然后求出每个实体的这个函数值,我们就得到了康涅狄格州所有人口普查区的平均汽车数量。这个计算从人口普查API,为了方便起见,我将结果图标化:

盲目崇拜"title=
& # 10005


            

让我们确保数据是我们想要的格式,在尝试使用新数据之前,我总是这样做:

RandomSample"title=
& # 10005


            

我们可以看到汽车的平均数量被存储为一个无限精度的有理数,这很好,但这意味着我们真的需要一种更好的方法来可视化数据,而不仅仅是看着它。让我们试试柱状图,它将告诉我们有多少块土地拥有给定的平均汽车数量:

柱状图"title=
& # 10005


            

现在很明显,康涅狄格州每户家庭的平均汽车数量可能不到2辆。我们可以进一步尝试近似数据的概率分布:

dist = FindDistribution"title=
& # 10005


            

我个人从来没听说过WeibullDistribution,但我能够从它的文档页面学习,并像使用Wolfram语言中的任何符号发行版一样使用它。beplay体育官网下载appbeplay体育手机官网安卓版例如,我们可以在直方图上绘制其概率分布函数(PDF),确保通过使用“PDF”本高度:

显示"title=
& # 10005


            

最后,让我们试着在地图上可视化汽车的平均数量,就像我们对人口密度所做的那样。我们将使用ColorFunctionBinning指定如何选择颜色,以使少数车和许多车之间的区别突出:

carPlot = GeoRegionValuePlot"title=
& # 10005


            

这一次,看起来大部分州的家庭平均拥有两辆车,有些地方的汽车数量要低得多。为了更仔细地观察这些斑点,让我们使用GeoContourPlot,它会自然地绕过局部汽车数量较少的山谷,或局部汽车数量较多的峰值。就像我们之前做的那样,把标签放回最大的城市,我们注意到这些城市的每户平均汽车数量往往比周边地区要少:

显示"title=
& # 10005


            

现在我们了解了单个州的数据使用情况,我们可以将整个国家的数据可视化,为了方便起见,我将其图标化:

meanCarsUS =关联"title=
& # 10005


            

我们现在可以可视化整个美国大陆的每个家庭的汽车拥有量:

GeoRegionValuePlot"title=
& # 10005


            

我还发现,在阿拉斯加北部,拥有一辆汽车的家庭是多么的罕见,这很有趣:

GeoRegionValuePlot"title=
& # 10005


            

我在这篇博客中所做的一切仅仅触及了使用这个庞大的数据集和Wolfram语言的实体框架所能做到的事情的表面。beplay体育官网下载appbeplay体育手机官网安卓版我希望我在Boot Camp学到并在这里演示的数据争论技术能激发您对自己的新数据项目的兴趣。Wolfbeplay体育手机官网安卓版ram数据科学训练营是一个为期两周的紧张和有指导的体验,但你可以按照自己的节奏学习,甚至获得多范式数据科学认证beplay体育手机官网安卓版Wolfram U互动课程

我还邀请您使用我的工作作为您自己探索这些数据的起点,并将您学到的内容发布在beplay体育手机官网安卓版Wolfram社区.要查看一些旨在使计算和数据科学不那么令人生畏的视频内容,请查看我的livecoding系列扎克谢尔顿,特别是我们最近的视频关于Wolfram数beplay体育手机官网安卓版据存储库。

让你的计算成就得到认可beplay体育手机官网安卓版Wolfram认证

评论

加入讨论
Baidu
map