{
"cells": [
{
"cell_type": "code",
"execution_count": 68,
"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: 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: pytz>=2011k in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2018.9)\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: numpy>=1.11.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.16.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: 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: 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: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.13.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": 69,
"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": 70,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"RS/R0 \t H2 \t LPG \t CH4 \t CO \t Alcohol \t Propane\n",
"0.1 \t \t \t \t \t \t \n",
"0.2 \t \t \t \t \t \t \n",
"0.3 \t \t \t \t \t \t \n",
"0.4 \t \t \t \t \t \t \n",
"0.5 \t \t \t \t \t \t \n",
"0.6 \t \t 2000.0 \t \t \t \t 2000.0\n",
"0.7 \t 2100.0 \t \t \t \t \t \n",
"0.8 \t \t 1000.0 \t \t \t \t 1000.0\n",
"0.9 \t \t 800.0 \t 5000.0 \t \t 5000.0 \t 800.0\n",
"1.0 \t 1000.0 \t \t \t \t \t \n",
"2.0 \t 201.0 \t \t 800.0 \t \t 500.0 \t \n",
"3.0 \t \t \t 200.0 \t 1000.0 \t 200.0 \t \n",
"4.0 \t \t \t \t 500.0 \t \t \n",
"5.0 \t \t \t \t 200.0 \t \t \n",
"6.0 \t \t \t \t \t \t \n",
"7.0 \t \t \t \t \t \t \n",
"8.0 \t \t \t \t \t \t \n",
"9.0 \t \t \t \t \t \t \n"
]
}
],
"source": [
"for row_index in range(1,20): #reading first columns\n",
" RsR0, H2, LPG, CH4, CO, Alcohol, propane = sheetMQ2.row_values(row_index, start_colx=0, end_colx=7)\n",
" print(RsR0, \"\t\", H2, \"\t\", LPG, \"\t\", CH4, \"\t\", CO, \"\t\", Alcohol, \"\t\", propane)\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {},
"outputs": [],
"source": [
"x_MQ2 = sheetMQ2.col_values(0)[2:]\n",
"MQ2_H2 = sheetMQ2.col_values(1)[2:]\n",
"MQ2_LPG = sheetMQ2.col_values(2)[2:]\n",
"MQ2_CH4 = sheetMQ2.col_values(3)[2:]\n",
"MQ2_CO = sheetMQ2.col_values(4)[2:]\n",
"MQ2_Alcohol = sheetMQ2.col_values(5)[2:]\n",
"MQ2_propane = sheetMQ2.col_values(6)[2:]"
]
},
{
"cell_type": "code",
"execution_count": 72,
"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": 73,
"metadata": {},
"outputs": [],
"source": [
"MQ2_H2 =zero_to_nan(MQ2_H2)\n",
"MQ2_LPG =zero_to_nan(MQ2_LPG)\n",
"MQ2_CH4 =zero_to_nan(MQ2_CH4)\n",
"MQ2_CO =zero_to_nan(MQ2_CO)\n",
"MQ2_Alcohol =zero_to_nan(MQ2_Alcohol)\n",
"MQ2_propane =zero_to_nan(MQ2_propane)"
]
},
{
"cell_type": "code",
"execution_count": 74,
"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",
"dataH2 = {'RsRo': x_MQ2, 'H2': MQ2_H2}\n",
"dataLPG = {'RsRo': x_MQ2, 'LPG': MQ2_LPG}\n",
"dataCH4 = {'RsRo': x_MQ2, 'CH4': MQ2_CH4}\n",
"dataCO = {'RsRo': x_MQ2, 'CO': MQ2_CO}\n",
"dataAlcohol = {'RsRo': x_MQ2, 'Alcohol': MQ2_Alcohol}\n",
"dataPropane = {'RsRo': x_MQ2, 'Propane': MQ2_propane}\n",
"\n",
"dfMQ2_H2 = pd.DataFrame(dataH2)\n",
"dfMQ2_LPG = pd.DataFrame(dataLPG)\n",
"dfMQ2_CH4 = pd.DataFrame(dataCH4)\n",
"dfMQ2_CO = pd.DataFrame(dataCO)\n",
"dfMQ2_Alcohol = pd.DataFrame(dataAlcohol)\n",
"dfMQ2_Propane = pd.DataFrame(dataPropane)\n",
"\n",
"dfMQ2_H2['H2'] = pd.to_numeric(dfMQ2_H2['H2'])\n",
"dfMQ2_LPG['LPG'] = pd.to_numeric(dfMQ2_LPG['LPG'])\n",
"dfMQ2_CH4['CH4'] = pd.to_numeric(dfMQ2_CH4['CH4'])\n",
"dfMQ2_CO['CO'] = pd.to_numeric(dfMQ2_CO['CO'])\n",
"dfMQ2_Alcohol['Alcohol'] = pd.to_numeric(dfMQ2_Alcohol['Alcohol'])\n",
"dfMQ2_Propane['Propane'] = pd.to_numeric(dfMQ2_Propane['Propane'])\n",
"\n",
"dfMQ2_H2['H2'] = dfMQ2_H2['H2'].replace('',None, regex=True)\n",
"dfMQ2_LPG['LPG'] = dfMQ2_LPG['LPG'].replace('',None, regex=True)\n",
"dfMQ2_CH4['CH4'] = dfMQ2_CH4['CH4'].replace('',None, regex=True)\n",
"dfMQ2_CO['CO'] = dfMQ2_CO['CO'].replace('',None, regex=True)\n",
"dfMQ2_Alcohol['Alcohol'] = dfMQ2_Alcohol['Alcohol'].replace('',None, regex=True)\n",
"dfMQ2_Propane['Propane'] = dfMQ2_Propane['Propane'].replace('',None, regex=True)\n",
"\n",
"#Global X_Predict variable\n",
"X_Predict = dfMQ2_H2.RsRo.apply(lambda x: [x]).tolist()"
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {},
"outputs": [],
"source": [
"#Model and train\n",
"dataset2TrainH2 = dfMQ2_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",
"MQ2_H2 = H2_Predicted"
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {},
"outputs": [],
"source": [
"#Model and train\n",
"dataset2TrainLPG = dfMQ2_LPG.copy()\n",
"dataset2TrainLPG.dropna(inplace=True)\n",
"X_trainLPG = dataset2TrainLPG.RsRo.apply(lambda x: [x]).tolist()\n",
"y_trainLPG = dataset2TrainLPG['LPG'].tolist()\n",
"model = linear_model.Lasso(alpha=0.1)\n",
"model.fit(X_trainLPG, y_trainLPG)\n",
"#Predict\n",
"LPG_Predicted = model.predict(X_Predict)\n",
"#save into MQ2\n",
"MQ2_LPG = LPG_Predicted"
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {},
"outputs": [],
"source": [
"#Model and train\n",
"dataset2TrainCH4 = dfMQ2_CH4.copy()\n",
"dataset2TrainCH4.dropna(inplace=True)\n",
"X_trainCH4 = dataset2TrainCH4.RsRo.apply(lambda x: [x]).tolist()\n",
"y_trainCH4 = dataset2TrainCH4['CH4'].tolist()\n",
"model = linear_model.Lasso(alpha=0.1)\n",
"model.fit(X_trainCH4, y_trainCH4)\n",
"#Predict\n",
"CH4_Predicted = model.predict(X_Predict)\n",
"#save into MQ2\n",
"MQ2_CH4 = CH4_Predicted"
]
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {},
"outputs": [],
"source": [
"#Model and train\n",
"dataset2TrainCO = dfMQ2_CO.copy()\n",
"dataset2TrainCO.dropna(inplace=True)\n",
"X_trainCO = dataset2TrainCO.RsRo.apply(lambda x: [x]).tolist()\n",
"y_trainCO = dataset2TrainCO['CO'].tolist()\n",
"model = linear_model.Lasso(alpha=0.1)\n",
"model.fit(X_trainCO, y_trainCO)\n",
"#Predict\n",
"CO_Predicted = model.predict(X_Predict)\n",
"#save into MQ2\n",
"MQ2_CO = CO_Predicted"
]
},
{
"cell_type": "code",
"execution_count": 79,
"metadata": {},
"outputs": [],
"source": [
"#Model and train\n",
"dataset2TrainAlcohol = dfMQ2_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",
"MQ2_Alcohol = Alcohol_Predicted"
]
},
{
"cell_type": "code",
"execution_count": 80,
"metadata": {},
"outputs": [],
"source": [
"#Model and train\n",
"dataset2TrainPropane = dfMQ2_Propane.copy()\n",
"dataset2TrainPropane.dropna(inplace=True)\n",
"X_trainPropane = dataset2TrainPropane.RsRo.apply(lambda x: [x]).tolist()\n",
"y_trainPropane = dataset2TrainPropane['Propane'].tolist()\n",
"model = linear_model.Lasso(alpha=0.1)\n",
"model.fit(X_trainPropane, y_trainPropane)\n",
"#Predict\n",
"Propane_Predicted = model.predict(X_Predict)\n",
"#save into MQ2\n",
"MQ2_propane = Propane_Predicted"
]
},
{
"cell_type": "code",
"execution_count": 81,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"\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(MQ2_H2, x_MQ2, marker='o', linewidth=1, label='H2')\n",
"plt.plot(MQ2_LPG, x_MQ2, marker='o', linewidth=1, label='LPG')\n",
"plt.plot(MQ2_CH4, x_MQ2, marker='o', linewidth=1, label='CH4')\n",
"plt.plot(MQ2_CO, x_MQ2, marker='o', linewidth=1, label='CO')\n",
"plt.plot(MQ2_Alcohol, x_MQ2, marker='o', linewidth=1, label='Alcohol')\n",
"plt.plot(MQ2_propane, x_MQ2, marker='o', linewidth=1, label='Propane')\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-2 data')\n",
"ax.set_xlabel('PPM Concentration')\n",
"ax.set_ylabel('Rs/Ro')\n",
"\n",
"\n",
"#Save image\n",
"plt.savefig('MQ2.svg', format = 'svg', dpi = 1200)\n",
"plt.savefig('MQ2.png')\n",
"plt.savefig('MQ2.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
}