1 | package agents.anac.y2013.MetaAgent.parser.reg;
|
---|
2 |
|
---|
3 | import java.io.BufferedReader;
|
---|
4 | import java.io.FileReader;
|
---|
5 | import java.util.HashMap;
|
---|
6 | import agents.anac.y2013.MetaAgent.Parser.Type;
|
---|
7 |
|
---|
8 | public class RegParser {
|
---|
9 |
|
---|
10 | private Type _type;
|
---|
11 | private HashMap<String,Double> values;
|
---|
12 |
|
---|
13 | public RegParser(String fileName, Type type) {
|
---|
14 | values=new HashMap<String,Double>();
|
---|
15 | this._type=type;
|
---|
16 | String [] lines=readFile(fileName);
|
---|
17 | for (int i = 0; i < lines.length; i++) {
|
---|
18 | parseLine(lines[i]);
|
---|
19 | }
|
---|
20 | }
|
---|
21 |
|
---|
22 | private void parseLine(String line) {
|
---|
23 | String keys[]=line.split(",");
|
---|
24 | keys[0]=keys[0].replace("\"","");
|
---|
25 | for (int i = 0; i < keys.length; i++) {
|
---|
26 | values.put(keys[0],Double.parseDouble(keys[1]));
|
---|
27 | }
|
---|
28 | }
|
---|
29 | public double calcReg(HashMap<String,Double>map){
|
---|
30 | double ans=0;
|
---|
31 | for (String modifier : values.keySet()) {
|
---|
32 | double value=values.get(modifier);
|
---|
33 | if(modifier.compareTo("(Intercept)")==0){
|
---|
34 | ans+=value;;
|
---|
35 | continue;
|
---|
36 | }
|
---|
37 | double temp=value*map.get(modifier);
|
---|
38 | ans+=temp;
|
---|
39 | }
|
---|
40 | switch(this._type){
|
---|
41 | case LINREG:
|
---|
42 | return ans;
|
---|
43 |
|
---|
44 | case LOGREG:
|
---|
45 | return calcLog(ans);
|
---|
46 | default:
|
---|
47 | return -1;
|
---|
48 | }
|
---|
49 |
|
---|
50 | }
|
---|
51 | private double calcLog(double ans) {
|
---|
52 | double res=-1*ans;
|
---|
53 | res=Math.exp(res);
|
---|
54 | res+=1;
|
---|
55 | return 1/res;
|
---|
56 | }
|
---|
57 |
|
---|
58 | private String[] readFile(String fileName) {
|
---|
59 | String text="";
|
---|
60 | try {
|
---|
61 | BufferedReader br = new BufferedReader(new FileReader(fileName));
|
---|
62 | StringBuilder sb = new StringBuilder();
|
---|
63 | String line = br.readLine();
|
---|
64 | while (line != null) {
|
---|
65 | sb.append(line);
|
---|
66 | sb.append("\n");
|
---|
67 | line = br.readLine();
|
---|
68 | }
|
---|
69 | text= sb.toString();
|
---|
70 | br.close();
|
---|
71 | }catch(Exception e){
|
---|
72 | e.printStackTrace();
|
---|
73 | }
|
---|
74 | return text.split("\n");
|
---|
75 | }
|
---|
76 |
|
---|
77 | }
|
---|