疫情之下春运人口回流“硬核”预测:往返这些超级网络节点城市有更大感染风险

优化求解器 | Gurobi的MVar类:矩阵建模利器、求解对偶问题的备选方案 (附详细案例+代码) 本文介绍了Gurobi的各种建模方式,包括按行建模、按列建模、按非零元素建模以及按矩阵形式建模。 我们详细介绍了按矩阵形式建模的案例及其在快速完成对偶问题建模中的使用。 阅读详情

在这里插入图片描述
大数据文摘授权转载自nCoV疫情地图

作者:张海平 修宇璇

经历了各种“硬核”隔离之后,相信大家都明白了“人口的流动性是疫情防控的关键”这个道理。

春节前的人口大迁徙无疑加速了本次疫情的时空传播速率,而春节后全国范围内的人口回流,仍然会对疫情的防控带来巨大的挑战。

可以说,深刻认识春节后人口回流的迁徙特征和规律,将对此次疫情的防控起到非常积极的作用。

基于以上背景,来自南京师范大学的张海平博士和清华大学的修宇璇博士进行了一项研究,他们以百度迁徙数据和通过调查所获得的个别城市的真实人口迁徙数据作为主要数据源,进行了如下工作:

首先采用OD超网络模型推算并模拟全国地级市尺度的迁徙人口数量;

基于模拟的人口数据通过空间自相关和时空自相关等空间统计模型分析其地理分布特征和时空演变模式;

在此认识的基础上,预测春节后迁徙人口的数量分布特征及迁徙网络结构特征。

结果表明,春节后人口迁徙表现为层级效应和地理邻近效应,前者多以大城市为超级节点,而后者则以中小城市为主要节点,并且,流出人口数量在城市层面呈现离散的地理分布,而流入人口数量呈现高度聚集的态势。

从迁入城市来看,春节后回流的出发地比较离散,而目的地非常地集中,具体地,一级集中区域还是三大城市群(京津冀、长三角、珠三角),二级集中区域为成都,三级集中区域为华中三省(河南、湖北和湖南,以省会为核心)和西安。

以下是完整的预测过程,推衍过程比较硬核,enjoy。

数据的可用性和方法的有效性阐述

数据描述及可用性阐释

本文研究所用的数据来自百度迁徙大数据平台。百度迁徙数据包含两个方面的重要信息,一方面,平台分别提供了每个城市每日迁入、迁出人口比率位列前50的城市,这意味着每个城市每日有100条人流数据;另一方面提供了每个城市每日的人口规模数据,这意味着不同城市之间每日迁出的人口在规模上具有统一的标准,具有可比性。节前人流推算所用数据时段为2020年1月1日至1月23日,而节后人流模拟所用数据时段为2020年1月10日至1月23日,共计14天。可以说,在本文中将春运定义为2020年1月10日至1月23日。所用人口迁徙数据的迁徙比率数据和规模指数数据的表结构如表1和表2所示。

在表1中,1月15日从武汉迁出到黄冈的人口占当天武汉人口迁出总量的13.30%,类似地,当日从南京到镇江的流出人口占当日南京总流出人口的10.61%。一个值得讨论的问题是,前50位的城市是否能够覆盖到某个城市所有迁入或迁出人口的覆盖总量,统计发现,大多数城市都覆盖到了到了总量的90%以上,这一定程度上保证了数据的有效性。

在这里插入图片描述
表1 百度迁徙人流比率数据结构表

在表2中,1月15日分别从武汉、南京迁出的人口规模指数是5.91、 5.11,这说明当日武汉流出的人口多于南京,规模上多出0.8个百分点。结合人口迁出、迁入比率,就可以计算出所有城市具有可比性的迁出指数和迁入指数。

在这里插入图片描述

表2 百度迁徙人流规模指数数据结构表

人口OD超网络模型推算春节前人口流量

在分析和预测2019-nCoV疫情的传播时,大家最关心两类数据:(1)每天有多少人迁入/迁出某个城市。例如,1月22日,有多少人离开武汉,又有多少人来到武汉?(2)全国主要城市之间的迁徙人数。例如,1月23日,从武汉去深圳的人有多少?这些数据难以获取,但是百度迁徙提供了全国主要城市春运期间迁入/迁出地的人口比例和规模指数。通过调查获得的个别城市的人口迁徙数据,我们可以基于百度的公开数据估算全国主要城市人口流动的数据。

直观上看,全国各城市和它们之间的人口流动关系构成了一张图。其中,城市是节点,城市之间的人口流动关系是边。通过百度的数据,我们可以构建两个人口流动网络,即通过迁出地排名列表构建人口流出网络,通过迁入地排名列表构建人口流入网络。我们的任务,就是通过这两个网络进行数据的综合和估算。

陈伟坚教授等研究者提出的超网络模型(DOI: 10.1080/0740817X.2014.980868)为进行类似的数据综合和推断提供了很好的数学工具。在一个超网络模型中,我们首先通过节点和边的跨层对应关系匹配多个单层网络,随后将数据之间的数学关系转换为超网络中的特殊结构,最后基于图论的一些方法进行数据的综合和估算。在以上研究的基础上,提出了以下OD超网络模型估算模型并用于本文的人口模拟。

本文首先分析人口流入网络和流出网络之间的对应关系。如图1所示,对于人口流出网络来说,设某天城市迁出到城市的人口数量为,当天城市的总迁出人口数为了。百度迁徙的数据提供了。也就是说,当天流入城市的人口中,有是从城市流入的。一个重要的对应关系是,即从城市迁出到城市的人口等于城市从城市因此有。通过两层网络之间节点(城市)和边()的对应关系,我们构建了如下图所示的人口流入-流出超网络。
在这里插入图片描述
图1 OD超网络模型原理示意图

在这个人口流入-流出超网络模型中,可以表示为跨层邻居这一特殊结构。对于城市和城市来说,如果在两层网络中存在一对方向相反的边(例如,存在一对有向边且,其中和分别表示人口流入网络和人口流出网络的边的集合),则称他们为跨层邻居。对于一对跨层邻居,如果城市的人口流出总数已知,则城市的人口流入总数可以表示为。由此,我们可以从仅有的几个人口流入/流出总数已知的城市出发,并以此为种子数据,通过广度优先遍历,迭代地推断其他城市的人口流入/流出总数。算法的具体细节和分析将在随后的论文中发布。本文只列出了作为基础的超网络预测模型,考虑到文章的阅读对象,其它如空间自相关、时空自相关、时空演化模式和加权迁徙距离的方法这里不再阐述。

春节前人口迁徙的地理时空网络模拟

人口模拟及其地理分布特征

春节前14天的流出、流入人口到底有多少?呈现怎样的地理分布特征?

采用1.2中的方法,本文推算出了2020年1月10日至2020年1月23日共计14天每个地级市的具体迁徙人口数据。由于每天迁入迁出人口的数量具有一定的差异性(后文的时空演化分析中会呈现这一现象),本文给出了每个城市在14天内的迁入、迁出人口总数。如图2、图3和图4分别为各地市迁出、迁入、迁入-迁出差的地理分布地图。

为了保证迁出和迁入人口的可对比性,采用统计的几何间断法对人流数据进行渲染,并采用相同的聚类阈值。其中,迁出人口最高的城市的推算结果为7469192;迁入人口最高的城市推算结果为3570184。根据迁出、迁入的平衡性,监测误差在35万人左右。百度迁徙本身也有误差,并且总数在数亿级以上,因此在人口平衡验证中十万级的误差在可接受范围内。

对比图2和图3发现,整体格局相似,胡焕庸线仍然控制着中国人口分布乃至迁徙的格局。图2的迁出人口分布更加集中,其空间异质性更强。相比而言,图3所示的迁入数据则更加分散,空间异质性较弱。这里仅给出推算人口的空间基本分布特征。更为深入的统计显著性分析将在后面讨论。

在这里插入图片描述
图2 人口迁出地理空间格局

在这里插入图片描述
图3 人口迁入地理空间格局

尽管人口迁入、迁出的总和是相对平衡的,但在局部地理区域或地理单元上差异性较大。一些城市净流入为正,另一些则可能为负。

将每个城市的流入人口减去流出人口,可以得到净流入人口数量。计算结果的空间分布地图如图4所示。结果符合常理。冷色调表示负净流入的城市,根据值的大小划分为两个等级。暖色调则表示正净流入的城市,分为三个等级。

从图中可以发现,城市个体层面,几乎所有的省会城市都是负净流入,只有重庆和哈尔滨例外。区域层面,胡焕庸线东侧京津冀、长三角、珠三角是负净流入的集聚地,但相比而言,长三角的区域范围显著要大。也有极少数的非省会城市出现负净流入现象。如山东东营、淄博、青岛、烟台和威海,福建的泉州,广西的柳州等。

可以说,正流入高值区是劳动力非常密集的输出地,将是节后重要的人口流出区域。反之,这些在节前呈现负净流出的省会城市,将是节后主要的人口流入区域。结论似乎有点偏常识,但模型的优势在于可以通过科学的评估佐证这些常识,另一方面,可以计算出具体的数值,从而更加理性认知、精准决策。具体数量上的讨论,将在节后迁徙人口预测部分展开。

在这里插入图片描述
图4 人口迁入-迁出差的地理空间格局

以上分析重在对推算数据的呈现,迁出、迁入人口进一步的具有统计显著性的分析可以借助空间聚类方法如局部空间自相关模型展开,这些模型能够探测到隐含在数据中的深层次的规律。如图5和图6所示分别为迁出、迁入人口的局部空间自相关分析结果。从有效的统计显著性水平上,迁出人口高值聚类的区域有三个,即京津冀、长三角和珠三角。区域规模上长三角最大,但高值聚集的城市并不连续分布。值得关注的是三个具有统计显著性的高-低聚类的城市,他们分别是西南地区的成都、西北地区的西安和华中地区的长沙。这些城市的迁出人口在统计显著性水平上明显高于周围的其它地市。

在这里插入图片描述
图5 人口迁出空间聚类分布-空间自相关

联系到本次疫情的传播,更加值得关注的是在图6所示的迁入人口的空间聚类结果中,武汉作为具有统计显著性的高值聚类城市赫然在列,而其它具有统计显著性的高值聚类地市除了三大城市群,大多都在武汉附近,并环绕在其周围,有包围武汉之势。

如果对比之前推文(可能会说谎的地图-重新审视全国疫情的地理格局)的地市疫情地图,会发现这些高值地市大多都是疫情的重灾区。极大的人口流动性及其与武汉在区位上的邻近性,必然是造成疫情严重的主导因素之一。
在这里插入图片描述
图6 人口迁入空间聚类分布-空间自相关

人口模拟及其时空演变模式

正如前文所述,空间地理格局难以呈现空间上的迁出、迁入人口在时间上的变化特征。因此,为了更好地认识全国春节前春运人流的时空变化规律,从而更加准确地预测春节后的迁徙模式,又对每日所模拟的人口迁徙数据进行时空格局分析和时空演变模式分析。时空格局和模式分析同样采用基于空间自相关扩展的时空自相关局部模型实现。其中,时空格局反映迁徙人口的时空分布特征,而时空演变模式揭示迁徙人口的时空整体变化趋势。

春运人口迁入迁出时空格局

如图7和图8所示分为迁出、迁入人口的时空分布格局。颜色的冷暖代表了具有统计显著性的热点和冷点,颜色越深,显著性越强。热点城市的集聚意味着这些城市的人流量不仅在空间上普遍高于其周围的城市,在时间上也高于前后时间截面的值。冷点则相反。由于三维可视化具有遮挡效果,因此,在图中,除了综合呈现冷点和热点,还分别给出了只有热点和只有冷点的时空分布图。地图的第三个维度代表时间,每层立方体代表一天,共计14层。

对比图7和图8所示的迁出、迁入人口时空分布格局,虽然不同时段的冷热点有所差异,但也具有相当的稳定性。其时空格局与图5、图6的空间格局在整体上具有趋同性。其整体分布特征在此不再赘述。

在这里插入图片描述
图7 人口迁出时空格局——时空自相关

在这里插入图片描述
图8 人口迁入时空格局——时空自相关

由于三维可视化的透视和遮挡限制,难以通过静态地图的形式完美呈现迁徙人口的时空格局,下面给出图7和图8的动态地图,用于更加准确的认识其时空分布特征。动图分别如图9和图10所示。

在这里插入图片描述
图9 人口迁出时空格局动态图

在这里插入图片描述
图10 人口迁入时空格局动态图

春运人口迁入迁出演变模式

如果从某个城市单独来看,14天会有14层立方体。在这14天中,有些城市迁徙人口保持在某个数量水平上下微小浮动,如果是高值聚集,整体上形成持续的热点;如果是低值聚类,整体上形成持续的冷点;但是,实际情况要复杂很多,一些城市的迁徙人口可能一会高,一会低,并且差异较大,就可能形成震荡的冷、热点。还可能是持续增加或持续减少等现象。基于以上现实情景,综合考虑空间和时间的邻近性和空间自相关性(可以理解为迁徙值的局部相似性),则可以提取出16种可能的模式(16种具体见图11上侧的图例)。

如图11和图12所示为迁出、迁入人口的时空演化模式分析结果。在图11所示的迁出人口时空演化模式地图中,整体格局与迁出一致。主要受到胡焕庸线的结构化控制。在三大城市群形成了持续的热点和增强的热点。值得关注的是在位于胡焕庸线附近的阿坝藏族羌族自治州,无论迁入人口还是迁出人口,均形成了热点模式,其中迁出人口属于持续的热点模式,而迁入人口则属于新增的热点模式。

在图12中,三大城市群均形成了持续的热点模式,京津冀和珠三角地区还形成了新增的热点。而在其它任何区域没有形成这两类热点模式。意味着三大区域在14天内不仅人口迁徙最为活跃,而且是持续活跃的区域。胡焕庸线以西几乎都是冷点,而胡焕庸线以东全是热点。中部地区及其周边区域形成了覆盖范围大、数量较多的震荡的热点,这意味着这些区域的迁入人口在时间上极其不稳定,忽高忽低。此外,在川渝、山东半岛、江南等地区还形成了大量连续的热点模式,这意味着这些区域会在某些连续时段内迁如人口数量持续较高,但不是一直保持在很高的状态。

在这里插入图片描述
图11 人口迁出时空演化模式

在这里插入图片描述
图12 人口迁入时空演化模式

春节后人口迁移的地理时空网络预测

有了前面的推算模拟,以及对迁徙人口的理解和认识,接下来首先分析一下春节后人口预测的现实背景,然后回答春节后人口迁入迁出的数量分布及其空间格局,并进一步分析迁入迁出的网络特征。

主要回答春节后的人口迁徙如何预测?能预测到什么程度?迁入迁出人口的数量关系、地理区位关系是什么?人口是如何流动的?等问题。

由于疫情在全国范围内扩散的严峻形式,相比往年,近年的春节后人口回流既有个体主观上的企划策略变化的影响,更重要的是受到政府层面的呼吁和管制,这导致不能用往年的数据和相关模型预测未来具体每一天的人口迁徙模式,本文所用数据和模型也不可以。因此,本文的预测仅基于上文春节前的人口推算模拟数据从整体上预测未来全国范围内人口迁徙的数量关系和网络结构。

预测迁徙人口数量及其地理分布

本文的预测基于这样一种假设,对于某个特定的城市,春节前14天流出的总人口,在春节后同样会回流到该城市;反之,某城市春节前的流入人口,也会在春节后回流到各自所在城市。在这样一种假设下,人口流动就形成了整体的动态平衡。

这一假设在宏观上既符合现实背景,又能够有效地基于本文所推算的数据进行未来人口迁徙的预测工作。基于以上讨论,分析得到了如图13所示的春节后迁出人口的数量分布地图,图14为预测得到的春节后迁入人口的数量分布特征。对比图13和图14可以看出,春节后回流的出发地比较离散,而目的地非常地集中,具体地,一级集中区域还是三大城市群,二级集中区域为成都,三级集中区域为华中三省(河南、湖北和湖南,以省会为核心)和西安。尽管对于一些疫情较为严重的省份或城市,本该回流的人口会因疫情而减少,但本文的目的并不是预测在疫情的影响下实际会有多少人回流,而是潜在的回流人口。

在这里插入图片描述
图13 春节后人口迁出预测结果

如果考虑到疫情的现实背景,图14中所示的一级人口流入城市,也是当前疫情较为严重的城市。人口回流的高密度特征、潜在感染人数的高数量特征告诉我们,往返于这些超级网络节点城市可能会有更大的感染风险,就政府而言,这些超级节点城市的管控工作也将更为艰难。

当然,正如下文将要讨论的,这种高等级节点主导的人口迁移只是整个迁徙网络中的其中一种典型模式,还有一种是基于地理邻近效应的迁徙模式。两种迁徙模式对疫情的影响应该同样受到重视。

在这里插入图片描述
图14 春节后人口迁入预测结果

预测人口迁徙网络结构及其类型

通过分析发现,预测人口的迁徙网络主要有两种模式,即城市等级主导的层级结构和地理区位效应主导的邻近效应。当城市在人口、经济、产业等方面形成相比于其它城市较高等级的城市节点时,人口的迁入迁出会呈现层级效应。

采用本文的预测数据分析可以得到具有明显高流量的层级网络结构,如图15所示。一级节点主要是三大城市群的主要城市及一些区域中心城市。即便如此,更高强度的流也还是遵循地理邻近效应,而地理邻近效应,则是另一种重要的迁徙网络模式。对于其它城市,主要遵循地理邻近效应,由于这类城市数量多,空间密度大,不利于可视化呈现,后文将通过加权迁移半径可视化。形成两种模式的机制在此作一简单探索:弱节点城市的吸引力弱,从而主要影响省内或周边的城市劳动力的流入,因此主要形成地理邻近性主导的人口迁移网络。相比而言,大城市的引力更强,影响范围更大,因此主要形成了由层级效应主导的人口迁移网络。

在这里插入图片描述
图15 人口迁移层级网络结构

采用本文提出的加权距离法,以人流量为权重,迁徙距离为变量,最终得到所有城市的加权迁徙半径。结果如图16所示。加权迁徙距离的计算思路是:某个城市A迁出的城市集合是{B,C,D},则以AB,AC和AD之间的距离作为实际距离,距离集合表示为{d1,d2,d3},而以流出的人口作为权重,权重集合表示为{w1,w2,w3},用每个城市距离变量di乘以与之对应的权重变量wi,然后求和并处于权重的和,则可以得到加权迁徙距离。加权迁徙距离本质上是反映一个城市的平均迁出距离。从如图16所示的加权迁徙半径的空间格局可以看出,大部分城市的加权迁徙半径都在300公里左右,这意味着人口的迁入迁出主要在邻近的周边城市。而那些较大加权迁徙半径的城市,一类正是上文所描述的由层级网络结构主导的城市,另一类则是由于行政区域较大或地处极不发达且远离区域发达城市的边缘地带的城市。

在这里插入图片描述
图16 人口迁出加权迁徙半径分析结果

最后,给出三幅通过区域面积大小表达特定变量而不是面积本身的统计地图作为本文的附加内容,这种图符合人类对符号尺寸更加敏感的视觉认知。附图1-3分别为图13、14和16的变形统计地图实现。附图1和附图2分别是所预测的地级市层面的迁出、迁入人口的变形统计地图,根据迁出、迁入人口在全国层面上是守恒的,即全国范围内在同一时段内流出和流入的人口数是相同的这一客观结论,附图1和附图2尽管在个体城市层面面积差异较大,但整体总面积应该是相同的,通关观察会发现,基本具有相同的大小,符合这一推论。

变形地图通过城市面单元的面积表示所要呈现的变量(这里的变量分别是迁出、迁入人口和加权迁徙距离),但保持城市面单元之间的拓扑邻接关系不变。显然,通过以下三幅变形统计地图重新思考上面的讨论,必然会有不同的视觉感官和问题认知,但客观结论是一致的。

在这里插入图片描述
附图1 春节后人口迁出预测结果的变形统计地图
在这里插入图片描述
附图2 春节后人口迁入预测结果的变形统计地图
在这里插入图片描述
附图3 人口迁出加权迁徙半径变形统计地图

本文贡献讨论

本研究的主要贡献包括:第一,本文预测模拟出了春节前14天全国地级市层面的迁入、迁入人口数据,此数据产品在疫情的相关分析中具有多方面的应用需求;第二,本文关于迁徙人口的地理空间格局、地理时空格局、地理时空演变模式的分析,有助于人们深刻而全面地理解和认识春节前人口迁徙规律;第三,本文从整体上预测了春节后全国人口迁徙的网络特征,人们可以根据这一规律选择合理的回流时间,政府部门可以将其作为节后春运人流管控决策的辅助资料;第四,由于本文的分析形成了全国范围内每个地级市的节前迁徙人流数据成果和节后预测人流数据成果,可申请此数据成果作其它与疫情相关的研究。例如,可以从中抽取武汉在节前流出的500万人口在其它城市的具体数量,也可以抽取春节前温州等疫情严重地市迁入迁出人口数据并分析其数量特征及其地理分布格局。

结语

本文关于人口迁徙分析、预测建模的有效性和精度受到数据源、模型本身等多方面的影响。只是在一定相对合理的假设条件下展开。后续的研究和分析中,将考虑更多的现实数据对其进行验证,在此基础上对模型进一步进行优化。

人口迁徙模式的提取、流动趋势的模拟和预测是展开春运人口流动相关政策方案设计的基本前提条件。对于当前疫情在国家层面的宏观管控和疫情的空间治理具有重要意义。正确引导人口的流动,也就在一定程度上降低了交叉感染的概率。目前,能用于全国范围内人口迁徙模拟和预测的有效数据源难以获取,相关的时效性分析报告或学术成果较少,本文基于百度迁徙大数据的春节前人口推算模拟和春节后宏观层面的迁移人口预测和迁移模式分析,希望能够为人们的跨城出行和政府的相关决策提供参考。

本文作者信息

张海平 南京师范大学虚拟地理环境教育部重点实验室博士生在读,师从汤国安教授,研究方向是GIS时空建模与地理可视化,应用方向为城市行为地理与社会文化地理。

修宇璇 清华大学清华-伯克利深圳学院博士生在读,师从陈伟坚教授,研究方向是基于运筹学和大数据的复杂网络分析。

致谢

在此,感谢两位作者的导师:清华大学清华-伯克利深圳学院陈伟坚教授在超网络模型和人口流动数据估算方面、南京师范大学汤国安教授和张雪英教授在时空数据分析和建模以及地理可视化方面给予的指导和支持。感谢nCoV地图项目组全体志愿者的辛勤付出,才有此分析成果的顺利完成,对于新闻组志愿者对新闻进行的信息采集工作,爬虫组成员对数据进行的爬虫和整理工作,数据分析组对数据进行的预处理、建模和作图工作,外宣组、人力资源组和开发组以及各个审核专家等提出的宝贵意见,在此表示衷心的感谢。

【GeoDa实用技巧100例】019:制作统计地图(气泡地图) 统计地图是显示地图中极端值的又一种方法。GeoDa生成一种圆圈统计地图,原始的空间单元被圆圈所代替。圆圈的面积与被选变量的值是成比例的。圆圈本身尽可能以非线性最优原则,紧密地排列在相匹配的空间单元的原始位置。严重声明:本文为优快云博主刘一哥GIS原创,原文,拒绝转载。圆圈的位置是一种非线性方法叠代的结果,在必要时可以重新定义。比如,在统计地图中右击,选择【调整气泡大小】:通过拖动滑动块调整气泡大小,调整气泡大小后的地图:严重声明:本文为优快云博主刘一哥GIS原创,原文,拒绝转载。 阅读详情

相关推荐

基于echarts的前端地图统计插件(只有全国的)

java web前端用到的地图统计插件 echarts 全国地图 统计

基于Echarts的地图统计图-中国地图统计图

【代码】基于Echarts的地图统计图,鼠标悬浮高亮显示数据

weixin_42941628的博客 1690

GD32重映射实战:从部分映射到完全映射的配置解析

本文深入解析GD32微控制器的重映射功能,以定时器1的PWM通道为例,详细阐述了从部分映射到完全映射的实战配置流程。文章重点介绍了AFIO模块的核心作用、配置寄存器操作以及关键的避坑指南,旨在帮助开发者灵活优化PCB布局并解决引脚资源冲突,从而高效利用芯片外设功能。

k6l7m8n9的博客 693

快来看!这样的统计地图真的很好绘制的~~

在得知类似需求后,我就根据类似需求进行资料查询,在经过多次查找之后,就找到了R-tricolore包可以较好的完成类似绘制需求(Python的目前还没找到绘制方法),介绍如下:1. 官网网址R-tricolore包的官方网址为:,小伙伴们想了解更多的内容可浏览该网址查阅哈。2. 主要功能R-tricolore 包可为三元相图的组成成分提供灵活的可视化色标,其主要功能是将任何三元合成颜色编码为三种原色的混合,并绘制合适的颜色键。

qq_40483688的博客 1093

五子棋AI实战:极大极小搜索、Alpha-Beta剪枝与禁手实现

博弈树搜索是双人零和博弈AI的经典决策框架,其核心思想是假设对手最优应对,通过递归遍历走法空间寻找最优解。极大极小搜索配合Alpha-Beta剪枝,能在不影响决策结果的前提下将搜索量降至平方根级别,大幅提升搜索效率。在五子棋场景中,还需处理黑棋禁手规则,包括双三、双四和长连判定,并将其融入搜索框架。评估函数基于棋型识别对局面打分,走法排序和迭代加深进一步优化剪枝效果。这些技术共同构成了一个可运行的五子棋AI,适用于棋类AI入门与博弈搜索实践。

weixin_29054399的博客 128

学习笔记|多组率卡方检验和Fisher确切法|个案加权|规范表达|《小白爱上SPSS》课程:SPSS第十六讲 | 多组率卡方检验和Fisher确切法

学习笔记|多组率卡方检验和Fisher确切法|个案加权|规范表达|《小白爱上SPSS》课程:SPSS第十六讲 | 多组率卡方检验和Fisher确切法

Medlar_CN的博客 2962

使用highcharts做地图统计

highcharts 接入地图的坑

lerleelym的博客 1058

Arduino Nano + MCP3422A0 ADC 毫欧表:3档分辨率(0.1mΩ-1.3kΩ)开尔文连接实测

本文详细介绍了如何使用Arduino Nano与MCP3422A0 ADC构建高精度毫欧表,采用四线制开尔文连接和三档量程设计,实现0.1mΩ-1.3kΩ的精确测量。通过精密恒流源和18位ADC技术,结合智能量程切换和数字滤波算法,显著提升测量精度和稳定性,适用于电子维修、PCB测试等场景。

weixin_28292761的博客 323

绘制统计地图

【代码】绘制统计地图。

2302_79908693的博客 312

揭秘 C++ 性能优化的终极秘籍,让你面试时应答如流

VTune Amplifier 是英特尔开发的一款强大的性能分析工具,它可以深入分析应用程序在英特尔架构上的性能瓶颈。功能特点全面的分析视角:提供了多种分析模式,如热点分析、线程分析、内存分析等。热点分析模式能快速定位程序中最耗时的代码段;线程分析模式可帮助开发者了解多线程程序中线程的执行情况、同步开销等;内存分析模式则专注于内存访问的性能,包括缓存命中率、内存带宽使用等。硬件层面的洞察:能够深入到硬件层面,分析 CPU 的微架构指标,如指令级并行度、流水线停顿等。

大模型大数据攻城狮的专栏 1150

你学Simulink--基于储能系统的建模与仿真场景:飞轮储能系统在电网调频中的作用仿真

本文详细介绍了利用Simulink+Simscape搭建飞轮储能系统(FESS)电网调频仿真模型的全过程。主要内容包括:系统工作原理及调频作用分析,基于Simulink的模块化建模步骤(飞轮、电机/发电机、功率电子接口等组件搭建),调频控制策略实现(频率检测、功率指令生成和模式切换),以及仿真参数设置与结果分析方法。该模型可有效模拟FESS在电网频率调节中的快速响应特性,为新能源存储和智能电网研究提供重要仿真工具,同时可通过参数优化和算法改进进一步提升系统性能。

xiaoheshang_123的博客 168

各省、地级市-2020春运期间高德地图人口迁徙数据-excel、shp格式

一、 数据价值人口流动是指人口在特定空间范围内迁徙和移动,其作为生产要素在空间上进行配置的一种活动,在一定程度上推动了社会、经济要素的重新集聚与扩散。人口流动体现了区域经济活动在空间上的变化,城市间人口大规模的流动也体现出城市功能之间的关联性。传统的关于人口流动的研究是基于我国的人口普查数据,这类静态的数据无法反映出我国当前人口在空间上的巨大变化,缺乏实时性与动态性。而从高德地图中我们可以公开获取全年某一时间节点上,我国各城市对外人口流动的主要方向与相对大小,这为研究城市或区域之间的人口联系提供具备较高科研

m0_65541699的博客 2927

YOLO26训练自己的数据集,从代码下载到实例测试 (含YOLO26网络结构图)

在Windows10上配置CUDA环境教程2026年1月14日,YOLO26是最新发布的计算机视觉模型。支持多种任务,包括目标检测、实例分割、图像分类、姿态估计、有向目标检测以及物体跟踪等。以上就是YOLO26训练自己数据集的全部过程啦,欢迎大家在评论区交流~

Limiiiing的博客 6481

使用平行轴图显示鸢尾花(iris)的四个特征数据(创新实验室联合纳新测试题)

使用平行轴图显示鸢尾花(iris)的四个特征数据;

休语栓的专栏 8765

C#实现每日定时执行制定程序(附完整源码)

C#实现每日定时执行制定程序(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 862

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

在windows下用caffe跑ImageNet

使用caffe主要分为三大步: 【1】用convert_imageset.exe把图片数据库转换为.lmdb或者.leveldb的格式。 【2】用compute_image_mean.exe进行取均值的预处理,生成.binaryproto文件 【3】用caffe.exe跑CNN。 1)数据准备 下载的一个比较小的ImageNet图片数据集,共120种,每种不到200张。 2)生成t

休语栓的专栏 1万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

数据链路层和运输层的流量控制及差错控制

这两天在复习《计算机网络》的期末考试,想明白了几个问题,做下笔记。1)停止等待、后退N帧和滑动窗口 【1】这三种协议是做什么的? 流量控制:接收方控制发送方,发送方的速率不要太快,让接收方来得及接收。 差错控制:帧错误、帧丢失、帧重复。 【2】无图无真相 2)数据链路层的差错控制和运输层的可靠传输有什么区别? 【1】从“干什么”的角度来讲 数据链路层负责结点之间

休语栓的专栏 1万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

论文阅读笔记——Generalizing Pooling Functions in Convolutional Neural Networks: Mixed, Gated, and Tree

这篇文章发表在arXiv.org网站上,好像还没有论文发表,不过出了两个专利。 卷积神经网络里面有两个主要的操作,一个是卷积,另外一个是池化。本文主要研究的就是池化(pooling)。 作者在abstract里面指出,(现在的卷积层是学习得到的),而对于pooling层,现在两个主要的pooling方法,一个是average pooling, 另外一个是max pooling,都不是学习的

休语栓的专栏 6432

对给定音频文件“testshort.wav”,用matlab输出它的波形【学生创新实验室联合纳新测试题】

1,先听了一遍testshort.wav,都是格拉格拉的声音,听不出个所以然来。 2,http://zhidao.baidu.com/link?url=hWD9AHfEHm0W7w5UPzK4FILxuzWh-g0UMrs3NE2Kkvjn-R1iLC5qx4yIcUBB9v61Y16_c5AOUNNHDlevYtZnB_ [y,Fs,bits]=wavread('testshort.wa

休语栓的专栏 1169

用FilterPro和TINA结合设计有源低通滤波器

最近参与一个电子系统的设计,要做一个1000Hz的有源低通滤波器。 FilterPro: 在Wizard里设置lowpass->1000Hz(设计要求是二阶的,所以把set order 那个选上)->巴特沃斯->Sallen Key 关于Sallen key滤波器,我看的是liyuanbhu大牛的两篇文章http://blog.youkuaiyun.com/liyuanbhu/article/d

休语栓的专栏 9095

教程 | 如何使用地图可视化疫情情况

1、新闻背景 本文疫情数据均“信息来自国家卫生健康委员会官方网站” 最近两天各地疫情似乎又零星发生,我们根据上述引文,制作省市疫情地图。 使用EXCEL软件将上述文字整理为表格 接着,使用“小O地图EXCEL版”第0.6.7.6版软件,制作疫情地图。 2、操作步骤 2.1 整理表格数据 在EXCEL表中,使用【选择行政区】功能,补充“行政区划码”等信息至表格中。 表格中事先已录入城市名称,设置行列后,选择菜单“按名称列填充区划码”,根据名称查找区划码并填充

gis9的专栏 1604

2024 最火的数据可视化技巧:用 pyecharts 做中国统计地图,颜值吊打原生图表

它的核心魅力恰恰在于高度可定制的参数体系 —— 就像给相机调光圈、快门能拍出不同风格的照片,修改 pyecharts 的配置项,能让同一份数据呈现出完全不同的视觉效果。尤其在地理数据展示上,pyecharts 的地图模块支持中国省市县多级区划,能轻松实现数据与地理区域的绑定,是统计分析、政务汇报、学术研究中展示地域数据的热门工具。关于随时间序列变化的数据,在pyecharts的示例中是有的,不过我们不需要那么复杂的,在此做了精简,完全可以参照之前的方式对地图再进行美化,这里就不再赘述了。

不胜人生一场醉 1503

echarts 百度地图统计分布图,地图可视化统计

<!DOCTYPE html> <html lang="zh"> <head> </head> <body> <!--顶部E--> <!--新闻列表S--> <div class="news-container"> <div class="container"> <div class="main-container" style="posit...

我不晓得 1159

人口流向数据_数读:全国各省人口流入流出图

近日有媒体报道指出,东三省人口危机越发严重。多年的人口净流出以及明显的老龄化,让东三省面临“后继无人”的尴尬。然而事实上面临同样窘境的不仅东北三省,全国近半数省份正在失去活力。依照全国第六次人口普查得到的数据,在全国31个省级行政区中,人口净流入地区有l4个,净流出地区相对较多有17个,人口流失数量超过200万的省份则有10个之多。人口流失数量最多的是安徽省。数据显示,安徽省有962.3万人...

weixin_39845306的博客 5214
上一篇: 这个算法通过“看脸色”,能从视频聊天中检测心律和压力
下一篇: 玩游戏也能学编程!少儿编程教育如何为中国AI时代“播种”?
BigDataDigest
博客等级 码龄9年 448粉丝 500原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值