ELKI依靠double
代表數字。如果你需要更高的精度,你將不得不實現你自己的解析器和輸出模塊(雖然很容易,因爲我們有一個高度模塊化的架構)。
對文本的默認輸出序列化由Java處理。因此,Precision是默認從Java獲得的。如果您使用的是DoubleVector
,則這應該是15-16位的精度,如果您使用的是FloatVector
,則應該是7-8位。
快速檢查與groovysh:
new DoubleVector([12345.6789, 3456.109453] as double[]);
===> 12345.6789.109453
new FloatVector([12345.6789, 3456.109453] as float[]);
===> 12345.679 3456.1094
僅產生損失,從double
和float
精度可以預期的。
獲取行標籤的最佳方法是...爲您的數據添加行標籤。
Wrt。添加到註釋中的附加問題:默認分析器會將文檔開頭的文本行視爲列標籤。因此,只需將「X Y」放入文件的第一行即可。
合理的輸入格式將因此:
X Y Label
1 2 Point7
3 4 "Point 8"
以下是不那麼好的想法:
5 6 123shouldwork
7 8 don't do this: 3 parser will retain the 3
標籤應該是非數字,這樣分析器會將其作爲標籤自動。否則,您必須設置適當的參數。
DBID用於內部處理。也許我們不應該把它們寫入輸出。 FixedDBIDFilter
是一個駭人的工作;它是用來獲得可重複哈希當使用需要基於ID的哈希和在MiniGUI中執行多個運行的算法。由於多次運行,DBID將不斷枚舉。
你能分享一個示例輸入和輸出行嗎? ELKI分配內部ID,但如果你不需要它們,你可以丟棄它們。 –
這裏是我的問題的詳細解釋。 輸入文件格式 (X)(Y) ______________________ 3456.124357 5673.4567 3456.109453 5673.4451 ...................... ..... ................. 輸出文件(具有內部ID和X,Y截斷) ________________ 651 3456.1244 5673.46 652 3456.1095 5673.45 問題是因爲這些值越來越截短的和輸出文件不包含這些點的實際ID(比如從0開始),所以我無法確定哪些點被聚集,哪些點屬於哪個聚類。 – user26161
你可以編輯問題,使其更具可讀性嗎?除非絕對必要,否則應避免檢查數據。在使用MiniGUI時,使用'FixedDBIDsFilter'來獲取與輸入文件的行號相對應的'DBID'。您是否考慮爲您的用例編寫自定義輸出模塊? –