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
5 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
;
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.model.LoadableData
;
import
fr.univlille.sae.classification.knn.MethodKNN
;
import
fr.univlille.sae.classification.knn.MethodKNN
;
import
org.junit.jupiter.api.BeforeEach
;
import
org.junit.jupiter.api.BeforeEach
;
import
org.junit.jupiter.api.Test
;
import
java.util.Map
;
import
java.util.Map
;
public
class
DistanceManhattanNormaliseeTest
{
import
static
org
.
junit
.
jupiter
.
api
.
Assertions
.*;
class
DistanceManhattanNormaliseeTest
{
private
DistanceManhattanNormalisee
distanceManhattan
;
private
DistanceManhattanNormalisee
distanceManhattan
Normalisee
;
@BeforeEach
@BeforeEach
public
void
setUp
()
{
void
setUp
()
{
// Initialisation de l'objet DistanceManhattanNormalisee avant chaque test
distanceManhattanNormalisee
=
new
DistanceManhattanNormalisee
();
distanceManhattan
=
new
DistanceManhattanNormalisee
();
//
Définition des valeurs de normalisation dans MethodKNN (à ajuster selon votre logique)
//
Configurer les valeurs statiques pour la normalisation
MethodKNN
.
minData
=
new
double
[]
{
0
.0
,
0.
0
};
// Valeurs minimales pour les attributs
MethodKNN
.
minData
=
new
double
[]
{
1.0
,
2
.0
,
0.
5
};
MethodKNN
.
amplitude
=
new
double
[]
{
1
.0
,
1
.0
};
// Amplitude pour la normalisation
MethodKNN
.
amplitude
=
new
double
[]
{
4
.0
,
3
.0
,
2.5
};
}
}
@Test
@Test
public
void
testDistanceSimple
()
{
void
testDistance_Calculation
()
{
// Création de deux objets LoadableData avec des attributs simples
LoadableData
l1
=
new
LoadableData
()
{
LoadableData
data1
=
new
LoadableData
()
{
@Override
public
double
[]
getAttributes
()
{
return
new
double
[]{
2.0
,
5.0
,
1.0
};
}
@Override
@Override
public
String
getClassification
()
{
public
String
getClassification
()
{
return
null
;
return
"Class1"
;
}
}
@Override
@Override
public
void
setClassification
(
String
classification
)
{
public
void
setClassification
(
String
classification
)
{
}
}
@Override
@Override
...
@@ -42,25 +44,25 @@ public class DistanceManhattanNormaliseeTest {
...
@@ -42,25 +44,25 @@ public class DistanceManhattanNormaliseeTest {
return
null
;
return
null
;
}
}
@Override
public
double
[]
getAttributes
()
{
return
new
double
[
0
];
}
@Override
@Override
public
String
[]
getStringAttributes
()
{
public
String
[]
getStringAttributes
()
{
return
new
String
[
0
];
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
@Override
public
String
getClassification
()
{
public
String
getClassification
()
{
return
null
;
return
"Class2"
;
}
}
@Override
@Override
public
void
setClassification
(
String
classification
)
{
public
void
setClassification
(
String
classification
)
{
}
}
@Override
@Override
...
@@ -68,39 +70,36 @@ public class DistanceManhattanNormaliseeTest {
...
@@ -68,39 +70,36 @@ public class DistanceManhattanNormaliseeTest {
return
null
;
return
null
;
}
}
@Override
public
double
[]
getAttributes
()
{
return
new
double
[
0
];
}
@Override
@Override
public
String
[]
getStringAttributes
()
{
public
String
[]
getStringAttributes
()
{
return
new
String
[
0
];
return
new
String
[
0
];
}
}
};
};
// Calcul de la distance manhattan normalisée
double
expectedDistance
=
double
result
=
distanceManhattan
.
distance
(
data1
,
data2
);
(
Math
.
abs
(
2.0
-
4.0
)
-
1.0
)
/
4.0
+
(
Math
.
abs
(
5.0
-
4.0
)
-
2.0
)
/
3.0
+
// Calcul attendu : (|1.0 - 3.0| / 1.0) + (|2.0 - 5.0| / 1.0)
(
Math
.
abs
(
1.0
-
2.0
)
-
0.5
)
/
2.5
;
double
expected
=
(
Math
.
abs
(
1.0
-
3.0
)
/
1.0
)
+
(
Math
.
abs
(
2.0
-
5.0
)
/
1.0
);
// Vérification du résultat
assertEquals
(
expectedDistance
,
distanceManhattanNormalisee
.
distance
(
l1
,
l2
),
1
e
-
6
);
assertEquals
(
expected
,
result
,
0.001
);
}
}
@Test
@Test
public
void
testDistanceZero
()
{
void
testDistance_ZeroDistance
()
{
// Deux objets avec les mêmes attributs (la distance devrait être 0)
MethodKNN
.
minData
=
new
double
[]{
0.0
,
0.0
,
0.0
};
LoadableData
data1
=
new
LoadableData
()
{
LoadableData
l1
=
new
LoadableData
()
{
@Override
public
double
[]
getAttributes
()
{
return
new
double
[]{
3.0
,
3.0
,
3.0
};
}
@Override
@Override
public
String
getClassification
()
{
public
String
getClassification
()
{
return
null
;
return
"Class1"
;
}
}
@Override
@Override
public
void
setClassification
(
String
classification
)
{
public
void
setClassification
(
String
classification
)
{
}
}
@Override
@Override
...
@@ -108,25 +107,25 @@ public class DistanceManhattanNormaliseeTest {
...
@@ -108,25 +107,25 @@ public class DistanceManhattanNormaliseeTest {
return
null
;
return
null
;
}
}
@Override
public
double
[]
getAttributes
()
{
return
new
double
[
0
];
}
@Override
@Override
public
String
[]
getStringAttributes
()
{
public
String
[]
getStringAttributes
()
{
return
new
String
[
0
];
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
@Override
public
String
getClassification
()
{
public
String
getClassification
()
{
return
null
;
return
"Class1"
;
}
}
@Override
@Override
public
void
setClassification
(
String
classification
)
{
public
void
setClassification
(
String
classification
)
{
}
}
@Override
@Override
...
@@ -134,60 +133,31 @@ public class DistanceManhattanNormaliseeTest {
...
@@ -134,60 +133,31 @@ public class DistanceManhattanNormaliseeTest {
return
null
;
return
null
;
}
}
@Override
public
double
[]
getAttributes
()
{
return
new
double
[
0
];
}
@Override
@Override
public
String
[]
getStringAttributes
()
{
public
String
[]
getStringAttributes
()
{
return
new
String
[
0
];
return
new
String
[
0
];
}
}
};
};
// Vérification que la distance est bien 0
assertEquals
(
0.0
,
distanceManhattanNormalisee
.
distance
(
l1
,
l2
),
1
e
-
6
);
double
result
=
distanceManhattan
.
distance
(
data1
,
data2
);
assertEquals
(
0.0
,
result
,
0.001
);
}
}
@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
@Override
public
double
[]
getAttributes
()
{
public
double
[]
getAttributes
()
{
return
new
double
[
0
];
return
new
double
[]
{}
;
}
}
@Override
public
String
[]
getStringAttributes
()
{
return
new
String
[
0
];
}
};
LoadableData
data2
=
new
LoadableData
()
{
@Override
@Override
public
String
getClassification
()
{
public
String
getClassification
()
{
return
null
;
return
"Class1"
;
}
}
@Override
@Override
public
void
setClassification
(
String
classification
)
{
public
void
setClassification
(
String
classification
)
{
}
}
@Override
@Override
...
@@ -195,38 +165,25 @@ public class DistanceManhattanNormaliseeTest {
...
@@ -195,38 +165,25 @@ public class DistanceManhattanNormaliseeTest {
return
null
;
return
null
;
}
}
@Override
public
double
[]
getAttributes
()
{
return
new
double
[
0
];
}
@Override
@Override
public
String
[]
getStringAttributes
()
{
public
String
[]
getStringAttributes
()
{
return
new
String
[
0
];
return
new
String
[
0
];
}
}
};
};
double
result
=
distanceManhattan
.
distance
(
data1
,
data2
);
LoadableData
l2
=
new
LoadableData
()
{
@Override
// Calcul de la distance, ici l'effet de normalisation devrait être pris en compte
public
double
[]
getAttributes
()
{
double
expected
=
(
Math
.
abs
(
Double
.
MAX_VALUE
-
Double
.
MIN_VALUE
)
/
1.0
)
+
return
new
double
[]{};
(
Math
.
abs
(
Double
.
MIN_VALUE
-
Double
.
MAX_VALUE
)
/
1.0
);
}
assertEquals
(
expected
,
result
,
0.001
);
}
@Test
public
void
testDistanceAvecDonneesNulles
()
{
// Test avec des données nulles
LoadableData
data1
=
new
LoadableData
()
{
@Override
@Override
public
String
getClassification
()
{
public
String
getClassification
()
{
return
null
;
return
"Class2"
;
}
}
@Override
@Override
public
void
setClassification
(
String
classification
)
{
public
void
setClassification
(
String
classification
)
{
}
}
@Override
@Override
...
@@ -234,38 +191,30 @@ public class DistanceManhattanNormaliseeTest {
...
@@ -234,38 +191,30 @@ public class DistanceManhattanNormaliseeTest {
return
null
;
return
null
;
}
}
@Override
public
double
[]
getAttributes
()
{
return
new
double
[
0
];
}
@Override
@Override
public
String
[]
getStringAttributes
()
{
public
String
[]
getStringAttributes
()
{
return
new
String
[
0
];
return
new
String
[
0
];
}
}
};
};
LoadableData
data2
=
null
;
assertEquals
(
0.0
,
distanceManhattanNormalisee
.
distance
(
l1
,
l2
),
1
e
-
6
);
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
}
}
}
@Test
@Test
public
void
testDistanceAvecDonneesVides
()
{
void
testDistance_DifferentLengthAttributes
()
{
// Test avec des données vides (tous les attributs sont 0 ou absents)
LoadableData
l1
=
new
LoadableData
()
{
LoadableData
data1
=
new
LoadableData
()
{
@Override
public
double
[]
getAttributes
()
{
return
new
double
[]{
2.0
,
3.0
};
}
@Override
@Override
public
String
getClassification
()
{
public
String
getClassification
()
{
return
null
;
return
"Class1"
;
}
}
@Override
@Override
public
void
setClassification
(
String
classification
)
{
public
void
setClassification
(
String
classification
)
{
}
}
@Override
@Override
...
@@ -273,25 +222,25 @@ public class DistanceManhattanNormaliseeTest {
...
@@ -273,25 +222,25 @@ public class DistanceManhattanNormaliseeTest {
return
null
;
return
null
;
}
}
@Override
public
double
[]
getAttributes
()
{
return
new
double
[
0
];
}
@Override
@Override
public
String
[]
getStringAttributes
()
{
public
String
[]
getStringAttributes
()
{
return
new
String
[
0
];
return
new
String
[
0
];
}
}
};
};
LoadableData
data2
=
new
LoadableData
()
{
LoadableData
l2
=
new
LoadableData
()
{
@Override
public
double
[]
getAttributes
()
{
return
new
double
[]{
2.0
};
}
@Override
@Override
public
String
getClassification
()
{
public
String
getClassification
()
{
return
null
;
return
"Class2"
;
}
}
@Override
@Override
public
void
setClassification
(
String
classification
)
{
public
void
setClassification
(
String
classification
)
{
}
}
@Override
@Override
...
@@ -299,19 +248,17 @@ public class DistanceManhattanNormaliseeTest {
...
@@ -299,19 +248,17 @@ public class DistanceManhattanNormaliseeTest {
return
null
;
return
null
;
}
}
@Override
public
double
[]
getAttributes
()
{
return
new
double
[
0
];
}
@Override
@Override
public
String
[]
getStringAttributes
()
{
public
String
[]
getStringAttributes
()
{
return
new
String
[
0
];
return
new
String
[
0
];
}
}
};
};
// La distance devrait être 0 car il n'y a aucune différence d'attribut
Exception
exception
=
assertThrows
(
double
result
=
distanceManhattan
.
distance
(
data1
,
data2
);
ArrayIndexOutOfBoundsException
.
class
,
assertEquals
(
0.0
,
result
,
0.001
);
()
->
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