网络数据聚类的预处理
我打算对网络数据进行聚类分析(使用k-means算法),这些数据有像IP地址和端口号这样的列。虽然端口号是整数,比如说80号端口和81号端口之间的关系,并不比80号端口和1800号端口之间的关系更近。所以我觉得不应该直接把它们当作整数来使用。
我觉得使用DictVectorizer也不合适,因为端口号有65535个,所以我需要换一种方法。IP地址也有和端口号一样的问题。
有没有什么办法可以解决这个问题,不管是用scikit-learn还是不使用,或者是用k-means还是不使用?
1 个回答
3
k-means算法需要计算均值。
那端口80和81的均值是多少呢?是80.5吗?
不是的,k-means算法只适用于连续和线性的属性。否则,方差(k-means的优化标准)和均值就没有意义了...
你可以尝试一些变通的方法,比如把每个端口当作一个单独的属性。但对于二进制数据,k-means同样不适用。
可以使用其他算法。如果你已经找到了衡量相似性的方法,基于距离的算法是可以的。