ELKI Kmeans clustering Task failed error for high dimensional data

时间:2018-02-05 13:01:29

标签: cluster-analysis k-means gensim doc2vec elki

I have a 60000 documents which i processed in gensim and got a 60000*300 matrix. I exported this as a csv file. When i import this in ELKI environment and run Kmeans clustering, i am getting below error.

Task failed
de.lmu.ifi.dbs.elki.data.type.NoSupportedDataTypeException: No data type found satisfying: NumberVector,field AND NumberVector,variable
Available types: DBID DoubleVector,variable,mindim=266,maxdim=300 LabelList
    at de.lmu.ifi.dbs.elki.database.AbstractDatabase.getRelation(AbstractDatabase.java:126)
    at de.lmu.ifi.dbs.elki.algorithm.AbstractAlgorithm.run(AbstractAlgorithm.java:81)
    at de.lmu.ifi.dbs.elki.workflow.AlgorithmStep.runAlgorithms(AlgorithmStep.java:105)
    at de.lmu.ifi.dbs.elki.KDDTask.run(KDDTask.java:112)
    at de.lmu.ifi.dbs.elki.application.KDDCLIApplication.run(KDDCLIApplication.java:61)
    at [...]

Below is the ELKI settings i have used enter image description here

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:1)

错误(当我第一次看到它时让我有点理解)说你的数据有“形状”

variable,mindim=266,maxdim=300

即。有些行只有266列,有些有300列。这可能是文件格式问题,例如由于NaN,缺少值或类似的不良字符。

如果您尝试运行假设数据来自R ^ d向量空间(即NumberVector,field要求)的kmeans算法,则会出现该错误,因为输入数据不符合此要求。< / p>

答案 1 :(得分:1)

这听起来很奇怪,但我通过打开导出的CSV文件并执行Save As并再次保存为CSV文件找到了解决此问题的方法。虽然原始文件的大小是437MB,但第二个文件是163MB。我使用numpy函数np.savetxt来保存doc2vec向量。所以它似乎是Python问题,而不是ELKI问题。

修改:以上解决方案无效。我改为导出使用doc2vec库创建的gensim输出,并且导出值的格式明确决定为%1.22e。即导出的值是指数格式,值的长度为22.下面是整行代码。

textVect = model.docvecs.doctag_syn0
np.savetxt('D:\Backup\expo22.csv',textVect,delimiter=',',fmt=('%1.22e'))
这样创建的

CSV文件在ELKI环境中运行没有任何问题。