![](/img/trans.png)
[英]How to cluster my data with a custom distance matrix using smile library's CLARANS method
[英]How can I cluster data using a distance matrix with the ELKI library?
我有一個距離矩陣,我希望在聚類數據時使用該距離矩陣。
我已經閱讀了ELKI文檔,它聲明我可以在擴展AbstractNumberVectorDistanceFunction
類時覆蓋distance
方法。
然而, distance
類返回坐標。 所以從坐標x到坐標y。 這很麻煩,因為距離矩陣僅用距離值填充,我們使用索引來找到從index x
到index y
的距離值。 這是文檔中的代碼:
public class TutorialDistanceFunction extends AbstractNumberVectorDistanceFunction {
@Override
public double distance(NumberVector o1, NumberVector o2) {
double dx = o1.doubleValue(0) - o2.doubleValue(0);
double dy = o1.doubleValue(1) - o2.doubleValue(1);
return dx * dx + Math.abs(dy);
}
}
我的問題是如何在使用ELKI進行聚類時正確使用距離矩陣。
僅當輸入數據是數字向量時, AbstractNumberVectorDistanceFunction
才是適當的父類。 如果您的數據類型是抽象對象標識符,則改為繼承AbstractDBIDRangeDistanceFunction
。 然后你必須實施
double distance(int i1, int i2);
已經有針對預計算距離的距離函數的不同實現,例如DiskCacheBasedDoubleDistanceFunction
,其存儲器映射存儲在磁盤上的距離矩陣。 我們應該添加一個DoubleMatrixDistanceFunction
,直接用於Java(在下一個版本中,所有類名和包名都將縮短,順便說一下)。
另請參閱: https : //elki-project.github.io/howto/precomputed_distances ,特別是標題為“使用無主數據”的部分,介紹如何在僅使用距離矩陣時設置沒有主數據的數據庫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.