我正在处理来自BigData Challenge的数据集。
https://dandelion.eu/datamine/open-big-data/数据集:电信 – 短信、电话、互联网 – MI
样本数据集(一天)
Square id Time interval Country code SMS-in activity SMS-out activity Call-in activity Call-out activity Internet traffic activity1 1.39E+12 39 0.11098917 0.166214369 0.10920186 0.164427059 13.648437921 1.39E+12 46 0.0261374241 1.39E+12 39 0.165136827 0.176399458 0.030875085 0.027300465 13.330858191 1.39E+12 0 0.029087775 0.027300465 1 1.39E+12 39 0.186451092 0.136587823 0.05460093 11.32955226..10000 1.39E+12 39 0.165136827 0.176399458 0.030875085 0.027300465 13.33085819
在这个数据集中,米兰市的地理区域被划分为10,000个方格,每个方格都记录了用户的活动(短信、电话、互联网)。我有一份为期一个月(30天)的数据集。
我试图根据用户活动(最低、平均和最高用户活动)将这些数据聚类成三个簇。
我尝试使用K-Means聚类算法,但由于我的数据是一维的,K-Means并不适合这种情况。
我可以使用天数和方格ID作为维度来运行K-Means吗?
关于方法或聚类算法有什么建议吗?
回答:
切勿在聚类时使用ID列。
此外,K-Means只有在所有列的尺度相同的情况下才能正常工作。请查看这个帖子的回答。
如果你想将地理邻近性整合到聚类中,我建议你仔细定制一个方法。可以看看广义DBSCAN,它是为定制设计的。永远不要认为聚类“就能工作”,因为大多数时候,它并不奏效,可惜的是如此。
另外,你需要提前定义你的目标。你想达到什么目的,以及你如何衡量成功?仅仅因为你想进行聚类或者因为你不知道该做什么而进行聚类,不会成功的。
至于数据集,它的问题在于没有明确的目标。获胜的条目似乎归结为观察到在更多人聚集的地方能耗更高(真是个惊喜)。开放式挑战真的很难处理。