diff --git a/dataset_splitting.ipynb b/dataset_splitting.ipynb new file mode 100644 index 0000000..e794f51 --- /dev/null +++ b/dataset_splitting.ipynb @@ -0,0 +1,732 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "f1396231-0139-456f-96d8-6f18199e8e25", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import seaborn as sns\n", + "import matplotlib.pyplot as plt\n", + "import math\n", + "from sklearn.model_selection import train_test_split\n", + "import scipy\n", + "from scipy.stats import ks_2samp" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "3521f41e-c9d2-42f3-b657-45634f3fd8ac", + "metadata": {}, + "outputs": [], + "source": [ + "df=pd.read_csv(r'/home/unipi/v.vichi3/Desktop/dataframe.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "ab94adc5-854e-49cd-9a9f-bce8ffd4ee87", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IDaeiomwmaH-valueMOIDEPOCHPHA
0'0000001'2.6624540.53387526.6942719.950131284.51473114.5143459.450.461559945.00.0
1'0000002'1.4579650.22263310.82898209.642798343.753667338.40604611.160.135659945.00.0
2'0000003'1.8938190.53829441.18978286.606414287.58563583.68883412.400.116259945.00.0
3'0000004'2.0012120.44874217.44771214.338458245.55868715.81662912.600.244759945.00.0
4'0000005'4.2214450.71324330.98228206.677675330.127884117.37535912.900.259259945.00.0
\n", + "
" + ], + "text/plain": [ + " ID a e i om w \\\n", + "0 '0000001' 2.662454 0.533875 26.69427 19.950131 284.514731 \n", + "1 '0000002' 1.457965 0.222633 10.82898 209.642798 343.753667 \n", + "2 '0000003' 1.893819 0.538294 41.18978 286.606414 287.585635 \n", + "3 '0000004' 2.001212 0.448742 17.44771 214.338458 245.558687 \n", + "4 '0000005' 4.221445 0.713243 30.98228 206.677675 330.127884 \n", + "\n", + " ma H-value MOID EPOCH PHA \n", + "0 14.514345 9.45 0.4615 59945.0 0.0 \n", + "1 338.406046 11.16 0.1356 59945.0 0.0 \n", + "2 83.688834 12.40 0.1162 59945.0 0.0 \n", + "3 15.816629 12.60 0.2447 59945.0 0.0 \n", + "4 117.375359 12.90 0.2592 59945.0 0.0 " + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "21f6c17e-a521-455d-82c3-0f6aeea7df77", + "metadata": {}, + "outputs": [], + "source": [ + "kep=df.iloc[:,1:6]\n", + "y=df.iloc[:,-3]\n", + "X=kep.to_numpy()\n", + "y=y.to_numpy()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "505356c7-da2b-4929-b65b-f775f835cc5a", + "metadata": {}, + "outputs": [], + "source": [ + "#Split the data into training and test\n", + "X_train, X_test, y_train, y_test = train_test_split(X,y, train_size=750000)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "9458e17f-873a-4355-964b-6c162eebd71e", + "metadata": {}, + "outputs": [], + "source": [ + "df_train=pd.DataFrame(X_train, columns=['a','e','i','om','w'])\n", + "df_test=pd.DataFrame(X_test, columns=['a','e','i','om','w'])\n", + "ydf_train=pd.DataFrame(y_train, columns=['MOID'])\n", + "ydf_test=pd.DataFrame(y_test,columns=['MOID'])" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "32d4bbfb-26fa-4add-8246-e1c267667b28", + "metadata": {}, + "outputs": [], + "source": [ + "#Comparison of some statistical measures between training and test set \n", + "A_train=df_train.describe()\n", + "A_test=df_test.describe()\n", + "B_train=ydf_train.describe()\n", + "B_test=ydf_test.describe()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "af994684-c4b9-461f-8c0e-e13e0cd9b909", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
aeiomw
mean0.002937-0.0006070.0279880.4203020.343676
std-0.0014720.0004030.064839-0.2270660.136723
min-0.000002-0.001717-0.049321-0.000011-0.023646
25%0.005710-0.0008320.0164891.2289610.372439
50%0.009029-0.0000210.0668470.2063800.186781
75%0.000243-0.000705-0.010827-0.0185150.263608
max0.0270820.0002223.5847050.0013420.022134
\n", + "
" + ], + "text/plain": [ + " a e i om w\n", + "mean 0.002937 -0.000607 0.027988 0.420302 0.343676\n", + "std -0.001472 0.000403 0.064839 -0.227066 0.136723\n", + "min -0.000002 -0.001717 -0.049321 -0.000011 -0.023646\n", + "25% 0.005710 -0.000832 0.016489 1.228961 0.372439\n", + "50% 0.009029 -0.000021 0.066847 0.206380 0.186781\n", + "75% 0.000243 -0.000705 -0.010827 -0.018515 0.263608\n", + "max 0.027082 0.000222 3.584705 0.001342 0.022134" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A_train.iloc[1:,:]-A_test.iloc[1:,:] \n", + "#the first row of the describe method is the count of objects, so we ignore it" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "17336f68-0547-40f9-a003-a86422fa899e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sns.heatmap(np.absolute(A_train.iloc[1:,:]-A_test.iloc[1:,:]),annot=True,cmap='Blues')" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "2f5fcc38-f866-4350-b5d1-ba27914a505b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
MOID
mean0.000081
std-0.000106
min0.000000
25%0.000000
50%0.000600
75%0.000700
max0.099600
\n", + "
" + ], + "text/plain": [ + " MOID\n", + "mean 0.000081\n", + "std -0.000106\n", + "min 0.000000\n", + "25% 0.000000\n", + "50% 0.000600\n", + "75% 0.000700\n", + "max 0.099600" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "B_train.iloc[1:,:]-B_test.iloc[1:,:]" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "62315497-b84c-4466-a35c-042144607977", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sns.heatmap(np.absolute(B_train.iloc[1:,:]-B_test.iloc[1:,:]),annot=True, cmap='Blues')" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "dfeb6da7-8916-4bf2-9e1e-8e912ced27e4", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a : distance: 0.004706798228196085 p-value: 0.2274892259071406\n", + "e : distance: 0.0034702911257064317 p-value: 0.5959712249062891\n", + "i : distance: 0.001685299119189354 p-value: 0.9990253593864518\n", + "om : distance: 0.004452073316022598 p-value: 0.2855013975223749\n", + "w : distance: 0.0037016791405732885 p-value: 0.5122989577027215\n" + ] + } + ], + "source": [ + "#Perform the Kolmogorov-Smirnov two-sample test to check that the training and test set are drawn from the same distributions\n", + "#The null hypothesis is that the distributions are the same\n", + "#We choose a confidence level of 99%, that is we will reject the null hypothesis in favour of the alternative if the p-value is less than 0.01\n", + "#First compute the KS test statistic and the p-value for all the variables a,e,i,om,w,MOID \n", + "distances=list(map(lambda i:\n", + " ks_2samp(df_train.iloc[:,i],df_test.iloc[:,i]).statistic, \n", + " range(df_train.shape[1])))\n", + "pvalues=list(map(lambda i:\n", + " ks_2samp(df_train.iloc[:,i],df_test.iloc[:,i]).pvalue,\n", + " range(df_train.shape[1])))\n", + "\n", + "for i in range(df_train.shape[1]):\n", + " print(df_train.columns[i], \": distance:\", distances[i], \"p-value: \", pvalues[i])" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "5675a84e-9960-440b-af30-188b39c29c3d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "MOID statistic 0.0029887162568097425\n" + ] + } + ], + "source": [ + "print(\"MOID statistic\",ks_2samp(ydf_train.loc[:,'MOID'],ydf_test.loc[:,'MOID']).statistic)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "120d7bfb-620f-42f2-8515-60dc802b8e4b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "MOID p-value 0.7731305746585694\n" + ] + } + ], + "source": [ + "print(\"MOID p-value\",ks_2samp(ydf_train.loc[:,'MOID'],ydf_test.loc[:,'MOID']).pvalue)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b666430a-ce44-426e-84d1-ef54d56ba2fb", + "metadata": {}, + "outputs": [], + "source": [ + "#Since the p-values are all greater than the threshold alpha=0.01, we cannot reject the null hypothesis. \n", + "#Thus, it is likely that the two datasets are drawn from the same distribution (there is no evidence in favour of the alternative hypothesis)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "147defd4-1659-45f8-8a08-bf95049889e3", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/unipi/v.vichi3/miniconda3/envs/py39/lib/python3.9/site-packages/seaborn/_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n", + " with pd.option_context('mode.use_inf_as_na', True):\n", + "/home/unipi/v.vichi3/miniconda3/envs/py39/lib/python3.9/site-packages/seaborn/_oldcore.py:1075: FutureWarning: When grouping with a length-1 list-like, you will need to pass a length-1 tuple to get_group in a future version of pandas. Pass `(name,)` instead of `name` to silence this warning.\n", + " data_subset = grouped_data.get_group(pd_key)\n", + "/home/unipi/v.vichi3/miniconda3/envs/py39/lib/python3.9/site-packages/seaborn/_oldcore.py:1075: FutureWarning: When grouping with a length-1 list-like, you will need to pass a length-1 tuple to get_group in a future version of pandas. Pass `(name,)` instead of `name` to silence this warning.\n", + " data_subset = grouped_data.get_group(pd_key)\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#Plot, as an example, the ECDFs for the variable a for both datasets\n", + "feature_name='a'\n", + "dataframe=pd.DataFrame({\n", + "feature_name: np.concatenate((df_train.loc[:,feature_name],df_test.loc[:,feature_name])),\n", + " 'set': ['training']*df_train.shape[0]+['test']*df_test.shape[0]\n", + "})\n", + "sns.ecdfplot(data=dataframe, x=feature_name, hue='set')" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "c504c1d7-b968-4cec-b69a-f296511fb5fa", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/unipi/v.vichi3/miniconda3/envs/py39/lib/python3.9/site-packages/seaborn/_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n", + " with pd.option_context('mode.use_inf_as_na', True):\n", + "/home/unipi/v.vichi3/miniconda3/envs/py39/lib/python3.9/site-packages/seaborn/_oldcore.py:1075: FutureWarning: When grouping with a length-1 list-like, you will need to pass a length-1 tuple to get_group in a future version of pandas. Pass `(name,)` instead of `name` to silence this warning.\n", + " data_subset = grouped_data.get_group(pd_key)\n", + "/home/unipi/v.vichi3/miniconda3/envs/py39/lib/python3.9/site-packages/seaborn/_oldcore.py:1075: FutureWarning: When grouping with a length-1 list-like, you will need to pass a length-1 tuple to get_group in a future version of pandas. Pass `(name,)` instead of `name` to silence this warning.\n", + " data_subset = grouped_data.get_group(pd_key)\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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6NGjzb1795pvv/226ePjY3788cclnNzzFXTbjB492nz++efNbdu2mfv37zcnT55s+vj4mDt37izh5J6voNvmorNnz5p169Y1u3btajZr1qxkwnqZwmybO+64w2zdurUZFRVlHj582Ny6dau5adOmEkztHQq6bTZs2GDabDbztddeM2NiYswNGzaYN9xwg9m7d+8STu4eVG4KoFWrVuaIESNyzbv++uvNSZMm5bv8448/bl5//fW55v3jH/8wb7755mLL6K0Kum3y06hRI3P69OlFHc3rFXbb9OvXz3zyySfNadOmqdwUk4Jum6+++soMDg42T506VRLxvFpBt82LL75o1q1bN9e8WbNmmTVr1iy2jO5Mu6WuUkZGBjt27KBr16655nft2pXNmzfnu86WLVvyLN+tWze2b99OZmZmsWX1NoXZNn+WnZ1NSkoKFStWLI6IXquw22bhwoUcOnSIadOmFXdEr1WYbbNs2TJatmzJCy+8QI0aNWjYsCHjx4/nwoULJRHZaxRm27Rt25Zff/2VFStWYJomJ06c4OOPP6Znz54lEdntWH5X8NIiMTERp9OZ56aeoaGheW7meVF8fHy+y2dlZZGYmEi1atWKLa83Kcy2+bOXX36Z8+fP07dv3+KI6LUKs20OHDjApEmT2LBhAw6H/kQVl8Jsm5iYGDZu3Ii/vz+ffvopiYmJjBw5ktOnT+u4myJUmG3Ttm1bFi9eTL9+/UhLSyMrK4s77riD2bNnl0Rkt6ORmwIyDCPXY9M088y70vL5zZdrV9Btc9EHH3zA008/zZIlS6hSpUpxxfNqV7ttnE4n99xzD9OnT6dhw4YlFc+rFeT3Jjs7G8MwWLx4Ma1ataJHjx688sorLFq0SKM3xaAg22bv3r2MGjWKqVOnsmPHDlauXMnhw4dd92r0Nvpn0VWqVKkSdrs9T2tOSEjI064vqlq1ar7LOxwOQkJCii2rtynMtrloyZIlDBs2jI8++ojOnTsXZ0yvVNBtk5KSwvbt29m1axePPPIIkPOFapomDoeD1atXc9ttt5VIdk9XmN+batWqUaNGDYKDg13zIiIiME2TX3/9lQYNGhRrZm9RmG0zc+ZM2rVrx4QJEwBo2rQpZcqUoX379jz77LNet6dAIzdXydfXl8jISKKionLNj4qKom3btvmu06ZNmzzLr169mpYtW+Lj41NsWb1NYbYN5IzYDBkyhPfff99r90sXt4Jum6CgIH788Ud2797t+hkxYgTXXXcdu3fvpnXr1iUV3eMV5vemXbt2HD9+nHPnzrnm7d+/H5vNRs2aNYs1rzcpzLZJTU3FZsv9lW6324Hf9xh4FauOZC6NLp6aN3/+fHPv3r3mmDFjzDJlyphHjhwxTdM0J02aZA4cONC1/MVTwceOHWvu3bvXnD9/vk4FLyYF3Tbvv/++6XA4zNdff92Mi4tz/Zw9e9aqj+CxCrpt/kxnSxWfgm6blJQUs2bNmubf//53c8+ePea6devMBg0amA888IBVH8FjFXTbLFy40HQ4HObcuXPNQ4cOmRs3bjRbtmxptmrVyqqPYCmVmwJ6/fXXzbCwMNPX19ds0aKFuW7dOtdzgwcPNm+99dZcy69du9a88cYbTV9fX7NOnTrmvHnzSjix9yjItrn11ltNIM/P4MGDSz64Fyjo780fqdwUr4Jum+joaLNz585mQECAWbNmTXPcuHFmampqCaf2DgXdNrNmzTIbNWpkBgQEmNWqVTPvvfde89dffy3h1O7BME1vHK8SERERT6VjbkRERMSjqNyIiIiIR1G5EREREY+iciMiIiIeReVGREREPIrKjYiIiHgUlRsRERHxKCo3IiIi4lFUbkTEbQwZMgTDMPK9k/HIkSMxDIMhQ4a45h09epRhw4ZRvXp1fH19CQsLY/To0Zw6dSrXuh06dGDMmDG5HhuGgWEY+Pn5UaNGDXr16sXSpUuL66OJSAlSuRERt1KrVi0+/PBDLly44JqXlpbGBx98QO3atV3zYmJiaNmyJfv37+eDDz7g4MGDvPHGG3z99de0adOG06dPX/Z9hg8fTlxcHAcPHuSTTz6hUaNG9O/fnwcffLDYPpuIlAyH1QFERP6oRYsWxMTEsHTpUu69914Ali5dSq1atahbt65ruYcffhhfX19Wr15NQEAAALVr1+bGG2+kXr16TJkyhXnz5l3yfQIDA6latSqQU6huvvlmrr/+eoYOHUrfvn3p3LlzMX5KESlOGrkREbdz//33s3DhQtfjBQsWMHToUNfj06dPs2rVKkaOHOkqNhdVrVqVe++9lyVLllDQW+cNHjyYChUqaPeUSCmnciMibmfgwIFs3LiRI0eO8Msvv7Bp0ybuu+8+1/MHDhzANE0iIiLyXT8iIoIzZ85w8uTJAr2vzWajYcOGHDly5Frii4jFtFtKRNxOpUqV6NmzJ++++y6madKzZ08qVap01etfHLExDKPA722aZqHWExH3oZEbEXFLQ4cOZdGiRbz77ru5dkkB1K9fH8Mw2Lt3b77r7tu3jwoVKhSoEAE4nU4OHDhAeHh4oXOLiPVUbkTELd1+++1kZGSQkZFBt27dcj0XEhJCly5dmDt3bq6zqgDi4+NZvHgx/fr1K/AIzLvvvsuZM2e46667rjm/iFhH5UZE3JLdbic6Opro6Gjsdnue5+fMmUN6ejrdunVj/fr1HD16lJUrV9KlSxdq1KjBP//5z8u+fmpqKvHx8fz6669s3bqViRMnMmLECB566CE6duxYXB9LREqAyo2IuK2goCCCgoLyfa5BgwZs376devXq0a9fP+rVq8eDDz5Ix44d2bJlCxUrVrzsa7/99ttUq1aNevXq0adPH/bu3cuSJUuYO3ducXwUESlBhlnQcyVFRERE3JhGbkRERMSjqNyIiIiIR1G5EREREY+iciMiIiIeReVGREREPIrKjYiIiHgUlRsRERHxKCo3IiIi4lFUbkRERMSjqNyIiIiIR1G5EREREY+iciMiIiIe5f8Bt/MoM9Ln9LIAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#And for the MOID\n", + "feature_name='MOID'\n", + "dataframe=pd.DataFrame({\n", + "feature_name: np.concatenate((ydf_train.loc[:,feature_name],ydf_test.loc[:,feature_name])),\n", + " 'set': ['training']*ydf_train.shape[0]+['test']*ydf_test.shape[0]\n", + "})\n", + "sns.ecdfplot(data=dataframe, x=feature_name, hue='set')" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "7d572c0d-7c08-4968-956a-b0bed21bbf63", + "metadata": {}, + "outputs": [], + "source": [ + "#Finally, extract the validation set from the training set\n", + "X_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size=0.2)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "115562d0-3da6-4872-a251-82ecb7a0ea76", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Size of training set: 600000\n", + "Size of validation set: 150000\n", + "Size of test set: 52376\n" + ] + } + ], + "source": [ + "print(\"Size of training set:\",X_train.shape[0])\n", + "print(\"Size of validation set:\", X_val.shape[0])\n", + "print(\"Size of test set:\", X_test.shape[0])" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "5bdc5d56-6917-4d79-b80f-6e746ad9bd3d", + "metadata": {}, + "outputs": [], + "source": [ + "#Save the split dataset for future use\n", + "np.save('/home/unipi/v.vichi3/Desktop/X_train', X_train)\n", + "np.save('/home/unipi/v.vichi3/Desktop/X_val', X_val)\n", + "np.save('/home/unipi/v.vichi3/Desktop/X_test', X_test)\n", + "np.save('/home/unipi/v.vichi3/Desktop/y_train', y_train)\n", + "np.save('/home/unipi/v.vichi3/Desktop/y_val', y_val)\n", + "np.save('/home/unipi/v.vichi3/Desktop/y_test', y_test)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.9.19" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}