我正在使用idx = kmeans(kddcup,5);
进行kmeans聚类。 145586条记录包含41个kddcup99特性,10%数据库子集分为5个集群,但MATLAB r2017a给出了这个错误:
Kmeans无法接受复杂的数据!
我在MATLAB中加载了一个有42列而不是41列的数据库,这意味着第42列用于行类型(攻击,正常,...)并且不是一个功能,我不知道是否我应保留第42行或删除它。
我不知道我的工作是否正确或该代码是否有错误。
答案 0 :(得分:0)
idx = kmeans(X,k)see documentation需要X的数字输入。
数据,指定为数字矩阵。 X行对应 观察,列对应变量。
如果X是数字向量,则kmeans将其视为n-by-1数据 矩阵,无论其方向如何。
数据类型:单个|双
您无需将kddcup
的第42列传递给kmeans
。
既然你说kddcup
包含(攻击,正常,...)那些char
?那么,什么数据类型是kddcup
?
无论是否需要剥离第42列,如果还没有,可能会转换为数字矩阵。