Skip to content

Instantly share code, notes, and snippets.

@hududed
Created March 21, 2019 17:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hududed/2a09fecf00138868ce10f99f3ca29f5b to your computer and use it in GitHub Desktop.
Save hududed/2a09fecf00138868ce10f99f3ca29f5b to your computer and use it in GitHub Desktop.
code/eval.ipynb
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "%reload_ext autoreload\n%autoreload 2\n# %matplotlib inline\n%pylab inline",
"execution_count": 1,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": "Populating the interactive namespace from numpy and matplotlib\n"
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "from fastai.basics import *\nfrom plotnine import *\nfrom sklearn.decomposition import PCA\nfrom sklearn.preprocessing import scale",
"execution_count": 276,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "path = Path('../data')\npath.ls()",
"execution_count": 3,
"outputs": [
{
"data": {
"text/plain": "[PosixPath('../data/.DS_Store'),\n PosixPath('../data/GO20_Datasheet_4_Projected_Values_and_Averages.csv'),\n PosixPath('../data/GO20_Full_dg_copy.csv'),\n PosixPath('../data/GO20_Full_dg.csv'),\n PosixPath('../data/GO20_Datasheet_3.csv'),\n PosixPath('../data/GO20_Datasheet_4.csv'),\n PosixPath('../data/GO20_Datasheet_3_Projected_Values_and_Averages.csv'),\n PosixPath('../data/GO20_Full.csv')]"
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "d = pd.read_csv(path/'GO20_Datasheet_3.csv')\nd.head()",
"execution_count": 4,
"outputs": [
{
"data": {
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>time</th>\n <th>power</th>\n <th>pressure</th>\n <th>ratio</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>3000</td>\n <td>221</td>\n <td>50</td>\n <td>1.25</td>\n </tr>\n <tr>\n <th>1</th>\n <td>2000</td>\n <td>441</td>\n <td>60</td>\n <td>2.37</td>\n </tr>\n <tr>\n <th>2</th>\n <td>600</td>\n <td>228</td>\n <td>80</td>\n <td>1.71</td>\n </tr>\n <tr>\n <th>3</th>\n <td>5000</td>\n <td>221</td>\n <td>80</td>\n <td>1.66</td>\n </tr>\n <tr>\n <th>4</th>\n <td>5500</td>\n <td>331</td>\n <td>70</td>\n <td>3.78</td>\n </tr>\n </tbody>\n</table>\n</div>",
"text/plain": " time power pressure ratio\n0 3000 221 50 1.25\n1 2000 441 60 2.37\n2 600 228 80 1.71\n3 5000 221 80 1.66\n4 5500 331 70 3.78"
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "e = pd.read_csv(path/'GO20_Datasheet_3_Projected_Values_and_Averages.csv')\ne.head()",
"execution_count": 5,
"outputs": [
{
"data": {
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>power</th>\n <th>time</th>\n <th>pressure</th>\n <th>ratio1</th>\n <th>ratio2</th>\n <th>ratio3</th>\n <th>ratioAVG</th>\n <th>StDev</th>\n <th>Proj</th>\n <th>UProj</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>320</td>\n <td>4539</td>\n <td>85</td>\n <td>6.56</td>\n <td>6.42</td>\n <td>6.43</td>\n <td>6.47</td>\n <td>0.0780</td>\n <td>3.11</td>\n <td>4.05</td>\n </tr>\n <tr>\n <th>1</th>\n <td>335</td>\n <td>4143</td>\n <td>85</td>\n <td>4.89</td>\n <td>4.87</td>\n <td>4.87</td>\n <td>4.88</td>\n <td>0.0115</td>\n <td>5.12</td>\n <td>6.18</td>\n </tr>\n <tr>\n <th>2</th>\n <td>324</td>\n <td>4478</td>\n <td>95</td>\n <td>4.50</td>\n <td>4.49</td>\n <td>4.50</td>\n <td>4.50</td>\n <td>0.0060</td>\n <td>4.93</td>\n <td>5.95</td>\n </tr>\n <tr>\n <th>3</th>\n <td>324</td>\n <td>3949</td>\n <td>85</td>\n <td>4.22</td>\n <td>4.21</td>\n <td>4.14</td>\n <td>4.19</td>\n <td>0.0440</td>\n <td>4.96</td>\n <td>5.81</td>\n </tr>\n <tr>\n <th>4</th>\n <td>327</td>\n <td>6881</td>\n <td>85</td>\n <td>6.19</td>\n <td>6.23</td>\n <td>6.18</td>\n <td>6.20</td>\n <td>0.0260</td>\n <td>4.39</td>\n <td>5.31</td>\n </tr>\n </tbody>\n</table>\n</div>",
"text/plain": " power time pressure ratio1 ratio2 ratio3 ratioAVG StDev Proj \\\n0 320 4539 85 6.56 6.42 6.43 6.47 0.0780 3.11 \n1 335 4143 85 4.89 4.87 4.87 4.88 0.0115 5.12 \n2 324 4478 95 4.50 4.49 4.50 4.50 0.0060 4.93 \n3 324 3949 85 4.22 4.21 4.14 4.19 0.0440 4.96 \n4 327 6881 85 6.19 6.23 6.18 6.20 0.0260 4.39 \n\n UProj \n0 4.05 \n1 6.18 \n2 5.95 \n3 5.81 \n4 5.31 "
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "ep = e.copy()",
"execution_count": 6,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "ep.index = np.arange(1,len(ep)+1)\nep.head()",
"execution_count": 7,
"outputs": [
{
"data": {
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>power</th>\n <th>time</th>\n <th>pressure</th>\n <th>ratio1</th>\n <th>ratio2</th>\n <th>ratio3</th>\n <th>ratioAVG</th>\n <th>StDev</th>\n <th>Proj</th>\n <th>UProj</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>1</th>\n <td>320</td>\n <td>4539</td>\n <td>85</td>\n <td>6.56</td>\n <td>6.42</td>\n <td>6.43</td>\n <td>6.47</td>\n <td>0.0780</td>\n <td>3.11</td>\n <td>4.05</td>\n </tr>\n <tr>\n <th>2</th>\n <td>335</td>\n <td>4143</td>\n <td>85</td>\n <td>4.89</td>\n <td>4.87</td>\n <td>4.87</td>\n <td>4.88</td>\n <td>0.0115</td>\n <td>5.12</td>\n <td>6.18</td>\n </tr>\n <tr>\n <th>3</th>\n <td>324</td>\n <td>4478</td>\n <td>95</td>\n <td>4.50</td>\n <td>4.49</td>\n <td>4.50</td>\n <td>4.50</td>\n <td>0.0060</td>\n <td>4.93</td>\n <td>5.95</td>\n </tr>\n <tr>\n <th>4</th>\n <td>324</td>\n <td>3949</td>\n <td>85</td>\n <td>4.22</td>\n <td>4.21</td>\n <td>4.14</td>\n <td>4.19</td>\n <td>0.0440</td>\n <td>4.96</td>\n <td>5.81</td>\n </tr>\n <tr>\n <th>5</th>\n <td>327</td>\n <td>6881</td>\n <td>85</td>\n <td>6.19</td>\n <td>6.23</td>\n <td>6.18</td>\n <td>6.20</td>\n <td>0.0260</td>\n <td>4.39</td>\n <td>5.31</td>\n </tr>\n </tbody>\n</table>\n</div>",
"text/plain": " power time pressure ratio1 ratio2 ratio3 ratioAVG StDev Proj \\\n1 320 4539 85 6.56 6.42 6.43 6.47 0.0780 3.11 \n2 335 4143 85 4.89 4.87 4.87 4.88 0.0115 5.12 \n3 324 4478 95 4.50 4.49 4.50 4.50 0.0060 4.93 \n4 324 3949 85 4.22 4.21 4.14 4.19 0.0440 4.96 \n5 327 6881 85 6.19 6.23 6.18 6.20 0.0260 4.39 \n\n UProj \n1 4.05 \n2 6.18 \n3 5.95 \n4 5.81 \n5 5.31 "
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "ep['minRatio'] = ep[['ratio1','ratio2','ratio3']].min(axis=1)\nep['maxRatio'] = ep[['ratio1','ratio2','ratio3']].max(axis=1)",
"execution_count": 8,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "ep.head()",
"execution_count": 9,
"outputs": [
{
"data": {
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>power</th>\n <th>time</th>\n <th>pressure</th>\n <th>ratio1</th>\n <th>ratio2</th>\n <th>ratio3</th>\n <th>ratioAVG</th>\n <th>StDev</th>\n <th>Proj</th>\n <th>UProj</th>\n <th>minRatio</th>\n <th>maxRatio</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>1</th>\n <td>320</td>\n <td>4539</td>\n <td>85</td>\n <td>6.56</td>\n <td>6.42</td>\n <td>6.43</td>\n <td>6.47</td>\n <td>0.0780</td>\n <td>3.11</td>\n <td>4.05</td>\n <td>6.42</td>\n <td>6.56</td>\n </tr>\n <tr>\n <th>2</th>\n <td>335</td>\n <td>4143</td>\n <td>85</td>\n <td>4.89</td>\n <td>4.87</td>\n <td>4.87</td>\n <td>4.88</td>\n <td>0.0115</td>\n <td>5.12</td>\n <td>6.18</td>\n <td>4.87</td>\n <td>4.89</td>\n </tr>\n <tr>\n <th>3</th>\n <td>324</td>\n <td>4478</td>\n <td>95</td>\n <td>4.50</td>\n <td>4.49</td>\n <td>4.50</td>\n <td>4.50</td>\n <td>0.0060</td>\n <td>4.93</td>\n <td>5.95</td>\n <td>4.49</td>\n <td>4.50</td>\n </tr>\n <tr>\n <th>4</th>\n <td>324</td>\n <td>3949</td>\n <td>85</td>\n <td>4.22</td>\n <td>4.21</td>\n <td>4.14</td>\n <td>4.19</td>\n <td>0.0440</td>\n <td>4.96</td>\n <td>5.81</td>\n <td>4.14</td>\n <td>4.22</td>\n </tr>\n <tr>\n <th>5</th>\n <td>327</td>\n <td>6881</td>\n <td>85</td>\n <td>6.19</td>\n <td>6.23</td>\n <td>6.18</td>\n <td>6.20</td>\n <td>0.0260</td>\n <td>4.39</td>\n <td>5.31</td>\n <td>6.18</td>\n <td>6.23</td>\n </tr>\n </tbody>\n</table>\n</div>",
"text/plain": " power time pressure ratio1 ratio2 ratio3 ratioAVG StDev Proj \\\n1 320 4539 85 6.56 6.42 6.43 6.47 0.0780 3.11 \n2 335 4143 85 4.89 4.87 4.87 4.88 0.0115 5.12 \n3 324 4478 95 4.50 4.49 4.50 4.50 0.0060 4.93 \n4 324 3949 85 4.22 4.21 4.14 4.19 0.0440 4.96 \n5 327 6881 85 6.19 6.23 6.18 6.20 0.0260 4.39 \n\n UProj minRatio maxRatio \n1 4.05 6.42 6.56 \n2 6.18 4.87 4.89 \n3 5.95 4.49 4.50 \n4 5.81 4.14 4.22 \n5 5.31 6.18 6.23 "
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "fig, ax = plt.subplots(1,figsize=(5,5))\n\nax.plot(ep['ratioAVG'])\nax.fill_between(ep.index, ep['minRatio'], ep['maxRatio'], color = '#539caf', alpha = 0.4, label = '95% CI')",
"execution_count": 10,
"outputs": [
{
"data": {
"text/plain": "<matplotlib.collections.PolyCollection at 0x1a27c33b70>"
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": "<Figure size 360x360 with 1 Axes>"
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "all = pd.merge(d, e, on=['power','time','pressure'], how='outer')\nall.index = np.arange(1,len(all)+1)",
"execution_count": 24,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "all['ratio'] = 1 / all['ratio']\nall['Proj'] = 1 / all['Proj']\nall['UProj'] = 1 / all['UProj']",
"execution_count": 25,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "all.head()",
"execution_count": 26,
"outputs": [
{
"data": {
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>time</th>\n <th>power</th>\n <th>pressure</th>\n <th>ratio</th>\n <th>ratio1</th>\n <th>ratio2</th>\n <th>ratio3</th>\n <th>ratioAVG</th>\n <th>StDev</th>\n <th>Proj</th>\n <th>UProj</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>1</th>\n <td>3000</td>\n <td>221</td>\n <td>50</td>\n <td>0.800000</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2</th>\n <td>2000</td>\n <td>441</td>\n <td>60</td>\n <td>0.421941</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>3</th>\n <td>600</td>\n <td>228</td>\n <td>80</td>\n <td>0.584795</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>4</th>\n <td>5000</td>\n <td>221</td>\n <td>80</td>\n <td>0.602410</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>5</th>\n <td>5500</td>\n <td>331</td>\n <td>70</td>\n <td>0.264550</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n </tbody>\n</table>\n</div>",
"text/plain": " time power pressure ratio ratio1 ratio2 ratio3 ratioAVG StDev \\\n1 3000 221 50 0.800000 NaN NaN NaN NaN NaN \n2 2000 441 60 0.421941 NaN NaN NaN NaN NaN \n3 600 228 80 0.584795 NaN NaN NaN NaN NaN \n4 5000 221 80 0.602410 NaN NaN NaN NaN NaN \n5 5500 331 70 0.264550 NaN NaN NaN NaN NaN \n\n Proj UProj \n1 NaN NaN \n2 NaN NaN \n3 NaN NaN \n4 NaN NaN \n5 NaN NaN "
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "all = all.sort_values(by = ['power','time','pressure'])",
"execution_count": 43,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "all.head()",
"execution_count": 44,
"outputs": [
{
"data": {
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>time</th>\n <th>power</th>\n <th>pressure</th>\n <th>ratio</th>\n <th>ratio1</th>\n <th>ratio2</th>\n <th>ratio3</th>\n <th>ratioAVG</th>\n <th>StDev</th>\n <th>Proj</th>\n <th>UProj</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>15</th>\n <td>2500</td>\n <td>92</td>\n <td>60</td>\n <td>0.970874</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>16</th>\n <td>5500</td>\n <td>92</td>\n <td>60</td>\n <td>0.961538</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>14</th>\n <td>1500</td>\n <td>110</td>\n <td>60</td>\n <td>0.862069</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>8</th>\n <td>600</td>\n <td>147</td>\n <td>70</td>\n <td>1.000000</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>13</th>\n <td>1000</td>\n <td>147</td>\n <td>50</td>\n <td>0.546448</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n </tbody>\n</table>\n</div>",
"text/plain": " time power pressure ratio ratio1 ratio2 ratio3 ratioAVG StDev \\\n15 2500 92 60 0.970874 NaN NaN NaN NaN NaN \n16 5500 92 60 0.961538 NaN NaN NaN NaN NaN \n14 1500 110 60 0.862069 NaN NaN NaN NaN NaN \n8 600 147 70 1.000000 NaN NaN NaN NaN NaN \n13 1000 147 50 0.546448 NaN NaN NaN NaN NaN \n\n Proj UProj \n15 NaN NaN \n16 NaN NaN \n14 NaN NaN \n8 NaN NaN \n13 NaN NaN "
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "all.index = all.index-min(all.index[all['Proj'].notna()])+1",
"execution_count": 46,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "all",
"execution_count": 52,
"outputs": [
{
"data": {
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>time</th>\n <th>power</th>\n <th>pressure</th>\n <th>ratio</th>\n <th>ratio1</th>\n <th>ratio2</th>\n <th>ratio3</th>\n <th>ratioAVG</th>\n <th>StDev</th>\n <th>Proj</th>\n <th>UProj</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>-4</th>\n <td>2500</td>\n <td>92</td>\n <td>60</td>\n <td>0.970874</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>-3</th>\n <td>5500</td>\n <td>92</td>\n <td>60</td>\n <td>0.961538</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>-5</th>\n <td>1500</td>\n <td>110</td>\n <td>60</td>\n <td>0.862069</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>-11</th>\n <td>600</td>\n <td>147</td>\n <td>70</td>\n <td>1.000000</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>-6</th>\n <td>1000</td>\n <td>147</td>\n <td>50</td>\n <td>0.546448</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>0</th>\n <td>1000</td>\n <td>147</td>\n <td>80</td>\n <td>0.757576</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>-8</th>\n <td>3000</td>\n <td>194</td>\n <td>50</td>\n <td>0.884956</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>-2</th>\n <td>600</td>\n <td>221</td>\n <td>60</td>\n <td>0.380228</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>-1</th>\n <td>600</td>\n <td>221</td>\n <td>80</td>\n <td>0.367647</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>-18</th>\n <td>3000</td>\n <td>221</td>\n <td>50</td>\n <td>0.800000</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>-15</th>\n <td>5000</td>\n <td>221</td>\n <td>80</td>\n <td>0.602410</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>-16</th>\n <td>600</td>\n <td>228</td>\n <td>80</td>\n <td>0.584795</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>-9</th>\n <td>1000</td>\n <td>243</td>\n <td>50</td>\n <td>0.833333</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>-13</th>\n <td>2000</td>\n <td>243</td>\n <td>90</td>\n <td>0.287356</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>-7</th>\n <td>5000</td>\n <td>250</td>\n <td>50</td>\n <td>0.454545</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>-10</th>\n <td>700</td>\n <td>258</td>\n <td>70</td>\n <td>0.418410</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>-12</th>\n <td>3000</td>\n <td>260</td>\n <td>50</td>\n <td>0.621118</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>1</th>\n <td>4539</td>\n <td>320</td>\n <td>85</td>\n <td>0.154560</td>\n <td>6.56</td>\n <td>6.42</td>\n <td>6.43</td>\n <td>6.47</td>\n <td>0.0780</td>\n <td>0.321543</td>\n <td>0.246914</td>\n </tr>\n <tr>\n <th>4</th>\n <td>3949</td>\n <td>324</td>\n <td>85</td>\n <td>0.238663</td>\n <td>4.22</td>\n <td>4.21</td>\n <td>4.14</td>\n <td>4.19</td>\n <td>0.0440</td>\n <td>0.201613</td>\n <td>0.172117</td>\n </tr>\n <tr>\n <th>3</th>\n <td>4478</td>\n <td>324</td>\n <td>95</td>\n <td>0.222222</td>\n <td>4.50</td>\n <td>4.49</td>\n <td>4.50</td>\n <td>4.50</td>\n <td>0.0060</td>\n <td>0.202840</td>\n <td>0.168067</td>\n </tr>\n <tr>\n <th>5</th>\n <td>6881</td>\n <td>327</td>\n <td>85</td>\n <td>0.161290</td>\n <td>6.19</td>\n <td>6.23</td>\n <td>6.18</td>\n <td>6.20</td>\n <td>0.0260</td>\n <td>0.227790</td>\n <td>0.188324</td>\n </tr>\n <tr>\n <th>7</th>\n <td>8032</td>\n <td>327</td>\n <td>90</td>\n <td>0.167224</td>\n <td>6.00</td>\n <td>5.97</td>\n <td>5.97</td>\n <td>5.98</td>\n <td>0.0170</td>\n <td>0.187617</td>\n <td>0.164474</td>\n </tr>\n <tr>\n <th>-14</th>\n <td>5500</td>\n <td>331</td>\n <td>70</td>\n <td>0.264550</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>6</th>\n <td>9766</td>\n <td>331</td>\n <td>85</td>\n <td>0.191571</td>\n <td>5.21</td>\n <td>5.23</td>\n <td>5.21</td>\n <td>5.22</td>\n <td>0.0120</td>\n <td>0.194553</td>\n <td>0.164474</td>\n </tr>\n <tr>\n <th>8</th>\n <td>12895</td>\n <td>331</td>\n <td>90</td>\n <td>0.189753</td>\n <td>5.27</td>\n <td>5.28</td>\n <td>5.26</td>\n <td>5.27</td>\n <td>0.0100</td>\n <td>0.189753</td>\n <td>0.163132</td>\n </tr>\n <tr>\n <th>2</th>\n <td>4143</td>\n <td>335</td>\n <td>85</td>\n <td>0.204918</td>\n <td>4.89</td>\n <td>4.87</td>\n <td>4.87</td>\n <td>4.88</td>\n <td>0.0115</td>\n <td>0.195312</td>\n <td>0.161812</td>\n </tr>\n <tr>\n <th>-17</th>\n <td>2000</td>\n <td>441</td>\n <td>60</td>\n <td>0.421941</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n </tbody>\n</table>\n</div>",
"text/plain": " time power pressure ratio ratio1 ratio2 ratio3 ratioAVG \\\n-4 2500 92 60 0.970874 NaN NaN NaN NaN \n-3 5500 92 60 0.961538 NaN NaN NaN NaN \n-5 1500 110 60 0.862069 NaN NaN NaN NaN \n-11 600 147 70 1.000000 NaN NaN NaN NaN \n-6 1000 147 50 0.546448 NaN NaN NaN NaN \n 0 1000 147 80 0.757576 NaN NaN NaN NaN \n-8 3000 194 50 0.884956 NaN NaN NaN NaN \n-2 600 221 60 0.380228 NaN NaN NaN NaN \n-1 600 221 80 0.367647 NaN NaN NaN NaN \n-18 3000 221 50 0.800000 NaN NaN NaN NaN \n-15 5000 221 80 0.602410 NaN NaN NaN NaN \n-16 600 228 80 0.584795 NaN NaN NaN NaN \n-9 1000 243 50 0.833333 NaN NaN NaN NaN \n-13 2000 243 90 0.287356 NaN NaN NaN NaN \n-7 5000 250 50 0.454545 NaN NaN NaN NaN \n-10 700 258 70 0.418410 NaN NaN NaN NaN \n-12 3000 260 50 0.621118 NaN NaN NaN NaN \n 1 4539 320 85 0.154560 6.56 6.42 6.43 6.47 \n 4 3949 324 85 0.238663 4.22 4.21 4.14 4.19 \n 3 4478 324 95 0.222222 4.50 4.49 4.50 4.50 \n 5 6881 327 85 0.161290 6.19 6.23 6.18 6.20 \n 7 8032 327 90 0.167224 6.00 5.97 5.97 5.98 \n-14 5500 331 70 0.264550 NaN NaN NaN NaN \n 6 9766 331 85 0.191571 5.21 5.23 5.21 5.22 \n 8 12895 331 90 0.189753 5.27 5.28 5.26 5.27 \n 2 4143 335 85 0.204918 4.89 4.87 4.87 4.88 \n-17 2000 441 60 0.421941 NaN NaN NaN NaN \n\n StDev Proj UProj \n-4 NaN NaN NaN \n-3 NaN NaN NaN \n-5 NaN NaN NaN \n-11 NaN NaN NaN \n-6 NaN NaN NaN \n 0 NaN NaN NaN \n-8 NaN NaN NaN \n-2 NaN NaN NaN \n-1 NaN NaN NaN \n-18 NaN NaN NaN \n-15 NaN NaN NaN \n-16 NaN NaN NaN \n-9 NaN NaN NaN \n-13 NaN NaN NaN \n-7 NaN NaN NaN \n-10 NaN NaN NaN \n-12 NaN NaN NaN \n 1 0.0780 0.321543 0.246914 \n 4 0.0440 0.201613 0.172117 \n 3 0.0060 0.202840 0.168067 \n 5 0.0260 0.227790 0.188324 \n 7 0.0170 0.187617 0.164474 \n-14 NaN NaN NaN \n 6 0.0120 0.194553 0.164474 \n 8 0.0100 0.189753 0.163132 \n 2 0.0115 0.195312 0.161812 \n-17 NaN NaN NaN "
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "ss = all[all.index > 0].sort_index()\nss",
"execution_count": 149,
"outputs": [
{
"data": {
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>time</th>\n <th>power</th>\n <th>pressure</th>\n <th>ratio</th>\n <th>ratio1</th>\n <th>ratio2</th>\n <th>ratio3</th>\n <th>ratioAVG</th>\n <th>StDev</th>\n <th>Proj</th>\n <th>UProj</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>1</th>\n <td>4539</td>\n <td>320</td>\n <td>85</td>\n <td>0.154560</td>\n <td>6.56</td>\n <td>6.42</td>\n <td>6.43</td>\n <td>6.47</td>\n <td>0.0780</td>\n <td>0.321543</td>\n <td>0.246914</td>\n </tr>\n <tr>\n <th>2</th>\n <td>4143</td>\n <td>335</td>\n <td>85</td>\n <td>0.204918</td>\n <td>4.89</td>\n <td>4.87</td>\n <td>4.87</td>\n <td>4.88</td>\n <td>0.0115</td>\n <td>0.195312</td>\n <td>0.161812</td>\n </tr>\n <tr>\n <th>3</th>\n <td>4478</td>\n <td>324</td>\n <td>95</td>\n <td>0.222222</td>\n <td>4.50</td>\n <td>4.49</td>\n <td>4.50</td>\n <td>4.50</td>\n <td>0.0060</td>\n <td>0.202840</td>\n <td>0.168067</td>\n </tr>\n <tr>\n <th>4</th>\n <td>3949</td>\n <td>324</td>\n <td>85</td>\n <td>0.238663</td>\n <td>4.22</td>\n <td>4.21</td>\n <td>4.14</td>\n <td>4.19</td>\n <td>0.0440</td>\n <td>0.201613</td>\n <td>0.172117</td>\n </tr>\n <tr>\n <th>5</th>\n <td>6881</td>\n <td>327</td>\n <td>85</td>\n <td>0.161290</td>\n <td>6.19</td>\n <td>6.23</td>\n <td>6.18</td>\n <td>6.20</td>\n <td>0.0260</td>\n <td>0.227790</td>\n <td>0.188324</td>\n </tr>\n <tr>\n <th>6</th>\n <td>9766</td>\n <td>331</td>\n <td>85</td>\n <td>0.191571</td>\n <td>5.21</td>\n <td>5.23</td>\n <td>5.21</td>\n <td>5.22</td>\n <td>0.0120</td>\n <td>0.194553</td>\n <td>0.164474</td>\n </tr>\n <tr>\n <th>7</th>\n <td>8032</td>\n <td>327</td>\n <td>90</td>\n <td>0.167224</td>\n <td>6.00</td>\n <td>5.97</td>\n <td>5.97</td>\n <td>5.98</td>\n <td>0.0170</td>\n <td>0.187617</td>\n <td>0.164474</td>\n </tr>\n <tr>\n <th>8</th>\n <td>12895</td>\n <td>331</td>\n <td>90</td>\n <td>0.189753</td>\n <td>5.27</td>\n <td>5.28</td>\n <td>5.26</td>\n <td>5.27</td>\n <td>0.0100</td>\n <td>0.189753</td>\n <td>0.163132</td>\n </tr>\n </tbody>\n</table>\n</div>",
"text/plain": " time power pressure ratio ratio1 ratio2 ratio3 ratioAVG StDev \\\n1 4539 320 85 0.154560 6.56 6.42 6.43 6.47 0.0780 \n2 4143 335 85 0.204918 4.89 4.87 4.87 4.88 0.0115 \n3 4478 324 95 0.222222 4.50 4.49 4.50 4.50 0.0060 \n4 3949 324 85 0.238663 4.22 4.21 4.14 4.19 0.0440 \n5 6881 327 85 0.161290 6.19 6.23 6.18 6.20 0.0260 \n6 9766 331 85 0.191571 5.21 5.23 5.21 5.22 0.0120 \n7 8032 327 90 0.167224 6.00 5.97 5.97 5.98 0.0170 \n8 12895 331 90 0.189753 5.27 5.28 5.26 5.27 0.0100 \n\n Proj UProj \n1 0.321543 0.246914 \n2 0.195312 0.161812 \n3 0.202840 0.168067 \n4 0.201613 0.172117 \n5 0.227790 0.188324 \n6 0.194553 0.164474 \n7 0.187617 0.164474 \n8 0.189753 0.163132 "
},
"execution_count": 149,
"metadata": {},
"output_type": "execute_result"
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "seq = all.dropna(subset=['Proj']).index # runs with projection\nnonseq = all[pd.isnull(all['Proj'])].index # training runs - ACHTUNG: pd.isnull, not all.isnull",
"execution_count": 238,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "(ggplot(all.dropna(subset=['Proj']),aes(seq,'ratio')) # sets x limit to projected iterations\n+ geom_segment(aes(x = seq, xend = seq, y = 'ratio', yend = 'Proj')) # line between actual & projected vals\n+ geom_point(size = 1) # symbol for actual\n+ geom_point(aes(y = 'Proj'), shape = '+', size = 3) # symbol for projected\n+ geom_boxplot(all[pd.isnull(all['Proj'])], aes(x = 0, y = 'ratio'), outlier_size = 1) # not sure\n+ geom_boxplot(all.dropna(subset=['Proj']), aes(x = max(all.index) + 1, y = 'ratio'), outlier_size = 1)\n+ scale_x_continuous()\n+ labs(x = \"Iteration\", y = \"Ratio\")\n)",
"execution_count": 237,
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": "/anaconda3/envs/raman/lib/python3.6/site-packages/plotnine/layer.py:517: MatplotlibDeprecationWarning: isinstance(..., numbers.Number)\n return not cbook.iterable(value) and (cbook.is_numlike(value) or\n/anaconda3/envs/raman/lib/python3.6/site-packages/plotnine/layer.py:517: MatplotlibDeprecationWarning: isinstance(..., numbers.Number)\n return not cbook.iterable(value) and (cbook.is_numlike(value) or\n"
},
{
"data": {
"image/png": "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MEKc1QVEgoSEBDmdzpBv1+v1hnybHeFyuZSammp1GacUFxcX0fWFgs1mk3S8F4FAwOJqwodexhb6GVtM6OepdCj0fPTRR3r44Ye1bds2HT16VOnp6frBD36gX/ziF+rbt2+oagw7n88nn88X8u1GWujxer2qqamxuoxTSk1Njej6QsHhcCghIUFer1d+v9/qcsKGXsYW+hlbYqmfbR2waHfo2blzp0aMGCGn06mCggJlZ2fr0KFDeu6557Rx40a9/vrr+t73vtfezQMAAIRUu0NPSUmJBg4cqJdeekkulys43+v16oc//KFKSkq0devWkBQJAADQUe0+kfmNN97QL37xi2aBRzp+PLSkpERvvPFGh4sDAAAIlXaHnhPHPlvj9XoVHx/f7qIAAABCrd2hZ9SoUfrVr36l3bt3N5u/e/du3XfffRo9enSHiwMAAAiVdp/Ts3DhQv3gBz/QBRdcoAEDBig7O1sVFRV6//331a1bNy1YsCCUdUa1Dz74QIcOHbLs+Y8ePWrZcwMAECnaHXrOO+88vffee1q5cqW2b9+uyspK9evXTzfeeKOmTJmilJSUUNYZ1UpKSqwuAQAA43XoPj0pKSmaMWOGZsyYEap6AAAAwoI7Mp8FjzzyiNLT0y17/qNHjzLaBAAwXptCj9vt1p///GcNGjRIqampwdt2t8Zms6mqqqrDBcaC/v37Kzs727Lnt/J8IgAAIkWbQs+dd96pLl26BL8+XegBAACIJG0KPbNnzw5+PWfOnFDXAgAAEDbtvk9PcXGx9uzZ0+r3ysvLVVxc3O6iAAAAQq3doWf16tU6cuRIq9/zeDx64okn2l0UAABAqLU79Eg65Tk9//jHP9S5c+eObBoAACCk2nROz2OPPabHHntM0vHAM378eCUlJTVbpr6+Xnv37tV1110XuioBAAA6qE2h59xzz9WgQYMkSe+//7769eunzMzMZsskJCTo/PPP14033hi6KgEAADqoTaHnmmuu0TXXXBOcnjVrlnr06BHyogAAAEKt3XdkXrVqVSjrAAAACKsOfQzFF198oaefflofffSR6uvrm33PZrNp8eLFHSoOAAAgVNodev7xj39oyJAhamhokNfrVWZmpo4eParGxkalpaWpU6dOhB4AABAx2n3J+h133KHBgweroqJCgUBAmzdvVl1dndauXavU1FQ99dRToawT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\n",
"text/plain": "<Figure size 640x480 with 1 Axes>"
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": "<ggplot: (7568598164)>"
},
"execution_count": 237,
"metadata": {},
"output_type": "execute_result"
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "sset = all[['power','time','pressure']]\nx = sset.values",
"execution_count": 281,
"outputs": [
{
"data": {
"text/plain": "array([[ 92, 2500, 60],\n [ 92, 5500, 60],\n [ 110, 1500, 60],\n [ 147, 600, 70],\n ...,\n [ 331, 9766, 85],\n [ 331, 12895, 90],\n [ 335, 4143, 85],\n [ 441, 2000, 60]])"
},
"execution_count": 281,
"metadata": {},
"output_type": "execute_result"
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "pca = PCA(n_components=3)",
"execution_count": 292,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "pca.fit_transform(x)",
"execution_count": 301,
"outputs": [
{
"data": {
"text/plain": "array([[-1.160569e+03, -1.408732e+02, 6.639919e-01],\n [ 1.839172e+03, -1.800276e+02, 4.983363e+00],\n [-2.160250e+03, -1.098517e+02, 2.375268e-01],\n [-3.059671e+03, -6.060444e+01, -8.959469e+00],\n ...,\n [ 6.107954e+03, 4.302415e+00, -3.801086e-01],\n [ 9.236695e+03, -3.625434e+01, -8.670697e-01],\n [ 4.854902e+02, 8.168428e+01, -8.250867e+00],\n [-1.656007e+03, 2.140698e+02, 1.959135e+01]])"
},
"execution_count": 301,
"metadata": {},
"output_type": "execute_result"
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "#The amount of variance that each PC explains\nvar= pca.explained_variance_ratio_\nvar",
"execution_count": 302,
"outputs": [
{
"data": {
"text/plain": "array([9.993312e-01, 6.501529e-04, 1.869532e-05])"
},
"execution_count": 302,
"metadata": {},
"output_type": "execute_result"
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "#Cumulative Variance explains\nvar1=np.cumsum(np.round(pca.explained_variance_ratio_, decimals=4)*100)\nvar1",
"execution_count": 303,
"outputs": [
{
"data": {
"text/plain": "array([ 99.93, 100. , 100. ])"
},
"execution_count": 303,
"metadata": {},
"output_type": "execute_result"
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "plt.plot(var1,'bo-')",
"execution_count": 362,
"outputs": [
{
"data": {
"text/plain": "[<matplotlib.lines.Line2D at 0x1c37b3f160>]"
},
"execution_count": 362,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": "<Figure size 432x288 with 1 Axes>"
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "pca = PCA(n_components=3)\npca.fit(x)\nx1=pca.fit_transform(x)",
"execution_count": 311,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "proj = pd.DataFrame(x1,columns=['PC1','PC2','PC3'])\nproj.head()",
"execution_count": 336,
"outputs": [
{
"data": {
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>PC1</th>\n <th>PC2</th>\n <th>PC3</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>-1160.569244</td>\n <td>-140.873153</td>\n <td>0.663992</td>\n </tr>\n <tr>\n <th>1</th>\n <td>1839.172123</td>\n <td>-180.027631</td>\n <td>4.983363</td>\n </tr>\n <tr>\n <th>2</th>\n <td>-2160.249938</td>\n <td>-109.851718</td>\n <td>0.237527</td>\n </tr>\n <tr>\n <th>3</th>\n <td>-3059.671485</td>\n <td>-60.604436</td>\n <td>-8.959469</td>\n </tr>\n <tr>\n <th>4</th>\n <td>-2659.749412</td>\n <td>-66.950480</td>\n <td>11.584709</td>\n </tr>\n </tbody>\n</table>\n</div>",
"text/plain": " PC1 PC2 PC3\n0 -1160.569244 -140.873153 0.663992\n1 1839.172123 -180.027631 4.983363\n2 -2160.249938 -109.851718 0.237527\n3 -3059.671485 -60.604436 -8.959469\n4 -2659.749412 -66.950480 11.584709"
},
"execution_count": 336,
"metadata": {},
"output_type": "execute_result"
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "proj['PC2']= -proj['PC2'] # not sure why my PC2 and PC3 is *-1 compared to R\nproj['PC3']= -proj['PC3']",
"execution_count": 337,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "proj.index = all.index\nproj['ratio'] = all['ratio']\nproj['Proj'] = all['Proj']\nproj['UProj'] = all['UProj']\nproj['ind'] = all['Proj'].notna().astype(int)\nproj['diff'] = proj['Proj'] - proj['ratio']",
"execution_count": 338,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "proj",
"execution_count": 339,
"outputs": [
{
"data": {
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>PC1</th>\n <th>PC2</th>\n <th>PC3</th>\n <th>ratio</th>\n <th>Proj</th>\n <th>UProj</th>\n <th>ind</th>\n <th>diff</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>-4</th>\n <td>-1160.569244</td>\n <td>140.873153</td>\n <td>-0.663992</td>\n <td>0.970874</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>-3</th>\n <td>1839.172123</td>\n <td>180.027631</td>\n <td>-4.983363</td>\n <td>0.961538</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>-5</th>\n <td>-2160.249938</td>\n <td>109.851718</td>\n <td>-0.237527</td>\n <td>0.862069</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>-11</th>\n <td>-3059.671485</td>\n <td>60.604436</td>\n <td>8.959469</td>\n <td>1.000000</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>-6</th>\n <td>-2659.749412</td>\n <td>66.950480</td>\n <td>-11.584709</td>\n <td>0.546448</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>0</th>\n <td>-2659.684248</td>\n <td>65.262309</td>\n <td>18.367684</td>\n <td>0.757576</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>-8</th>\n <td>-659.313196</td>\n <td>46.131948</td>\n <td>-17.110195</td>\n <td>0.884956</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>-2</th>\n <td>-3058.734924</td>\n <td>-12.709272</td>\n <td>-5.190555</td>\n <td>0.380228</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>-1</th>\n <td>-3058.691482</td>\n <td>-13.834719</td>\n <td>14.777707</td>\n <td>0.367647</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>-18</th>\n <td>-658.963552</td>\n <td>19.177034</td>\n <td>-18.630183</td>\n <td>0.800000</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>-15</th>\n <td>1340.929190</td>\n <td>43.591849</td>\n <td>8.442629</td>\n <td>0.602410</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>-16</th>\n <td>-3058.600833</td>\n <td>-20.823030</td>\n <td>14.383636</td>\n <td>0.584795</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>-9</th>\n <td>-2658.506235</td>\n <td>-28.889214</td>\n <td>-16.989111</td>\n <td>0.833333</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>-13</th>\n <td>-1658.505561</td>\n <td>-18.088616</td>\n <td>21.507622</td>\n <td>0.287356</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>-7</th>\n <td>1341.239569</td>\n <td>16.328445</td>\n <td>-23.142344</td>\n <td>0.454545</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>-10</th>\n <td>-2958.242683</td>\n <td>-48.905061</td>\n <td>2.566650</td>\n <td>0.418410</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>-12</th>\n <td>-658.458511</td>\n <td>-19.757841</td>\n <td>-20.825722</td>\n <td>0.621118</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>1</th>\n <td>881.261820</td>\n <td>-61.540936</td>\n <td>8.525148</td>\n <td>0.154560</td>\n <td>0.321543</td>\n <td>0.246914</td>\n <td>1</td>\n <td>0.166984</td>\n </tr>\n <tr>\n <th>4</th>\n <td>291.364484</td>\n <td>-73.234637</td>\n <td>9.149441</td>\n <td>0.238663</td>\n <td>0.201613</td>\n <td>0.172117</td>\n <td>1</td>\n <td>-0.037051</td>\n </tr>\n <tr>\n <th>3</th>\n <td>820.340599</td>\n <td>-66.893121</td>\n <td>18.371923</td>\n <td>0.222222</td>\n <td>0.202840</td>\n <td>0.168067</td>\n <td>1</td>\n <td>-0.019382</td>\n </tr>\n <tr>\n <th>5</th>\n <td>3223.150563</td>\n <td>-37.962651</td>\n <td>4.759088</td>\n <td>0.161290</td>\n <td>0.227790</td>\n <td>0.188324</td>\n <td>1</td>\n <td>0.066500</td>\n </tr>\n <tr>\n <th>7</th>\n <td>4374.062194</td>\n <td>-23.221745</td>\n <td>8.093954</td>\n <td>0.167224</td>\n <td>0.187617</td>\n <td>0.164474</td>\n <td>1</td>\n <td>0.020393</td>\n </tr>\n <tr>\n <th>-14</th>\n <td>1842.288837</td>\n <td>-59.135997</td>\n <td>-8.453942</td>\n <td>0.264550</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>6</th>\n <td>6107.953643</td>\n <td>-4.302415</td>\n <td>0.380109</td>\n <td>0.191571</td>\n <td>0.194553</td>\n <td>0.164474</td>\n <td>1</td>\n <td>0.002982</td>\n </tr>\n <tr>\n <th>8</th>\n <td>9236.694750</td>\n <td>36.254343</td>\n <td>0.867070</td>\n <td>0.189753</td>\n <td>0.189753</td>\n <td>0.163132</td>\n <td>1</td>\n <td>0.000000</td>\n </tr>\n <tr>\n <th>2</th>\n <td>485.490206</td>\n <td>-81.684279</td>\n <td>8.250867</td>\n <td>0.204918</td>\n <td>0.195312</td>\n <td>0.161812</td>\n <td>1</td>\n <td>-0.009606</td>\n </tr>\n <tr>\n <th>-17</th>\n <td>-1656.006672</td>\n <td>-214.069814</td>\n <td>-19.591350</td>\n <td>0.421941</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0</td>\n <td>NaN</td>\n </tr>\n </tbody>\n</table>\n</div>",
"text/plain": " PC1 PC2 PC3 ratio Proj UProj ind \\\n-4 -1160.569244 140.873153 -0.663992 0.970874 NaN NaN 0 \n-3 1839.172123 180.027631 -4.983363 0.961538 NaN NaN 0 \n-5 -2160.249938 109.851718 -0.237527 0.862069 NaN NaN 0 \n-11 -3059.671485 60.604436 8.959469 1.000000 NaN NaN 0 \n-6 -2659.749412 66.950480 -11.584709 0.546448 NaN NaN 0 \n 0 -2659.684248 65.262309 18.367684 0.757576 NaN NaN 0 \n-8 -659.313196 46.131948 -17.110195 0.884956 NaN NaN 0 \n-2 -3058.734924 -12.709272 -5.190555 0.380228 NaN NaN 0 \n-1 -3058.691482 -13.834719 14.777707 0.367647 NaN NaN 0 \n-18 -658.963552 19.177034 -18.630183 0.800000 NaN NaN 0 \n-15 1340.929190 43.591849 8.442629 0.602410 NaN NaN 0 \n-16 -3058.600833 -20.823030 14.383636 0.584795 NaN NaN 0 \n-9 -2658.506235 -28.889214 -16.989111 0.833333 NaN NaN 0 \n-13 -1658.505561 -18.088616 21.507622 0.287356 NaN NaN 0 \n-7 1341.239569 16.328445 -23.142344 0.454545 NaN NaN 0 \n-10 -2958.242683 -48.905061 2.566650 0.418410 NaN NaN 0 \n-12 -658.458511 -19.757841 -20.825722 0.621118 NaN NaN 0 \n 1 881.261820 -61.540936 8.525148 0.154560 0.321543 0.246914 1 \n 4 291.364484 -73.234637 9.149441 0.238663 0.201613 0.172117 1 \n 3 820.340599 -66.893121 18.371923 0.222222 0.202840 0.168067 1 \n 5 3223.150563 -37.962651 4.759088 0.161290 0.227790 0.188324 1 \n 7 4374.062194 -23.221745 8.093954 0.167224 0.187617 0.164474 1 \n-14 1842.288837 -59.135997 -8.453942 0.264550 NaN NaN 0 \n 6 6107.953643 -4.302415 0.380109 0.191571 0.194553 0.164474 1 \n 8 9236.694750 36.254343 0.867070 0.189753 0.189753 0.163132 1 \n 2 485.490206 -81.684279 8.250867 0.204918 0.195312 0.161812 1 \n-17 -1656.006672 -214.069814 -19.591350 0.421941 NaN NaN 0 \n\n diff \n-4 NaN \n-3 NaN \n-5 NaN \n-11 NaN \n-6 NaN \n 0 NaN \n-8 NaN \n-2 NaN \n-1 NaN \n-18 NaN \n-15 NaN \n-16 NaN \n-9 NaN \n-13 NaN \n-7 NaN \n-10 NaN \n-12 NaN \n 1 0.166984 \n 4 -0.037051 \n 3 -0.019382 \n 5 0.066500 \n 7 0.020393 \n-14 NaN \n 6 0.002982 \n 8 0.000000 \n 2 -0.009606 \n-17 NaN "
},
"execution_count": 339,
"metadata": {},
"output_type": "execute_result"
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "(ggplot(proj, aes('PC1', 'PC2')) +\n geom_point(aes(colour = 'ratio'), size = 3) +\n geom_point(aes(colour = 'Proj', alpha = 'ind'), size = 1) +\n scale_alpha(guide = False) +\n theme(axis_title = element_blank(),\n axis_text = element_blank(),\n axis_ticks = element_blank())\n)",
"execution_count": 356,
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": "/anaconda3/envs/raman/lib/python3.6/site-packages/mizani/bounds.py:352: RuntimeWarning: invalid value encountered in less\n outside = (x < range[0]) | (x > range[1])\n/anaconda3/envs/raman/lib/python3.6/site-packages/mizani/bounds.py:352: RuntimeWarning: invalid value encountered in greater\n outside = (x < range[0]) | (x > range[1])\n/anaconda3/envs/raman/lib/python3.6/site-packages/matplotlib/colors.py:512: RuntimeWarning: invalid value encountered in less\n xa[xa < 0] = -1\n"
},
{
"data": {
"image/png": "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mYqKCjZv3gzA9773PXbu3Mk111xDRUVF91Jo6voUERGRnJoxeyoMMA5ej57PEdxvtu+AfftSj/rwrAE3r66uZsWKFX3Wz5w5k+bm5u6vly1bxrJly0Ze3wgpqImIiEhuWTItXMM11OB2wPHUxvhcnyIiIiIDs5luzpHYP7R1Bq9eExAMcnoFNREREZH+ZduidgBD7igNcUL4XFNQExERkRwbZovaUFrAhnE/mx1sntEio6AmIiIiuXWgFrVcdE0OFtzU9SkiIiLSP79rvLT92DyHJ7NfcPM60nk9VyEpqImIiEhOTZoxnjMuO5nK8RVU1JRTVlWK4+R36Nb2lg6a65tpqm9hzolH5PVchaSgJiIiIjk1/fCpfPtnXwu7jFFBMxOIiIiIRJSCmoiIiEhEKaiJiIiIRJSCmoiIiEhEKaiJiIiIRJSCmoiIiEhEKaiJiIiIRJSCmrUjZ4sAAAUzSURBVIiIiEhEKaiJiIiIRJSCmoiIiEhEKaiJiIiIRJSCmoiIiEhEKaiJiIiIRJSCmoiIiEhEKaiJiIiIRJSCmoiIiEhEKaiJiIiIRJSCmoiIiEhEKaiJiIiIRJSCmoiIiEhEKaiJiIiIRJSCmoiIiEhEKaiJiIiIRJSCmoiIiEhEGWutHe5OjY2NJJPJfNSTc7FYDM/zwi5j1DPGkEgkSKVSZHFJSRZ0bReOru/C0/WdH8Xyu1v2iWWzUyqVIpVK5bqWvKisrKSpqSnsMkY913VJJBK0tLTg+37Y5YwJurYLR9d34en6zg8FteKjrk8RERGRiFJQExEREYkoBTURERGRiFJQExEREYkoBTURERGRiFJQExEREYkoBTURERGRiFJQExEREYkoBTURERGRiFJQExEREYkoBTURERGRiFJQExEREYkoBTURERGRiFJQExEREYkoBTURERGRiFJQExEREYkoBTURERGRiFJQExEREYkoBTURERGRiFJQExEREYkoBTURERGRiFJQExEREYkoBTURERGRiFJQExEREYkoBTURERGRiFJQExEREYkoBTURERGRiFJQExEREYkoBTURERGRiFJQExEREYkoBTURERGRiFJQExEREYkoBTURERGRiFJQExEREYkoBTURERGRiFJQExEREYkoBTURERGRiFJQExEREYkoBTURERGRiIpls5MxBscpjoz3/7d3xyBylAEYhr9/Z29z3oUkF1BjMKCJFmqhKQQJgkWKYGGj9mJppdja2tjYiZ2Q0tJSSKeVEFEQi0iKiARFCeHOu80lN/NbbCSFCCbu7cwmz9MvfAw/x8vM7G0pJU3T9D3jvvf3NXatF8fZXhzne/Gcb5gptdZ6tx/a2dnJ2trafuwBAOC2e7qjNp1Os7u7O+8t+2J9fT3b29t9z7jvNU2TQ4cOZXNzM23b9j3ngeBsL47zvXjO9/7Y2NjoewJ36Z5Crda6NH+slmnr/aBtW9d7QZztxXO+F8f5hpnleNEMAOABJNQAAAZKqAEADJRQAwAYqHv6MgH/ru26XLx0NVd+u54Dk3FeeubxPHLkYN+zAIAlJNTm6PvLv+ajz7/K9a0bGTej1NR8+sU3eeX5J/LeG2eyOnG5AYD/TjnMyaVf/sgHn13IXtslSW7u3fla+dc//Jyt6c18+PbZlFL6mggALBnvqM3J+S+/S9fVpNaUG7dSNqcpf+4mbZe9dvY49Mcrv/c9EwBYIkJtDrZ2dnPxp6vpak32upTpraSUpO1Stm8mtaYZlVz49nLfUwGAJSLU5mBr587PaZW2Sy0laUbJeJR0XVJr2q7m2ua0x5UAwLIRanNw+OBqRrffPavNKCW376zdamexVkrGzSiPbqz3vBQAWCZCbQ7WVyc589yJNKOSrDTp1ibJqKROxqkPTZJSstd2Offi031PBQCWiFCbk7fOnc7KuJndWZuMUw8eSF2bJM0ozajk7OmTOXX8aN8zAYAlItTm5MTDh/PxO6/myWNHkiQr41mgTcZNXn/52bz/5pmeFwIAy8b/UZujk49t5JN3X8vlq9dmv0ywMs4LTx3L+uqk72kAwBISavvg1PGjHnMCAP+bR58AAAMl1AAABkqoAQAMlFADABgooQYAMFBCDQBgoIQaAMBACTUAgIESagAAAyXUAAAGqtRaa98jAAD4J3fUAAAGSqgBAAyUUAMAGCihBgAwUEINAGCghBoAwEAJNQCAgRJqAAADJdQAAAZKqAEADJRQAwAYKKEGADBQfwGdgHA8Z7LBsAAAAABJRU5ErkJggg==\n",
"text/plain": "<Figure size 640x480 with 1 Axes>"
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": "<ggplot: (-9223372029281633585)>"
},
"execution_count": 356,
"metadata": {},
"output_type": "execute_result"
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "",
"execution_count": null,
"outputs": []
}
],
"metadata": {
"kernelspec": {
"name": "conda-env-Raman-py",
"display_name": "Python [conda env:Raman]",
"language": "python"
},
"language_info": {
"name": "python",
"version": "3.6.8",
"mimetype": "text/x-python",
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"pygments_lexer": "ipython3",
"nbconvert_exporter": "python",
"file_extension": ".py"
},
"gist": {
"id": "",
"data": {
"description": "code/eval.ipynb",
"public": true
}
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment