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 [...]
答案 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环境中运行没有任何问题。