{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "import os\n", "from glob import glob\n", "from sklearn.ensemble import RandomForestClassifier\n", "\n", "from sklearn.model_selection import train_test_split" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "from ngboost import NGBClassifier\n", "from ngboost.distns import Bernoulli,k_categorical\n", "from ngboost.learners import default_tree_learner" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "from sklearn.metrics import classification_report\n", "from display_results import confusion_matrix" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "df_activity = pd.read_csv(\"activities.csv\")" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "def segmentation(x_data,y,overlap_rate,time_window):\n", " \n", " seg_data = []\n", " overlap = int((1 - overlap_rate)*time_window)\n", " y_segmented_list = []\n", " \n", " for i in range(0,x_data.shape[0],overlap):\n", " seg_data.append(x_data[i:i+time_window])\n", " y_segmented_list.append(y)\n", "\n", " return seg_data,y_segmented_list" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "def handle_missing_values(df):\n", " df['x']=df['x'].replace(0, np.nan)\n", " df['y']=df['y'].replace(0, np.nan)\n", " df['z']=df['z'].replace(0, np.nan)\n", " return df" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [], "source": [ "change_act_id = {2:0, 3:1, 4:2, 6:3, 9:4, 12:5}" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [], "source": [ "def get_act_id(seg_id):\n", " seg = df_activity[df_activity[\"segment_id\"]==seg_id]\n", " activity_id = seg[\"activity_id\"].values\n", " return change_act_id[int(activity_id)]" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [], "source": [ "def load_data(csv_file):\n", "\n", " y_list = []\n", " x_data_list = []\n", "\n", " csv_df = pd.read_csv(csv_file)\n", " csv_df = handle_missing_values(csv_df)\n", " csv_df.dropna(inplace=True)\n", " x_data = csv_df.values\n", " act_id = get_act_id(int(os.path.splitext(os.path.basename(csv_file))[0].replace(\"segment\",\"\")))\n", " \n", " return x_data,act_id" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [], "source": [ "def get_features(x_data):\n", " features = []\n", " for i in range(x_data.shape[1]):\n", " # std\n", " features.append(x_data.T[i].std(ddof=0))\n", " # avg\n", " features.append(np.average(x_data.T[i]))\n", " # max\n", " features.append(np.max(x_data.T[i]))\n", " # min\n", " features.append(np.min(x_data.T[i]))\n", " return features" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [], "source": [ "csv_files = glob(\"train/*\")" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [], "source": [ "X_feature_data_list = []\n", "y_list = []\n", "for csv_file in csv_files:\n", " x,y = load_data(csv_file)\n", " X_feature_data_list.append(get_features(x))\n", " y_list.append(y)" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [], "source": [ "X_train,X_test,y_train,y_test = train_test_split(X_feature_data_list,y_list,test_size=0.3)" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [], "source": [ "model_ml = RandomForestClassifier(n_estimators=500,n_jobs=-1)" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [], "source": [ "model_ml.fit(X_train,y_train)\n", "y_predict = model_ml.predict(X_test)" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " precision recall f1-score support\n", "\n", " 0 0.42 0.83 0.56 6\n", " 1 1.00 0.67 0.80 15\n", " 2 0.67 0.29 0.40 7\n", " 3 0.50 0.33 0.40 6\n", " 4 0.43 0.60 0.50 5\n", " 5 0.67 0.80 0.73 15\n", "\n", " accuracy 0.63 54\n", " macro avg 0.61 0.59 0.56 54\n", "weighted avg 0.69 0.63 0.63 54\n", "\n" ] } ], "source": [ "print(classification_report(y_test,y_predict))" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "None\n" ] } ], "source": [ "print(confusion_matrix(y_test, y_predict))" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[iter 0] loss=1.7464 val_loss=0.0000 scale=0.5000 norm=3.6180\n", "[iter 100] loss=0.5734 val_loss=0.0000 scale=2.0000 norm=4.4797\n", "[iter 200] loss=0.2855 val_loss=0.0000 scale=4.0000 norm=6.6994\n", "[iter 300] loss=0.2065 val_loss=0.0000 scale=2.0000 norm=3.0851\n", "[iter 400] loss=0.1836 val_loss=0.0000 scale=1.0000 norm=1.5061\n" ] }, { "data": { "text/plain": [ "NGBClassifier(Base=DecisionTreeRegressor(ccp_alpha=0.0,\n", " criterion='friedman_mse', max_depth=3,\n", " max_features=None, max_leaf_nodes=None,\n", " min_impurity_decrease=0.0,\n", " min_impurity_split=None,\n", " min_samples_leaf=1,\n", " min_samples_split=2,\n", " min_weight_fraction_leaf=0.0,\n", " presort='deprecated',\n", " random_state=None, splitter='best'),\n", " Dist=.Categorical'>,\n", " Score=, col_sample=1.0,\n", " learning_rate=0.01, minibatch_frac=1.0, n_estimators=500,\n", " natural_gradient=True,\n", " random_state=RandomState(MT19937) at 0x110FAFDB0, tol=0.0001,\n", " verbose=True, verbose_eval=100)" ] }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ngb = NGBClassifier(Dist = k_categorical(6))\n", "ngb.fit(X_train, y_train)" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [], "source": [ "y_predict_ngboost =ngb.predict(X_test)" ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " precision recall f1-score support\n", "\n", " 0 0.50 0.75 0.60 4\n", " 1 0.67 0.62 0.65 16\n", " 2 0.29 0.29 0.29 7\n", " 3 0.17 0.33 0.22 3\n", " 4 0.40 0.40 0.40 5\n", " 5 0.73 0.58 0.65 19\n", "\n", " accuracy 0.54 54\n", " macro avg 0.46 0.50 0.47 54\n", "weighted avg 0.58 0.54 0.55 54\n", "\n" ] } ], "source": [ "print(classification_report(y_predict_ngboost,y_test))" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "confusion_matrix(y_predict_ngboost,y_test)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.5" } }, "nbformat": 4, "nbformat_minor": 2 }