Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
T
TP-Clustering
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
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
IA et Machine Learning
TP-Clustering
Commits
e35f4487
Commit
e35f4487
authored
1 year ago
by
thibault.capt
Browse files
Options
Downloads
Patches
Plain Diff
documentation
parent
23395b03
No related branches found
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
main.py
+56
-13
56 additions, 13 deletions
main.py
with
56 additions
and
13 deletions
main.py
+
56
−
13
View file @
e35f4487
# Importation des bibliothèques
from
typing
import
Tuple
,
List
import
pandas
as
pd
import
pandas
as
pd
import
numpy
as
np
import
numpy
as
np
import
matplotlib.pyplot
as
plt
import
matplotlib.pyplot
as
plt
def
import_csv
(
filename
:
str
):
def
import_csv
(
filename
:
str
,
h
:
int
or
None
)
->
pd
.
DataFrame
:
return
pd
.
read_csv
(
filename
,
header
=
None
)
"""
Importe un fichier CSV et retourne un DataFrame pandas.
Args:
filename (str): Le chemin du fichier CSV.
h (int or None, optional): L
'
entête du fichier CSV.
def
manhattan_distance
(
x1
,
x2
):
Returns:
pandas.DataFrame: Les données importées sous forme de DataFrame.
"""
return
pd
.
read_csv
(
filename
,
header
=
h
)
def
manhattan_distance
(
x1
:
np
.
ndarray
,
x2
:
np
.
ndarray
)
->
float
:
"""
Calcule la distance de Manhattan (L1) entre deux vecteurs.
Args:
x1 (numpy.ndarray): Le premier vecteur.
x2 (numpy.ndarray): Le deuxième vecteur.
Returns:
float: La distance de Manhattan entre x1 et x2.
"""
return
np
.
sum
(
np
.
abs
(
x1
-
x2
))
return
np
.
sum
(
np
.
abs
(
x1
-
x2
))
def
assign_clusters
(
X
,
centroids
):
def
assign_clusters
(
X
:
np
.
ndarray
,
centroids
:
np
.
ndarray
)
->
np
.
ndarray
:
"""
Attribue chaque point de données à son cluster le plus proche en utilisant la distance de Manhattan.
Args:
X (numpy.ndarray): Les données.
centroids (numpy.ndarray): Les centroïdes des clusters.
Returns:
numpy.ndarray: Les étiquettes de cluster attribuées à chaque point de données.
"""
distances
=
np
.
array
([[
manhattan_distance
(
x
,
centroid
)
for
centroid
in
centroids
]
for
x
in
X
])
distances
=
np
.
array
([[
manhattan_distance
(
x
,
centroid
)
for
centroid
in
centroids
]
for
x
in
X
])
return
np
.
argmin
(
distances
,
axis
=
1
)
return
np
.
argmin
(
distances
,
axis
=
1
)
def
k_means
(
X
,
k
,
max_iterations
=
100
):
def
k_means
(
X
:
np
.
ndarray
,
k
:
int
,
max_iterations
:
int
=
100
)
->
Tuple
[
np
.
ndarray
,
np
.
ndarray
]:
"""
Implémente l
'
algorithme K-Means pour regrouper les données en k clusters.
Args:
X (numpy.ndarray): Les données à regrouper.
k (int): Le nombre de clusters à former.
max_iterations (int, optional): Le nombre maximal d
'
itérations. Défaut à 100.
Returns:
tuple: Une paire contenant les étiquettes de cluster et les centroïdes finaux.
"""
# Initialisation des k-centroïdes de manière aléatoire
# Initialisation des k-centroïdes de manière aléatoire
np
.
random
.
seed
(
0
)
np
.
random
.
seed
(
0
)
centroids
=
X
[
np
.
random
.
choice
(
X
.
shape
[
0
],
k
,
replace
=
False
)]
centroids
=
X
[
np
.
random
.
choice
(
X
.
shape
[
0
],
k
,
replace
=
False
)]
...
@@ -82,7 +125,7 @@ if __name__ == "__main__":
...
@@ -82,7 +125,7 @@ if __name__ == "__main__":
# afficher les nouveaux cluster à chaque itérations
# afficher les nouveaux cluster à chaque itérations
# Charger les données depuis le fichier CSV
# Charger les données depuis le fichier CSV
df
=
import_csv
(
"
Data/iris.csv
"
)
df
=
import_csv
(
"
Data/iris.csv
"
,
None
)
X
=
df
.
iloc
[:,
:
-
1
].
values
X
=
df
.
iloc
[:,
:
-
1
].
values
k
=
3
k
=
3
...
...
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