
public class Test {
public static void main(String args[]) throws Exception {
ArrayList<ArrayList<Double>> alllist = new ArrayList<ArrayList<Double>>();
ArrayList<String> outlist = new ArrayList<String>();
int in_num = 0, out_num = 0;
DataUtil dataUtil = new DataUtil();
dataUtil.NormalizeData("src/bp/train.txt");
dataUtil.SetTypeNum(3);
dataUtil.ReadFile("src/bp/train.txt", ",", 0);
in_num = dataUtil.GetInNum();
out_num = dataUtil.GetOutNum();
alllist = dataUtil.GetList();
outlist = dataUtil.GetOutList();
System.out.print("分类的类型:");
for(int i =0 ;i<outlist.size();i++)
System.out.print(outlist.get(i)+" ");
System.out.println();
System.out.println("训练集的数量:"+alllist.size());
BPNN bpnn = new BPNN();
System.out.println("Train Start!");
System.out.println(".............");
bpnn.Train(in_num, out_num, alllist);
System.out.println("Train End!");
DataUtil testUtil = new DataUtil();
testUtil.NormalizeData("src/bp/test.txt");
testUtil.SetTypeNum(3);
testUtil.ReadFile("src/bp/test.txt", ",", 1);
ArrayList<ArrayList<Double>> testList = new ArrayList<ArrayList<Double>>();
ArrayList<ArrayList<Double>> resultList = new ArrayList<ArrayList<Double>>();
ArrayList<String> normallist = new ArrayList<String>();
ArrayList<String> resultlist = new ArrayList<String>();
double right = 0;
int type_num = 0;
double all_num = 0;
type_num = outlist.size();
testList = testUtil.GetList();
normallist = testUtil.GetCheckList();
int errorcount=0;
resultList = bpnn.ForeCast(testList);
all_num=resultList.size();
for (int i = 0; i < resultList.size(); i++) {
String checkString = "unknow";
for (int j = 0; j < type_num; j++) {
if(resultList.get(i).get(j)==1.0){
checkString = outlist.get(j);
resultlist.add(checkString);
}
}
if(checkString.equals(normallist.get(i)))
right++;
}
System.out.println("测试集的数量:"+ (new Double(all_num)).intValue());
System.out.println("分类正确的数量:"+(new Double(right)).intValue());
System.out.println("算法的分类正确率为:"+right/all_num);
System.out.println("分类结果存储在:E:\\BP_data\\result.txt");
}
}
package bp;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
class DataUtil {
private ArrayList<ArrayList<Double>> alllist = new ArrayList<ArrayList<Double>>();
private ArrayList<String> outlist = new ArrayList<String>();
private ArrayList<String> checklist = new ArrayList<String>();
private int in_num = 0;
private int out_num = 0;
private int type_num = 0;
private double[][] nom_data;
private int in_data_num = 0;
public int GetTypeNum()