我想使用自定義距離矩陣而不是內置算法(即歐幾里德)對我的數據進行聚類。而且似乎沒有明確的方法來做到這一點。我試圖將我的一些代碼添加到 Smile 項目的演示中。還嘗試通過在我的項目中進行測試來做到這一點,這是一段代碼: StringBuilder sb = new StringBuilder(); String line; while ((line = vrpJsonFromFile.readLine()) != null) { sb.append(line).append("\n"); } JSONArray jsonArray = new JSONObject(sb.toString()).getJSONArray("services"); Double[][] data = new Double[jsonArray.length()][2]; for (int i = 0; i < jsonArray.length(); i++) { JSONObject address = jsonArray.getJSONObject(i).getJSONObject("address"); data[i][0] = Double.parseDouble(address.getString("lon")); data[i][1] = Double.parseDouble(address.getString("lat")); } // here Distance<Double[]> distance1 = (x, y) -> Math.sqrt(Math.pow(y[1]-x[1],2) + Math.pow(y[0]-x[0], 2)); CLARANS<Double[]> clarans = new CLARANS<>(data, distance1, 3); System.out.println(clarans);此代碼使用 Euclidean 算法創建了一個 CLARANS 聚類(請參閱 //here 注釋下方的行)。我應該用我自己的距離矩陣來改變它,我希望在 Smile 中有一種方法可以做到這一點。
如何使用微笑庫的 CLARANS 方法使用自定義距離矩陣對我的數據進行聚類
幕布斯6054654
2022-12-21 10:02:55