day57

2021/7/17 23:06:12

本文主要是介绍day57,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

            // Step 2.4 Find the new center
            double[] tempCenterDistance = new double[tempNewCenters.length];
            double[] tempNearest = new double[tempNewCenters.length];
            for (int i = 0; i < tempNewCenters.length; i++) {
                for (int j = 0; j < numClusters; j++) {
                    tempCenterDistance[j] = newDistance(tempNewCenters[i], tempCenters[j], tempNewCenters.length);
                    if (tempCenterDistance[j] > tempNearest[j]) {
                        tempCenterDistance[j] = tempNearest[j];
                        tempNewCenters[i] = tempCenters[j];
                    }//of if
                }//of for j
            }//of for i

以上为定位准确位置,以下为距离计算

/**
     *********************
     * The distance between two instances.
     *
     * @param paraI
     *            The index of the first instance.
     * @param paraArray
     *            The array representing a point in the space.
     * @return The distance.
     *********************
     */
    public double newDistance(double[] paraI, double[] paraArray, int paraLength) {
        int resultDistance = 0;
        double tempDifference;
        switch (distanceMeasure) {
            case MANHATTAN:
                for (int i = 0; i < paraLength; i++) {
                    for (int j = 0; i < dataset.numAttributes() - 1; i++) {
                        tempDifference = paraI[i] - paraArray[j];
                        //将距离绝对值加上
                        if (tempDifference < 0) {
                            resultDistance -= tempDifference;
                        } else {
                            resultDistance += tempDifference;
                        }//of if
                    }//of for j
                }//of for i

                break;

            case EUCLIDEAN:
                for (int i = 0; i < paraLength; i++) {
                    for (int j = 0; j < dataset.numAttributes() - 1; j++) {
                    tempDifference = paraI[i] - paraArray[j];
                    resultDistance += tempDifference * tempDifference;
                    //根据维度求欧式距离
                    }//of for j
                }//of for i
                break;
            default:
                System.out.println("Unsupported distance measure: " + distanceMeasure);
        }//of switch

        return resultDistance;
    }//of newDistance



这篇关于day57的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程