- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
问题:需要识别IMEI号(User's home location)的home location。
我有一套经纬度、imei和记录的时间;
注意:
1.Recorded IMEI locations are not periodic.
2.Recorded IMEI locations doesn't has any pattern
3.Lat long locations are may not be recorded on every day.
所以我的计划是,使用聚类算法。
如果我们对纬度和经度位置进行聚类意味着我们可以获得一组聚类。我将在其中集中两个聚类。其中大部分 latlong 记录在白天的聚类和其中大部分 latlong 点记录在夜间的聚类时间。然后如果在夜间记录了大部分 latlong 的集群将被视为家庭位置。
我期望的是哪种聚类算法最适合这个聚类作业,以及如何在 java 中使用算法......?
任何人都可以对此提出建议...?
最佳答案
关于动物的这个想法似乎有很多工作 - 参见 http://en.wikipedia.org/wiki/Home_range ,其中列出了地理聚类的各种度量。另见 http://en.wikipedia.org/wiki/Spatial_median#Spatial_median .
您的聚类方法在很大程度上取决于数据的外观 - 您可以在 X-Y 图或 map 上绘制与给定用户关联的位置,以查看预期的聚类类型 - 事实上,为多个用户执行此操作。
我的猜测是,对于大多数用户来说,他们有一个紧密的集群,即他们的家,还有一个非常分散的云,因为工作和假期不在家。在这种情况下,我会寻找这样的点,使得到该点的 X% 最小距离的总和尽可能小,其中 X 可能是 80-90。您可以通过修改常用的 k-means 代码来做到这一点,您可以在为选定的 X% 的观察值找到最佳拟合点和选择最接近您刚刚选择的点的 X% 的观察值之间反复交替。
K-means 需要一个不错的起点——实际上要尝试几个。理想情况下,您需要一个不受外云中任何点污染的起点。如果您通过将数据分成 11 个部分并取每个部分的空间中值来生成起点,则这将为您提供 11 个起点,如果云中只有 10 个污染点,则这些起点中至少有一个是来自完全未受污染的点集合。
我希望找到许多拥有两个或更多紧密集群而不是一个集群的用户,以及一个外部云。其中一些用户会觉得公开次要集群是严重侵犯隐私的行为。
关于java - 地理位置聚类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25426971/
我是一名优秀的程序员,十分优秀!