-
Notifications
You must be signed in to change notification settings - Fork 0
/
Neighborhood.h
56 lines (49 loc) · 1.33 KB
/
Neighborhood.h
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
/* ------------------------- Neighborhood class -------------------------------*/
class Neighborhood{
public:
Neighborhood(SVMData&, SVMData&, int, int[]);
~Neighborhood();
SVMData *sd, *sd_test;
int nclass;
int k;
int nn[4];
int *target_offset;
int target_size;
int nfeat;
int ninst;
int ninst_test;
int *target;
double acd; // average closest distance
double e_acc; // knn accuracy by euclidean distance
struct DistPair{
int ino;
double dist;
bool operator<(const DistPair& a) const
{
return dist < a.dist;
}
};
bool inSameClass(int, int);
bool inOpposingClass(int, int);
bool inSameClass(Inst&, Inst&);
bool inOpposingClass(Inst&, Inst&);
bool isType(int, int);
double mdist(int, int, MatrixXd &);
void findTarget();
double violatedDist(int, int, int, MatrixXd &);
int getTarget(int, int);
int getTargetByOffset(int, int);
double averageClosestDist();
MatrixXd outerProduct(int, int);
double knn(MatrixXd&, int, bool);
double knn_test(MatrixXd&, int);
virtual double dist(int, int, MatrixXd &);
virtual double distance(int, int, MatrixXd&);
private:
void calcEdistMatrix(double *);
void calcDistMatrix(double *, MatrixXd &);
void calcDistMatrix(MatrixXd &, MatrixXd &);
double edist(int, int);
void dataPointToVector(double *p, VectorXd &);
double weight(double);
};