Affectation 1
20 points au total (sera réduit à 10 points)
Reconnaissance de l'activité humaine (HAR)
La reconnaissance de l'activité humaine (HAR) fait référence à la capacité des machines à identifier diverses activités effectuées par les utilisateurs. Les connaissances acquises à partir de ces systèmes / algorithmes sont intégrées dans de nombreuses applications où le dispositif associé l'utilise pour identifier les actions ou les gestes et effectue des tâches prédéfinies en réponse.
Ensemble de données
Nous souhaitons classer les activités humaines en fonction des données d'accéléromètre. Nous utiliserons un ensemble de données accessible au public appelé UCI-HAR. L'ensemble de données est disponible en téléchargement ici. Juste pour votre référence, une vidéo YouTube des auteurs collectant des données d'accéléromètre des participants est également disponible ici.
Tâche 1: Analyse des données exploratoires (EDA) [3 points]
Prétraitement
Nous utiliserons les données de l'accéléromètre brutes dans le dossier inertial_signals. Le script fourni, CombineScript.py
, organise et trie des données d'accéléromètre, établissant des classes distinctes pour chaque catégorie et compilant les données des participants dans ces classes. Le script MakeDataset.py
est utilisé pour lire toutes les données des participants et créer un seul ensemble de données. L'ensemble de données est ensuite divisé en train, test et ensemble de validation. Nous nous concentrons sur les 10 premières secondes d'activité, traduisant par les 500 échantillons de données initiaux en raison d'un taux d'échantillonnage de 50 Hz.
- Étape-1> Placez le
CombineScript.py
et MakeDataset.py
dans le même dossier qui contient l'ensemble de données UCI. Assurez-vous que vous avez emménagé dans le dossier avant d'exécuter les scripts. Si vous exécutez les scripts d'un dossier différent, vous devrez jouer avec les chemins des scripts pour le faire fonctionner. - Étape-2> Exécuter
CombineScript.py
et fournir les chemins de test pour tester et former des dossiers dans l'ensemble de données UCI. Cela créera un dossier appelé Combined
qui contiendra toutes les données de tous les participants. C'est ainsi que la plupart des ensembles de données sont organisés. Vous pouvez rencontrer des structures d'ensemble de données similaires à l'avenir. - Étape 3> Exécutez
MakeDataset.py
et fournissez le chemin du dossier Combined
. Cela créera un ensemble de données qui contiendra l'ensemble de train, de test et de validation. Vous pouvez utiliser cet ensemble de données pour former vos modèles.
Questions
- Tracez la forme d'onde pour un échantillon de données de chaque classe d'activité. Êtes-vous en mesure de voir des différences / similitudes entre les activités? Vous pouvez tracer une intrigue secondaire ayant 6 colonnes pour montrer les différences / similitudes entre les activités. Pensez-vous que le modèle sera en mesure de classer les activités en fonction des données? [0,5 points]
- Pensez-vous que nous avons besoin d'un modèle d'apprentissage automatique pour faire la différence entre les activités statiques (pose, assise, debout) et des activités dynamiques (Walking_downstairs, Walking_upstairs)? Regardez l'accélération linéaire $ (Acc_x ^ 2 + Acc_y ^ 2 + Acc_z ^ 2) $ pour chaque activité et justifiez votre réponse. [0,5 points]
- Visualisez les données à l'aide de PCA. [1 points]
- Utilisez PCA (analyse des composants principaux) sur l'accélération totale $ (Acc_x ^ 2 + Acc_y ^ 2 + Acc_z ^ 2) $ Pour comprimer les délais d'accélération en deux fonctionnalités et tracer un tracé de dispersion pour visualiser différentes classes d'activités.
- Ensuite, utilisez TSFEL (une bibliothèque de fonctionnalités) pour créer des fonctionnalités (votre choix celles que vous ressentez est utile), puis effectuez PCA pour obtenir deux fonctionnalités. Tracer un complot de dispersion pour visualiser différentes catégories d'activités.
- Utilisez maintenant les fonctionnalités fournies par l'ensemble de données et effectuez PCA pour obtenir deux fonctionnalités. Tracer un complot de dispersion pour visualiser différentes catégories d'activités.
- Comparez les résultats de l'ACP sur l'accélération totale, TSFEL et les fonctionnalités de l'ensemble de données. Selon vous, quelle méthode est la meilleure pour visualiser les données?
- Calculez la matrice de corrélation des fonctionnalités obtenues par TSFEL et fournies dans l'ensemble de données. Identifiez les fonctionnalités fortement corrélées les unes avec les autres. Y a-t-il des fonctionnalités redondantes? [1 points]
Tâche 2: Arbres de décision pour la reconnaissance des activités humaines [3 points]
Questions
- Utilisez la bibliothèque Sklearn pour former la décision de la décision. [1,5 points]
- Former un modèle d'arbre de décision à l'aide des données de l'accéléromètre brutes. Signalez la précision, la précision, le rappel et la matrice de confusion du modèle.
- Former un modèle d'arbre de décision en utilisant les fonctionnalités obtenues par TSFEL. Signalez la précision, la précision, le rappel et la matrice de confusion du modèle.
- Former un modèle d'arbre de décision en utilisant les fonctionnalités fournies dans l'ensemble de données. Signalez la précision, la précision, le rappel et la matrice de confusion du modèle.
- Comparez les résultats des trois modèles. Selon vous, quel modèle est le meilleur?
- TRAIN DÉCISION DES PROFIGRES DIVRIRATIVES (2-8) en utilisant toutes les 3 méthodes supérieures. Tracez la précision du modèle sur les données de test par rapport à la profondeur de l'arbre. [1 points]
- Y a-t-il des participants / activités où le modèle Performace est mauvais? Si oui, pourquoi? [0,5 marque]
Tâche 3: Ingénierie rapide pour les modèles de grandes langues (LLMS) [4 points]
Zéro-shot et peu de tir invite:
L'incitation zéro-shot implique de fournir un modèle de langue avec une invite ou un ensemble d'instructions qui lui permet de générer du texte ou d'effectuer une tâche sans aucune donnée de formation explicite ou exemples étiquetés. Le modèle devrait générer du texte de haute qualité ou effectuer la tâche avec précision en fonction de l'invite et de ses connaissances internes.
L'incitation à quelques coups est similaire à une invitation à zéro, mais elle consiste à fournir au modèle un nombre limité d'exemples ou d'invites étiquetées qui sont pertinentes pour la tâche ou l'ensemble de données spécifique. Le modèle devrait ensuite générer du texte de haute qualité ou effectuer la tâche avec précision en fonction des quelques exemples étiquetés et de ses connaissances internes.
Description de la tâche:
Vous avez reçu un cahier Python qui montre comment utiliser des proches zéro et à quelques coups avec un modèle de langue (LLM). L'exemple dans le cahier implique des tâches textuelles, mais les LLM peuvent également être appliquées à un large éventail de tâches (les étudiants intéressés à en apprendre davantage peuvent lire ici et ici).
Des requêtes seront fournies sous la forme de données d'accéléromètre en vedette et le modèle devrait prédire l'activité effectuée.
- Apprentissage zéro : le modèle devrait être en mesure de prédire l'activité basée sur les données de l'accéléromètre sans données de formation explicites ou exemples étiquetés.
- Peu d'apprentissage par balle : le modèle devrait également être en mesure de prédire l'activité basée sur un nombre limité d'exemples ou d'invites étiquetées qui sont pertinentes pour la tâche spécifique.
Questions
- Démontrez comment utiliser l'apprentissage zéro-tir et l'apprentissage à quelques coups pour classer les activités humaines en fonction des données d'accéléromètre en train. Démontrez qualitativement les performances de l'apprentissage à quelques coups avec l'apprentissage zéro-shot. Quelle méthode fonctionne mieux? Pourquoi? [1 points]
- Comparez quantitativement la précision de l'apprentissage à quelques tirs avec des arbres de décision (vous pouvez utiliser un sous-ensemble de l'ensemble de test si vous rencontrez des problèmes de limitation de débit). Quelle méthode fonctionne mieux? Pourquoi? [1 points]
- Quelles sont les limites de l'apprentissage zéro-tir et de l'apprentissage à quelques coups dans le contexte de la classification des activités humaines basées sur des données d'accéléromètre en train? [1 points]
- Que classe le modèle lorsqu'il est donné la contribution d'une activité entièrement nouvelle qu'elle n'a pas vue auparavant? [0,5 marque]
- Testez le modèle avec des données aléatoires (garantissant que les données ont les mêmes dimensions et plages que l'entrée précédente) et signaler les résultats. [0,5 marque]
Tâche 4: Collecte de données dans la nature [4 points]
Description de la tâche
Pour ces exercices, les marques ne dépendront pas des chiffres que vous obtenez, mais du processus que vous avez suivi, utilisez des applications comme Physics Toolbox Suite
de votre smartphone pour collecter vos données au format .csv / .txt. Assurez-vous qu'au moins 15 secondes de données sont collectées, des bords de coupe pour obtenir 10 secondes de données pertinentes. Enregistrez également une vidéo de vous-même lors de l'enregistrement des données. Cette vidéo sera requise dans certaines affectations futures. Collectez 3 à 5 échantillons par classe d'activité.
Choses à prendre en charge:
- Assurez-vous que le téléphone est placé dans la même position pour toutes les activités.
- Assurez-vous que le téléphone est dans le même alignement pendant l'activité que la modification de l'alignement modifiera les données collectées et affectera les performances du modèle.
- Assurez-vous d'avoir au moins 10s de données par dossier pour la formation. Au fur et à mesure que les données sont collectées à 50 Hz, vous aurez 500 échantillons de données.
Questions
- Utilisez le modèle d'arbre de décision formé sur l'ensemble de données UCI-HAR pour prédire les activités que vous avez effectuées. Signalez la précision, la précision, le rappel et la matrice de confusion du modèle. Vous avez trois versions de l'ensemble de données UCI, vous pouvez utiliser a) des données brutes à partir de l'accéléromètre, b) des données en cours TSFEL, c) des fonctionnalités fournies par l'auteur. Choisissez la version à utiliser, en vous assurant que vos données de test sont similaires à vos données de formation. Comment le modèle a-t-il fonctionné? [1 points]
- Utilisez les données que vous avez collectées pour prédire les activités que vous avez effectuées. Décidez d'opportunité d'imposer le prétraitement et la feturation et, dans l'affirmative, choisissez les méthodes appropriées. Comment le modèle a-t-il fonctionné? [1 points]
- Utilisez la méthode d'incitation à quelques coups à l'aide d'un ensemble de données UCI-HAR pour prédire les activités que vous avez effectuées. Assurez-vous que vos exemples et la requête de test subissent un prétraitement similaire. Comment le modèle a-t-il fonctionné? [1 points]
- Utilisez la méthode d'incitation à quelques coups à l'aide des données que vous avez collectées pour prédire les activités que vous avez effectuées. Adoptez les méthodes de traitement appropriées au besoin. Comment le modèle a-t-il fonctionné? [1 points]
NOTE :
- Pour obtenir une clé API, accédez à la console de développeur GroqCloud à https://console.groq.com/login. Suivez le guide QuickStart pour obtenir votre clé API.
- Ne partagez votre clé API avec personne et ne le rendez pas public ou ne le téléchargez pas dans un référentiel public, par exemple pour cette affectation. Si la clé est trouvée dans le code, vous serez pénalisé avec une déduction de 1,0 marques.
- Il est conseillé d'écrire un fichier Markdown (.md) ou d'utiliser un cahier Python (.Ipynb) pour démontrer votre raisonnement, vos résultats et vos résultats.
Mise en œuvre de l'arbre de décision [6 points]
Terminez la mise en œuvre de l'arborescence de décision dans Tree / Base.py. Le code doit être écrit en Python et ne pas utiliser de bibliothèques existantes autres que celles partagées en classe ou déjà importées dans le code. Votre arbre de décision doit fonctionner pour quatre cas: i) Caractéristiques discrètes, sortie discrète; ii) Caractéristiques discrètes, sortie réelle; iii) Caractéristiques réelles, sortie discrète; fonctionnalités réelles, sortie réelle. Votre modèle doit accepter uniquement les entrées réelles (pour les entrées discrètes, vous pouvez convertir les attributs en vecteurs codés à un hot). Votre arbre de décision devrait être en mesure d'utiliser des informations sur l'entropie ou le giniindex comme critères de division pour une sortie discrète. Votre arbre de décision devrait être en mesure d'utiliser InformationGain en utilisant MSE comme critères de fractionnement pour une sortie réelle. Votre code doit également être en mesure de tracer / afficher l'arborescence de décision. [2,5 points]
Vous devriez modifier les fichiers suivants.
metrics.py
: remplissez les fonctions de métriques de performance dans ce fichier.
usage.py
: exécutez ce fichier pour vérifier vos solutions.
Arbre (répertoire): module de la décision Arbre.
-
base.py
: Classe d'arbre de décision complète. -
utils.py
: remplissez toutes les fonctions utilitaires. -
__init__.py
: ne modifiez pas cela
Vous devez exécuter usage.py pour vérifier vos solutions.
Générez votre ensemble de données en utilisant les lignes de code suivantes
from sklearn . datasets import make_classification
X , y = make_classification (
n_features = 2 , n_redundant = 0 , n_informative = 2 , random_state = 1 , n_clusters_per_class = 2 , class_sep = 0.5 )
# For plotting
import matplotlib . pyplot as plt
plt . scatter ( X [:, 0 ], X [:, 1 ], c = y )
a) Montrer l'utilisation de votre arbre de décision sur l'ensemble de données ci-dessus. Les 70% des données doivent être utilisées à des fins de formation et les 30% restants à des fins de test. Montrez la précision, la précision par classe et le rappel de l'arbre de décision que vous avez implémenté sur l'ensemble de données de test. [0,5 marque]
B) Utilisez une validation croisée à 5 plions sur l'ensemble de données. En utilisant la validation croisée imbriquée, trouver la profondeur optimale de l'arbre. [1 point]
Vous devriez modifier classification-exp.py
pour le code contenant les expériences ci-dessus.
a) Montrer l'utilisation de votre arbre de décision pour le problème d'efficacité automobile. [0,5 points]
b) Comparez les performances de votre modèle avec le module d'arbre de décision de Scikit Learn. [0,5 points]
Vous devriez modifier auto-efficiency.py
pour le code contenant les expériences ci-dessus.
Créez de fausses données pour effectuer des expériences sur la complexité d'exécution de votre algorithme d'arbre de décision. Créez un ensemble de données avec N échantillons et les fonctionnalités binaires. Vay M et N pour tracer le temps pris pour: 1) Apprendre l'arbre, 2) Prédire pour les données de test. Comment ces résultats se comparent-ils à la complexité théorique du temps pour la création et la prédiction des arbres de décision. Vous devriez faire la comparaison pour les quatre cas d'arbres de décision. [1 points]
Vous devriez modifier experiments.py
pour le code contenant les expériences ci-dessus.
Vous devez répondre aux questions du sujet (visualisation, analyse de synchronisation, affichage des parcelles) en créant Asst#<task-name>_<Q#>.md
Instructions genrales:
- Affichez vos résultats dans un cahier Jupyter ou un fichier MD. Si vous optez pour l'utilisation d'un fichier MD, vous devez également inclure le code.
- Vous pouvez utiliser la mise en œuvre Scikit-Learn de l'arbre de décision pour la reconnaissance de l'activité humaine.
- Cette affectation est de 20 points et sera réduite à 10 points.