⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 evaluate.java

📁 用java实现的神经网络bp的核心算法
💻 JAVA
字号:
/*
 * Evaluate.java
 *
 * Created on 2007年11月8日, 下午12:39
 *
 */

package myUtil;
import java.util.*;
/**
 * tools to evaluate.
 * @author yuhui_bear
 */
public class Evaluate {
    public Evaluate(){}
    public static double[] difference (double[] d , double[] o){
        double[] temp = new double[d.length];
        for (int i = 0 ; i< d.length;i++){
            temp[i] = d[i] - o[i];
        }
        return temp;
    }
    public double meanDifference (double[] d , double[] o){
        double[] temp = new double[d.length];
        double ex=0;
        for (int i = 0 ; i< d.length;i++){
            temp[i] = d[i] - o[i];
        }
        for (int i =0;i <d.length; i++){
            ex = ex +temp[i];
        }
        ex = ex / d.length;
        return ex;
    }
    public static double mean(double[] d) {
        double t=0;
        for ( int i =0 ; i< d.length ; i++){
            t += d[i]; 
        }
        t = t / d.length;
        return t;
    }
        public static double mean(float[] d) {
        double t=0;
        for ( int i =0 ; i< d.length ; i++){
            t += d[i]; 
        }
        t = t / d.length;
        return t;
    }
    
        public static double relativeError(double[] ind, double[] outd){
            double[] temp = difference(ind,outd);
            for ( int i = 0 ; i < ind.length ;i++){
                temp[i] = Math.abs(temp[i] / ind[i]);
            }
            
            return mean(temp);
        }
        public static double smoothedSlope(double[] ind){
            double[] data = new double[ind.length];
            for(int t=0; t<3;t++){
                for(int i = 0 ; i<ind.length-1;i++){
                    data[i] = (ind[i] + ind[i+1])/2;
                }
            }
            data[ind.length-1] = (ind[0]+ind[ind.length-1])/2;
            double dm = 0;
            double max =data[0] , min = data[0];
            for ( int i = 0 ; i< data.length;i++){
                if(max < data[i]){
                    max = data[i];
                }else{
                    if(min > data[i]){
                        min = data[i];
                    }
                }
            }
            dm = max - min;
            for (int i = 0 ; i< ind.length ;i++){
                data[i] =(data[i] - min)/dm;
            }
            return ((data[0] +data[1] +data[2] 
                   - data[data.length-1] -data[ind.length -2] -data[ind.length -3])/3);       
        }
        public static double relativeError(double[] ind, double exp){
            double[] temp = new double[ind.length];
            for ( int i = 0 ; i < ind.length ;i++){
                temp[i] = Math.abs(1-ind[i] / exp);
            }            
            return mean(temp);
        }
        public static <T extends NumberBox> double  mean(ArrayList<T> al){
            double tm=0;
            for ( int i=0 ; i < al.size(); i++) {
                tm += al.get(i).doubleData;
            }
            return tm / al.size();
        }
        public static <T extends NumberBox> double  mean(T[] al){
            double tm=0;
            for ( int i=0 ; i < al.length; i++) {
                tm += al[i].doubleData;
            }
            return tm / al.length;
        }
    public static double averageSquareError(double[] d , double[] o){
        double temp=0;
        for (int i =0 ; i< d.length ; i++){
            temp =temp + Math.pow((d[i] - o[i]),2);
        }
        temp = temp /2;
        return temp;
    }
    public static double meanSquareError(double[] d ,double exp ) {
        double temp =0;
        for (int i =0 ; i< d.length ; i++){
            temp =temp + (Math.pow((d[i] - exp),2))/2;
        }
        temp = temp/d.length;
        return Math.sqrt(temp);
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -