我是数据挖掘的新手,我正在试图找出如何聚类单元塔ID以从已知位置标签(Home,Work,Elsewhere,No signal)查找其位置。
我有一个位置驱动的用户A数据集,其中包含cellID(检测到的celltowers的唯一ID),starttime(检测到特定塔的日期和时间),endtime(连接到不同celltower之前的最后日期和时间),地名(用户标记的地名,如家,工作)。数据集中还有未标记的位置由用户留空,我想使用聚类方法标记这些单元格,以便它们表示为位置名称之一。
我正在使用R编程,我试图将完整的数据集提供给kmeans聚类但是它会给我发出警告信息,我完全不知道为什么会这样做?
* do_one(nmeth)出错:外来函数调用中的NA / NaN / Inf(arg 1)
另外:警告信息:
在kmeans中(数据集,4,15):由强制*引入的NA
有关如何使用群集方法解决此问题的任何建议?感谢
答案 0 :(得分:0)
由于您在训练阶段可以获得所有标记和未标记的数据,您所寻找的是“转导学习”,这与聚类(“无监督学习”)略有不同。
对于每个蜂窝塔,您可以收集平均开始时间,结束时间和cellID。您可以在此处获取来自cellID的lat / lng:https://mozilla-ichnaea.readthedocs.org/en/latest/api/search.html或http://locationapi.org/api(贵)。
这为每个塔提供了4维特征向量,目标是根据这些连续的特性分配三元标记:
[avg_starttime avg_endtime lat lng] home / work / other
我不知道R,但在python基本的转换学习是可用的: http://scikit-learn.org/stable/modules/label_propagation.html#label-propagation
如果您没有通过标签传播获得良好的结果,并且由于现成的转换学习工具很少,您可能只想在培训期间忽略一些数据并使用更多标准方法。如果您在开始时忽略未标记的数据,则可能会出现“归纳”或“监督”学习问题(使用SVM解决)。如果您在开始时忽略标签,则可以使用无监督学习(例如“聚类”;使用kmeans或DBSCAN),然后在完成聚类后为聚类分配标签。
我不知道你是怎么得到NaN的。