Zuordnung 1
Insgesamt 20 Mark (werden auf 10 Punkte gesenkt)
Menschliche Aktivitätserkennung (HAR)
Die menschliche Aktivitätserkennung (HAR) bezieht sich auf die Fähigkeit von Maschinen, verschiedene von den Benutzern durchgeführte Aktivitäten zu identifizieren. Das von diesen Systemen/Algorithmen erfasste Wissen ist in viele Anwendungen integriert, in denen das zugehörige Gerät es verwendet, um Aktionen oder Gesten zu identifizieren und vordefinierte Aufgaben als Reaktion durchzuführen.
Datensatz
Wir sind daran interessiert, menschliche Aktivitäten basierend auf Beschleunigungsmesserdaten zu klassifizieren. Wir werden einen öffentlich verfügbaren Datensatz namens UCI-Har verwenden. Der Datensatz kann hier heruntergeladen werden. Nur für Ihre Referenz ist auch ein YouTube -Video der Autoren, die die Beschleunigungsmesserdaten des Teilnehmers sammeln, auch hier verfügbar.
Aufgabe 1: Explorationsdatenanalyse (EDA) [3 Markierungen]
Vorverarbeitung
Wir werden die RAW Accelerometer -Daten im Ordner "Inertial_signals" verwenden. Das bereitgestellte Skript CombineScript.py
, organisiert und sortiert Beschleunigungsdaten, erstellt separate Klassen für jede Kategorie und kompiliert Teilnehmerdaten in diese Klassen. MakeDataset.py
Skript wird verwendet, um alle Teilnehmerdaten durchzulesen und einen einzelnen Datensatz zu erstellen. Der Datensatz wird dann in den Zug-, Test- und Validierungssatz aufgeteilt. Wir konzentrieren uns auf die ersten 10 Sekunden der Aktivität, die aufgrund einer Stichprobenrate von 50 Hz zu den ersten 500 Datenproben führen.
- Schritt-1> Platzieren Sie die
CombineScript.py
und MakeDataset.py
in denselben Ordner, der den UCI-Datensatz enthält. Stellen Sie sicher, dass Sie in den Ordner umgezogen sind, bevor Sie die Skripte ausführen. Wenn Sie die Skripte aus einem anderen Ordner ausführen, müssen Sie mit den Pfaden in den Skripten herumspielen, damit es funktioniert. - STEP-2> Ausführen
CombineScript.py
und geben Sie die Pfade zum Testen und Trainer im UCI-Datensatz an. Dadurch wird ein Ordner namens Combined
erstellt, der alle Daten von allen Teilnehmern enthält. So werden die meisten Datensätze organisiert. Sie können in Zukunft ähnliche Datensatzstrukturen begegnen. - STEP-3>
MakeDataset.py
ausführen und den Pfad zum Combined
Ordner geben. Dadurch wird ein Datensatz erstellt, der den Zug-, Test- und Validierungssatz enthält. Sie können diesen Datensatz verwenden, um Ihre Modelle zu trainieren.
Fragen
- Zeichnen Sie die Wellenform für ein Beispieldaten aus jeder Aktivitätsklasse. Können Sie Unterschiede/Ähnlichkeiten zwischen den Aktivitäten erkennen? Sie können eine Nebenhandlung mit 6 Spalten zeichnen, um Unterschiede/Ähnlichkeiten zwischen den Aktivitäten zu zeigen. Denken Sie, dass das Modell die Aktivitäten basierend auf den Daten klassifizieren kann? [0,5 Punkte]
- Denken Sie, wir brauchen ein maschinelles Lernmodell, um zwischen statischen Aktivitäten (Legen, Sitzen, Stehen) und dynamischen Aktivitäten (Walking, Walking_downstairs, Walking_upstairs) zu unterscheiden? Schauen Sie sich die lineare Beschleunigung an $ (ACC_X^2+ACC_Y^2+ACC_Z^2) $ für jede Aktivität und rechtfertigen Sie Ihre Antwort. [0,5 Punkte]
- Visualisieren Sie die Daten mit PCA. [1 Marks]
- Verwenden Sie PCA (Hauptkomponentenanalyse) für die Gesamtbeschleunigung $ (ACC_X^2+ACC_Y^2+ACC_Z^2) $ Um die Beschleunigungs -Timeseries in zwei Merkmale zu komprimieren und ein Streudiagramm zu zeichnen, um verschiedene Aktivitäten zu visualisieren.
- Verwenden Sie als Nächstes TSFEL (eine Featurizer -Bibliothek), um Funktionen zu erstellen (Ihre Wahl, welche Sie für nützlich sind) und dann PCA durchführen, um zwei Funktionen zu erhalten. Zeichnen Sie ein Streudiagramm, um verschiedene Aktivitätenklassen zu visualisieren.
- Verwenden Sie nun die vom Datensatz bereitgestellten Funktionen und führen Sie PCA aus, um zwei Funktionen zu erhalten. Zeichnen Sie ein Streudiagramm, um verschiedene Aktivitätenklassen zu visualisieren.
- Vergleichen Sie die Ergebnisse von PCA auf die Gesamtbeschleunigung, TSFEL und die Datensatzfunktionen. Welche Methode ist Ihrer Meinung nach besser für die Visualisierung der Daten?
- Berechnen Sie die Korrelationsmatrix der von TSFEL erhaltenen Merkmale und im Datensatz bereitgestellt. Identifizieren Sie die Merkmale, die stark miteinander korrelieren. Gibt es redundante Funktionen? [1 Marks]
Aufgabe 2: Entscheidungsbäume für die Erkennung menschlicher Aktivitäten [3 Markierungen]
Fragen
- Verwenden Sie die Sklearn -Bibliothek, um die Entscheidungsstress auszubilden. [1,5 Punkte]
- Trainieren Sie ein Entscheidungsbaummodell mit den RAW Accelerometer -Daten. Melden Sie die Genauigkeit, Präzision, Rückruf und Verwirrung des Modells.
- Trainieren Sie ein Entscheidungsbaummodell unter Verwendung der von TSFEL erhaltenen Merkmale. Melden Sie die Genauigkeit, Präzision, Rückruf und Verwirrung des Modells.
- Trainieren Sie ein Entscheidungsbaummodell anhand der im Datensatz bereitgestellten Funktionen. Melden Sie die Genauigkeit, Präzision, Rückruf und Verwirrung des Modells.
- Vergleichen Sie die Ergebnisse der drei Modelle. Welches Modell ist Ihrer Meinung nach besser?
- Zugentscheidungsbaum mit unterschiedlichen Tiefen (2-8) mit allen oben genannten Methoden. Zeichnen Sie die Genauigkeit des Modells auf Testdaten gegenüber der Tiefe des Baumes. [1 Marks]
- Gibt es Teilnehmer/ Aktivitäten, bei denen das Modell schlecht ist? Wenn ja, warum? [0,5 Mark]
Aufgabe 3: Umkämpfungstechnik für große Sprachmodelle (LLMs) [4 Punkte]
Zero-Shot und wenige Schussanlaufer:
Auf der Aufforderung von Null-Shots beinhaltet die Bereitstellung eines Sprachmodells mit einer Eingabeaufforderung oder einer Reihe von Anweisungen, mit denen es Text generieren oder eine Aufgabe ohne explizite Trainingsdaten oder beschriftete Beispiele ausführen kann. Es wird erwartet, dass das Modell hochwertige Text erzeugt oder die Aufgabe genau ausschließlich auf der Eingabeaufforderung und ihrem internen Wissen ausführt.
Nur wenige Schussaufforderung ähnelt der Aufforderung von Null-Schotten, beinhaltet jedoch die Bereitstellung einer begrenzten Anzahl von Beispielen oder Eingabeaufforderungen, die für die spezifische Aufgabe oder den Datensatz relevant sind. Es wird dann erwartet, dass das Modell hochwertige Text erzeugt oder die Aufgabe genau basierend auf den wenigen beschrifteten Beispielen und ihrem internen Wissen ausführt.
Aufgabenbeschreibung:
Sie wurden mit einem Python-Notizbuch zur Verfügung gestellt, das demonstriert, wie man mit einem Sprachmodell (LLM) null-shot- und wenige Shot-Aufforderung verwendet wird. Das Beispiel im Notizbuch umfasst textbasierte Aufgaben, aber LLMs können auch auf eine Vielzahl von Aufgaben angewendet werden (Schüler, die am Erlernen von mehr Lesen hier und hier lesen können).
Abfragen werden in Form von geschützten Beschleunigungsmesserdaten bereitgestellt, und das Modell sollte die durchgeführte Aktivität vorhersagen.
- Null -Shot -Lernen : Das Modell sollte in der Lage sein, die Aktivität auf der Grundlage der Beschleunigungsmesserdaten ohne explizite Trainingsdaten oder beschriftete Beispiele vorherzusagen können.
- Wenige Schusslernen : Das Modell sollte auch in der Lage sein, die Aktivität auf der Grundlage einer begrenzten Anzahl von beschrifteten Beispielen oder Eingabeaufforderungen vorherzusagen können, die für die spezifische Aufgabe relevant sind.
Fragen
- Zeigen Sie, wie man Null-Shot-Lernen und wenige Lernen verwendet, um menschliche Aktivitäten basierend auf den featurisierten Beschleunigungsmesserdaten zu klassifizieren. Qualitativ die Leistung von wenigen Schusslernen mit Null-Shot-Lernen demonstrieren. Welche Methode funktioniert besser? Warum? [1 Marks]
- Vergleichen Sie quantitativ die Genauigkeit von wenigen Lernen mit Schuss mit Entscheidungsbäumen (Sie können eine Teilmenge des Testsatzes verwenden, wenn Sie Probleme beschränken). Welche Methode funktioniert besser? Warum? [1 Marks]
- Was sind die Einschränkungen des Null-Shot-Lernens und des Lernens von wenigen Schäden im Zusammenhang mit der Klassifizierung menschlicher Aktivitäten auf der Grundlage von Featurized Accelerometer-Daten? [1 Marks]
- Was klassifiziert das Modell, wenn er Eingaben von einer völlig neuen Aktivität gegeben hat, die es zuvor noch nicht gesehen hat? [0,5 Mark]
- Testen Sie das Modell mit zufälligen Daten (die sicherstellen, dass die Daten die gleichen Abmessungen und den gleichen Bereich wie die vorherige Eingabe haben) und melden Sie die Ergebnisse. [0,5 Mark]
Aufgabe 4: Datenerfassung in der Wildnis [4 Punkte]
Aufgabenbeschreibung
Für diese Übungsmarken hängt nicht von den Zahlen ab, die Sie erhalten, sondern von dem von Ihnen folgenden Vorgang. Verwenden Sie Apps wie Physics Toolbox Suite
von Ihrem Smartphone aus, um Ihre Daten im .csv/.txt -Format zu sammeln. Stellen Sie sicher, dass mindestens 15 Sekunden Daten gesammelt werden, und die Kanten abschneiden, um 10 Sekunden relevanter Daten zu erhalten. Nehmen Sie auch ein Video von sich selbst auf, während Sie Daten aufzeichnen. Dieses Video wird in einigen zukünftigen Aufgaben erforderlich sein. Sammeln Sie 3-5 Proben pro Aktivitätsklasse.
Dinge, für die man sich kümmern muss:
- Stellen Sie sicher, dass das Telefon für alle Aktivitäten in die gleiche Position gebracht wird.
- Stellen Sie sicher, dass sich das Telefon während der Aktivität in der gleichen Ausrichtung befindet, wie die Ausrichtung die gesammelten Daten zu ändern und die Leistung des Modells zu beeinflussen.
- Stellen Sie sicher, dass Sie mindestens 10 Daten pro Datei für das Training haben. Wenn die Daten bei 50 Hz gesammelt werden, haben Sie 500 Datenproben.
Fragen
- Verwenden Sie das auf dem UCI-HAR-Datensatz trainierte Entscheidungsbaummodell, um die von Ihnen durchgeführten Aktivitäten vorherzusagen. Melden Sie die Genauigkeit, Präzision, Rückruf und Verwirrung des Modells. Sie haben drei Versionen des UCI -Datensatzes. Wählen Sie aus, welche Version verwendet werden soll, und stellen Sie sicher, dass Ihre Testdaten Ihren Trainingsdaten ähnlich sind. Wie hat sich das Modell entwickelt? [1 Marks]
- Verwenden Sie die von Ihnen gesammelten Daten, um die von Ihnen durchgeführten Aktivitäten vorherzusagen. Entscheiden Sie, ob Sie die Vorverarbeitung und Merkmale anwenden und falls ja, wählen Sie die entsprechenden Methoden. Wie hat sich das Modell entwickelt? [1 Marks]
- Verwenden Sie die Wenig-Shot-Aufgabe-Methode mithilfe des UCI-HAR-Datensatzes, um die von Ihnen durchgeführten Aktivitäten vorherzusagen. Stellen Sie sicher, dass sowohl Ihre Beispiele als auch die Testabfrage eine ähnliche Vorverarbeitung unterzogen werden. Wie hat sich das Modell entwickelt? [1 Marks]
- Verwenden Sie die Wenig-Shot-Anlaufmethode anhand der von Ihnen gesammelten Daten, um die von Ihnen durchgeführten Aktivitäten vorherzusagen. Nach Bedarf ordnungsgemäße Verarbeitungsmethoden anwenden. Wie hat sich das Modell entwickelt? [1 Marks]
NOTIZ :
- Um den API -Schlüssel zu erhalten, gehen Sie in die GroqCloud Developer Console unter https://console.groq.com/login. Befolgen Sie den QuickStart -Handbuch, um Ihren API -Schlüssel zu erhalten.
- Teilen Sie Ihren API -Schlüssel nicht mit jemandem oder machen Sie ihn öffentlich oder laden Sie sie in ein öffentliches Repository hoch, z. B. für diese Aufgabe. Wenn der Schlüssel im Code gefunden wird, werden Sie mit einem Abzug von 1,0 Punkten bestraft.
- Es wird empfohlen, entweder eine Markdown -Datei (.MD) zu schreiben oder ein Python -Notebook (.IPYNB) zu verwenden, um Ihre Argumentation, Ergebnisse und Ergebnisse zu demonstrieren.
Entscheidungsbaumumsetzung [6 Markierungen]
Vervollständigen Sie die Entscheidungsbaumumsetzung in Baum/Basis.py. Der Code sollte in Python geschrieben werden und nicht vorhandene Bibliotheken als die in der Klasse freigegebenen oder bereits im Code importierten Bibliotheken verwenden. Ihr Entscheidungsbaum sollte für vier Fälle funktionieren: i) diskrete Merkmale, diskrete Ausgabe; ii) diskrete Merkmale, reale Ausgabe; iii) reale Merkmale, diskrete Ausgabe; Echte Funktionen, echte Ausgabe. Ihr Modell sollte nur echte Eingänge akzeptieren (für diskrete Eingänge können Sie die Attribute in einhot codierte Vektoren umwandeln). Ihr Entscheidungsbaum sollte in der Lage sein, InformationGain mit Entropie oder GiniIndex als Kriterien für die Aufteilung für diskrete Ausgabe zu verwenden. Ihr Entscheidungsbaum sollte in der Lage sein, InformationGain mit MSE als Kriterien für die Aufteilung für die echte Ausgabe zu verwenden. Ihr Code sollte auch in der Lage sein, den Entscheidungsbaum zu zeichnen/anzuzeigen. [2,5 Punkte]
Sie sollten die folgenden Dateien bearbeiten.
metrics.py
: Füllen Sie die Leistungsmetriken in dieser Datei aus.
usage.py
: Führen Sie diese Datei aus, um Ihre Lösungen zu überprüfen.
Baum (Verzeichnis): Modul für Entscheidungsbaum.
-
base.py
: Komplette Entscheidungsbaumklasse. -
utils.py
: Vervollständigen Sie alle Dienstprogrammfunktionen. -
__init__.py
: Bearbeiten Sie dies nicht
Sie sollten useage.py ausführen, um Ihre Lösungen zu überprüfen.
Generieren Sie Ihren Datensatz mit den folgenden Codezeilen
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) Zeigen Sie die Verwendung Ihres Entscheidungsbaums auf dem obigen Datensatz an. Die ersten 70% der Daten sollten für Trainingszwecke und die verbleibenden 30% für Testzwecke verwendet werden. Zeigen Sie die Genauigkeit, die Präzision und den Rückruf des Entscheidungsbaums, den Sie im Testdatensatz implementiert haben. [0,5 Mark]
b) Verwenden Sie die 5-fache Kreuzvalidierung im Datensatz. Mit verschachtelter Kreuzvalidierung die optimale Tiefe des Baumes finden. [1 Mark]
Sie sollten classification-exp.py
für den Code bearbeiten, der die obigen Experimente enthält.
a) Zeigen Sie die Verwendung Ihres Entscheidungsbaums für das Problem der Automobileffizienz. [0,5 Punkte]
b) Vergleichen Sie die Leistung Ihres Modells mit dem Entscheidungsbaummodul von Scikit Learn. [0,5 Punkte]
Sie sollten auto-efficiency.py
bearbeiten.py für den Code, der die obigen Experimente enthält.
Erstellen Sie einige gefälschte Daten, um einige Experimente zur Laufzeitkomplexität Ihres Entscheidungsbaumalgorithmus durchzuführen. Erstellen Sie einen Datensatz mit N -Samples und M -Binärfunktionen. Variieren Sie m und n, um die Zeit zu zeichnen, die für: 1) den Baum lernen, 2) Vorhersage für Testdaten. Wie sind diese Ergebnisse mit der theoretischen Zeitkomplexität für die Erstellung und Vorhersage von Entscheidungenbäumen verglichen? Sie sollten den Vergleich für alle vier Fälle von Entscheidungsbäumen durchführen. [1 Marks]
Sie sollten experiments.py
bearbeiten.py für den Code, der die obigen Experimente enthält.
Sie müssen die Themenfragen (Visualisierung, Zeitanalyse, Anzeigen von Diagrammen) beantworten, indem Sie Asst#<task-name>_<Q#>.md
erstellen
Genralanweisungen:
- Zeigen Sie Ihre Ergebnisse in einem Jupyter -Notizbuch oder einer MD -Datei an. Wenn Sie sich für die Verwendung einer MD -Datei entscheiden, sollten Sie auch den Code einfügen.
- Sie können die Scikit-Learn-Implementierung des Entscheidungsbaums für die Erkennung menschlicher Aktivitäten verwenden.
- Diese Aufgabe beträgt 20 Punkte und wird auf 10 Mark skaliert.