HAR (Human Activity Recognition)은 사용자가 수행하는 다양한 활동을 식별하는 기계의 기능을 말합니다. 이러한 시스템/알고리즘에서 획득 한 지식은 관련 장치가 작업 또는 제스처를 식별하고 응답으로 사전 정의 된 작업을 수행하는 많은 응용 프로그램에 통합됩니다.
우리는 가속도계 데이터를 기반으로 인간 활동을 분류하는 데 관심이 있습니다. 우리는 UCI-Har라는 공개적으로 사용 가능한 데이터 세트를 사용할 것입니다. 데이터 세트는 여기에서 다운로드 할 수 있습니다. 참조를 위해 참가자의 가속도계 데이터를 수집하는 저자의 YouTube 비디오도 여기에서 사용할 수 있습니다.
inertial_signals 폴더 내에서 원시 가속도계 데이터를 사용합니다. 제공된 스크립트 인 CombineScript.py
가속도계 데이터를 구성하고 정렬하여 각 범주에 대한 별도의 클래스를 설정하고 참가자 데이터를 이러한 클래스로 컴파일합니다. MakeDataset.py
스크립트는 모든 참가자 데이터를 읽고 단일 데이터 세트를 작성하는 데 사용됩니다. 그런 다음 데이터 세트가 기차, 테스트 및 검증 세트로 분할됩니다. 우리는 50Hz의 샘플링 속도로 인해 초기 500 개의 데이터 샘플로 변환되는 활동의 첫 10 초에 중점을 둡니다.
CombineScript.py
및 MakeDataset.py
UCI 데이터 세트를 포함하는 동일한 폴더에 배치하십시오. 스크립트를 실행하기 전에 폴더로 이동했는지 확인하십시오. 다른 폴더에서 스크립트를 실행하는 경우 스크립트의 경로를 사용하여 작동하도록해야합니다.CombineScript.py
실행하고 UCI 데이터 세트에서 폴더를 테스트하고 트레이닝하는 경로를 제공합니다. 이것은 모든 참가자의 모든 데이터를 포함하는 Combined
라는 폴더를 만듭니다. 이것이 대부분의 데이터 세트가 구성되는 방식입니다. 앞으로 유사한 데이터 세트 구조를 만날 수 있습니다.MakeDataset.py
실행하고 Combined
폴더로가는 경로를 제공하십시오. 이렇게하면 열차, 테스트 및 검증 세트가 포함 된 데이터 세트가 생성됩니다. 이 데이터 세트를 사용하여 모델을 훈련시킬 수 있습니다.Zero-Shot Prompting은 명시 적 훈련 데이터 나 레이블이 붙은 예제없이 텍스트를 생성하거나 작업을 수행 할 수있는 프롬프트 또는 지침 세트와 함께 언어 모델을 제공하는 것입니다. 이 모델은 고품질 텍스트를 생성하거나 프롬프트와 내부 지식만으로 정확하게 작업을 수행 할 것으로 예상됩니다.
소수의 프롬프트는 제로 샷 프롬프트와 유사하지만 특정 작업 또는 데이터 세트와 관련된 제한된 수의 레이블이 붙은 예 또는 프롬프트를 모델에 제공하는 것이 포함됩니다. 그런 다음이 모델은 고품질 텍스트를 생성하거나 몇 가지 레이블이 붙은 예제 및 내부 지식을 기반으로 작업을 정확하게 수행해야합니다.
LLM (Language Model)과 함께 제로 샷 및 소수의 샷을 사용하는 방법을 보여주는 Python 노트북이 제공되었습니다. 노트북의 예제에는 텍스트 기반 작업이 포함되지만 LLM은 광범위한 작업에도 적용될 수 있습니다 (학생들은 여기와 여기에서 읽을 수 있습니다).
쿼리는 기능화 된 가속도계 데이터의 형태로 제공되며 모델은 수행 된 활동을 예측해야합니다.
이 연습 마크는 어떤 숫자에 의존하지 않지만, 따르는 프로세스에 따라 스마트 폰의 Physics Toolbox Suite
과 같은 앱을 사용하여 데이터를 .csv/.txt 형식으로 수집합니다. 최소 15 초의 데이터를 수집하고 가장자리를 다듬어 10 초의 관련 데이터를 얻습니다. 또한 데이터를 녹화하는 동안 자신의 비디오를 녹음하십시오. 이 비디오는 향후 과제에서 필요합니다. 활동 클래스 당 3-5 샘플을 수집하십시오.
Tree/Base.py에서 의사 결정 트리 구현을 완료하십시오. 코드는 Python으로 작성되어야하며 클래스에서 공유하거나 이미 코드에서 가져온 기존 라이브러리를 사용하지 않아야합니다. 의사 결정 트리는 4 가지 사례에 대해 작동해야합니다. i) 개별 기능, 개별 출력; ii) 개별 기능, 실제 출력; iii) 실제 특징, 개별 출력; 실제 기능, 실제 출력. 모델은 실제 입력 만 허용해야합니다 (개별 입력의 경우 속성을 1 인용 인코딩 된 벡터로 변환 할 수 있습니다). 의사 결정 트리는 Entropy 또는 Giniindex를 사용하여 개별 출력 분할 기준으로 InformationGain을 사용할 수 있어야합니다. 의사 결정 트리는 MSE를 실제 출력 분할 기준으로 사용하여 정보를 사용할 수 있어야합니다. 코드는 의사 결정 트리를 플롯/표시 할 수 있어야합니다. [2.5 마크]
다음 파일을 편집해야합니다.
metrics.py
:이 파일에서 성능 메트릭 기능을 완료하십시오.
usage.py
: 솔루션을 확인하려면이 파일을 실행하십시오.
트리 (디렉토리) : 의사 결정 트리 모듈.
base.py
: 의사 결정 트리 클래스를 완료하십시오.utils.py
: 모든 유틸리티 기능을 완료하십시오.__init__.py
: 편집하지 마십시오솔루션을 확인하려면 usage.py를 실행해야합니다.
다음 줄의 코드를 사용하여 데이터 세트를 생성하십시오
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) 위의 데이터 세트에서 의사 결정 트리 의 사용법을 표시하십시오. 데이터의 처음 70%는 훈련 목적으로 사용하고 테스트 목적으로 나머지 30%를 사용해야합니다. 테스트 데이터 세트에서 구현 한 의사 결정 트리의 정확도, 수업 당 정밀도 및 리콜을 표시하십시오. [0.5 마크]
b) 데이터 세트에서 5 배의 교차 검증을 사용하십시오. 중첩 된 교차 검증을 사용하면 나무의 최적 깊이를 찾으십시오. [1 마크]
위의 실험이 포함 된 코드에 대해
classification-exp.py
편집해야합니다.
a) 자동차 효율 문제에 대한 의사 결정 트리의 사용법을 보여줍니다. [0.5 점]
b) Scikit Learn의 의사 결정 트리 모듈과 모델의 성능을 비교하십시오. [0.5 마크]
위의 실험이 포함 된 코드에 대해
auto-efficiency.py
편집해야합니다.
의사 결정 트리 알고리즘의 런타임 복잡성에 대한 실험을 수행하기 위해 가짜 데이터를 작성하십시오. n 샘플과 M 바이너리 기능이있는 데이터 세트를 만듭니다. 1) 트리를 배우기, 2) 테스트 데이터 예측. 이러한 결과는 의사 결정 트리 생성 및 예측을위한 이론적 시간 복잡성과 어떻게 비교됩니까? 의사 결정 트리의 4 가지 사례를 모두 비교해야합니다. [1 마크]
위의 실험이 포함 된 코드에 대해
experiments.py
편집해야합니다.
Asst#<task-name>_<Q#>.md