
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. […]