예제 #1
0
        /**
         * Computes the "cost" for the parameters given.
         *
         * cost = (1/N) Sum (f(x;p) - y)^2
         */
        private double cost(DMatrixRMaj param, DMatrixRMaj X, DMatrixRMaj Y)
        {
            func.compute(param, X, temp0);

            double error = SpecializedOps_DDRM.diffNormF(temp0, Y);

            return(error * error / (double)X.numRows);
        }
예제 #2
0
        public static double quality(DMatrixRMaj orig, DMatrixRMaj U, DMatrixRMaj W, DMatrixRMaj Vt)
        {
            // foundA = U*W*Vt
            DMatrixRMaj UW = new DMatrixRMaj(U.numRows, W.numCols);

            CommonOps_DDRM.mult(U, W, UW);
            DMatrixRMaj foundA = new DMatrixRMaj(UW.numRows, Vt.numCols);

            CommonOps_DDRM.mult(UW, Vt, foundA);

            double normA = NormOps_DDRM.normF(foundA);

            return(SpecializedOps_DDRM.diffNormF(orig, foundA) / normA);
        }