gpt4 book ai didi

python - 使用 Python 进行轨迹聚类/聚合

转载 作者:太空狗 更新时间:2023-10-30 01:32:18 26 4
gpt4 key购买 nike

我正在处理社交媒体帖子的地理定位,并使用 DBSCAN 对它们的位置(纬度/经度)进行聚类。在我的数据集中,我有许多用户多次发布,这使我能够推导出他们的轨迹(从一个地方到另一个位置的时间顺序序列)。例如:

3945641 [[38.9875, -76.94], [38.91711157, -77.02435118], [38.8991, -77.029], [38.8991, -77.029], [38.88927534, -77.04858468])

我已经为我的整个数据集导出了轨迹,我的下一步是对轨迹进行聚类或聚合,以识别位置之间移动密集的区域。关于如何在 Python 中处理轨迹聚类/聚合有什么想法吗?

这是我一直在使用的一些代码,用于将轨迹创建为线串/JSON 字典:

import pandas as pd
import numpy as np
import ujson as json
import time

# Import Data
data = pd.read_csv('filepath.csv', delimiter=',', engine='python')
#print len(data),"rows"
#print data

# Create Data Fame
df = pd.DataFrame(data, columns=['user_id','timestamp','latitude','longitude','cluster_labels])
#print data.head()

# Get a list of unique user_id values
uniqueIds = np.unique(data['user_id'].values)

# Get the ordered (by timestamp) coordinates for each user_id
output = [[id,data.loc[data['user_id']==id].sort_values(by='timestamp')[['latitude','longitude']].values.tolist()] for id in uniqueIds]

# Save outputs as csv
outputs = pd.DataFrame(output)
#print outputs
outputs.to_csv('filepath_out.csv', index=False, header=False)

# Save outputs as JSON
#outputDict = {}
#for i in output:
# outputDict[i[0]]=i[1]

#with open('filepath.json','w') as f:
#json.dump(outputDict, f, sort_keys=True, indent=4, ensure_ascii=False,)

编辑

我遇到了一个 python 包 NetworkX,并且正在讨论从我的集群创建网络图而不是对轨迹线/线段进行集群的想法。关于聚类轨迹与 s 的任何意见将聚类转化为图表,以识别位置之间密集聚集的运动。

下面是一些集群的示例: Cluster Example

最佳答案

为了回答我自己已有 1 年多历史的问题,我想出了几个解决方案来解决这个问题(以及类似的问题),尽管没有使用 Python(这是我的希望)。首先,使用我在 GIS StackExchange 中为用户提供的一种方法,使用 ArcGIS 和几个内置工具来执行线密度分析 (https://gis.stackexchange.com/questions/42224/creating-polyline-based-heatmap-from-gps-tracks/270524#270524)。这需要 GPS 点,创建线,分割线,然后将它们聚类。第二种方法使用 SQL(主要是 ST_MakeLine)和 Postgres/GIS/CARTO 数据库来创建按升序时间戳排序的行,然后按用户分组(例如 https://carto.com/blog/jets-and-datelines/)。然后可以计算线出现的次数(假设点聚类有明确定义的质心,类似于我上面的初始问题),并将其视为一个聚类(例如 Python/NetworkX: Add Weights to Edges by Frequency of Edge Occurancehttps://carto.com/blog/alteryx-and-carto-to-explore-london-bike-data/ )。

关于python - 使用 Python 进行轨迹聚类/聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43175104/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com