-
Notifications
You must be signed in to change notification settings - Fork 0
/
TestResults.cpp
58 lines (52 loc) · 1.47 KB
/
TestResults.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
#include "TestResults.h"
TestResults::TestResults(string document_path,int number_documents,FeatureConstructor* feature_constructor, NaiveBayesClassifier* classifier)
{
this->document_path=document_path;
this->number_documents=number_documents;
this->feature_constructor=feature_constructor;
this->classifier=classifier;
result=(int*)malloc(sizeof(int)*number_documents);
accuracy=0;
}
void TestResults::start_test()
{
read_documents();
extract_feature_vector();
classify_documents();
check_accuracy();
printf("Accuracy = %f%%\n",accuracy);
}
void TestResults::read_documents()
{
FileReader fr = FileReader(number_documents,document_path);
fr.read_files();
data_list=fr.data_list;
documents_size=fr.documents_size;
}
void TestResults::extract_feature_vector()
{
feature_constructor->construct_feature_vectors(data_list,documents_size,number_documents);
feature_vector=feature_constructor->feature_vector;
}
void TestResults::classify_documents()
{
printf("Classifying Test Data...\n");
for(int i=0;i<number_documents;i++)
{
result[i]=classifier->classify_unlabeled_document(feature_vector[i],feature_constructor->NUM_OF_UNIQUE_WORDS,feature_constructor->NUM_OF_LABELS);
//printf("%d ",result[i]);
}
printf("Done Classifying Test Data\n");
//printf("\n");
}
void TestResults::check_accuracy()
{
for(int i=0;i<number_documents;i++)
{
if(result[i]==feature_vector[i][0])
{
accuracy++;
}
}
accuracy=(accuracy/(float)number_documents)*100;
}