-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathenv.cpp
124 lines (103 loc) · 3.35 KB
/
env.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#include <iostream>
#include <fstream>
#include <sstream>
#include <math.h>
#include "configuration.h"
#include "env.h"
#include "filter_list.h"
#include "cf_list.h"
FloatVector lowerLimit; //[condLength];
FloatVector upperLimit; //[condLength];
void initialize_env()
{
FloatVector l(condLength);
lowerLimit = l;
FloatVector u(condLength);
upperLimit = u;
}
void initializeInput(DataSource inputArray[],int numofRows){
int featureIndex,docIndex;
for(docIndex=0;docIndex<numofRows;docIndex++)
{
inputArray[docIndex].state = new float[condLength];
for(featureIndex=0;featureIndex<condLength;featureIndex++)
{
inputArray[docIndex].state[featureIndex] = 0.0;
}
inputArray[docIndex].action = 0;
}
}
float roundRealValue(float val, int num){
float p = (float)pow(10.0,num);
val = val * p;
float tmp = roundf(val);
return tmp/p;
}
float ScaleRange(float Value,float FromMinValue, float FromMaxValue, float ToMinValue,float ToMaxValue){
if ((FromMaxValue - FromMinValue) + ToMinValue == 0){
return 0;
}else {
return (Value - FromMinValue) * (ToMaxValue - ToMinValue) / (FromMaxValue - FromMinValue) + ToMinValue;
}
}
void normalize_image(DataSource *data, int totalRows){
for(int docNo = 0; docNo<totalRows;docNo++)
{
for(int featureNo=0;featureNo<condLength;featureNo++)
{
data[docNo].state[featureNo] = data[docNo].state[featureNo] / IMAGE_MAX_VALUE;
}
}
}
// my function
void loadDataFromFile(DataSource data[], const char inputFile[], const int numInstances){
int featureIndex = 0;
float tfIDF = 0.0;
int docIndex = 0;
std::string line;
std::ifstream infile(inputFile);
if (infile.is_open())
{
while (!infile.eof())
{
if(docIndex<numInstances)
{
featureIndex = 0;
std::string line;
getline(infile,line);
std::stringstream singleValue(line);
//while(singleValue>>featureIndex)
while(featureIndex <= condLength)
{
singleValue>>tfIDF;
if(featureIndex==condLength) {
data[docIndex].action = class_map[int(tfIDF)];
}else
{
//tfIDF = roundRealValue(tfIDF,precisionDigits);
data[docIndex].state[featureIndex] = tfIDF;
if(tfIDF>upperLimit[featureIndex])
upperLimit[featureIndex] = tfIDF;
if(tfIDF<lowerLimit[featureIndex])
lowerLimit[featureIndex] = tfIDF;
}
featureIndex++;
}
// std::cout<<std::endl;
docIndex++;
}else{
break;
}
}
}else{
std::string error("Error opening input file: ");
error.append(inputFile).append(", could not load data!");
throw std::runtime_error(error);
}
infile.close();
//normalize_image(inputArray,totalNumInstances);
}
void load_kb(std::string kb_cf_file_name, std::string kb_filter_file_name) {
load_filter_for_kb(kb_filter_file_name);
load_cf_for_kb(kb_cf_file_name);
}