我正在尝试与Elki一起使用预先计算的距离,但由于某种原因无法使其正常工作。我已阅读此处的说明:http://elki.dbs.ifi.lmu.de/wiki/HowTo/PrecomputedDistances以及SO:ELKI - input distance matrix上的这个问题。
不幸的是,我仍然无法让ELKI工作。
这是我在bash shell中运行的命令:
java -jar elki.jar -verbose -dbc.filter FixedDBIDsFilter -dbc.startid 0 -dbc.in elki_dummy_ids -algorithm clustering.kmeans.KMeansLloyd -algorithm.distancefunction external.FileBasedDoubleDistanceFunction -distance.matrix elki_sample_dist_ut.txt -kmeans.k 3
这些是参数中文件的内容:
$cat elki_dummy_ids
0
1
2
$cat elki_sample_dist_ut.txt
0 0 0.0000
0 1 0.8876
0 2 0.8571
1 1 0.0
1 2 0.9059
2 2 0.0
我也尝试使用下三角距离矩阵:
$cat elki_sample_dist_lt.txt
0 0 0.0000
1 0 0.8876
1 1 0.0
2 0 0.8571
2 1 0.9059
2 2 0.0
但也没有运气。 我一直收到这个错误(截断 - 但如果你需要完整的错误信息,请告诉我):
未处理以下参数: [external.FileBasedDoubleDistanceFunction,-distance.matrix, elki_sample_dist_ut.txt]任务未完全配置:
参数algorithm.distancefunction的值错误。读: de.lmu.ifi.dbs.elki.distance.distancefunction.external.FileBasedDoubleDistanceFunction。 预期:距离函数确定数据库之间的距离 对象。实施 de.lmu.ifi.dbs.elki.distance.distancefunction.PrimitiveDistanceFunction 已知类(默认包 de.lmu.ifi.dbs.elki.distance.distancefunction):
我正在使用 OpenJDK运行时环境(IcedTea 2.4.7)(7u55-2.4.7-1ubuntu1)和 Elki 0.6.0 。
有人可以指出我在这里缺少的东西吗?提前谢谢!
答案 0 :(得分:0)
k-means 不能与预先计算的距离一起使用。
因为它计算从点到质心的距离,这是您以前不知道的,因此无法预先计算。
另外,k-means 应仅用于数字数据,平方欧几里德距离。否则它可能无法收敛。 均值最小化平方偏差,不会最小化任意距离。
你可能正在寻找PAM,k-medoids,DBSCAN,OPTICS,HAC ......这些算法做可以与其他距离一起工作,只需要成对距离。