From 304c5c56877a2a6c929cfa28477d93f6764d4d01 Mon Sep 17 00:00:00 2001 From: miguel5612 Date: Wed, 3 Jul 2019 21:19:21 -0500 Subject: [PATCH] Created MQ-131 --- .../MQ131_Regression-checkpoint.ipynb | 1705 ++++++++++++ .../MQ9_Regression -checkpoint.ipynb | 1815 +++---------- Experiments/MQ131.eps | 2311 +++++++++++++++++ Experiments/MQ131.png | Bin 0 -> 119400 bytes Experiments/MQ131.svg | 1391 ++++++++++ Experiments/MQ131_Regression.ipynb | 1705 ++++++++++++ Experiments/MQ9_Regression .ipynb | 1701 +++--------- 7 files changed, 7918 insertions(+), 2710 deletions(-) create mode 100644 Experiments/.ipynb_checkpoints/MQ131_Regression-checkpoint.ipynb create mode 100644 Experiments/MQ131.eps create mode 100644 Experiments/MQ131.png create mode 100644 Experiments/MQ131.svg create mode 100644 Experiments/MQ131_Regression.ipynb diff --git a/Experiments/.ipynb_checkpoints/MQ131_Regression-checkpoint.ipynb b/Experiments/.ipynb_checkpoints/MQ131_Regression-checkpoint.ipynb new file mode 100644 index 0000000..2e5152f --- /dev/null +++ b/Experiments/.ipynb_checkpoints/MQ131_Regression-checkpoint.ipynb @@ -0,0 +1,1705 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: pandas in c:\\programdata\\anaconda3\\lib\\site-packages (0.24.2)\n", + "Requirement already satisfied: pytz>=2011k in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2018.9)\n", + "Requirement already satisfied: python-dateutil>=2.5.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2.8.0)\n", + "Requirement already satisfied: numpy>=1.12.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (1.16.2)\n", + "Requirement already satisfied: six>=1.5 in c:\\programdata\\anaconda3\\lib\\site-packages (from python-dateutil>=2.5.0->pandas) (1.12.0)\n", + "Requirement already satisfied: xlrd in c:\\programdata\\anaconda3\\lib\\site-packages (1.2.0)\n", + "Requirement already satisfied: sklearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: scikit-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from sklearn) (0.21.2)\n", + "Requirement already satisfied: scipy>=0.17.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.2.1)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (0.13.2)\n", + "Requirement already satisfied: numpy>=1.11.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.16.2)\n", + "Requirement already satisfied: imblearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: imbalanced-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from imblearn) (0.5.0)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.13.2)\n", + "Requirement already satisfied: scipy>=0.17 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.2.1)\n", + "Requirement already satisfied: numpy>=1.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.16.2)\n", + "Requirement already satisfied: scikit-learn>=0.21 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.21.2)\n" + ] + } + ], + "source": [ + "!pip install pandas\n", + "!pip install xlrd\n", + "!pip install sklearn\n", + "!pip install imblearn" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import xlrd\n", + "book = xlrd.open_workbook(\"Datasheets info.xlsx\")\n", + "sheetMQ2 = book.sheet_by_name(\"MQ2 - Pololulu\")\n", + "sheetMQ3 = book.sheet_by_name(\"MQ3 - Sparkfun\")\n", + "sheetMQ4 = book.sheet_by_name(\"MQ4 - Sparkfun\")\n", + "sheetMQ5 = book.sheet_by_name(\"MQ5 - Sparkfun\")\n", + "sheetMQ6 = book.sheet_by_name(\"MQ6 - Sparkfun\")\n", + "sheetMQ7 = book.sheet_by_name(\"MQ7 - Sparkfun\")\n", + "sheetMQ8 = book.sheet_by_name(\"MQ8 - Sparkfun\")\n", + "sheetMQ9 = book.sheet_by_name(\"MQ9 - Haoyuelectronics\")\n", + "sheetMQ131 = book.sheet_by_name(\"MQ131- Sensorsportal\")\n", + "sheetMQ135 = book.sheet_by_name(\"MQ135 - HANWEI\")\n", + "sheetMQ303A = book.sheet_by_name(\"MQ303A - HANWEI\")\n", + "sheetMQ309A = book.sheet_by_name(\"MQ309A - HANWEI\")" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.1 \t \t \t \n", + "0.2 \t \t \t \n", + "0.3 \t \t \t \n", + "0.4 \t \t \t \n", + "0.5 \t \t \t 100.0\n", + "0.6 \t \t \t \n", + "0.7 \t \t \t \n", + "0.8 \t \t \t \n", + "0.9 \t \t \t \n", + "1.0 \t \t 50.0 \t \n", + "2.0 \t \t \t 20.0\n", + "3.0 \t 100.0 \t \t \n", + "4.0 \t \t \t \n", + "5.0 \t \t \t \n", + "6.0 \t \t 10.0 \t 5.0\n", + "7.0 \t 10.0 \t \t \n", + "8.0 \t \t 5.0 \t \n", + "9.0 \t 5.0 \t \t \n", + "10.0 \t \t \t \n" + ] + } + ], + "source": [ + "for row_index in range(1,20): #reading first columns\n", + " RsR0, Nox, CL2, O3 = sheetMQ131.row_values(row_index, start_colx=0, end_colx=4)\n", + " print(RsR0, \"\t\", Nox, \"\t\", CL2, \"\t\", O3)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "x_MQ131 = sheetMQ131.col_values(0)[2:]\n", + "MQ131_Nox = sheetMQ131.col_values(1)[2:]\n", + "MQ131_CL2 = sheetMQ131.col_values(2)[2:]\n", + "MQ131_O3 = sheetMQ131.col_values(3)[2:]" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "def zero_to_nan(values):\n", + " \"\"\"Replace every 0 with 'nan' and return a copy.\"\"\"\n", + " return [float('nan') if x==0 else x for x in values]" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "MQ131_Nox =zero_to_nan(MQ131_Nox)\n", + "MQ131_CL2 =zero_to_nan(MQ131_CL2)\n", + "MQ131_O3 =zero_to_nan(MQ131_O3)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from sklearn.datasets import load_iris\n", + "#from sklearn.cross_validation import train_test_split\n", + "from sklearn.tree import DecisionTreeClassifier\n", + "from sklearn import datasets\n", + "from sklearn import linear_model\n", + "\n", + "dataNox = {'RsRo': x_MQ131, 'Nox': MQ131_Nox}\n", + "dataCL2 = {'RsRo': x_MQ131, 'CL2': MQ131_CL2}\n", + "dataO3 = {'RsRo': x_MQ131, 'O3': MQ131_O3}\n", + "\n", + "dfMQ131_Nox = pd.DataFrame(dataNox)\n", + "dfMQ131_CL2 = pd.DataFrame(dataCL2)\n", + "dfMQ131_O3 = pd.DataFrame(dataO3)\n", + "\n", + "dfMQ131_Nox['Nox'] = pd.to_numeric(dfMQ131_Nox['Nox'])\n", + "dfMQ131_CL2['CL2'] = pd.to_numeric(dfMQ131_CL2['CL2'])\n", + "dfMQ131_O3['O3'] = pd.to_numeric(dfMQ131_O3['O3'])\n", + "\n", + "dfMQ131_Nox['Nox'] = dfMQ131_Nox['Nox'].replace('',None, regex=True)\n", + "dfMQ131_CL2['CL2'] = dfMQ131_CL2['CL2'].replace('',None, regex=True)\n", + "dfMQ131_O3['O3'] = dfMQ131_O3['O3'].replace('',None, regex=True)\n", + "\n", + "#Global X_Predict variable\n", + "X_Predict = dfMQ131_Nox.RsRo.apply(lambda x: [x]).tolist()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train Nox\n", + "dataset2TrainNox = dfMQ131_Nox.copy()\n", + "dataset2TrainNox.dropna(inplace=True)\n", + "X_trainNox = dataset2TrainNox.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainNox = dataset2TrainNox['Nox'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainNox, y_trainNox)\n", + "#Predict\n", + "Nox_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ131_Nox = Nox_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train CL2\n", + "dataset2TrainCL2 = dfMQ131_CL2.copy()\n", + "dataset2TrainCL2.dropna(inplace=True)\n", + "X_trainCL2 = dataset2TrainCL2.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCL2 = dataset2TrainCL2['CL2'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCL2, y_trainCL2)\n", + "#Predict\n", + "CL2_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ131_CL2 = CL2_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train O3\n", + "dataset2TrainO3 = dfMQ131_O3.copy()\n", + "dataset2TrainO3.dropna(inplace=True)\n", + "X_trainO3 = dataset2TrainO3.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainO3 = dataset2TrainO3['O3'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainO3, y_trainO3)\n", + "#Predict\n", + "O3_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ131_O3 = O3_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\r\n", + "\r\n", + "\r\n", + "\r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + "\r\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%config InlineBackend.figure_formats = ['svg']\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.lines as mlines\n", + "import matplotlib.transforms as mtransforms\n", + "\n", + "fig, ax = plt.subplots()\n", + "\n", + "fig.set_size_inches(9, 5.5, forward=True)\n", + "fig.set_dpi(200)\n", + "\n", + "# only these two lines are calibration curves\n", + "plt.plot(MQ131_Nox, x_MQ131, marker='o', linewidth=1, label='Nox')\n", + "plt.plot(MQ131_CL2, x_MQ131, marker='o', linewidth=1, label='CL2')\n", + "plt.plot(MQ131_O3, x_MQ131, marker='o', linewidth=1, label='O3')\n", + "\n", + "\n", + "# reference line, legends, and axis labels\n", + "#line = mlines.Line2D([0, 1], [0, 1], color='black')\n", + "#transform = ax.transAxes\n", + "#line.set_transform(transform)\n", + "#ax.add_line(line)\n", + "plt.yscale('log')\n", + "plt.xscale('log')\n", + "plt.legend()\n", + "\n", + "plt.grid(b=True, which='minor', color='lightgrey', linestyle='--')\n", + "\n", + "fig.suptitle('Calibration plot for MQ-131 data')\n", + "ax.set_xlabel('PPM Concentration')\n", + "ax.set_ylabel('Rs/Ro')\n", + "\n", + "\n", + "#Save image\n", + "plt.savefig('MQ131.svg', format = 'svg', dpi = 1200)\n", + "plt.savefig('MQ131.png')\n", + "plt.savefig('MQ131.eps', format = 'eps', dpi = 1200)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Experiments/.ipynb_checkpoints/MQ9_Regression -checkpoint.ipynb b/Experiments/.ipynb_checkpoints/MQ9_Regression -checkpoint.ipynb index 67cbacd..0eeca8b 100644 --- a/Experiments/.ipynb_checkpoints/MQ9_Regression -checkpoint.ipynb +++ b/Experiments/.ipynb_checkpoints/MQ9_Regression -checkpoint.ipynb @@ -38,7 +38,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ @@ -60,7 +60,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -98,7 +98,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 11, "metadata": {}, "outputs": [], "source": [ @@ -110,7 +110,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 12, "metadata": {}, "outputs": [], "source": [ @@ -121,32 +121,18 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 13, "metadata": {}, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'MQ9_H2' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mMQ9_H2\u001b[0m \u001b[1;33m=\u001b[0m\u001b[0mzero_to_nan\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mMQ9_H2\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2\u001b[0m \u001b[0mMQ9_LPG\u001b[0m \u001b[1;33m=\u001b[0m\u001b[0mzero_to_nan\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mMQ9_LPG\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[0mMQ9_CH4\u001b[0m \u001b[1;33m=\u001b[0m\u001b[0mzero_to_nan\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mMQ9_CH4\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[0mMQ9_CO\u001b[0m \u001b[1;33m=\u001b[0m\u001b[0mzero_to_nan\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mMQ9_CO\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[0mMQ9_Alcohol\u001b[0m \u001b[1;33m=\u001b[0m\u001b[0mzero_to_nan\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mMQ9_Alcohol\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;31mNameError\u001b[0m: name 'MQ9_H2' is not defined" - ] - } - ], + "outputs": [], "source": [ - "MQ9_H2 =zero_to_nan(MQ9_H2)\n", "MQ9_LPG =zero_to_nan(MQ9_LPG)\n", "MQ9_CH4 =zero_to_nan(MQ9_CH4)\n", - "MQ9_CO =zero_to_nan(MQ9_CO)\n", - "MQ9_Alcohol =zero_to_nan(MQ9_Alcohol)" + "MQ9_CO =zero_to_nan(MQ9_CO)" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 14, "metadata": { "scrolled": false }, @@ -160,61 +146,34 @@ "from sklearn import datasets\n", "from sklearn import linear_model\n", "\n", - "dataH2 = {'RsRo': x_MQ9, 'H2': MQ8_H2}\n", - "dataLPG = {'RsRo': x_MQ9, 'LPG': MQ8_LPG}\n", - "dataCH4 = {'RsRo': x_MQ9, 'CH4': MQ8_CH4}\n", - "dataCO = {'RsRo': x_MQ8, 'CO': MQ8_CO}\n", - "dataALcohol = {'RsRo': x_MQ8, 'Alcohol': MQ8_Alcohol}\n", + "dataLPG = {'RsRo': x_MQ9, 'LPG': MQ9_LPG}\n", + "dataCH4 = {'RsRo': x_MQ9, 'CH4': MQ9_CH4}\n", + "dataCO = {'RsRo': x_MQ9, 'CO': MQ9_CO}\n", "\n", - "dfMQ8_H2 = pd.DataFrame(dataH2)\n", - "dfMQ8_LPG = pd.DataFrame(dataLPG)\n", - "dfMQ8_CH4 = pd.DataFrame(dataCH4)\n", - "dfMQ8_CO = pd.DataFrame(dataCO)\n", - "dfMQ8_Alcohol = pd.DataFrame(dataALcohol)\n", + "dfMQ9_LPG = pd.DataFrame(dataLPG)\n", + "dfMQ9_CH4 = pd.DataFrame(dataCH4)\n", + "dfMQ9_CO = pd.DataFrame(dataCO)\n", "\n", - "dfMQ8_H2['H2'] = pd.to_numeric(dfMQ8_H2['H2'])\n", - "dfMQ8_LPG['LPG'] = pd.to_numeric(dfMQ8_LPG['LPG'])\n", - "dfMQ8_CH4['CH4'] = pd.to_numeric(dfMQ8_CH4['CH4'])\n", - "dfMQ8_CO['CO'] = pd.to_numeric(dfMQ8_CO['CO'])\n", - "dfMQ8_Alcohol['Alcohol'] = pd.to_numeric(dfMQ8_Alcohol['Alcohol'])\n", + "dfMQ9_LPG['LPG'] = pd.to_numeric(dfMQ9_LPG['LPG'])\n", + "dfMQ9_CH4['CH4'] = pd.to_numeric(dfMQ9_CH4['CH4'])\n", + "dfMQ9_CO['CO'] = pd.to_numeric(dfMQ9_CO['CO'])\n", "\n", - "dfMQ8_H2['H2'] = dfMQ8_H2['H2'].replace('',None, regex=True)\n", - "dfMQ8_LPG['LPG'] = dfMQ8_LPG['LPG'].replace('',None, regex=True)\n", - "dfMQ8_CH4['CH4'] = dfMQ8_CH4['CH4'].replace('',None, regex=True)\n", - "dfMQ8_CO['CO'] = dfMQ8_CO['CO'].replace('',None, regex=True)\n", - "dfMQ8_Alcohol['Alcohol'] = dfMQ8_Alcohol['Alcohol'].replace('',None, regex=True)\n", + "dfMQ9_LPG['LPG'] = dfMQ9_LPG['LPG'].replace('',None, regex=True)\n", + "dfMQ9_CH4['CH4'] = dfMQ9_CH4['CH4'].replace('',None, regex=True)\n", + "dfMQ9_CO['CO'] = dfMQ9_CO['CO'].replace('',None, regex=True)\n", "\n", "#Global X_Predict variable\n", - "X_Predict = dfMQ8_LPG.RsRo.apply(lambda x: [x]).tolist()" + "X_Predict = dfMQ9_LPG.RsRo.apply(lambda x: [x]).tolist()" ] }, { "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "#Model and train H2\n", - "dataset2TrainH2 = dfMQ8_H2.copy()\n", - "dataset2TrainH2.dropna(inplace=True)\n", - "X_trainH2 = dataset2TrainH2.RsRo.apply(lambda x: [x]).tolist()\n", - "y_trainH2 = dataset2TrainH2['H2'].tolist()\n", - "model = linear_model.Lasso(alpha=0.1)\n", - "model.fit(X_trainH2, y_trainH2)\n", - "#Predict\n", - "H2_Predicted = model.predict(X_Predict)\n", - "#save into MQ2\n", - "MQ8_H2 = H2_Predicted\n" - ] - }, - { - "cell_type": "code", - "execution_count": 11, + "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "#Model and train LPG\n", - "dataset2TrainLPG = dfMQ8_LPG.copy()\n", + "dataset2TrainLPG = dfMQ9_LPG.copy()\n", "dataset2TrainLPG.dropna(inplace=True)\n", "X_trainLPG = dataset2TrainLPG.RsRo.apply(lambda x: [x]).tolist()\n", "y_trainLPG = dataset2TrainLPG['LPG'].tolist()\n", @@ -223,17 +182,17 @@ "#Predict\n", "LPG_Predicted = model.predict(X_Predict)\n", "#save into MQ2\n", - "MQ8_LPG = LPG_Predicted" + "MQ9_LPG = LPG_Predicted" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "#Model and train CH4\n", - "dataset2TrainCH4 = dfMQ8_CH4.copy()\n", + "dataset2TrainCH4 = dfMQ9_CH4.copy()\n", "dataset2TrainCH4.dropna(inplace=True)\n", "X_trainCH4 = dataset2TrainCH4.RsRo.apply(lambda x: [x]).tolist()\n", "y_trainCH4 = dataset2TrainCH4['CH4'].tolist()\n", @@ -242,17 +201,17 @@ "#Predict\n", "CH4_Predicted = model.predict(X_Predict)\n", "#save into MQ2\n", - "MQ8_CH4 = CH4_Predicted" + "MQ9_CH4 = CH4_Predicted" ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "#Model and train CO\n", - "dataset2TrainCO = dfMQ8_CO.copy()\n", + "dataset2TrainCO = dfMQ9_CO.copy()\n", "dataset2TrainCO.dropna(inplace=True)\n", "X_trainCO = dataset2TrainCO.RsRo.apply(lambda x: [x]).tolist()\n", "y_trainCO = dataset2TrainCO['CO'].tolist()\n", @@ -261,31 +220,12 @@ "#Predict\n", "CO_Predicted = model.predict(X_Predict)\n", "#save into MQ2\n", - "MQ8_CO = CO_Predicted" + "MQ9_CO = CO_Predicted" ] }, { "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "#Model and train Alcohol\n", - "dataset2TrainAlcohol = dfMQ8_Alcohol.copy()\n", - "dataset2TrainAlcohol.dropna(inplace=True)\n", - "X_trainAlcohol = dataset2TrainAlcohol.RsRo.apply(lambda x: [x]).tolist()\n", - "y_trainAlcohol = dataset2TrainAlcohol['Alcohol'].tolist()\n", - "model = linear_model.Lasso(alpha=0.1)\n", - "model.fit(X_trainAlcohol, y_trainAlcohol)\n", - "#Predict\n", - "Alcohol_Predicted = model.predict(X_Predict)\n", - "#save into MQ2\n", - "MQ8_Alcohol = Alcohol_Predicted" - ] - }, - { - "cell_type": "code", - "execution_count": 15, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -295,7 +235,7 @@ "\r\n", "\r\n", - "\r\n", + "\r\n", " \r\n", " \r\n" @@ -2554,11 +1573,9 @@ "fig.set_dpi(200)\n", "\n", "# only these two lines are calibration curves\n", - "plt.plot(MQ8_H2, x_MQ8, marker='o', linewidth=1, label='H2')\n", - "plt.plot(MQ8_LPG, x_MQ8, marker='o', linewidth=1, label='LPG')\n", - "plt.plot(MQ8_CH4, x_MQ8, marker='o', linewidth=1, label='CH4')\n", - "plt.plot(MQ8_CO, x_MQ8, marker='o', linewidth=1, label='CO')\n", - "plt.plot(MQ8_Alcohol, x_MQ8, marker='o', linewidth=1, label='Alcohol')\n", + "plt.plot(MQ9_LPG, x_MQ9, marker='o', linewidth=1, label='LPG')\n", + "plt.plot(MQ9_CH4, x_MQ9, marker='o', linewidth=1, label='CH4')\n", + "plt.plot(MQ9_CO, x_MQ9, marker='o', linewidth=1, label='CO')\n", "\n", "\n", "# reference line, legends, and axis labels\n", @@ -2572,15 +1589,15 @@ "\n", "plt.grid(b=True, which='minor', color='lightgrey', linestyle='--')\n", "\n", - "fig.suptitle('Calibration plot for MQ-8 data')\n", + "fig.suptitle('Calibration plot for MQ-9 data')\n", "ax.set_xlabel('PPM Concentration')\n", "ax.set_ylabel('Rs/Ro')\n", "\n", "\n", "#Save image\n", - "plt.savefig('MQ8.svg', format = 'svg', dpi = 1200)\n", - "plt.savefig('MQ8.png')\n", - "plt.savefig('MQ8.eps', format = 'eps', dpi = 1200)" + "plt.savefig('MQ9.svg', format = 'svg', dpi = 1200)\n", + "plt.savefig('MQ9.png')\n", + "plt.savefig('MQ9.eps', format = 'eps', dpi = 1200)" ] }, { diff --git a/Experiments/MQ131.eps b/Experiments/MQ131.eps new file mode 100644 index 0000000..7dcddfb --- /dev/null +++ b/Experiments/MQ131.eps @@ -0,0 +1,2311 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Title: MQ131.eps +%%Creator: matplotlib version 3.0.3, http://matplotlib.org/ +%%CreationDate: Wed Jul 3 21:19:02 2019 +%%Orientation: portrait +%%BoundingBox: -18 198 630 594 +%%EndComments +%%BeginProlog +/mpldict 8 dict def +mpldict begin +/m { moveto } bind def +/l { lineto } bind def +/r { rlineto } bind def +/c { curveto } bind def +/cl { closepath } bind def +/box { +m +1 index 0 r +0 exch r +neg 0 r +cl +} bind def +/clipbox { +box +clip +newpath +} bind def +%!PS-Adobe-3.0 Resource-Font +%%Title: DejaVu Sans +%%Copyright: Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain +%%Creator: Converted from TrueType to type 3 by PPR +25 dict begin +/_d{bind def}bind def +/_m{moveto}_d +/_l{lineto}_d +/_cl{closepath eofill}_d +/_c{curveto}_d +/_sc{7 -1 roll{setcachedevice}{pop pop pop pop pop pop}ifelse}_d +/_e{exec}_d +/FontName /DejaVuSans def +/PaintType 0 def +/FontMatrix[.001 0 0 .001 0 0]def +/FontBBox[-1021 -463 1793 1232]def +/FontType 3 def +/Encoding [ /space /hyphen /slash /zero /one /two /three /C /L /M /N /O /P /Q /R /a /b /c /d /e /f /i /l /n /o /p /r /s /t /x ] def +/FontInfo 10 dict dup begin +/FamilyName (DejaVu Sans) def +/FullName (DejaVu Sans) def +/Notice (Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain ) def +/Weight (Book) def +/Version (Version 2.35) def +/ItalicAngle 0.0 def +/isFixedPitch false def +/UnderlinePosition -130 def +/UnderlineThickness 90 def +end readonly def +/CharStrings 31 dict dup begin +/.notdef 0 def +/space{318 0 0 0 0 0 _sc +}_d +/hyphen{361 0 49 234 312 314 _sc +49 314 _m +312 314 _l +312 234 _l +49 234 _l +49 314 _l +_cl}_d +/slash{337 0 0 -92 337 729 _sc +254 729 _m +337 729 _l +83 -92 _l +0 -92 _l +254 729 _l +_cl}_d +/zero{636 0 66 -13 570 742 _sc +318 664 _m +267 664 229 639 203 589 _c +177 539 165 464 165 364 _c +165 264 177 189 203 139 _c +229 89 267 64 318 64 _c +369 64 407 89 433 139 _c +458 189 471 264 471 364 _c +471 464 458 539 433 589 _c +407 639 369 664 318 664 _c +318 742 _m +399 742 461 709 505 645 _c +548 580 570 486 570 364 _c +570 241 548 147 505 83 _c +461 19 399 -13 318 -13 _c +236 -13 173 19 130 83 _c +87 147 66 241 66 364 _c +66 486 87 580 130 645 _c +173 709 236 742 318 742 _c +_cl}_d +/one{636 0 110 0 544 729 _sc +124 83 _m +285 83 _l +285 639 _l +110 604 _l +110 694 _l +284 729 _l +383 729 _l +383 83 _l +544 83 _l +544 0 _l +124 0 _l +124 83 _l +_cl}_d +/two{{636 0 73 0 536 742 _sc +192 83 _m +536 83 _l +536 0 _l +73 0 _l +73 83 _l +110 121 161 173 226 239 _c +290 304 331 346 348 365 _c +380 400 402 430 414 455 _c +426 479 433 504 433 528 _c +433 566 419 598 392 622 _c +365 646 330 659 286 659 _c +255 659 222 653 188 643 _c +154 632 117 616 78 594 _c +78 694 _l +118 710 155 722 189 730 _c +223 738 255 742 284 742 _c +}_e{359 742 419 723 464 685 _c +509 647 532 597 532 534 _c +532 504 526 475 515 449 _c +504 422 484 390 454 354 _c +446 344 420 317 376 272 _c +332 227 271 164 192 83 _c +_cl}_e}_d +/three{{636 0 76 -13 556 742 _sc +406 393 _m +453 383 490 362 516 330 _c +542 298 556 258 556 212 _c +556 140 531 84 482 45 _c +432 6 362 -13 271 -13 _c +240 -13 208 -10 176 -4 _c +144 1 110 10 76 22 _c +76 117 _l +103 101 133 89 166 81 _c +198 73 232 69 268 69 _c +330 69 377 81 409 105 _c +441 129 458 165 458 212 _c +458 254 443 288 413 312 _c +383 336 341 349 287 349 _c +}_e{202 349 _l +202 430 _l +291 430 _l +339 430 376 439 402 459 _c +428 478 441 506 441 543 _c +441 580 427 609 401 629 _c +374 649 336 659 287 659 _c +260 659 231 656 200 650 _c +169 644 135 635 98 623 _c +98 711 _l +135 721 170 729 203 734 _c +235 739 266 742 296 742 _c +370 742 429 725 473 691 _c +517 657 539 611 539 553 _c +539 513 527 479 504 451 _c +481 423 448 403 406 393 _c +_cl}_e}_d +/C{{698 0 56 -13 644 742 _sc +644 673 _m +644 569 _l +610 599 575 622 537 638 _c +499 653 460 661 418 661 _c +334 661 270 635 226 584 _c +182 533 160 460 160 364 _c +160 268 182 194 226 143 _c +270 92 334 67 418 67 _c +460 67 499 74 537 90 _c +575 105 610 128 644 159 _c +644 56 _l +609 32 572 15 534 4 _c +496 -7 455 -13 412 -13 _c +302 -13 215 20 151 87 _c +}_e{87 154 56 246 56 364 _c +56 481 87 573 151 641 _c +215 708 302 742 412 742 _c +456 742 497 736 535 725 _c +573 713 610 696 644 673 _c +_cl}_e}_d +/L{557 0 98 0 552 729 _sc +98 729 _m +197 729 _l +197 83 _l +552 83 _l +552 0 _l +98 0 _l +98 729 _l +_cl}_d +/M{863 0 98 0 765 729 _sc +98 729 _m +245 729 _l +431 233 _l +618 729 _l +765 729 _l +765 0 _l +669 0 _l +669 640 _l +481 140 _l +382 140 _l +194 640 _l +194 0 _l +98 0 _l +98 729 _l +_cl}_d +/N{748 0 98 0 650 729 _sc +98 729 _m +231 729 _l +554 119 _l +554 729 _l +650 729 _l +650 0 _l +517 0 _l +194 610 _l +194 0 _l +98 0 _l +98 729 _l +_cl}_d +/O{787 0 56 -13 731 742 _sc +394 662 _m +322 662 265 635 223 582 _c +181 528 160 456 160 364 _c +160 272 181 199 223 146 _c +265 92 322 66 394 66 _c +465 66 522 92 564 146 _c +606 199 627 272 627 364 _c +627 456 606 528 564 582 _c +522 635 465 662 394 662 _c +394 742 _m +496 742 577 707 639 639 _c +700 571 731 479 731 364 _c +731 248 700 157 639 89 _c +577 21 496 -13 394 -13 _c +291 -13 209 21 148 89 _c +86 157 56 248 56 364 _c +56 479 86 571 148 639 _c +209 707 291 742 394 742 _c +_cl}_d +/P{603 0 98 0 569 729 _sc +197 648 _m +197 374 _l +321 374 _l +367 374 402 385 427 409 _c +452 433 465 467 465 511 _c +465 555 452 588 427 612 _c +402 636 367 648 321 648 _c +197 648 _l +98 729 _m +321 729 _l +402 729 464 710 506 673 _c +548 636 569 582 569 511 _c +569 439 548 384 506 348 _c +464 311 402 293 321 293 _c +197 293 _l +197 0 _l +98 0 _l +98 729 _l +_cl}_d +/Q{{787 0 56 -128 731 742 _sc +394 662 _m +322 662 265 635 223 582 _c +181 528 160 456 160 364 _c +160 272 181 199 223 146 _c +265 92 322 66 394 66 _c +465 66 522 92 564 146 _c +606 199 627 272 627 364 _c +627 456 606 528 564 582 _c +522 635 465 662 394 662 _c +532 13 _m +662 -128 _l +543 -128 _l +435 -11 _l +424 -11 416 -12 410 -12 _c +404 -12 399 -13 394 -13 _c +291 -13 209 21 148 89 _c +}_e{86 157 56 248 56 364 _c +56 479 86 571 148 639 _c +209 707 291 742 394 742 _c +496 742 577 707 639 639 _c +700 571 731 479 731 364 _c +731 279 714 206 680 146 _c +646 86 596 41 532 13 _c +_cl}_e}_d +/R{{695 0 98 0 666 729 _sc +444 342 _m +465 334 486 319 506 296 _c +526 272 546 240 566 199 _c +666 0 _l +560 0 _l +467 187 _l +443 235 419 268 397 284 _c +374 300 343 308 304 308 _c +197 308 _l +197 0 _l +98 0 _l +98 729 _l +321 729 _l +404 729 466 711 507 677 _c +548 642 569 589 569 519 _c +569 473 558 434 537 404 _c +515 374 484 353 444 342 _c +197 648 _m +197 389 _l +321 389 _l +}_e{368 389 404 400 428 422 _c +452 444 465 476 465 519 _c +465 561 452 593 428 615 _c +404 637 368 648 321 648 _c +197 648 _l +_cl}_e}_d +/a{{613 0 60 -13 522 560 _sc +343 275 _m +270 275 220 266 192 250 _c +164 233 150 205 150 165 _c +150 133 160 107 181 89 _c +202 70 231 61 267 61 _c +317 61 357 78 387 114 _c +417 149 432 196 432 255 _c +432 275 _l +343 275 _l +522 312 _m +522 0 _l +432 0 _l +432 83 _l +411 49 385 25 355 10 _c +325 -5 287 -13 243 -13 _c +187 -13 142 2 109 33 _c +76 64 60 106 60 159 _c +}_e{60 220 80 266 122 298 _c +163 329 224 345 306 345 _c +432 345 _l +432 354 _l +432 395 418 427 391 450 _c +364 472 326 484 277 484 _c +245 484 215 480 185 472 _c +155 464 127 453 100 439 _c +100 522 _l +132 534 164 544 195 550 _c +226 556 256 560 286 560 _c +365 560 424 539 463 498 _c +502 457 522 395 522 312 _c +_cl}_e}_d +/b{{635 0 91 -13 580 760 _sc +487 273 _m +487 339 473 390 446 428 _c +418 466 381 485 334 485 _c +286 485 249 466 222 428 _c +194 390 181 339 181 273 _c +181 207 194 155 222 117 _c +249 79 286 61 334 61 _c +381 61 418 79 446 117 _c +473 155 487 207 487 273 _c +181 464 _m +199 496 223 520 252 536 _c +281 552 316 560 356 560 _c +422 560 476 533 518 481 _c +559 428 580 359 580 273 _c +}_e{580 187 559 117 518 65 _c +476 13 422 -13 356 -13 _c +316 -13 281 -5 252 10 _c +223 25 199 49 181 82 _c +181 0 _l +91 0 _l +91 760 _l +181 760 _l +181 464 _l +_cl}_e}_d +/c{{550 0 55 -13 488 560 _sc +488 526 _m +488 442 _l +462 456 437 466 411 473 _c +385 480 360 484 334 484 _c +276 484 230 465 198 428 _c +166 391 150 339 150 273 _c +150 206 166 154 198 117 _c +230 80 276 62 334 62 _c +360 62 385 65 411 72 _c +437 79 462 90 488 104 _c +488 21 _l +462 9 436 0 410 -5 _c +383 -10 354 -13 324 -13 _c +242 -13 176 12 128 64 _c +}_e{79 115 55 185 55 273 _c +55 362 79 432 128 483 _c +177 534 244 560 330 560 _c +358 560 385 557 411 551 _c +437 545 463 537 488 526 _c +_cl}_e}_d +/d{{635 0 55 -13 544 760 _sc +454 464 _m +454 760 _l +544 760 _l +544 0 _l +454 0 _l +454 82 _l +435 49 411 25 382 10 _c +353 -5 319 -13 279 -13 _c +213 -13 159 13 117 65 _c +75 117 55 187 55 273 _c +55 359 75 428 117 481 _c +159 533 213 560 279 560 _c +319 560 353 552 382 536 _c +411 520 435 496 454 464 _c +148 273 _m +148 207 161 155 188 117 _c +215 79 253 61 301 61 _c +}_e{348 61 385 79 413 117 _c +440 155 454 207 454 273 _c +454 339 440 390 413 428 _c +385 466 348 485 301 485 _c +253 485 215 466 188 428 _c +161 390 148 339 148 273 _c +_cl}_e}_d +/e{{615 0 55 -13 562 560 _sc +562 296 _m +562 252 _l +149 252 _l +153 190 171 142 205 110 _c +238 78 284 62 344 62 _c +378 62 412 66 444 74 _c +476 82 509 95 541 113 _c +541 28 _l +509 14 476 3 442 -3 _c +408 -9 373 -13 339 -13 _c +251 -13 182 12 131 62 _c +80 112 55 181 55 268 _c +55 357 79 428 127 481 _c +175 533 241 560 323 560 _c +397 560 455 536 498 489 _c +}_e{540 441 562 377 562 296 _c +472 322 _m +471 371 457 410 431 440 _c +404 469 368 484 324 484 _c +274 484 234 469 204 441 _c +174 413 156 373 152 322 _c +472 322 _l +_cl}_e}_d +/f{352 0 23 0 371 760 _sc +371 760 _m +371 685 _l +285 685 _l +253 685 230 678 218 665 _c +205 652 199 629 199 595 _c +199 547 _l +347 547 _l +347 477 _l +199 477 _l +199 0 _l +109 0 _l +109 477 _l +23 477 _l +23 547 _l +109 547 _l +109 585 _l +109 645 123 690 151 718 _c +179 746 224 760 286 760 _c +371 760 _l +_cl}_d +/i{278 0 94 0 184 760 _sc +94 547 _m +184 547 _l +184 0 _l +94 0 _l +94 547 _l +94 760 _m +184 760 _l +184 646 _l +94 646 _l +94 760 _l +_cl}_d +/l{278 0 94 0 184 760 _sc +94 760 _m +184 760 _l +184 0 _l +94 0 _l +94 760 _l +_cl}_d +/n{634 0 91 0 549 560 _sc +549 330 _m +549 0 _l +459 0 _l +459 327 _l +459 379 448 417 428 443 _c +408 469 378 482 338 482 _c +289 482 251 466 223 435 _c +195 404 181 362 181 309 _c +181 0 _l +91 0 _l +91 547 _l +181 547 _l +181 462 _l +202 494 227 519 257 535 _c +286 551 320 560 358 560 _c +420 560 468 540 500 501 _c +532 462 549 405 549 330 _c +_cl}_d +/o{612 0 55 -13 557 560 _sc +306 484 _m +258 484 220 465 192 427 _c +164 389 150 338 150 273 _c +150 207 163 156 191 118 _c +219 80 257 62 306 62 _c +354 62 392 80 420 118 _c +448 156 462 207 462 273 _c +462 337 448 389 420 427 _c +392 465 354 484 306 484 _c +306 560 _m +384 560 445 534 490 484 _c +534 433 557 363 557 273 _c +557 183 534 113 490 63 _c +445 12 384 -13 306 -13 _c +227 -13 165 12 121 63 _c +77 113 55 183 55 273 _c +55 363 77 433 121 484 _c +165 534 227 560 306 560 _c +_cl}_d +/p{{635 0 91 -207 580 560 _sc +181 82 _m +181 -207 _l +91 -207 _l +91 547 _l +181 547 _l +181 464 _l +199 496 223 520 252 536 _c +281 552 316 560 356 560 _c +422 560 476 533 518 481 _c +559 428 580 359 580 273 _c +580 187 559 117 518 65 _c +476 13 422 -13 356 -13 _c +316 -13 281 -5 252 10 _c +223 25 199 49 181 82 _c +487 273 _m +487 339 473 390 446 428 _c +418 466 381 485 334 485 _c +}_e{286 485 249 466 222 428 _c +194 390 181 339 181 273 _c +181 207 194 155 222 117 _c +249 79 286 61 334 61 _c +381 61 418 79 446 117 _c +473 155 487 207 487 273 _c +_cl}_e}_d +/r{411 0 91 0 411 560 _sc +411 463 _m +401 469 390 473 378 476 _c +366 478 353 480 339 480 _c +288 480 249 463 222 430 _c +194 397 181 350 181 288 _c +181 0 _l +91 0 _l +91 547 _l +181 547 _l +181 462 _l +199 495 224 520 254 536 _c +284 552 321 560 365 560 _c +371 560 378 559 386 559 _c +393 558 401 557 411 555 _c +411 463 _l +_cl}_d +/s{{521 0 54 -13 472 560 _sc +443 531 _m +443 446 _l +417 458 391 468 364 475 _c +336 481 308 485 279 485 _c +234 485 200 478 178 464 _c +156 450 145 430 145 403 _c +145 382 153 366 169 354 _c +185 342 217 330 265 320 _c +296 313 _l +360 299 405 279 432 255 _c +458 230 472 195 472 151 _c +472 100 452 60 412 31 _c +372 1 316 -13 246 -13 _c +216 -13 186 -10 154 -5 _c +}_e{122 0 89 8 54 20 _c +54 113 _l +87 95 120 82 152 74 _c +184 65 216 61 248 61 _c +290 61 323 68 346 82 _c +368 96 380 117 380 144 _c +380 168 371 187 355 200 _c +339 213 303 226 247 238 _c +216 245 _l +160 257 119 275 95 299 _c +70 323 58 356 58 399 _c +58 450 76 490 112 518 _c +148 546 200 560 268 560 _c +301 560 332 557 362 552 _c +391 547 418 540 443 531 _c +}_e{_cl}_e}_d +/t{392 0 27 0 368 702 _sc +183 702 _m +183 547 _l +368 547 _l +368 477 _l +183 477 _l +183 180 _l +183 135 189 106 201 94 _c +213 81 238 75 276 75 _c +368 75 _l +368 0 _l +276 0 _l +206 0 158 13 132 39 _c +106 65 93 112 93 180 _c +93 477 _l +27 477 _l +27 547 _l +93 547 _l +93 702 _l +183 702 _l +_cl}_d +/x{592 0 29 0 559 547 _sc +549 547 _m +351 281 _l +559 0 _l +453 0 _l +294 215 _l +135 0 _l +29 0 _l +241 286 _l +47 547 _l +153 547 _l +298 352 _l +443 547 _l +549 547 _l +_cl}_d +end readonly def + +/BuildGlyph + {exch begin + CharStrings exch + 2 copy known not{pop /.notdef}if + true 3 1 roll get exec + end}_d + +/BuildChar { + 1 index /Encoding get exch get + 1 index /BuildGlyph get exec +}_d + +FontName currentdict end definefont pop +end +%%EndProlog +mpldict begin +-18 198 translate +648 396 0 0 clipbox +gsave +0 0 m +648 0 l +648 396 l +0 396 l +cl +1.000 setgray +fill +grestore +gsave +81 49.5 m +583.2 49.5 l +583.2 348.48 l +81 348.48 l +cl +1.000 setgray +fill +grestore +0.800 setlinewidth +1 setlinejoin +0 setlinecap +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -3.5 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +294.059 49.5 o +grestore +gsave +285.059395 34.578125 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.064063 moveto +/one glyphshow + +6.362305 0.064063 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 3.892188 moveto +/one glyphshow + + +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -3.5 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +525.677 49.5 o +grestore +gsave +516.677464 33.578125 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.976562 moveto +/one glyphshow + +6.362305 0.976562 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 4.804688 moveto +/two glyphshow + + +grestore +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +132.165312 49.5 m +132.165312 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +132.165 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +172.951229 49.5 m +172.951229 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +172.951 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +201.889298 49.5 m +201.889298 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +201.889 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +224.335408 49.5 m +224.335408 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +224.335 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +242.675216 49.5 m +242.675216 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +242.675 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +258.181302 49.5 m +258.181302 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +258.181 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +271.613284 49.5 m +271.613284 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +271.613 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +283.461133 49.5 m +283.461133 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +283.461 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +363.783381 49.5 m +363.783381 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +363.783 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +404.569298 49.5 m +404.569298 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +404.569 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +433.507367 49.5 m +433.507367 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +433.507 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +455.953478 49.5 m +455.953478 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +455.953 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +474.293285 49.5 m +474.293285 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +474.293 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +489.799371 49.5 m +489.799371 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +489.799 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +503.231354 49.5 m +503.231354 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +503.231 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +515.079202 49.5 m +515.079202 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +515.079 49.5 o +grestore +/DejaVuSans findfont +10.000 scalefont +setfont +gsave +284.771875 19.906250 translate +0.000000 rotate +0.000000 0.000000 m /P glyphshow +6.030273 0.000000 m /P glyphshow +12.060547 0.000000 m /M glyphshow +20.688477 0.000000 m /space glyphshow +23.867188 0.000000 m /C glyphshow +30.849609 0.000000 m /o glyphshow +36.967773 0.000000 m /n glyphshow +43.305664 0.000000 m /c glyphshow +48.803711 0.000000 m /e glyphshow +54.956055 0.000000 m /n glyphshow +61.293945 0.000000 m /t glyphshow +65.214844 0.000000 m /r glyphshow +69.326172 0.000000 m /a glyphshow +75.454102 0.000000 m /t glyphshow +79.375000 0.000000 m /i glyphshow +82.153320 0.000000 m /o glyphshow +88.271484 0.000000 m /n glyphshow +grestore +0.800 setlinewidth +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 174.911 o +grestore +gsave +56.000000 170.449781 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.976562 moveto +/one glyphshow + +6.362305 0.976562 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 4.804688 moveto +/zero glyphshow + + +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 334.89 o +grestore +gsave +56.000000 330.929063 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.064063 moveto +/one glyphshow + +6.362305 0.064063 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 3.892188 moveto +/one glyphshow + + +grestore +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 63.09 m +583.2 63.09 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 63.09 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 91.260953 m +583.2 91.260953 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 91.261 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 111.248562 m +583.2 111.248562 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 111.249 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 126.752157 m +583.2 126.752157 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 126.752 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 139.419515 m +583.2 139.419515 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 139.42 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 150.129615 m +583.2 150.129615 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 150.13 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 159.407125 m +583.2 159.407125 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 159.407 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 167.590468 m +583.2 167.590468 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 167.59 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 223.069281 m +583.2 223.069281 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 223.069 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 251.240234 m +583.2 251.240234 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 251.24 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 271.227843 m +583.2 271.227843 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 271.228 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 286.731438 m +583.2 286.731438 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 286.731 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 299.398797 m +583.2 299.398797 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 299.399 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 310.108896 m +583.2 310.108896 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 310.109 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 319.386406 m +583.2 319.386406 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 319.386 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 327.56975 m +583.2 327.56975 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 327.57 o +grestore +gsave +49.921875 184.677500 translate +90.000000 rotate +0.000000 0.000000 m /R glyphshow +6.948242 0.000000 m /s glyphshow +12.158203 0.000000 m /slash glyphshow +15.527344 0.000000 m /R glyphshow +22.475586 0.000000 m /o glyphshow +grestore +1.000 setlinewidth +2 setlinecap +0.122 0.467 0.706 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +560.372727 63.09 m +559.170802 91.260953 l +557.954341 111.248562 l +556.72299 126.752157 l +555.476378 139.419515 l +554.214123 150.129615 l +552.935826 159.407125 l +551.641077 167.590468 l +550.329444 174.910719 l +536.176703 223.069281 l +519.701502 251.240234 l +499.989053 271.227843 l +475.448209 286.731438 l +442.918964 299.398797 l +394.541557 310.108896 l +297.849058 319.386406 l +-1 319.396954 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.122 0.467 0.706 setrgbcolor +fill +grestore +stroke +grestore +} bind def +560.373 63.09 o +559.171 91.261 o +557.954 111.249 o +556.723 126.752 o +555.476 139.42 o +554.214 150.13 o +552.936 159.407 o +551.641 167.59 o +550.329 174.911 o +536.177 223.069 o +519.702 251.24 o +499.989 271.228 o +475.448 286.731 o +442.919 299.399 o +394.542 310.109 o +297.849 319.386 o +-1 319.397 o +grestore +2 setlinecap +1.000 0.498 0.055 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +463.543976 63.09 m +462.282571 91.260953 l +461.005145 111.248562 l +459.711289 126.752157 l +458.400573 139.419515 l +457.072553 150.129615 l +455.726765 159.407125 l +454.362727 167.590468 l +452.979938 174.910719 l +437.993648 223.069281 l +420.377072 251.240234 l +399.006151 271.227843 l +371.834913 286.731438 l +334.492197 299.398797 l +274.442528 310.108896 l +103.827273 319.386406 l +-1 319.390109 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +1.000 0.498 0.055 setrgbcolor +fill +grestore +stroke +grestore +} bind def +463.544 63.09 o +462.283 91.261 o +461.005 111.249 o +459.711 126.752 o +458.401 139.42 o +457.073 150.13 o +455.727 159.407 o +454.363 167.59 o +452.98 174.911 o +437.994 223.069 o +420.377 251.24 o +399.006 271.228 o +371.835 286.731 o +334.492 299.399 o +274.443 310.109 o +103.827 319.386 o +-1 319.39 o +grestore +2 setlinecap +0.173 0.627 0.173 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +502.929649 63.09 m +501.088514 91.260953 l +499.213051 111.248562 l +497.301955 126.752157 l +495.353847 139.419515 l +493.367263 150.129615 l +491.340655 159.407125 l +489.272375 167.590468 l +487.160673 174.910719 l +463.175175 223.069281 l +431.617921 251.240234 l +385.379708 271.227843 l +297.264028 286.731438 l +-1 286.747733 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.173 0.627 0.173 setrgbcolor +fill +grestore +stroke +grestore +} bind def +502.93 63.09 o +501.089 91.261 o +499.213 111.249 o +497.302 126.752 o +495.354 139.42 o +493.367 150.13 o +491.341 159.407 o +489.272 167.59 o +487.161 174.911 o +463.175 223.069 o +431.618 251.24 o +385.38 271.228 o +297.264 286.731 o +-1 286.748 o +grestore +0.800 setlinewidth +0 setlinejoin +2 setlinecap +[] 0 setdash +0.000 setgray +gsave +81 49.5 m +81 348.48 l +stroke +grestore +gsave +583.2 49.5 m +583.2 348.48 l +stroke +grestore +gsave +81 49.5 m +583.2 49.5 l +stroke +grestore +gsave +81 348.48 m +583.2 348.48 l +stroke +grestore +1.000 setlinewidth +0 setlinecap +0.800 setgray +gsave +524.66875 296.464375 m +576.2 296.464375 l +577.533333 296.464375 578.2 297.131042 578.2 298.464375 c +578.2 341.48 l +578.2 342.813333 577.533333 343.48 576.2 343.48 c +524.66875 343.48 l +523.335417 343.48 522.66875 342.813333 522.66875 341.48 c +522.66875 298.464375 l +522.66875 297.131042 523.335417 296.464375 524.66875 296.464375 c +cl +gsave +1.000 setgray +fill +grestore +stroke +grestore +1 setlinejoin +2 setlinecap +[] 0 setdash +0.122 0.467 0.706 setrgbcolor +gsave +526.66875 335.38625 m +546.66875 335.38625 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.122 0.467 0.706 setrgbcolor +fill +grestore +stroke +grestore +} bind def +536.669 335.386 o +grestore +0.000 setgray +gsave +554.668750 331.886250 translate +0.000000 rotate +0.000000 0.000000 m /N glyphshow +7.480469 0.000000 m /o glyphshow +13.598633 0.000000 m /x glyphshow +grestore +2 setlinecap +1.000 0.498 0.055 setrgbcolor +gsave +526.66875 320.714375 m +546.66875 320.714375 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +1.000 0.498 0.055 setrgbcolor +fill +grestore +stroke +grestore +} bind def +536.669 320.714 o +grestore +0.000 setgray +gsave +554.668750 317.214375 translate +0.000000 rotate +0.000000 0.000000 m /C glyphshow +6.982422 0.000000 m /L glyphshow +12.553711 0.000000 m /two glyphshow +grestore +2 setlinecap +0.173 0.627 0.173 setrgbcolor +gsave +526.66875 306.0425 m +546.66875 306.0425 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.173 0.627 0.173 setrgbcolor +fill +grestore +stroke +grestore +} bind def +536.669 306.043 o +grestore +0.000 setgray +gsave +554.668750 302.542500 translate +0.000000 rotate +0.000000 0.000000 m /O glyphshow +7.871094 0.000000 m /three glyphshow +grestore +/DejaVuSans findfont +12.000 scalefont +setfont +gsave +226.921875 378.955000 translate +0.000000 rotate +0.000000 0.000000 m /C glyphshow +8.378906 0.000000 m /a glyphshow +15.732422 0.000000 m /l glyphshow +19.066406 0.000000 m /i glyphshow +22.400391 0.000000 m /b glyphshow +30.017578 0.000000 m /r glyphshow +34.951172 0.000000 m /a glyphshow +42.304688 0.000000 m /t glyphshow +47.009766 0.000000 m /i glyphshow +50.343750 0.000000 m /o glyphshow +57.685547 0.000000 m /n glyphshow +65.291016 0.000000 m /space glyphshow +69.105469 0.000000 m /p glyphshow +76.722656 0.000000 m /l glyphshow +80.056641 0.000000 m /o glyphshow +87.398438 0.000000 m /t glyphshow +92.103516 0.000000 m /space glyphshow +95.917969 0.000000 m /f glyphshow +100.142578 0.000000 m /o glyphshow +107.484375 0.000000 m /r glyphshow +112.417969 0.000000 m /space glyphshow +116.232422 0.000000 m /M glyphshow +126.585938 0.000000 m /Q glyphshow +136.031250 0.000000 m /hyphen glyphshow +140.361328 0.000000 m /one glyphshow +147.996094 0.000000 m /three glyphshow +155.630859 0.000000 m /one glyphshow +163.265625 0.000000 m /space glyphshow +167.080078 0.000000 m /d glyphshow +174.697266 0.000000 m /a glyphshow +182.050781 0.000000 m /t glyphshow +186.755859 0.000000 m /a glyphshow +grestore + +end +showpage diff --git a/Experiments/MQ131.png b/Experiments/MQ131.png new file mode 100644 index 0000000000000000000000000000000000000000..cdda0be038c2030d51d8d9ec9795d8e46aa6c782 GIT binary patch literal 119400 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Experiments/MQ131_Regression.ipynb b/Experiments/MQ131_Regression.ipynb new file mode 100644 index 0000000..2e5152f --- /dev/null +++ b/Experiments/MQ131_Regression.ipynb @@ -0,0 +1,1705 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: pandas in c:\\programdata\\anaconda3\\lib\\site-packages (0.24.2)\n", + "Requirement already satisfied: pytz>=2011k in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2018.9)\n", + "Requirement already satisfied: python-dateutil>=2.5.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2.8.0)\n", + "Requirement already satisfied: numpy>=1.12.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (1.16.2)\n", + "Requirement already satisfied: six>=1.5 in c:\\programdata\\anaconda3\\lib\\site-packages (from python-dateutil>=2.5.0->pandas) (1.12.0)\n", + "Requirement already satisfied: xlrd in c:\\programdata\\anaconda3\\lib\\site-packages (1.2.0)\n", + "Requirement already satisfied: sklearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: scikit-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from sklearn) (0.21.2)\n", + "Requirement already satisfied: scipy>=0.17.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.2.1)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (0.13.2)\n", + "Requirement already satisfied: numpy>=1.11.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.16.2)\n", + "Requirement already satisfied: imblearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: imbalanced-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from imblearn) (0.5.0)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.13.2)\n", + "Requirement already satisfied: scipy>=0.17 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.2.1)\n", + "Requirement already satisfied: numpy>=1.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.16.2)\n", + "Requirement already satisfied: scikit-learn>=0.21 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.21.2)\n" + ] + } + ], + "source": [ + "!pip install pandas\n", + "!pip install xlrd\n", + "!pip install sklearn\n", + "!pip install imblearn" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import xlrd\n", + "book = xlrd.open_workbook(\"Datasheets info.xlsx\")\n", + "sheetMQ2 = book.sheet_by_name(\"MQ2 - Pololulu\")\n", + "sheetMQ3 = book.sheet_by_name(\"MQ3 - Sparkfun\")\n", + "sheetMQ4 = book.sheet_by_name(\"MQ4 - Sparkfun\")\n", + "sheetMQ5 = book.sheet_by_name(\"MQ5 - Sparkfun\")\n", + "sheetMQ6 = book.sheet_by_name(\"MQ6 - Sparkfun\")\n", + "sheetMQ7 = book.sheet_by_name(\"MQ7 - Sparkfun\")\n", + "sheetMQ8 = book.sheet_by_name(\"MQ8 - Sparkfun\")\n", + "sheetMQ9 = book.sheet_by_name(\"MQ9 - Haoyuelectronics\")\n", + "sheetMQ131 = book.sheet_by_name(\"MQ131- Sensorsportal\")\n", + "sheetMQ135 = book.sheet_by_name(\"MQ135 - HANWEI\")\n", + "sheetMQ303A = book.sheet_by_name(\"MQ303A - HANWEI\")\n", + "sheetMQ309A = book.sheet_by_name(\"MQ309A - HANWEI\")" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.1 \t \t \t \n", + "0.2 \t \t \t \n", + "0.3 \t \t \t \n", + "0.4 \t \t \t \n", + "0.5 \t \t \t 100.0\n", + "0.6 \t \t \t \n", + "0.7 \t \t \t \n", + "0.8 \t \t \t \n", + "0.9 \t \t \t \n", + "1.0 \t \t 50.0 \t \n", + "2.0 \t \t \t 20.0\n", + "3.0 \t 100.0 \t \t \n", + "4.0 \t \t \t \n", + "5.0 \t \t \t \n", + "6.0 \t \t 10.0 \t 5.0\n", + "7.0 \t 10.0 \t \t \n", + "8.0 \t \t 5.0 \t \n", + "9.0 \t 5.0 \t \t \n", + "10.0 \t \t \t \n" + ] + } + ], + "source": [ + "for row_index in range(1,20): #reading first columns\n", + " RsR0, Nox, CL2, O3 = sheetMQ131.row_values(row_index, start_colx=0, end_colx=4)\n", + " print(RsR0, \"\t\", Nox, \"\t\", CL2, \"\t\", O3)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "x_MQ131 = sheetMQ131.col_values(0)[2:]\n", + "MQ131_Nox = sheetMQ131.col_values(1)[2:]\n", + "MQ131_CL2 = sheetMQ131.col_values(2)[2:]\n", + "MQ131_O3 = sheetMQ131.col_values(3)[2:]" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "def zero_to_nan(values):\n", + " \"\"\"Replace every 0 with 'nan' and return a copy.\"\"\"\n", + " return [float('nan') if x==0 else x for x in values]" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "MQ131_Nox =zero_to_nan(MQ131_Nox)\n", + "MQ131_CL2 =zero_to_nan(MQ131_CL2)\n", + "MQ131_O3 =zero_to_nan(MQ131_O3)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from sklearn.datasets import load_iris\n", + "#from sklearn.cross_validation import train_test_split\n", + "from sklearn.tree import DecisionTreeClassifier\n", + "from sklearn import datasets\n", + "from sklearn import linear_model\n", + "\n", + "dataNox = {'RsRo': x_MQ131, 'Nox': MQ131_Nox}\n", + "dataCL2 = {'RsRo': x_MQ131, 'CL2': MQ131_CL2}\n", + "dataO3 = {'RsRo': x_MQ131, 'O3': MQ131_O3}\n", + "\n", + "dfMQ131_Nox = pd.DataFrame(dataNox)\n", + "dfMQ131_CL2 = pd.DataFrame(dataCL2)\n", + "dfMQ131_O3 = pd.DataFrame(dataO3)\n", + "\n", + "dfMQ131_Nox['Nox'] = pd.to_numeric(dfMQ131_Nox['Nox'])\n", + "dfMQ131_CL2['CL2'] = pd.to_numeric(dfMQ131_CL2['CL2'])\n", + "dfMQ131_O3['O3'] = pd.to_numeric(dfMQ131_O3['O3'])\n", + "\n", + "dfMQ131_Nox['Nox'] = dfMQ131_Nox['Nox'].replace('',None, regex=True)\n", + "dfMQ131_CL2['CL2'] = dfMQ131_CL2['CL2'].replace('',None, regex=True)\n", + "dfMQ131_O3['O3'] = dfMQ131_O3['O3'].replace('',None, regex=True)\n", + "\n", + "#Global X_Predict variable\n", + "X_Predict = dfMQ131_Nox.RsRo.apply(lambda x: [x]).tolist()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train Nox\n", + "dataset2TrainNox = dfMQ131_Nox.copy()\n", + "dataset2TrainNox.dropna(inplace=True)\n", + "X_trainNox = dataset2TrainNox.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainNox = dataset2TrainNox['Nox'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainNox, y_trainNox)\n", + "#Predict\n", + "Nox_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ131_Nox = Nox_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train CL2\n", + "dataset2TrainCL2 = dfMQ131_CL2.copy()\n", + "dataset2TrainCL2.dropna(inplace=True)\n", + "X_trainCL2 = dataset2TrainCL2.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCL2 = dataset2TrainCL2['CL2'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCL2, y_trainCL2)\n", + "#Predict\n", + "CL2_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ131_CL2 = CL2_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train O3\n", + "dataset2TrainO3 = dfMQ131_O3.copy()\n", + "dataset2TrainO3.dropna(inplace=True)\n", + "X_trainO3 = dataset2TrainO3.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainO3 = dataset2TrainO3['O3'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainO3, y_trainO3)\n", + "#Predict\n", + "O3_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ131_O3 = O3_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\r\n", + "\r\n", + "\r\n", + "\r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + "\r\n" + ], + "text/plain": [ + "

" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%config InlineBackend.figure_formats = ['svg']\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.lines as mlines\n", + "import matplotlib.transforms as mtransforms\n", + "\n", + "fig, ax = plt.subplots()\n", + "\n", + "fig.set_size_inches(9, 5.5, forward=True)\n", + "fig.set_dpi(200)\n", + "\n", + "# only these two lines are calibration curves\n", + "plt.plot(MQ131_Nox, x_MQ131, marker='o', linewidth=1, label='Nox')\n", + "plt.plot(MQ131_CL2, x_MQ131, marker='o', linewidth=1, label='CL2')\n", + "plt.plot(MQ131_O3, x_MQ131, marker='o', linewidth=1, label='O3')\n", + "\n", + "\n", + "# reference line, legends, and axis labels\n", + "#line = mlines.Line2D([0, 1], [0, 1], color='black')\n", + "#transform = ax.transAxes\n", + "#line.set_transform(transform)\n", + "#ax.add_line(line)\n", + "plt.yscale('log')\n", + "plt.xscale('log')\n", + "plt.legend()\n", + "\n", + "plt.grid(b=True, which='minor', color='lightgrey', linestyle='--')\n", + "\n", + "fig.suptitle('Calibration plot for MQ-131 data')\n", + "ax.set_xlabel('PPM Concentration')\n", + "ax.set_ylabel('Rs/Ro')\n", + "\n", + "\n", + "#Save image\n", + "plt.savefig('MQ131.svg', format = 'svg', dpi = 1200)\n", + "plt.savefig('MQ131.png')\n", + "plt.savefig('MQ131.eps', format = 'eps', dpi = 1200)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Experiments/MQ9_Regression .ipynb b/Experiments/MQ9_Regression .ipynb index f9ff9c7..0eeca8b 100644 --- a/Experiments/MQ9_Regression .ipynb +++ b/Experiments/MQ9_Regression .ipynb @@ -38,7 +38,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ @@ -60,7 +60,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -98,7 +98,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 11, "metadata": {}, "outputs": [], "source": [ @@ -110,7 +110,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 12, "metadata": {}, "outputs": [], "source": [ @@ -121,7 +121,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 13, "metadata": {}, "outputs": [], "source": [ @@ -132,7 +132,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 14, "metadata": { "scrolled": false }, @@ -168,7 +168,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 15, "metadata": {}, "outputs": [], "source": [ @@ -187,7 +187,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ @@ -206,12 +206,12 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "#Model and train CO\n", - "dataset2TrainCO = dfMQ8_CO.copy()\n", + "dataset2TrainCO = dfMQ9_CO.copy()\n", "dataset2TrainCO.dropna(inplace=True)\n", "X_trainCO = dataset2TrainCO.RsRo.apply(lambda x: [x]).tolist()\n", "y_trainCO = dataset2TrainCO['CO'].tolist()\n", @@ -220,12 +220,12 @@ "#Predict\n", "CO_Predicted = model.predict(X_Predict)\n", "#save into MQ2\n", - "MQ8_CO = CO_Predicted" + "MQ9_CO = CO_Predicted" ] }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -235,7 +235,7 @@ "\r\n", "\r\n", - "\r\n", + "\r\n", " \r\n", " \r\n"