Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
C
Classification
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Matisse DEKEISER
Classification
Commits
0abb3d7d
Commit
0abb3d7d
authored
6 months ago
by
Maxence Antoine
Browse files
Options
Downloads
Patches
Plain Diff
Dernier test passe
parent
de7e7940
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/test/java/fr/univlille/sae/classification/knn/distance/DistanceManhattanNormaliseeTest.java
+84
-137
84 additions, 137 deletions
...ication/knn/distance/DistanceManhattanNormaliseeTest.java
with
84 additions
and
137 deletions
src/test/java/fr/univlille/sae/classification/knn/distance/DistanceManhattanNormaliseeTest.java
+
84
−
137
View file @
0abb3d7d
package
fr.univlille.sae.classification.knn.distance
;
import
static
org
.
junit
.
jupiter
.
api
.
Assertions
.*;
import
org.junit.jupiter.api.Test
;
import
fr.univlille.sae.classification.model.LoadableData
;
import
fr.univlille.sae.classification.knn.MethodKNN
;
import
org.junit.jupiter.api.BeforeEach
;
import
org.junit.jupiter.api.Test
;
import
java.util.Map
;
public
class
DistanceManhattanNormaliseeTest
{
import
static
org
.
junit
.
jupiter
.
api
.
Assertions
.*;
class
DistanceManhattanNormaliseeTest
{
private
DistanceManhattanNormalisee
distanceManhattan
;
private
DistanceManhattanNormalisee
distanceManhattan
Normalisee
;
@BeforeEach
public
void
setUp
()
{
// Initialisation de l'objet DistanceManhattanNormalisee avant chaque test
distanceManhattan
=
new
DistanceManhattanNormalisee
();
void
setUp
()
{
distanceManhattanNormalisee
=
new
DistanceManhattanNormalisee
();
//
Définition des valeurs de normalisation dans MethodKNN (à ajuster selon votre logique)
MethodKNN
.
minData
=
new
double
[]
{
0
.0
,
0.
0
};
// Valeurs minimales pour les attributs
MethodKNN
.
amplitude
=
new
double
[]
{
1
.0
,
1
.0
};
// Amplitude pour la normalisation
//
Configurer les valeurs statiques pour la normalisation
MethodKNN
.
minData
=
new
double
[]
{
1.0
,
2
.0
,
0.
5
};
MethodKNN
.
amplitude
=
new
double
[]
{
4
.0
,
3
.0
,
2.5
};
}
@Test
public
void
testDistanceSimple
()
{
// Création de deux objets LoadableData avec des attributs simples
LoadableData
data1
=
new
LoadableData
()
{
void
testDistance_Calculation
()
{
LoadableData
l1
=
new
LoadableData
()
{
@Override
public
double
[]
getAttributes
()
{
return
new
double
[]{
2.0
,
5.0
,
1.0
};
}
@Override
public
String
getClassification
()
{
return
null
;
return
"Class1"
;
}
@Override
public
void
setClassification
(
String
classification
)
{
}
@Override
...
...
@@ -42,25 +44,25 @@ public class DistanceManhattanNormaliseeTest {
return
null
;
}
@Override
public
double
[]
getAttributes
()
{
return
new
double
[
0
];
}
@Override
public
String
[]
getStringAttributes
()
{
return
new
String
[
0
];
}
};
LoadableData
data2
=
new
LoadableData
()
{
LoadableData
l2
=
new
LoadableData
()
{
@Override
public
double
[]
getAttributes
()
{
return
new
double
[]{
4.0
,
4.0
,
2.0
};
}
@Override
public
String
getClassification
()
{
return
null
;
return
"Class2"
;
}
@Override
public
void
setClassification
(
String
classification
)
{
}
@Override
...
...
@@ -68,39 +70,36 @@ public class DistanceManhattanNormaliseeTest {
return
null
;
}
@Override
public
double
[]
getAttributes
()
{
return
new
double
[
0
];
}
@Override
public
String
[]
getStringAttributes
()
{
return
new
String
[
0
];
}
};
// Calcul de la distance manhattan normalisée
double
result
=
distanceManhattan
.
distance
(
data1
,
data2
);
// Calcul attendu : (|1.0 - 3.0| / 1.0) + (|2.0 - 5.0| / 1.0)
double
expected
=
(
Math
.
abs
(
1.0
-
3.0
)
/
1.0
)
+
(
Math
.
abs
(
2.0
-
5.0
)
/
1.0
);
double
expectedDistance
=
(
Math
.
abs
(
2.0
-
4.0
)
-
1.0
)
/
4.0
+
(
Math
.
abs
(
5.0
-
4.0
)
-
2.0
)
/
3.0
+
(
Math
.
abs
(
1.0
-
2.0
)
-
0.5
)
/
2.5
;
// Vérification du résultat
assertEquals
(
expected
,
result
,
0.001
);
assertEquals
(
expectedDistance
,
distanceManhattanNormalisee
.
distance
(
l1
,
l2
),
1
e
-
6
);
}
@Test
public
void
testDistanceZero
()
{
// Deux objets avec les mêmes attributs (la distance devrait être 0)
LoadableData
data1
=
new
LoadableData
()
{
void
testDistance_ZeroDistance
()
{
MethodKNN
.
minData
=
new
double
[]{
0.0
,
0.0
,
0.0
};
LoadableData
l1
=
new
LoadableData
()
{
@Override
public
double
[]
getAttributes
()
{
return
new
double
[]{
3.0
,
3.0
,
3.0
};
}
@Override
public
String
getClassification
()
{
return
null
;
return
"Class1"
;
}
@Override
public
void
setClassification
(
String
classification
)
{
}
@Override
...
...
@@ -108,25 +107,25 @@ public class DistanceManhattanNormaliseeTest {
return
null
;
}
@Override
public
double
[]
getAttributes
()
{
return
new
double
[
0
];
}
@Override
public
String
[]
getStringAttributes
()
{
return
new
String
[
0
];
}
};
LoadableData
data2
=
new
LoadableData
()
{
LoadableData
l2
=
new
LoadableData
()
{
@Override
public
double
[]
getAttributes
()
{
return
new
double
[]{
3.0
,
3.0
,
3.0
};
}
@Override
public
String
getClassification
()
{
return
null
;
return
"Class1"
;
}
@Override
public
void
setClassification
(
String
classification
)
{
}
@Override
...
...
@@ -134,60 +133,31 @@ public class DistanceManhattanNormaliseeTest {
return
null
;
}
@Override
public
double
[]
getAttributes
()
{
return
new
double
[
0
];
}
@Override
public
String
[]
getStringAttributes
()
{
return
new
String
[
0
];
}
};
// Vérification que la distance est bien 0
double
result
=
distanceManhattan
.
distance
(
data1
,
data2
);
assertEquals
(
0.0
,
result
,
0.001
);
assertEquals
(
0.0
,
distanceManhattanNormalisee
.
distance
(
l1
,
l2
),
1
e
-
6
);
}
@Test
public
void
testDistanceAvecValeursExtremes
()
{
// Test avec des valeurs maximales ou minimales (hypothétiques dans ce cas)
LoadableData
data1
=
new
LoadableData
()
{
@Override
public
String
getClassification
()
{
return
null
;
}
@Override
public
void
setClassification
(
String
classification
)
{
}
@Override
public
Map
<
String
,
Object
>
getAttributesNames
()
{
return
null
;
}
@Test
void
testDistance_EmptyAttributes
()
{
LoadableData
l1
=
new
LoadableData
()
{
@Override
public
double
[]
getAttributes
()
{
return
new
double
[
0
];
return
new
double
[]
{}
;
}
@Override
public
String
[]
getStringAttributes
()
{
return
new
String
[
0
];
}
};
LoadableData
data2
=
new
LoadableData
()
{
@Override
public
String
getClassification
()
{
return
null
;
return
"Class1"
;
}
@Override
public
void
setClassification
(
String
classification
)
{
}
@Override
...
...
@@ -195,38 +165,25 @@ public class DistanceManhattanNormaliseeTest {
return
null
;
}
@Override
public
double
[]
getAttributes
()
{
return
new
double
[
0
];
}
@Override
public
String
[]
getStringAttributes
()
{
return
new
String
[
0
];
}
};
double
result
=
distanceManhattan
.
distance
(
data1
,
data2
);
// Calcul de la distance, ici l'effet de normalisation devrait être pris en compte
double
expected
=
(
Math
.
abs
(
Double
.
MAX_VALUE
-
Double
.
MIN_VALUE
)
/
1.0
)
+
(
Math
.
abs
(
Double
.
MIN_VALUE
-
Double
.
MAX_VALUE
)
/
1.0
);
assertEquals
(
expected
,
result
,
0.001
);
}
LoadableData
l2
=
new
LoadableData
()
{
@Override
public
double
[]
getAttributes
()
{
return
new
double
[]{};
}
@Test
public
void
testDistanceAvecDonneesNulles
()
{
// Test avec des données nulles
LoadableData
data1
=
new
LoadableData
()
{
@Override
public
String
getClassification
()
{
return
null
;
return
"Class2"
;
}
@Override
public
void
setClassification
(
String
classification
)
{
}
@Override
...
...
@@ -234,38 +191,30 @@ public class DistanceManhattanNormaliseeTest {
return
null
;
}
@Override
public
double
[]
getAttributes
()
{
return
new
double
[
0
];
}
@Override
public
String
[]
getStringAttributes
()
{
return
new
String
[
0
];
}
};
LoadableData
data2
=
null
;
try
{
distanceManhattan
.
distance
(
data1
,
data2
);
fail
(
"La méthode devrait lever une exception quand l'un des objets est nul"
);
}
catch
(
NullPointerException
e
)
{
// Vérification qu'une exception est lancée
}
assertEquals
(
0.0
,
distanceManhattanNormalisee
.
distance
(
l1
,
l2
),
1
e
-
6
);
}
@Test
public
void
testDistanceAvecDonneesVides
()
{
// Test avec des données vides (tous les attributs sont 0 ou absents)
LoadableData
data1
=
new
LoadableData
()
{
void
testDistance_DifferentLengthAttributes
()
{
LoadableData
l1
=
new
LoadableData
()
{
@Override
public
double
[]
getAttributes
()
{
return
new
double
[]{
2.0
,
3.0
};
}
@Override
public
String
getClassification
()
{
return
null
;
return
"Class1"
;
}
@Override
public
void
setClassification
(
String
classification
)
{
}
@Override
...
...
@@ -273,25 +222,25 @@ public class DistanceManhattanNormaliseeTest {
return
null
;
}
@Override
public
double
[]
getAttributes
()
{
return
new
double
[
0
];
}
@Override
public
String
[]
getStringAttributes
()
{
return
new
String
[
0
];
}
};
LoadableData
data2
=
new
LoadableData
()
{
LoadableData
l2
=
new
LoadableData
()
{
@Override
public
double
[]
getAttributes
()
{
return
new
double
[]{
2.0
};
}
@Override
public
String
getClassification
()
{
return
null
;
return
"Class2"
;
}
@Override
public
void
setClassification
(
String
classification
)
{
}
@Override
...
...
@@ -299,19 +248,17 @@ public class DistanceManhattanNormaliseeTest {
return
null
;
}
@Override
public
double
[]
getAttributes
()
{
return
new
double
[
0
];
}
@Override
public
String
[]
getStringAttributes
()
{
return
new
String
[
0
];
}
};
// La distance devrait être 0 car il n'y a aucune différence d'attribut
double
result
=
distanceManhattan
.
distance
(
data1
,
data2
);
assertEquals
(
0.0
,
result
,
0.001
);
Exception
exception
=
assertThrows
(
ArrayIndexOutOfBoundsException
.
class
,
()
->
distanceManhattanNormalisee
.
distance
(
l1
,
l2
)
);
assertEquals
(
"Index 1 out of bounds for length 1"
,
exception
.
getMessage
());
}
}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment