Home¶
Rendu du travail Python effectué dans le cadre d’un stage de fin d’année en Master informatique. Data mining sur des données hydrogéologiques, plusieurs techniques sont mises en place dans ce projet principalement de classification non supervisée.
Auteur: | LEVAVASSEUR Yann |
---|---|
Version: | 1.0 de 2018 |
Documentation:
NoteBooks¶
Description des fichiers principaux Notebook.ipynb
- Cluster_engine: Permet d’entrer les hypers parametres necessaires au lancement d’un clustering (ici Kmean ou Kshape) et le stockage de celui-ci dans un fichier Pickle
- Read_cluster: Premet d’ouvrir un fichier Pickle d’un Clustering sauvegarder avec de l’analyser avec plusieurs outils visuelles
- Read_data: Permet d’afficher et de jouer avec les donnees passee en parametres
utils¶
utils package¶
Submodules¶
utils.cluster_ts module¶
-
class
utils.cluster_ts.
ClusterTs
(ss)[source]¶ Bases :
object
Classe disposant des methodes de transformations et de manipulations des donnees a des fins de partitionnements
- classe mere de:
kmean
kshape
- Parameters:
- ss : SeriesSupp
- instance du manager de series temporelles
- Variables:
- ts: Array[[[float]]]
- les series temporelle au format desiree pour le clustering
- ts_clust: Array[int]
- Chaque entier est selon son index le cluster auquel appartient l’index referant de ts
- ts_name: Array[String]
- Nom de la serie temporelle, du capteur a sa granularite (annee, mois, semaine)
- ss: SeriesSupp
- instance du manager de series temporelles
- sampler: int
- Taille du sampling
sampler()
- ploter: :class:Plot
- Instance d’un objet d’affichage
- n: int
- Nombre de cluster
- capteurs_names: Array[String]
- Nom de la serie temporelle, du capteur a sa granularite (annee, mois, semaine) Bientot supprime
- from_save: Bool
- True si les infos sont recuperees d’un cluster sauvegarde
- proto: Array[[[float]]]
- Prototype de chaque cluster
- last_readed: {Dict}
- Informations recuperer depuis le fichier “Pickle” sauvegarde du cluster etudier
- store_path: String
- Chemin vers le dossier de stockage des sauvegardes. N’est plus utilise depuis l’implementation d’une boite de dialogue pour la recherche de fichier de sauvegarde
- name_file: String
- Chemin absolue vers fichier “Pickle”
- clust_name: String
- Nom de la technique de clustering de l’instance
- metric: String
- Nom de la technique de clacul de distance de l’instance
- geo: :class:Geo
- Instance Geo
- cluster_by_name: {Dict}
- Clustering des series temporelles uniquement par le nom des capteurs sans redondance
- cluster_by_fullname: {Dict}
- Clustering des series temporelles uniquement par le nom des capteurs et leurs granularite
- size_min: int
- Taille minimale d’une serie pour etre garde lors du preprocessing
- nb_capteur: {Dict}
- Clustering des series temporelles uniquement par le nom des capteurs redondance
- nb_week: {Dict}
- Lors d’un decoupage en semaine, represente la redondance par capteur des semaines
- Example:
- See: Cluster_engine.ipynb
- Notes:
- Dependencies:
- tslearn
- pandas
- Pickle
-
capteur_parser
()[source]¶ Parser des noms de capteurs, pour pouvoir garder en memoire les nom des capteur et leur extension de date selon la TS
- Parameters:
- NA
- Returns:
- NA
-
check_equal
(iterator)[source]¶ Verifie si la TS reste tout le temps sur la meme valeur
- Parameters:
- iterator: iterator
- la TS
- Returns:
- Bool
-
clust_hoverview
(n)[source]¶ Affiche les TS d’un cluster n donnee
- Parameters:
- n: int
- cluster selectionne
- Returns:
- NA
-
clust_hoverview_rng
(n)[source]¶ DEPRECATED: Tire une TS random d’un cluster n pour se donner une idee des membres de ce dernier
- Parameters:
- n: int
- Le cluster numero n
- Returns:
- NA
-
get_captor_distribution_in_cluster
()[source]¶ Retourne le nombre d’occurance des cpateur dans chacun des clusters
- Parameters:
- NA
- Returns:
- unnamed: DataFrame
- Tableau d’occurance
-
get_clust_part_for_captor
(cpt)[source]¶ recupere les cluster pour capteur cpt donne et leur distribution au sein des cluster
- Parameters:
- cpt: String
- Capteur target
- Returns:
- res: String
- Seulement les noms des date pour chacun des clusters
-
get_cluster_n
(n)[source]¶ Retourne les TS d’un cluster n
- Parameters:
- n: int
- Numero de cluster souhaite
- Returns:
- res: Array[float]
- Ensemble des TS du cluster
-
get_part_of_ts
(data, elmt)[source]¶ Selon les Parameters d’elmt retrouve une partie des donnes depuis data
- Parameters:
- data: {Dict}
- Donnee depuis les quelles on souhaite recuperer une partie precise
- elmt: {Dict}
- Information liee a la demande (date)
- Returns:
- res_ts: Array[float]
- TS souhaitee
-
get_ts_by_captor
(cpt)[source]¶ recupere les TS pour capteur cpt donne et leur distribution au sein des cluster
- Parameters:
- cpt: String
- Capteur target
- Returns:
- res: tuple(String, {Dict})
- String represente le capteur et le dictionnaires la distribution des sous TS dans chaque clusters (key = cluster)
-
highlight_max
(s)[source]¶ Parametre d’affichage surligne les max par ligne de DataFrame
- Parameters:
- s: pandas
- Ligne du tableau
- Returns:
- unnamed: pands.style
- Affichage des max
-
parse_capteur_split
(elmt)[source]¶ Recupere les information d’une TS depuis son nom comme le nom de son capteur et la date
- Parameters:
- elmt: String
- Nom du capteur avec info
- Returns:
- res: {Dict}
- Les infos decoupes et range dans un dico
-
read_cluster
(path='')[source]¶ Ouvre et recupere toutes les informations d’un fichier pickle(sauvegarde d’un clustering) et update les variable de l’instance pour correspondre
- Parameters:
- path: String
- Chemin d’acces au fichier
- Returns:
- NA
-
set_size_min
(size)[source]¶ Set taille minimale d’une TS pour etre gardee
- Parameters:
- size: int
- Taille minimale
- Returns:
- NA
-
show_info
()[source]¶ Affiche les informations recuperees depuis le txt d’info de la sauvegarde cluster lie a l’instance
- Parameters:
- NA
- Returns:
- NA
utils.data_factory module¶
-
class
utils.data_factory.
DataFactory
(cwd)[source]¶ Bases :
object
Factory fournis et importe les donnees en gerant le nombre d’intances
- Parameters:
- cwd: String
- chemin d’acces ou le main est excecute
- Variables:
- path_RG24: String
- Chemin pour recuperer les donnees RG24
- path_RG1: String
- Chemin pour recuperer les donnees RG1
- path_GW: String
- Chemin pour recuperer les donnees GW
- RG24: {Dict}
- Les donnees RG24
- RG1: {Dict}
- Les donnees RG1
- GW: {Dict}
- Les donnees GW
- Notes:
- RG24: Rain gauge, precipitation de pluie journaliere
- RG1: Rain gauge, precipitation de pluie horaire
- GW: Grand Water, donnees piezometriques
-
get_data
(name)[source]¶ Dirige l’importation vers la bonne methode selon le parametre
- Parameters:
- name: String
- Nom du type de donnees a recuperer
- Returns:
- None
-
get_dataset
(source)[source]¶ Recupere et retourne un Dictionnaire de Dataframe importe de multiple fichiers csv
- Parameters:
- source: String
- Chemin vers les fichiers csv
- Returns:
- dataset: {Dict}
- Dictionnaire des donnees par capteurs
-
path_GW
= 'csv_prepro\\GW'¶
-
path_RG1
= 'csv_prepro\\RG\\precipitation_1h_RG'¶
-
path_RG24
= 'csv_prepro\\RG\\precipiation_RG'¶
utils.file_dialog module¶
utils.geo module¶
-
class
utils.geo.
Geo
(cwd)[source]¶ Bases :
object
Classe entierement dedie a l’affichage des capteur dans l’espace les donnees sont normees suivant un type de geolocalisation geologique propre a la NC, la classe dispose de plusieurs type d’affichage
- Parameters:
- cwd: String
- Chemin vers le main
- Variables:
- path_geo_RG: String
- Chemin pour recuperer les donnees RG
- path_geo_GW: String
- Chemin pour recuperer les donnees GW
- geo_RG: {Dict}
- Les donnees geo_RG
- geo_GW: {Dict}
- Les donnees geo_GW
- dist_mat: pandas.DataFrame
- Matrice des distances entre les pluviometre et des piezometres
- Notes:
- RG: Rain gauge, precipitation de pluie journaliere
- GW: Grand Water, donnees piezometric
-
distance_matrix
()[source]¶ Retourne une dataframe representant les distances entre piezo et pluvio ainsi que les distances les plus courte
- Parameters:
- NA
- Returns:
- gdist_style: pandas.style
- Matrice stylise des distances
-
get_geo_data
(source)[source]¶ Recupere les donnees geographique
- Parameters:
- source: String
- location ou recuperer ces donnees
- Returns:
- data: pandas.DataFrame
- Donnees sous forme de tableau
utils.k_mean module¶
-
class
utils.k_mean.
Kmean
(ss)[source]¶ Bases :
utils.cluster_ts.ClusterTs
Classe de partitionnement des donnees avec l’algorithm K-mean
- Parameters:
- ss : SeriesSupp
- instance du manager de series temporelles
- Variables:
- seed: int
- Valeur d’initialisation de l’algo, random.
- counter: Counter
- repartition des objets au sein des clusters
- km: TimeSeriesKMeans
- Instance de l’algo
- clust_name: String
- Nom de l’algo(affichage des plots)
- metric: String
- Choix du metrics utilise, principalement softdtw ici car tres efficace et rapide
utils.k_shape module¶
-
class
utils.k_shape.
Kshape
(ss)[source]¶ Bases :
utils.cluster_ts.ClusterTs
Classe de partitionnement des donnees avec l’algorithm K-shape
- Parameters:
- ss : SeriesSupp
- instance du manager de series temporelles
- Variables:
- seed: int
- Valeur d’initialisation de l’algo, random.
- counter: Counter
- repartition des objets au sein des clusters
- km: TimeSeriesKMeans
- Instance de l’algo
- clust_name: String
- Nom de l’algo(affichage des plots)
- metric: String
- Choix du metrics utilise, principalement softdtw ici car tres efficace et rapide
utils.parser module¶
utils.plot module¶
-
class
utils.plot.
Plot
(cluster)[source]¶ Bases :
object
Classe permetant l’affichage sous forme de graph de donnees
- Parameters:
- cluster: ClusterTs
- instance de partitionnement
- Variables:
- mode: String
- Type d’affichage des graphes
- colors: {Dict}
- Dictionnaire de couleur pour les plots
-
change_mode
(m)[source]¶ - Change le type d’affichage:
- 1: Markers
- 2: Lines
- 3: Lines+Markers
- Parameters:
- m: int [1:3]
- L’entier qui determiner le mode actuel, si en dehors de [1:3] reste au meme mode qu’avant l’appel
- Returns:
- NA
-
plot_cluster
()[source]¶ Methode d’affichage graphique des clusters formes par l’instance ClusterTs Affiche chaque groupe avec une difference de couleur pour le prototype
-
plot_cluster_light
()[source]¶ Version legere d’affichage pour limiter la consommation de puissance d’un affichage dynamique
-
plot_histo
(n)[source]¶ Affcihe par cluster le nombre d’occurence des Capteurs de et la granularite maximale
-
plot_scatter
(data)[source]¶ Affiche des donnees avant cluster, permet de visualiser les donnees decoupe par exemple data: [DICT] les donnees key: Capteur value: Dataframe
-
plot_scatter_by_capteur_color_cluster
(data, dict_clust, rg=None)[source]¶ Affiche un capteur et colorise selon l’appartenance au cluster
-
plot_scatter_light
(data)[source]¶ Encore une version plus legere de la methode de base data: [DICT] les donnees key: Capteur value: Dataframe
utils.prefix_span module¶
-
class
utils.prefix_span.
PrefixSpanManager
(sax_engine, export=True)[source]¶ Bases :
object
Classe d’outil a l’utilisation de prefixspan
- Parameters:
- sax_engine: SaxEngine
- Instance de preprocessing SAX
- export: Boolean
- Si oui ou non les donnees sont deja exportees au bon format
- Variables:
- se_instance: SaxEngine
- L’instance de class SAX
- data: Array[]
- Les donnees au format SAX
utils.pygapbide module¶
-
class
utils.pygapbide.
GapbideManager
(gp=None)[source]¶ Bases :
object
Manager d’une instance :class:Gabide
- Variables d’Instance:
- gp: Gapbide
- Instance de l’algo a manager
- dataset: Array[int]
- Liste des donnees sax les entiers font office de symboles
- res: Array[[int: X*], int: Y, Z(int: Z1, int: Z2, int: Z3)]
- X* Pattern d’entiers ex: 244695
- Y Support du pattern
- Z( * Z1: Position du patterns, indice de la transaction
- Z2: Indice au sein de la transaction du debut du patterns
- Z3: Indice de fin…)
utils.sax_engine module¶
-
class
utils.sax_engine.
SaxEngine
(nsy, nse)[source]¶ Bases :
object
Manager SAX(SymbolicAggregateApproximation) pour formater les donnees temporelles vers unhe suites de segments a symboles representatifs
- Parameters:
- nsy : int
- Nombre de symbols
- nsy : int
- Nombre de segments
- Variables:
- raw_data : ArrayList
- Donnees brutes
- process_data : ArrayList
- Donnees retravaillees pour correspondre au format fit()
- sax_data_inv : ArrayList
- Donnees au format SAX mais de meme taille len() que les donnees brutes
- sax_data : ArrayList
- Donnees au format SAX
- Example:
- See: Sequential_pattern_mining.ipynb
utils.series_supp module¶
-
class
utils.series_supp.
SeriesSupp
(cwd, factory, dataset_name)[source]¶ Bases :
object
Premet d’organiser et de manipuler les données.
- Parameters:
- cwd: String
- chemin d’acces ou le main est excecute
- factory: Factory
- Instance de la factory
- dataset_name: String
- Definie le type de donnees a recuperer
- Variables:
- dataset: {Dict}
- Le dataset original sans modification
- tmp_dataset: {Dict}
- Le dataset actuel avec les modification
- years: [ARRAY<STRING>]
- Setup de decoupage par annees
- months: [ARRAY<STRING>]
- Setup de decoupage par mois
- days: [ARRAY<STRING>]
- Setup de decoupage par annees | [BOOL] decoupage semaines
- factory: DataFactory
- Instance de la Factory
- dataset_name: String
- Permet de connaitre la source souhaite e.g import_dataset()
-
dict_smooth
(wind=24, col='Valeur')[source]¶ Dictionnaire full smooth
- Parameters:
- wind: int
- Taille de la fenetre 24 pour smooth journalier
- col: str (DEFAUlT = « Valeur »)
- Colonne cible de l’action
- Returns:
- NA
-
get_data_from_captor
(cpt)[source]¶ Retourne toutes les series temporelles liees a un nom de capteur
- Parameters:
- cpt: String
- Nom du capteur desire
- Returns:
- res: {Dict}
- Sous dataset du capteur associe, les clefs sont les differente declinaisons en series temporelles du capteur, varie en longueur selon la granularite
utils.statics_func module¶
-
utils.statics_func.
openfile_dialog
()[source]¶ Boite de dialogue permetant de recuperer les fichers de sauvegarde de partitionnement Pickle
- Parameters:
- NA
- Returns:
- fname: String
- Chemin vers le fichier selectionne
-
utils.statics_func.
thresholding_algo
(y, lag, threshold, influence)[source]¶ Algorithm de detection de pics dans une TS
- Parameters:
- lag
- threshold
- influence
- Returns:
- unnamed: {Dict}
- Informations sortie de l’algo, signals est une liste de meme len que la TS, representant les ppics via une variation boolean
Module contents¶
Installation¶
Téléchargement via Git
:
git clone https://github.com/LevavasseurYann/workspace_internship.git
Vous trouverez les données réelles utilisées >>> https://drive.google.com/open?id=1c0ZEve1EDBKIyPgjcAuIyUEVAXNNWo4t
Note
Ce projet est developpe dans un environement conda, un fichier spec-file est a telecharger ici >>> txt