我将对网络数据应用群集(k-means),其中包含ip地址和端口号等列。尽管端口号是整数,但是例如第80和第81端口之间的关系不比第80和第1800端口之间的关系更接近。所以我认为我不应该使用它们(整数)。
我认为使用DictVectorizer也不合适,因为有65535个端口所以我需要一个不同的方法。 IP地址与端口有相同的问题。
使用或不使用scikit-learn(或使用或不使用k-means)有没有办法解决问题?
答案 0 :(得分:3)
k-means必须计算表示。
端口80和81的平均值是多少?港口80.5?
不,k-means 仅对连续和线性属性敏感。否则,方差(k均值的优化标准)和均值都没有任何意义......
您可以尝试各种黑客攻击,例如将每个端口设为单独的属性。但k-means对二进制数据也没有意义。
使用其他算法。基于距离的算法很好,如果你已经弄清楚如何测量相似性。