├── README.md ├── Spark ML Logistic Regression.ipynb ├── SparkML GBT.ipynb ├── AssignmentML1.ipynb ├── SparkML GBT Grid Search.ipynb ├── SparkML Linear Regression.ipynb ├── AssignmentML2.ipynb ├── AssignmentML3.ipynb ├── AssignmentML4.ipynb ├── ETL Exercise .ipynb └── SparkML Support Vector Machine.ipynb /README.md: -------------------------------------------------------------------------------- 1 | # Advanced-Machine-Learning-and-Signal-Processing-IBM 2 | Advanced Machine Learning and Signal Processing IBM 3 | -------------------------------------------------------------------------------- /Spark ML Logistic Regression.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat_minor": 1, 3 | "cells": [ 4 | { 5 | "execution_count": 1, 6 | "cell_type": "code", 7 | "metadata": {}, 8 | "outputs": [ 9 | { 10 | "output_type": "stream", 11 | "name": "stdout", 12 | "text": "Waiting for a Spark session to start...\nSpark Initialization Done! ApplicationId = app-20190903091321-0003\nKERNEL_ID = f1ba51b4-1b5b-47c8-abb0-07567c8b35db\n" 13 | } 14 | ], 15 | "source": "# The code was removed by Watson Studio for sharing." 16 | }, 17 | { 18 | "execution_count": 2, 19 | "cell_type": "code", 20 | "metadata": {}, 21 | "outputs": [], 22 | "source": "splits = df.randomSplit([0.8, 0.2])\ndf_train = splits[0]\ndf_test = splits[1]" 23 | }, 24 | { 25 | "execution_count": 3, 26 | "cell_type": "code", 27 | "metadata": {}, 28 | "outputs": [], 29 | "source": "from pyspark.ml.feature import StringIndexer, OneHotEncoder\nfrom pyspark.ml.linalg import Vectors\nfrom pyspark.ml.feature import VectorAssembler\nfrom pyspark.ml.feature import Normalizer\n\n\nindexer = StringIndexer(inputCol=\"class\", outputCol=\"label\")\nvectorAssembler = VectorAssembler(inputCols=[\"x\",\"y\",\"z\"],outputCol=\"features\")\nnormalizer = Normalizer(inputCol=\"features\", outputCol=\"features_norm\", p=1.0)" 30 | }, 31 | { 32 | "execution_count": 4, 33 | "cell_type": "code", 34 | "metadata": {}, 35 | "outputs": [], 36 | "source": "from pyspark.ml.classification import LogisticRegression\n\nlr = LogisticRegression(maxIter=10, regParam=0.3, elasticNetParam=0.8)" 37 | }, 38 | { 39 | "execution_count": 5, 40 | "cell_type": "code", 41 | "metadata": {}, 42 | "outputs": [], 43 | "source": "from pyspark.ml import Pipeline\npipeline = Pipeline(stages=[indexer, vectorAssembler, normalizer,lr])" 44 | }, 45 | { 46 | "execution_count": 6, 47 | "cell_type": "code", 48 | "metadata": {}, 49 | "outputs": [], 50 | "source": "model = pipeline.fit(df_train)" 51 | }, 52 | { 53 | "execution_count": 7, 54 | "cell_type": "code", 55 | "metadata": {}, 56 | "outputs": [], 57 | "source": "prediction = model.transform(df_train)" 58 | }, 59 | { 60 | "execution_count": 8, 61 | "cell_type": "code", 62 | "metadata": {}, 63 | "outputs": [ 64 | { 65 | "output_type": "stream", 66 | "name": "stdout", 67 | "text": "root\n |-- x: integer (nullable = true)\n |-- y: integer (nullable = true)\n |-- z: integer (nullable = true)\n |-- source: string (nullable = true)\n |-- class: string (nullable = true)\n |-- label: double (nullable = false)\n |-- features: vector (nullable = true)\n |-- features_norm: vector (nullable = true)\n |-- rawPrediction: vector (nullable = true)\n |-- probability: vector (nullable = true)\n |-- prediction: double (nullable = false)\n\n" 68 | } 69 | ], 70 | "source": "prediction.printSchema()" 71 | }, 72 | { 73 | "execution_count": 9, 74 | "cell_type": "code", 75 | "metadata": {}, 76 | "outputs": [ 77 | { 78 | "execution_count": 9, 79 | "metadata": {}, 80 | "data": { 81 | "text/plain": "0.1293416049064505" 82 | }, 83 | "output_type": "execute_result" 84 | } 85 | ], 86 | "source": "from pyspark.ml.evaluation import MulticlassClassificationEvaluator\nbinEval = MulticlassClassificationEvaluator().setMetricName(\"accuracy\") .setPredictionCol(\"prediction\").setLabelCol(\"label\")\nbinEval.evaluate(prediction) " 87 | }, 88 | { 89 | "execution_count": 10, 90 | "cell_type": "code", 91 | "metadata": {}, 92 | "outputs": [], 93 | "source": "prediction = model.transform(df_test)" 94 | }, 95 | { 96 | "execution_count": 11, 97 | "cell_type": "code", 98 | "metadata": {}, 99 | "outputs": [ 100 | { 101 | "execution_count": 11, 102 | "metadata": {}, 103 | "data": { 104 | "text/plain": "0.12903906777752758" 105 | }, 106 | "output_type": "execute_result" 107 | } 108 | ], 109 | "source": "binEval.evaluate(prediction) " 110 | } 111 | ], 112 | "metadata": { 113 | "kernelspec": { 114 | "display_name": "Python 3.6 with Spark", 115 | "name": "python36", 116 | "language": "python3" 117 | }, 118 | "language_info": { 119 | "mimetype": "text/x-python", 120 | "nbconvert_exporter": "python", 121 | "version": "3.6.8", 122 | "name": "python", 123 | "file_extension": ".py", 124 | "pygments_lexer": "ipython3", 125 | "codemirror_mode": { 126 | "version": 3, 127 | "name": "ipython" 128 | } 129 | } 130 | }, 131 | "nbformat": 4 132 | } -------------------------------------------------------------------------------- /SparkML GBT.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat_minor": 1, 3 | "cells": [ 4 | { 5 | "source": "import ibmos2spark\n\n# @hidden_cell\ncredentials = {\n 'endpoint': 'https://s3-api.us-geo.objectstorage.service.networklayer.com',\n 'api_key': 'iTfSE_YVE6zqnxjd1oK0E37R2aVYY4dFhXFFCljE1AcJ',\n 'service_id': 'iam-ServiceId-d4b06e46-293a-4417-b76c-2f16076a9353',\n 'iam_service_endpoint': 'https://iam.ng.bluemix.net/oidc/token'}\n\nconfiguration_name = 'os_b0f1407510994fd1b793b85137baafb8_configs'\ncos = ibmos2spark.CloudObjectStorage(sc, credentials, configuration_name, 'bluemix_cos')\n\nfrom pyspark.sql import SparkSession\nspark = SparkSession.builder.getOrCreate()\n# Since JSON data can be semi-structured and contain additional metadata, it is possible that you might face issues with the DataFrame layout.\n# Please read the documentation of 'SparkSession.read()' to learn more about the possibilities to adjust the data loading.\n# PySpark documentation: http://spark.apache.org/docs/2.0.2/api/python/pyspark.sql.html#pyspark.sql.DataFrameReader.json\n\n\ndf = spark.read.parquet(cos.url('hmp.parquet', 'courseraml-donotdelete-pr-qve0ttzezdeodc'))", 6 | "cell_type": "code", 7 | "execution_count": 3, 8 | "outputs": [], 9 | "metadata": {} 10 | }, 11 | { 12 | "source": "df.createOrReplaceTempView('df')\ndf_two_class = spark.sql(\"select * from df where class in ('Use_telephone','Standup_chair')\")", 13 | "cell_type": "code", 14 | "execution_count": 4, 15 | "outputs": [], 16 | "metadata": {} 17 | }, 18 | { 19 | "source": "splits = df_two_class.randomSplit([0.8, 0.2])\ndf_train = splits[0]\ndf_test = splits[1]", 20 | "cell_type": "code", 21 | "execution_count": 5, 22 | "outputs": [], 23 | "metadata": {} 24 | }, 25 | { 26 | "source": "from pyspark.ml.feature import StringIndexer, OneHotEncoder\nfrom pyspark.ml.linalg import Vectors\nfrom pyspark.ml.feature import VectorAssembler\nfrom pyspark.ml.feature import Normalizer\n\n\nindexer = StringIndexer(inputCol=\"class\", outputCol=\"label\")\n\nvectorAssembler = VectorAssembler(inputCols=[\"x\",\"y\",\"z\"],\n outputCol=\"features\")\n\nnormalizer = Normalizer(inputCol=\"features\", outputCol=\"features_norm\", p=1.0)", 27 | "cell_type": "code", 28 | "execution_count": 10, 29 | "outputs": [], 30 | "metadata": {} 31 | }, 32 | { 33 | "source": "from pyspark.ml.classification import GBTClassifier\n\ngbt = GBTClassifier(labelCol=\"label\", featuresCol=\"features\", maxIter=10)", 34 | "cell_type": "code", 35 | "execution_count": 11, 36 | "outputs": [], 37 | "metadata": {} 38 | }, 39 | { 40 | "source": "from pyspark.ml import Pipeline\npipeline = Pipeline(stages=[indexer, vectorAssembler, normalizer,gbt])", 41 | "cell_type": "code", 42 | "execution_count": 14, 43 | "outputs": [], 44 | "metadata": {} 45 | }, 46 | { 47 | "source": "model = pipeline.fit(df_train)", 48 | "cell_type": "code", 49 | "execution_count": 13, 50 | "outputs": [], 51 | "metadata": {} 52 | }, 53 | { 54 | "source": "prediction = model.transform(df_train)", 55 | "cell_type": "code", 56 | "execution_count": 15, 57 | "outputs": [], 58 | "metadata": {} 59 | }, 60 | { 61 | "source": "from pyspark.ml.evaluation import MulticlassClassificationEvaluator\nbinEval = MulticlassClassificationEvaluator().setMetricName(\"accuracy\") .setPredictionCol(\"prediction\").setLabelCol(\"label\")\n \nbinEval.evaluate(prediction) ", 62 | "cell_type": "code", 63 | "execution_count": 16, 64 | "outputs": [ 65 | { 66 | "output_type": "execute_result", 67 | "metadata": {}, 68 | "data": { 69 | "text/plain": "0.912288266091777" 70 | }, 71 | "execution_count": 16 72 | } 73 | ], 74 | "metadata": {} 75 | }, 76 | { 77 | "source": "prediction = model.transform(df_test)", 78 | "cell_type": "code", 79 | "execution_count": 17, 80 | "outputs": [], 81 | "metadata": {} 82 | }, 83 | { 84 | "source": "binEval.evaluate(prediction) ", 85 | "cell_type": "code", 86 | "execution_count": 19, 87 | "outputs": [ 88 | { 89 | "output_type": "execute_result", 90 | "metadata": {}, 91 | "data": { 92 | "text/plain": "0.9024718551150269" 93 | }, 94 | "execution_count": 19 95 | } 96 | ], 97 | "metadata": {} 98 | } 99 | ], 100 | "nbformat": 4, 101 | "metadata": { 102 | "kernelspec": { 103 | "display_name": "Python 3.6 with Spark", 104 | "name": "python36", 105 | "language": "python3" 106 | }, 107 | "language_info": { 108 | "mimetype": "text/x-python", 109 | "nbconvert_exporter": "python", 110 | "version": "3.6.8", 111 | "name": "python", 112 | "pygments_lexer": "ipython3", 113 | "file_extension": ".py", 114 | "codemirror_mode": { 115 | "version": 3, 116 | "name": "ipython" 117 | } 118 | } 119 | } 120 | } -------------------------------------------------------------------------------- /AssignmentML1.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat_minor": 1, 3 | "cells": [ 4 | { 5 | "source": "This is the first assignment for the Coursera course \"Advanced Machine Learning and Signal Processing\"\n\nJust execute all cells one after the other and you are done - just note that in the last one you have to update your email address (the one you've used for coursera) and obtain a submission token, you get this from the programming assignment directly on coursera.", 6 | "cell_type": "markdown", 7 | "metadata": {} 8 | }, 9 | { 10 | "execution_count": 1, 11 | "cell_type": "code", 12 | "metadata": {}, 13 | "outputs": [ 14 | { 15 | "output_type": "stream", 16 | "name": "stdout", 17 | "text": "Waiting for a Spark session to start...\nSpark Initialization Done! ApplicationId = app-20190831122534-0002\nKERNEL_ID = c4fa93e1-e6bd-4b47-bf24-52d309b7e5e1\n--2019-08-31 12:25:37-- https://github.com/IBM/coursera/raw/master/coursera_ml/a2.parquet\nResolving github.com (github.com)... 140.82.113.3\nConnecting to github.com (github.com)|140.82.113.3|:443... connected.\nHTTP request sent, awaiting response... 302 Found\nLocation: https://raw.githubusercontent.com/IBM/coursera/master/coursera_ml/a2.parquet [following]\n--2019-08-31 12:25:37-- https://raw.githubusercontent.com/IBM/coursera/master/coursera_ml/a2.parquet\nResolving raw.githubusercontent.com (raw.githubusercontent.com)... 199.232.8.133\nConnecting to raw.githubusercontent.com (raw.githubusercontent.com)|199.232.8.133|:443... connected.\nHTTP request sent, awaiting response... 200 OK\nLength: 59032 (58K) [application/octet-stream]\nSaving to: 'a2.parquet.2'\n\na2.parquet.2 100%[===================>] 57.65K --.-KB/s in 0.002s \n\n2019-08-31 12:25:37 (30.0 MB/s) - 'a2.parquet.2' saved [59032/59032]\n\n" 18 | } 19 | ], 20 | "source": "!wget https://github.com/IBM/coursera/raw/master/coursera_ml/a2.parquet" 21 | }, 22 | { 23 | "execution_count": 2, 24 | "cell_type": "code", 25 | "metadata": {}, 26 | "outputs": [ 27 | { 28 | "output_type": "stream", 29 | "name": "stdout", 30 | "text": "+-----+-----------+-------------------+-------------------+-------------------+\n|CLASS| SENSORID| X| Y| Z|\n+-----+-----------+-------------------+-------------------+-------------------+\n| 0| 26| 380.66434005495194| -139.3470983812975|-247.93697521077704|\n| 0| 29| 104.74324299209692| -32.27421440203938|-25.105013725863852|\n| 0| 8589934658| 118.11469236129976| 45.916682927433534| -87.97203782706572|\n| 0|34359738398| 246.55394030642543|-0.6122810693132044|-398.18662513951506|\n| 0|17179869241|-190.32584900181487| 234.7849657520335|-206.34483804019288|\n| 0|25769803830| 178.62396382387422| -47.07529438881511| 84.38310769821979|\n| 0|25769803831| 85.03128805189493|-4.3024316644854546|-1.1841857567516714|\n| 0|34359738411| 26.786262674736566| -46.33193951911338| 20.880756008396055|\n| 0| 8589934592|-16.203752396859194| 51.080957032176954| -96.80526656416971|\n| 0|25769803852| 47.2048142440404| -78.2950899652916| 181.99604091494786|\n| 0|34359738369| 15.608872398939273| -79.90322809181754| 69.62150711098005|\n| 0| 19|-4.8281721129789315| -67.38050508399905| 221.24876396496404|\n| 0| 54| -98.40725712852762|-19.989364074314732| -302.695196085276|\n| 0|17179869313| 22.835845394816594| 17.1633660118843| 32.877914832011385|\n| 0|34359738454| 84.20178070080324| -32.81572075916947| -48.63517643958031|\n| 0| 0| 56.54732521345129| -7.980106018032676| 95.05162719436447|\n| 0|17179869201| -57.6008655247749| 5.135393798773895| 236.99158698947267|\n| 0|17179869308| -65.59264738389012| -48.92660057215126| -61.58970715383383|\n| 0|25769803790| 34.82337351291005| 9.483542084393937| 197.6066372962772|\n| 0|25769803825| 39.80573823439121|-0.7955236412785212| -79.66652640650325|\n+-----+-----------+-------------------+-------------------+-------------------+\nonly showing top 20 rows\n\n" 31 | } 32 | ], 33 | "source": "df=spark.read.load('a2.parquet')\n\ndf.createOrReplaceTempView(\"df\")\nspark.sql(\"SELECT * from df\").show()\n" 34 | }, 35 | { 36 | "execution_count": 3, 37 | "cell_type": "code", 38 | "metadata": {}, 39 | "outputs": [], 40 | "source": "!rm -Rf a2_m1.json" 41 | }, 42 | { 43 | "execution_count": 4, 44 | "cell_type": "code", 45 | "metadata": {}, 46 | "outputs": [], 47 | "source": "df = df.repartition(1)\ndf.write.json('a2_m1.json')" 48 | }, 49 | { 50 | "execution_count": 5, 51 | "cell_type": "code", 52 | "metadata": {}, 53 | "outputs": [ 54 | { 55 | "output_type": "stream", 56 | "name": "stdout", 57 | "text": "--2019-08-31 12:25:58-- https://raw.githubusercontent.com/IBM/coursera/master/rklib.py\nResolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.48.133\nConnecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.48.133|:443... connected.\nHTTP request sent, awaiting response... 200 OK\nLength: 2540 (2.5K) [text/plain]\nSaving to: 'rklib.py'\n\nrklib.py 100%[===================>] 2.48K --.-KB/s in 0s \n\n2019-08-31 12:25:58 (73.7 MB/s) - 'rklib.py' saved [2540/2540]\n\n" 58 | } 59 | ], 60 | "source": "!rm -f rklib.py\n!wget https://raw.githubusercontent.com/IBM/coursera/master/rklib.py" 61 | }, 62 | { 63 | "execution_count": 6, 64 | "cell_type": "code", 65 | "metadata": {}, 66 | "outputs": [], 67 | "source": "import zipfile\n\ndef zipdir(path, ziph):\n for root, dirs, files in os.walk(path):\n for file in files:\n ziph.write(os.path.join(root, file))\n\nzipf = zipfile.ZipFile('a2_m1.json.zip', 'w', zipfile.ZIP_DEFLATED)\nzipdir('a2_m1.json', zipf)\nzipf.close()" 68 | }, 69 | { 70 | "execution_count": 7, 71 | "cell_type": "code", 72 | "metadata": {}, 73 | "outputs": [], 74 | "source": "!base64 a2_m1.json.zip > a2_m1.json.zip.base64" 75 | }, 76 | { 77 | "execution_count": 9, 78 | "cell_type": "code", 79 | "metadata": {}, 80 | "outputs": [ 81 | { 82 | "output_type": "stream", 83 | "name": "stdout", 84 | "text": "Submission successful, please check on the coursera grader page for the status\n-------------------------\n{\"elements\":[{\"itemId\":\"O8C69\",\"id\":\"f_F-qCtuEei_fRLwaVDk3g~O8C69~gcz34MvqEemwXg5NLafzvA\",\"courseId\":\"f_F-qCtuEei_fRLwaVDk3g\"}],\"paging\":{},\"linked\":{}}\n-------------------------\n" 85 | } 86 | ], 87 | "source": "from rklib import submit\nkey = \"1injH2F0EeiLlRJ3eJKoXA\"\npart = \"wNLDt\"\nemail = \"shriganesh.patel@gmail.com\"\nsecret = \"y501QqIPXG8byF7N\"\n\nwith open('a2_m1.json.zip.base64', 'r') as myfile:\n data=myfile.read()\nsubmit(email, secret, key, part, [part], data)" 88 | }, 89 | { 90 | "execution_count": null, 91 | "cell_type": "code", 92 | "metadata": {}, 93 | "outputs": [], 94 | "source": "" 95 | } 96 | ], 97 | "metadata": { 98 | "kernelspec": { 99 | "display_name": "Python 3.6 with Spark", 100 | "name": "python36", 101 | "language": "python3" 102 | }, 103 | "language_info": { 104 | "mimetype": "text/x-python", 105 | "nbconvert_exporter": "python", 106 | "version": "3.6.8", 107 | "name": "python", 108 | "file_extension": ".py", 109 | "pygments_lexer": "ipython3", 110 | "codemirror_mode": { 111 | "version": 3, 112 | "name": "ipython" 113 | } 114 | } 115 | }, 116 | "nbformat": 4 117 | } -------------------------------------------------------------------------------- /SparkML GBT Grid Search.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat_minor": 1, 3 | "cells": [ 4 | { 5 | "execution_count": 1, 6 | "cell_type": "code", 7 | "metadata": {}, 8 | "outputs": [ 9 | { 10 | "output_type": "stream", 11 | "name": "stdout", 12 | "text": "Waiting for a Spark session to start...\nSpark Initialization Done! ApplicationId = app-20190906073242-0001\nKERNEL_ID = c41fa2d3-7578-4c35-91e0-ec025ee323e5\n" 13 | } 14 | ], 15 | "source": "# The code was removed by Watson Studio for sharing." 16 | }, 17 | { 18 | "execution_count": 2, 19 | "cell_type": "code", 20 | "metadata": {}, 21 | "outputs": [], 22 | "source": "df.createOrReplaceTempView('df')\ndf_two_class = spark.sql(\"select * from df where class in ('Use_telephone','Standup_chair')\")" 23 | }, 24 | { 25 | "execution_count": 3, 26 | "cell_type": "code", 27 | "metadata": {}, 28 | "outputs": [], 29 | "source": "splits = df_two_class.randomSplit([0.8, 0.2])\ndf_train = splits[0]\ndf_test = splits[1]" 30 | }, 31 | { 32 | "execution_count": 4, 33 | "cell_type": "code", 34 | "metadata": {}, 35 | "outputs": [], 36 | "source": "from pyspark.ml.feature import StringIndexer, OneHotEncoder\nfrom pyspark.ml.linalg import Vectors\nfrom pyspark.ml.feature import VectorAssembler\nfrom pyspark.ml.feature import Normalizer\n\n\nindexer = StringIndexer(inputCol=\"class\", outputCol=\"label\")\nvectorAssembler = VectorAssembler(inputCols=[\"x\",\"y\",\"z\"],outputCol=\"features\")\nnormalizer = Normalizer(inputCol=\"features\", outputCol=\"features_norm\", p=1.0)" 37 | }, 38 | { 39 | "execution_count": 5, 40 | "cell_type": "code", 41 | "metadata": {}, 42 | "outputs": [], 43 | "source": "from pyspark.ml.classification import GBTClassifier\ngbt = GBTClassifier(labelCol=\"label\", featuresCol=\"features\", maxIter=10)" 44 | }, 45 | { 46 | "execution_count": 6, 47 | "cell_type": "code", 48 | "metadata": {}, 49 | "outputs": [], 50 | "source": "from pyspark.ml import Pipeline\npipeline = Pipeline(stages=[indexer, vectorAssembler, normalizer,gbt])" 51 | }, 52 | { 53 | "execution_count": 8, 54 | "cell_type": "code", 55 | "metadata": {}, 56 | "outputs": [ 57 | { 58 | "output_type": "stream", 59 | "name": "stdout", 60 | "text": "CPU times: user 108 ms, sys: 52 ms, total: 160 ms\nWall time: 25.3 s\n" 61 | } 62 | ], 63 | "source": "%%time\nmodel = pipeline.fit(df_train)" 64 | }, 65 | { 66 | "execution_count": 9, 67 | "cell_type": "code", 68 | "metadata": {}, 69 | "outputs": [], 70 | "source": "prediction = model.transform(df_train)" 71 | }, 72 | { 73 | "execution_count": 10, 74 | "cell_type": "code", 75 | "metadata": {}, 76 | "outputs": [ 77 | { 78 | "execution_count": 10, 79 | "metadata": {}, 80 | "data": { 81 | "text/plain": "0.9107966684212155" 82 | }, 83 | "output_type": "execute_result" 84 | } 85 | ], 86 | "source": "from pyspark.ml.evaluation import MulticlassClassificationEvaluator\nbinEval = MulticlassClassificationEvaluator().setMetricName(\"accuracy\") .setPredictionCol(\"prediction\").setLabelCol(\"label\")\nbinEval.evaluate(prediction) " 87 | }, 88 | { 89 | "execution_count": 11, 90 | "cell_type": "code", 91 | "metadata": {}, 92 | "outputs": [], 93 | "source": "prediction = model.transform(df_test)" 94 | }, 95 | { 96 | "execution_count": 12, 97 | "cell_type": "code", 98 | "metadata": {}, 99 | "outputs": [ 100 | { 101 | "execution_count": 12, 102 | "metadata": {}, 103 | "data": { 104 | "text/plain": "0.9085680047932894" 105 | }, 106 | "output_type": "execute_result" 107 | } 108 | ], 109 | "source": "binEval.evaluate(prediction) " 110 | }, 111 | { 112 | "execution_count": 13, 113 | "cell_type": "code", 114 | "metadata": {}, 115 | "outputs": [], 116 | "source": "from pyspark.ml.tuning import CrossValidator, ParamGridBuilder\n\nparamGrid = ParamGridBuilder() \\\n .addGrid(normalizer.p, [1.0, 2.0, 10.0]) \\\n .addGrid(gbt.maxBins, [2,4,8,16]) \\\n .addGrid(gbt.maxDepth, [2,4,8,16]) \\\n .build()" 117 | }, 118 | { 119 | "execution_count": 14, 120 | "cell_type": "code", 121 | "metadata": {}, 122 | "outputs": [], 123 | "source": "crossval = CrossValidator(estimator=pipeline,\n estimatorParamMaps=paramGrid,\n evaluator=MulticlassClassificationEvaluator(),\n numFolds=4) \n" 124 | }, 125 | { 126 | "execution_count": null, 127 | "cell_type": "code", 128 | "metadata": {}, 129 | "outputs": [], 130 | "source": "%%timeit\ncvModel = crossval.fit(df_train)" 131 | }, 132 | { 133 | "execution_count": 33, 134 | "cell_type": "code", 135 | "metadata": {}, 136 | "outputs": [], 137 | "source": "prediction = cvModel.transform(df_test)" 138 | }, 139 | { 140 | "execution_count": 34, 141 | "cell_type": "code", 142 | "metadata": {}, 143 | "outputs": [ 144 | { 145 | "execution_count": 34, 146 | "metadata": {}, 147 | "data": { 148 | "text/plain": "0.9121697059918125" 149 | }, 150 | "output_type": "execute_result" 151 | } 152 | ], 153 | "source": "binEval.evaluate(prediction) " 154 | }, 155 | { 156 | "execution_count": 43, 157 | "cell_type": "code", 158 | "metadata": {}, 159 | "outputs": [ 160 | { 161 | "execution_count": 43, 162 | "metadata": {}, 163 | "data": { 164 | "text/plain": "\"cacheNodeIds: If false, the algorithm will pass trees to executors to match instances with nodes. If true, the algorithm will cache node IDs for each instance. Caching can speed up training of deeper trees. (default: False)\\ncheckpointInterval: set checkpoint interval (>= 1) or disable checkpoint (-1). E.g. 10 means that the cache will get checkpointed every 10 iterations. Note: this setting will be ignored if the checkpoint directory is not set in the SparkContext (default: 10)\\nfeatureSubsetStrategy: The number of features to consider for splits at each tree node. Supported options: auto, all, onethird, sqrt, log2, (0.0-1.0], [1-n]. (undefined)\\nfeaturesCol: features column name (default: features, current: features)\\nimpurity: Criterion used for information gain calculation (case-insensitive). Supported options: entropy, gini (undefined)\\nlabelCol: label column name (default: label, current: label)\\nlossType: Loss function which GBT tries to minimize (case-insensitive). Supported options: logistic (default: logistic)\\nmaxBins: Max number of bins for discretizing continuous features. Must be >=2 and >= number of categories for any categorical feature. (default: 32, current: 16)\\nmaxDepth: Maximum depth of the tree. (>= 0) E.g., depth 0 means 1 leaf node; depth 1 means 1 internal node + 2 leaf nodes. (default: 5, current: 16)\\nmaxIter: maximum number of iterations (>= 0) (default: 20, current: 10)\\nmaxMemoryInMB: Maximum memory in MB allocated to histogram aggregation. (default: 256)\\nminInfoGain: Minimum information gain for a split to be considered at a tree node. (default: 0.0)\\nminInstancesPerNode: Minimum number of instances each child must have after split. If a split causes the left or right child to have fewer than minInstancesPerNode, the split will be discarded as invalid. Should be >= 1. (default: 1)\\npredictionCol: prediction column name (default: prediction)\\nprobabilityCol: Column name for predicted class conditional probabilities. Note: Not all models output well-calibrated probability estimates! These probabilities should be treated as confidences, not precise probabilities (undefined)\\nrawPredictionCol: raw prediction (a.k.a. confidence) column name (undefined)\\nseed: random seed (default: -6370738711343826501)\\nstepSize: Step size (a.k.a. learning rate) in interval (0, 1] for shrinking the contribution of each estimator. (default: 0.1)\\nsubsamplingRate: Fraction of the training data used for learning each decision tree, in range (0, 1]. (default: 1.0)\\nthresholds: Thresholds in multi-class classification to adjust the probability of predicting each class. Array must have length equal to the number of classes, with values > 0 excepting that at most one value may be 0. The class with largest value p/t is predicted, where p is the original probability of that class and t is the class's threshold (undefined)\"" 165 | }, 166 | "output_type": "execute_result" 167 | } 168 | ], 169 | "source": "cvModel.bestModel.stages[-1].explainParams()" 170 | }, 171 | { 172 | "execution_count": null, 173 | "cell_type": "code", 174 | "metadata": {}, 175 | "outputs": [], 176 | "source": "" 177 | } 178 | ], 179 | "metadata": { 180 | "kernelspec": { 181 | "display_name": "Python 3.6 with Spark", 182 | "name": "python36", 183 | "language": "python3" 184 | }, 185 | "language_info": { 186 | "mimetype": "text/x-python", 187 | "nbconvert_exporter": "python", 188 | "version": "3.6.8", 189 | "name": "python", 190 | "file_extension": ".py", 191 | "pygments_lexer": "ipython3", 192 | "codemirror_mode": { 193 | "version": 3, 194 | "name": "ipython" 195 | } 196 | } 197 | }, 198 | "nbformat": 4 199 | } -------------------------------------------------------------------------------- /SparkML Linear Regression.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat_minor": 1, 3 | "cells": [ 4 | { 5 | "execution_count": 1, 6 | "cell_type": "code", 7 | "metadata": {}, 8 | "outputs": [ 9 | { 10 | "output_type": "stream", 11 | "name": "stdout", 12 | "text": "Waiting for a Spark session to start...\nSpark Initialization Done! ApplicationId = app-20190903070647-0000\nKERNEL_ID = 49492b07-a361-4d7a-ade0-ef8355c2a218\n" 13 | } 14 | ], 15 | "source": "# The code was removed by Watson Studio for sharing." 16 | }, 17 | { 18 | "execution_count": 2, 19 | "cell_type": "code", 20 | "metadata": {}, 21 | "outputs": [], 22 | "source": "df.createOrReplaceTempView('df')\ndf_energy = spark.sql(\"\"\"\nselect sqrt(sum(x*x)+sum(y*y)+sum(z*z)) as label, class from df group by class\n\"\"\") \ndf_energy.createOrReplaceTempView('df_energy') " 23 | }, 24 | { 25 | "execution_count": 3, 26 | "cell_type": "code", 27 | "metadata": {}, 28 | "outputs": [ 29 | { 30 | "output_type": "stream", 31 | "name": "stdout", 32 | "text": "+------------------+--------------+\n| label| class|\n+------------------+--------------+\n| 8959.680239829991| Use_telephone|\n| 9737.511232342687| Standup_chair|\n| 12542.96539897962| Eat_meat|\n|13225.945637269193| Getup_bed|\n|15003.269043778426| Drink_glass|\n|14454.885091207056| Pour_water|\n|10616.408809008817| Comb_hair|\n|11082.626493751379| Climb_stairs|\n|10261.338314274606| Sitdown_chair|\n|6783.4063714331605| Liedown_bed|\n| 7173.493500380411|Descend_stairs|\n| 11785.39634462923| Brush_teeth|\n| 6071.460120926432| Eat_soup|\n+------------------+--------------+\n\n" 33 | } 34 | ], 35 | "source": "df_energy.show()" 36 | }, 37 | { 38 | "execution_count": 4, 39 | "cell_type": "code", 40 | "metadata": {}, 41 | "outputs": [], 42 | "source": "df_join = spark.sql('select * from df inner join df_energy on df.class=df_energy.class')" 43 | }, 44 | { 45 | "execution_count": 5, 46 | "cell_type": "code", 47 | "metadata": {}, 48 | "outputs": [ 49 | { 50 | "output_type": "stream", 51 | "name": "stdout", 52 | "text": "+---+---+---+--------------------+------------+------------------+------------+\n| x| y| z| source| class| label| class|\n+---+---+---+--------------------+------------+------------------+------------+\n| 30| 36| 52|Accelerometer-201...|Climb_stairs|11082.626493751379|Climb_stairs|\n| 30| 36| 32|Accelerometer-201...|Climb_stairs|11082.626493751379|Climb_stairs|\n| 32| 30| 36|Accelerometer-201...|Climb_stairs|11082.626493751379|Climb_stairs|\n| 32| 30| 36|Accelerometer-201...|Climb_stairs|11082.626493751379|Climb_stairs|\n| 32| 30| 36|Accelerometer-201...|Climb_stairs|11082.626493751379|Climb_stairs|\n| 32| 33| 36|Accelerometer-201...|Climb_stairs|11082.626493751379|Climb_stairs|\n| 32| 30| 36|Accelerometer-201...|Climb_stairs|11082.626493751379|Climb_stairs|\n| 30| 37| 50|Accelerometer-201...|Climb_stairs|11082.626493751379|Climb_stairs|\n| 31| 37| 50|Accelerometer-201...|Climb_stairs|11082.626493751379|Climb_stairs|\n| 29| 38| 50|Accelerometer-201...|Climb_stairs|11082.626493751379|Climb_stairs|\n| 32| 39| 48|Accelerometer-201...|Climb_stairs|11082.626493751379|Climb_stairs|\n| 32| 41| 46|Accelerometer-201...|Climb_stairs|11082.626493751379|Climb_stairs|\n| 34| 39| 44|Accelerometer-201...|Climb_stairs|11082.626493751379|Climb_stairs|\n| 34| 39| 41|Accelerometer-201...|Climb_stairs|11082.626493751379|Climb_stairs|\n| 31| 39| 42|Accelerometer-201...|Climb_stairs|11082.626493751379|Climb_stairs|\n| 32| 42| 43|Accelerometer-201...|Climb_stairs|11082.626493751379|Climb_stairs|\n| 31| 43| 43|Accelerometer-201...|Climb_stairs|11082.626493751379|Climb_stairs|\n| 28| 46| 44|Accelerometer-201...|Climb_stairs|11082.626493751379|Climb_stairs|\n| 26| 48| 43|Accelerometer-201...|Climb_stairs|11082.626493751379|Climb_stairs|\n| 22| 41| 40|Accelerometer-201...|Climb_stairs|11082.626493751379|Climb_stairs|\n+---+---+---+--------------------+------------+------------------+------------+\nonly showing top 20 rows\n\n" 53 | } 54 | ], 55 | "source": "df_join.show()" 56 | }, 57 | { 58 | "execution_count": 6, 59 | "cell_type": "code", 60 | "metadata": { 61 | "pixiedust": { 62 | "displayParams": {} 63 | } 64 | }, 65 | "outputs": [], 66 | "source": "from pyspark.ml.feature import VectorAssembler\nfrom pyspark.ml.feature import Normalizer\n\n\nvectorAssembler = VectorAssembler(inputCols=[\"x\",\"y\",\"z\"], outputCol=\"features\")\nnormalizer = Normalizer(inputCol=\"features\", outputCol=\"features_norm\", p=1.0)" 67 | }, 68 | { 69 | "execution_count": 7, 70 | "cell_type": "code", 71 | "metadata": {}, 72 | "outputs": [], 73 | "source": "from pyspark.ml.regression import LinearRegression\n\nlr = LinearRegression(maxIter=10, regParam=0.3, elasticNetParam=0.8)" 74 | }, 75 | { 76 | "execution_count": 8, 77 | "cell_type": "code", 78 | "metadata": {}, 79 | "outputs": [], 80 | "source": "from pyspark.ml import Pipeline\npipeline = Pipeline(stages=[vectorAssembler, normalizer,lr])" 81 | }, 82 | { 83 | "execution_count": 9, 84 | "cell_type": "code", 85 | "metadata": {}, 86 | "outputs": [], 87 | "source": "model = pipeline.fit(df_join)" 88 | }, 89 | { 90 | "execution_count": 10, 91 | "cell_type": "code", 92 | "metadata": {}, 93 | "outputs": [], 94 | "source": "prediction = model.transform(df_join)" 95 | }, 96 | { 97 | "execution_count": 11, 98 | "cell_type": "code", 99 | "metadata": {}, 100 | "outputs": [ 101 | { 102 | "output_type": "stream", 103 | "name": "stdout", 104 | "text": "+---+---+---+--------------------+------------+------------------+------------+----------------+--------------------+------------------+\n| x| y| z| source| class| label| class| features| features_norm| prediction|\n+---+---+---+--------------------+------------+------------------+------------+----------------+--------------------+------------------+\n| 30| 36| 52|Accelerometer-201...|Climb_stairs|11082.626493751379|Climb_stairs|[30.0,36.0,52.0]|[0.25423728813559...|12378.337524478058|\n| 30| 36| 32|Accelerometer-201...|Climb_stairs|11082.626493751379|Climb_stairs|[30.0,36.0,32.0]|[0.30612244897959...|10949.223755865942|\n| 32| 30| 36|Accelerometer-201...|Climb_stairs|11082.626493751379|Climb_stairs|[32.0,30.0,36.0]|[0.32653061224489...|11232.049623881609|\n| 32| 30| 36|Accelerometer-201...|Climb_stairs|11082.626493751379|Climb_stairs|[32.0,30.0,36.0]|[0.32653061224489...|11232.049623881609|\n| 32| 30| 36|Accelerometer-201...|Climb_stairs|11082.626493751379|Climb_stairs|[32.0,30.0,36.0]|[0.32653061224489...|11232.049623881609|\n| 32| 33| 36|Accelerometer-201...|Climb_stairs|11082.626493751379|Climb_stairs|[32.0,33.0,36.0]|[0.31683168316831...|11251.923475263653|\n| 32| 30| 36|Accelerometer-201...|Climb_stairs|11082.626493751379|Climb_stairs|[32.0,30.0,36.0]|[0.32653061224489...|11232.049623881609|\n| 30| 37| 50|Accelerometer-201...|Climb_stairs|11082.626493751379|Climb_stairs|[30.0,37.0,50.0]|[0.25641025641025...|12242.050764744195|\n| 31| 37| 50|Accelerometer-201...|Climb_stairs|11082.626493751379|Climb_stairs|[31.0,37.0,50.0]|[0.26271186440677...| 12260.42617327286|\n| 29| 38| 50|Accelerometer-201...|Climb_stairs|11082.626493751379|Climb_stairs|[29.0,38.0,50.0]|[0.24786324786324...|12230.299973342877|\n| 32| 39| 48|Accelerometer-201...|Climb_stairs|11082.626493751379|Climb_stairs|[32.0,39.0,48.0]|[0.26890756302521...|12149.139439195013|\n| 32| 41| 46|Accelerometer-201...|Climb_stairs|11082.626493751379|Climb_stairs|[32.0,41.0,46.0]|[0.26890756302521...|12019.477296588495|\n| 34| 39| 44|Accelerometer-201...|Climb_stairs|11082.626493751379|Climb_stairs|[34.0,39.0,44.0]|[0.29059829059829...| 11900.06750252992|\n| 34| 39| 41|Accelerometer-201...|Climb_stairs|11082.626493751379|Climb_stairs|[34.0,39.0,41.0]|[0.29824561403508...|11685.700437238103|\n| 31| 39| 42|Accelerometer-201...|Climb_stairs|11082.626493751379|Climb_stairs|[31.0,39.0,42.0]|[0.27678571428571...| 11702.02990008271|\n| 32| 42| 43|Accelerometer-201...|Climb_stairs|11082.626493751379|Climb_stairs|[32.0,42.0,43.0]|[0.27350427350427...|11811.734848424026|\n| 31| 43| 43|Accelerometer-201...|Climb_stairs|11082.626493751379|Climb_stairs|[31.0,43.0,43.0]|[0.26495726495726...|11799.984057022708|\n| 28| 46| 44|Accelerometer-201...|Climb_stairs|11082.626493751379|Climb_stairs|[28.0,46.0,44.0]|[0.23728813559322...|11836.187371249358|\n| 26| 48| 43|Accelerometer-201...|Climb_stairs|11082.626493751379|Climb_stairs|[26.0,48.0,43.0]|[0.22222222222222...|11741.230100016117|\n| 22| 41| 40|Accelerometer-201...|Climb_stairs|11082.626493751379|Climb_stairs|[22.0,41.0,40.0]|[0.21359223300970...|11406.989080718198|\n+---+---+---+--------------------+------------+------------------+------------+----------------+--------------------+------------------+\nonly showing top 20 rows\n\n" 105 | } 106 | ], 107 | "source": "prediction.show()" 108 | }, 109 | { 110 | "execution_count": 8, 111 | "cell_type": "code", 112 | "metadata": {}, 113 | "outputs": [ 114 | { 115 | "execution_count": 8, 116 | "metadata": {}, 117 | "data": { 118 | "text/plain": "0.0912330479847846" 119 | }, 120 | "output_type": "execute_result" 121 | } 122 | ], 123 | "source": "model.stages[2].summary.r2\n" 124 | }, 125 | { 126 | "execution_count": null, 127 | "cell_type": "code", 128 | "metadata": {}, 129 | "outputs": [], 130 | "source": "" 131 | } 132 | ], 133 | "metadata": { 134 | "kernelspec": { 135 | "display_name": "Python 3.6 with Spark", 136 | "name": "python36", 137 | "language": "python3" 138 | }, 139 | "language_info": { 140 | "mimetype": "text/x-python", 141 | "nbconvert_exporter": "python", 142 | "version": "3.6.8", 143 | "name": "python", 144 | "file_extension": ".py", 145 | "pygments_lexer": "ipython3", 146 | "codemirror_mode": { 147 | "version": 3, 148 | "name": "ipython" 149 | } 150 | } 151 | }, 152 | "nbformat": 4 153 | } -------------------------------------------------------------------------------- /AssignmentML2.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat_minor": 1, 3 | "cells": [ 4 | { 5 | "source": "This is the second assignment for the Coursera course \"Advanced Machine Learning and Signal Processing\"\n\n\nJust execute all cells one after the other and you are done - just note that in the last one you have to update your email address (the one you've used for coursera) and obtain a submission token, you get this from the programming assignment directly on coursera.\n\nPlease fill in the sections labelled with \"###YOUR_CODE_GOES_HERE###\"", 6 | "cell_type": "markdown", 7 | "metadata": {} 8 | }, 9 | { 10 | "source": "!wget https://github.com/IBM/coursera/raw/master/coursera_ml/a2.parquet", 11 | "cell_type": "code", 12 | "execution_count": 1, 13 | "outputs": [ 14 | { 15 | "output_type": "stream", 16 | "name": "stdout", 17 | "text": "Waiting for a Spark session to start...\nSpark Initialization Done! ApplicationId = app-20190903110243-0000\nKERNEL_ID = 9d6fc208-4238-49af-b870-3997ce38a0f8\n--2019-09-03 11:02:47-- https://github.com/IBM/coursera/raw/master/coursera_ml/a2.parquet\nResolving github.com (github.com)... 140.82.114.4\nConnecting to github.com (github.com)|140.82.114.4|:443... connected.\nHTTP request sent, awaiting response... 302 Found\nLocation: https://raw.githubusercontent.com/IBM/coursera/master/coursera_ml/a2.parquet [following]\n--2019-09-03 11:02:47-- https://raw.githubusercontent.com/IBM/coursera/master/coursera_ml/a2.parquet\nResolving raw.githubusercontent.com (raw.githubusercontent.com)... 199.232.8.133\nConnecting to raw.githubusercontent.com (raw.githubusercontent.com)|199.232.8.133|:443... connected.\nHTTP request sent, awaiting response... 200 OK\nLength: 59032 (58K) [application/octet-stream]\nSaving to: 'a2.parquet'\n\na2.parquet 100%[===================>] 57.65K --.-KB/s in 0.005s \n\n2019-09-03 11:02:48 (11.3 MB/s) - 'a2.parquet' saved [59032/59032]\n\n" 18 | } 19 | ], 20 | "metadata": {} 21 | }, 22 | { 23 | "source": "Now it\u2019s time to have a look at the recorded sensor data. You should see data similar to the one exemplified below\u2026.\n", 24 | "cell_type": "markdown", 25 | "metadata": {} 26 | }, 27 | { 28 | "source": "df=spark.read.load('a2.parquet')\n\ndf.createOrReplaceTempView(\"df\")\nspark.sql(\"SELECT * from df\").show()", 29 | "cell_type": "code", 30 | "execution_count": 2, 31 | "outputs": [ 32 | { 33 | "output_type": "stream", 34 | "name": "stdout", 35 | "text": "+-----+-----------+-------------------+-------------------+-------------------+\n|CLASS| SENSORID| X| Y| Z|\n+-----+-----------+-------------------+-------------------+-------------------+\n| 0| 26| 380.66434005495194| -139.3470983812975|-247.93697521077704|\n| 0| 29| 104.74324299209692| -32.27421440203938|-25.105013725863852|\n| 0| 8589934658| 118.11469236129976| 45.916682927433534| -87.97203782706572|\n| 0|34359738398| 246.55394030642543|-0.6122810693132044|-398.18662513951506|\n| 0|17179869241|-190.32584900181487| 234.7849657520335|-206.34483804019288|\n| 0|25769803830| 178.62396382387422| -47.07529438881511| 84.38310769821979|\n| 0|25769803831| 85.03128805189493|-4.3024316644854546|-1.1841857567516714|\n| 0|34359738411| 26.786262674736566| -46.33193951911338| 20.880756008396055|\n| 0| 8589934592|-16.203752396859194| 51.080957032176954| -96.80526656416971|\n| 0|25769803852| 47.2048142440404| -78.2950899652916| 181.99604091494786|\n| 0|34359738369| 15.608872398939273| -79.90322809181754| 69.62150711098005|\n| 0| 19|-4.8281721129789315| -67.38050508399905| 221.24876396496404|\n| 0| 54| -98.40725712852762|-19.989364074314732| -302.695196085276|\n| 0|17179869313| 22.835845394816594| 17.1633660118843| 32.877914832011385|\n| 0|34359738454| 84.20178070080324| -32.81572075916947| -48.63517643958031|\n| 0| 0| 56.54732521345129| -7.980106018032676| 95.05162719436447|\n| 0|17179869201| -57.6008655247749| 5.135393798773895| 236.99158698947267|\n| 0|17179869308| -65.59264738389012| -48.92660057215126| -61.58970715383383|\n| 0|25769803790| 34.82337351291005| 9.483542084393937| 197.6066372962772|\n| 0|25769803825| 39.80573823439121|-0.7955236412785212| -79.66652640650325|\n+-----+-----------+-------------------+-------------------+-------------------+\nonly showing top 20 rows\n\n" 36 | } 37 | ], 38 | "metadata": {} 39 | }, 40 | { 41 | "source": "Please create a VectorAssembler which consumes columns X, Y and Z and produces a column \u201cfeatures\u201d\n", 42 | "cell_type": "markdown", 43 | "metadata": {} 44 | }, 45 | { 46 | "source": "from pyspark.ml.feature import VectorAssembler\nvectorAssembler = VectorAssembler(inputCols = [\"X\",\"Y\",\"Z\"], outputCol = \"features\")", 47 | "cell_type": "code", 48 | "execution_count": 3, 49 | "outputs": [], 50 | "metadata": {} 51 | }, 52 | { 53 | "source": "Please instantiate a classifier from the SparkML package and assign it to the classifier variable. Make sure to either\n1.\tRename the \u201cCLASS\u201d column to \u201clabel\u201d or\n2.\tSpecify the label-column correctly to be \u201cCLASS\u201d\n", 54 | "cell_type": "markdown", 55 | "metadata": {} 56 | }, 57 | { 58 | "source": "from pyspark.ml.classification import GBTClassifier\nclassifier = GBTClassifier(labelCol = \"CLASS\", featuresCol = \"features\", maxIter = 10)", 59 | "cell_type": "code", 60 | "execution_count": 8, 61 | "outputs": [], 62 | "metadata": {} 63 | }, 64 | { 65 | "source": "Let\u2019s train and evaluate\u2026\n", 66 | "cell_type": "markdown", 67 | "metadata": {} 68 | }, 69 | { 70 | "source": "from pyspark.ml import Pipeline\npipeline = Pipeline(stages=[vectorAssembler, classifier])", 71 | "cell_type": "code", 72 | "execution_count": 9, 73 | "outputs": [], 74 | "metadata": {} 75 | }, 76 | { 77 | "source": "model = pipeline.fit(df)", 78 | "cell_type": "code", 79 | "execution_count": 10, 80 | "outputs": [], 81 | "metadata": {} 82 | }, 83 | { 84 | "source": "prediction = model.transform(df)", 85 | "cell_type": "code", 86 | "execution_count": 11, 87 | "outputs": [], 88 | "metadata": {} 89 | }, 90 | { 91 | "source": "prediction.show()", 92 | "cell_type": "code", 93 | "execution_count": 12, 94 | "outputs": [ 95 | { 96 | "output_type": "stream", 97 | "name": "stdout", 98 | "text": "+-----+-----------+-------------------+-------------------+-------------------+--------------------+--------------------+--------------------+----------+\n|CLASS| SENSORID| X| Y| Z| features| rawPrediction| probability|prediction|\n+-----+-----------+-------------------+-------------------+-------------------+--------------------+--------------------+--------------------+----------+\n| 0| 26| 380.66434005495194| -139.3470983812975|-247.93697521077704|[380.664340054951...|[1.32589766213010...|[0.93412155816733...| 0.0|\n| 0| 29| 104.74324299209692| -32.27421440203938|-25.105013725863852|[104.743242992096...|[1.32589766213010...|[0.93412155816733...| 0.0|\n| 0| 8589934658| 118.11469236129976| 45.916682927433534| -87.97203782706572|[118.114692361299...|[1.32680169324328...|[0.93423273625928...| 0.0|\n| 0|34359738398| 246.55394030642543|-0.6122810693132044|-398.18662513951506|[246.553940306425...|[1.32711813715030...|[0.93427161142354...| 0.0|\n| 0|17179869241|-190.32584900181487| 234.7849657520335|-206.34483804019288|[-190.32584900181...|[1.32590267922033...|[0.93412217565278...| 0.0|\n| 0|25769803830| 178.62396382387422| -47.07529438881511| 84.38310769821979|[178.623963823874...|[1.32589766213010...|[0.93412155816733...| 0.0|\n| 0|25769803831| 85.03128805189493|-4.3024316644854546|-1.1841857567516714|[85.0312880518949...|[1.32621410603712...|[0.93416049441777...| 0.0|\n| 0|34359738411| 26.786262674736566| -46.33193951911338| 20.880756008396055|[26.7862626747365...|[1.32589766213010...|[0.93412155816733...| 0.0|\n| 0| 8589934592|-16.203752396859194| 51.080957032176954| -96.80526656416971|[-16.203752396859...|[1.32590267922033...|[0.93412217565278...| 0.0|\n| 0|25769803852| 47.2048142440404| -78.2950899652916| 181.99604091494786|[47.2048142440404...|[1.32589955669978...|[0.93412179134479...| 0.0|\n| 0|34359738369| 15.608872398939273| -79.90322809181754| 69.62150711098005|[15.6088723989392...|[1.32590267922033...|[0.93412217565278...| 0.0|\n| 0| 19|-4.8281721129789315| -67.38050508399905| 221.24876396496404|[-4.8281721129789...|[1.32396579485090...|[0.93388339065422...| 0.0|\n| 0| 54| -98.40725712852762|-19.989364074314732| -302.695196085276|[-98.407257128527...|[1.32590267922033...|[0.93412217565278...| 0.0|\n| 0|17179869313| 22.835845394816594| 17.1633660118843| 32.877914832011385|[22.8358453948165...|[1.32590267922033...|[0.93412217565278...| 0.0|\n| 0|34359738454| 84.20178070080324| -32.81572075916947| -48.63517643958031|[84.2017807008032...|[1.32589766213010...|[0.93412155816733...| 0.0|\n| 0| 0| 56.54732521345129| -7.980106018032676| 95.05162719436447|[56.5473252134512...|[1.32589766213010...|[0.93412155816733...| 0.0|\n| 0|17179869201| -57.6008655247749| 5.135393798773895| 236.99158698947267|[-57.600865524774...|[1.33122144395126...|[0.93477377205806...| 0.0|\n| 0|17179869308| -65.59264738389012| -48.92660057215126| -61.58970715383383|[-65.592647383890...|[1.32590267922033...|[0.93412217565278...| 0.0|\n| 0|25769803790| 34.82337351291005| 9.483542084393937| 197.6066372962772|[34.8233735129100...|[1.51228073545265...|[0.95367147883022...| 0.0|\n| 0|25769803825| 39.80573823439121|-0.7955236412785212| -79.66652640650325|[39.8057382343912...|[1.32711813715030...|[0.93427161142354...| 0.0|\n+-----+-----------+-------------------+-------------------+-------------------+--------------------+--------------------+--------------------+----------+\nonly showing top 20 rows\n\n" 99 | } 100 | ], 101 | "metadata": {} 102 | }, 103 | { 104 | "source": "from pyspark.ml.evaluation import MulticlassClassificationEvaluator\nbinEval = MulticlassClassificationEvaluator().setMetricName(\"accuracy\") .setPredictionCol(\"prediction\").setLabelCol(\"CLASS\")\n \nbinEval.evaluate(prediction) ", 105 | "cell_type": "code", 106 | "execution_count": 13, 107 | "outputs": [ 108 | { 109 | "output_type": "execute_result", 110 | "metadata": {}, 111 | "data": { 112 | "text/plain": "0.9986850756081526" 113 | }, 114 | "execution_count": 13 115 | } 116 | ], 117 | "metadata": {} 118 | }, 119 | { 120 | "source": "If you are happy with the result (I\u2019m happy with > 0.55) please submit your solution to the grader by executing the following cells, please don\u2019t forget to obtain an assignment submission token (secret) from the Coursera\u2019s graders web page and paste it to the \u201csecret\u201d variable below, including your email address you\u2019ve used for Coursera. (0.55 means that you are performing better than random guesses)\n", 121 | "cell_type": "markdown", 122 | "metadata": {} 123 | }, 124 | { 125 | "source": "!rm -Rf a2_m2.json", 126 | "cell_type": "code", 127 | "execution_count": 14, 128 | "outputs": [], 129 | "metadata": {} 130 | }, 131 | { 132 | "source": "prediction = prediction.repartition(1)\nprediction.write.json('a2_m2.json')", 133 | "cell_type": "code", 134 | "execution_count": 15, 135 | "outputs": [], 136 | "metadata": {} 137 | }, 138 | { 139 | "source": "!rm -f rklib.py\n!wget https://raw.githubusercontent.com/IBM/coursera/master/rklib.py", 140 | "cell_type": "code", 141 | "execution_count": 16, 142 | "outputs": [ 143 | { 144 | "output_type": "stream", 145 | "name": "stdout", 146 | "text": "--2019-09-03 11:11:42-- https://raw.githubusercontent.com/IBM/coursera/master/rklib.py\nResolving raw.githubusercontent.com (raw.githubusercontent.com)... 199.232.8.133\nConnecting to raw.githubusercontent.com (raw.githubusercontent.com)|199.232.8.133|:443... connected.\nHTTP request sent, awaiting response... 200 OK\nLength: 2540 (2.5K) [text/plain]\nSaving to: 'rklib.py'\n\nrklib.py 100%[===================>] 2.48K --.-KB/s in 0s \n\n2019-09-03 11:11:42 (16.7 MB/s) - 'rklib.py' saved [2540/2540]\n\n" 147 | } 148 | ], 149 | "metadata": {} 150 | }, 151 | { 152 | "source": "import zipfile\n\ndef zipdir(path, ziph):\n for root, dirs, files in os.walk(path):\n for file in files:\n ziph.write(os.path.join(root, file))\n\nzipf = zipfile.ZipFile('a2_m2.json.zip', 'w', zipfile.ZIP_DEFLATED)\nzipdir('a2_m2.json', zipf)\nzipf.close()", 153 | "cell_type": "code", 154 | "execution_count": 17, 155 | "outputs": [], 156 | "metadata": {} 157 | }, 158 | { 159 | "source": "!base64 a2_m2.json.zip > a2_m2.json.zip.base64", 160 | "cell_type": "code", 161 | "execution_count": 18, 162 | "outputs": [], 163 | "metadata": {} 164 | }, 165 | { 166 | "source": "from rklib import submit\nkey = \"J3sDL2J8EeiaXhILFWw2-g\"\npart = \"G4P6f\"\nemail = \"shriganesh.patel@gmail.com\"\nsecret = \"zBVh4TKfFfgH0SDp\"\n\nwith open('a2_m2.json.zip.base64', 'r') as myfile:\n data=myfile.read()\nsubmit(email, secret, key, part, [part], data)", 167 | "cell_type": "code", 168 | "execution_count": 20, 169 | "outputs": [ 170 | { 171 | "output_type": "stream", 172 | "name": "stdout", 173 | "text": "Submission successful, please check on the coursera grader page for the status\n-------------------------\n{\"elements\":[{\"itemId\":\"LTL4F\",\"id\":\"f_F-qCtuEei_fRLwaVDk3g~LTL4F~pYY5K847EemAsw6NyXp6ZA\",\"courseId\":\"f_F-qCtuEei_fRLwaVDk3g\"}],\"paging\":{},\"linked\":{}}\n-------------------------\n" 174 | } 175 | ], 176 | "metadata": {} 177 | } 178 | ], 179 | "nbformat": 4, 180 | "metadata": { 181 | "kernelspec": { 182 | "display_name": "Python 3.6 with Spark", 183 | "name": "python36", 184 | "language": "python3" 185 | }, 186 | "language_info": { 187 | "mimetype": "text/x-python", 188 | "nbconvert_exporter": "python", 189 | "version": "3.6.8", 190 | "name": "python", 191 | "pygments_lexer": "ipython3", 192 | "file_extension": ".py", 193 | "codemirror_mode": { 194 | "version": 3, 195 | "name": "ipython" 196 | } 197 | } 198 | } 199 | } -------------------------------------------------------------------------------- /AssignmentML3.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat_minor": 1, 3 | "cells": [ 4 | { 5 | "source": "This is the third assignment for the Coursera course \"Advanced Machine Learning and Signal Processing\"\n\nJust execute all cells one after the other and you are done - just note that in the last one you must update your email address (the one you've used for coursera) and obtain a submission token, you get this from the programming assignment directly on coursera.\n\nPlease fill in the sections labelled with \"###YOUR_CODE_GOES_HERE###\"\n", 6 | "cell_type": "markdown", 7 | "metadata": {} 8 | }, 9 | { 10 | "source": "!wget https://github.com/IBM/coursera/raw/master/coursera_ml/a2.parquet", 11 | "cell_type": "code", 12 | "execution_count": 1, 13 | "outputs": [ 14 | { 15 | "output_type": "stream", 16 | "name": "stdout", 17 | "text": "Waiting for a Spark session to start...\nSpark Initialization Done! ApplicationId = app-20190903114518-0000\nKERNEL_ID = e2c70554-29f2-42f3-9ff9-9db5d900ee12\n--2019-09-03 11:45:21-- https://github.com/IBM/coursera/raw/master/coursera_ml/a2.parquet\nResolving github.com (github.com)... 140.82.114.3\nConnecting to github.com (github.com)|140.82.114.3|:443... connected.\nHTTP request sent, awaiting response... 302 Found\nLocation: https://raw.githubusercontent.com/IBM/coursera/master/coursera_ml/a2.parquet [following]\n--2019-09-03 11:45:21-- https://raw.githubusercontent.com/IBM/coursera/master/coursera_ml/a2.parquet\nResolving raw.githubusercontent.com (raw.githubusercontent.com)... 199.232.8.133\nConnecting to raw.githubusercontent.com (raw.githubusercontent.com)|199.232.8.133|:443... connected.\nHTTP request sent, awaiting response... 200 OK\nLength: 59032 (58K) [application/octet-stream]\nSaving to: 'a2.parquet'\n\na2.parquet 100%[===================>] 57.65K --.-KB/s in 0.003s \n\n2019-09-03 11:45:21 (17.6 MB/s) - 'a2.parquet' saved [59032/59032]\n\n" 18 | } 19 | ], 20 | "metadata": {} 21 | }, 22 | { 23 | "source": "Now it\u2019s time to have a look at the recorded sensor data. You should see data similar to the one exemplified below\u2026.\n", 24 | "cell_type": "markdown", 25 | "metadata": {} 26 | }, 27 | { 28 | "source": "df=spark.read.load('a2.parquet')\ndf.createOrReplaceTempView(\"df\")\nspark.sql(\"SELECT * from df\").show()", 29 | "cell_type": "code", 30 | "execution_count": 2, 31 | "outputs": [ 32 | { 33 | "output_type": "stream", 34 | "name": "stdout", 35 | "text": "+-----+-----------+-------------------+-------------------+-------------------+\n|CLASS| SENSORID| X| Y| Z|\n+-----+-----------+-------------------+-------------------+-------------------+\n| 0| 26| 380.66434005495194| -139.3470983812975|-247.93697521077704|\n| 0| 29| 104.74324299209692| -32.27421440203938|-25.105013725863852|\n| 0| 8589934658| 118.11469236129976| 45.916682927433534| -87.97203782706572|\n| 0|34359738398| 246.55394030642543|-0.6122810693132044|-398.18662513951506|\n| 0|17179869241|-190.32584900181487| 234.7849657520335|-206.34483804019288|\n| 0|25769803830| 178.62396382387422| -47.07529438881511| 84.38310769821979|\n| 0|25769803831| 85.03128805189493|-4.3024316644854546|-1.1841857567516714|\n| 0|34359738411| 26.786262674736566| -46.33193951911338| 20.880756008396055|\n| 0| 8589934592|-16.203752396859194| 51.080957032176954| -96.80526656416971|\n| 0|25769803852| 47.2048142440404| -78.2950899652916| 181.99604091494786|\n| 0|34359738369| 15.608872398939273| -79.90322809181754| 69.62150711098005|\n| 0| 19|-4.8281721129789315| -67.38050508399905| 221.24876396496404|\n| 0| 54| -98.40725712852762|-19.989364074314732| -302.695196085276|\n| 0|17179869313| 22.835845394816594| 17.1633660118843| 32.877914832011385|\n| 0|34359738454| 84.20178070080324| -32.81572075916947| -48.63517643958031|\n| 0| 0| 56.54732521345129| -7.980106018032676| 95.05162719436447|\n| 0|17179869201| -57.6008655247749| 5.135393798773895| 236.99158698947267|\n| 0|17179869308| -65.59264738389012| -48.92660057215126| -61.58970715383383|\n| 0|25769803790| 34.82337351291005| 9.483542084393937| 197.6066372962772|\n| 0|25769803825| 39.80573823439121|-0.7955236412785212| -79.66652640650325|\n+-----+-----------+-------------------+-------------------+-------------------+\nonly showing top 20 rows\n\n" 36 | } 37 | ], 38 | "metadata": {} 39 | }, 40 | { 41 | "source": "Let\u2019s check if we have balanced classes \u2013 this means that we have roughly the same number of examples for each class we want to predict. This is important for classification but also helpful for clustering", 42 | "cell_type": "markdown", 43 | "metadata": {} 44 | }, 45 | { 46 | "source": "spark.sql(\"SELECT count(class), class from df group by class\").show()", 47 | "cell_type": "code", 48 | "execution_count": 3, 49 | "outputs": [ 50 | { 51 | "output_type": "stream", 52 | "name": "stdout", 53 | "text": "+------------+-----+\n|count(class)|class|\n+------------+-----+\n| 1416| 1|\n| 1626| 0|\n+------------+-----+\n\n" 54 | } 55 | ], 56 | "metadata": {} 57 | }, 58 | { 59 | "source": "Let's create a VectorAssembler which consumes columns X, Y and Z and produces a column \u201cfeatures\u201d\n", 60 | "cell_type": "markdown", 61 | "metadata": {} 62 | }, 63 | { 64 | "source": "from pyspark.ml.feature import VectorAssembler\nvectorAssembler = VectorAssembler(inputCols=[\"X\",\"Y\",\"Z\"],\n outputCol=\"features\")", 65 | "cell_type": "code", 66 | "execution_count": 4, 67 | "outputs": [], 68 | "metadata": {} 69 | }, 70 | { 71 | "source": "Please insatiate a clustering algorithm from the SparkML package and assign it to the clust variable. Here we don\u2019t need to take care of the \u201cCLASS\u201d column since we are in unsupervised learning mode \u2013 so let\u2019s pretend to not even have the \u201cCLASS\u201d column for now \u2013 but it will become very handy later in assessing the clustering performance. PLEASE NOTE \u2013 IN REAL-WORLD SCENARIOS THERE IS NO CLASS COLUMN \u2013 THEREFORE YOU CAN\u2019T ASSESS CLASSIFICATION PERFORMANCE USING THIS COLUMN \n\n", 72 | "cell_type": "markdown", 73 | "metadata": {} 74 | }, 75 | { 76 | "source": "from pyspark.ml.clustering import KMeans\n\nclust = KMeans().setK(3).setSeed(1)", 77 | "cell_type": "code", 78 | "execution_count": 6, 79 | "outputs": [], 80 | "metadata": {} 81 | }, 82 | { 83 | "source": "Let\u2019s train...\n", 84 | "cell_type": "markdown", 85 | "metadata": {} 86 | }, 87 | { 88 | "source": "from pyspark.ml import Pipeline\npipeline = Pipeline(stages=[vectorAssembler, clust])\nmodel = pipeline.fit(df)", 89 | "cell_type": "code", 90 | "execution_count": 7, 91 | "outputs": [], 92 | "metadata": {} 93 | }, 94 | { 95 | "source": "...and evaluate...", 96 | "cell_type": "markdown", 97 | "metadata": {} 98 | }, 99 | { 100 | "source": "prediction = model.transform(df)\nprediction.show()", 101 | "cell_type": "code", 102 | "execution_count": 8, 103 | "outputs": [ 104 | { 105 | "output_type": "stream", 106 | "name": "stdout", 107 | "text": "+-----+-----------+-------------------+-------------------+-------------------+--------------------+----------+\n|CLASS| SENSORID| X| Y| Z| features|prediction|\n+-----+-----------+-------------------+-------------------+-------------------+--------------------+----------+\n| 0| 26| 380.66434005495194| -139.3470983812975|-247.93697521077704|[380.664340054951...| 2|\n| 0| 29| 104.74324299209692| -32.27421440203938|-25.105013725863852|[104.743242992096...| 0|\n| 0| 8589934658| 118.11469236129976| 45.916682927433534| -87.97203782706572|[118.114692361299...| 2|\n| 0|34359738398| 246.55394030642543|-0.6122810693132044|-398.18662513951506|[246.553940306425...| 2|\n| 0|17179869241|-190.32584900181487| 234.7849657520335|-206.34483804019288|[-190.32584900181...| 1|\n| 0|25769803830| 178.62396382387422| -47.07529438881511| 84.38310769821979|[178.623963823874...| 0|\n| 0|25769803831| 85.03128805189493|-4.3024316644854546|-1.1841857567516714|[85.0312880518949...| 0|\n| 0|34359738411| 26.786262674736566| -46.33193951911338| 20.880756008396055|[26.7862626747365...| 0|\n| 0| 8589934592|-16.203752396859194| 51.080957032176954| -96.80526656416971|[-16.203752396859...| 1|\n| 0|25769803852| 47.2048142440404| -78.2950899652916| 181.99604091494786|[47.2048142440404...| 0|\n| 0|34359738369| 15.608872398939273| -79.90322809181754| 69.62150711098005|[15.6088723989392...| 0|\n| 0| 19|-4.8281721129789315| -67.38050508399905| 221.24876396496404|[-4.8281721129789...| 0|\n| 0| 54| -98.40725712852762|-19.989364074314732| -302.695196085276|[-98.407257128527...| 1|\n| 0|17179869313| 22.835845394816594| 17.1633660118843| 32.877914832011385|[22.8358453948165...| 0|\n| 0|34359738454| 84.20178070080324| -32.81572075916947| -48.63517643958031|[84.2017807008032...| 2|\n| 0| 0| 56.54732521345129| -7.980106018032676| 95.05162719436447|[56.5473252134512...| 0|\n| 0|17179869201| -57.6008655247749| 5.135393798773895| 236.99158698947267|[-57.600865524774...| 0|\n| 0|17179869308| -65.59264738389012| -48.92660057215126| -61.58970715383383|[-65.592647383890...| 0|\n| 0|25769803790| 34.82337351291005| 9.483542084393937| 197.6066372962772|[34.8233735129100...| 0|\n| 0|25769803825| 39.80573823439121|-0.7955236412785212| -79.66652640650325|[39.8057382343912...| 2|\n+-----+-----------+-------------------+-------------------+-------------------+--------------------+----------+\nonly showing top 20 rows\n\n" 108 | } 109 | ], 110 | "metadata": {} 111 | }, 112 | { 113 | "source": "prediction.createOrReplaceTempView('prediction')\nspark.sql('''\nselect max(correct)/max(total) as accuracy from (\n\n select sum(correct) as correct, count(correct) as total from (\n select case when class != prediction then 1 else 0 end as correct from prediction \n ) \n \n union\n \n select sum(correct) as correct, count(correct) as total from (\n select case when class = prediction then 1 else 0 end as correct from prediction \n ) \n)\n''').rdd.map(lambda row: row.accuracy).collect()[0]", 114 | "cell_type": "code", 115 | "execution_count": 9, 116 | "outputs": [ 117 | { 118 | "output_type": "execute_result", 119 | "metadata": {}, 120 | "data": { 121 | "text/plain": "0.646285338593031" 122 | }, 123 | "execution_count": 9 124 | } 125 | ], 126 | "metadata": {} 127 | }, 128 | { 129 | "source": "If you reached at least 55% of accuracy you are fine to submit your predictions to the grader. Otherwise please experiment with parameters setting to your clustering algorithm, use a different algorithm or just re-record your data and try to obtain. In case you are stuck, please use the Coursera Discussion Forum. Please note again \u2013 in a real-world scenario there is no way in doing this \u2013 since there is no class label in your data. Please have a look at this further reading on clustering performance evaluation https://en.wikipedia.org/wiki/Cluster_analysis#Evaluation_and_assessment\n", 130 | "cell_type": "markdown", 131 | "metadata": {} 132 | }, 133 | { 134 | "source": "!rm -f rklib.py\n!wget https://raw.githubusercontent.com/IBM/coursera/master/rklib.py", 135 | "cell_type": "code", 136 | "execution_count": 10, 137 | "outputs": [ 138 | { 139 | "output_type": "stream", 140 | "name": "stdout", 141 | "text": "--2019-09-03 11:46:27-- https://raw.githubusercontent.com/IBM/coursera/master/rklib.py\nResolving raw.githubusercontent.com (raw.githubusercontent.com)... 199.232.8.133\nConnecting to raw.githubusercontent.com (raw.githubusercontent.com)|199.232.8.133|:443... connected.\nHTTP request sent, awaiting response... 200 OK\nLength: 2540 (2.5K) [text/plain]\nSaving to: 'rklib.py'\n\nrklib.py 100%[===================>] 2.48K --.-KB/s in 0s \n\n2019-09-03 11:46:27 (37.9 MB/s) - 'rklib.py' saved [2540/2540]\n\n" 142 | } 143 | ], 144 | "metadata": {} 145 | }, 146 | { 147 | "source": "!rm -Rf a2_m3.json", 148 | "cell_type": "code", 149 | "execution_count": 11, 150 | "outputs": [], 151 | "metadata": {} 152 | }, 153 | { 154 | "source": "prediction= prediction.repartition(1)\nprediction.write.json('a2_m3.json')", 155 | "cell_type": "code", 156 | "execution_count": 12, 157 | "outputs": [], 158 | "metadata": {} 159 | }, 160 | { 161 | "source": "import zipfile\n\ndef zipdir(path, ziph):\n for root, dirs, files in os.walk(path):\n for file in files:\n ziph.write(os.path.join(root, file))\n\nzipf = zipfile.ZipFile('a2_m3.json.zip', 'w', zipfile.ZIP_DEFLATED)\nzipdir('a2_m3.json', zipf)\nzipf.close()", 162 | "cell_type": "code", 163 | "execution_count": 13, 164 | "outputs": [], 165 | "metadata": {} 166 | }, 167 | { 168 | "source": "!base64 a2_m3.json.zip > a2_m3.json.zip.base64", 169 | "cell_type": "code", 170 | "execution_count": 14, 171 | "outputs": [], 172 | "metadata": {} 173 | }, 174 | { 175 | "source": "from rklib import submit\nkey = \"pPfm62VXEeiJOBL0dhxPkA\"\npart = \"EOTMs\"\nemail = \"shriganesh.patel@gmail.com\"\nsecret = \"v3Wp3b3ikEmBlNd9\"\n\n\nwith open('a2_m3.json.zip.base64', 'r') as myfile:\n data=myfile.read()\nsubmit(email, secret, key, part, [part], data)", 176 | "cell_type": "code", 177 | "execution_count": 15, 178 | "outputs": [ 179 | { 180 | "output_type": "stream", 181 | "name": "stdout", 182 | "text": "Submission successful, please check on the coursera grader page for the status\n-------------------------\n{\"elements\":[{\"itemId\":\"Cu6KW\",\"id\":\"f_F-qCtuEei_fRLwaVDk3g~Cu6KW~hrqE7s5AEemDMQoe-5Knvg\",\"courseId\":\"f_F-qCtuEei_fRLwaVDk3g\"}],\"paging\":{},\"linked\":{}}\n-------------------------\n" 183 | } 184 | ], 185 | "metadata": {} 186 | } 187 | ], 188 | "nbformat": 4, 189 | "metadata": { 190 | "kernelspec": { 191 | "display_name": "Python 3.6 with Spark", 192 | "name": "python36", 193 | "language": "python3" 194 | }, 195 | "language_info": { 196 | "mimetype": "text/x-python", 197 | "nbconvert_exporter": "python", 198 | "version": "3.6.8", 199 | "name": "python", 200 | "pygments_lexer": "ipython3", 201 | "file_extension": ".py", 202 | "codemirror_mode": { 203 | "version": 3, 204 | "name": "ipython" 205 | } 206 | } 207 | } 208 | } -------------------------------------------------------------------------------- /AssignmentML4.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat_minor": 1, 3 | "cells": [ 4 | { 5 | "source": "This is the last assignment for the Coursera course \"Advanced Machine Learning and Signal Processing\"\n\nJust execute all cells one after the other and you are done - just note that in the last one you should update your email address (the one you've used for coursera) and obtain a submission token, you get this from the programming assignment directly on coursera.\n\nPlease fill in the sections labelled with \"###YOUR_CODE_GOES_HERE###\"\n\nThe purpose of this assignment is to learn how feature engineering boosts model performance. You will apply Discrete Fourier Transformation on the accelerometer sensor time series and therefore transforming the dataset from the time to the frequency domain. \n\nAfter that, you\u2019ll use a classification algorithm of your choice to create a model and submit the new predictions to the grader. Done.\n\nPlease make sure you run this notebook from an Apache Spark 2.3 notebook.\n\nSo the first thing we need to ensure is that we are on the latest version of SystemML, which is 1.3.0 (as of 20th March'19) Please use the code block below to check if you are already on 1.3.0 or higher. 1.3 contains a necessary fix, that's we are running against the SNAPSHOT\n", 6 | "cell_type": "markdown", 7 | "metadata": {} 8 | }, 9 | { 10 | "execution_count": 1, 11 | "cell_type": "code", 12 | "metadata": {}, 13 | "outputs": [ 14 | { 15 | "output_type": "stream", 16 | "name": "stdout", 17 | "text": "Waiting for a Spark session to start...\nSpark Initialization Done! ApplicationId = app-20190903121131-0001\nKERNEL_ID = 56e53b6b-9cc4-4cc3-9ded-5a71ef9f3f17\n" 18 | }, 19 | { 20 | "execution_count": 1, 21 | "metadata": {}, 22 | "data": { 23 | "text/plain": "'1.3.0-SNAPSHOT'" 24 | }, 25 | "output_type": "execute_result" 26 | } 27 | ], 28 | "source": "from systemml import MLContext\nml = MLContext(spark)\nml.version()" 29 | }, 30 | { 31 | "source": "\n\nIf you are blow version 1.3.0, or you got the error message \"No module named 'systemml'\" please execute the next two code blocks and then\n\n# PLEASE RESTART THE KERNEL !!!\n\nOtherwise your changes won't take effect, just double-check every time you run this notebook if you are on SystemML 1.3\n", 32 | "cell_type": "markdown", 33 | "metadata": {} 34 | }, 35 | { 36 | "execution_count": 2, 37 | "cell_type": "code", 38 | "metadata": {}, 39 | "outputs": [ 40 | { 41 | "output_type": "stream", 42 | "name": "stdout", 43 | "text": "Collecting https://github.com/IBM/coursera/blob/master/systemml-1.3.0-SNAPSHOT-python.tar.gz?raw=true\n Using cached https://github.com/IBM/coursera/blob/master/systemml-1.3.0-SNAPSHOT-python.tar.gz?raw=true\nCollecting numpy>=1.8.2 (from systemml==1.3.0)\n Using cached https://files.pythonhosted.org/packages/75/92/57179ed45307ec6179e344231c47da7f3f3da9e2eee5c8ab506bd279ce4e/numpy-1.17.1-cp36-cp36m-manylinux1_x86_64.whl\nCollecting scipy>=0.15.1 (from systemml==1.3.0)\n Using cached https://files.pythonhosted.org/packages/29/50/a552a5aff252ae915f522e44642bb49a7b7b31677f9580cfd11bcc869976/scipy-1.3.1-cp36-cp36m-manylinux1_x86_64.whl\nCollecting pandas (from systemml==1.3.0)\n Using cached https://files.pythonhosted.org/packages/73/9b/52e228545d14f14bb2a1622e225f38463c8726645165e1cb7dde95bfe6d4/pandas-0.25.1-cp36-cp36m-manylinux1_x86_64.whl\nCollecting scikit-learn (from systemml==1.3.0)\n Using cached https://files.pythonhosted.org/packages/a0/c5/d2238762d780dde84a20b8c761f563fe882b88c5a5fb03c056547c442a19/scikit_learn-0.21.3-cp36-cp36m-manylinux1_x86_64.whl\nCollecting Pillow>=2.0.0 (from systemml==1.3.0)\n Using cached https://files.pythonhosted.org/packages/14/41/db6dec65ddbc176a59b89485e8cc136a433ed9c6397b6bfe2cd38412051e/Pillow-6.1.0-cp36-cp36m-manylinux1_x86_64.whl\nCollecting pytz>=2017.2 (from pandas->systemml==1.3.0)\n Using cached https://files.pythonhosted.org/packages/87/76/46d697698a143e05f77bec5a526bf4e56a0be61d63425b68f4ba553b51f2/pytz-2019.2-py2.py3-none-any.whl\nCollecting python-dateutil>=2.6.1 (from pandas->systemml==1.3.0)\n Using cached https://files.pythonhosted.org/packages/41/17/c62faccbfbd163c7f57f3844689e3a78bae1f403648a6afb1d0866d87fbb/python_dateutil-2.8.0-py2.py3-none-any.whl\nCollecting joblib>=0.11 (from scikit-learn->systemml==1.3.0)\n Using cached https://files.pythonhosted.org/packages/cd/c1/50a758e8247561e58cb87305b1e90b171b8c767b15b12a1734001f41d356/joblib-0.13.2-py2.py3-none-any.whl\nCollecting six>=1.5 (from python-dateutil>=2.6.1->pandas->systemml==1.3.0)\n Using cached https://files.pythonhosted.org/packages/73/fb/00a976f728d0d1fecfe898238ce23f502a721c0ac0ecfedb80e0d88c64e9/six-1.12.0-py2.py3-none-any.whl\nBuilding wheels for collected packages: systemml\n Building wheel for systemml (setup.py) ... \u001b[?25ldone\n\u001b[?25h Stored in directory: /home/spark/shared/.cache/pip/wheels/aa/bf/28/4344dd13abd8b9b6cbd4032baf4b851873d2e2288a65631fd2\nSuccessfully built systemml\n\u001b[31mtensorflow 1.13.1 requires tensorboard<1.14.0,>=1.13.0, which is not installed.\u001b[0m\n\u001b[31mibm-cos-sdk-core 2.4.3 has requirement urllib3<1.25,>=1.20, but you'll have urllib3 1.25.3 which is incompatible.\u001b[0m\n\u001b[31mbotocore 1.12.82 has requirement urllib3<1.25,>=1.20, but you'll have urllib3 1.25.3 which is incompatible.\u001b[0m\nInstalling collected packages: numpy, scipy, pytz, six, python-dateutil, pandas, joblib, scikit-learn, Pillow, systemml\nSuccessfully installed Pillow-6.1.0 joblib-0.13.2 numpy-1.17.1 pandas-0.25.1 python-dateutil-2.8.0 pytz-2019.2 scikit-learn-0.21.3 scipy-1.3.1 six-1.12.0 systemml-1.3.0\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/scikit_learn-0.21.3.dist-info already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/pytz-2019.2.dist-info already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/six.py already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/systemml already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/systemml-1.3.0.dist-info already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/python_dateutil-2.8.0.dist-info already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/pandas-0.25.1.dist-info already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/joblib-0.13.2.dist-info already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/pytz already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/joblib already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/__pycache__ already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/pandas already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/scipy-1.3.1.dist-info already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/scipy already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/numpy already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/numpy-1.17.1.dist-info already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/sklearn already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/dateutil already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/Pillow-6.1.0.dist-info already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/six-1.12.0.dist-info already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/PIL already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/bin already exists. Specify --upgrade to force replacement.\u001b[0m\n" 44 | } 45 | ], 46 | "source": "!pip install https://github.com/IBM/coursera/blob/master/systemml-1.3.0-SNAPSHOT-python.tar.gz?raw=true" 47 | }, 48 | { 49 | "source": "\n\nNow we need to create two sym links that the newest version is picket up - this is a workaround and will be removed as soon as SystemML 1.3 will be pre-installed on Watson Studio once officially released.\n", 50 | "cell_type": "markdown", 51 | "metadata": {} 52 | }, 53 | { 54 | "execution_count": 3, 55 | "cell_type": "code", 56 | "metadata": {}, 57 | "outputs": [], 58 | "source": "!ln -s -f ~/user-libs/python3/systemml/systemml-java/systemml-1.3.0-SNAPSHOT-extra.jar ~/user-libs/spark2/systemml-1.3.0-SNAPSHOT-extra.jar\n!ln -s -f ~/user-libs/python3/systemml/systemml-java/systemml-1.3.0-SNAPSHOT.jar ~/user-libs/spark2/systemml-1.3.0-SNAPSHOT.jar" 59 | }, 60 | { 61 | "source": "# Please now restart the kernel and start from the beginning to make sure you've installed SystemML 1.3\n\nLet's download the test data since it's so small we don't use COS (IBM Cloud Object Store) here", 62 | "cell_type": "markdown", 63 | "metadata": {} 64 | }, 65 | { 66 | "execution_count": 4, 67 | "cell_type": "code", 68 | "metadata": {}, 69 | "outputs": [ 70 | { 71 | "output_type": "stream", 72 | "name": "stdout", 73 | "text": "--2019-09-03 12:12:02-- https://github.com/IBM/coursera/blob/master/coursera_ml/shake.parquet?raw=true\nResolving github.com (github.com)... 140.82.113.3\nConnecting to github.com (github.com)|140.82.113.3|:443... connected.\nHTTP request sent, awaiting response... 302 Found\nLocation: https://github.com/IBM/coursera/raw/master/coursera_ml/shake.parquet [following]\n--2019-09-03 12:12:08-- https://github.com/IBM/coursera/raw/master/coursera_ml/shake.parquet\nReusing existing connection to github.com:443.\nHTTP request sent, awaiting response... 302 Found\nLocation: https://raw.githubusercontent.com/IBM/coursera/master/coursera_ml/shake.parquet [following]\n--2019-09-03 12:12:08-- https://raw.githubusercontent.com/IBM/coursera/master/coursera_ml/shake.parquet\nResolving raw.githubusercontent.com (raw.githubusercontent.com)... 199.232.8.133\nConnecting to raw.githubusercontent.com (raw.githubusercontent.com)|199.232.8.133|:443... connected.\nHTTP request sent, awaiting response... 200 OK\nLength: 74727 (73K) [application/octet-stream]\nSaving to: 'shake.parquet?raw=true'\n\nshake.parquet?raw=t 100%[===================>] 72.98K --.-KB/s in 0.003s \n\n2019-09-03 12:12:08 (24.8 MB/s) - 'shake.parquet?raw=true' saved [74727/74727]\n\n" 74 | } 75 | ], 76 | "source": "!wget https://github.com/IBM/coursera/blob/master/coursera_ml/shake.parquet?raw=true\n!mv shake.parquet?raw=true shake.parquet" 77 | }, 78 | { 79 | "source": "Now it\u2019s time to read the sensor data and create a temporary query table.", 80 | "cell_type": "markdown", 81 | "metadata": {} 82 | }, 83 | { 84 | "execution_count": 5, 85 | "cell_type": "code", 86 | "metadata": {}, 87 | "outputs": [], 88 | "source": "df=spark.read.parquet('shake.parquet')" 89 | }, 90 | { 91 | "execution_count": 6, 92 | "cell_type": "code", 93 | "metadata": {}, 94 | "outputs": [ 95 | { 96 | "output_type": "stream", 97 | "name": "stdout", 98 | "text": "+-----+---------+-----+-----+-----+\n|CLASS| SENSORID| X| Y| Z|\n+-----+---------+-----+-----+-----+\n| 2| qqqqqqqq| 0.12| 0.12| 0.12|\n| 2|aUniqueID| 0.03| 0.03| 0.03|\n| 2| qqqqqqqq|-3.84|-3.84|-3.84|\n| 2| 12345678| -0.1| -0.1| -0.1|\n| 2| 12345678|-0.15|-0.15|-0.15|\n| 2| 12345678| 0.47| 0.47| 0.47|\n| 2| 12345678|-0.06|-0.06|-0.06|\n| 2| 12345678|-0.09|-0.09|-0.09|\n| 2| 12345678| 0.21| 0.21| 0.21|\n| 2| 12345678|-0.08|-0.08|-0.08|\n| 2| 12345678| 0.44| 0.44| 0.44|\n| 2| gholi| 0.76| 0.76| 0.76|\n| 2| gholi| 1.62| 1.62| 1.62|\n| 2| gholi| 5.81| 5.81| 5.81|\n| 2| bcbcbcbc| 0.58| 0.58| 0.58|\n| 2| bcbcbcbc|-8.24|-8.24|-8.24|\n| 2| bcbcbcbc|-0.45|-0.45|-0.45|\n| 2| bcbcbcbc| 1.03| 1.03| 1.03|\n| 2|aUniqueID|-0.05|-0.05|-0.05|\n| 2| qqqqqqqq|-0.44|-0.44|-0.44|\n+-----+---------+-----+-----+-----+\nonly showing top 20 rows\n\n" 99 | } 100 | ], 101 | "source": "df.show()" 102 | }, 103 | { 104 | "execution_count": 7, 105 | "cell_type": "code", 106 | "metadata": {}, 107 | "outputs": [ 108 | { 109 | "output_type": "stream", 110 | "name": "stdout", 111 | "text": "Collecting pixiedust\nCollecting lxml (from pixiedust)\n Using cached https://files.pythonhosted.org/packages/ec/be/5ab8abdd8663c0386ec2dd595a5bc0e23330a0549b8a91e32f38c20845b6/lxml-4.4.1-cp36-cp36m-manylinux1_x86_64.whl\nCollecting geojson (from pixiedust)\n Using cached https://files.pythonhosted.org/packages/e4/8d/9e28e9af95739e6d2d2f8d4bef0b3432da40b7c3588fbad4298c1be09e48/geojson-2.5.0-py2.py3-none-any.whl\nCollecting mpld3 (from pixiedust)\nCollecting astunparse (from pixiedust)\n Using cached https://files.pythonhosted.org/packages/2e/37/5dd0dd89b87bb5f0f32a7e775458412c52d78f230ab8d0c65df6aabc4479/astunparse-1.6.2-py2.py3-none-any.whl\nCollecting markdown (from pixiedust)\n Using cached https://files.pythonhosted.org/packages/c0/4e/fd492e91abdc2d2fcb70ef453064d980688762079397f779758e055f6575/Markdown-3.1.1-py2.py3-none-any.whl\nCollecting colour (from pixiedust)\n Using cached https://files.pythonhosted.org/packages/74/46/e81907704ab203206769dee1385dc77e1407576ff8f50a0681d0a6b541be/colour-0.1.5-py2.py3-none-any.whl\nCollecting requests (from pixiedust)\n Using cached https://files.pythonhosted.org/packages/51/bd/23c926cd341ea6b7dd0b2a00aba99ae0f828be89d72b2190f27c11d4b7fb/requests-2.22.0-py2.py3-none-any.whl\nCollecting six<2.0,>=1.6.1 (from astunparse->pixiedust)\n Using cached https://files.pythonhosted.org/packages/73/fb/00a976f728d0d1fecfe898238ce23f502a721c0ac0ecfedb80e0d88c64e9/six-1.12.0-py2.py3-none-any.whl\nCollecting wheel<1.0,>=0.23.0 (from astunparse->pixiedust)\n Using cached https://files.pythonhosted.org/packages/00/83/b4a77d044e78ad1a45610eb88f745be2fd2c6d658f9798a15e384b7d57c9/wheel-0.33.6-py2.py3-none-any.whl\nCollecting setuptools>=36 (from markdown->pixiedust)\n Using cached https://files.pythonhosted.org/packages/b2/86/095d2f7829badc207c893dd4ac767e871f6cd547145df797ea26baea4e2e/setuptools-41.2.0-py2.py3-none-any.whl\nCollecting certifi>=2017.4.17 (from requests->pixiedust)\n Using cached https://files.pythonhosted.org/packages/69/1b/b853c7a9d4f6a6d00749e94eb6f3a041e342a885b87340b79c1ef73e3a78/certifi-2019.6.16-py2.py3-none-any.whl\nCollecting idna<2.9,>=2.5 (from requests->pixiedust)\n Using cached https://files.pythonhosted.org/packages/14/2c/cd551d81dbe15200be1cf41cd03869a46fe7226e7450af7a6545bfc474c9/idna-2.8-py2.py3-none-any.whl\nCollecting urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 (from requests->pixiedust)\n Using cached https://files.pythonhosted.org/packages/e6/60/247f23a7121ae632d62811ba7f273d0e58972d75e58a94d329d51550a47d/urllib3-1.25.3-py2.py3-none-any.whl\nCollecting chardet<3.1.0,>=3.0.2 (from requests->pixiedust)\n Using cached https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl\n\u001b[31mtensorflow 1.13.1 requires tensorboard<1.14.0,>=1.13.0, which is not installed.\u001b[0m\n\u001b[31mspyder 3.3.3 requires pyqt5<=5.12; python_version >= \"3\", which is not installed.\u001b[0m\n\u001b[31mibm-cos-sdk-core 2.4.3 has requirement urllib3<1.25,>=1.20, but you'll have urllib3 1.25.3 which is incompatible.\u001b[0m\n\u001b[31mbotocore 1.12.82 has requirement urllib3<1.25,>=1.20, but you'll have urllib3 1.25.3 which is incompatible.\u001b[0m\nInstalling collected packages: lxml, geojson, mpld3, six, wheel, astunparse, setuptools, markdown, colour, certifi, idna, urllib3, chardet, requests, pixiedust\nSuccessfully installed astunparse-1.6.2 certifi-2019.6.16 chardet-3.0.4 colour-0.1.5 geojson-2.5.0 idna-2.8 lxml-4.4.1 markdown-3.1.1 mpld3-0.3 pixiedust-1.1.17 requests-2.22.0 setuptools-41.2.0 six-1.12.0 urllib3-1.25.3 wheel-0.33.6\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/colour.py already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/requests-2.22.0.dist-info already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/pixiedust-1.1.17.dist-info already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/colour-0.1.5.dist-info already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/lxml already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/Markdown-3.1.1.dist-info already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/chardet already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/easy_install.py already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/six.py already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/certifi-2019.6.16.dist-info already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/lxml-4.4.1.dist-info already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/chardet-3.0.4.dist-info already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/idna already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/markdown already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/wheel already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/mpld3-0.3.dist-info already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/certifi already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/idna-2.8.dist-info already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/install already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/urllib3-1.25.3.dist-info already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/__pycache__ already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/pkg_resources already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/setuptools already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/setuptools-41.2.0.dist-info already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/mpld3 already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/urllib3 already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/geojson already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/astunparse already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/requests already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/geojson-2.5.0.dist-info already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/pixiedust already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/astunparse-1.6.2.dist-info already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/six-1.12.0.dist-info already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/wheel-0.33.6.dist-info already exists. Specify --upgrade to force replacement.\u001b[0m\n\u001b[33mTarget directory /home/spark/shared/user-libs/python3/bin already exists. Specify --upgrade to force replacement.\u001b[0m\n" 112 | } 113 | ], 114 | "source": "!pip install pixiedust" 115 | }, 116 | { 117 | "execution_count": null, 118 | "cell_type": "code", 119 | "metadata": { 120 | "pixiedust": { 121 | "displayParams": { 122 | "handlerId": "tableView" 123 | } 124 | } 125 | }, 126 | "outputs": [], 127 | "source": "import pixiedust\ndisplay(df)" 128 | }, 129 | { 130 | "execution_count": 9, 131 | "cell_type": "code", 132 | "metadata": {}, 133 | "outputs": [], 134 | "source": "df.createOrReplaceTempView(\"df\")" 135 | }, 136 | { 137 | "source": "We\u2019ll use Apache SystemML to implement Discrete Fourier Transformation. This way all computation continues to happen on the Apache Spark cluster for advanced scalability and performance.", 138 | "cell_type": "markdown", 139 | "metadata": {} 140 | }, 141 | { 142 | "execution_count": 10, 143 | "cell_type": "code", 144 | "metadata": {}, 145 | "outputs": [], 146 | "source": "from systemml import MLContext, dml\nml = MLContext(spark)" 147 | }, 148 | { 149 | "source": "As you\u2019ve learned from the lecture, implementing Discrete Fourier Transformation in a linear algebra programming language is simple. Apache SystemML DML is such a language and as you can see the implementation is straightforward and doesn\u2019t differ too much from the mathematical definition (Just note that the sum operator has been swapped with a vector dot product using the %*% syntax borrowed from R\n):\n\n\n\n", 150 | "cell_type": "markdown", 151 | "metadata": {} 152 | }, 153 | { 154 | "execution_count": 11, 155 | "cell_type": "code", 156 | "metadata": {}, 157 | "outputs": [], 158 | "source": "dml_script = '''\nPI = 3.141592654\nN = nrow(signal)\n\nn = seq(0, N-1, 1)\nk = seq(0, N-1, 1)\n\nM = (n %*% t(k))*(2*PI/N)\n\nXa = cos(M) %*% signal\nXb = sin(M) %*% signal\n\nDFT = cbind(Xa, Xb)\n'''" 159 | }, 160 | { 161 | "source": "Now it\u2019s time to create a function which takes a single row Apache Spark data frame as argument (the one containing the accelerometer measurement time series for one axis) and returns the Fourier transformation of it. In addition, we are adding an index column for later joining all axis together and renaming the columns to appropriate names. The result of this function is an Apache Spark DataFrame containing the Fourier Transformation of its input in two columns. \n", 162 | "cell_type": "markdown", 163 | "metadata": {} 164 | }, 165 | { 166 | "execution_count": 12, 167 | "cell_type": "code", 168 | "metadata": {}, 169 | "outputs": [], 170 | "source": "from pyspark.sql.functions import monotonically_increasing_id\n\ndef dft_systemml(signal,name):\n prog = dml(dml_script).input('signal', signal).output('DFT')\n \n return (\n\n #execute the script inside the SystemML engine running on top of Apache Spark\n ml.execute(prog) \n \n #read result from SystemML execution back as SystemML Matrix\n .get('DFT') \n \n #convert SystemML Matrix to ApacheSpark DataFrame \n .toDF() \n \n #rename default column names\n .selectExpr('C1 as %sa' % (name), 'C2 as %sb' % (name)) \n \n #add unique ID per row for later joining\n .withColumn(\"id\", monotonically_increasing_id())\n )\n \n\n\n" 171 | }, 172 | { 173 | "source": "Now it\u2019s time to create DataFrames containing for each accelerometer sensor axis and one for each class. This means you\u2019ll get 6 DataFrames. Please implement this using the relational API of DataFrames or SparkSQL. Please use class 1 and 2 and not 0 and 1.\n", 174 | "cell_type": "markdown", 175 | "metadata": {} 176 | }, 177 | { 178 | "execution_count": 13, 179 | "cell_type": "code", 180 | "metadata": {}, 181 | "outputs": [], 182 | "source": "x0 = spark.sql(\"SELECT X from df where class = 0\")\ny0 = spark.sql(\"SELECT Y from df where class = 0\")\nz0 = spark.sql(\"SELECT Z from df where class = 0\")\nx1 = spark.sql(\"SELECT X from df where class = 1\")\ny1 = spark.sql(\"SELECT Y from df where class = 1\")\nz1 = spark.sql(\"SELECT Z from df where class = 1\")" 183 | }, 184 | { 185 | "source": "Since we\u2019ve created this cool DFT function before, we can just call it for each of the 6 DataFrames now. And since the result of this function call is a DataFrame again we can use the pyspark best practice in simply calling methods on it sequentially. So what we are doing is the following:\n\n- Calling DFT for each class and accelerometer sensor axis.\n- Joining them together on the ID column. \n- Re-adding a column containing the class index.\n- Stacking both Dataframes for each classes together\n\n", 186 | "cell_type": "markdown", 187 | "metadata": {} 188 | }, 189 | { 190 | "execution_count": 14, 191 | "cell_type": "code", 192 | "metadata": {}, 193 | "outputs": [ 194 | { 195 | "output_type": "stream", 196 | "name": "stdout", 197 | "text": "SystemML Statistics:\nTotal execution time:\t\t0.012 sec.\nNumber of executed Spark inst:\t0.\n\n\nSystemML Statistics:\nTotal execution time:\t\t0.000 sec.\nNumber of executed Spark inst:\t0.\n\n\nSystemML Statistics:\nTotal execution time:\t\t0.000 sec.\nNumber of executed Spark inst:\t0.\n\n\nSystemML Statistics:\nTotal execution time:\t\t0.566 sec.\nNumber of executed Spark inst:\t0.\n\n\nSystemML Statistics:\nTotal execution time:\t\t0.417 sec.\nNumber of executed Spark inst:\t0.\n\n\nSystemML Statistics:\nTotal execution time:\t\t0.301 sec.\nNumber of executed Spark inst:\t0.\n\n\n+-----------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+-----+\n| id| xa| xb| ya| yb| za| zb|class|\n+-----------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+-----+\n| 8589934592| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0|\n| 0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0|\n| 8589934593| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0|\n|17179869186| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0|\n| 1| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0|\n|17179869185| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0|\n|17179869187| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0|\n| 8589934594| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0|\n| 8589934595| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0|\n|25769803776| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0|\n| 2| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0|\n|25769803777| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0|\n|17179869184| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0|\n|25769803778| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0|\n| 26| 0.05842761397588824|-0.01175613530955...| 0.05842761397588824|-0.01175613530955...| 0.05842761397588824|-0.01175613530955...| 1|\n|17179869191|-0.10895275079055323|-0.04017484023996344|-0.10895275079055323|-0.04017484023996344|-0.10895275079055323|-0.04017484023996344| 1|\n| 8589934592| 0.02589077121123453|0.024145789283483897| 0.02589077121123453|0.024145789283483897| 0.02589077121123453|0.024145789283483897| 1|\n| 19| 0.07600499297235766|-0.04165706301892977| 0.07600499297235766|-0.04165706301892977| 0.07600499297235766|-0.04165706301892977| 1|\n| 0|-0.05120371300320002|0.015844251463831505|-0.05120371300320002|0.015844251463831505|-0.05120371300320002|0.015844251463831505| 1|\n|17179869201| 0.03912775214058598|-0.09049016952668232| 0.03912775214058598|-0.09049016952668232| 0.03912775214058598|-0.09049016952668232| 1|\n+-----------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+-----+\nonly showing top 20 rows\n\n" 198 | } 199 | ], 200 | "source": "from pyspark.sql.functions import lit\n\ndf_class_0 = dft_systemml(x0,'x') \\\n .join(dft_systemml(y0,'y'), on=['id'], how='inner') \\\n .join(dft_systemml(z0,'z'), on=['id'], how='inner') \\\n .withColumn('class', lit(0))\n \ndf_class_1 = dft_systemml(x1,'x') \\\n .join(dft_systemml(y1,'y'), on=['id'], how='inner') \\\n .join(dft_systemml(z1,'z'), on=['id'], how='inner') \\\n .withColumn('class', lit(1))\n\ndf_dft = df_class_0.union(df_class_1)\n\ndf_dft.show()" 201 | }, 202 | { 203 | "source": "Please create a VectorAssembler which consumes the newly created DFT columns and produces a column \u201cfeatures\u201d\n", 204 | "cell_type": "markdown", 205 | "metadata": {} 206 | }, 207 | { 208 | "execution_count": 15, 209 | "cell_type": "code", 210 | "metadata": {}, 211 | "outputs": [], 212 | "source": "from pyspark.ml.feature import VectorAssembler" 213 | }, 214 | { 215 | "execution_count": 17, 216 | "cell_type": "code", 217 | "metadata": {}, 218 | "outputs": [], 219 | "source": "vectorAssembler = VectorAssembler(\n inputCols=[\"xa\", \"xb\", \"ya\", \"yb\", \"za\", \"zb\"],\n outputCol=\"features\")" 220 | }, 221 | { 222 | "source": "Please insatiate a classifier from the SparkML package and assign it to the classifier variable. Make sure to set the \u201cclass\u201d column as target.\n", 223 | "cell_type": "markdown", 224 | "metadata": {} 225 | }, 226 | { 227 | "execution_count": 19, 228 | "cell_type": "code", 229 | "metadata": {}, 230 | "outputs": [], 231 | "source": "from pyspark.ml.classification import RandomForestClassifier\nclassifier = RandomForestClassifier(labelCol=\"class\", featuresCol=\"features\", numTrees=10)" 232 | }, 233 | { 234 | "source": "Let\u2019s train and evaluate\u2026\n", 235 | "cell_type": "markdown", 236 | "metadata": {} 237 | }, 238 | { 239 | "execution_count": 20, 240 | "cell_type": "code", 241 | "metadata": {}, 242 | "outputs": [], 243 | "source": "from pyspark.ml import Pipeline\npipeline = Pipeline(stages=[vectorAssembler, classifier])" 244 | }, 245 | { 246 | "execution_count": 21, 247 | "cell_type": "code", 248 | "metadata": {}, 249 | "outputs": [], 250 | "source": "model = pipeline.fit(df_dft)" 251 | }, 252 | { 253 | "execution_count": 22, 254 | "cell_type": "code", 255 | "metadata": {}, 256 | "outputs": [], 257 | "source": "prediction = model.transform(df_dft)" 258 | }, 259 | { 260 | "execution_count": 23, 261 | "cell_type": "code", 262 | "metadata": {}, 263 | "outputs": [ 264 | { 265 | "output_type": "stream", 266 | "name": "stdout", 267 | "text": "+-----------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+-----+--------------------+-------------+-----------+----------+\n| id| xa| xb| ya| yb| za| zb|class| features|rawPrediction|probability|prediction|\n+-----------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+-----+--------------------+-------------+-----------+----------+\n| 8589934592| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0| (6,[],[])| [10.0,0.0]| [1.0,0.0]| 0.0|\n| 0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0| (6,[],[])| [10.0,0.0]| [1.0,0.0]| 0.0|\n| 8589934593| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0| (6,[],[])| [10.0,0.0]| [1.0,0.0]| 0.0|\n|17179869186| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0| (6,[],[])| [10.0,0.0]| [1.0,0.0]| 0.0|\n| 1| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0| (6,[],[])| [10.0,0.0]| [1.0,0.0]| 0.0|\n|17179869185| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0| (6,[],[])| [10.0,0.0]| [1.0,0.0]| 0.0|\n|17179869187| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0| (6,[],[])| [10.0,0.0]| [1.0,0.0]| 0.0|\n| 8589934594| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0| (6,[],[])| [10.0,0.0]| [1.0,0.0]| 0.0|\n| 8589934595| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0| (6,[],[])| [10.0,0.0]| [1.0,0.0]| 0.0|\n|25769803776| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0| (6,[],[])| [10.0,0.0]| [1.0,0.0]| 0.0|\n| 2| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0| (6,[],[])| [10.0,0.0]| [1.0,0.0]| 0.0|\n|25769803777| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0| (6,[],[])| [10.0,0.0]| [1.0,0.0]| 0.0|\n|17179869184| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0| (6,[],[])| [10.0,0.0]| [1.0,0.0]| 0.0|\n|25769803778| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0| (6,[],[])| [10.0,0.0]| [1.0,0.0]| 0.0|\n| 26| 0.05842761397588824|-0.01175613530955...| 0.05842761397588824|-0.01175613530955...| 0.05842761397588824|-0.01175613530955...| 1|[0.05842761397588...| [0.0,10.0]| [0.0,1.0]| 1.0|\n|17179869191|-0.10895275079055323|-0.04017484023996344|-0.10895275079055323|-0.04017484023996344|-0.10895275079055323|-0.04017484023996344| 1|[-0.1089527507905...| [0.0,10.0]| [0.0,1.0]| 1.0|\n| 8589934592| 0.02589077121123453|0.024145789283483897| 0.02589077121123453|0.024145789283483897| 0.02589077121123453|0.024145789283483897| 1|[0.02589077121123...| [0.0,10.0]| [0.0,1.0]| 1.0|\n| 19| 0.07600499297235766|-0.04165706301892977| 0.07600499297235766|-0.04165706301892977| 0.07600499297235766|-0.04165706301892977| 1|[0.07600499297235...| [0.0,10.0]| [0.0,1.0]| 1.0|\n| 0|-0.05120371300320002|0.015844251463831505|-0.05120371300320002|0.015844251463831505|-0.05120371300320002|0.015844251463831505| 1|[-0.0512037130032...| [0.0,10.0]| [0.0,1.0]| 1.0|\n|17179869201| 0.03912775214058598|-0.09049016952668232| 0.03912775214058598|-0.09049016952668232| 0.03912775214058598|-0.09049016952668232| 1|[0.03912775214058...| [0.0,10.0]| [0.0,1.0]| 1.0|\n+-----------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+-----+--------------------+-------------+-----------+----------+\nonly showing top 20 rows\n\n" 268 | } 269 | ], 270 | "source": "prediction.show()" 271 | }, 272 | { 273 | "execution_count": 24, 274 | "cell_type": "code", 275 | "metadata": {}, 276 | "outputs": [ 277 | { 278 | "execution_count": 24, 279 | "metadata": {}, 280 | "data": { 281 | "text/plain": "1.0" 282 | }, 283 | "output_type": "execute_result" 284 | } 285 | ], 286 | "source": "from pyspark.ml.evaluation import MulticlassClassificationEvaluator\nbinEval = MulticlassClassificationEvaluator().setMetricName(\"accuracy\") .setPredictionCol(\"prediction\").setLabelCol(\"class\") \nbinEval.evaluate(prediction) " 287 | }, 288 | { 289 | "source": "If you are happy with the result (I\u2019m happy with > 0.8) please submit your solution to the grader by executing the following cells, please don\u2019t forget to obtain an assignment submission token (secret) from the Courera\u2019s graders web page and paste it to the \u201csecret\u201d variable below, including your email address you\u2019ve used for Coursera. \n", 290 | "cell_type": "markdown", 291 | "metadata": {} 292 | }, 293 | { 294 | "execution_count": 25, 295 | "cell_type": "code", 296 | "metadata": {}, 297 | "outputs": [], 298 | "source": "!rm -Rf a2_m4.json" 299 | }, 300 | { 301 | "execution_count": 26, 302 | "cell_type": "code", 303 | "metadata": {}, 304 | "outputs": [], 305 | "source": "prediction = prediction.repartition(1)\nprediction.write.json('a2_m4.json')" 306 | }, 307 | { 308 | "execution_count": 27, 309 | "cell_type": "code", 310 | "metadata": {}, 311 | "outputs": [ 312 | { 313 | "output_type": "stream", 314 | "name": "stdout", 315 | "text": "--2019-09-03 12:14:10-- http://wget/\nResolving wget (wget)... failed: Name or service not known.\nwget: unable to resolve host address 'wget'\n--2019-09-03 12:14:10-- https://raw.githubusercontent.com/IBM/coursera/master/rklib.py\nResolving raw.githubusercontent.com (raw.githubusercontent.com)... 199.232.8.133\nConnecting to raw.githubusercontent.com (raw.githubusercontent.com)|199.232.8.133|:443... connected.\nHTTP request sent, awaiting response... 200 OK\nLength: 2540 (2.5K) [text/plain]\nSaving to: 'rklib.py'\n\nrklib.py 100%[===================>] 2.48K --.-KB/s in 0s \n\n2019-09-03 12:14:10 (54.6 MB/s) - 'rklib.py' saved [2540/2540]\n\nFINISHED --2019-09-03 12:14:10--\nTotal wall clock time: 0.6s\nDownloaded: 1 files, 2.5K in 0s (54.6 MB/s)\n" 316 | } 317 | ], 318 | "source": "!rm -f rklib.py\n!wget wget https://raw.githubusercontent.com/IBM/coursera/master/rklib.py" 319 | }, 320 | { 321 | "execution_count": 28, 322 | "cell_type": "code", 323 | "metadata": {}, 324 | "outputs": [], 325 | "source": "from rklib import zipit\nzipit('a2_m4.json.zip','a2_m4.json')" 326 | }, 327 | { 328 | "execution_count": 29, 329 | "cell_type": "code", 330 | "metadata": {}, 331 | "outputs": [], 332 | "source": "!base64 a2_m4.json.zip > a2_m4.json.zip.base64" 333 | }, 334 | { 335 | "execution_count": 30, 336 | "cell_type": "code", 337 | "metadata": {}, 338 | "outputs": [ 339 | { 340 | "output_type": "stream", 341 | "name": "stdout", 342 | "text": "Submission successful, please check on the coursera grader page for the status\n-------------------------\n{\"elements\":[{\"itemId\":\"B8wXV\",\"id\":\"f_F-qCtuEei_fRLwaVDk3g~B8wXV~VnH-vc5EEem5hRKzMl4oag\",\"courseId\":\"f_F-qCtuEei_fRLwaVDk3g\"}],\"paging\":{},\"linked\":{}}\n-------------------------\n" 343 | } 344 | ], 345 | "source": "from rklib import submit\nkey = \"-fBiYHYDEeiR4QqiFhAvkA\"\npart = \"IjtJk\"\nemail = \"shriganesh.patel@gmail.com\"\nsubmission_token = \"20qskVRSuQktqcMv\"\n\nwith open('a2_m4.json.zip.base64', 'r') as myfile:\n data=myfile.read()\nsubmit(email, submission_token, key, part, [part], data)" 346 | } 347 | ], 348 | "metadata": { 349 | "kernelspec": { 350 | "display_name": "Python 3.6 with Spark", 351 | "name": "python36", 352 | "language": "python3" 353 | }, 354 | "language_info": { 355 | "mimetype": "text/x-python", 356 | "nbconvert_exporter": "python", 357 | "version": "3.6.8", 358 | "name": "python", 359 | "file_extension": ".py", 360 | "pygments_lexer": "ipython3", 361 | "codemirror_mode": { 362 | "version": 3, 363 | "name": "ipython" 364 | } 365 | } 366 | }, 367 | "nbformat": 4 368 | } -------------------------------------------------------------------------------- /ETL Exercise .ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat_minor": 1, 3 | "cells": [ 4 | { 5 | "execution_count": 1, 6 | "cell_type": "code", 7 | "metadata": {}, 8 | "outputs": [ 9 | { 10 | "output_type": "stream", 11 | "name": "stdout", 12 | "text": "Waiting for a Spark session to start...\nSpark Initialization Done! ApplicationId = app-20190831124229-0000\nKERNEL_ID = 09289198-fec6-4e04-a84b-c48131496234\nCloning into 'HMP_Dataset'...\nremote: Enumerating objects: 865, done.\u001b[K\nremote: Total 865 (delta 0), reused 0 (delta 0), pack-reused 865\u001b[K\nReceiving objects: 100% (865/865), 1010.96 KiB | 4.91 MiB/s, done.\nChecking out files: 100% (848/848), done.\n" 13 | } 14 | ], 15 | "source": "!rm -Rf HMP_Dataset\n!git clone https://github.com/wchill/HMP_Dataset" 16 | }, 17 | { 18 | "execution_count": 2, 19 | "cell_type": "code", 20 | "metadata": {}, 21 | "outputs": [ 22 | { 23 | "output_type": "stream", 24 | "name": "stdout", 25 | "text": "Accelerometer-2011-04-11-13-28-18-brush_teeth-f1.txt\r\nAccelerometer-2011-04-11-13-29-54-brush_teeth-f1.txt\r\nAccelerometer-2011-05-30-08-35-11-brush_teeth-f1.txt\r\nAccelerometer-2011-05-30-09-36-50-brush_teeth-f1.txt\r\nAccelerometer-2011-05-30-10-34-16-brush_teeth-m1.txt\r\nAccelerometer-2011-05-30-21-10-57-brush_teeth-f1.txt\r\nAccelerometer-2011-05-30-21-55-04-brush_teeth-m2.txt\r\nAccelerometer-2011-05-31-15-16-47-brush_teeth-f1.txt\r\nAccelerometer-2011-06-02-10-42-22-brush_teeth-f1.txt\r\nAccelerometer-2011-06-02-10-45-50-brush_teeth-f1.txt\r\nAccelerometer-2011-06-06-10-45-27-brush_teeth-f1.txt\r\nAccelerometer-2011-06-06-10-48-05-brush_teeth-f1.txt\r\n" 26 | } 27 | ], 28 | "source": "!ls HMP_Dataset/Brush_teeth" 29 | }, 30 | { 31 | "execution_count": 3, 32 | "cell_type": "code", 33 | "metadata": {}, 34 | "outputs": [], 35 | "source": "from pyspark.sql.types import StructType, StructField, IntegerType\n\nschema = StructType([\n StructField(\"x\", IntegerType(), True),\n StructField(\"y\", IntegerType(), True),\n StructField(\"z\", IntegerType(), True)])" 36 | }, 37 | { 38 | "execution_count": null, 39 | "cell_type": "code", 40 | "metadata": {}, 41 | "outputs": [ 42 | { 43 | "output_type": "stream", 44 | "name": "stdout", 45 | "text": "Accelerometer-2011-04-11-13-28-18-brush_teeth-f1.txt\nAccelerometer-2011-04-11-13-29-54-brush_teeth-f1.txt\nAccelerometer-2011-05-30-08-35-11-brush_teeth-f1.txt\nAccelerometer-2011-05-30-09-36-50-brush_teeth-f1.txt\nAccelerometer-2011-05-30-10-34-16-brush_teeth-m1.txt\nAccelerometer-2011-05-30-21-10-57-brush_teeth-f1.txt\nAccelerometer-2011-05-30-21-55-04-brush_teeth-m2.txt\nAccelerometer-2011-05-31-15-16-47-brush_teeth-f1.txt\nAccelerometer-2011-06-02-10-42-22-brush_teeth-f1.txt\nAccelerometer-2011-06-02-10-45-50-brush_teeth-f1.txt\nAccelerometer-2011-06-06-10-45-27-brush_teeth-f1.txt\nAccelerometer-2011-06-06-10-48-05-brush_teeth-f1.txt\nAccelerometer-2011-03-24-10-24-39-climb_stairs-f1.txt\nAccelerometer-2011-03-24-10-25-44-climb_stairs-f1.txt\nAccelerometer-2011-03-29-09-55-46-climb_stairs-f1.txt\nAccelerometer-2011-04-05-18-21-22-climb_stairs-f1.txt\nAccelerometer-2011-04-05-18-32-29-climb_stairs-f1.txt\nAccelerometer-2011-04-11-11-44-35-climb_stairs-f1.txt\nAccelerometer-2011-04-11-11-57-50-climb_stairs-f1.txt\nAccelerometer-2011-04-11-11-58-30-climb_stairs-f1.txt\nAccelerometer-2011-05-30-08-21-38-climb_stairs-f1.txt\nAccelerometer-2011-05-30-08-30-37-climb_stairs-f1.txt\nAccelerometer-2011-05-30-08-39-09-climb_stairs-f1.txt\nAccelerometer-2011-05-30-09-29-58-climb_stairs-f1.txt\nAccelerometer-2011-05-30-09-38-52-climb_stairs-f1.txt\nAccelerometer-2011-05-30-09-43-37-climb_stairs-f1.txt\nAccelerometer-2011-05-30-10-20-47-climb_stairs-m1.txt\nAccelerometer-2011-05-30-10-32-53-climb_stairs-m1.txt\nAccelerometer-2011-05-30-10-41-10-climb_stairs-m1.txt\nAccelerometer-2011-05-30-20-54-39-climb_stairs-f1.txt\nAccelerometer-2011-05-30-21-02-43-climb_stairs-f1.txt\nAccelerometer-2011-05-30-21-14-55-climb_stairs-f1.txt\nAccelerometer-2011-05-30-21-36-58-climb_stairs-m2.txt\nAccelerometer-2011-05-30-21-46-05-climb_stairs-m2.txt\nAccelerometer-2011-05-30-22-00-32-climb_stairs-m2.txt\nAccelerometer-2011-05-31-14-58-41-climb_stairs-f1.txt\nAccelerometer-2011-05-31-15-06-32-climb_stairs-f1.txt\nAccelerometer-2011-05-31-15-20-50-climb_stairs-f1.txt\nAccelerometer-2011-05-31-16-26-09-climb_stairs-f1.txt\nAccelerometer-2011-05-31-16-32-44-climb_stairs-f1.txt\nAccelerometer-2011-06-02-10-37-15-climb_stairs-f1.txt\nAccelerometer-2011-06-02-10-37-44-climb_stairs-f1.txt\nAccelerometer-2011-06-02-10-39-21-climb_stairs-f1.txt\nAccelerometer-2011-06-02-10-40-10-climb_stairs-f1.txt\nAccelerometer-2011-06-06-10-57-19-climb_stairs-f1.txt\nAccelerometer-2011-06-06-10-57-43-climb_stairs-f1.txt\nAccelerometer-2011-06-06-10-59-08-climb_stairs-f1.txt\nAccelerometer-2011-06-06-10-59-58-climb_stairs-f1.txt\nAccelerometer-2011-06-06-11-00-50-climb_stairs-f1.txt\nAccelerometer-2011-06-06-11-01-27-climb_stairs-f1.txt\nAccelerometer-2011-06-06-11-02-24-climb_stairs-f1.txt\nAccelerometer-2012-05-28-17-56-03-climb_stairs-m1.txt\nAccelerometer-2012-05-28-17-56-40-climb_stairs-m1.txt\nAccelerometer-2012-05-29-16-53-12-climb_stairs-f2.txt\nAccelerometer-2012-05-29-16-54-38-climb_stairs-f2.txt\nAccelerometer-2012-05-29-17-17-05-climb_stairs-m3.txt\nAccelerometer-2012-05-29-17-17-51-climb_stairs-m3.txt\nAccelerometer-2012-05-30-18-31-08-climb_stairs-f3.txt\nAccelerometer-2012-05-30-18-31-52-climb_stairs-f3.txt\nAccelerometer-2012-05-30-18-32-56-climb_stairs-f3.txt\nAccelerometer-2012-05-30-18-33-57-climb_stairs-f3.txt\nAccelerometer-2012-05-30-19-12-19-climb_stairs-m4.txt\nAccelerometer-2012-05-30-19-12-57-climb_stairs-m4.txt\nAccelerometer-2012-05-30-19-13-50-climb_stairs-m4.txt\nAccelerometer-2012-05-30-19-14-51-climb_stairs-m4.txt\nAccelerometer-2012-05-30-22-06-17-climb_stairs-m2.txt\nAccelerometer-2012-05-30-22-06-47-climb_stairs-m2.txt\nAccelerometer-2012-05-30-22-07-15-climb_stairs-m2.txt\nAccelerometer-2012-05-30-22-07-44-climb_stairs-m2.txt\nAccelerometer-2012-05-30-22-08-15-climb_stairs-m2.txt\nAccelerometer-2012-06-06-08-53-29-climb_stairs-m5.txt\nAccelerometer-2012-06-06-08-53-47-climb_stairs-m5.txt\nAccelerometer-2012-06-06-08-54-08-climb_stairs-m5.txt\nAccelerometer-2012-06-06-08-54-29-climb_stairs-m5.txt\nAccelerometer-2012-06-06-08-59-53-climb_stairs-m5.txt\nAccelerometer-2012-06-06-09-00-24-climb_stairs-m5.txt\nAccelerometer-2012-06-06-09-00-51-climb_stairs-m5.txt\nAccelerometer-2012-06-06-09-01-08-climb_stairs-m5.txt\nAccelerometer-2012-06-06-09-05-28-climb_stairs-m5.txt\nAccelerometer-2012-06-06-09-06-03-climb_stairs-m5.txt\nAccelerometer-2012-06-06-09-06-28-climb_stairs-m5.txt\nAccelerometer-2012-06-06-09-06-49-climb_stairs-m5.txt\nAccelerometer-2012-06-06-09-32-04-climb_stairs-m6.txt\nAccelerometer-2012-06-06-09-32-36-climb_stairs-m6.txt\nAccelerometer-2012-06-06-09-32-58-climb_stairs-m6.txt\nAccelerometer-2012-06-06-09-33-15-climb_stairs-m6.txt\nAccelerometer-2012-06-06-09-37-23-climb_stairs-m6.txt\nAccelerometer-2012-06-06-09-37-58-climb_stairs-m6.txt\nAccelerometer-2012-06-06-09-38-17-climb_stairs-m6.txt\nAccelerometer-2012-06-06-09-38-43-climb_stairs-m6.txt\nAccelerometer-2012-06-06-09-42-55-climb_stairs-m6.txt\nAccelerometer-2012-06-06-09-43-14-climb_stairs-m6.txt\nAccelerometer-2012-06-06-09-43-47-climb_stairs-m6.txt\nAccelerometer-2012-06-06-09-44-02-climb_stairs-m6.txt\nAccelerometer-2012-06-06-14-04-18-climb_stairs-m7.txt\nAccelerometer-2012-06-06-14-04-51-climb_stairs-m7.txt\nAccelerometer-2012-06-06-14-05-05-climb_stairs-m7.txt\nAccelerometer-2012-06-06-14-05-18-climb_stairs-m7.txt\nAccelerometer-2012-06-06-14-08-44-climb_stairs-m7.txt\nAccelerometer-2012-06-06-14-08-57-climb_stairs-m7.txt\nAccelerometer-2012-06-06-14-09-12-climb_stairs-m7.txt\nAccelerometer-2012-06-06-14-09-24-climb_stairs-m7.txt\nAccelerometer-2012-06-06-14-12-35-climb_stairs-m7.txt\nAccelerometer-2012-06-06-14-12-49-climb_stairs-m7.txt\nAccelerometer-2012-06-06-14-13-05-climb_stairs-m7.txt\nAccelerometer-2012-06-06-14-13-20-climb_stairs-m7.txt\nAccelerometer-2012-06-07-10-48-08-climb_stairs-f1.txt\nAccelerometer-2012-06-07-10-48-24-climb_stairs-f1.txt\nAccelerometer-2012-06-07-10-49-17-climb_stairs-f1.txt\nAccelerometer-2012-06-07-10-49-35-climb_stairs-f1.txt\nAccelerometer-2012-06-07-10-53-34-climb_stairs-f1.txt\nAccelerometer-2012-06-07-10-53-53-climb_stairs-f1.txt\nAccelerometer-2012-06-07-10-54-12-climb_stairs-f1.txt\nAccelerometer-2012-06-07-10-54-29-climb_stairs-f1.txt\nAccelerometer-2011-03-24-09-44-34-comb_hair-f1.txt\nAccelerometer-2011-03-24-10-26-33-comb_hair-f1.txt\nAccelerometer-2011-03-24-10-57-40-comb_hair-f1.txt\nAccelerometer-2011-03-24-16-10-36-comb_hair-f2.txt\nAccelerometer-2011-03-29-08-57-24-comb_hair-f1.txt\nAccelerometer-2011-04-11-13-31-24-comb_hair-f1.txt\nAccelerometer-2011-05-30-08-32-58-comb_hair-f1.txt\nAccelerometer-2011-05-30-09-39-49-comb_hair-f1.txt\nAccelerometer-2011-05-30-10-36-26-comb_hair-m1.txt\nAccelerometer-2011-05-30-21-08-40-comb_hair-f1.txt\nAccelerometer-2011-05-30-21-57-03-comb_hair-m2.txt\nAccelerometer-2011-05-31-15-14-55-comb_hair-f1.txt\nAccelerometer-2011-06-02-10-41-33-comb_hair-f1.txt\nAccelerometer-2011-06-02-10-44-17-comb_hair-f1.txt\nAccelerometer-2011-06-02-16-12-44-comb_hair-f1.txt\nAccelerometer-2011-06-02-16-14-07-comb_hair-f1.txt\nAccelerometer-2011-06-02-16-18-54-comb_hair-f1.txt\nAccelerometer-2011-06-02-16-20-04-comb_hair-f1.txt\nAccelerometer-2011-06-02-16-48-41-comb_hair-f4.txt\nAccelerometer-2011-06-02-16-49-27-comb_hair-f4.txt\nAccelerometer-2011-06-02-16-56-03-comb_hair-f4.txt\nAccelerometer-2011-06-02-17-02-50-comb_hair-f4.txt\nAccelerometer-2011-06-02-17-03-33-comb_hair-f4.txt\nAccelerometer-2011-06-02-17-18-58-comb_hair-m1.txt\nAccelerometer-2011-06-02-17-32-57-comb_hair-m1.txt\nAccelerometer-2011-06-02-17-39-02-comb_hair-m1.txt\nAccelerometer-2011-06-02-17-39-54-comb_hair-m1.txt\nAccelerometer-2011-06-06-10-03-47-comb_hair-f1.txt\nAccelerometer-2011-06-06-10-05-40-comb_hair-f1.txt\nAccelerometer-2011-06-06-10-08-56-comb_hair-f1.txt\nAccelerometer-2011-06-06-10-10-30-comb_hair-f1.txt\nAccelerometer-2011-03-24-10-24-02-descend_stairs-f1.txt\nAccelerometer-2011-03-24-10-25-11-descend_stairs-f1.txt\nAccelerometer-2011-03-24-11-20-43-descend_stairs-f1.txt\nAccelerometer-2011-03-29-09-15-58-descend_stairs-f1.txt\nAccelerometer-2011-03-29-16-16-34-descend_stairs-f1.txt\nAccelerometer-2011-03-29-16-17-18-descend_stairs-f1.txt\nAccelerometer-2011-03-29-16-17-50-descend_stairs-f1.txt\nAccelerometer-2011-03-29-16-18-14-descend_stairs-f1.txt\nAccelerometer-2011-04-05-18-26-06-descend_stairs-f1.txt\nAccelerometer-2011-04-11-11-51-27-descend_stairs-f1.txt\nAccelerometer-2011-04-11-13-32-24-descend_stairs-f1.txt\nAccelerometer-2011-05-30-08-20-55-descend_stairs-f1.txt\nAccelerometer-2011-05-30-08-24-58-descend_stairs-f1.txt\nAccelerometer-2011-05-30-08-34-06-descend_stairs-f1.txt\nAccelerometer-2011-05-30-09-29-15-descend_stairs-f1.txt\nAccelerometer-2011-05-30-09-31-43-descend_stairs-f1.txt\nAccelerometer-2011-05-30-09-40-50-descend_stairs-f1.txt\nAccelerometer-2011-05-30-10-19-56-descend_stairs-m1.txt\nAccelerometer-2011-05-30-10-24-51-descend_stairs-m1.txt\nAccelerometer-2011-05-30-10-37-30-descend_stairs-m1.txt\nAccelerometer-2011-05-30-20-48-10-descend_stairs-f1.txt\nAccelerometer-2011-05-30-20-56-43-descend_stairs-f1.txt\nAccelerometer-2011-05-30-21-09-46-descend_stairs-f1.txt\nAccelerometer-2011-05-30-21-32-18-descend_stairs-m2.txt\nAccelerometer-2011-05-30-21-39-11-descend_stairs-m2.txt\nAccelerometer-2011-05-30-21-53-35-descend_stairs-m2.txt\nAccelerometer-2011-05-31-14-52-31-descend_stairs-f1.txt\nAccelerometer-2011-05-31-15-00-30-descend_stairs-f1.txt\nAccelerometer-2011-05-31-15-15-48-descend_stairs-f1.txt\nAccelerometer-2011-05-31-16-21-49-descend_stairs-f1.txt\nAccelerometer-2011-05-31-16-28-22-descend_stairs-f1.txt\nAccelerometer-2011-06-02-10-36-04-descend_stairs-f1.txt\nAccelerometer-2011-06-02-10-36-42-descend_stairs-f1.txt\nAccelerometer-2011-06-02-10-38-15-descend_stairs-f1.txt\nAccelerometer-2011-06-02-10-38-52-descend_stairs-f1.txt\nAccelerometer-2011-06-06-10-56-23-descend_stairs-f1.txt\nAccelerometer-2011-06-06-10-56-55-descend_stairs-f1.txt\nAccelerometer-2011-06-06-10-58-14-descend_stairs-f1.txt\nAccelerometer-2011-06-06-10-58-40-descend_stairs-f1.txt\nAccelerometer-2011-06-06-10-59-38-descend_stairs-f1.txt\nAccelerometer-2011-06-06-11-00-26-descend_stairs-f1.txt\nAccelerometer-2011-06-06-11-01-54-descend_stairs-f1.txt\nAccelerometer-2011-03-24-10-07-02-drink_glass-f1.txt\nAccelerometer-2011-03-24-10-16-02-drink_glass-f1.txt\nAccelerometer-2011-03-24-10-46-25-drink_glass-f1.txt\nAccelerometer-2011-03-24-11-14-00-drink_glass-f1.txt\nAccelerometer-2011-03-24-13-09-29-drink_glass-f1.txt\nAccelerometer-2011-03-24-13-17-06-drink_glass-f1.txt\nAccelerometer-2011-03-24-13-31-22-drink_glass-f1.txt\nAccelerometer-2011-03-24-16-08-10-drink_glass-f2.txt\nAccelerometer-2011-03-24-16-08-29-drink_glass-f2.txt\nAccelerometer-2011-04-05-18-55-33-drink_glass-f1.txt\nAccelerometer-2011-04-08-17-33-35-drink_glass-f3.txt\nAccelerometer-2011-04-08-17-35-00-drink_glass-f3.txt\nAccelerometer-2011-04-08-18-10-09-drink_glass-m4.txt\nAccelerometer-2011-04-11-12-55-39-drink_glass-f1.txt\nAccelerometer-2011-04-11-13-17-55-drink_glass-f1.txt\nAccelerometer-2011-04-12-21-43-48-drink_glass-m8.txt\nAccelerometer-2011-04-12-21-44-55-drink_glass-m8.txt\nAccelerometer-2011-05-30-21-06-15-drink_glass-f1.txt\nAccelerometer-2011-05-30-21-06-42-drink_glass-f1.txt\nAccelerometer-2011-05-30-21-07-10-drink_glass-f1.txt\nAccelerometer-2011-05-30-21-51-35-drink_glass-m2.txt\nAccelerometer-2011-05-30-21-51-59-drink_glass-m2.txt\nAccelerometer-2011-05-30-21-52-25-drink_glass-m2.txt\nAccelerometer-2011-05-31-15-12-05-drink_glass-f1.txt\nAccelerometer-2011-05-31-15-12-36-drink_glass-f1.txt\nAccelerometer-2011-05-31-15-13-09-drink_glass-f1.txt\nAccelerometer-2011-05-31-16-35-12-drink_glass-f1.txt\nAccelerometer-2011-05-31-16-35-41-drink_glass-f1.txt\nAccelerometer-2011-05-31-16-37-39-drink_glass-f1.txt\nAccelerometer-2011-06-01-14-13-57-drink_glass-f1.txt\nAccelerometer-2011-06-01-14-14-22-drink_glass-f1.txt\nAccelerometer-2011-06-01-14-14-49-drink_glass-f1.txt\nAccelerometer-2011-06-01-14-15-19-drink_glass-f1.txt\nAccelerometer-2011-06-01-14-15-49-drink_glass-f1.txt\nAccelerometer-2011-06-01-14-20-46-drink_glass-f1.txt\nAccelerometer-2011-06-01-14-21-52-drink_glass-f1.txt\nAccelerometer-2011-06-01-14-23-15-drink_glass-f1.txt\nAccelerometer-2011-06-01-14-24-51-drink_glass-f1.txt\nAccelerometer-2011-06-01-14-28-50-drink_glass-f1.txt\nAccelerometer-2011-06-01-14-30-43-drink_glass-f1.txt\nAccelerometer-2011-06-01-14-33-59-drink_glass-f1.txt\nAccelerometer-2011-06-01-15-04-40-drink_glass-f1.txt\nAccelerometer-2011-06-01-15-09-37-drink_glass-f1.txt\nAccelerometer-2011-06-01-15-14-42-drink_glass-f1.txt\nAccelerometer-2011-06-01-15-25-43-drink_glass-f1.txt\nAccelerometer-2011-06-01-16-44-44-drink_glass-f1.txt\nAccelerometer-2011-06-01-16-45-39-drink_glass-f1.txt\nAccelerometer-2011-06-01-16-47-29-drink_glass-f1.txt\nAccelerometer-2011-06-01-16-49-14-drink_glass-f1.txt\nAccelerometer-2011-06-01-16-53-24-drink_glass-f1.txt\nAccelerometer-2011-06-01-16-57-10-drink_glass-f1.txt\nAccelerometer-2011-06-02-16-51-25-drink_glass-f4.txt\nAccelerometer-2011-06-02-16-51-58-drink_glass-f4.txt\nAccelerometer-2011-06-02-16-52-53-drink_glass-f4.txt\nAccelerometer-2011-06-02-17-19-56-drink_glass-m1.txt\nAccelerometer-2011-06-02-17-20-17-drink_glass-m1.txt\nAccelerometer-2011-06-02-17-20-47-drink_glass-m1.txt\nAccelerometer-2011-06-02-17-23-53-drink_glass-m1.txt\nAccelerometer-2011-06-02-17-24-39-drink_glass-m1.txt\nAccelerometer-2011-06-02-17-29-13-drink_glass-m1.txt\nAccelerometer-2011-06-02-17-29-50-drink_glass-m1.txt\nAccelerometer-2011-06-02-17-30-51-drink_glass-m1.txt\nAccelerometer-2011-06-02-17-32-31-drink_glass-m1.txt\nAccelerometer-2011-06-02-17-40-40-drink_glass-m1.txt\nAccelerometer-2011-06-02-17-52-26-drink_glass-m1.txt\nAccelerometer-2012-03-23-03-47-02-drink_glass-m9.txt\nAccelerometer-2012-03-23-03-47-36-drink_glass-m9.txt\nAccelerometer-2012-03-23-03-54-54-drink_glass-m9.txt\nAccelerometer-2012-03-26-04-53-07-drink_glass-f2.txt\nAccelerometer-2012-03-26-04-56-11-drink_glass-f2.txt\nAccelerometer-2012-03-26-05-02-06-drink_glass-m3.txt\nAccelerometer-2012-03-26-05-03-53-drink_glass-m3.txt\nAccelerometer-2012-05-25-18-30-30-drink_glass-f4.txt\nAccelerometer-2012-05-25-18-31-18-drink_glass-f4.txt\nAccelerometer-2012-05-25-18-32-32-drink_glass-f4.txt\nAccelerometer-2012-05-25-18-33-57-drink_glass-f4.txt\nAccelerometer-2012-05-25-18-36-27-drink_glass-f4.txt\nAccelerometer-2012-05-28-17-42-29-drink_glass-m1.txt\nAccelerometer-2012-05-28-17-44-02-drink_glass-m1.txt\nAccelerometer-2012-05-28-17-44-31-drink_glass-m1.txt\nAccelerometer-2012-05-28-17-47-23-drink_glass-m1.txt\nAccelerometer-2012-05-28-17-47-49-drink_glass-m1.txt\nAccelerometer-2012-05-28-17-50-04-drink_glass-m1.txt\nAccelerometer-2012-05-29-16-42-17-drink_glass-f2.txt\nAccelerometer-2012-05-29-16-44-12-drink_glass-f2.txt\nAccelerometer-2012-05-29-16-48-07-drink_glass-f2.txt\nAccelerometer-2012-05-29-17-11-01-drink_glass-m3.txt\nAccelerometer-2012-05-29-17-20-28-drink_glass-m3.txt\nAccelerometer-2012-05-30-19-51-49-drink_glass-f2.txt\nAccelerometer-2012-05-30-19-53-19-drink_glass-f2.txt\nAccelerometer-2012-05-30-19-53-49-drink_glass-f2.txt\nAccelerometer-2012-05-30-19-54-48-drink_glass-f2.txt\nAccelerometer-2012-05-30-19-57-08-drink_glass-m3.txt\nAccelerometer-2012-05-30-19-58-10-drink_glass-m3.txt\nAccelerometer-2012-05-30-19-58-44-drink_glass-m3.txt\nAccelerometer-2012-05-30-19-59-40-drink_glass-m3.txt\nAccelerometer-2012-05-30-21-48-13-drink_glass-m2.txt\nAccelerometer-2012-05-30-21-48-45-drink_glass-m2.txt\nAccelerometer-2012-05-30-22-10-16-drink_glass-m2.txt\nAccelerometer-2012-05-30-22-10-40-drink_glass-m2.txt\nAccelerometer-2011-03-24-13-06-15-eat_meat-f1.txt\nAccelerometer-2011-03-24-13-10-14-eat_meat-f1.txt\nAccelerometer-2011-03-24-13-12-52-eat_meat-f1.txt\nAccelerometer-2011-03-24-13-17-42-eat_meat-f1.txt\nAccelerometer-2011-03-24-13-21-39-eat_meat-f1.txt\nAccelerometer-2011-03-24-13-33-22-eat_soup-f1.txt\nAccelerometer-2011-03-24-13-44-18-eat_soup-f1.txt\nAccelerometer-2011-03-24-13-56-42-eat_soup-f1.txt\nAccelerometer-2011-03-29-09-21-17-getup_bed-f1.txt\nAccelerometer-2011-03-29-09-24-50-getup_bed-f1.txt\nAccelerometer-2011-03-29-09-49-03-getup_bed-f1.txt\nAccelerometer-2011-04-05-18-28-21-getup_bed-f1.txt\nAccelerometer-2011-04-11-11-53-01-getup_bed-f1.txt\nAccelerometer-2011-04-11-13-34-05-getup_bed-f1.txt\nAccelerometer-2011-05-30-08-26-56-getup_bed-f1.txt\nAccelerometer-2011-05-30-08-38-15-getup_bed-f1.txt\nAccelerometer-2011-05-30-09-33-26-getup_bed-f1.txt\nAccelerometer-2011-05-30-09-42-46-getup_bed-f1.txt\nAccelerometer-2011-05-30-10-27-01-getup_bed-m1.txt\nAccelerometer-2011-05-30-10-39-27-getup_bed-m1.txt\nAccelerometer-2011-05-30-20-53-40-getup_bed-f1.txt\nAccelerometer-2011-05-30-20-59-57-getup_bed-f1.txt\nAccelerometer-2011-05-30-21-13-57-getup_bed-f1.txt\nAccelerometer-2011-05-30-21-36-01-getup_bed-m2.txt\nAccelerometer-2011-05-30-21-42-30-getup_bed-m2.txt\nAccelerometer-2011-05-30-21-59-46-getup_bed-m2.txt\nAccelerometer-2011-05-31-14-57-24-getup_bed-f1.txt\nAccelerometer-2011-05-31-15-02-55-getup_bed-f1.txt\nAccelerometer-2011-05-31-15-19-41-getup_bed-f1.txt\nAccelerometer-2011-05-31-16-25-09-getup_bed-f1.txt\nAccelerometer-2011-05-31-16-30-18-getup_bed-f1.txt\nAccelerometer-2011-06-02-16-57-57-getup_bed-f4.txt\nAccelerometer-2011-06-02-16-58-46-getup_bed-f4.txt\nAccelerometer-2011-06-02-17-00-08-getup_bed-f4.txt\nAccelerometer-2011-06-02-17-22-34-getup_bed-m1.txt\nAccelerometer-2012-05-28-17-52-54-getup_bed-m1.txt\nAccelerometer-2012-05-28-17-53-29-getup_bed-m1.txt\nAccelerometer-2012-05-28-17-54-04-getup_bed-m1.txt\nAccelerometer-2012-05-28-17-54-37-getup_bed-m1.txt\nAccelerometer-2012-05-28-17-55-04-getup_bed-m1.txt\nAccelerometer-2012-05-30-21-51-41-getup_bed-m2.txt\nAccelerometer-2012-05-30-21-52-18-getup_bed-m2.txt\nAccelerometer-2012-05-30-21-53-05-getup_bed-m2.txt\nAccelerometer-2012-05-30-21-53-38-getup_bed-m2.txt\nAccelerometer-2012-05-30-21-54-12-getup_bed-m2.txt\nAccelerometer-2012-06-07-22-15-16-getup_bed-f4.txt\nAccelerometer-2012-06-07-22-16-05-getup_bed-f4.txt\nAccelerometer-2012-06-07-22-16-42-getup_bed-f4.txt\nAccelerometer-2012-06-07-22-17-45-getup_bed-f4.txt\nAccelerometer-2012-06-07-22-19-25-getup_bed-f4.txt\nAccelerometer-2012-06-07-22-20-59-getup_bed-f4.txt\nAccelerometer-2012-06-07-22-23-46-getup_bed-f4.txt\nAccelerometer-2012-06-07-22-24-33-getup_bed-f4.txt\nAccelerometer-2012-06-07-22-26-32-getup_bed-f4.txt\nAccelerometer-2012-06-07-22-28-50-getup_bed-f4.txt\nAccelerometer-2012-06-07-22-30-31-getup_bed-f4.txt\nAccelerometer-2012-06-07-22-31-18-getup_bed-f4.txt\nAccelerometer-2012-06-12-15-28-34-getup_bed-m4.txt\nAccelerometer-2012-06-12-15-29-15-getup_bed-m4.txt\nAccelerometer-2012-06-12-15-30-07-getup_bed-m4.txt\nAccelerometer-2012-06-12-15-31-01-getup_bed-m4.txt\nAccelerometer-2012-06-12-15-31-56-getup_bed-m4.txt\nAccelerometer-2012-06-12-15-32-38-getup_bed-m4.txt\nAccelerometer-2012-06-12-15-34-01-getup_bed-m4.txt\nAccelerometer-2012-06-12-15-34-40-getup_bed-m4.txt\nAccelerometer-2012-06-12-15-35-29-getup_bed-m4.txt\nAccelerometer-2012-06-12-15-36-02-getup_bed-m4.txt\nAccelerometer-2012-06-12-15-50-48-getup_bed-f3.txt\nAccelerometer-2012-06-12-15-51-25-getup_bed-f3.txt\nAccelerometer-2012-06-12-15-52-04-getup_bed-f3.txt\nAccelerometer-2012-06-12-15-52-46-getup_bed-f3.txt\nAccelerometer-2012-06-12-15-53-20-getup_bed-f3.txt\nAccelerometer-2012-06-12-15-54-03-getup_bed-f3.txt\nAccelerometer-2012-06-12-15-54-33-getup_bed-f3.txt\nAccelerometer-2012-06-12-15-56-41-getup_bed-f3.txt\nAccelerometer-2012-06-12-15-57-21-getup_bed-f3.txt\nAccelerometer-2012-06-12-15-58-01-getup_bed-f3.txt\nAccelerometer-2012-06-12-18-39-37-getup_bed-f2.txt\nAccelerometer-2012-06-12-18-40-26-getup_bed-f2.txt\nAccelerometer-2012-06-12-18-41-40-getup_bed-f2.txt\nAccelerometer-2012-06-12-18-42-44-getup_bed-f2.txt\nAccelerometer-2012-06-12-18-43-26-getup_bed-f2.txt\nAccelerometer-2012-06-12-18-44-04-getup_bed-f2.txt\nAccelerometer-2012-06-12-18-44-53-getup_bed-f2.txt\nAccelerometer-2012-06-12-18-48-47-getup_bed-m3.txt\nAccelerometer-2012-06-12-18-49-31-getup_bed-m3.txt\nAccelerometer-2012-06-12-18-50-08-getup_bed-m3.txt\nAccelerometer-2012-06-12-18-50-50-getup_bed-m3.txt\nAccelerometer-2012-06-12-18-51-33-getup_bed-m3.txt\nAccelerometer-2012-06-12-18-52-06-getup_bed-m3.txt\nAccelerometer-2012-06-12-18-52-37-getup_bed-m3.txt\nAccelerometer-2012-06-20-20-27-19-getup_bed-f5.txt\nAccelerometer-2012-06-20-20-28-27-getup_bed-f5.txt\nAccelerometer-2012-06-20-20-29-11-getup_bed-f5.txt\nAccelerometer-2012-06-20-20-29-49-getup_bed-f5.txt\nAccelerometer-2012-06-20-20-30-45-getup_bed-f5.txt\nAccelerometer-2012-06-20-20-31-40-getup_bed-f5.txt\nAccelerometer-2012-06-20-20-32-40-getup_bed-f5.txt\nAccelerometer-2012-06-20-20-33-22-getup_bed-f5.txt\nAccelerometer-2012-06-20-20-34-30-getup_bed-f5.txt\nAccelerometer-2012-06-20-21-52-24-getup_bed-m10.txt\nAccelerometer-2012-06-20-21-53-06-getup_bed-m10.txt\nAccelerometer-2012-06-20-21-53-40-getup_bed-m10.txt\nAccelerometer-2012-06-20-21-55-30-getup_bed-m10.txt\nAccelerometer-2012-06-20-21-56-36-getup_bed-m10.txt\nAccelerometer-2012-06-20-21-57-33-getup_bed-m10.txt\nAccelerometer-2012-06-20-21-58-13-getup_bed-m10.txt\nAccelerometer-2012-06-20-21-59-57-getup_bed-m10.txt\nAccelerometer-2012-06-20-22-00-55-getup_bed-m10.txt\nAccelerometer-2011-03-29-09-19-22-liedown_bed-f1.txt\nAccelerometer-2011-03-29-09-23-22-liedown_bed-f1.txt\nAccelerometer-2011-03-29-09-45-46-liedown_bed-f1.txt\nAccelerometer-2011-04-05-18-27-12-liedown_bed-f1.txt\nAccelerometer-2011-04-11-11-52-20-liedown_bed-f1.txt\nAccelerometer-2011-04-11-13-33-26-liedown_bed-f1.txt\nAccelerometer-2011-05-30-08-25-59-liedown_bed-f1.txt\nAccelerometer-2011-05-30-08-37-27-liedown_bed-f1.txt\nAccelerometer-2011-05-30-09-32-42-liedown_bed-f1.txt\nAccelerometer-2011-05-30-09-41-49-liedown_bed-f1.txt\nAccelerometer-2011-05-30-10-26-14-liedown_bed-m1.txt\nAccelerometer-2011-05-30-10-38-41-liedown_bed-m1.txt\nAccelerometer-2011-05-30-20-52-31-liedown_bed-f1.txt\nAccelerometer-2011-05-30-20-59-04-liedown_bed-f1.txt\nAccelerometer-2011-05-30-21-13-15-liedown_bed-f1.txt\nAccelerometer-2011-05-30-21-35-19-liedown_bed-m2.txt\nAccelerometer-2011-05-30-21-41-32-liedown_bed-m2.txt\nAccelerometer-2011-05-30-21-59-16-liedown_bed-m2.txt\nAccelerometer-2011-05-31-14-56-04-liedown_bed-f1.txt\nAccelerometer-2011-05-31-15-02-19-liedown_bed-f1.txt\nAccelerometer-2011-05-31-15-18-50-liedown_bed-f1.txt\nAccelerometer-2011-05-31-16-24-36-liedown_bed-f1.txt\nAccelerometer-2011-05-31-16-29-43-liedown_bed-f1.txt\nAccelerometer-2011-06-02-16-57-35-liedown_bed-f4.txt\nAccelerometer-2011-06-02-16-58-20-liedown_bed-f4.txt\nAccelerometer-2011-06-02-16-59-13-liedown_bed-f4.txt\nAccelerometer-2011-06-02-17-00-38-liedown_bed-f4.txt\nAccelerometer-2011-06-02-17-21-57-liedown_bed-m1.txt\nAccelerometer-2011-03-24-10-04-32-pour_water-f1.txt\nAccelerometer-2011-03-24-10-51-12-pour_water-f1.txt\nAccelerometer-2011-03-24-13-30-01-pour_water-f1.txt\nAccelerometer-2011-04-05-18-54-14-pour_water-f1.txt\nAccelerometer-2011-04-11-12-55-26-pour_water-f1.txt\nAccelerometer-2011-05-30-21-05-39-pour_water-f1.txt\nAccelerometer-2011-05-30-21-51-05-pour_water-m2.txt\nAccelerometer-2011-05-31-15-11-25-pour_water-f1.txt\nAccelerometer-2011-05-31-16-34-32-pour_water-f1.txt\nAccelerometer-2011-06-01-14-12-53-pour_water-f1.txt\nAccelerometer-2011-06-01-14-13-29-pour_water-f1.txt\nAccelerometer-2011-06-01-14-16-35-pour_water-f1.txt\nAccelerometer-2011-06-01-14-17-02-pour_water-f1.txt\nAccelerometer-2011-06-01-14-18-36-pour_water-f1.txt\nAccelerometer-2011-06-01-14-25-16-pour_water-f1.txt\nAccelerometer-2011-06-01-14-27-40-pour_water-f1.txt\nAccelerometer-2011-06-01-14-32-38-pour_water-f1.txt\nAccelerometer-2011-06-01-16-46-50-pour_water-f1.txt\nAccelerometer-2011-06-02-16-50-40-pour_water-f4.txt\nAccelerometer-2011-06-02-16-52-30-pour_water-f4.txt\nAccelerometer-2011-06-02-17-04-09-pour_water-f4.txt\nAccelerometer-2011-06-02-17-06-15-pour_water-f4.txt\nAccelerometer-2011-06-02-17-06-44-pour_water-f4.txt\nAccelerometer-2011-06-02-17-23-16-pour_water-m1.txt\nAccelerometer-2011-06-02-17-28-27-pour_water-m1.txt\nAccelerometer-2011-06-02-17-33-30-pour_water-m1.txt\nAccelerometer-2011-06-02-17-45-45-pour_water-m1.txt\nAccelerometer-2011-06-06-09-39-30-pour_water-f1.txt\nAccelerometer-2011-06-06-09-40-34-pour_water-f1.txt\nAccelerometer-2011-06-06-09-42-11-pour_water-f1.txt\nAccelerometer-2011-06-06-09-44-12-pour_water-f1.txt\nAccelerometer-2011-06-06-09-45-45-pour_water-f1.txt\nAccelerometer-2011-06-06-09-46-20-pour_water-f1.txt\nAccelerometer-2011-06-06-09-47-48-pour_water-f1.txt\nAccelerometer-2011-06-06-09-48-59-pour_water-f1.txt\nAccelerometer-2011-06-06-09-49-51-pour_water-f1.txt\nAccelerometer-2011-06-06-09-50-17-pour_water-f1.txt\nAccelerometer-2011-06-06-09-51-53-pour_water-f1.txt\nAccelerometer-2011-06-06-09-55-25-pour_water-f1.txt\nAccelerometer-2011-06-06-09-56-28-pour_water-f1.txt\nAccelerometer-2012-03-23-03-46-21-pour_water-m9.txt\nAccelerometer-2012-03-23-03-54-26-pour_water-m9.txt\nAccelerometer-2012-03-23-03-55-46-pour_water-m9.txt\nAccelerometer-2012-03-26-04-53-59-pour_water-f2.txt\nAccelerometer-2012-03-26-04-55-40-pour_water-f2.txt\nAccelerometer-2012-03-26-05-01-39-pour_water-m3.txt\nAccelerometer-2012-03-26-05-03-27-pour_water-m3.txt\nAccelerometer-2012-05-25-18-29-48-pour_water-f4.txt\nAccelerometer-2012-05-25-18-31-58-pour_water-f4.txt\nAccelerometer-2012-05-25-18-34-46-pour_water-f4.txt\nAccelerometer-2012-05-25-18-37-06-pour_water-f4.txt\nAccelerometer-2012-05-28-17-41-55-pour_water-m1.txt\nAccelerometer-2012-05-28-17-43-20-pour_water-m1.txt\nAccelerometer-2012-05-28-17-46-43-pour_water-m1.txt\nAccelerometer-2012-05-28-17-49-34-pour_water-m1.txt\nAccelerometer-2012-05-29-16-43-41-pour_water-f2.txt\nAccelerometer-2012-05-29-16-49-00-pour_water-f2.txt\nAccelerometer-2012-05-29-17-10-30-pour_water-m3.txt\nAccelerometer-2012-05-29-17-12-07-pour_water-m3.txt\nAccelerometer-2012-05-29-17-19-55-pour_water-m3.txt\nAccelerometer-2012-05-30-18-26-02-pour_water-f3.txt\nAccelerometer-2012-05-30-18-26-49-pour_water-f3.txt\nAccelerometer-2012-05-30-18-27-15-pour_water-f3.txt\nAccelerometer-2012-05-30-18-27-41-pour_water-f3.txt\nAccelerometer-2012-05-30-19-07-14-pour_water-m4.txt\nAccelerometer-2012-05-30-19-07-43-pour_water-m4.txt\nAccelerometer-2012-05-30-19-08-20-pour_water-m4.txt\nAccelerometer-2012-05-30-19-08-50-pour_water-m4.txt\nAccelerometer-2012-05-30-19-50-42-pour_water-f2.txt\nAccelerometer-2012-05-30-19-52-29-pour_water-f2.txt\nAccelerometer-2012-05-30-19-54-24-pour_water-f2.txt\nAccelerometer-2012-05-30-19-56-40-pour_water-m3.txt\nAccelerometer-2012-05-30-19-57-40-pour_water-m3.txt\nAccelerometer-2012-05-30-19-59-17-pour_water-m3.txt\nAccelerometer-2012-06-07-21-27-46-pour_water-f4.txt\nAccelerometer-2012-06-07-21-28-23-pour_water-f4.txt\nAccelerometer-2012-06-07-21-28-48-pour_water-f4.txt\nAccelerometer-2012-06-07-21-29-09-pour_water-f4.txt\nAccelerometer-2012-06-07-21-29-48-pour_water-f4.txt\nAccelerometer-2012-06-07-21-30-16-pour_water-f4.txt\nAccelerometer-2012-06-07-21-30-37-pour_water-f4.txt\nAccelerometer-2012-06-07-21-31-05-pour_water-f4.txt\nAccelerometer-2012-06-07-21-31-24-pour_water-f4.txt\nAccelerometer-2012-06-07-21-31-48-pour_water-f4.txt\nAccelerometer-2012-06-07-21-32-12-pour_water-f4.txt\nAccelerometer-2012-06-07-21-32-37-pour_water-f4.txt\nAccelerometer-2012-06-07-21-33-21-pour_water-f4.txt\nAccelerometer-2012-06-07-21-33-47-pour_water-f4.txt\nAccelerometer-2012-06-07-21-34-22-pour_water-f4.txt\nAccelerometer-2012-06-07-21-34-47-pour_water-f4.txt\nAccelerometer-2012-06-07-21-35-28-pour_water-f4.txt\nAccelerometer-2012-06-07-21-35-50-pour_water-f4.txt\nAccelerometer-2012-06-09-22-54-40-pour_water-m11.txt\nAccelerometer-2012-06-09-22-55-08-pour_water-m11.txt\nAccelerometer-2012-06-09-22-55-42-pour_water-m11.txt\nAccelerometer-2012-06-09-22-56-17-pour_water-m11.txt\nAccelerometer-2012-06-09-22-56-53-pour_water-m11.txt\nAccelerometer-2012-06-09-22-57-12-pour_water-m11.txt\nAccelerometer-2012-06-09-22-58-08-pour_water-m11.txt\nAccelerometer-2012-06-09-22-58-28-pour_water-m11.txt\nAccelerometer-2011-03-24-09-50-16-sitdown_chair-f1.txt\nAccelerometer-2011-03-24-10-27-33-sitdown_chair-f1.txt\nAccelerometer-2011-03-24-16-09-29-sitdown_chair-f2.txt\nAccelerometer-2011-03-29-09-06-48-sitdown_chair-f1.txt\nAccelerometer-2011-03-29-09-12-27-sitdown_chair-f1.txt\nAccelerometer-2011-04-05-18-22-14-sitdown_chair-f1.txt\nAccelerometer-2011-04-05-18-47-38-sitdown_chair-f1.txt\nAccelerometer-2011-04-08-17-33-10-sitdown_chair-f3.txt\nAccelerometer-2011-04-08-17-34-35-sitdown_chair-f3.txt\nAccelerometer-2011-04-08-18-09-40-sitdown_chair-m4.txt\nAccelerometer-2011-04-11-11-45-28-sitdown_chair-f1.txt\nAccelerometer-2011-04-12-21-42-24-sitdown_chair-m8.txt\nAccelerometer-2011-04-12-21-43-15-sitdown_chair-m8.txt\nAccelerometer-2011-05-30-08-22-28-sitdown_chair-f1.txt\nAccelerometer-2011-05-30-08-31-30-sitdown_chair-f1.txt\nAccelerometer-2011-05-30-09-23-12-sitdown_chair-f1.txt\nAccelerometer-2011-05-30-09-24-48-sitdown_chair-f1.txt\nAccelerometer-2011-05-30-10-21-50-sitdown_chair-m1.txt\nAccelerometer-2011-05-30-10-31-12-sitdown_chair-m1.txt\nAccelerometer-2011-05-30-20-48-57-sitdown_chair-f1.txt\nAccelerometer-2011-05-30-20-49-32-sitdown_chair-f1.txt\nAccelerometer-2011-05-30-20-55-28-sitdown_chair-f1.txt\nAccelerometer-2011-05-30-21-04-13-sitdown_chair-f1.txt\nAccelerometer-2011-05-30-21-33-15-sitdown_chair-m2.txt\nAccelerometer-2011-05-30-21-37-52-sitdown_chair-m2.txt\nAccelerometer-2011-05-30-21-48-01-sitdown_chair-m2.txt\nAccelerometer-2011-05-31-14-53-37-sitdown_chair-f1.txt\nAccelerometer-2011-05-31-14-59-27-sitdown_chair-f1.txt\nAccelerometer-2011-05-31-15-07-32-sitdown_chair-f1.txt\nAccelerometer-2011-05-31-16-22-37-sitdown_chair-f1.txt\nAccelerometer-2011-05-31-16-27-00-sitdown_chair-f1.txt\nAccelerometer-2011-05-31-16-33-27-sitdown_chair-f1.txt\nAccelerometer-2011-06-01-14-37-35-sitdown_chair-f1.txt\nAccelerometer-2011-06-01-14-38-38-sitdown_chair-f1.txt\nAccelerometer-2011-06-01-14-39-48-sitdown_chair-f1.txt\nAccelerometer-2011-06-01-14-40-31-sitdown_chair-f1.txt\nAccelerometer-2011-06-01-14-41-42-sitdown_chair-f1.txt\nAccelerometer-2011-06-01-14-43-55-sitdown_chair-f1.txt\nAccelerometer-2011-06-01-14-45-42-sitdown_chair-f1.txt\nAccelerometer-2011-06-01-14-46-43-sitdown_chair-f1.txt\nAccelerometer-2011-06-01-14-50-18-sitdown_chair-f1.txt\nAccelerometer-2011-06-01-14-51-28-sitdown_chair-f1.txt\nAccelerometer-2011-06-02-16-15-55-sitdown_chair-f1.txt\nAccelerometer-2011-06-02-16-17-10-sitdown_chair-f1.txt\nAccelerometer-2011-06-02-16-21-01-sitdown_chair-f1.txt\nAccelerometer-2011-06-02-16-21-36-sitdown_chair-f1.txt\nAccelerometer-2011-06-02-16-43-56-sitdown_chair-f4.txt\nAccelerometer-2011-06-02-16-44-37-sitdown_chair-f4.txt\nAccelerometer-2011-06-02-16-45-19-sitdown_chair-f4.txt\nAccelerometer-2011-06-02-16-46-07-sitdown_chair-f4.txt\nAccelerometer-2011-06-02-16-46-43-sitdown_chair-f4.txt\nAccelerometer-2011-06-02-16-53-58-sitdown_chair-f4.txt\nAccelerometer-2011-06-02-16-54-34-sitdown_chair-f4.txt\nAccelerometer-2011-06-02-16-55-35-sitdown_chair-f4.txt\nAccelerometer-2011-06-02-17-04-59-sitdown_chair-f4.txt\nAccelerometer-2011-06-02-17-05-36-sitdown_chair-f4.txt\nAccelerometer-2011-06-02-17-25-34-sitdown_chair-m1.txt\nAccelerometer-2011-06-02-17-26-23-sitdown_chair-m1.txt\nAccelerometer-2011-06-02-17-27-18-sitdown_chair-m1.txt\nAccelerometer-2011-06-02-17-32-07-sitdown_chair-m1.txt\nAccelerometer-2011-06-02-17-41-43-sitdown_chair-m1.txt\nAccelerometer-2011-06-02-17-42-45-sitdown_chair-m1.txt\nAccelerometer-2011-06-02-17-44-20-sitdown_chair-m1.txt\nAccelerometer-2011-06-02-17-45-12-sitdown_chair-m1.txt\nAccelerometer-2011-06-06-09-34-12-sitdown_chair-f1.txt\nAccelerometer-2011-06-06-09-35-11-sitdown_chair-f1.txt\nAccelerometer-2011-06-06-09-35-43-sitdown_chair-f1.txt\nAccelerometer-2011-06-06-09-36-06-sitdown_chair-f1.txt\nAccelerometer-2011-12-05-09-39-34-sitdown_chair-f1.txt\nAccelerometer-2011-12-05-09-44-08-sitdown_chair-f1.txt\nAccelerometer-2011-12-05-09-46-34-sitdown_chair-f1.txt\nAccelerometer-2011-12-05-09-48-48-sitdown_chair-f1.txt\nAccelerometer-2011-12-05-09-50-54-sitdown_chair-f1.txt\nAccelerometer-2011-12-05-09-53-32-sitdown_chair-f1.txt\nAccelerometer-2011-12-05-09-58-23-sitdown_chair-f1.txt\nAccelerometer-2011-12-11-08-11-11-sitdown_chair-f4.txt\nAccelerometer-2011-12-11-08-12-14-sitdown_chair-f4.txt\nAccelerometer-2011-12-11-08-13-16-sitdown_chair-f4.txt\nAccelerometer-2011-12-11-08-14-09-sitdown_chair-f4.txt\nAccelerometer-2011-12-11-08-15-21-sitdown_chair-f4.txt\nAccelerometer-2011-12-11-08-16-20-sitdown_chair-f4.txt\nAccelerometer-2011-12-11-08-19-32-sitdown_chair-m2.txt\nAccelerometer-2011-12-11-08-20-24-sitdown_chair-m2.txt\nAccelerometer-2011-12-11-08-21-20-sitdown_chair-m2.txt\nAccelerometer-2011-12-11-08-22-36-sitdown_chair-m2.txt\nAccelerometer-2011-12-11-08-23-42-sitdown_chair-m2.txt\nAccelerometer-2011-12-11-08-24-32-sitdown_chair-m2.txt\nAccelerometer-2012-03-23-03-45-26-sitdown_chair-m9.txt\nAccelerometer-2012-03-23-03-48-40-sitdown_chair-m9.txt\nAccelerometer-2012-03-26-04-54-57-sitdown_chair-f2.txt\nAccelerometer-2012-03-26-04-58-33-sitdown_chair-f2.txt\nAccelerometer-2012-03-26-05-02-58-sitdown_chair-m3.txt\nAccelerometer-2012-03-26-05-04-48-sitdown_chair-m3.txt\nAccelerometer-2012-05-25-18-27-57-sitdown_chair-f4.txt\nAccelerometer-2012-05-25-18-28-46-sitdown_chair-f4.txt\nAccelerometer-2012-05-25-18-33-29-sitdown_chair-f4.txt\nAccelerometer-2012-05-25-18-36-06-sitdown_chair-f4.txt\nAccelerometer-2012-05-28-17-40-02-sitdown_chair-m1.txt\nAccelerometer-2012-05-28-17-41-12-sitdown_chair-m1.txt\nAccelerometer-2012-05-28-17-46-13-sitdown_chair-m1.txt\nAccelerometer-2011-03-23-10-39-18-standup_chair-f1.txt\nAccelerometer-2011-03-23-10-42-01-standup_chair-f1.txt\nAccelerometer-2011-03-23-10-45-51-standup_chair-f1.txt\nAccelerometer-2011-03-23-10-47-59-standup_chair-f1.txt\nAccelerometer-2011-03-24-09-49-36-standup_chair-f1.txt\nAccelerometer-2011-03-24-10-38-17-standup_chair-f1.txt\nAccelerometer-2011-03-24-11-19-29-standup_chair-f1.txt\nAccelerometer-2011-03-24-16-09-19-standup_chair-f2.txt\nAccelerometer-2011-03-29-09-04-40-standup_chair-f1.txt\nAccelerometer-2011-03-29-09-10-24-standup_chair-f1.txt\nAccelerometer-2011-04-05-18-25-12-standup_chair-f1.txt\nAccelerometer-2011-04-08-17-32-45-standup_chair-f3.txt\nAccelerometer-2011-04-08-17-34-10-standup_chair-f3.txt\nAccelerometer-2011-04-08-18-09-06-standup_chair-m4.txt\nAccelerometer-2011-04-11-11-48-09-standup_chair-f1.txt\nAccelerometer-2011-04-11-13-24-10-standup_chair-f1.txt\nAccelerometer-2011-04-12-21-42-53-standup_chair-m8.txt\nAccelerometer-2011-04-12-21-45-21-standup_chair-m8.txt\nAccelerometer-2011-05-30-08-24-19-standup_chair-f1.txt\nAccelerometer-2011-05-30-08-32-03-standup_chair-f1.txt\nAccelerometer-2011-05-30-09-24-04-standup_chair-f1.txt\nAccelerometer-2011-05-30-09-25-14-standup_chair-f1.txt\nAccelerometer-2011-05-30-10-23-55-standup_chair-m1.txt\nAccelerometer-2011-05-30-10-31-41-standup_chair-m1.txt\nAccelerometer-2011-05-30-20-50-04-standup_chair-f1.txt\nAccelerometer-2011-05-30-20-50-30-standup_chair-f1.txt\nAccelerometer-2011-05-30-20-56-05-standup_chair-f1.txt\nAccelerometer-2011-05-30-21-07-51-standup_chair-f1.txt\nAccelerometer-2011-05-30-21-33-37-standup_chair-m2.txt\nAccelerometer-2011-05-30-21-38-19-standup_chair-m2.txt\nAccelerometer-2011-05-30-21-52-55-standup_chair-m2.txt\nAccelerometer-2011-05-31-14-54-09-standup_chair-f1.txt\nAccelerometer-2011-05-31-14-59-53-standup_chair-f1.txt\nAccelerometer-2011-05-31-15-13-49-standup_chair-f1.txt\nAccelerometer-2011-05-31-16-23-03-standup_chair-f1.txt\nAccelerometer-2011-05-31-16-27-45-standup_chair-f1.txt\nAccelerometer-2011-05-31-16-38-19-standup_chair-f1.txt\nAccelerometer-2011-06-01-14-38-03-standup_chair-f1.txt\nAccelerometer-2011-06-01-14-39-38-standup_chair-f1.txt\nAccelerometer-2011-06-01-14-40-19-standup_chair-f1.txt\nAccelerometer-2011-06-01-14-41-32-standup_chair-f1.txt\nAccelerometer-2011-06-01-14-43-42-standup_chair-f1.txt\nAccelerometer-2011-06-01-14-45-33-standup_chair-f1.txt\nAccelerometer-2011-06-01-14-46-35-standup_chair-f1.txt\nAccelerometer-2011-06-01-14-50-10-standup_chair-f1.txt\nAccelerometer-2011-06-01-14-51-21-standup_chair-f1.txt\nAccelerometer-2011-06-01-14-52-02-standup_chair-f1.txt\nAccelerometer-2011-06-02-16-43-22-standup_chair-f4.txt\nAccelerometer-2011-06-02-16-44-18-standup_chair-f4.txt\nAccelerometer-2011-06-02-16-44-59-standup_chair-f4.txt\nAccelerometer-2011-06-02-16-45-48-standup_chair-f4.txt\nAccelerometer-2011-06-02-16-46-25-standup_chair-f4.txt\nAccelerometer-2011-06-02-16-53-39-standup_chair-f4.txt\nAccelerometer-2011-06-02-16-54-15-standup_chair-f4.txt\nAccelerometer-2011-06-02-16-55-12-standup_chair-f4.txt\nAccelerometer-2011-06-02-17-04-40-standup_chair-f4.txt\nAccelerometer-2011-06-02-17-05-17-standup_chair-f4.txt\nAccelerometer-2011-06-02-17-25-13-standup_chair-m1.txt\nAccelerometer-2011-06-02-17-26-02-standup_chair-m1.txt\nAccelerometer-2011-06-02-17-26-55-standup_chair-m1.txt\nAccelerometer-2011-06-02-17-31-39-standup_chair-m1.txt\nAccelerometer-2011-06-02-17-41-11-standup_chair-m1.txt\nAccelerometer-2011-06-02-17-42-24-standup_chair-m1.txt\nAccelerometer-2011-06-02-17-43-41-standup_chair-m1.txt\nAccelerometer-2011-06-02-17-44-52-standup_chair-m1.txt\nAccelerometer-2011-12-05-09-38-00-standup_chair-f1.txt\nAccelerometer-2011-12-05-09-40-57-standup_chair-f1.txt\nAccelerometer-2011-12-05-09-45-47-standup_chair-f1.txt\nAccelerometer-2011-12-05-09-48-17-standup_chair-f1.txt\nAccelerometer-2011-12-05-09-50-23-standup_chair-f1.txt\nAccelerometer-2011-12-05-09-52-58-standup_chair-f1.txt\nAccelerometer-2011-12-05-09-55-36-standup_chair-f1.txt\nAccelerometer-2011-12-11-08-09-59-standup_chair-f4.txt\nAccelerometer-2011-12-11-08-11-36-standup_chair-f4.txt\nAccelerometer-2011-12-11-08-12-46-standup_chair-f4.txt\nAccelerometer-2011-12-11-08-13-41-standup_chair-f4.txt\nAccelerometer-2011-12-11-08-14-55-standup_chair-f4.txt\nAccelerometer-2011-12-11-08-15-55-standup_chair-f4.txt\nAccelerometer-2011-12-11-08-19-06-standup_chair-m2.txt\nAccelerometer-2011-12-11-08-19-58-standup_chair-m2.txt\nAccelerometer-2011-12-11-08-20-56-standup_chair-m2.txt\nAccelerometer-2011-12-11-08-22-05-standup_chair-m2.txt\nAccelerometer-2011-12-11-08-23-15-standup_chair-m2.txt\nAccelerometer-2011-12-11-08-24-09-standup_chair-m2.txt\nAccelerometer-2012-03-23-03-44-39-standup_chair-m9.txt\nAccelerometer-2012-03-23-03-48-20-standup_chair-m9.txt\nAccelerometer-2012-03-26-04-54-30-standup_chair-f2.txt\nAccelerometer-2012-03-26-04-58-13-standup_chair-f2.txt\nAccelerometer-2012-03-26-05-02-40-standup_chair-m3.txt\nAccelerometer-2012-03-26-05-04-33-standup_chair-m3.txt\nAccelerometer-2012-05-25-18-27-29-standup_chair-f4.txt\nAccelerometer-2012-05-25-18-28-24-standup_chair-f4.txt\nAccelerometer-2012-05-25-18-33-08-standup_chair-f4.txt\nAccelerometer-2012-05-25-18-35-48-standup_chair-f4.txt\nAccelerometer-2012-05-28-17-39-31-standup_chair-m1.txt\nAccelerometer-2012-05-28-17-40-45-standup_chair-m1.txt\nAccelerometer-2012-05-28-17-45-43-standup_chair-m1.txt\nAccelerometer-2012-05-28-17-50-40-standup_chair-m1.txt\nAccelerometer-2012-05-29-16-43-05-standup_chair-f2.txt\nAccelerometer-2012-05-29-16-47-10-standup_chair-f2.txt\nAccelerometer-2012-05-29-17-12-51-standup_chair-m3.txt\nAccelerometer-2012-05-29-17-14-27-standup_chair-m3.txt\nAccelerometer-2011-03-29-09-30-56-use_telephone-f1.txt\nAccelerometer-2011-03-29-09-32-59-use_telephone-f1.txt\nAccelerometer-2011-03-29-09-52-41-use_telephone-f1.txt\nAccelerometer-2011-04-05-18-29-19-use_telephone-f1.txt\nAccelerometer-2011-04-11-11-53-34-use_telephone-f1.txt\nAccelerometer-2011-04-11-11-54-10-use_telephone-f1.txt\nAccelerometer-2011-05-30-08-27-44-use_telephone-f1.txt\nAccelerometer-2011-05-30-09-34-12-use_telephone-f1.txt\nAccelerometer-2011-05-30-10-28-13-use_telephone-m1.txt\nAccelerometer-2011-05-30-21-00-40-use_telephone-f1.txt\nAccelerometer-2011-05-30-21-43-16-use_telephone-m2.txt\nAccelerometer-2011-05-31-15-03-53-use_telephone-f1.txt\nAccelerometer-2011-05-31-16-31-11-use_telephone-f1.txt\nAccelerometer-2011-03-24-09-51-07-walk-f1.txt\nAccelerometer-2011-03-24-09-52-11-walk-f1.txt\nAccelerometer-2011-03-24-10-58-34-walk-f1.txt\nAccelerometer-2011-03-24-11-20-24-walk-f1.txt\nAccelerometer-2011-03-24-11-21-13-walk-f1.txt\nAccelerometer-2011-03-29-16-16-01-walk-f1.txt\nAccelerometer-2011-04-05-18-30-57-walk-f1.txt\nAccelerometer-2011-04-11-11-55-57-walk-f1.txt\nAccelerometer-2011-05-30-08-29-07-walk-f1.txt\nAccelerometer-2011-05-30-09-35-03-walk-f1.txt\nAccelerometer-2011-05-30-10-29-28-walk-m1.txt\nAccelerometer-2011-05-30-20-51-03-walk-f1.txt\nAccelerometer-2011-05-30-20-57-19-walk-f1.txt\nAccelerometer-2011-05-30-21-01-39-walk-f1.txt\nAccelerometer-2011-05-30-21-34-15-walk-m2.txt\nAccelerometer-2011-05-30-21-39-55-walk-m2.txt\nAccelerometer-2011-05-30-21-44-35-walk-m2.txt\nAccelerometer-2011-05-31-14-54-41-walk-f1.txt\nAccelerometer-2011-05-31-15-01-05-walk-f1.txt\nAccelerometer-2011-05-31-15-05-44-walk-f1.txt\nAccelerometer-2011-05-31-16-23-32-walk-f1.txt\nAccelerometer-2011-05-31-16-28-55-walk-f1.txt\nAccelerometer-2011-05-31-16-32-12-walk-f1.txt\nAccelerometer-2012-05-29-16-45-30-walk-f2.txt\nAccelerometer-2012-05-29-16-46-02-walk-f2.txt\nAccelerometer-2012-05-29-16-51-03-walk-f2.txt\nAccelerometer-2012-05-29-16-51-40-walk-f2.txt\nAccelerometer-2012-05-29-17-13-45-walk-m3.txt\nAccelerometer-2012-05-29-17-15-15-walk-m3.txt\nAccelerometer-2012-05-29-17-16-24-walk-m3.txt\nAccelerometer-2012-05-29-17-18-55-walk-m3.txt\nAccelerometer-2012-05-30-18-28-32-walk-f3.txt\nAccelerometer-2012-05-30-18-29-02-walk-f3.txt\nAccelerometer-2012-05-30-18-29-35-walk-f3.txt\nAccelerometer-2012-05-30-18-30-08-walk-f3.txt\nAccelerometer-2012-05-30-19-09-54-walk-m4.txt\nAccelerometer-2012-05-30-19-10-27-walk-m4.txt\nAccelerometer-2012-05-30-19-10-56-walk-m4.txt\nAccelerometer-2012-05-30-19-11-27-walk-m4.txt\nAccelerometer-2012-05-30-22-02-42-walk-m2.txt\nAccelerometer-2012-05-30-22-03-03-walk-m2.txt\nAccelerometer-2012-05-30-22-03-27-walk-m2.txt\nAccelerometer-2012-05-30-22-03-52-walk-m2.txt\nAccelerometer-2012-05-30-22-04-20-walk-m2.txt\nAccelerometer-2012-06-06-08-56-33-walk-m5.txt\nAccelerometer-2012-06-06-08-57-26-walk-m5.txt\nAccelerometer-2012-06-06-08-58-20-walk-m5.txt\nAccelerometer-2012-06-06-08-59-00-walk-m5.txt\nAccelerometer-2012-06-06-09-02-06-walk-m5.txt\nAccelerometer-2012-06-06-09-02-54-walk-m5.txt\nAccelerometer-2012-06-06-09-03-57-walk-m5.txt\nAccelerometer-2012-06-06-09-04-41-walk-m5.txt\nAccelerometer-2012-06-06-09-07-30-walk-m5.txt\nAccelerometer-2012-06-06-09-08-19-walk-m5.txt\nAccelerometer-2012-06-06-09-09-21-walk-m5.txt\nAccelerometer-2012-06-06-09-10-02-walk-m5.txt\nAccelerometer-2012-06-06-09-34-20-walk-m6.txt\nAccelerometer-2012-06-06-09-35-07-walk-m6.txt\nAccelerometer-2012-06-06-09-36-06-walk-m6.txt\nAccelerometer-2012-06-06-09-36-38-walk-m6.txt\nAccelerometer-2012-06-06-09-39-47-walk-m6.txt\nAccelerometer-2012-06-06-09-40-33-walk-m6.txt\nAccelerometer-2012-06-06-09-41-32-walk-m6.txt\nAccelerometer-2012-06-06-09-42-05-walk-m6.txt\nAccelerometer-2012-06-06-09-45-03-walk-m6.txt\nAccelerometer-2012-06-06-09-45-38-walk-m6.txt\nAccelerometer-2012-06-06-09-46-31-walk-m6.txt\nAccelerometer-2012-06-06-09-47-07-walk-m6.txt\nAccelerometer-2012-06-06-14-06-10-walk-m7.txt\nAccelerometer-2012-06-06-14-06-43-walk-m7.txt\nAccelerometer-2012-06-06-14-07-41-walk-m7.txt\nAccelerometer-2012-06-06-14-08-12-walk-m7.txt\nAccelerometer-2012-06-06-14-10-02-walk-m7.txt\nAccelerometer-2012-06-06-14-10-33-walk-m7.txt\nAccelerometer-2012-06-06-14-11-30-walk-m7.txt\nAccelerometer-2012-06-06-14-12-00-walk-m7.txt\nAccelerometer-2012-06-06-14-13-56-walk-m7.txt\nAccelerometer-2012-06-06-14-14-27-walk-m7.txt\nAccelerometer-2012-06-06-14-15-25-walk-m7.txt\nAccelerometer-2012-06-06-14-15-57-walk-m7.txt\nAccelerometer-2012-06-07-10-50-09-walk-f1.txt\nAccelerometer-2012-06-07-10-50-42-walk-f1.txt\nAccelerometer-2012-06-07-10-52-14-walk-f1.txt\n" 46 | } 47 | ], 48 | "source": "import os\nimport fnmatch\n\nd = 'HMP_Dataset/'\n\n# filter list for all folders containing data (folders that don't start with .)\nfile_list_filtered = [s for s in os.listdir(d) if os.path.isdir(os.path.join(d,s)) & ~fnmatch.fnmatch(s, '.*')]\n\nfrom pyspark.sql.functions import lit\n\n#create pandas data frame for all the data\n\ndf = None\n\nfor category in file_list_filtered:\n data_files = os.listdir('HMP_Dataset/'+category)\n \n #create a temporary pandas data frame for each data file\n for data_file in data_files:\n print(data_file)\n temp_df = spark.read.option(\"header\", \"true\").option(\"header\", \"false\").option(\"delimiter\", \" \").csv('HMP_Dataset/'+category+'/'+data_file,schema=schema)\n \n #create a column called \"source\" storing the current CSV file\n temp_df = temp_df.withColumn(\"source\", lit(data_file))\n \n #create a column called \"class\" storing the current data folder\n temp_df = temp_df.withColumn(\"class\", lit(category))\n \n #append to existing data frame list\n #data_frames = data_frames + [temp_df]\n \n if df is None:\n df = temp_df\n else:\n df = df.union(temp_df)\n \n" 49 | }, 50 | { 51 | "execution_count": null, 52 | "cell_type": "code", 53 | "metadata": {}, 54 | "outputs": [], 55 | "source": "df.write.parquet('hmp.parquet')\n" 56 | } 57 | ], 58 | "metadata": { 59 | "kernelspec": { 60 | "display_name": "Python 3.6 with Spark", 61 | "name": "python36", 62 | "language": "python3" 63 | }, 64 | "language_info": { 65 | "mimetype": "text/x-python", 66 | "nbconvert_exporter": "python", 67 | "version": "3.6.8", 68 | "name": "python", 69 | "file_extension": ".py", 70 | "pygments_lexer": "ipython3", 71 | "codemirror_mode": { 72 | "version": 3, 73 | "name": "ipython" 74 | } 75 | } 76 | }, 77 | "nbformat": 4 78 | } -------------------------------------------------------------------------------- /SparkML Support Vector Machine.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat_minor": 1, 3 | "cells": [ 4 | { 5 | "execution_count": 1, 6 | "cell_type": "code", 7 | "metadata": {}, 8 | "outputs": [ 9 | { 10 | "output_type": "stream", 11 | "name": "stdout", 12 | "text": "Waiting for a Spark session to start...\nSpark Initialization Done! ApplicationId = app-20190904102622-0002\nKERNEL_ID = 6ee9079e-9381-4230-9d5e-cd7e3ab02cf9\nCloning into 'HMP_Dataset'...\nremote: Enumerating objects: 865, done.\u001b[K\nremote: Total 865 (delta 0), reused 0 (delta 0), pack-reused 865\u001b[K\nReceiving objects: 100% (865/865), 1010.96 KiB | 4.09 MiB/s, done.\nChecking out files: 100% (848/848), done.\n" 13 | } 14 | ], 15 | "source": "!rm -Rf HMP_Dataset\n!git clone https://github.com/wchill/HMP_Dataset" 16 | }, 17 | { 18 | "execution_count": 2, 19 | "cell_type": "code", 20 | "metadata": {}, 21 | "outputs": [], 22 | "source": "from pyspark.sql.types import StructType, StructField, IntegerType\n\nschema = StructType([\n StructField(\"x\", IntegerType(), True),\n StructField(\"y\", IntegerType(), True),\n StructField(\"z\", IntegerType(), True)])\n\n#df = spark.read.csv(\"user_click_seq.csv\",header=False,schema=schema)\n" 23 | }, 24 | { 25 | "execution_count": 3, 26 | "cell_type": "code", 27 | "metadata": {}, 28 | "outputs": [ 29 | { 30 | "output_type": "stream", 31 | "name": "stdout", 32 | "text": "Accelerometer-2011-04-11-13-28-18-brush_teeth-f1.txt\nAccelerometer-2011-04-11-13-29-54-brush_teeth-f1.txt\nAccelerometer-2011-05-30-08-35-11-brush_teeth-f1.txt\nAccelerometer-2011-05-30-09-36-50-brush_teeth-f1.txt\nAccelerometer-2011-05-30-10-34-16-brush_teeth-m1.txt\nAccelerometer-2011-05-30-21-10-57-brush_teeth-f1.txt\nAccelerometer-2011-05-30-21-55-04-brush_teeth-m2.txt\nAccelerometer-2011-05-31-15-16-47-brush_teeth-f1.txt\nAccelerometer-2011-06-02-10-42-22-brush_teeth-f1.txt\nAccelerometer-2011-06-02-10-45-50-brush_teeth-f1.txt\nAccelerometer-2011-06-06-10-45-27-brush_teeth-f1.txt\nAccelerometer-2011-06-06-10-48-05-brush_teeth-f1.txt\nAccelerometer-2011-03-24-10-24-39-climb_stairs-f1.txt\nAccelerometer-2011-03-24-10-25-44-climb_stairs-f1.txt\nAccelerometer-2011-03-29-09-55-46-climb_stairs-f1.txt\nAccelerometer-2011-04-05-18-21-22-climb_stairs-f1.txt\nAccelerometer-2011-04-05-18-32-29-climb_stairs-f1.txt\nAccelerometer-2011-04-11-11-44-35-climb_stairs-f1.txt\nAccelerometer-2011-04-11-11-57-50-climb_stairs-f1.txt\nAccelerometer-2011-04-11-11-58-30-climb_stairs-f1.txt\nAccelerometer-2011-05-30-08-21-38-climb_stairs-f1.txt\nAccelerometer-2011-05-30-08-30-37-climb_stairs-f1.txt\nAccelerometer-2011-05-30-08-39-09-climb_stairs-f1.txt\nAccelerometer-2011-05-30-09-29-58-climb_stairs-f1.txt\nAccelerometer-2011-05-30-09-38-52-climb_stairs-f1.txt\nAccelerometer-2011-05-30-09-43-37-climb_stairs-f1.txt\nAccelerometer-2011-05-30-10-20-47-climb_stairs-m1.txt\nAccelerometer-2011-05-30-10-32-53-climb_stairs-m1.txt\nAccelerometer-2011-05-30-10-41-10-climb_stairs-m1.txt\nAccelerometer-2011-05-30-20-54-39-climb_stairs-f1.txt\nAccelerometer-2011-05-30-21-02-43-climb_stairs-f1.txt\nAccelerometer-2011-05-30-21-14-55-climb_stairs-f1.txt\nAccelerometer-2011-05-30-21-36-58-climb_stairs-m2.txt\nAccelerometer-2011-05-30-21-46-05-climb_stairs-m2.txt\nAccelerometer-2011-05-30-22-00-32-climb_stairs-m2.txt\nAccelerometer-2011-05-31-14-58-41-climb_stairs-f1.txt\nAccelerometer-2011-05-31-15-06-32-climb_stairs-f1.txt\nAccelerometer-2011-05-31-15-20-50-climb_stairs-f1.txt\nAccelerometer-2011-05-31-16-26-09-climb_stairs-f1.txt\nAccelerometer-2011-05-31-16-32-44-climb_stairs-f1.txt\nAccelerometer-2011-06-02-10-37-15-climb_stairs-f1.txt\nAccelerometer-2011-06-02-10-37-44-climb_stairs-f1.txt\nAccelerometer-2011-06-02-10-39-21-climb_stairs-f1.txt\nAccelerometer-2011-06-02-10-40-10-climb_stairs-f1.txt\nAccelerometer-2011-06-06-10-57-19-climb_stairs-f1.txt\nAccelerometer-2011-06-06-10-57-43-climb_stairs-f1.txt\nAccelerometer-2011-06-06-10-59-08-climb_stairs-f1.txt\nAccelerometer-2011-06-06-10-59-58-climb_stairs-f1.txt\nAccelerometer-2011-06-06-11-00-50-climb_stairs-f1.txt\nAccelerometer-2011-06-06-11-01-27-climb_stairs-f1.txt\nAccelerometer-2011-06-06-11-02-24-climb_stairs-f1.txt\nAccelerometer-2012-05-28-17-56-03-climb_stairs-m1.txt\nAccelerometer-2012-05-28-17-56-40-climb_stairs-m1.txt\nAccelerometer-2012-05-29-16-53-12-climb_stairs-f2.txt\nAccelerometer-2012-05-29-16-54-38-climb_stairs-f2.txt\nAccelerometer-2012-05-29-17-17-05-climb_stairs-m3.txt\nAccelerometer-2012-05-29-17-17-51-climb_stairs-m3.txt\nAccelerometer-2012-05-30-18-31-08-climb_stairs-f3.txt\nAccelerometer-2012-05-30-18-31-52-climb_stairs-f3.txt\nAccelerometer-2012-05-30-18-32-56-climb_stairs-f3.txt\nAccelerometer-2012-05-30-18-33-57-climb_stairs-f3.txt\nAccelerometer-2012-05-30-19-12-19-climb_stairs-m4.txt\nAccelerometer-2012-05-30-19-12-57-climb_stairs-m4.txt\nAccelerometer-2012-05-30-19-13-50-climb_stairs-m4.txt\nAccelerometer-2012-05-30-19-14-51-climb_stairs-m4.txt\nAccelerometer-2012-05-30-22-06-17-climb_stairs-m2.txt\nAccelerometer-2012-05-30-22-06-47-climb_stairs-m2.txt\nAccelerometer-2012-05-30-22-07-15-climb_stairs-m2.txt\nAccelerometer-2012-05-30-22-07-44-climb_stairs-m2.txt\nAccelerometer-2012-05-30-22-08-15-climb_stairs-m2.txt\nAccelerometer-2012-06-06-08-53-29-climb_stairs-m5.txt\nAccelerometer-2012-06-06-08-53-47-climb_stairs-m5.txt\nAccelerometer-2012-06-06-08-54-08-climb_stairs-m5.txt\nAccelerometer-2012-06-06-08-54-29-climb_stairs-m5.txt\nAccelerometer-2012-06-06-08-59-53-climb_stairs-m5.txt\nAccelerometer-2012-06-06-09-00-24-climb_stairs-m5.txt\nAccelerometer-2012-06-06-09-00-51-climb_stairs-m5.txt\nAccelerometer-2012-06-06-09-01-08-climb_stairs-m5.txt\nAccelerometer-2012-06-06-09-05-28-climb_stairs-m5.txt\nAccelerometer-2012-06-06-09-06-03-climb_stairs-m5.txt\nAccelerometer-2012-06-06-09-06-28-climb_stairs-m5.txt\nAccelerometer-2012-06-06-09-06-49-climb_stairs-m5.txt\nAccelerometer-2012-06-06-09-32-04-climb_stairs-m6.txt\nAccelerometer-2012-06-06-09-32-36-climb_stairs-m6.txt\nAccelerometer-2012-06-06-09-32-58-climb_stairs-m6.txt\nAccelerometer-2012-06-06-09-33-15-climb_stairs-m6.txt\nAccelerometer-2012-06-06-09-37-23-climb_stairs-m6.txt\nAccelerometer-2012-06-06-09-37-58-climb_stairs-m6.txt\nAccelerometer-2012-06-06-09-38-17-climb_stairs-m6.txt\nAccelerometer-2012-06-06-09-38-43-climb_stairs-m6.txt\nAccelerometer-2012-06-06-09-42-55-climb_stairs-m6.txt\nAccelerometer-2012-06-06-09-43-14-climb_stairs-m6.txt\nAccelerometer-2012-06-06-09-43-47-climb_stairs-m6.txt\nAccelerometer-2012-06-06-09-44-02-climb_stairs-m6.txt\nAccelerometer-2012-06-06-14-04-18-climb_stairs-m7.txt\nAccelerometer-2012-06-06-14-04-51-climb_stairs-m7.txt\nAccelerometer-2012-06-06-14-05-05-climb_stairs-m7.txt\nAccelerometer-2012-06-06-14-05-18-climb_stairs-m7.txt\nAccelerometer-2012-06-06-14-08-44-climb_stairs-m7.txt\nAccelerometer-2012-06-06-14-08-57-climb_stairs-m7.txt\nAccelerometer-2012-06-06-14-09-12-climb_stairs-m7.txt\nAccelerometer-2012-06-06-14-09-24-climb_stairs-m7.txt\nAccelerometer-2012-06-06-14-12-35-climb_stairs-m7.txt\nAccelerometer-2012-06-06-14-12-49-climb_stairs-m7.txt\nAccelerometer-2012-06-06-14-13-05-climb_stairs-m7.txt\nAccelerometer-2012-06-06-14-13-20-climb_stairs-m7.txt\nAccelerometer-2012-06-07-10-48-08-climb_stairs-f1.txt\nAccelerometer-2012-06-07-10-48-24-climb_stairs-f1.txt\nAccelerometer-2012-06-07-10-49-17-climb_stairs-f1.txt\nAccelerometer-2012-06-07-10-49-35-climb_stairs-f1.txt\nAccelerometer-2012-06-07-10-53-34-climb_stairs-f1.txt\nAccelerometer-2012-06-07-10-53-53-climb_stairs-f1.txt\nAccelerometer-2012-06-07-10-54-12-climb_stairs-f1.txt\nAccelerometer-2012-06-07-10-54-29-climb_stairs-f1.txt\nAccelerometer-2011-03-24-09-44-34-comb_hair-f1.txt\nAccelerometer-2011-03-24-10-26-33-comb_hair-f1.txt\nAccelerometer-2011-03-24-10-57-40-comb_hair-f1.txt\nAccelerometer-2011-03-24-16-10-36-comb_hair-f2.txt\nAccelerometer-2011-03-29-08-57-24-comb_hair-f1.txt\nAccelerometer-2011-04-11-13-31-24-comb_hair-f1.txt\nAccelerometer-2011-05-30-08-32-58-comb_hair-f1.txt\nAccelerometer-2011-05-30-09-39-49-comb_hair-f1.txt\nAccelerometer-2011-05-30-10-36-26-comb_hair-m1.txt\nAccelerometer-2011-05-30-21-08-40-comb_hair-f1.txt\nAccelerometer-2011-05-30-21-57-03-comb_hair-m2.txt\nAccelerometer-2011-05-31-15-14-55-comb_hair-f1.txt\nAccelerometer-2011-06-02-10-41-33-comb_hair-f1.txt\nAccelerometer-2011-06-02-10-44-17-comb_hair-f1.txt\nAccelerometer-2011-06-02-16-12-44-comb_hair-f1.txt\nAccelerometer-2011-06-02-16-14-07-comb_hair-f1.txt\nAccelerometer-2011-06-02-16-18-54-comb_hair-f1.txt\nAccelerometer-2011-06-02-16-20-04-comb_hair-f1.txt\nAccelerometer-2011-06-02-16-48-41-comb_hair-f4.txt\nAccelerometer-2011-06-02-16-49-27-comb_hair-f4.txt\nAccelerometer-2011-06-02-16-56-03-comb_hair-f4.txt\nAccelerometer-2011-06-02-17-02-50-comb_hair-f4.txt\nAccelerometer-2011-06-02-17-03-33-comb_hair-f4.txt\nAccelerometer-2011-06-02-17-18-58-comb_hair-m1.txt\nAccelerometer-2011-06-02-17-32-57-comb_hair-m1.txt\nAccelerometer-2011-06-02-17-39-02-comb_hair-m1.txt\nAccelerometer-2011-06-02-17-39-54-comb_hair-m1.txt\nAccelerometer-2011-06-06-10-03-47-comb_hair-f1.txt\nAccelerometer-2011-06-06-10-05-40-comb_hair-f1.txt\nAccelerometer-2011-06-06-10-08-56-comb_hair-f1.txt\nAccelerometer-2011-06-06-10-10-30-comb_hair-f1.txt\nAccelerometer-2011-03-24-10-24-02-descend_stairs-f1.txt\nAccelerometer-2011-03-24-10-25-11-descend_stairs-f1.txt\nAccelerometer-2011-03-24-11-20-43-descend_stairs-f1.txt\nAccelerometer-2011-03-29-09-15-58-descend_stairs-f1.txt\nAccelerometer-2011-03-29-16-16-34-descend_stairs-f1.txt\nAccelerometer-2011-03-29-16-17-18-descend_stairs-f1.txt\nAccelerometer-2011-03-29-16-17-50-descend_stairs-f1.txt\nAccelerometer-2011-03-29-16-18-14-descend_stairs-f1.txt\nAccelerometer-2011-04-05-18-26-06-descend_stairs-f1.txt\nAccelerometer-2011-04-11-11-51-27-descend_stairs-f1.txt\nAccelerometer-2011-04-11-13-32-24-descend_stairs-f1.txt\nAccelerometer-2011-05-30-08-20-55-descend_stairs-f1.txt\nAccelerometer-2011-05-30-08-24-58-descend_stairs-f1.txt\nAccelerometer-2011-05-30-08-34-06-descend_stairs-f1.txt\nAccelerometer-2011-05-30-09-29-15-descend_stairs-f1.txt\nAccelerometer-2011-05-30-09-31-43-descend_stairs-f1.txt\nAccelerometer-2011-05-30-09-40-50-descend_stairs-f1.txt\nAccelerometer-2011-05-30-10-19-56-descend_stairs-m1.txt\nAccelerometer-2011-05-30-10-24-51-descend_stairs-m1.txt\nAccelerometer-2011-05-30-10-37-30-descend_stairs-m1.txt\nAccelerometer-2011-05-30-20-48-10-descend_stairs-f1.txt\nAccelerometer-2011-05-30-20-56-43-descend_stairs-f1.txt\nAccelerometer-2011-05-30-21-09-46-descend_stairs-f1.txt\nAccelerometer-2011-05-30-21-32-18-descend_stairs-m2.txt\nAccelerometer-2011-05-30-21-39-11-descend_stairs-m2.txt\nAccelerometer-2011-05-30-21-53-35-descend_stairs-m2.txt\nAccelerometer-2011-05-31-14-52-31-descend_stairs-f1.txt\nAccelerometer-2011-05-31-15-00-30-descend_stairs-f1.txt\nAccelerometer-2011-05-31-15-15-48-descend_stairs-f1.txt\nAccelerometer-2011-05-31-16-21-49-descend_stairs-f1.txt\nAccelerometer-2011-05-31-16-28-22-descend_stairs-f1.txt\nAccelerometer-2011-06-02-10-36-04-descend_stairs-f1.txt\nAccelerometer-2011-06-02-10-36-42-descend_stairs-f1.txt\nAccelerometer-2011-06-02-10-38-15-descend_stairs-f1.txt\nAccelerometer-2011-06-02-10-38-52-descend_stairs-f1.txt\nAccelerometer-2011-06-06-10-56-23-descend_stairs-f1.txt\nAccelerometer-2011-06-06-10-56-55-descend_stairs-f1.txt\nAccelerometer-2011-06-06-10-58-14-descend_stairs-f1.txt\nAccelerometer-2011-06-06-10-58-40-descend_stairs-f1.txt\nAccelerometer-2011-06-06-10-59-38-descend_stairs-f1.txt\nAccelerometer-2011-06-06-11-00-26-descend_stairs-f1.txt\nAccelerometer-2011-06-06-11-01-54-descend_stairs-f1.txt\nAccelerometer-2011-03-24-10-07-02-drink_glass-f1.txt\nAccelerometer-2011-03-24-10-16-02-drink_glass-f1.txt\nAccelerometer-2011-03-24-10-46-25-drink_glass-f1.txt\nAccelerometer-2011-03-24-11-14-00-drink_glass-f1.txt\nAccelerometer-2011-03-24-13-09-29-drink_glass-f1.txt\nAccelerometer-2011-03-24-13-17-06-drink_glass-f1.txt\nAccelerometer-2011-03-24-13-31-22-drink_glass-f1.txt\nAccelerometer-2011-03-24-16-08-10-drink_glass-f2.txt\nAccelerometer-2011-03-24-16-08-29-drink_glass-f2.txt\nAccelerometer-2011-04-05-18-55-33-drink_glass-f1.txt\nAccelerometer-2011-04-08-17-33-35-drink_glass-f3.txt\nAccelerometer-2011-04-08-17-35-00-drink_glass-f3.txt\nAccelerometer-2011-04-08-18-10-09-drink_glass-m4.txt\nAccelerometer-2011-04-11-12-55-39-drink_glass-f1.txt\nAccelerometer-2011-04-11-13-17-55-drink_glass-f1.txt\nAccelerometer-2011-04-12-21-43-48-drink_glass-m8.txt\nAccelerometer-2011-04-12-21-44-55-drink_glass-m8.txt\nAccelerometer-2011-05-30-21-06-15-drink_glass-f1.txt\nAccelerometer-2011-05-30-21-06-42-drink_glass-f1.txt\nAccelerometer-2011-05-30-21-07-10-drink_glass-f1.txt\nAccelerometer-2011-05-30-21-51-35-drink_glass-m2.txt\nAccelerometer-2011-05-30-21-51-59-drink_glass-m2.txt\nAccelerometer-2011-05-30-21-52-25-drink_glass-m2.txt\nAccelerometer-2011-05-31-15-12-05-drink_glass-f1.txt\nAccelerometer-2011-05-31-15-12-36-drink_glass-f1.txt\nAccelerometer-2011-05-31-15-13-09-drink_glass-f1.txt\nAccelerometer-2011-05-31-16-35-12-drink_glass-f1.txt\nAccelerometer-2011-05-31-16-35-41-drink_glass-f1.txt\nAccelerometer-2011-05-31-16-37-39-drink_glass-f1.txt\nAccelerometer-2011-06-01-14-13-57-drink_glass-f1.txt\nAccelerometer-2011-06-01-14-14-22-drink_glass-f1.txt\nAccelerometer-2011-06-01-14-14-49-drink_glass-f1.txt\nAccelerometer-2011-06-01-14-15-19-drink_glass-f1.txt\nAccelerometer-2011-06-01-14-15-49-drink_glass-f1.txt\nAccelerometer-2011-06-01-14-20-46-drink_glass-f1.txt\nAccelerometer-2011-06-01-14-21-52-drink_glass-f1.txt\nAccelerometer-2011-06-01-14-23-15-drink_glass-f1.txt\nAccelerometer-2011-06-01-14-24-51-drink_glass-f1.txt\nAccelerometer-2011-06-01-14-28-50-drink_glass-f1.txt\nAccelerometer-2011-06-01-14-30-43-drink_glass-f1.txt\nAccelerometer-2011-06-01-14-33-59-drink_glass-f1.txt\nAccelerometer-2011-06-01-15-04-40-drink_glass-f1.txt\nAccelerometer-2011-06-01-15-09-37-drink_glass-f1.txt\nAccelerometer-2011-06-01-15-14-42-drink_glass-f1.txt\nAccelerometer-2011-06-01-15-25-43-drink_glass-f1.txt\nAccelerometer-2011-06-01-16-44-44-drink_glass-f1.txt\nAccelerometer-2011-06-01-16-45-39-drink_glass-f1.txt\nAccelerometer-2011-06-01-16-47-29-drink_glass-f1.txt\nAccelerometer-2011-06-01-16-49-14-drink_glass-f1.txt\nAccelerometer-2011-06-01-16-53-24-drink_glass-f1.txt\nAccelerometer-2011-06-01-16-57-10-drink_glass-f1.txt\nAccelerometer-2011-06-02-16-51-25-drink_glass-f4.txt\nAccelerometer-2011-06-02-16-51-58-drink_glass-f4.txt\nAccelerometer-2011-06-02-16-52-53-drink_glass-f4.txt\nAccelerometer-2011-06-02-17-19-56-drink_glass-m1.txt\nAccelerometer-2011-06-02-17-20-17-drink_glass-m1.txt\nAccelerometer-2011-06-02-17-20-47-drink_glass-m1.txt\nAccelerometer-2011-06-02-17-23-53-drink_glass-m1.txt\nAccelerometer-2011-06-02-17-24-39-drink_glass-m1.txt\nAccelerometer-2011-06-02-17-29-13-drink_glass-m1.txt\nAccelerometer-2011-06-02-17-29-50-drink_glass-m1.txt\nAccelerometer-2011-06-02-17-30-51-drink_glass-m1.txt\nAccelerometer-2011-06-02-17-32-31-drink_glass-m1.txt\nAccelerometer-2011-06-02-17-40-40-drink_glass-m1.txt\nAccelerometer-2011-06-02-17-52-26-drink_glass-m1.txt\nAccelerometer-2012-03-23-03-47-02-drink_glass-m9.txt\nAccelerometer-2012-03-23-03-47-36-drink_glass-m9.txt\nAccelerometer-2012-03-23-03-54-54-drink_glass-m9.txt\nAccelerometer-2012-03-26-04-53-07-drink_glass-f2.txt\nAccelerometer-2012-03-26-04-56-11-drink_glass-f2.txt\nAccelerometer-2012-03-26-05-02-06-drink_glass-m3.txt\nAccelerometer-2012-03-26-05-03-53-drink_glass-m3.txt\nAccelerometer-2012-05-25-18-30-30-drink_glass-f4.txt\nAccelerometer-2012-05-25-18-31-18-drink_glass-f4.txt\nAccelerometer-2012-05-25-18-32-32-drink_glass-f4.txt\nAccelerometer-2012-05-25-18-33-57-drink_glass-f4.txt\nAccelerometer-2012-05-25-18-36-27-drink_glass-f4.txt\nAccelerometer-2012-05-28-17-42-29-drink_glass-m1.txt\nAccelerometer-2012-05-28-17-44-02-drink_glass-m1.txt\nAccelerometer-2012-05-28-17-44-31-drink_glass-m1.txt\nAccelerometer-2012-05-28-17-47-23-drink_glass-m1.txt\nAccelerometer-2012-05-28-17-47-49-drink_glass-m1.txt\nAccelerometer-2012-05-28-17-50-04-drink_glass-m1.txt\nAccelerometer-2012-05-29-16-42-17-drink_glass-f2.txt\nAccelerometer-2012-05-29-16-44-12-drink_glass-f2.txt\nAccelerometer-2012-05-29-16-48-07-drink_glass-f2.txt\nAccelerometer-2012-05-29-17-11-01-drink_glass-m3.txt\nAccelerometer-2012-05-29-17-20-28-drink_glass-m3.txt\nAccelerometer-2012-05-30-19-51-49-drink_glass-f2.txt\nAccelerometer-2012-05-30-19-53-19-drink_glass-f2.txt\nAccelerometer-2012-05-30-19-53-49-drink_glass-f2.txt\nAccelerometer-2012-05-30-19-54-48-drink_glass-f2.txt\nAccelerometer-2012-05-30-19-57-08-drink_glass-m3.txt\nAccelerometer-2012-05-30-19-58-10-drink_glass-m3.txt\nAccelerometer-2012-05-30-19-58-44-drink_glass-m3.txt\nAccelerometer-2012-05-30-19-59-40-drink_glass-m3.txt\nAccelerometer-2012-05-30-21-48-13-drink_glass-m2.txt\nAccelerometer-2012-05-30-21-48-45-drink_glass-m2.txt\nAccelerometer-2012-05-30-22-10-16-drink_glass-m2.txt\nAccelerometer-2012-05-30-22-10-40-drink_glass-m2.txt\nAccelerometer-2011-03-24-13-06-15-eat_meat-f1.txt\nAccelerometer-2011-03-24-13-10-14-eat_meat-f1.txt\nAccelerometer-2011-03-24-13-12-52-eat_meat-f1.txt\nAccelerometer-2011-03-24-13-17-42-eat_meat-f1.txt\nAccelerometer-2011-03-24-13-21-39-eat_meat-f1.txt\nAccelerometer-2011-03-24-13-33-22-eat_soup-f1.txt\nAccelerometer-2011-03-24-13-44-18-eat_soup-f1.txt\nAccelerometer-2011-03-24-13-56-42-eat_soup-f1.txt\nAccelerometer-2011-03-29-09-21-17-getup_bed-f1.txt\nAccelerometer-2011-03-29-09-24-50-getup_bed-f1.txt\nAccelerometer-2011-03-29-09-49-03-getup_bed-f1.txt\nAccelerometer-2011-04-05-18-28-21-getup_bed-f1.txt\nAccelerometer-2011-04-11-11-53-01-getup_bed-f1.txt\nAccelerometer-2011-04-11-13-34-05-getup_bed-f1.txt\nAccelerometer-2011-05-30-08-26-56-getup_bed-f1.txt\nAccelerometer-2011-05-30-08-38-15-getup_bed-f1.txt\nAccelerometer-2011-05-30-09-33-26-getup_bed-f1.txt\nAccelerometer-2011-05-30-09-42-46-getup_bed-f1.txt\nAccelerometer-2011-05-30-10-27-01-getup_bed-m1.txt\nAccelerometer-2011-05-30-10-39-27-getup_bed-m1.txt\nAccelerometer-2011-05-30-20-53-40-getup_bed-f1.txt\nAccelerometer-2011-05-30-20-59-57-getup_bed-f1.txt\nAccelerometer-2011-05-30-21-13-57-getup_bed-f1.txt\nAccelerometer-2011-05-30-21-36-01-getup_bed-m2.txt\nAccelerometer-2011-05-30-21-42-30-getup_bed-m2.txt\nAccelerometer-2011-05-30-21-59-46-getup_bed-m2.txt\nAccelerometer-2011-05-31-14-57-24-getup_bed-f1.txt\nAccelerometer-2011-05-31-15-02-55-getup_bed-f1.txt\nAccelerometer-2011-05-31-15-19-41-getup_bed-f1.txt\nAccelerometer-2011-05-31-16-25-09-getup_bed-f1.txt\nAccelerometer-2011-05-31-16-30-18-getup_bed-f1.txt\nAccelerometer-2011-06-02-16-57-57-getup_bed-f4.txt\nAccelerometer-2011-06-02-16-58-46-getup_bed-f4.txt\nAccelerometer-2011-06-02-17-00-08-getup_bed-f4.txt\nAccelerometer-2011-06-02-17-22-34-getup_bed-m1.txt\nAccelerometer-2012-05-28-17-52-54-getup_bed-m1.txt\nAccelerometer-2012-05-28-17-53-29-getup_bed-m1.txt\nAccelerometer-2012-05-28-17-54-04-getup_bed-m1.txt\nAccelerometer-2012-05-28-17-54-37-getup_bed-m1.txt\nAccelerometer-2012-05-28-17-55-04-getup_bed-m1.txt\nAccelerometer-2012-05-30-21-51-41-getup_bed-m2.txt\nAccelerometer-2012-05-30-21-52-18-getup_bed-m2.txt\nAccelerometer-2012-05-30-21-53-05-getup_bed-m2.txt\nAccelerometer-2012-05-30-21-53-38-getup_bed-m2.txt\nAccelerometer-2012-05-30-21-54-12-getup_bed-m2.txt\nAccelerometer-2012-06-07-22-15-16-getup_bed-f4.txt\nAccelerometer-2012-06-07-22-16-05-getup_bed-f4.txt\nAccelerometer-2012-06-07-22-16-42-getup_bed-f4.txt\nAccelerometer-2012-06-07-22-17-45-getup_bed-f4.txt\nAccelerometer-2012-06-07-22-19-25-getup_bed-f4.txt\nAccelerometer-2012-06-07-22-20-59-getup_bed-f4.txt\nAccelerometer-2012-06-07-22-23-46-getup_bed-f4.txt\nAccelerometer-2012-06-07-22-24-33-getup_bed-f4.txt\nAccelerometer-2012-06-07-22-26-32-getup_bed-f4.txt\nAccelerometer-2012-06-07-22-28-50-getup_bed-f4.txt\nAccelerometer-2012-06-07-22-30-31-getup_bed-f4.txt\nAccelerometer-2012-06-07-22-31-18-getup_bed-f4.txt\nAccelerometer-2012-06-12-15-28-34-getup_bed-m4.txt\nAccelerometer-2012-06-12-15-29-15-getup_bed-m4.txt\nAccelerometer-2012-06-12-15-30-07-getup_bed-m4.txt\nAccelerometer-2012-06-12-15-31-01-getup_bed-m4.txt\nAccelerometer-2012-06-12-15-31-56-getup_bed-m4.txt\nAccelerometer-2012-06-12-15-32-38-getup_bed-m4.txt\nAccelerometer-2012-06-12-15-34-01-getup_bed-m4.txt\nAccelerometer-2012-06-12-15-34-40-getup_bed-m4.txt\nAccelerometer-2012-06-12-15-35-29-getup_bed-m4.txt\nAccelerometer-2012-06-12-15-36-02-getup_bed-m4.txt\nAccelerometer-2012-06-12-15-50-48-getup_bed-f3.txt\nAccelerometer-2012-06-12-15-51-25-getup_bed-f3.txt\nAccelerometer-2012-06-12-15-52-04-getup_bed-f3.txt\nAccelerometer-2012-06-12-15-52-46-getup_bed-f3.txt\nAccelerometer-2012-06-12-15-53-20-getup_bed-f3.txt\nAccelerometer-2012-06-12-15-54-03-getup_bed-f3.txt\nAccelerometer-2012-06-12-15-54-33-getup_bed-f3.txt\nAccelerometer-2012-06-12-15-56-41-getup_bed-f3.txt\nAccelerometer-2012-06-12-15-57-21-getup_bed-f3.txt\nAccelerometer-2012-06-12-15-58-01-getup_bed-f3.txt\nAccelerometer-2012-06-12-18-39-37-getup_bed-f2.txt\nAccelerometer-2012-06-12-18-40-26-getup_bed-f2.txt\nAccelerometer-2012-06-12-18-41-40-getup_bed-f2.txt\nAccelerometer-2012-06-12-18-42-44-getup_bed-f2.txt\nAccelerometer-2012-06-12-18-43-26-getup_bed-f2.txt\nAccelerometer-2012-06-12-18-44-04-getup_bed-f2.txt\nAccelerometer-2012-06-12-18-44-53-getup_bed-f2.txt\nAccelerometer-2012-06-12-18-48-47-getup_bed-m3.txt\nAccelerometer-2012-06-12-18-49-31-getup_bed-m3.txt\nAccelerometer-2012-06-12-18-50-08-getup_bed-m3.txt\nAccelerometer-2012-06-12-18-50-50-getup_bed-m3.txt\nAccelerometer-2012-06-12-18-51-33-getup_bed-m3.txt\nAccelerometer-2012-06-12-18-52-06-getup_bed-m3.txt\nAccelerometer-2012-06-12-18-52-37-getup_bed-m3.txt\nAccelerometer-2012-06-20-20-27-19-getup_bed-f5.txt\nAccelerometer-2012-06-20-20-28-27-getup_bed-f5.txt\nAccelerometer-2012-06-20-20-29-11-getup_bed-f5.txt\nAccelerometer-2012-06-20-20-29-49-getup_bed-f5.txt\nAccelerometer-2012-06-20-20-30-45-getup_bed-f5.txt\nAccelerometer-2012-06-20-20-31-40-getup_bed-f5.txt\nAccelerometer-2012-06-20-20-32-40-getup_bed-f5.txt\nAccelerometer-2012-06-20-20-33-22-getup_bed-f5.txt\nAccelerometer-2012-06-20-20-34-30-getup_bed-f5.txt\nAccelerometer-2012-06-20-21-52-24-getup_bed-m10.txt\nAccelerometer-2012-06-20-21-53-06-getup_bed-m10.txt\nAccelerometer-2012-06-20-21-53-40-getup_bed-m10.txt\nAccelerometer-2012-06-20-21-55-30-getup_bed-m10.txt\nAccelerometer-2012-06-20-21-56-36-getup_bed-m10.txt\nAccelerometer-2012-06-20-21-57-33-getup_bed-m10.txt\nAccelerometer-2012-06-20-21-58-13-getup_bed-m10.txt\nAccelerometer-2012-06-20-21-59-57-getup_bed-m10.txt\nAccelerometer-2012-06-20-22-00-55-getup_bed-m10.txt\nAccelerometer-2011-03-29-09-19-22-liedown_bed-f1.txt\nAccelerometer-2011-03-29-09-23-22-liedown_bed-f1.txt\nAccelerometer-2011-03-29-09-45-46-liedown_bed-f1.txt\nAccelerometer-2011-04-05-18-27-12-liedown_bed-f1.txt\nAccelerometer-2011-04-11-11-52-20-liedown_bed-f1.txt\nAccelerometer-2011-04-11-13-33-26-liedown_bed-f1.txt\nAccelerometer-2011-05-30-08-25-59-liedown_bed-f1.txt\nAccelerometer-2011-05-30-08-37-27-liedown_bed-f1.txt\nAccelerometer-2011-05-30-09-32-42-liedown_bed-f1.txt\nAccelerometer-2011-05-30-09-41-49-liedown_bed-f1.txt\nAccelerometer-2011-05-30-10-26-14-liedown_bed-m1.txt\nAccelerometer-2011-05-30-10-38-41-liedown_bed-m1.txt\nAccelerometer-2011-05-30-20-52-31-liedown_bed-f1.txt\nAccelerometer-2011-05-30-20-59-04-liedown_bed-f1.txt\nAccelerometer-2011-05-30-21-13-15-liedown_bed-f1.txt\nAccelerometer-2011-05-30-21-35-19-liedown_bed-m2.txt\nAccelerometer-2011-05-30-21-41-32-liedown_bed-m2.txt\nAccelerometer-2011-05-30-21-59-16-liedown_bed-m2.txt\nAccelerometer-2011-05-31-14-56-04-liedown_bed-f1.txt\nAccelerometer-2011-05-31-15-02-19-liedown_bed-f1.txt\nAccelerometer-2011-05-31-15-18-50-liedown_bed-f1.txt\nAccelerometer-2011-05-31-16-24-36-liedown_bed-f1.txt\nAccelerometer-2011-05-31-16-29-43-liedown_bed-f1.txt\nAccelerometer-2011-06-02-16-57-35-liedown_bed-f4.txt\nAccelerometer-2011-06-02-16-58-20-liedown_bed-f4.txt\nAccelerometer-2011-06-02-16-59-13-liedown_bed-f4.txt\nAccelerometer-2011-06-02-17-00-38-liedown_bed-f4.txt\nAccelerometer-2011-06-02-17-21-57-liedown_bed-m1.txt\nAccelerometer-2011-03-24-10-04-32-pour_water-f1.txt\nAccelerometer-2011-03-24-10-51-12-pour_water-f1.txt\nAccelerometer-2011-03-24-13-30-01-pour_water-f1.txt\nAccelerometer-2011-04-05-18-54-14-pour_water-f1.txt\nAccelerometer-2011-04-11-12-55-26-pour_water-f1.txt\nAccelerometer-2011-05-30-21-05-39-pour_water-f1.txt\nAccelerometer-2011-05-30-21-51-05-pour_water-m2.txt\nAccelerometer-2011-05-31-15-11-25-pour_water-f1.txt\nAccelerometer-2011-05-31-16-34-32-pour_water-f1.txt\nAccelerometer-2011-06-01-14-12-53-pour_water-f1.txt\nAccelerometer-2011-06-01-14-13-29-pour_water-f1.txt\nAccelerometer-2011-06-01-14-16-35-pour_water-f1.txt\nAccelerometer-2011-06-01-14-17-02-pour_water-f1.txt\nAccelerometer-2011-06-01-14-18-36-pour_water-f1.txt\nAccelerometer-2011-06-01-14-25-16-pour_water-f1.txt\nAccelerometer-2011-06-01-14-27-40-pour_water-f1.txt\nAccelerometer-2011-06-01-14-32-38-pour_water-f1.txt\nAccelerometer-2011-06-01-16-46-50-pour_water-f1.txt\nAccelerometer-2011-06-02-16-50-40-pour_water-f4.txt\nAccelerometer-2011-06-02-16-52-30-pour_water-f4.txt\nAccelerometer-2011-06-02-17-04-09-pour_water-f4.txt\nAccelerometer-2011-06-02-17-06-15-pour_water-f4.txt\nAccelerometer-2011-06-02-17-06-44-pour_water-f4.txt\nAccelerometer-2011-06-02-17-23-16-pour_water-m1.txt\nAccelerometer-2011-06-02-17-28-27-pour_water-m1.txt\nAccelerometer-2011-06-02-17-33-30-pour_water-m1.txt\nAccelerometer-2011-06-02-17-45-45-pour_water-m1.txt\nAccelerometer-2011-06-06-09-39-30-pour_water-f1.txt\nAccelerometer-2011-06-06-09-40-34-pour_water-f1.txt\nAccelerometer-2011-06-06-09-42-11-pour_water-f1.txt\nAccelerometer-2011-06-06-09-44-12-pour_water-f1.txt\nAccelerometer-2011-06-06-09-45-45-pour_water-f1.txt\nAccelerometer-2011-06-06-09-46-20-pour_water-f1.txt\nAccelerometer-2011-06-06-09-47-48-pour_water-f1.txt\nAccelerometer-2011-06-06-09-48-59-pour_water-f1.txt\nAccelerometer-2011-06-06-09-49-51-pour_water-f1.txt\nAccelerometer-2011-06-06-09-50-17-pour_water-f1.txt\nAccelerometer-2011-06-06-09-51-53-pour_water-f1.txt\nAccelerometer-2011-06-06-09-55-25-pour_water-f1.txt\nAccelerometer-2011-06-06-09-56-28-pour_water-f1.txt\nAccelerometer-2012-03-23-03-46-21-pour_water-m9.txt\nAccelerometer-2012-03-23-03-54-26-pour_water-m9.txt\nAccelerometer-2012-03-23-03-55-46-pour_water-m9.txt\nAccelerometer-2012-03-26-04-53-59-pour_water-f2.txt\nAccelerometer-2012-03-26-04-55-40-pour_water-f2.txt\nAccelerometer-2012-03-26-05-01-39-pour_water-m3.txt\nAccelerometer-2012-03-26-05-03-27-pour_water-m3.txt\nAccelerometer-2012-05-25-18-29-48-pour_water-f4.txt\nAccelerometer-2012-05-25-18-31-58-pour_water-f4.txt\nAccelerometer-2012-05-25-18-34-46-pour_water-f4.txt\nAccelerometer-2012-05-25-18-37-06-pour_water-f4.txt\nAccelerometer-2012-05-28-17-41-55-pour_water-m1.txt\nAccelerometer-2012-05-28-17-43-20-pour_water-m1.txt\nAccelerometer-2012-05-28-17-46-43-pour_water-m1.txt\nAccelerometer-2012-05-28-17-49-34-pour_water-m1.txt\nAccelerometer-2012-05-29-16-43-41-pour_water-f2.txt\nAccelerometer-2012-05-29-16-49-00-pour_water-f2.txt\nAccelerometer-2012-05-29-17-10-30-pour_water-m3.txt\nAccelerometer-2012-05-29-17-12-07-pour_water-m3.txt\nAccelerometer-2012-05-29-17-19-55-pour_water-m3.txt\nAccelerometer-2012-05-30-18-26-02-pour_water-f3.txt\nAccelerometer-2012-05-30-18-26-49-pour_water-f3.txt\nAccelerometer-2012-05-30-18-27-15-pour_water-f3.txt\nAccelerometer-2012-05-30-18-27-41-pour_water-f3.txt\nAccelerometer-2012-05-30-19-07-14-pour_water-m4.txt\nAccelerometer-2012-05-30-19-07-43-pour_water-m4.txt\nAccelerometer-2012-05-30-19-08-20-pour_water-m4.txt\nAccelerometer-2012-05-30-19-08-50-pour_water-m4.txt\nAccelerometer-2012-05-30-19-50-42-pour_water-f2.txt\nAccelerometer-2012-05-30-19-52-29-pour_water-f2.txt\nAccelerometer-2012-05-30-19-54-24-pour_water-f2.txt\nAccelerometer-2012-05-30-19-56-40-pour_water-m3.txt\nAccelerometer-2012-05-30-19-57-40-pour_water-m3.txt\nAccelerometer-2012-05-30-19-59-17-pour_water-m3.txt\nAccelerometer-2012-06-07-21-27-46-pour_water-f4.txt\nAccelerometer-2012-06-07-21-28-23-pour_water-f4.txt\nAccelerometer-2012-06-07-21-28-48-pour_water-f4.txt\nAccelerometer-2012-06-07-21-29-09-pour_water-f4.txt\nAccelerometer-2012-06-07-21-29-48-pour_water-f4.txt\nAccelerometer-2012-06-07-21-30-16-pour_water-f4.txt\nAccelerometer-2012-06-07-21-30-37-pour_water-f4.txt\nAccelerometer-2012-06-07-21-31-05-pour_water-f4.txt\nAccelerometer-2012-06-07-21-31-24-pour_water-f4.txt\nAccelerometer-2012-06-07-21-31-48-pour_water-f4.txt\nAccelerometer-2012-06-07-21-32-12-pour_water-f4.txt\nAccelerometer-2012-06-07-21-32-37-pour_water-f4.txt\nAccelerometer-2012-06-07-21-33-21-pour_water-f4.txt\nAccelerometer-2012-06-07-21-33-47-pour_water-f4.txt\nAccelerometer-2012-06-07-21-34-22-pour_water-f4.txt\nAccelerometer-2012-06-07-21-34-47-pour_water-f4.txt\nAccelerometer-2012-06-07-21-35-28-pour_water-f4.txt\nAccelerometer-2012-06-07-21-35-50-pour_water-f4.txt\nAccelerometer-2012-06-09-22-54-40-pour_water-m11.txt\nAccelerometer-2012-06-09-22-55-08-pour_water-m11.txt\nAccelerometer-2012-06-09-22-55-42-pour_water-m11.txt\nAccelerometer-2012-06-09-22-56-17-pour_water-m11.txt\nAccelerometer-2012-06-09-22-56-53-pour_water-m11.txt\nAccelerometer-2012-06-09-22-57-12-pour_water-m11.txt\nAccelerometer-2012-06-09-22-58-08-pour_water-m11.txt\nAccelerometer-2012-06-09-22-58-28-pour_water-m11.txt\nAccelerometer-2011-03-24-09-50-16-sitdown_chair-f1.txt\nAccelerometer-2011-03-24-10-27-33-sitdown_chair-f1.txt\nAccelerometer-2011-03-24-16-09-29-sitdown_chair-f2.txt\nAccelerometer-2011-03-29-09-06-48-sitdown_chair-f1.txt\nAccelerometer-2011-03-29-09-12-27-sitdown_chair-f1.txt\nAccelerometer-2011-04-05-18-22-14-sitdown_chair-f1.txt\nAccelerometer-2011-04-05-18-47-38-sitdown_chair-f1.txt\nAccelerometer-2011-04-08-17-33-10-sitdown_chair-f3.txt\nAccelerometer-2011-04-08-17-34-35-sitdown_chair-f3.txt\nAccelerometer-2011-04-08-18-09-40-sitdown_chair-m4.txt\nAccelerometer-2011-04-11-11-45-28-sitdown_chair-f1.txt\nAccelerometer-2011-04-12-21-42-24-sitdown_chair-m8.txt\nAccelerometer-2011-04-12-21-43-15-sitdown_chair-m8.txt\nAccelerometer-2011-05-30-08-22-28-sitdown_chair-f1.txt\nAccelerometer-2011-05-30-08-31-30-sitdown_chair-f1.txt\nAccelerometer-2011-05-30-09-23-12-sitdown_chair-f1.txt\nAccelerometer-2011-05-30-09-24-48-sitdown_chair-f1.txt\nAccelerometer-2011-05-30-10-21-50-sitdown_chair-m1.txt\nAccelerometer-2011-05-30-10-31-12-sitdown_chair-m1.txt\nAccelerometer-2011-05-30-20-48-57-sitdown_chair-f1.txt\nAccelerometer-2011-05-30-20-49-32-sitdown_chair-f1.txt\nAccelerometer-2011-05-30-20-55-28-sitdown_chair-f1.txt\nAccelerometer-2011-05-30-21-04-13-sitdown_chair-f1.txt\nAccelerometer-2011-05-30-21-33-15-sitdown_chair-m2.txt\nAccelerometer-2011-05-30-21-37-52-sitdown_chair-m2.txt\nAccelerometer-2011-05-30-21-48-01-sitdown_chair-m2.txt\nAccelerometer-2011-05-31-14-53-37-sitdown_chair-f1.txt\nAccelerometer-2011-05-31-14-59-27-sitdown_chair-f1.txt\nAccelerometer-2011-05-31-15-07-32-sitdown_chair-f1.txt\nAccelerometer-2011-05-31-16-22-37-sitdown_chair-f1.txt\nAccelerometer-2011-05-31-16-27-00-sitdown_chair-f1.txt\nAccelerometer-2011-05-31-16-33-27-sitdown_chair-f1.txt\nAccelerometer-2011-06-01-14-37-35-sitdown_chair-f1.txt\nAccelerometer-2011-06-01-14-38-38-sitdown_chair-f1.txt\nAccelerometer-2011-06-01-14-39-48-sitdown_chair-f1.txt\nAccelerometer-2011-06-01-14-40-31-sitdown_chair-f1.txt\nAccelerometer-2011-06-01-14-41-42-sitdown_chair-f1.txt\nAccelerometer-2011-06-01-14-43-55-sitdown_chair-f1.txt\nAccelerometer-2011-06-01-14-45-42-sitdown_chair-f1.txt\nAccelerometer-2011-06-01-14-46-43-sitdown_chair-f1.txt\nAccelerometer-2011-06-01-14-50-18-sitdown_chair-f1.txt\nAccelerometer-2011-06-01-14-51-28-sitdown_chair-f1.txt\nAccelerometer-2011-06-02-16-15-55-sitdown_chair-f1.txt\nAccelerometer-2011-06-02-16-17-10-sitdown_chair-f1.txt\nAccelerometer-2011-06-02-16-21-01-sitdown_chair-f1.txt\nAccelerometer-2011-06-02-16-21-36-sitdown_chair-f1.txt\nAccelerometer-2011-06-02-16-43-56-sitdown_chair-f4.txt\nAccelerometer-2011-06-02-16-44-37-sitdown_chair-f4.txt\nAccelerometer-2011-06-02-16-45-19-sitdown_chair-f4.txt\nAccelerometer-2011-06-02-16-46-07-sitdown_chair-f4.txt\nAccelerometer-2011-06-02-16-46-43-sitdown_chair-f4.txt\nAccelerometer-2011-06-02-16-53-58-sitdown_chair-f4.txt\nAccelerometer-2011-06-02-16-54-34-sitdown_chair-f4.txt\nAccelerometer-2011-06-02-16-55-35-sitdown_chair-f4.txt\nAccelerometer-2011-06-02-17-04-59-sitdown_chair-f4.txt\nAccelerometer-2011-06-02-17-05-36-sitdown_chair-f4.txt\nAccelerometer-2011-06-02-17-25-34-sitdown_chair-m1.txt\nAccelerometer-2011-06-02-17-26-23-sitdown_chair-m1.txt\nAccelerometer-2011-06-02-17-27-18-sitdown_chair-m1.txt\nAccelerometer-2011-06-02-17-32-07-sitdown_chair-m1.txt\nAccelerometer-2011-06-02-17-41-43-sitdown_chair-m1.txt\nAccelerometer-2011-06-02-17-42-45-sitdown_chair-m1.txt\nAccelerometer-2011-06-02-17-44-20-sitdown_chair-m1.txt\nAccelerometer-2011-06-02-17-45-12-sitdown_chair-m1.txt\nAccelerometer-2011-06-06-09-34-12-sitdown_chair-f1.txt\nAccelerometer-2011-06-06-09-35-11-sitdown_chair-f1.txt\nAccelerometer-2011-06-06-09-35-43-sitdown_chair-f1.txt\nAccelerometer-2011-06-06-09-36-06-sitdown_chair-f1.txt\nAccelerometer-2011-12-05-09-39-34-sitdown_chair-f1.txt\nAccelerometer-2011-12-05-09-44-08-sitdown_chair-f1.txt\nAccelerometer-2011-12-05-09-46-34-sitdown_chair-f1.txt\nAccelerometer-2011-12-05-09-48-48-sitdown_chair-f1.txt\nAccelerometer-2011-12-05-09-50-54-sitdown_chair-f1.txt\nAccelerometer-2011-12-05-09-53-32-sitdown_chair-f1.txt\nAccelerometer-2011-12-05-09-58-23-sitdown_chair-f1.txt\nAccelerometer-2011-12-11-08-11-11-sitdown_chair-f4.txt\nAccelerometer-2011-12-11-08-12-14-sitdown_chair-f4.txt\nAccelerometer-2011-12-11-08-13-16-sitdown_chair-f4.txt\nAccelerometer-2011-12-11-08-14-09-sitdown_chair-f4.txt\nAccelerometer-2011-12-11-08-15-21-sitdown_chair-f4.txt\nAccelerometer-2011-12-11-08-16-20-sitdown_chair-f4.txt\nAccelerometer-2011-12-11-08-19-32-sitdown_chair-m2.txt\nAccelerometer-2011-12-11-08-20-24-sitdown_chair-m2.txt\nAccelerometer-2011-12-11-08-21-20-sitdown_chair-m2.txt\nAccelerometer-2011-12-11-08-22-36-sitdown_chair-m2.txt\nAccelerometer-2011-12-11-08-23-42-sitdown_chair-m2.txt\nAccelerometer-2011-12-11-08-24-32-sitdown_chair-m2.txt\nAccelerometer-2012-03-23-03-45-26-sitdown_chair-m9.txt\nAccelerometer-2012-03-23-03-48-40-sitdown_chair-m9.txt\nAccelerometer-2012-03-26-04-54-57-sitdown_chair-f2.txt\nAccelerometer-2012-03-26-04-58-33-sitdown_chair-f2.txt\nAccelerometer-2012-03-26-05-02-58-sitdown_chair-m3.txt\nAccelerometer-2012-03-26-05-04-48-sitdown_chair-m3.txt\nAccelerometer-2012-05-25-18-27-57-sitdown_chair-f4.txt\nAccelerometer-2012-05-25-18-28-46-sitdown_chair-f4.txt\nAccelerometer-2012-05-25-18-33-29-sitdown_chair-f4.txt\nAccelerometer-2012-05-25-18-36-06-sitdown_chair-f4.txt\nAccelerometer-2012-05-28-17-40-02-sitdown_chair-m1.txt\nAccelerometer-2012-05-28-17-41-12-sitdown_chair-m1.txt\nAccelerometer-2012-05-28-17-46-13-sitdown_chair-m1.txt\nAccelerometer-2011-03-23-10-39-18-standup_chair-f1.txt\nAccelerometer-2011-03-23-10-42-01-standup_chair-f1.txt\nAccelerometer-2011-03-23-10-45-51-standup_chair-f1.txt\nAccelerometer-2011-03-23-10-47-59-standup_chair-f1.txt\nAccelerometer-2011-03-24-09-49-36-standup_chair-f1.txt\nAccelerometer-2011-03-24-10-38-17-standup_chair-f1.txt\nAccelerometer-2011-03-24-11-19-29-standup_chair-f1.txt\nAccelerometer-2011-03-24-16-09-19-standup_chair-f2.txt\nAccelerometer-2011-03-29-09-04-40-standup_chair-f1.txt\nAccelerometer-2011-03-29-09-10-24-standup_chair-f1.txt\nAccelerometer-2011-04-05-18-25-12-standup_chair-f1.txt\nAccelerometer-2011-04-08-17-32-45-standup_chair-f3.txt\nAccelerometer-2011-04-08-17-34-10-standup_chair-f3.txt\nAccelerometer-2011-04-08-18-09-06-standup_chair-m4.txt\nAccelerometer-2011-04-11-11-48-09-standup_chair-f1.txt\nAccelerometer-2011-04-11-13-24-10-standup_chair-f1.txt\nAccelerometer-2011-04-12-21-42-53-standup_chair-m8.txt\nAccelerometer-2011-04-12-21-45-21-standup_chair-m8.txt\nAccelerometer-2011-05-30-08-24-19-standup_chair-f1.txt\nAccelerometer-2011-05-30-08-32-03-standup_chair-f1.txt\nAccelerometer-2011-05-30-09-24-04-standup_chair-f1.txt\nAccelerometer-2011-05-30-09-25-14-standup_chair-f1.txt\nAccelerometer-2011-05-30-10-23-55-standup_chair-m1.txt\nAccelerometer-2011-05-30-10-31-41-standup_chair-m1.txt\nAccelerometer-2011-05-30-20-50-04-standup_chair-f1.txt\nAccelerometer-2011-05-30-20-50-30-standup_chair-f1.txt\nAccelerometer-2011-05-30-20-56-05-standup_chair-f1.txt\nAccelerometer-2011-05-30-21-07-51-standup_chair-f1.txt\nAccelerometer-2011-05-30-21-33-37-standup_chair-m2.txt\nAccelerometer-2011-05-30-21-38-19-standup_chair-m2.txt\nAccelerometer-2011-05-30-21-52-55-standup_chair-m2.txt\nAccelerometer-2011-05-31-14-54-09-standup_chair-f1.txt\nAccelerometer-2011-05-31-14-59-53-standup_chair-f1.txt\nAccelerometer-2011-05-31-15-13-49-standup_chair-f1.txt\nAccelerometer-2011-05-31-16-23-03-standup_chair-f1.txt\nAccelerometer-2011-05-31-16-27-45-standup_chair-f1.txt\nAccelerometer-2011-05-31-16-38-19-standup_chair-f1.txt\nAccelerometer-2011-06-01-14-38-03-standup_chair-f1.txt\nAccelerometer-2011-06-01-14-39-38-standup_chair-f1.txt\nAccelerometer-2011-06-01-14-40-19-standup_chair-f1.txt\nAccelerometer-2011-06-01-14-41-32-standup_chair-f1.txt\nAccelerometer-2011-06-01-14-43-42-standup_chair-f1.txt\nAccelerometer-2011-06-01-14-45-33-standup_chair-f1.txt\nAccelerometer-2011-06-01-14-46-35-standup_chair-f1.txt\nAccelerometer-2011-06-01-14-50-10-standup_chair-f1.txt\nAccelerometer-2011-06-01-14-51-21-standup_chair-f1.txt\nAccelerometer-2011-06-01-14-52-02-standup_chair-f1.txt\nAccelerometer-2011-06-02-16-43-22-standup_chair-f4.txt\nAccelerometer-2011-06-02-16-44-18-standup_chair-f4.txt\nAccelerometer-2011-06-02-16-44-59-standup_chair-f4.txt\nAccelerometer-2011-06-02-16-45-48-standup_chair-f4.txt\nAccelerometer-2011-06-02-16-46-25-standup_chair-f4.txt\nAccelerometer-2011-06-02-16-53-39-standup_chair-f4.txt\nAccelerometer-2011-06-02-16-54-15-standup_chair-f4.txt\nAccelerometer-2011-06-02-16-55-12-standup_chair-f4.txt\nAccelerometer-2011-06-02-17-04-40-standup_chair-f4.txt\nAccelerometer-2011-06-02-17-05-17-standup_chair-f4.txt\nAccelerometer-2011-06-02-17-25-13-standup_chair-m1.txt\nAccelerometer-2011-06-02-17-26-02-standup_chair-m1.txt\nAccelerometer-2011-06-02-17-26-55-standup_chair-m1.txt\nAccelerometer-2011-06-02-17-31-39-standup_chair-m1.txt\nAccelerometer-2011-06-02-17-41-11-standup_chair-m1.txt\nAccelerometer-2011-06-02-17-42-24-standup_chair-m1.txt\nAccelerometer-2011-06-02-17-43-41-standup_chair-m1.txt\nAccelerometer-2011-06-02-17-44-52-standup_chair-m1.txt\nAccelerometer-2011-12-05-09-38-00-standup_chair-f1.txt\nAccelerometer-2011-12-05-09-40-57-standup_chair-f1.txt\nAccelerometer-2011-12-05-09-45-47-standup_chair-f1.txt\nAccelerometer-2011-12-05-09-48-17-standup_chair-f1.txt\nAccelerometer-2011-12-05-09-50-23-standup_chair-f1.txt\nAccelerometer-2011-12-05-09-52-58-standup_chair-f1.txt\nAccelerometer-2011-12-05-09-55-36-standup_chair-f1.txt\nAccelerometer-2011-12-11-08-09-59-standup_chair-f4.txt\nAccelerometer-2011-12-11-08-11-36-standup_chair-f4.txt\nAccelerometer-2011-12-11-08-12-46-standup_chair-f4.txt\nAccelerometer-2011-12-11-08-13-41-standup_chair-f4.txt\nAccelerometer-2011-12-11-08-14-55-standup_chair-f4.txt\nAccelerometer-2011-12-11-08-15-55-standup_chair-f4.txt\nAccelerometer-2011-12-11-08-19-06-standup_chair-m2.txt\nAccelerometer-2011-12-11-08-19-58-standup_chair-m2.txt\nAccelerometer-2011-12-11-08-20-56-standup_chair-m2.txt\nAccelerometer-2011-12-11-08-22-05-standup_chair-m2.txt\nAccelerometer-2011-12-11-08-23-15-standup_chair-m2.txt\nAccelerometer-2011-12-11-08-24-09-standup_chair-m2.txt\nAccelerometer-2012-03-23-03-44-39-standup_chair-m9.txt\nAccelerometer-2012-03-23-03-48-20-standup_chair-m9.txt\nAccelerometer-2012-03-26-04-54-30-standup_chair-f2.txt\nAccelerometer-2012-03-26-04-58-13-standup_chair-f2.txt\nAccelerometer-2012-03-26-05-02-40-standup_chair-m3.txt\nAccelerometer-2012-03-26-05-04-33-standup_chair-m3.txt\nAccelerometer-2012-05-25-18-27-29-standup_chair-f4.txt\nAccelerometer-2012-05-25-18-28-24-standup_chair-f4.txt\nAccelerometer-2012-05-25-18-33-08-standup_chair-f4.txt\nAccelerometer-2012-05-25-18-35-48-standup_chair-f4.txt\nAccelerometer-2012-05-28-17-39-31-standup_chair-m1.txt\nAccelerometer-2012-05-28-17-40-45-standup_chair-m1.txt\nAccelerometer-2012-05-28-17-45-43-standup_chair-m1.txt\nAccelerometer-2012-05-28-17-50-40-standup_chair-m1.txt\nAccelerometer-2012-05-29-16-43-05-standup_chair-f2.txt\nAccelerometer-2012-05-29-16-47-10-standup_chair-f2.txt\nAccelerometer-2012-05-29-17-12-51-standup_chair-m3.txt\nAccelerometer-2012-05-29-17-14-27-standup_chair-m3.txt\nAccelerometer-2011-03-29-09-30-56-use_telephone-f1.txt\nAccelerometer-2011-03-29-09-32-59-use_telephone-f1.txt\nAccelerometer-2011-03-29-09-52-41-use_telephone-f1.txt\nAccelerometer-2011-04-05-18-29-19-use_telephone-f1.txt\nAccelerometer-2011-04-11-11-53-34-use_telephone-f1.txt\nAccelerometer-2011-04-11-11-54-10-use_telephone-f1.txt\nAccelerometer-2011-05-30-08-27-44-use_telephone-f1.txt\nAccelerometer-2011-05-30-09-34-12-use_telephone-f1.txt\nAccelerometer-2011-05-30-10-28-13-use_telephone-m1.txt\nAccelerometer-2011-05-30-21-00-40-use_telephone-f1.txt\nAccelerometer-2011-05-30-21-43-16-use_telephone-m2.txt\nAccelerometer-2011-05-31-15-03-53-use_telephone-f1.txt\nAccelerometer-2011-05-31-16-31-11-use_telephone-f1.txt\nAccelerometer-2011-03-24-09-51-07-walk-f1.txt\nAccelerometer-2011-03-24-09-52-11-walk-f1.txt\nAccelerometer-2011-03-24-10-58-34-walk-f1.txt\nAccelerometer-2011-03-24-11-20-24-walk-f1.txt\nAccelerometer-2011-03-24-11-21-13-walk-f1.txt\nAccelerometer-2011-03-29-16-16-01-walk-f1.txt\nAccelerometer-2011-04-05-18-30-57-walk-f1.txt\nAccelerometer-2011-04-11-11-55-57-walk-f1.txt\nAccelerometer-2011-05-30-08-29-07-walk-f1.txt\nAccelerometer-2011-05-30-09-35-03-walk-f1.txt\nAccelerometer-2011-05-30-10-29-28-walk-m1.txt\nAccelerometer-2011-05-30-20-51-03-walk-f1.txt\nAccelerometer-2011-05-30-20-57-19-walk-f1.txt\nAccelerometer-2011-05-30-21-01-39-walk-f1.txt\nAccelerometer-2011-05-30-21-34-15-walk-m2.txt\nAccelerometer-2011-05-30-21-39-55-walk-m2.txt\nAccelerometer-2011-05-30-21-44-35-walk-m2.txt\nAccelerometer-2011-05-31-14-54-41-walk-f1.txt\nAccelerometer-2011-05-31-15-01-05-walk-f1.txt\nAccelerometer-2011-05-31-15-05-44-walk-f1.txt\nAccelerometer-2011-05-31-16-23-32-walk-f1.txt\nAccelerometer-2011-05-31-16-28-55-walk-f1.txt\nAccelerometer-2011-05-31-16-32-12-walk-f1.txt\nAccelerometer-2012-05-29-16-45-30-walk-f2.txt\nAccelerometer-2012-05-29-16-46-02-walk-f2.txt\nAccelerometer-2012-05-29-16-51-03-walk-f2.txt\nAccelerometer-2012-05-29-16-51-40-walk-f2.txt\nAccelerometer-2012-05-29-17-13-45-walk-m3.txt\nAccelerometer-2012-05-29-17-15-15-walk-m3.txt\nAccelerometer-2012-05-29-17-16-24-walk-m3.txt\nAccelerometer-2012-05-29-17-18-55-walk-m3.txt\nAccelerometer-2012-05-30-18-28-32-walk-f3.txt\nAccelerometer-2012-05-30-18-29-02-walk-f3.txt\nAccelerometer-2012-05-30-18-29-35-walk-f3.txt\nAccelerometer-2012-05-30-18-30-08-walk-f3.txt\nAccelerometer-2012-05-30-19-09-54-walk-m4.txt\nAccelerometer-2012-05-30-19-10-27-walk-m4.txt\nAccelerometer-2012-05-30-19-10-56-walk-m4.txt\nAccelerometer-2012-05-30-19-11-27-walk-m4.txt\nAccelerometer-2012-05-30-22-02-42-walk-m2.txt\nAccelerometer-2012-05-30-22-03-03-walk-m2.txt\nAccelerometer-2012-05-30-22-03-27-walk-m2.txt\nAccelerometer-2012-05-30-22-03-52-walk-m2.txt\nAccelerometer-2012-05-30-22-04-20-walk-m2.txt\nAccelerometer-2012-06-06-08-56-33-walk-m5.txt\nAccelerometer-2012-06-06-08-57-26-walk-m5.txt\nAccelerometer-2012-06-06-08-58-20-walk-m5.txt\nAccelerometer-2012-06-06-08-59-00-walk-m5.txt\nAccelerometer-2012-06-06-09-02-06-walk-m5.txt\nAccelerometer-2012-06-06-09-02-54-walk-m5.txt\nAccelerometer-2012-06-06-09-03-57-walk-m5.txt\nAccelerometer-2012-06-06-09-04-41-walk-m5.txt\nAccelerometer-2012-06-06-09-07-30-walk-m5.txt\nAccelerometer-2012-06-06-09-08-19-walk-m5.txt\nAccelerometer-2012-06-06-09-09-21-walk-m5.txt\nAccelerometer-2012-06-06-09-10-02-walk-m5.txt\nAccelerometer-2012-06-06-09-34-20-walk-m6.txt\nAccelerometer-2012-06-06-09-35-07-walk-m6.txt\nAccelerometer-2012-06-06-09-36-06-walk-m6.txt\nAccelerometer-2012-06-06-09-36-38-walk-m6.txt\nAccelerometer-2012-06-06-09-39-47-walk-m6.txt\nAccelerometer-2012-06-06-09-40-33-walk-m6.txt\nAccelerometer-2012-06-06-09-41-32-walk-m6.txt\nAccelerometer-2012-06-06-09-42-05-walk-m6.txt\nAccelerometer-2012-06-06-09-45-03-walk-m6.txt\nAccelerometer-2012-06-06-09-45-38-walk-m6.txt\nAccelerometer-2012-06-06-09-46-31-walk-m6.txt\nAccelerometer-2012-06-06-09-47-07-walk-m6.txt\nAccelerometer-2012-06-06-14-06-10-walk-m7.txt\nAccelerometer-2012-06-06-14-06-43-walk-m7.txt\nAccelerometer-2012-06-06-14-07-41-walk-m7.txt\nAccelerometer-2012-06-06-14-08-12-walk-m7.txt\nAccelerometer-2012-06-06-14-10-02-walk-m7.txt\nAccelerometer-2012-06-06-14-10-33-walk-m7.txt\nAccelerometer-2012-06-06-14-11-30-walk-m7.txt\nAccelerometer-2012-06-06-14-12-00-walk-m7.txt\nAccelerometer-2012-06-06-14-13-56-walk-m7.txt\nAccelerometer-2012-06-06-14-14-27-walk-m7.txt\nAccelerometer-2012-06-06-14-15-25-walk-m7.txt\nAccelerometer-2012-06-06-14-15-57-walk-m7.txt\nAccelerometer-2012-06-07-10-50-09-walk-f1.txt\nAccelerometer-2012-06-07-10-50-42-walk-f1.txt\nAccelerometer-2012-06-07-10-52-14-walk-f1.txt\nAccelerometer-2012-06-07-10-52-46-walk-f1.txt\nAccelerometer-2012-06-07-10-55-33-walk-f1.txt\nAccelerometer-2012-06-07-10-57-12-walk-f1.txt\nAccelerometer-2012-06-07-10-57-45-walk-f1.txt\nAccelerometer-2012-06-11-11-23-05-walk-m1.txt\nAccelerometer-2012-06-11-11-30-57-walk-m1.txt\nAccelerometer-2012-06-11-11-31-42-walk-m1.txt\nAccelerometer-2012-06-11-11-32-28-walk-m1.txt\nAccelerometer-2012-06-11-11-33-07-walk-m1.txt\nAccelerometer-2012-06-11-11-33-42-walk-m1.txt\nAccelerometer-2012-06-11-11-34-18-walk-m1.txt\nAccelerometer-2012-06-11-11-36-25-walk-m1.txt\nAccelerometer-2012-06-11-11-37-01-walk-m1.txt\nAccelerometer-2012-06-11-11-37-36-walk-m1.txt\nAccelerometer-2012-06-11-11-38-12-walk-m1.txt\nAccelerometer-2012-06-11-11-38-52-walk-m1.txt\nAccelerometer-2012-06-11-11-39-29-walk-m1.txt\n" 33 | } 34 | ], 35 | "source": "import os\nimport fnmatch\n\nd = 'HMP_Dataset/'\n\n# filter list for all folders containing data (folders that don't start with .) \nfile_list_filtered = [s for s in os.listdir(d) if os.path.isdir(os.path.join(d,s)) & ~fnmatch.fnmatch(s, '.*')]\n\nfrom pyspark.sql.functions import lit\n\n#create pandas data frame for all the data\n\ndf = None\n\nfor category in file_list_filtered:\n data_files = os.listdir('HMP_Dataset/'+category)\n \n #create a temporary pandas data frame for each data file\n for data_file in data_files:\n print(data_file)\n temp_df = spark.read.option(\"header\", \"true\").option(\"header\", \"false\").option(\"delimiter\", \" \").csv('HMP_Dataset/'+category+'/'+data_file,schema=schema)\n \n #create a column called \"source\" storing the current CSV file\n temp_df = temp_df.withColumn(\"source\", lit(data_file))\n \n #create a column called \"class\" storing the current data folder\n temp_df = temp_df.withColumn(\"class\", lit(category))\n \n #append to existing data frame list\n #data_frames = data_frames + [temp_df]\n \n if df is None:\n df = temp_df\n else:\n df = df.union(temp_df)\n \n" 36 | }, 37 | { 38 | "execution_count": 4, 39 | "cell_type": "code", 40 | "metadata": {}, 41 | "outputs": [], 42 | "source": "splits = df.randomSplit([0.8, 0.2])\ndf_train = splits[0]\ndf_test = splits[1]" 43 | }, 44 | { 45 | "execution_count": 5, 46 | "cell_type": "code", 47 | "metadata": { 48 | "pixiedust": { 49 | "displayParams": {} 50 | } 51 | }, 52 | "outputs": [], 53 | "source": "from pyspark.ml.feature import StringIndexer\nfrom pyspark.ml.feature import OneHotEncoder\nfrom pyspark.ml.linalg import Vectors\nfrom pyspark.ml.feature import VectorAssembler\nfrom pyspark.ml.feature import Normalizer\n\nindexer = StringIndexer(inputCol=\"class\", outputCol=\"label\")\nencoder = OneHotEncoder(inputCol=\"label\", outputCol=\"labelVec\")\nvectorAssembler = VectorAssembler(inputCols=[\"x\",\"y\",\"z\"],outputCol=\"features\")\nnormalizer = Normalizer(inputCol=\"features\", outputCol=\"features_norm\", p=1.0)" 54 | }, 55 | { 56 | "execution_count": 7, 57 | "cell_type": "code", 58 | "metadata": {}, 59 | "outputs": [], 60 | "source": "from pyspark.ml.classification import LinearSVC\n\nlsvc = LinearSVC(maxIter=10, regParam=0.1)" 61 | }, 62 | { 63 | "execution_count": 8, 64 | "cell_type": "code", 65 | "metadata": {}, 66 | "outputs": [], 67 | "source": "df.createOrReplaceTempView('df')\ndf_two_class = spark.sql(\"select * from df where class in ('Use_telephone','Standup_chair')\")" 68 | }, 69 | { 70 | "execution_count": 9, 71 | "cell_type": "code", 72 | "metadata": {}, 73 | "outputs": [], 74 | "source": "splits = df_two_class.randomSplit([0.8, 0.2])\ndf_train = splits[0]\ndf_test = splits[1]" 75 | }, 76 | { 77 | "execution_count": 10, 78 | "cell_type": "code", 79 | "metadata": {}, 80 | "outputs": [], 81 | "source": "from pyspark.ml import Pipeline\npipeline = Pipeline(stages=[indexer, encoder, vectorAssembler, normalizer,lsvc])" 82 | }, 83 | { 84 | "execution_count": 11, 85 | "cell_type": "code", 86 | "metadata": {}, 87 | "outputs": [], 88 | "source": "model = pipeline.fit(df_train)" 89 | }, 90 | { 91 | "execution_count": 12, 92 | "cell_type": "code", 93 | "metadata": {}, 94 | "outputs": [], 95 | "source": "prediction = model.transform(df_train)" 96 | }, 97 | { 98 | "execution_count": 13, 99 | "cell_type": "code", 100 | "metadata": {}, 101 | "outputs": [ 102 | { 103 | "execution_count": 13, 104 | "metadata": {}, 105 | "data": { 106 | "text/plain": "0.9384408611035672" 107 | }, 108 | "output_type": "execute_result" 109 | } 110 | ], 111 | "source": "from pyspark.ml.evaluation import BinaryClassificationEvaluator\n\n# Evaluate model\nevaluator = BinaryClassificationEvaluator(rawPredictionCol=\"rawPrediction\")\nevaluator.evaluate(prediction)" 112 | }, 113 | { 114 | "execution_count": 14, 115 | "cell_type": "code", 116 | "metadata": {}, 117 | "outputs": [], 118 | "source": "prediction = model.transform(df_test)" 119 | }, 120 | { 121 | "execution_count": 15, 122 | "cell_type": "code", 123 | "metadata": {}, 124 | "outputs": [ 125 | { 126 | "execution_count": 15, 127 | "metadata": {}, 128 | "data": { 129 | "text/plain": "0.9404706165015819" 130 | }, 131 | "output_type": "execute_result" 132 | } 133 | ], 134 | "source": "evaluator = BinaryClassificationEvaluator(rawPredictionCol=\"rawPrediction\")\nevaluator.evaluate(prediction)" 135 | } 136 | ], 137 | "metadata": { 138 | "kernelspec": { 139 | "display_name": "Python 3.6 with Spark", 140 | "name": "python36", 141 | "language": "python3" 142 | }, 143 | "language_info": { 144 | "mimetype": "text/x-python", 145 | "nbconvert_exporter": "python", 146 | "version": "3.6.8", 147 | "name": "python", 148 | "file_extension": ".py", 149 | "pygments_lexer": "ipython3", 150 | "codemirror_mode": { 151 | "version": 3, 152 | "name": "ipython" 153 | } 154 | } 155 | }, 156 | "nbformat": 4 157 | } --------------------------------------------------------------------------------