
Human activity recognition is the problem of classifying sequences of data recorded by specialized harnesses or smart phones into known well-defined Human activities.
It is a challenging problem as the large number of observations are produced each second, the temporal nature of the observations, and the lack of a clear way to relate data to known movements increase the challenges.
In this Machine Learning Project, we will create a model for recognition of human activity using the smartphone data.
Letās start with Importing necessary libraries
import pandas as pd import numpy as np import seaborn as sns import matplotlib.pyplot as plt %matplotlib inline import warnings warnings.filterwarnings("ignore")
Download the data sets
ReadingĀ theĀ data
train = pd.read_csv("train.csv") test = pd.read_csv("test.csv")
To CombineĀ both the Ā data frames
train['Data'] = 'Train' test['Data'] = 'Test' both = pd.concat([train, test], axis=0).reset_index(drop=True) both['subject'] = '#' + both['subject'].astype(str)
train.shape, test.shape
#Output
((7352, 564), (2947, 564))
both.head()

both.dtypes.value_counts()
#Output float64 561 object 3 dtype: int64
def basic_details(df): b = pd.DataFrame() b['Missing value'] = df.isnull().sum() b['N unique value'] = df.nunique() b['dtype'] = df.dtypes return b basic_details(both)

activity = both['Activity'] label_counts = activity.value_counts() plt.figure(figsize= (12, 8)) plt.bar(label_counts.index, label_counts)

Data = both['Data'] Subject = both['subject'] train = both.copy() train = train.drop(['Data','subject','Activity'], axis =1)
To Scale the data
# Standard Scaler from sklearn.preprocessing import StandardScaler slc = StandardScaler() train = slc.fit_transform(train) # dimensionality reduction from sklearn.decomposition import PCA pca = PCA(n_components=0.9, random_state=0) train = pca.fit_transform(train)
Splitting the Ā data into training and testing
from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(train, activity, test_size = 0.2, random_state = 0)
TestĀ optionsĀ andĀ evaluationĀ metric
num_folds = 10 seed = 0 scoring = 'accuracy' results = {} accuracy = {}
Activity Recognition Algorithm
# Finalizing the model and comparing the test, predict results from sklearn.neighbors import KNeighborsClassifier from sklearn.metrics import confusion_matrix, accuracy_score, classification_report from sklearn.model_selection import KFold, cross_val_score model = KNeighborsClassifier(algorithm= 'auto', n_neighbors= 8, p= 1, weights= 'distance') _ = cross_val_score(model, X_train, y_train, cv=10, scoring=scoring) results["GScv"] = (_.mean(), _.std()) model.fit(X_train, y_train) y_predict = model.predict(X_test) accuracy["GScv"] = accuracy_score(y_test, y_predict) print(classification_report(y_test, y_predict)) cm= confusion_matrix(y_test, y_predict) sns.heatmap(cm, annot=True)
#Output precision recall f1-score support LAYING 1.00 1.00 1.00 377 SITTING 0.92 0.87 0.90 364 STANDING 0.89 0.93 0.91 390 WALKING 0.96 0.99 0.97 335 WALKING_DOWNSTAIRS 0.99 0.95 0.97 278 WALKING_UPSTAIRS 0.98 0.98 0.98 316 accuracy 0.95 2060 macro avg 0.96 0.95 0.95 2060 weighted avg 0.95 0.95 0.95 2060

GREAT WEBSITE. REALLY HELPFUL.
[ā¦] Human activity recognition is the problem of classifying sequences of data recorded by specialized harnesses or smart phones into known well-defined Human activities. See Complete Project. [ā¦]