Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
projets:plim:20152016:gr15 [2015/11/01 14:24] gajetti [Outils utilisés, support] |
projets:plim:20152016:gr15 [2015/11/22 14:44] (Version actuelle) gajetti [Résultats Finaux] |
||
---|---|---|---|
Ligne 22: | Ligne 22: | ||
* IMEI:353760058902026 | * IMEI:353760058902026 | ||
===== K-Mean : Descriptif ===== | ===== K-Mean : Descriptif ===== | ||
- | * Etat initiale | + | * Definition |
+ | C'est une méthode de quantification vectorielle, populaire pour l'analyse de clusterdans l'exploration de données. | ||
+ | Etant donnée un ensemble de point (x1,x2,...,xn) on cherche à partitionner ces n points en k ensemble S tel que : | ||
+ | S={S1,S2,...Sk} avec k≤n. | ||
+ | Ce qu'on veut c'est minimiser la distance entre les points à l'intérieur de chaque partition ce qui revient à minimiser : | ||
+ | |||
+ | arg min ∑∑ || Kj - μi ||^2 pour i=1...k et Kj∈Si Minimum sur S | ||
+ | |||
+ | * Initialisation | ||
+ | Il faut choisir k points qui représentent la position moyenne des partitions m1,m2...,mk initiales au hasard. | ||
* Itération la boucle | * Itération la boucle | ||
- | * La condition d'arret | + | On répète jusqu'a ce qu'il y ait convergence : |
+ | - on prend chaque point on calcul la moyenne et on l'attribue à la partition la plus proche | ||
+ | - à une étape t : Si ={Xj : ||Xj - mi|| ≤ || Kj - mï|| avec ï = 1,....k} | ||
+ | - On fait ça pour tous les points | ||
+ | - On met a jour chaque cluster : étape t+1 : mi = 1/|Si(étape t)|∑ Xj | ||
+ | |||
+ | * La condition d'arrêt | ||
+ | C'est lorsqu'on obtient la convergence, c'est à dire lorsque les partitions ne changent plus ou bien l'on peut fixer un paramètre epsilon. Quand l'écart entre deux étape est inférieur a epsilon on considère que les résultats sont satisfaisant. | ||
+ | |||
+ | |||
+ | La méthode des K_means est donc performante sur une grande quantité de données. | ||
+ | Pour détecter et lisser les variations, nous avons choisit de moyenner les données et d'observer les variations toutes les secondes dans un premier temps (si le paramètre temps est changé il sera affiché dans l'interface). Le principe est d'utiliser la méthode MSE : Mean Square Error à 1 dimension qui est la moyenne de chaque variations au carré. | ||
===== Outils utilisés, support ===== | ===== Outils utilisés, support ===== | ||
Ligne 30: | Ligne 51: | ||
* Logiciel : Visual Studio 2015 | * Logiciel : Visual Studio 2015 | ||
* Language de programmation : C# | * Language de programmation : C# | ||
- | * Bibliothèque Windows Phone | + | * Bibliothèque .Net Windows Phone |
* Cours en relation plateforme Logicielle pour l'informatique Mobile | * Cours en relation plateforme Logicielle pour l'informatique Mobile | ||
* Un HTC S8 Windows Phone version 8.1 | * Un HTC S8 Windows Phone version 8.1 | ||
- | ===== Structure et hiérarchie du projet ===== | + | |
- | (Partie en attente de traitement) | + | |
===== Planning development ===== | ===== Planning development ===== | ||
==== Semaine 1 ==== | ==== Semaine 1 ==== | ||
Ligne 57: | Ligne 77: | ||
* Traitement des données dans le sens pré-formatage dans le but de les adapter au K-Mean. | * Traitement des données dans le sens pré-formatage dans le but de les adapter au K-Mean. | ||
* Préparation de la méthode K-mean (compréhension, idées d'utilisation, données d'entrée données de sortie). | * Préparation de la méthode K-mean (compréhension, idées d'utilisation, données d'entrée données de sortie). | ||
- | |||
- | ==== Semaine 7 ==== | ||
* Recherche d'une méthode de stockage pour les capteurs (choix entre DataBase sur cloud ou enregistrement fichier en .txt) | * Recherche d'une méthode de stockage pour les capteurs (choix entre DataBase sur cloud ou enregistrement fichier en .txt) | ||
* Si possible enregistrement des données | * Si possible enregistrement des données | ||
* Test méthode des K-means + Affichage des résultats | * Test méthode des K-means + Affichage des résultats | ||
+ | ==== Semaine 7 ==== | ||
+ | * TP IOS, salle extérieur a EPU | ||
+ | * Déploiement sur téléphone : En parrallèle semaine test récupération des données sur le téléphone. | ||
+ | |||
+ | ==== Semaine 8 ==== | ||
+ | * Correction des bugs | ||
+ | * Mise en place d'une interface utilisateur | ||
+ | * Rajout d'un filtre MSE : Mean Square Error à 1D pour préparer les données au traitement K_means, évite les interprétations aberrantes. | ||
+ | * Création également d'une base de données, interne au téléphone. | ||
+ | * Arrangement interface graphique | ||
+ | * Rajout options : Stockage des profils, utilisateurs | ||
===== Utilisation de l'application ===== | ===== Utilisation de l'application ===== | ||
- | ===== Results ===== | + | |
+ | - Lancement de l'application sous visual Studio 2015 | ||
+ | |||
+ | {{:projets:plim:20152016:capture_d_e_cran_2015-10-26_20.10.02.png?200|}} | ||
+ | |||
+ | - Première page : Log pour récupérer et stocker les données pour traitement futur : | ||
+ | |||
+ | {{:projets:plim:20152016:capture_d_e_cran_2015-10-26_20.10.31.jpg?200|}} | ||
+ | |||
+ | - Exemple d'un premier log Activity 1 | ||
+ | |||
+ | {{:projets:plim:20152016:capture_d_e_cran_2015-10-26_20.11.21.jpg?200|}} | ||
+ | |||
+ | - Exemple simulation du bougé du téléphone | ||
+ | |||
+ | {{:projets:plim:20152016:capture_d_e_cran_2015-10-26_20.11.41.jpg?200|}} | ||
+ | {{:projets:plim:20152016:capture_d_e_cran_2015-10-26_20.11.50.jpg?200|}} | ||
+ | |||
+ | -Exemple page pour utilisation méthode des K-Means | ||
+ | |||
+ | {{:projets:plim:20152016:capture_d_e_cran_2015-10-26_20.10.41.jpg?200|}} | ||
+ | ===== Résultats Finaux ===== | ||
+ | |||
+ | - Démarrage de l'application : L'utilisateur doit se connecter. | ||
+ | {{:projets:plim:20152016:capture_d_e_cran_2015-11-14_14.55.56.jpg?200|}} | ||
+ | {{:projets:plim:20152016:capture_d_e_cran_2015-11-14_14.56.40.jpg?200|}} | ||
+ | {{:projets:plim:20152016:capture_d_e_cran_2015-11-14_14.56.45.jpg?200|}} | ||
+ | |||
+ | - Entrer le nom de l'activité, puis démarrer la récupération de données.Attention, pour que l'application fonctionne correctement il faut enregistrer un minimum de données(quelques minutes), car on le rappelle, l'application est faite pour interpréter un grand nombre de données et voir comment fonctionne la méthode des K_means. | ||
+ | |||
+ | {{:projets:plim:20152016:capture_d_e_cran_2015-10-26_20.10.31.jpg?200|}} | ||
+ | {{:projets:plim:20152016:capture_d_e_cran_2015-10-26_20.11.21.jpg?200|}} | ||
+ | {{:projets:plim:20152016:capture_d_e_cran_2015-10-26_20.11.50.jpg?200|}} | ||
+ | {{:projets:plim:20152016:capture_d_e_cran_2015-10-26_20.11.50.jpg?200|}} | ||
+ | |||
+ | - Recommencer avec autant d'activités que vous le souhaitez (pour que ce soit cohérent il faut au moins 2 activités différentes) | ||
+ | {{:projets:plim:20152016:capture_d_e_cran_2015-11-14_15.00.56.jpg?200|}} | ||
+ | |||
+ | - Une fois le stockage des données fini, aller dans K_means (bouton en haut a droite), sélectionner les capteurs que vous voulez regarder, fixer les paramètres, K : nombre de cluster et epsi valeur d'arrêt de la méthode. Lancer start K_mean en bas. | ||
+ | {{:projets:plim:20152016:capture_d_e_cran_2015-11-14_15.02.24.jpg?200|}} | ||
+ | {{:projets:plim:20152016:capture_d_e_cran_2015-11-14_15.02.34.jpg?200|}} | ||
+ | |||
+ | - Une fois que le bouton profil en haut à droite est accessible (ce qui correspond au faite que la méthode a fini de tourner) aller voir vos résultats: | ||
+ | {{:projets:plim:20152016:capture_d_e_cran_2015-11-14_15.02.51.jpg?200|}} | ||
+ | |||
+ | - Différents graphiques apparaissent en fonction de la valeur d'entrée K. Pour visualiser les suivantes vues cliquer sur NEXT , pour revenir en arrière , sur LAST. | ||
+ | {{:projets:plim:20152016:capture_d_e_cran_2015-11-14_15.02.57.jpg?200|}} | ||
+ | {{:projets:plim:20152016:capture_d_e_cran_2015-11-14_15.03.00.jpg?200|}} | ||
+ | |||
+ | Vous pouvez également sauvegarder vos données. Grâce à l'identification en début de session cela permet à l'utilisateur de conserver ses scan d'activités sans être mélanger avec les données et activités différentes d'autres utilisateurs. | ||
+ | |||
+ | Pour finir, une fois que vous avez acquis différentes données pour que l'application est une base de repère d'activités, vous pouvez aller dans scan activity. Cette option permet à l'utilisateur de voir en instantanée ce que l'application détecte sur son activité. Plus la base de données sera grande et variée, plus le scan activity sera performant. | ||
+ | |||
+ | {{ :projets:plim:20152016:capture_d_e_cran_2015-11-14_15.01.51.jpg?200 |}} | ||
+ | ===== Téléchargements ===== | ||
+ | * Version avec base de donnée en ligne [[https://github.com/mathiascouste/PlimKmeans/archive/master.zip]] | ||
+ | * Version avec base de donnée locale : [[https://github.com/Faroukelkholy/ActivityDetector/archive/master.zip]] |