对具有 {latitute, longitude, crime-type} 元组的犯罪数据进行聚类

数据挖掘 数据挖掘 聚类
2022-03-08 10:28:00

我有一个数据集,其中包含数千行 {latitute, longitude, crime-type} 元组。

样本数据:

41.757366519   -87.642992854   THEFT
41.910469677   -87.585822373   ROBBERY
41.751270452   -87.690708662   BURGLARY
41.757366519   -87.642992854   THEFT
41.757366519   -87.642992854   THEFT
..             ..              ..
..             ..              ..

我试图根据犯罪类型对这些进行聚类。

例如,如果在任何地区,THEFT 的发生频率都很高,根据数据集,它应该显示为一个集群。我曾尝试仅使用经纬度数据进行聚类,这似乎对这个犯罪数据集没有任何意义。

我对数据挖掘还很陌生,并且逐渐找到了出路。

如何使用纬度和经度值对数据进行聚类,以使聚类通过犯罪类型相互关联?是否有任何工具可以使用经纬度数据并根据犯罪类型对它们进行聚类?否则,一旦我了解如何做到这一点,我什至可以编写一个脚本。

另外,有没有人有过犯罪数据挖掘的经验?我可以通过哪些其他方式从犯罪数据集中找到有趣的模式?

非常感谢!

3个回答

没有任何有意义的方法可以将“类型”与以米为单位的距离相结合。

我的建议是你:

  1. 按类型拆分数据集。
  2. 使用 DBSCAN、haversine 距离和每种犯罪类型的相同 minpts/eps 值对每种类型进行聚类
  3. 比较生成的聚类的相似性和差异

我不太确定这样做的最终目标是什么。

尽管如此,我有一些想法。您可以散列或 dict 犯罪类型(为每个类别分配一个数字),然后进行聚类。

或者给定一对 [lat, long],您可以使用算法(如 KNN)来预测“最有可能”的犯罪类型。

根据犯罪类型的每个可能值分离训练数据并形成块,然后在每个单独的块上对经度和纬度应用 K-mean 聚类。

例如,如果可能的犯罪类型是“谋杀”和“入室盗窃”。

然后分离数据,其中“谋杀”是犯罪类型,“入室盗窃”是犯罪类型。

现在你有两个数据块。所以在每个块上应用 K-Mean 聚类。