simple k means
//選擇初始的k個質點 for (int j = initInstances.numInstances() - 1; j >= 0; j--) {instIndex = RandomO.nextInt(j+1);hk = new DecisionTableHashKey(initInstances.instance(instIndex),initInstances.numAttributes(), true);if (!initC.containsKey(hk)) {m_ClusterCentroids.add(initInstances.instance(instIndex));initC.put(hk, null);}initInstances.swap(j, instIndex);if (m_ClusterCentroids.numInstances() == m_NumClusters) {break;}}//重復迭代, 直到converged=true時退出。converged=true時,再跌代也不會改變每個節點的cluster while (!converged) {emptyClusterCount = 0;m_Iterations++;converged = true;for (i = 0; i < instances.numInstances(); i++) {Instance toCluster = instances.instance(i);int newC = clusterProcessedInstance(toCluster, true);if (newC != clusterAssignments[i]) {converged = false;}clusterAssignments[i] = newC;}//重新計算質心//迭代次數已達上限時,設置converged=true退出 }squaredErrors, clusterStdDevs, 這些是用來做什么的? clusterStdDevs, 衡量同一類中、同一個屬性各個值的標準差 squaredErrors, 記錄的是每個類中, 類中每個點到其質心的距離的平方和 這兩個變量用來衡量聚類結果的好壞
總結
以上是生活随笔為你收集整理的simple k means的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: clustering
- 下一篇: additive tree