{ "cells": [ { "cell_type": "markdown", "id": "c46a6957", "metadata": {}, "source": [ "#### Importing important libraries" ] }, { "cell_type": "code", "execution_count": 1, "id": "8e218c1e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Collecting skops\n", " Obtaining dependency information for skops from https://files.pythonhosted.org/packages/fd/fd/8ee9d18fa13118f4230766cc31fe66846928eca1713b1907ffd61fa86ed3/skops-0.9.0-py3-none-any.whl.metadata\n", " Downloading skops-0.9.0-py3-none-any.whl.metadata (5.9 kB)\n", "Requirement already satisfied: scikit-learn>=0.24 in c:\\users\\dell\\anaconda3\\lib\\site-packages (from skops) (1.3.0)\n", "Requirement already satisfied: huggingface-hub>=0.17.0 in c:\\users\\dell\\anaconda3\\lib\\site-packages (from skops) (0.20.2)\n", "Requirement already satisfied: tabulate>=0.8.8 in c:\\users\\dell\\anaconda3\\lib\\site-packages (from skops) (0.8.10)\n", "Requirement already satisfied: packaging>=17.0 in c:\\users\\dell\\anaconda3\\lib\\site-packages (from skops) (23.1)\n", "Requirement already satisfied: filelock in c:\\users\\dell\\anaconda3\\lib\\site-packages (from huggingface-hub>=0.17.0->skops) (3.9.0)\n", "Requirement already satisfied: fsspec>=2023.5.0 in c:\\users\\dell\\anaconda3\\lib\\site-packages (from huggingface-hub>=0.17.0->skops) (2023.12.2)\n", "Requirement already satisfied: requests in c:\\users\\dell\\anaconda3\\lib\\site-packages (from huggingface-hub>=0.17.0->skops) (2.31.0)\n", "Requirement already satisfied: tqdm>=4.42.1 in c:\\users\\dell\\anaconda3\\lib\\site-packages (from huggingface-hub>=0.17.0->skops) (4.65.0)\n", "Requirement already satisfied: pyyaml>=5.1 in c:\\users\\dell\\anaconda3\\lib\\site-packages (from huggingface-hub>=0.17.0->skops) (6.0)\n", "Requirement already satisfied: typing-extensions>=3.7.4.3 in c:\\users\\dell\\anaconda3\\lib\\site-packages (from huggingface-hub>=0.17.0->skops) (4.9.0)\n", "Requirement already satisfied: numpy>=1.17.3 in c:\\users\\dell\\anaconda3\\lib\\site-packages (from scikit-learn>=0.24->skops) (1.24.3)\n", "Requirement already satisfied: scipy>=1.5.0 in c:\\users\\dell\\anaconda3\\lib\\site-packages (from scikit-learn>=0.24->skops) (1.11.1)\n", "Requirement already satisfied: joblib>=1.1.1 in c:\\users\\dell\\anaconda3\\lib\\site-packages (from scikit-learn>=0.24->skops) (1.2.0)\n", "Requirement already satisfied: threadpoolctl>=2.0.0 in c:\\users\\dell\\anaconda3\\lib\\site-packages (from scikit-learn>=0.24->skops) (2.2.0)\n", "Requirement already satisfied: colorama in c:\\users\\dell\\anaconda3\\lib\\site-packages (from tqdm>=4.42.1->huggingface-hub>=0.17.0->skops) (0.4.6)\n", "Requirement already satisfied: charset-normalizer<4,>=2 in c:\\users\\dell\\anaconda3\\lib\\site-packages (from requests->huggingface-hub>=0.17.0->skops) (2.0.4)\n", "Requirement already satisfied: idna<4,>=2.5 in c:\\users\\dell\\anaconda3\\lib\\site-packages (from requests->huggingface-hub>=0.17.0->skops) (3.4)\n", "Requirement already satisfied: urllib3<3,>=1.21.1 in c:\\users\\dell\\anaconda3\\lib\\site-packages (from requests->huggingface-hub>=0.17.0->skops) (1.26.16)\n", "Requirement already satisfied: certifi>=2017.4.17 in c:\\users\\dell\\anaconda3\\lib\\site-packages (from requests->huggingface-hub>=0.17.0->skops) (2023.7.22)\n", "Downloading skops-0.9.0-py3-none-any.whl (120 kB)\n", " ---------------------------------------- 0.0/120.7 kB ? eta -:--:--\n", " --- ------------------------------------ 10.2/120.7 kB ? eta -:--:--\n", " ------------- ------------------------- 41.0/120.7 kB 991.0 kB/s eta 0:00:01\n", " ---------------------------------------- 120.7/120.7 kB 1.4 MB/s eta 0:00:00\n", "Installing collected packages: skops\n", "Successfully installed skops-0.9.0\n", "Note: you may need to restart the kernel to use updated packages.\n" ] } ], "source": [ "pip install skops" ] }, { "cell_type": "code", "execution_count": 2, "id": "57b72b5c", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "import os\n", "import librosa\n", "import skops.io as sio\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "id": "b8e1283b", "metadata": {}, "source": [ "#### Importing the dataset" ] }, { "cell_type": "code", "execution_count": 2, "id": "bfde13e5", "metadata": {}, "outputs": [], "source": [ "df_valid_train = pd.read_csv('cv-valid-train.csv')\n", "df_valid_test = pd.read_csv('cv-valid-test.csv')\n", "df_valid_dev = pd.read_csv('cv-valid-dev.csv')\n", "\n", "df_other_train = pd.read_csv('cv-valid-train.csv')\n", "df_other_test = pd.read_csv('cv-valid-test.csv')\n", "df_other_dev = pd.read_csv('cv-valid-dev.csv')\n", "\n", "df_invalid = pd.read_csv('cv-invalid.csv')" ] }, { "cell_type": "code", "execution_count": 3, "id": "830b20a3", "metadata": {}, "outputs": [], "source": [ "### Concatenating the dataframes\n", "df = pd.concat([df_valid_train,df_valid_test,df_valid_dev,df_other_train,df_other_test,df_other_dev,df_invalid])" ] }, { "cell_type": "code", "execution_count": 4, "id": "96d2684b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "### Checking for the missing values\n", "plt.figure(figsize=(12,6))\n", "sns.heatmap(df.isnull())" ] }, { "cell_type": "code", "execution_count": 5, "id": "e77a1c36", "metadata": {}, "outputs": [], "source": [ "### dropping the column because of the missing values\n", "df = df.drop('duration',axis=1)" ] }, { "cell_type": "code", "execution_count": 6, "id": "7903426d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(433097, 7)\n", "(136525, 7)\n" ] } ], "source": [ "print(df.shape)\n", "df = df.dropna()\n", "print(df.shape)" ] }, { "cell_type": "code", "execution_count": 7, "id": "13b907b6", "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", "
filenametextup_votesdown_votesagegenderaccent
5cv-valid-train/sample-000005.mp3a shepherd may like to travel but he should ne...10twentiesfemaleus
8cv-valid-train/sample-000008.mp3put jackie right on the staff30seventiesmaleus
13cv-valid-train/sample-000013.mp3but he had found a guide and didn't want to mi...10thirtiesfemaleus
14cv-valid-train/sample-000014.mp3as they began to decorate the hallway a silhou...10sixtiesmaleengland
19cv-valid-train/sample-000019.mp3then they got ahold of some dough and went goofy10fiftiesmaleaustralia
\n", "
" ], "text/plain": [ " filename \\\n", "5 cv-valid-train/sample-000005.mp3 \n", "8 cv-valid-train/sample-000008.mp3 \n", "13 cv-valid-train/sample-000013.mp3 \n", "14 cv-valid-train/sample-000014.mp3 \n", "19 cv-valid-train/sample-000019.mp3 \n", "\n", " text up_votes down_votes \\\n", "5 a shepherd may like to travel but he should ne... 1 0 \n", "8 put jackie right on the staff 3 0 \n", "13 but he had found a guide and didn't want to mi... 1 0 \n", "14 as they began to decorate the hallway a silhou... 1 0 \n", "19 then they got ahold of some dough and went goofy 1 0 \n", "\n", " age gender accent \n", "5 twenties female us \n", "8 seventies male us \n", "13 thirties female us \n", "14 sixties male england \n", "19 fifties male australia " ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "code", "execution_count": 8, "id": "da574ff3", "metadata": {}, "outputs": [], "source": [ "### dropping the columns\n", "df = df.drop(['text','up_votes','down_votes'],axis=1)" ] }, { "cell_type": "code", "execution_count": 9, "id": "087bbb10", "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", "
filenameagegenderaccent
5cv-valid-train/sample-000005.mp3twentiesfemaleus
8cv-valid-train/sample-000008.mp3seventiesmaleus
13cv-valid-train/sample-000013.mp3thirtiesfemaleus
14cv-valid-train/sample-000014.mp3sixtiesmaleengland
19cv-valid-train/sample-000019.mp3fiftiesmaleaustralia
\n", "
" ], "text/plain": [ " filename age gender accent\n", "5 cv-valid-train/sample-000005.mp3 twenties female us\n", "8 cv-valid-train/sample-000008.mp3 seventies male us\n", "13 cv-valid-train/sample-000013.mp3 thirties female us\n", "14 cv-valid-train/sample-000014.mp3 sixties male england\n", "19 cv-valid-train/sample-000019.mp3 fifties male australia" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "code", "execution_count": 10, "id": "835148a8", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "male 99194\n", "female 35746\n", "other 1585\n", "Name: gender, dtype: int64" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['gender'].value_counts()" ] }, { "cell_type": "code", "execution_count": 13, "id": "34db866b", "metadata": {}, "outputs": [], "source": [ "### Removing the observations with other gender due to the underbalance \n", "index = list(df[df['gender']=='other'].index)\n", "\n", "df = df.drop(index)\n", "### resetting the index\n", "df = df.reset_index()\n", "df = df.drop('index', axis = 1)" ] }, { "cell_type": "code", "execution_count": 19, "id": "6d31096c", "metadata": { "scrolled": false }, "outputs": [], "source": [ "### Function to change the filename according to the path\n", "def func(fileName):\n", " \n", " fileName = fileName.replace('/','\\\\')\n", " fileName = 'C:\\\\Users\\\\Dell\\\\Desktop\\\\Audio Recognition Project\\\\' + fileName\n", " return fileName" ] }, { "cell_type": "code", "execution_count": 20, "id": "e4a07ec5", "metadata": {}, "outputs": [], "source": [ "df['filename'] = df['filename'].apply(lambda x:func(x))" ] }, { "cell_type": "code", "execution_count": 21, "id": "1d770fe7", "metadata": {}, "outputs": [], "source": [ "df = df.drop_duplicates(subset=['filename'])" ] }, { "cell_type": "code", "execution_count": 22, "id": "40891fa5", "metadata": {}, "outputs": [], "source": [ "### moving all the files relevant to us to the same folder\n", "def moving(fileName):\n", " \n", " source = fileName\n", " index_m = source.index('m')\n", " index_v = source.index('v')\n", " fileName = fileName[index_v-1:index_m-3] + '_' + fileName[index_m-2:]\n", " destination = 'C:\\\\Users\\\\Dell\\\\Desktop\\\\Audio Recognition Project\\\\Final Destination\\\\' + fileName\n", " os.rename(source,destination)" ] }, { "cell_type": "code", "execution_count": 27, "id": "942b4842", "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "for i in range(len(df_invalid)):\n", " moving(df['filename'][i])" ] }, { "cell_type": "code", "execution_count": 60, "id": "34d18ca5", "metadata": {}, "outputs": [], "source": [ "### Saving the dataset\n", "df.to_csv('metadata.csv')" ] }, { "cell_type": "code", "execution_count": 2, "id": "0f07952d", "metadata": {}, "outputs": [], "source": [ "df = pd.read_csv('metadata.csv')" ] }, { "cell_type": "markdown", "id": "984e68d9", "metadata": {}, "source": [ "##### converting the audio files to array's" ] }, { "cell_type": "code", "execution_count": 28, "id": "ab9bfd1d", "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", "
filenameagegenderaccent
0C:\\Users\\Dell\\Desktop\\Audio Recognition Projec...twentiesfemaleus
1C:\\Users\\Dell\\Desktop\\Audio Recognition Projec...seventiesmaleus
2C:\\Users\\Dell\\Desktop\\Audio Recognition Projec...thirtiesfemaleus
3C:\\Users\\Dell\\Desktop\\Audio Recognition Projec...sixtiesmaleengland
4C:\\Users\\Dell\\Desktop\\Audio Recognition Projec...fiftiesmaleaustralia
\n", "
" ], "text/plain": [ " filename age gender \\\n", "0 C:\\Users\\Dell\\Desktop\\Audio Recognition Projec... twenties female \n", "1 C:\\Users\\Dell\\Desktop\\Audio Recognition Projec... seventies male \n", "2 C:\\Users\\Dell\\Desktop\\Audio Recognition Projec... thirties female \n", "3 C:\\Users\\Dell\\Desktop\\Audio Recognition Projec... sixties male \n", "4 C:\\Users\\Dell\\Desktop\\Audio Recognition Projec... fifties male \n", "\n", " accent \n", "0 us \n", "1 us \n", "2 us \n", "3 england \n", "4 australia " ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "code", "execution_count": 29, "id": "e970b484", "metadata": {}, "outputs": [], "source": [ "### Changing the filenames to filepaths with all the files in the same folder\n", "def filename_change(fileName):\n", " \n", " index = fileName.index('v')\n", " name = fileName[index-1:].replace('\\\\','_')[:-3] + 'wav'\n", " filename = 'C:\\\\Users\\\\Dell\\\\Desktop\\\\Audio Recognition Project\\\\Common Voice WAV\\\\' + name\n", " return filename" ] }, { "cell_type": "code", "execution_count": 30, "id": "13380b8e", "metadata": {}, "outputs": [], "source": [ "df['filename'] = df['filename'].apply(lambda x:filename_change(x))" ] }, { "cell_type": "code", "execution_count": 35, "id": "0b5ea468", "metadata": {}, "outputs": [], "source": [ "df = df.reset_index()\n", "df = df.drop('index',axis=1)" ] }, { "cell_type": "code", "execution_count": 36, "id": "4f2019e9", "metadata": {}, "outputs": [], "source": [ "df.to_csv('metadata_final.csv',index=False)" ] }, { "cell_type": "markdown", "id": "d3bd2e8f", "metadata": {}, "source": [ "#### Feature Extraction" ] }, { "cell_type": "code", "execution_count": 4, "id": "cf8fc8c3", "metadata": {}, "outputs": [], "source": [ "df = pd.read_csv('metadata_final.csv')" ] }, { "cell_type": "code", "execution_count": 18, "id": "c865bef6", "metadata": {}, "outputs": [], "source": [ "### extract the features from the audio files using mfcc\n", "def feature_extracter(fileName):\n", " audio,sample_rate = librosa.load(fileName,res_type='kaiser_fast')\n", " mfcc_features = librosa.feature.mfcc(y=audio,sr=sample_rate,n_mfcc=30)\n", " mfccs_scaled_features = np.mean(mfcc_features.T, axis=0)\n", " \n", " return list(mfccs_scaled_features)" ] }, { "cell_type": "code", "execution_count": 19, "id": "33225037", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "128" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(feature_extracter('C:\\\\Users\\\\Dell\\\\Desktop\\\\Audio Recognition Project\\\\Common Voice WAV\\\\cv-valid-train_sample-000005.wav'))" ] }, { "cell_type": "code", "execution_count": 7, "id": "a9d13e6c", "metadata": {}, "outputs": [], "source": [ "feature_extraction_dataset = []" ] }, { "cell_type": "code", "execution_count": null, "id": "06543e76", "metadata": {}, "outputs": [], "source": [ "for i in range(len(df)):\n", " data = feature_extracter(df['filename'][i])\n", " data.append(df['age'][i])\n", " data.append(df['gender'][i])\n", " data.append(df['accent'][i])\n", " feature_extraction_dataset.append(data)\n", " #print(\"{} files completed\".format(i))" ] }, { "cell_type": "code", "execution_count": 9, "id": "0faa3c6a", "metadata": {}, "outputs": [], "source": [ "### converting the list to dataframe\n", "feature_extraction_dataset = pd.DataFrame(feature_extraction_dataset)" ] }, { "cell_type": "code", "execution_count": 11, "id": "a7f242fa", "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", " \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", " \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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0123456789...121122123124125126127128129130
0-583.109741100.3704530.94325448.706886-10.5407710.412921-18.057110-8.326262-1.521947-12.522870...-0.192631-0.3155640.343298-0.4024660.258311-0.2967830.058532twentiesfemaleus
1-394.04379399.290733-38.35684636.20208713.018510-0.332277-30.521049-24.611736-20.024382-8.018195...-0.181873-0.617222-0.2033000.0660650.179560-0.0358150.082535seventiesmaleus
2-329.92706389.804878-93.25531853.524906-14.073633-17.782843-30.973644-11.1152971.704327-15.689195...-0.064750-0.1546700.1440960.3408310.3978980.183917-0.035574thirtiesfemaleus
3-544.49835280.18797311.45608926.1494988.8674084.068777-5.959950-0.991863-5.118737-1.111087...-0.293615-0.154340-0.152312-0.136096-0.248668-0.185580-0.021339sixtiesmaleengland
4-265.772156105.1039359.27538827.4940171.30829328.853981-11.55351419.866306-9.07240516.467325...-0.064412-0.548103-0.691253-0.090602-0.078694-0.036180-0.491893fiftiesmaleaustralia
..................................................................
69900-376.485321119.770882-0.66136810.84285411.8847364.8079470.22187714.571591-7.1060678.881387...-0.514412-0.4191680.3862080.013728-0.990892-0.474937-0.042218teensmaleus
69901-1131.3709720.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.000000...0.0000000.0000000.0000000.0000000.0000000.0000000.000000sixtiesmaleus
69902-265.763916114.194046-22.39389023.325445-6.32488214.880446-5.5503218.608303-9.4894394.931038...-1.028494-0.561055-0.638143-0.282054-0.419412-0.1933800.354584twentiesmaleindian
69903-494.44854756.549568-10.6774886.895159-0.0684892.941504-14.5314702.231544-4.246867-1.574609...0.2368070.8816890.132002-0.2148250.1432240.034405-0.521862sixtiesfemaleus
69904-461.47467045.163513-45.25056137.988201-2.061493-11.344541-11.8620062.977398-10.133149-1.859840...0.3415810.2535530.186000-0.0788740.1106010.0187720.275380fourtiesmaleaustralia
\n", "

69905 rows × 131 columns

\n", "
" ], "text/plain": [ " 0 1 2 3 4 5 \\\n", "0 -583.109741 100.370453 0.943254 48.706886 -10.540771 0.412921 \n", "1 -394.043793 99.290733 -38.356846 36.202087 13.018510 -0.332277 \n", "2 -329.927063 89.804878 -93.255318 53.524906 -14.073633 -17.782843 \n", "3 -544.498352 80.187973 11.456089 26.149498 8.867408 4.068777 \n", "4 -265.772156 105.103935 9.275388 27.494017 1.308293 28.853981 \n", "... ... ... ... ... ... ... \n", "69900 -376.485321 119.770882 -0.661368 10.842854 11.884736 4.807947 \n", "69901 -1131.370972 0.000000 0.000000 0.000000 0.000000 0.000000 \n", "69902 -265.763916 114.194046 -22.393890 23.325445 -6.324882 14.880446 \n", "69903 -494.448547 56.549568 -10.677488 6.895159 -0.068489 2.941504 \n", "69904 -461.474670 45.163513 -45.250561 37.988201 -2.061493 -11.344541 \n", "\n", " 6 7 8 9 ... 121 122 \\\n", "0 -18.057110 -8.326262 -1.521947 -12.522870 ... -0.192631 -0.315564 \n", "1 -30.521049 -24.611736 -20.024382 -8.018195 ... -0.181873 -0.617222 \n", "2 -30.973644 -11.115297 1.704327 -15.689195 ... -0.064750 -0.154670 \n", "3 -5.959950 -0.991863 -5.118737 -1.111087 ... -0.293615 -0.154340 \n", "4 -11.553514 19.866306 -9.072405 16.467325 ... -0.064412 -0.548103 \n", "... ... ... ... ... ... ... ... \n", "69900 0.221877 14.571591 -7.106067 8.881387 ... -0.514412 -0.419168 \n", "69901 0.000000 0.000000 0.000000 0.000000 ... 0.000000 0.000000 \n", "69902 -5.550321 8.608303 -9.489439 4.931038 ... -1.028494 -0.561055 \n", "69903 -14.531470 2.231544 -4.246867 -1.574609 ... 0.236807 0.881689 \n", "69904 -11.862006 2.977398 -10.133149 -1.859840 ... 0.341581 0.253553 \n", "\n", " 123 124 125 126 127 128 129 \\\n", "0 0.343298 -0.402466 0.258311 -0.296783 0.058532 twenties female \n", "1 -0.203300 0.066065 0.179560 -0.035815 0.082535 seventies male \n", "2 0.144096 0.340831 0.397898 0.183917 -0.035574 thirties female \n", "3 -0.152312 -0.136096 -0.248668 -0.185580 -0.021339 sixties male \n", "4 -0.691253 -0.090602 -0.078694 -0.036180 -0.491893 fifties male \n", "... ... ... ... ... ... ... ... \n", "69900 0.386208 0.013728 -0.990892 -0.474937 -0.042218 teens male \n", "69901 0.000000 0.000000 0.000000 0.000000 0.000000 sixties male \n", "69902 -0.638143 -0.282054 -0.419412 -0.193380 0.354584 twenties male \n", "69903 0.132002 -0.214825 0.143224 0.034405 -0.521862 sixties female \n", "69904 0.186000 -0.078874 0.110601 0.018772 0.275380 fourties male \n", "\n", " 130 \n", "0 us \n", "1 us \n", "2 us \n", "3 england \n", "4 australia \n", "... ... \n", "69900 us \n", "69901 us \n", "69902 indian \n", "69903 us \n", "69904 australia \n", "\n", "[69905 rows x 131 columns]" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "feature_extraction_dataset" ] }, { "cell_type": "code", "execution_count": null, "id": "84b1b787", "metadata": {}, "outputs": [], "source": [ "### naming the features for convenience\n", "col_name = []\n", "for i in range(1,31):\n", " col_name.append('Feature_'+str(i))\n", "col_name = col_name + ['age','gender','accent']\n", "feature_extraction_dataset.columns = col_name" ] }, { "cell_type": "code", "execution_count": 9, "id": "a64049e4", "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", " \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", "
Feature_1Feature_2Feature_3Feature_4Feature_5Feature_6Feature_7Feature_8Feature_9Feature_10...Feature_24Feature_25Feature_26Feature_27Feature_28Feature_29Feature_30agegenderaccent
0-583.109741100.3704530.94325548.706882-10.5407710.412921-18.057110-8.326262-1.521946-12.522870...-2.081630-4.345325-5.5432710.867665-2.325722-4.993744-2.170289twentiesfemaleus
1-394.04379399.290733-38.35684636.20208713.018513-0.332277-30.521049-24.611736-20.024382-8.018195...-5.490204-5.979488-5.525753-3.199488-12.2292312.510893-1.527913seventiesmaleus
2-329.92706389.804886-93.25531853.524906-14.073632-17.782843-30.973644-11.1152981.704327-15.689195...-2.942057-3.8995095.903738-2.4959304.2841842.987215-1.986013thirtiesfemaleus
3-544.49829180.18797311.45608926.1494988.8674084.068777-5.959950-0.991863-5.118737-1.111087...-3.014753-1.035969-4.900939-1.521831-3.017688-1.5105142.014324sixtiesmaleengland
4-265.772156105.1039359.27538727.4940171.30829328.853981-11.55351219.866306-9.07240516.467325...1.660018-2.5508891.886928-5.2480731.555064-0.886034-0.406267fiftiesmaleaustralia
\n", "

5 rows × 33 columns

\n", "
" ], "text/plain": [ " Feature_1 Feature_2 Feature_3 Feature_4 Feature_5 Feature_6 \\\n", "0 -583.109741 100.370453 0.943255 48.706882 -10.540771 0.412921 \n", "1 -394.043793 99.290733 -38.356846 36.202087 13.018513 -0.332277 \n", "2 -329.927063 89.804886 -93.255318 53.524906 -14.073632 -17.782843 \n", "3 -544.498291 80.187973 11.456089 26.149498 8.867408 4.068777 \n", "4 -265.772156 105.103935 9.275387 27.494017 1.308293 28.853981 \n", "\n", " Feature_7 Feature_8 Feature_9 Feature_10 ... Feature_24 Feature_25 \\\n", "0 -18.057110 -8.326262 -1.521946 -12.522870 ... -2.081630 -4.345325 \n", "1 -30.521049 -24.611736 -20.024382 -8.018195 ... -5.490204 -5.979488 \n", "2 -30.973644 -11.115298 1.704327 -15.689195 ... -2.942057 -3.899509 \n", "3 -5.959950 -0.991863 -5.118737 -1.111087 ... -3.014753 -1.035969 \n", "4 -11.553512 19.866306 -9.072405 16.467325 ... 1.660018 -2.550889 \n", "\n", " Feature_26 Feature_27 Feature_28 Feature_29 Feature_30 age \\\n", "0 -5.543271 0.867665 -2.325722 -4.993744 -2.170289 twenties \n", "1 -5.525753 -3.199488 -12.229231 2.510893 -1.527913 seventies \n", "2 5.903738 -2.495930 4.284184 2.987215 -1.986013 thirties \n", "3 -4.900939 -1.521831 -3.017688 -1.510514 2.014324 sixties \n", "4 1.886928 -5.248073 1.555064 -0.886034 -0.406267 fifties \n", "\n", " gender accent \n", "0 female us \n", "1 male us \n", "2 female us \n", "3 male england \n", "4 male australia \n", "\n", "[5 rows x 33 columns]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "feature_extraction_dataset.head()" ] }, { "cell_type": "code", "execution_count": 10, "id": "825f9b04", "metadata": {}, "outputs": [], "source": [ "feature_extraction_dataset.to_csv('features_data.csv',index=False)" ] }, { "cell_type": "markdown", "id": "17c41ee7", "metadata": {}, "source": [ "#### Exploratory Data Analysis" ] }, { "cell_type": "code", "execution_count": 24, "id": "d31cc42b", "metadata": {}, "outputs": [], "source": [ "df_features = pd.read_csv('features_data.csv')" ] }, { "cell_type": "code", "execution_count": 25, "id": "21c0fc54", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1 51284\n", "0 18621\n", "Name: male, dtype: int64" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_features['male'].value_counts()" ] }, { "cell_type": "code", "execution_count": 30, "id": "df429429", "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", " \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", "
Feature_1Feature_2Feature_3Feature_4Feature_5Feature_6Feature_7Feature_8Feature_9Feature_10...Feature_30maleage_labelfiftiesfourtiesseventiessixtiesteensthirtiestwenties
0-583.10974100.3704500.94325548.706882-10.5407710.412921-18.057110-8.326262-1.521946-12.522870...-2.170289070000001
1-394.0438099.290730-38.35684636.20208713.018513-0.332277-30.521050-24.611736-20.024382-8.018195...-1.527913130010000
2-329.9270689.804886-93.25532053.524906-14.073632-17.782843-30.973644-11.1152981.704327-15.689195...-1.986013060000010
3-544.4983080.18797011.45608926.1494988.8674084.068777-5.959950-0.991863-5.118737-1.111087...2.014324140001000
4-265.77216105.1039359.27538727.4940171.30829328.853981-11.55351219.866306-9.07240516.467325...-0.406267111000000
\n", "

5 rows × 39 columns

\n", "
" ], "text/plain": [ " Feature_1 Feature_2 Feature_3 Feature_4 Feature_5 Feature_6 \\\n", "0 -583.10974 100.370450 0.943255 48.706882 -10.540771 0.412921 \n", "1 -394.04380 99.290730 -38.356846 36.202087 13.018513 -0.332277 \n", "2 -329.92706 89.804886 -93.255320 53.524906 -14.073632 -17.782843 \n", "3 -544.49830 80.187970 11.456089 26.149498 8.867408 4.068777 \n", "4 -265.77216 105.103935 9.275387 27.494017 1.308293 28.853981 \n", "\n", " Feature_7 Feature_8 Feature_9 Feature_10 ... Feature_30 male \\\n", "0 -18.057110 -8.326262 -1.521946 -12.522870 ... -2.170289 0 \n", "1 -30.521050 -24.611736 -20.024382 -8.018195 ... -1.527913 1 \n", "2 -30.973644 -11.115298 1.704327 -15.689195 ... -1.986013 0 \n", "3 -5.959950 -0.991863 -5.118737 -1.111087 ... 2.014324 1 \n", "4 -11.553512 19.866306 -9.072405 16.467325 ... -0.406267 1 \n", "\n", " age_label fifties fourties seventies sixties teens thirties twenties \n", "0 7 0 0 0 0 0 0 1 \n", "1 3 0 0 1 0 0 0 0 \n", "2 6 0 0 0 0 0 1 0 \n", "3 4 0 0 0 1 0 0 0 \n", "4 1 1 0 0 0 0 0 0 \n", "\n", "[5 rows x 39 columns]" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_features.head()" ] }, { "cell_type": "code", "execution_count": 29, "id": "d7c32d49", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(8,8))\n", "sns.histplot(x='age_label',data=df_features,hue='male')" ] }, { "cell_type": "code", "execution_count": 14, "id": "a4442733", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],\n", " [Text(0, 0, ''),\n", " Text(0, 0, ''),\n", " Text(0, 0, ''),\n", " Text(0, 0, ''),\n", " Text(0, 0, ''),\n", " Text(0, 0, ''),\n", " Text(0, 0, ''),\n", " Text(0, 0, ''),\n", " Text(0, 0, ''),\n", " Text(0, 0, ''),\n", " Text(0, 0, ''),\n", " Text(0, 0, ''),\n", " Text(0, 0, ''),\n", " Text(0, 0, ''),\n", " Text(0, 0, ''),\n", " Text(0, 0, '')])" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAuAAAAIQCAYAAADATNsQAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABV4UlEQVR4nO3de9ylc7n48c81DuN8iEkYDJFzxJConBKlnDaFDkRNTgmdlVLSYW+paFdbW6HoRKFSvw5U267UyLFkRzlMCZ1RZMb1++P6PmZ5ZowZnnWvNTOf9+u1Xs9a91rrWde611r3fd3f+/p+v5GZSJIkSerGuEEHIEmSJC1MTMAlSZKkDpmAS5IkSR0yAZckSZI6ZAIuSZIkdcgEXJIkSerQooMOoGsrr7xyTpo0adBhSJIkaQF35ZVX/jEzJ4xevtAl4JMmTWLq1KmDDkOSJEkLuIi4dXbLLUGRJEmSOmQCLkmSJHXIBFySJEnqUN9qwCNiDeAc4CnAQ8AZmfnRiDgReA1wd3vo8Zl5SXvO24BDgRnA0Zn5/9ryLYGzgCWBS4DXZ2ZGxPj2GlsCfwJempm39Os9SZIkLcwefPBBpk2bxv333z/oUIbKEksswcSJE1lsscXm6vH97IQ5HXhDZv48IpYFroyI77T7PpyZp/Q+OCI2AvYHNgZWA74bEU/LzBnAJ4ApwE+oBHw34JtUsv6XzFw3IvYHPgi8tI/vSZIkaaE1bdo0ll12WSZNmkREDDqcoZCZ/OlPf2LatGmsvfbac/WcvpWgZOYdmfnzdv0e4AZg9Tk8ZU/gC5n5QGb+FrgJ2DoiVgWWy8wfZ2ZSLd579Tzn7Hb9fGDn8NsgSZLUF/fffz8rrbSSyXePiGCllVaap7MCndSAR8Qk4BnAFW3RURFxbUR8OiJWbMtWB27vedq0tmz1dn308kc8JzOnA38DVurHe5AkSRIm37Mxr+uk7wl4RCwDXAAck5l/p8pJngpsDtwBfGjkobN5es5h+ZyeMzqGKRExNSKm3n333bN5iiRJkuZ3Bx98MOeff/6gw3hMfU3AI2IxKvk+NzO/ApCZd2bmjMx8CPgUsHV7+DRgjZ6nTwR+35ZPnM3yRzwnIhYFlgf+PDqOzDwjMydn5uQJE2aZjEiSJEkLoenTpw/kdfuWgLda7DOBGzLz1J7lq/Y8bG/g+nb9YmD/iBgfEWsD6wE/zcw7gHsiYpv2P18JXNTznIPa9X2BS1uduCRJkobYSSedxAYbbMAuu+zCAQccwCmnnMLNN9/MbrvtxpZbbslznvMcfvWrXwHVsn300Uez7bbbss466zzcyp2ZHHXUUWy00Ubsvvvu3HXXXQ///yuvvJLtt9+eLbfckl133ZU77rgDgB122IHjjz+e7bffno9+9KPdv3H6OwrKdsArgOsi4uq27HjggIjYnCoVuQV4LUBm/iIivgT8khpB5cg2AgrA4cwchvCb7QKV4H82Im6iWr737+P7kSRJ0hiYOnUqF1xwAVdddRXTp09niy22YMstt2TKlCl88pOfZL311uOKK67giCOO4NJLLwXgjjvu4PLLL+dXv/oVe+yxB/vuuy9f/epXufHGG7nuuuu488472WijjTjkkEN48MEHed3rXsdFF13EhAkT+OIXv8jb3/52Pv3pTwPw17/+lR/84AcDe/99S8Az83JmX6N9yRyeczJw8myWTwU2mc3y+4H9nkCYkiRJ6tjll1/OnnvuyZJLLgnAi1/8Yu6//35+9KMfsd9+M1O7Bx544OHre+21F+PGjWOjjTbizjvvBOCHP/whBxxwAIsssgirrbYaO+20EwA33ngj119/PbvssgsAM2bMYNVVZxZhvPSlgx21up8t4JIkSdIsZlcx/NBDD7HCCitw9dVXz/Y548ePn+3zZzcCSWay8cYb8+Mf/3i2/2vppZeex4jHllPRS5IkqVPPfvaz+drXvsb999/Pvffeyze+8Q2WWmop1l57bb785S8DlURfc801c/w/z33uc/nCF77AjBkzuOOOO7jssssAWH/99bn77rsfTsAffPBBfvGLX/T3Tc0DE3BJkiR1aquttmKPPfZgs802Y5999mHy5Mksv/zynHvuuZx55plsttlmbLzxxlx00UVz/D9777036623HptuuimHH34422+/PQCLL744559/Pm95y1vYbLPN2HzzzfnRj37UxVubK7GwDRoyefLknDp16qDDkCRJmu/ccMMNbLjhhmPyv+69916WWWYZ/vGPf/Dc5z6XM844gy222GJM/vcgzG7dRMSVmTl59GOtAZckSVLnpkyZwi9/+Uvuv/9+DjrooPk6+Z5XJuCSJEnq3HnnnTfoEAbGGnBJkiSpQybgHZq05kQiYuguk9acOOhVI0mStNCwBKVDt97+O/LS9w06jFnETscPOgRJkqSFhi3gkiRJUodMwCVJkjTfOO2009hwww152cte1pf/f+KJJ3LKKaf05X+PsARFkiRJj8saa67FtNtvG7P/N3GNNbn9tlvn+JiPf/zjfPOb32Tttdces9ftmgm4JEmSHpdpt9/Gqd++ccz+33HPX3+O9x922GH85je/YY899mD//ffn5ptv5rrrrmP69OmceOKJ7Lnnnpx11llceOGFzJgxg+uvv543vOEN/Otf/+Kzn/0s48eP55JLLuFJT3oSn/rUpzjjjDP417/+xbrrrstnP/tZllpqqUe83s0338yRRx7J3XffzVJLLcWnPvUpNthggyf8Pi1BkSRJ0nzhk5/8JKutthqXXXYZ9913HzvttBM/+9nPuOyyy3jTm97EfffdB8D111/Peeedx09/+lPe/va3s9RSS3HVVVfxrGc9i3POOQeAffbZh5/97Gdcc801bLjhhpx55pmzvN6UKVM4/fTTufLKKznllFM44ogjxuR92AIuSZKk+c63v/1tLr744ofrte+//35uu63KYXbccUeWXXZZll12WZZffnle/OIXA7Dpppty7bXXApWkv+Md7+Cvf/0r9957L7vuuusj/v+9997Lj370I/bbb7+Hlz3wwANjErsJuCRJkuY7mckFF1zA+us/smzliiuuYPz48Q/fHjdu3MO3x40bx/Tp0wE4+OCDufDCC9lss80466yz+P73v/+I//PQQw+xwgorcPXVV4957JagSJIkab6z6667cvrpp5OZAFx11VXz9Px77rmHVVddlQcffJBzzz13lvuXW2451l57bb785S8DlfBfc801TzxwTMAlSZI0HzrhhBN48MEHefrTn84mm2zCCSecME/PP+mkk3jmM5/JLrvs8qgdK88991zOPPNMNttsMzbeeGMuuuiisQidGDlqWFhMnjw5p06dOpDXjoihnQlzYfseSJKkeXfDDTew4YYbPnx7EMMQDqvR6wYgIq7MzMmjH2sNuCRJkh6X+TVZHjRLUCRJkqQOmYBLkiRJHTIBlyRJkjpkAi5JkiR1yARckiRJ6pAJuCRJkhYK3//+93nRi1406DBMwCVJkvT4TFpzIhExZpdJa04c9FvqhOOAS5Ik6XG59fbfjekkg7HT8Y/5mFtuuYXddtuNZz/72fzkJz9hs80241WvehXvete7uOuuux6eVv6YY47hn//8J0suuSSf+cxnWH/99R/xf+677z5e97rXcd111zF9+nROPPFE9txzzzF7L3NiC7gkSZLmKzfddBOvf/3rufbaa/nVr37Feeedx+WXX84pp5zC+973PjbYYAN++MMfctVVV/Ge97yH44+fNbE/+eST2WmnnfjZz37GZZddxpve9Cbuu+++TuK3BVySJEnzlbXXXptNN90UgI033pidd96ZiGDTTTfllltu4W9/+xsHHXQQv/71r4kIHnzwwVn+x7e//W0uvvhiTjnlFADuv/9+brvttlmmk+8HE3BJkiTNV8aPH//w9XHjxj18e9y4cUyfPp0TTjiBHXfcka9+9avccsst7LDDDrP8j8zkggsumKU0pQuWoEiSJGmB8re//Y3VV18dgLPOOmu2j9l11105/fTTyUwArrrqqq7CMwGXJEnSguXNb34zb3vb29huu+2YMWPGbB9zwgkn8OCDD/L0pz+dTTbZhBNOOKGz+GIk619YTJ48OadOnTqQ146IMe0pPFZip+NZ2L4HkiRp3t1www2PqJGetOZEbr39d2P2/9daY3VuuW3amP2/Lo1eNwARcWVmTh79WGvAJUmS9LjMr8nyoFmCIkmSJHXIBFySJEnqkAm4JEmS5pr9xmY1r+vEBFySJElzZYklluBPf/qTSXiPzORPf/oTSyyxxFw/x06YkiRJmisTJ05k2rRp3H333YMOZagsscQSTJw4ca4fbwIuSZKkubLYYoux9tprDzqM+Z4lKJIkSVKHTMAlSZKkDpmAS5IkSR0yAZckSZI6ZAIuSZIkdcgEXJIkSeqQCbgkSZLUIRNwSZIkqUMm4JIkSVKHTMAlSZKkDpmAS5IkSR0yAZckSZI6ZAIuSZIkdcgEXJIkSeqQCbgkSZLUIRNwSZIkqUMm4JIkSVKHTMAlSZKkDpmAS5IkSR0yAZckSZI6ZAIuSZIkdcgEXJIkSeqQCbgkSZLUIRNwSZIkqUMm4JIkSVKHTMAlSZKkDpmAS5IkSR0yAZckSZI6ZAIuSZIkdcgEXJIkSeqQCbgkSZLUIRNwSZIkqUMm4JIkSVKHTMAlSZKkDpmAS5IkSR0yAZckSZI61LcEPCLWiIjLIuKGiPhFRLy+LX9SRHwnIn7d/q7Y85y3RcRNEXFjROzas3zLiLiu3XdaRERbPj4ivtiWXxERk/r1fiRJkqSx0M8W8OnAGzJzQ2Ab4MiI2Ah4K/C9zFwP+F67Tbtvf2BjYDfg4xGxSPtfnwCmAOu1y25t+aHAXzJzXeDDwAf7+H4kSZKkJ6xvCXhm3pGZP2/X7wFuAFYH9gTObg87G9irXd8T+EJmPpCZvwVuAraOiFWB5TLzx5mZwDmjnjPyv84Hdh5pHZckSZKGUSc14K005BnAFcAqmXkHVJIOPLk9bHXg9p6nTWvLVm/XRy9/xHMyczrwN2Cl2bz+lIiYGhFT77777jF6V5IkSdK863sCHhHLABcAx2Tm3+f00Nksyzksn9NzHrkg84zMnJyZkydMmPBYIUuSJEl909cEPCIWo5LvczPzK23xna2shPb3rrZ8GrBGz9MnAr9vyyfOZvkjnhMRiwLLA38e+3ciSZIkjY1+joISwJnADZl5as9dFwMHtesHARf1LN+/jWyyNtXZ8qetTOWeiNim/c9XjnrOyP/aF7i01YlLkiRJQ2nRPv7v7YBXANdFxNVt2fHAB4AvRcShwG3AfgCZ+YuI+BLwS2oElSMzc0Z73uHAWcCSwDfbBSrB/2xE3ES1fO/fx/cjSZIkPWF9S8Az83JmX6MNsPOjPOdk4OTZLJ8KbDKb5ffTEnhJkiRpfuBMmJIkSVKHTMAlSZKkDpmAS5IkSR0yAZckSZI6ZAIuSZIkdcgEXJIkSeqQCbgkSZLUIRNwSZIkqUMm4JIkSVKHTMAlSZKkDpmAS5IkSR0yAZckSZI6ZAIuSZIkdcgEXJIkSeqQCbgkSZLUIRNwSZIkqUMm4JIkSVKHTMAlSZKkDpmAS5IkSR0yAZckSZI6ZAIuSZIkdcgEXJIkSeqQCbgkSZLUIRNwSZIkqUMm4JIkSVKHTMAlSZKkDpmAS5IkSR0yAZckSZI6ZAIuSZIkdcgEXJIkSeqQCbgkSZLUIRNwSZIkqUMm4JIkSVKHTMAlSZKkDpmAS5IkSR0yAZckSZI6ZAIuSZIkdcgEXJIkSeqQCbgkSZLUIRNwSZIkqUMm4JIkSVKHTMAlSZKkDpmAS5IkSR0yAZckSZI6ZAIuSZIkdcgEXJIkSeqQCbgkSZLUIRNwSZIkqUMm4JIkSVKHTMAlSZKkDpmAS5IkSR0yAZckSZI6ZAIuSZIkdcgEXJIkSeqQCbgkSZLUIRNwSZIkqUMm4JIkSVKHTMAlSZKkDpmAS5IkSR0yAZckSZI6ZAIuSZIkdcgEXJIkSeqQCbgkSZLUIRNwSZIkqUMm4JIkSVKHTMAlSZKkDpmAS5IkSR0yAZckSZI6ZAIuSZIkdcgEXJIkSeqQCbgkSZLUIRNwSZIkqUMm4JIkSVKHTMAlSZKkDpmAS5IkSR0yAZckSZI61LcEPCI+HRF3RcT1PctOjIjfRcTV7fLCnvveFhE3RcSNEbFrz/ItI+K6dt9pERFt+fiI+GJbfkVETOrXe5EkSZLGSj9bwM8CdpvN8g9n5ubtcglARGwE7A9s3J7z8YhYpD3+E8AUYL12GfmfhwJ/ycx1gQ8DH+zXG5EkSZLGSt8S8Mz8IfDnuXz4nsAXMvOBzPwtcBOwdUSsCiyXmT/OzATOAfbqec7Z7fr5wM4jreOSJEnSsBpEDfhREXFtK1FZsS1bHbi95zHT2rLV2/XRyx/xnMycDvwNWKmfgUuSJElPVNcJ+CeApwKbA3cAH2rLZ9dynXNYPqfnzCIipkTE1IiYevfdd89TwJIkSdJY6jQBz8w7M3NGZj4EfArYut01DVij56ETgd+35RNns/wRz4mIRYHleZSSl8w8IzMnZ+bkCRMmjNXbkSRJkuZZpwl4q+kesTcwMkLKxcD+bWSTtanOlj/NzDuAeyJim1bf/Urgop7nHNSu7wtc2urEJUmSpKG1aL/+cUR8HtgBWDkipgHvAnaIiM2pUpFbgNcCZOYvIuJLwC+B6cCRmTmj/avDqRFVlgS+2S4AZwKfjYibqJbv/fv1XiRJkqSx0rcEPDMPmM3iM+fw+JOBk2ezfCqwyWyW3w/s90RilCRJkrrmTJiSJElSh0zAJUmSpA6ZgEuSJEkdMgGXJEmSOmQCLkmSJHXIBFySJEnqkAm4JEmS1CETcEmSJKlDJuCSJElSh0zAJUmSpA6ZgEuSJEkdMgGXJEmSOmQCLkmSJHXIBFySJEnqkAm4JEmS1CETcEmSJKlDJuCSJElSh0zAJUmSpA6ZgEuSJEkdmqsEPCK2m5tlkiRJkuZsblvAT5/LZZIkSZLmYNE53RkRzwK2BSZExHE9dy0HLNLPwCRJkqQF0RwTcGBxYJn2uGV7lv8d2LdfQUmSJEkLqjkm4Jn5A+AHEXFWZt7aUUySJEnSAuuxWsBHjI+IM4BJvc/JzJ36EZQkSZK0oJrbBPzLwCeB/wZm9C8cSZIkacE2twn49Mz8RF8jkSRJkhYCczsM4dci4oiIWDUinjRy6WtkkiRJ0gJoblvAD2p/39SzLIF1xjYcSZIkacE2Vwl4Zq7d70AkSZKkhcFcJeAR8crZLc/Mc8Y2HEmSJGnBNrclKFv1XF8C2Bn4OWACLkmSJM2DuS1BeV3v7YhYHvhsXyKSJEmSFmBzOwrKaP8A1hvLQCRJkqSFwdzWgH+NGvUEYBFgQ+BL/QpKkiRJWlDNbQ34KT3XpwO3Zua0PsQjSZIkLdDmqgQlM38A/ApYFlgR+Fc/g5IkSZIWVHOVgEfES4CfAvsBLwGuiIh9+xmYJEmStCCa2xKUtwNbZeZdABExAfgucH6/ApMkSZIWRHM7Csq4keS7+dM8PFeSJElSM7ct4N+KiP8HfL7dfilwSX9CUtcWCYiIQYcxi7XWWJ1bbrOvryRJWrDMMQGPiHWBVTLzTRGxD/BsIIAfA+d2EJ86MCMhL33foMOYRex0/KBDkCRJGnOPVUbyEeAegMz8SmYel5nHUq3fH+lvaJIkSdKC57ES8EmZee3ohZk5FZjUl4gkSZKkBdhjJeBLzOG+JccyEEmSJGlh8FgJ+M8i4jWjF0bEocCV/QlJkiRJWnA91igoxwBfjYiXMTPhngwsDuzdx7gkSZKkBdIcE/DMvBPYNiJ2BDZpi7+RmZf2PTJJkiRpATRX44Bn5mXAZX2ORZIkSVrgOZulJEmS1CETcEmSJKlDJuCSJElSh0zAJUmSpA6ZgEuSJEkdMgGXJEmSOmQCLkmSJHXIBFySJEnqkAm4JEmS1CETcEmSJKlDJuCSJElSh0zAJUmSpA6ZgEuSJEkdMgGXJEmSOmQCLkmSJHXIBFySJEnqkAm4JEmS1CETcEmSJKlDJuCSJElSh0zAJUmSpA6ZgEuSJEkdMgGXJEmSOmQCLkmSJHXIBFySJEnqkAm4JEmS1CETcEmSJKlDJuCSJElSh/qWgEfEpyPiroi4vmfZkyLiOxHx6/Z3xZ773hYRN0XEjRGxa8/yLSPiunbfaRERbfn4iPhiW35FREzq13uRJEmSxko/W8DPAnYbteytwPcycz3ge+02EbERsD+wcXvOxyNikfacTwBTgPXaZeR/Hgr8JTPXBT4MfLBv70SSJEkaI31LwDPzh8CfRy3eEzi7XT8b2Ktn+Rcy84HM/C1wE7B1RKwKLJeZP87MBM4Z9ZyR/3U+sPNI67gkSZI0rLquAV8lM+8AaH+f3JavDtze87hpbdnq7fro5Y94TmZOB/4GrNS3yCVJkqQxMCydMGfXcp1zWD6n58z6zyOmRMTUiJh69913P84QJUmSpCeu6wT8zlZWQvt7V1s+DVij53ETgd+35RNns/wRz4mIRYHlmbXkBYDMPCMzJ2fm5AkTJozRW5EkSZLmXdcJ+MXAQe36QcBFPcv3byObrE11tvxpK1O5JyK2afXdrxz1nJH/tS9waasTlyRJkobWov36xxHxeWAHYOWImAa8C/gA8KWIOBS4DdgPIDN/ERFfAn4JTAeOzMwZ7V8dTo2osiTwzXYBOBP4bETcRLV879+v9yJJkiSNlb4l4Jl5wKPctfOjPP5k4OTZLJ8KbDKb5ffTEnhJkiRpfjEsnTAlSZKkhYIJuCRJktQhE3BJkiSpQybgkiRJUodMwCVJkqQOmYBLkiRJHTIBlyRJkjpkAi5JkiR1yARckiRJ6pAJuCRJktQhE3BJkiSpQybgkiRJUodMwCVJkqQOmYBLkiRJHTIBlyRJkjpkAi5JkiR1yARckiRJ6pAJuCRJktQhE3BJkiSpQ4sOOoCFSowjdjp+0FHMKjwOkyRJ6ooJeJfyIU4948xBRzGL46YcOugQJEmSFho2fUqSJEkdMgGXJEmSOmQCLkmSJHXIBFySJEnqkAm4JEmS1CETcEmSJKlDJuCSJElSh0zAJUmSpA6ZgEuSJEkdMgGXJEmSOmQCLkmSJHXIBFySJEnqkAm4JEmS1CETcEmSJKlDJuCSJElSh0zAJUmSpA6ZgEuSJEkdMgGXJEmSOmQCLkmSJHXIBFySJEnqkAm4JEmS1CETcEmSJKlDJuCSJElSh0zAJUmSpA6ZgEuSJEkdMgGXJEmSOmQCLkmSJHXIBFySJEnqkAm4JEmS1CETcEmSJKlDJuCSJElSh0zAJUmSpA6ZgEuSJEkdMgGXJEmSOmQCLkmSJHXIBFySJEnqkAm4JEmS1CETcEmSJKlDJuCSJElSh0zAJUmSpA6ZgEuSJEkdMgGXJEmSOmQCLkmSJHXIBFySJEnqkAm4JEmS1CETcEmSJKlDJuCSJElSh0zAJUmSpA6ZgEuSJEkdMgGXJEmSOmQCLkmSJHXIBFySJEnqkAm4JEmS1CETcEmSJKlDJuCSJElShwaSgEfELRFxXURcHRFT27InRcR3IuLX7e+KPY9/W0TcFBE3RsSuPcu3bP/npog4LSJiEO9HkiRJmluDbAHfMTM3z8zJ7fZbge9l5nrA99ptImIjYH9gY2A34OMRsUh7zieAKcB67bJbh/FLkiRJ82yYSlD2BM5u188G9upZ/oXMfCAzfwvcBGwdEasCy2XmjzMzgXN6niNJkiQNpUEl4Al8OyKujIgpbdkqmXkHQPv75LZ8deD2nudOa8tWb9dHL5ckSZKG1qIDet3tMvP3EfFk4DsR8as5PHZ2dd05h+Wz/oNK8qcArLnmmvMaqyRJkjRmBtICnpm/b3/vAr4KbA3c2cpKaH/vag+fBqzR8/SJwO/b8omzWT671zsjMydn5uQJEyaM5VuRJEmS5knnCXhELB0Ry45cB54PXA9cDBzUHnYQcFG7fjGwf0SMj4i1qc6WP21lKvdExDZt9JNX9jxHkiRJGkqDKEFZBfhqGzFwUeC8zPxWRPwM+FJEHArcBuwHkJm/iIgvAb8EpgNHZuaM9r8OB84ClgS+2S6SJEnS0Oo8Ac/M3wCbzWb5n4CdH+U5JwMnz2b5VGCTsY5RkiRJ6pdhGoZQkiRJWuCZgEuSJEkdMgGXJEmSOmQCLkmSJHXIBFySJEnqkAm4JEmS1CETcEmSJKlDJuCSJElSh0zAJUmSpA6ZgEuSJEkdMgGXJEmSOmQCLkmSJHXIBFySJEnqkAm4JEmS1CETcEmSJKlDiw46AA2BGEfsdPygo5hVeHwoSZIWPCbggnyIU884c9BRzOK4KYcOOgRJkqQxZxOjJEmS1CETcEmSJKlDJuCSJElSh0zAJUmSpA6ZgEvzaNKaE4mIobtMWnPioFeNJEmaC46CIs2jW2//HXnp+wYdxiyGcihJSZI0CxNwDbWIGHQIkiRJY8oEXEPNlmZJkrSgsQZckiRJ6pAJuCRJktQhE3BJkiSpQybgkiRJUodMwCVJkqQOmYBLkiRJHTIBlyRJkjpkAi5JkiR1yARckiRJ6pAJuCRJktQhE3BJkiSpQybgkiRJUocWHXQAksbGIgERMegwZrHWGqtzy23TBh2GJElDwwRcWkDMSMhL3zfoMGYROx0/6BAkSRoqlqBIkiRJHTIBlyRJkjpkAi5JkiR1yARckiRJ6pAJuCRJktQhE3BJkiSpQybgkiRJUoccB1yaVzFuOMe2Do+nJUmaH5iAS/MqH+LUM84cdBSzOG7KoYMOQZIkzQWbzCRJkqQOmYBLkiRJHTIBlyRJkjpkDbi0oLBzqCRJ8wUTcGlBYedQSZLmCzZNSZIkSR0yAZckSZI6ZAIuSXpMk9acSEQM3WXSmhMHvWokaZ5ZAy5Jeky33v478tL3DTqMWQxlx2NJegy2gEuSJEkdsgVcw2tYh9WTJEl6AkzANbwcVk+SJC2ALEGRJEmSOmQCLkmSJHXIBFySpDHmsI2S5sQacEmSxpjDNkqaExNwSdJ8a5GAiBh0GJI0T0zAJUnzrRmJLc2S5jvWgEtaKFmjK0kaFFvAJS2UrNGVJA2KLeCSJElSh0zAJUmSpA6ZgEuSJEkdMgGXJEmSOmQCLkmSJHXIUVAkSfOvGDecI8eE7VuSHp0JuCRp/pUPceoZZw46ilkcN+XQQYcgaYiZgEuStJBYJCAiBh3GLNZaY3VuuW3aoMOQOjPfJ+ARsRvwUWAR4L8z8wMDDkmSpKE0I3ECKmkIzNcJeEQsAvwnsAswDfhZRFycmb8cbGSSeg1ji5vm0bDWWg+rYV1fw1qbHuOGcjuxyKKLMf3Bfw06DC2A5usEHNgauCkzfwMQEV8A9gRMwKUhMpQtbju/Y2gTpGFMRABrreeFtenzxvU1TyatOZFbb//doMOYxfjFFuGBB2cMOoxZDGOJ0/yegK8O3N5zexrwzAHFIml2hrUlkOFNKJff7sBBhzGLv/3veYMOQeresB4Qx7jhbNjY6fihjWvYRGYOOobHLSL2A3bNzFe3268Ats7M14163BRgSru5PnBjp4H2x8rAHwcdxGwY17wxrnljXPPGuOaNcc0b45o3xjVvhjWuebVWZk4YvXB+bwGfBqzRc3si8PvRD8rMM4AzugqqCxExNTMnDzqO0Yxr3hjXvDGueWNc88a45o1xzRvjmjfDGtdYGdLeGHPtZ8B6EbF2RCwO7A9cPOCYJEmSpEc1X7eAZ+b0iDgK+H/UMISfzsxfDDgsSZIk6VHN1wk4QGZeAlwy6DgGYFhLaoxr3hjXvDGueWNc88a45o1xzRvjmjfDGteYmK87YUqSJEnzm/m9BlySJEmar5iAayBiKAdWlaQFj9tbafiYgKtTEfEkgMxMdwpaGETEMyLi6YOOY34UEcsOOoYFxNqDDkDSI5mAqzMRsSTw7xHxXjAJ14IvIsYDzwM+FBEbDzqe2RnW32BErAe8NSK2HnAcs+wnh3WdzU47iDkvIk7u4LXmm/WiJ64N/zzfGLbvpwn4fCgiXhURBw86jsdhBnAmsG5EvAGGJwl/tBhmt/PtKo6IWKLL134sw7KOHstInBGx5CDXYUREZj4AfBz4X+C9EfG0QcUzOy3GbNdfEhH7RsRug46rWRJYAnhBRGw+qCAy8yGAiHhRROwWERu27dZQfe9nJyLGZeY9wCuAnUa2u316rd7v0ksjYu9+vVY/9Gw3NomIDYcono0iYrWIWGvQMfWKiI2Al4+c1R52o76f2w3D2bWh34DokSLizcBrqEmIepcPPImdk/bl/xc19OVdwIERcQwMPgkf9cM8PCJOiIj3RMSSmflQVzvaUXEcAXw8Ik7q4rUfy6jYXhMRb4+IoyJixS7X0WMZiTMiXgx8CTg7IvYfRCw5c4ipl1Gz9K4BfDAiNh1EPI9iHEBEvA44DgjgSxFxwKACGtkWZOa1wE3AZsCrI2KTQcTRrr+KOpDaFTg/Ip49TN/7RzNy8ACsD1wDvC4i3tKn1xrZPrwROAb4Ve/988G6yojYE/g0sFzvfYPYP/Vsxz4DHAF8NCKe0XUcsxMROwKnAv8O7BcRTx5wSI+p5/t5JPAJYIVBfyeH+gehR4qINYEtge2AOyNiz4j4ADxiZz+U2sZkR2pj8gPg68C2EfG2nvsHkoT3/DCPAV4CfAd4IfDliFim7WgX6TCOfagWq3OBPSPiw4M+1TdqHR0AXA/sB5weEasMSzLSvke7AidSCeXvgHMj4jWDiCcintPieBuVlFwOnBQR6w8inp64ntFaR2dExGRgL2AX6iDhF8BnIuKQQcTW8107ivqO/QTYAHhplwlITxzPpw4Cts/MY4H/oA7stmvf+2Fv/DgIeB9wFvAeYI+IeEefXutpwO6Z+SzgtojYpTUa9R4MDKXWovtO4KWZeUVrdd4aBrN/jYiJwDuA3YF7gBWBWwe9nW3r5DTgTdT3aWfgxRGx4iDjejQRsUzP9e2AVwEvzMzbB/2dHPgOU3MnIralWr63ojakpwM7UBvT/xhcZPNkLeCTmXkBcArVorRLazHpfCMXEVtFxM7t+lOonfyLgO2B24C7ga+2JHxGRzFtS7WYnp6Z3wOeCzwd+EBUPXGnImLj1gpDRKwBbAjsRrWo/RP4E/CRiJgwqI1ZRKwaEaf2LJoIHELFujkzDxQO7SCW6P0LLA5cnZl3Z+blwIXAYtTZjQ36Hc+jxLgodTDw7ZaETwVeTiXge7Xk6VjgvyNivwHFuDywI3B0Zv478GZgeeCVEbFZn1975DNcJCIWAw6jtgmrR8QimXkWcBLw9Yh41rA3fgBLAx/JzJ9Q+47jgAPGIgmfzcHHXcAiEfEV4MPUtuzgkYaiITcO+AO1TzoR+G/qQOtlXQcSEU8FVgN+SO0D9gQOzcw/A8+OiJW6jqnHhsA1mXldZp4GfBF4C/CSYUvC2zb2Ze13DLXP+klmTouIJXp+60sNIj4T8CHXc7T7NOAB4KtUcnhca415G7BY26kOldlsnGdQp5Kf0uoSrwD+TG3w1uk8QFgZuCEiVs3MPwBvB7YA9szMfaiDhI2oDkx9aeWazf9dhlpPz4+I9TLzr8A+VALw7n7EMIfYlqA2/i+JiN0y83bgBGBb4MXUwcrXqHV2ygBbZv4KfCoi1moJ5ZlUy/fhwAmZ+ZUW5ydaq1bfPsueZGzp9vdKYL2okiIy82aqFOBq4N5+xPEYMY7LzOmZeRD12/tci/sOYAXq7BTtvk8A13YU1yM+k8z8G3AfVaq2WGb+nDoztTtVE96X2v5Rn+GSmfkglUReSZ0de0qL7yzgKOogfWg8ync7gWPbwcND1PfvSmC3J5LI9a6rqPr47akzKAcC/wecmpkHU9uMfw7bmYKe5Gudljj+ETiPOni/hmrw+gDVF6HLeLYA/hO4A9ikXd83M2+KiJ2og7+lH/Uf9S+ukc/v59RB1lYArUHtf6iW8GHraL4IcD6wTjtw/zN1VvkFmXl/O2N6CHDEIL6fQ5e0aRZPBX4NfBbYn2pRuwv4Q0S8mmrJ2j8zpw8swkfRvtzPBiZTJSefB9YE/jMijqXq7BI4IjN/01VcrZV5emZ+M6qs57yI+Ehmnh8R/wKuag99OnWq7fP9aOUatQPbArgF+D614X01sHdEXJCZN0eV73TWutBiuz8izqEOCl4WEf/IzB9G1eJelZnTo2r/vkid2RhIC3hm/pM6kDoXWCUinp+Zf4yIW4A1W+vG74HJmfn7fsQw6rM8HNgrIr5L1aEfC7w56vT8DdSZq33aQV+ncmaHwpdR6+SFVM33S4FbqaTsM1Sp2wszc1q/Yxq17rYGlsnMS6la3BdSCfBZVAPET4AzM/P+fsTSE8dhwHMjYirwDeBIqkX0zRHxocy8LTPP7UcMj9eo9Xgwta39bmZ+IiLWBf6nfe7PBu6nGhr+9Hhfr+e1jgP2AL7V/h6VmW9t9x0JTAFeNmxnCtr+aQ/gjdQB8UPA+4EvZeaDbT/xZuDoDuN5LrA39R2/PSI+Qu33T4iIy6iDmbdn5m1dxNQT1y7AphHxx8w8JyJuo86+rw/cDKxKbduOjogfDbq0IyKWysx/ZOYvImJ16vd7H1W3fjBVYnc61Qi9P/CKgXw/M9PLkF6oDegt7csBdcD0Cqol6CRqx7DRoOOcQ/zPBq6jjkAvpGqH16fq7K6gOpLuM4C4DqM2Glu3268ALqbqYFds6/cc6kzDeh3EcxSVWLwf+CSwLFU68WGqlnntAX6Gh7XP70rgC1QntAnAL6mDwtuA9QcUW7S/G7a/y1BJ0kVUZ8JXAWdQHflePPp5fYpp7/a73Kutr3cCzwQmUWVjHwKePqjPs8W4B3AjsC51huMs4Avtvi2BQ0fWacdxHUXVn19H9RV5CvBK6iDm+1RrfN+3d1TC+D/AM6jE7DzgOcD4th37d2CRQX6GjxH/Xm3b+p/UQcxRwFLAyW1d/g+w6RP4/0v3XJ8EXNSuv586QzuOalxZrW07Hvdr9Xk9PQ34advm/ztwKVXmtBR15vNKYI+OYzqIqvd+S7u9DNUIdxpV5rFbW963bdhsYtqG2l++AbidOlM8jjrD+Pn223wG1QL+GWCxAX+uy1AH7lsBr23b5O2osxnvad/LrdrtDwxiW/dwrINcUV7m4gOqU/0/Bw7oWfattmNfZdDxzSHuTYDvAZu326+har73b7eXAp7Urne2MemJ79XUacbJ7faBwDfbD3UJ6lTaWn167VV6ru/ddojLUMniz9tObHlg67aBWGlAn+HmbR0t3tbHYVSytn7bwU7u1zqahxhfAPy253u2NHXwdC4zE/TVu/ietfX1C2C/dnsD4CNtoz+wjfxs4twdOLldX4xqvfoZcMEgfostju1o9fHt9jeoA5blWoxbAE/p02tHz/UV22/uSVTi+gMq4biAKr1aHFht0J/hHN7LXtSQl09pt/8N+Cg1isYibdmST+D/rw98mZZUU/0tvgB8kCrzWqIt34c6gFp80OtkDu9lS+qg5MXAj4GntuXPoMoT1xz9/ejXd6+txyXb9d2B3wDPHYJ1tGn7HR7Ybj+ZSsJP6HnMstR+7EpgswHHu1r7e2Dbpt0MTGzLnkkdaJ0IrDPodZtpAj5fXKijuWup2rS9qHKOYd4JLNI2In8A3t2z/BDgc1SHr0U7jmmWjSh1WuoaYKt2+wDgR/S0lvYhjjWog6el2+1tqSPyw4DvUmc9LqEOBpYHxg/wc3wW8NOe209tsX0H2GkIvmebUbWmW7Tbq1L1mstTLTNff7TPvh/fKaqT8XltZz6yI1gX+BSVxC0x4PW1DdWy93SqzGnbnvs+QJ05mDiAuFanDj6v7vksF6POSn25n78BHpl8b9m+P0u1z+2bbfkE6sDqFGCpQX6Gc/EdfB7V0eytPcv2oeZfOIJquXxCvweqZf082tkIqmHlJmDldvtQYCrw5EGvn9mtK2Ye5C1LNRLdDKzRlu1GNXB1Fju1r/wh8JW2btdg5lmqHQe8zg6i9on/MbJOgFWAvwAf7Xnc8Qz4TEf7nX6txbx6256cRfWfGjn43BL4GHU2YXy/9g1zHfMgX9zLPHxQ9SX6PpUADfQU9qPEN7JxW6Lny74n1ZI1pedxrwE2GURs7fp2VMvtsu32UVQSvmW7ve/IxrgPcSw/8rdtCPYZiQ/4r5H1QrWafoYOk6FR62ipnuufpTr6Ltpuv5Mqf+pLa+Q8xDueOo14ctuBvY06SL2IarVZktYq3sH62hzYYGTdUa2BX2Bmy/vaDOBsVc9vMtpO80NUErky1WL1W6ql6HAq2V256+9az7INqU6fb2NmYrdYW499aWwY9Rke17atk9rtTama+JWppOyLg/gM5yH+FYDl2vVd22/hNT33v/iJxN++Q+N6bp9KHRxtRLUs/gd14Pme9tqdbuPn4X3s2mJ9Y7s9cmb2nW07ch0dlp20bcOvqH3SSMnExdSZn0OoEtQVu/5OUQ1BS1MHbDtSB1z/xsyDrFUYgkaYUbEv0X6rF7Xt2lJUOdlpVH8HqLMyzwMmDDrezHx4ZWs+0DqTZVans6Ex0vmndWg5hOrg87nM/HrUEHaHAN/LzI8NOM6jqHrv71NDru2UmX9tI1S8lfqRXtWn155ItYSempnfiYjXU0n4VzLzwoi4gGrxmEZt6A7MzDv7EctsYuvtvHU0VTrxADV28BbURm1jqmXoIOoMQWedgEaLiKdT9d0nUQcry1MJ0v9Q4+b+KDPP7tNr946SMbK+RsZFXy0zd4+aYe142gQy2aeOn/OqdSp7IXWG6mNUkrkfdbDygayJb/odQ+937bXAOsCdVEvVqlRCdBd19qKrEVh2pL7rL8zMv/Qsfz+VsI0DXp6Z13cRz9wYtR7fSJ2tWp0qDfhOGy3jg8A5mXn6GL7WiiPrKCL+nWqtPZkqmdiLGtnnl5l50xN5zbHURn+ZERHbUH1EPkxt7z9PJd9Po/oa/Bn4fmZeMvp33oeYRvaZGwAfzMw92/IJ1GhX38vMCyJiza63tVEz4b6fOhiZRJ1BmUwltd8CvpOZd4+8DxieeUiihk19AbVtex+VjB9NvY+VqTNbL8waznHwBn0E4GXBuFBJ2pXAetRptH9RExpA/YAvoTbWXXYe6W0heh7V8XMpqpXtLmqoupE69NfQx7owqrb0NdQGYUuqlvQ1VCep51DJx8eolobNBvQZHkHVvD6ZKlE4u8U6geqA81aGoNMvder4KuogalFanSnVivpz4Nl9fO0n91zfj6q3XZJqQbsPuLLdtwJVa7j6gNfVi4Dzem5vQ7UA/getRbTL32RPHK+nOr3t2r5zF1ClWOtTB6pvaL+RMY+tfadP7Lm9J9VgQPs+LdJz30SGpLXsUd7LEVQZRVBla3cysw/CrlRpwwqPdz2O2oYe2bYJ72ZmffQHqER26Fq82/dphXZ9feqs4uHt9oS2bk7uefy40e+5DzGNNHqOlCAuSjUcHN/zmPeN3Kbjzr5UonodtU9anBp15SaqkeNAqm/NQM9+ziH2KVQOsjt1JuZiaoSTRdpv4YPD9j0deABe5s8LlTCe2XP7MKrFb4+2Y3051Yq6b7u/03rAUTuOHaj63CdTrfH/ry2/hBrHd4WO4ti77ay+Q7UojKNOOZ4J7Noe0/noCm3nvQw1AstqVHL0Terg4HvAxoP+vrU4l2Rm/eZLmTlSwDgqGf8RNZFMv15/pBZ45MBy/ba+Xgt8oy27Cvj56M++y89y1O1V2/ftjJ5lL2k72RPoqA6SOoPS25Hro9Qp4ze279r7qM7Hq1Atkn0r96AOhldl5ihIm1IHvmsxMwk7sO3QB1ojOpvYnwl8ref2FKph4w3UCCcHAn+jhv2DMapZp4Zu+xGVoP2mra9t2n2nUWcwhqbDJZXYvm5k29W2txdSZ8pGOluuRNWqf7Tj2EbqzD/U1usWVGL7KeD5bRvT9w6YzDwYGPnOL0uVaJw5avnHgGPb9b6UZ47R+zmRmoV15De+H3Vw84pBx/ZoFyfi0eN1HzXm8ucBMvOT1LjCRwFvy8zPAf+PGmP7yZl5V5fB5cgWJmJ/qsPF/S2Gp1F1pVD16ddTIx70O46jqWTjUqr29t3UKCdnUjWTL4puZ9zsnXRgXGbeS41XvRKVxL4gMw+hEqdXxABm4RwR5WnUDvTYVkoxtcW1Xs6cXOS1WeU8fZlQIeu06zuBt0TEPpl5I3Wm4BnU5wh1gEU7ddz5adme79uzIuI5WRPsvJz6rX66Pexeav39V2Y+0O84o2ah25qaQOcl7Xd4IpV47NEuF1IHNB8Fbs4+lF9Fmygqq4Tib8DxEXF2Zl5HdRh/K3BcK0k7kSpHGIpT6yMy8wpgraiZJsnMM6gD6N2AIzPzPOpM35SIWDoz//FEXzMiXkQ1rryA+qx+S23rT4iIbTLzaOBNmfmvJ/paYyVrXoxPAX+OiM9SnbVPoM587hURa2eNgb4r7TfbhYjYkjpg/2+q5HA76qDpzVRDwk5UB9ofdhDOyBTt2cbf/xjVyLFlREzJmWN5/3rksVmTsQ3cHLbxb42Ixdtv/MfUkI57RMQKnQU3D5yIR49LZv49Ig4AzoyIL2XmSzLz7oj4LbBGq4O9mRphpNPke0TbqOwHvDcz72yJwF+ALSJiY2qnsn8/dvaj4hhH1VW/LjN/HhEjp8beCbyL2vAt25LgvhtV07k/NUvY9zLzioi4l5rlbGuqxfe7wMcz84EuYptdnC3W/4uIk6lOS5+hdqbTqQmC3te+Y3fB2Ncj9q6vrLrMh4D3tNrSL0fE3cA2EfEMqjV1t66/87Op4z8UWDwiLgHeSw27+ZWI+CHVAr13FzG2dfRgRFxEzfC6U4v1i209/rrdvw7VAv6xfh2E5sxJiI6gRvQ5DPivqEm4jomIA6kRYpajDkL/rx9xPF4RsWjWLKZPj4ifRMSFmblXZt4WEb+nZqz9J9V59KTMvO9xvk7vd2l5qnzvaup7s3tm7ty2aTcDL46Ia9rB6VDo2W7cHxGLU41FH6HO7J1DTex0YER8PmsCuMc9GdE8xrU6dZbiwqxJ35ai5n94C3X24NDR76GPsSwJXBsR78nMz0TEX4C/Z+Zvoyb4uyRqkrrbqP42b+pXLPNq1PdzX+ps1lepMwpLU5PsvJbq1HoH8OasGaWHji3gelwiYoOs6eQPoo6gv9zu+jnVqnAG1ZHkmvb4vk/zGhErRHV2pCXY21Knol4SEctnTSt9AdXivARwXJ9a2kZPq/1Qi+N17fad1AQQy1MtH4t1uYHo2Xi9guosuARwcUTsRdXFX0glbe+naiQ773DZ00npBRHx7xFxPJWsnU0dVAXVCrcTldj1NY52fbWIWCEzv0r1Izghaoa4T1Ab+vWoTnCDTL4XpQ6ctqJamNemWnbvzcznUGc5dszMGzqIawVqoh+odXMH1Sr1vLbjvIaaXe+L1Pi8n20t9mMdx/OipqEmInamTvO/N2sm0tcAT42I0zLzvKwZHF+fmb8c6zger5HtSdbMs4u169sAq7aDeaihaTehOpx9+In8Znu+Sxtl5t+o7eUq7e612oHmLlS97X/mEA0K0LPdWDsi1s3MW6mzGXdRDR030EbWoWZh7kxm/q699iERsXHWTI3XUmVg6456bF9ja5/ZYcApETFSLrpou28qdVZvBpXcvjUzv9PPeOZFz/fz5dT+aweqL8LzqLzjb1RC/naqvKiTA6zHJYegDsbL/HFhZs3YesDfqdYqqNNW5/PImvC+T2IwKrZFqIT7RGpDexZ12mw/6rT2a2jDAHaxjtr1F1LDfy1GjVDwOWZOgLIX1Rt/IB282rr6CjNrJPeldrS7tXW5KgMea57qQHgllTB9A7icVr/Z85ivAm/oIJY3tdf6NtWavGT7DK9i5hBX4/odx2N8346lOvleB+zQlq1CHXR+kg6HM2uvvU5bb98GrmrLVqQO2j9N7TgXozrP9mXITSqR+D11Buqp1EHlzTxyMqwJwGXAJ0av00FfRn2+h1C13of1LLuC1oF0ZP2O0es+i2pJfy1Vtvfj9rkdSNWC/5wh6Rsym9h3o+rUv0v1YXl6++w/SNWAL9PlvqB9v7dg5vC8b6MOBF5IDeN4A/DMDtdP73CS21P78k9T+8zDqLr0vYAXze57OAyXtk+4jJmdWY+l9vsjNeBL0IYaHuaLLeCaa5mZrR7wBGr4pn0i4r+yjqZfDjxlpDaRmi2LbL+GfmqtHjOoMVO3ozqZfTOrpOMCamexEXBQRCzzqP/oCcYQEeNG3m9EvIpq1XsTNfby09rtbSPiG9TO4L+zo1O3I61oETGutZJuTbUC7R0R4zPzfKou/VPUME13ZMfD57UW5le160tQZ1IOpE4rLkvVLX8pIib1PO1y+lDD33sWo50Z2CUz96ZahZ5D9Sm4kGp5eXNUydUga76fQyW0/0l1Lj4mIrbOOttyFLX+Fus4tt9Qn91zqKE/yarN/Ca18zyMGtLyhsycNtav3z7DlagOg1tSB04XUx2zjouIJ7eY7qYO1E9ut4em7rvn8z2KKiu6Ajg9It7d7n8msFW0vjjAX5/oa7ayjdups2GvpQ5efkSNlX4DVQf+gsz8xRN9rbEWEetT+6K9M3Nk5Ku3UuvlVOpgbJ2slv2+avvL3akD91cDP4+ISZn5fupA4CtUK+1Lssr/+n6WuMX1UEQ8IyL2zMwfULX9/0ZtP/5OnT3blyrXfPi9dBHboxm1PR5PNRBtQZVykpkfpkZrOTAids/M+7PO0A+3QR8BeJl/LtTO9Pu0mSKp1qz/A05rt5eiTe3eYUy9LUSLUTvS91M1fzv13HcUlWCu0Kc4Fu25vjs1I1e0mE6mEu6RyX4m0OH08qPWUW/L3yuoEQwOZOboInswoGl6qXKSS2kTN1HJ07pUuc46VKvzL6kW3iXb9+/9jPEMbKPWV1ATUbyK6kT7LWYOezip/V1mAOuqN8YXUa19I6PCTKBahL4KbNeWdTK6DswyCsvSVEvfe6lx20cmi3k6NX56X4c0o07vX0clYCMTXW1HHQy/r9+vP0bvYRJ1Bmilth27jOo8fnrvY8botbZt28mNqfKli6kW0SnAQ8C7Br0+HiXucW178HmqtOk5Pfd9kZ6ztR3GtEWLZa22Xb2HOiB4Wrv/8HZ77Xa7r63MzGyR365tZ//JzBGdtqJGBNtt0J/lo8Xdro9n5r7qkPa72Kfn/iPmh9/0yMVOmJoX91On9n4P1ZoVEccAX4yIezLz7cDUfncg6TXyOlET2+yUmXtGxBXUkfFLI+KPVBLwB+Dc7EOtddTkCWdGxJ5U+cZk6tTe1lktGx+hOgC9NiI+nZk/GesY5qRnHR0J7BkR1wDXZ+bZrab0mcASEXFOZl48p//VZz+mWpSPjAgy84zW2nEdtXN4BnVG46tZZ13+GRHvyjEafaG1skTO7Kx3OJU8fpLa2N9LHXw+GBFvALaOiFdkR51ne+Ps+UwPoBLuO4BnRsRqmfn7iDiHOkg5MiKupMbl77ueuA6jDpqWpsrCHqLqhl8fEX+iSmNOyT60Uo3a/ixHmz2Y6jB4R2b+b1QH0FdQv8n3ZkejD82N0dvPzLwlqoPo1lTC9JyIeCbw44j4TWZ+ODNvGaOXv71dzqbOpnyD6pz3lYiYQTuTMSx611XbH51IdWzfJiLuzOpIex51Fobsc736qM/u/6gJfp5KTRC2EnWG8bsRsXNmfiIiVqY6De5Kn3+jmZkR8WyqVOPV1BnGYyNielbn8pcBF0ZNDnRHVp+pgRq1rTuO2gc8KSJOyMxPR8R04OB2FvfzmfnxgQY8rwZ9BOBleC/MPGJem5m1Vm+gTkMu1W4/i2rZuoKeVoeO4zyM6k2+Xru9KLWDP5ZqGbyNUbXDfYhhKSrBWKHdPplqgXx6u70KNepJZ+Oh88iWg4OpSWMmUT3xr6F6h0NNsPHvtNbJQX3P2vXxzJxO+LXUAc1XqRrFPwDPb48b83prHnkW44VUv4aRz/NsqrV9f6o/wTUMuAaWOtC7oOf2uVRp2Ort9pNoE011HNfLqbKvbds6PJMqYxiZBKhvU5WP+i4d1b7X72jbsEvoOQtGJbSdzk8wj/Hv3tbl+u32DsDn2/UXU8lcX85WUSNEfZMq8frVoNfLY8S6O9W58aPAs6lx0c+lSjzeTPXT6HJ6+ecBR/XcfjvwnnZ9D6pfyxY993f2G6Va3T/Zc/vlVAfVkZbwlQf9eT5K3EdR9fzLU/v0vzLz7N5rqLMcy9Lnswhj/r4GHYCX4bwwM/nelUpgP9t2XkEll1e3ndtvqdal/xj5QQwg1vdTNZ7PoEYBuKElSku3Hf9aHcWxFzWV/PJtPR1Ptdhu0e7vrJPeqB35ZKrGb8W2IfsW1UL/E+CN7THLD/h7NhnYnJmdQl9AjeywD3VAtQGweR/jmECdbo/2eu8C/tGzkV+NKkE5jeppP7AZQVuMm1EHAefSSmCojkdnt9/qqgP4DEcm7jgdeHXP/R/lkZPH9P1AjzoV/T/UTJZ/pjo870qN8POhQX3f5yH+11F118e3bcqO7TP/L+rg9Hr636jwZKpM6CeMUYlLH2J8GjXfxCupROzPVAe9kSH/Pk6b5KzPcYz8Bp7RXvMhalx22rb3i9SZoB/QYZkmzFISthPVmDGx5/d6XovrGY/2vAF8rlvSOkW3229s2+g3tniPoIaXfFa7fyCNR0/4fQ46AC/De6FaiE6mWhWeTdUxf5hqlXwW1QrzNOr03tV0XDtMDXG2EtVSeg2VsB3SNsTfZgCtW1Tr7a+ZmYS/tyVJncw4OJt4DqdakNdtG7ALaa0cVAvRNxhAK+moGHenZn87lmqtel7PuryUnlEf+hzH6LMY76eS8s3a7UXb385n/Jvdd4eq3f/f9vsbqUtfkjpA6KQOkkce6I3Usr6+JRvL99z3NTpqXaPKTv6b6qh1NJWgnUsdmLyQSsyGqqVv1HqcBHy5bWdfDXy35751qCSqr8n3qNgWG/T66YllAjNrqDdv2/3eadx3oCa4WZU64/IZKmnr+wyOPa+9Y9sn/ZGZSfjLqMR39wGss52oDrx7tH3S59rvcwdqv34udZD8OQYwktOjxDyROoD+WM+yp1EHCsu321OpEY3GDzrex/0+Bx2Al+G8tB/qrcD/9izbsiUlD+/gqc46PxlJUjqMb0LbaHwMWJzq6LJsu28Hqlaxs46Oo2J7IdUKv0K7Pag49qBO96/Vbq9KJbTbUvWvnxt0IkLNfji1JRYHUS17v2VmR98X0m2L0V60sxjt9shZjM17HjOw1iHq4PIk6rT2clSC9s22Ix3Yjohqsf0fqhV+e+pg+GXU6EP/Rp12X77DeMZTLcaXtdvjqNPWr6eV0w3LhUcm36tSB1Hvolr6/h8zh687lA7PbAzbpe2T3kQ1Joysk69TB6FLMLMV+lPM7HC7A9WHo++NDG2b+p6e25tTrbSvfLTPu9/fKap/zy1tm/FT6mBkCaoD8mfbtvcZVGPaxwe5bWvx9pYBTqQajEY60C5NTaS0U9tXnEQHB1Z9fb+DDsDL8FxG/Wi3oco4/gEc2/OYZ1It4SOlAsszuARzK6rT3ukjO6a2gfk5rfZ6gOtyr5Z0DDJZO4zWOsTMnuNvoEYK+BEdHzTN5ns2vm1kJ1BnM66hxuh9EzWZQmd1m6Pim91ZjM8xgJbvUXEdTdU/Prd9x0c+29dRB8HPGlBc+7bv+jo9y3anJii6gDroG9ORauYyrvWog4JNqQO5z9HmJxiWC49Mvl9L1akvR5XJ/C8zzyocQHVGXmvQMQ9oPa3MzFr4Vagzseu229+gasC3afun2+g5aKdPI5+M3rZTw99eOmrZyCRdBwxgnW1FDYG7R7s9iTrD+Jaex6wA7Dkk+8yRBoVxVOPRAW3/8C1mJuFvp84k/B8DLAMcq4ujoOhhmZltJI93At+hWmNOBY5vvYw/kDWqxw2Z+ff2nL6Pp9qrjRO9bma+PTN/1nrmHwC8sY2New1Vb3pjl3GNlpkXRsR3s201BuRWatST9XvWx43U1MtfzAHNYNe+Z3tT5UK/pU63Lw2cl5n3RsStVOe9TkcX6YnvW21UnZGk9h0RsVKO0Wgrc6uNK/9Qz0gAa1C18UdTHVI/FBGLZebpEXEfNW5zF3H1jkywNHUg9YnM/E1ELJ2Z92XmNyLiMqqefrEczGx0t1EtpKdSSdtLcgCzus5Jz3o8jDpgfhKViHyK+rxPbCMBbUAlcbcOKtZBiZr2/rXAKm10n19THe6mRMTHM3P3qPknPkf1gXhZZk4d+f30azvXtmM7UxPtXJuZX4qI/SLiO1Rr+CZULfgHqDPFnej5fW5DJbK/b/vvW9qcBt+OiFUy8zhqaMTNgVdlzco5MJn594hYkjoDeSewTWY+EBGvBj7dRit6B0BErJyZfxxkvGNhpCVKGpk6+hPUxm4X4J2ZuVkbluha4MTMfF/HMT1iSK6IWBv4GfChrAkNiIhDaJ0LM/P4LuMbZhGxHDUKwDiqxXsF6hT8AZl50wDiGZkmegVq1rWRWemOpHaqd1KnSw+mdqLXdDmk5Wzi3YuadGryIA+k2nf+D1RJwnhq2uiXZA2HeBjwu8z8Wkex9CbfR1Lj3I+jPrPtsybaGTlQ/m1mfr+LuB5NG2bzKcBDWVOBD4VR6/HlwDFUGcDxwNktgVyZGr1lRWokkqE6eOhCRDyFqoVfmippWpIaVecO6szUg9R46LdExPnU5/yS9ty+bDt6tmObUduwy1uMv8jMUyLi49TZs42pRHwyVQrzqmxDnPZDT1yrA3/IzBkRsS+1P383cEXbZqxFzTz7v/2K5fGKiOdS/Tf+Dmw70ujR3tOXgJ9m5rEDDHFMmYDrYa0161RqgP7JwEGZeXPU7GJPA/6Zmd/tMJ7endRRVIvCdVTd2tepcYQ/GBH70YY4y8w/dBXf/CAiVqVOMe5BlXW8f5AtHRGxNfXdWikzT2rL9qWmZ76T6jB6Zw52PPKHRcQy2f0439tSpRJfaEnuoVTno6dR/TCOzBq392DgLdSU0Td3HONrW1x7Z+bvIuIk6vf5Duq3+HrqIOFXXcY1v2mNG+OBu7PGb/8Y1ZDw9ZaM3LWwrsOoGTlfDvwoM38VEatQZ38Wo8oQ7qA6Ey5ONcj8JiJ+ClydmVP6EM/S1Ay4MyJiJ9rwre2s8A7AS6l5Mj7UzlwtT5WBfIQa5q/vM4dGxG5U/4GbqIOC11Gj/7yCGrXs8mzjew+ycWPE7GJon/tbqLN9L8nMaS0HuZfKWcd81tyBySGog/EyPBeqJfmX1NTbUB2qbgY2aLcHMZLHEVQCMjKk2PuBvalT7udSrabrD3rdDfOF2kkNpIaZmQf621CdLL9BncXYkZm16Qe0791Kvc9ZGC9U/fRvqVars6kOqs+nRom5jEo8Pt3WYed1kFQr5IXUjn0laqSd91ITuHyu3TfQMdKH9cLMod+CKqOYChzdc/9p1JB6e7ffylDVrA9gfS1FDYd4BlWGswo1Mte/Ux24V6AmDNqk5zljvs6oFu1P0Dpztm3XQ8ycfXY81Tfj023/FO23cQwd9X+gDtB/RY2K9DQqib2cOntwNFVWuuKgP9OeeHv7PxxDDahwJjNHdHovVbN+HNU3YqCjdfXjYgu4HqG1MryO6sxyDTXN9Rsy8xsDimc5qlX+BGqa+d2pGuZ/Uqfk/wHcngvSUfECKGrmvvdQ36XrW4vpClSt94+yTo2unkNUJjBIEbEL1dHsmsx8WWsVeipV6vE/VEnRIpl594Dim0LVLE+j+hXcStUsvxt4MIdgFr1hFhFPz8xrI2JdKrl8f2Z+p/WNeCfwFyoxv36ggQ5AxCwz0m5IlZ+sSP0m7qFan1egRu74dVar9KKZOb2Pca1MlcxtknWG4vnUwebLs2YKXZwaYequzPxle84i2cdZVnv/fysteUdmvqan/8h/UiOZnRcR62Tmb/oVy+MVEa+jRkral8o5rqPKde6IiGOpIY9PHFmnC5Jxgw5AwyUz76SO4N9LHT2/IqtDVQwonr9TG9snU6e7d6VOS+4DbAdcafI9X1ge2JlqyYVKxv9MDSf1bACT75ky8ztUj/8XRsRLM/NfmXkD1eq3RGb+eVDJd3MOVVt6cGa+iUoYtwYw+Z7VyPYzIhaNiE2BqyPiv6kRWj4CbNISuLupA62jFsbkG6pzY0seN4iI1agznB+l+kG8kUqCP04N8cdIAtqv5DsiFmlXV6SGAX1HROyemd+m9kOfioj9s+qVf5CZvxz5vPuVfEfEsiP/PyJ2bCVhGwK7R0RvrfmfqEmJoM6qDZWIWIrWwZgqk7mCivnrEbFaZn6YykEWuOQbrAHXfCIi1qNO7x1BtbQdSA3DttB1TJpfRY2w8z7g5NYisyiViJ+bHdRHzo8i4kVUWcJnqXF8TwL2y45rvh9N1AgVr6JOIR+wsCaNc6unZfLdVFnYulRC+QA1hvTPI2LZzLxnoIEOQERMAvbN6sj4fOog79vUejqW6nD5Wmp4yZOBW7OjkYkiYg+q3vzFVKnJa6g+SJe03+iXqQ6zd2UfO1q2WJaihuY7jWoxvpA6C/VL6qzAPtQBy6+psynH5IA7Q89OT6fRJan5Aj6Smc9p9/2JmvH1Nf08gzBoJuCaL0QNxXUM8DxmDim2UHZOmp9FxAupJPL0zDxrwOHMF9poLBdQO/m3ZuYtAw2oR0sGXgr8pLXQazZai+izqZbb/amW76dQ5SdHU2V/v6P6SdDvJG4YtRKKK6h+Dw9SSeb/UX0MtqLGiJ5BnRE9v6uDvYjYnBq1af+szqCLUuNrTwTOauUonQ6L10qV3kqdRXxr1ohRL6f6izyFmlvhBmrUkK93FdecRMRKwN9bueFISdGNrfRqHWrs+/dQ45XvBJyamUPXaj+WTMA134ghHVJM86a1Jn2AOpi6c0Fu4RgrEbE9cEsO4TjQwzCawjB6lBEeXksl37dRpXSfycwPtzrn+xbWM3pR49k/2EZt+ho1YtPLqJGRnkQl3TtQ6+zuLsuc2mfzFuDHVOPPDi2uVagy3pe0mLLL30LrJ/Il4H2Z+R/twOAl1GhEd1Mtyp3GNIdY16HW4XnUmYK3UWe03w4c1s6IvpdqCd8I2DMHPJdHF0zAJXUuIiYMuIZZ6kTUEKrrUiN6vJPqD/F0anSHdamW1e8NLsLh0A4yl6Zab99NlXh8rN23MjW05UWZObXjuJahOj8fQLXS3kiNDnYTNQHPwIa+bWfHTgbem5mfb/XqL6WGYhyquumIOJkqkVkM+M/War8TVUJzYDuTsCo1UtBC0cBmAi5JUh9ExOHUCA9TgK8AP8zMo9t9m1GjO71+YUk4RuupA96GKse5jhrO8rnUwcl7M/O09tjFBtnBNyIWz8x/RcRkqj79qMy8dFDx9MQ1UtZ3WmaePeh4erVRzJbIzLsiYk3qQGYXagKjs7JmPt6ZGiJx/8z80uCi7Z5T0UuSNAZ6EsqR0/5Ppmq+D6JqvN8QEUtQSck1EXFgVx0Jh1FbV1tTrbivyZrUZl0qCd8WeGurr37nEIyuMyMitqTGHX/bMCTfAK0j6KLAByLiO9QsmAPvQ9BKRrcB1oqaSGdpqjPtA1SZyTYR8b+Z+b129uOuwUU7GA5DKEnSEzSq1na9lhStQ411vxVV1/ogcAhwQBtBZtBJ5TBYnqqr3rndvpVKwG+mhpr99mDCeqTWV+VXVEvtRYMamnd2smYO3j4zfz8kyXe07/ofqM6zL6XKh+6nJlG6g5psaqeIWDIz/2dhqPkezQRckqQnoDf5bjXf3wA+SI29vCnw/cycHhEHU7MNfzczHxp057hhkDXm/T7AIRFxQEvc/kpNAvfnzLx8WJLdzLxvZGSOYfvshqlPTc+6uRX4FFVislFEPCPLSdQ47ttTs4YulKwBlyRpDLQRfl5EJd/PB5ajJhrZgUrKn0GVWgxVB7lhEBEvBs4FvknNcHzBsAyhp3kXEVtQ5Tovp8pO3kgNm/gpanKgxalZTIfmwKFrJuCSJD1BEbE6NVTddzPzkDZ3wb9RE4ctR02O8kBm/m2AYQ61nglvPpeZp/bMKGmiMuRGD3cYEU8CDqPGvz8CWKT9XYeaXv5ZC/o434/FEhRJkp6gNpLJMcBuUVOTPwB8gRqTeRzwL5PvOWu1zG8FjouIfVq5gsn3fKCnBGvbdvvP1MRTlwL/BfyTGvf7FGDbhT35BlvAJUkaMxGxO/B+aoKUL7TOlkvnQji9/OPVJpm5OTN/M+hYNGc9I/8sQpWVXAdc0jPc5gSqFGUicHBm/t/goh0uDkMoSdIYycxvRMRDwBkRMT0zzwdMvudB65ipITeq7GSJzLwvIrYCLo6IUzPzuMy8OyKuouq/7x9ctMPHFnBJksaYrbhaWETEocALqFF/LgO+D3yLag3/I7AT8JLMvGNQMQ4jE3BJkiTNs4g4EHgbNcnOesCOwNeBC4AjgQnAOZl53cCCHFIm4JIkSXpMo8a8Xw54GfC3zDwvIpYGtgReCxwO3GMn2kdnDbgkSZLmaFTyfQSwGLAEcFhEfDsz/xgRV1Kzmz4lM/8+wHCHngm4JEmS5qgn+X4tcDCwd2b+rrV8/1dEHAs8E1gROx4/JhNwSZIkPaaIWJLqcHkCcH9EHE6Nc78tcCqwLHC4HS4fmzXgkiRJmisRMYWa5XIacCNwKzXj6weAf2amww3OBVvAJUmSNLfOAa6ihtn8c0S8DPg34AGT77lnC7gkSZLmSZvl9VXAMcABmXn9YCOav9gCLkmSpHm1BPAQNcnODYMOZn5jC7gkSZLm2ajp6DUPTMAlSZKkDo0bdACSJEnSwsQEXJIkSeqQCbgkSZLUIRNwSVJfRMQOEbHtoOOQpGFjAi5J6pcdqCmqJUk9TMAlaSERERdGxJUR8Ys2nTQRsVtE/DwiromI77Vly0TEZyLiuoi4NiL+rS1/fkT8uD3+yxGxTFt+S0S8uy2/LiI2iIhJ1HTVx0bE1RHxnAG9bUkaOg5DKEkLiYh4Ups6ekngZ8DOwFTguZn52577PwiMz8xj2vNWBBYBvgK8IDPvi4i3tMe8JyJuAT6UmadHxBHAFpn56og4Ebg3M0/p/M1K0hBzJkxJWngcHRF7t+trAFOAH2bmbwEy88/tvucB+488KTP/EhEvAjYC/jciABYHftzzv7/S/l4J7NO3dyBJCwATcElaCETEDlRi/azM/EdEfB+4Blh/dg8HRp8eDeA7mXnAo7zEA+3vDNy3SNIcWQMuSQuH5YG/tOR7A2AbYDywfUSsDVWi0h77beCokSe2EpSfANtFxLpt2VIR8bTHeM17gGXH9m1I0vzPBFySFg7fAhaNiGuBk6iE+m6qDOUrEXEN8MX22PcCK0bE9W35jpl5N3Aw8Pn2P34CbPAYr/k1YG87YUrSI9kJU5IkSeqQLeCSJElSh0zAJUmSpA6ZgEuSJEkdMgGXJEmSOmQCLkmSJHXIBFySJEnqkAm4JEmS1CETcEmSJKlD/x/uj4T5zrqzigAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(12,8))\n", "ax = sns.histplot(x='accent',data=df_features,hue='gender')\n", "plt.xticks(rotation=45)" ] }, { "cell_type": "code", "execution_count": 15, "id": "b4dc03c3", "metadata": {}, "outputs": [], "source": [ "### dropping the accent column because of the imbalanced dataset\n", "df_features = df_features.drop('accent',axis=1)" ] }, { "cell_type": "markdown", "id": "dcf7e980", "metadata": {}, "source": [ "Label 0: female || 1: male" ] }, { "cell_type": "code", "execution_count": 16, "id": "dd00f6d3", "metadata": {}, "outputs": [], "source": [ "### hot encoding the gender attribute\n", "gender = pd.get_dummies(df_features['gender'],drop_first=True)\n", "df_features = df_features.drop('gender',axis=1)\n", "df_features = pd.concat([df_features,gender],axis=1)" ] }, { "cell_type": "markdown", "id": "ae8c6038", "metadata": {}, "source": [ "Label 7: twenties ||\n", "6: thirties ||\n", "2: fourties ||\n", "1: fifties ||\n", "4: sixties ||\n", "5: teens ||\n", "3: seventies ||\n", "0: eighties " ] }, { "cell_type": "code", "execution_count": 17, "id": "83473b61", "metadata": {}, "outputs": [], "source": [ "from sklearn.preprocessing import LabelEncoder" ] }, { "cell_type": "code", "execution_count": 22, "id": "30fb7c14", "metadata": {}, "outputs": [], "source": [ "### label encoding the age attribute\n", "encoding = LabelEncoder()\n", "encoding.fit(df_features['age'])\n", "age = encoding.transform(df_features['age'])\n", "age = pd.DataFrame(age,columns=['age_label'])\n", "df_features = pd.concat([df_features,age],axis=1)" ] }, { "cell_type": "code", "execution_count": 24, "id": "410f6638", "metadata": {}, "outputs": [], "source": [ "### hot encoding the age attribute\n", "age = pd.get_dummies(df_features['age'],drop_first=True)\n", "df_features = df_features.drop('age',axis=1)\n", "df_features = pd.concat([df_features,age],axis=1)" ] }, { "cell_type": "code", "execution_count": 25, "id": "d933fbfa", "metadata": {}, "outputs": [], "source": [ "df_features.to_csv('features_data.csv',index=False)" ] }, { "cell_type": "code", "execution_count": 3, "id": "d68b3a01", "metadata": {}, "outputs": [], "source": [ "df_features = pd.read_csv('features_data.csv')" ] }, { "cell_type": "code", "execution_count": 4, "id": "18ef8a1a", "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", " \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", "
Feature_1Feature_2Feature_3Feature_4Feature_5Feature_6Feature_7Feature_8Feature_9Feature_10...Feature_30maleage_labelfiftiesfourtiesseventiessixtiesteensthirtiestwenties
0-583.10974100.3704500.94325548.706882-10.5407710.412921-18.057110-8.326262-1.521946-12.522870...-2.170289070000001
1-394.0438099.290730-38.35684636.20208713.018513-0.332277-30.521050-24.611736-20.024382-8.018195...-1.527913130010000
2-329.9270689.804886-93.25532053.524906-14.073632-17.782843-30.973644-11.1152981.704327-15.689195...-1.986013060000010
3-544.4983080.18797011.45608926.1494988.8674084.068777-5.959950-0.991863-5.118737-1.111087...2.014324140001000
4-265.77216105.1039359.27538727.4940171.30829328.853981-11.55351219.866306-9.07240516.467325...-0.406267111000000
\n", "

5 rows × 39 columns

\n", "
" ], "text/plain": [ " Feature_1 Feature_2 Feature_3 Feature_4 Feature_5 Feature_6 \\\n", "0 -583.10974 100.370450 0.943255 48.706882 -10.540771 0.412921 \n", "1 -394.04380 99.290730 -38.356846 36.202087 13.018513 -0.332277 \n", "2 -329.92706 89.804886 -93.255320 53.524906 -14.073632 -17.782843 \n", "3 -544.49830 80.187970 11.456089 26.149498 8.867408 4.068777 \n", "4 -265.77216 105.103935 9.275387 27.494017 1.308293 28.853981 \n", "\n", " Feature_7 Feature_8 Feature_9 Feature_10 ... Feature_30 male \\\n", "0 -18.057110 -8.326262 -1.521946 -12.522870 ... -2.170289 0 \n", "1 -30.521050 -24.611736 -20.024382 -8.018195 ... -1.527913 1 \n", "2 -30.973644 -11.115298 1.704327 -15.689195 ... -1.986013 0 \n", "3 -5.959950 -0.991863 -5.118737 -1.111087 ... 2.014324 1 \n", "4 -11.553512 19.866306 -9.072405 16.467325 ... -0.406267 1 \n", "\n", " age_label fifties fourties seventies sixties teens thirties twenties \n", "0 7 0 0 0 0 0 0 1 \n", "1 3 0 0 1 0 0 0 0 \n", "2 6 0 0 0 0 0 1 0 \n", "3 4 0 0 0 1 0 0 0 \n", "4 1 1 0 0 0 0 0 0 \n", "\n", "[5 rows x 39 columns]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_features.head()" ] }, { "cell_type": "markdown", "id": "985af0f9", "metadata": {}, "source": [ "#### Train Test Split" ] }, { "cell_type": "code", "execution_count": 5, "id": "cd68791b", "metadata": {}, "outputs": [], "source": [ "df_features = df_features.drop(['fifties','fourties','seventies','sixties','teens','thirties','twenties'], axis = 1)" ] }, { "cell_type": "code", "execution_count": 6, "id": "d098b6e2", "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", " \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", "
Feature_1Feature_2Feature_3Feature_4Feature_5Feature_6Feature_7Feature_8Feature_9Feature_10...Feature_23Feature_24Feature_25Feature_26Feature_27Feature_28Feature_29Feature_30maleage_label
0-583.10974100.3704500.94325548.706882-10.5407710.412921-18.057110-8.326262-1.521946-12.522870...-10.564928-2.081630-4.345325-5.5432710.867665-2.325722-4.993744-2.17028907
1-394.0438099.290730-38.35684636.20208713.018513-0.332277-30.521050-24.611736-20.024382-8.018195...-1.825251-5.490204-5.979488-5.525754-3.199488-12.2292312.510893-1.52791313
2-329.9270689.804886-93.25532053.524906-14.073632-17.782843-30.973644-11.1152981.704327-15.689195...-2.550232-2.942057-3.8995095.903738-2.4959304.2841842.987215-1.98601306
3-544.4983080.18797011.45608926.1494988.8674084.068777-5.959950-0.991863-5.118737-1.111087...-4.689697-3.014753-1.035969-4.900939-1.521831-3.017688-1.5105142.01432414
4-265.77216105.1039359.27538727.4940171.30829328.853981-11.55351219.866306-9.07240516.467325...-0.5866171.660018-2.5508891.886928-5.2480731.555064-0.886034-0.40626711
\n", "

5 rows × 32 columns

\n", "
" ], "text/plain": [ " Feature_1 Feature_2 Feature_3 Feature_4 Feature_5 Feature_6 \\\n", "0 -583.10974 100.370450 0.943255 48.706882 -10.540771 0.412921 \n", "1 -394.04380 99.290730 -38.356846 36.202087 13.018513 -0.332277 \n", "2 -329.92706 89.804886 -93.255320 53.524906 -14.073632 -17.782843 \n", "3 -544.49830 80.187970 11.456089 26.149498 8.867408 4.068777 \n", "4 -265.77216 105.103935 9.275387 27.494017 1.308293 28.853981 \n", "\n", " Feature_7 Feature_8 Feature_9 Feature_10 ... Feature_23 Feature_24 \\\n", "0 -18.057110 -8.326262 -1.521946 -12.522870 ... -10.564928 -2.081630 \n", "1 -30.521050 -24.611736 -20.024382 -8.018195 ... -1.825251 -5.490204 \n", "2 -30.973644 -11.115298 1.704327 -15.689195 ... -2.550232 -2.942057 \n", "3 -5.959950 -0.991863 -5.118737 -1.111087 ... -4.689697 -3.014753 \n", "4 -11.553512 19.866306 -9.072405 16.467325 ... -0.586617 1.660018 \n", "\n", " Feature_25 Feature_26 Feature_27 Feature_28 Feature_29 Feature_30 \\\n", "0 -4.345325 -5.543271 0.867665 -2.325722 -4.993744 -2.170289 \n", "1 -5.979488 -5.525754 -3.199488 -12.229231 2.510893 -1.527913 \n", "2 -3.899509 5.903738 -2.495930 4.284184 2.987215 -1.986013 \n", "3 -1.035969 -4.900939 -1.521831 -3.017688 -1.510514 2.014324 \n", "4 -2.550889 1.886928 -5.248073 1.555064 -0.886034 -0.406267 \n", "\n", " male age_label \n", "0 0 7 \n", "1 1 3 \n", "2 0 6 \n", "3 1 4 \n", "4 1 1 \n", "\n", "[5 rows x 32 columns]" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_features.head()" ] }, { "cell_type": "code", "execution_count": 7, "id": "74ee0331", "metadata": {}, "outputs": [], "source": [ "X = df_features.drop(['male','age_label'],axis=1)\n", "y = df_features[['male','age_label']]" ] }, { "cell_type": "code", "execution_count": 8, "id": "740eda60", "metadata": {}, "outputs": [], "source": [ "from sklearn.model_selection import train_test_split" ] }, { "cell_type": "code", "execution_count": 9, "id": "2c4da3cc", "metadata": {}, "outputs": [], "source": [ "X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.1,random_state=101)" ] }, { "cell_type": "code", "execution_count": 10, "id": "57608c06", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(62914, 30)\n", "(6991, 30)\n", "(62914, 2)\n", "(6991, 2)\n" ] } ], "source": [ "print(X_train.shape)\n", "print(X_test.shape)\n", "print(y_train.shape)\n", "print(y_test.shape)" ] }, { "cell_type": "code", "execution_count": 11, "id": "276fbaeb", "metadata": {}, "outputs": [], "source": [ "col_name = list(X_train.columns)" ] }, { "cell_type": "markdown", "id": "1e45d947", "metadata": {}, "source": [ "#### Feature Normalization" ] }, { "cell_type": "code", "execution_count": 12, "id": "91ca8369", "metadata": {}, "outputs": [], "source": [ "from sklearn.preprocessing import StandardScaler" ] }, { "cell_type": "code", "execution_count": 13, "id": "731977d2", "metadata": {}, "outputs": [], "source": [ "scaler = StandardScaler()\n", "X_train = scaler.fit_transform(X_train)\n", "X_test = scaler.transform(X_test)" ] }, { "cell_type": "code", "execution_count": 17, "id": "d7db8407", "metadata": {}, "outputs": [], "source": [ "sio.dump(scaler, 'scaler')" ] }, { "cell_type": "code", "execution_count": 18, "id": "3e0a9560", "metadata": {}, "outputs": [], "source": [ "X_train = pd.DataFrame(X_train,columns=col_name)\n", "X_test = pd.DataFrame(X_test,columns=col_name)" ] }, { "cell_type": "code", "execution_count": 19, "id": "248ae287", "metadata": {}, "outputs": [], "source": [ "y_train = y_train.reset_index()\n", "y_train = y_train.drop('index',axis=1)\n", "\n", "y_test = y_test.reset_index()\n", "y_test = y_test.drop('index',axis=1)" ] }, { "cell_type": "code", "execution_count": 41, "id": "6c90475b", "metadata": {}, "outputs": [], "source": [ "X_train.to_csv('X_train.csv',index=False)\n", "X_test.to_csv('X_test.csv',index=False)\n", "y_train.to_csv('y_train.csv',index=False)\n", "y_test.to_csv('y_test.csv',index=False)" ] }, { "cell_type": "markdown", "id": "73bcfbbb", "metadata": {}, "source": [ "### Gender Classification" ] }, { "cell_type": "code", "execution_count": 2, "id": "76c8537e", "metadata": {}, "outputs": [], "source": [ "X_train = pd.read_csv('X_train.csv')\n", "X_test = pd.read_csv('X_test.csv')\n", "y_train = pd.read_csv('y_train.csv')\n", "y_test = pd.read_csv('y_test.csv')" ] }, { "cell_type": "code", "execution_count": 20, "id": "3b2587ac", "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", " \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", "
Feature_1Feature_2Feature_3Feature_4Feature_5Feature_6Feature_7Feature_8Feature_9Feature_10...Feature_21Feature_22Feature_23Feature_24Feature_25Feature_26Feature_27Feature_28Feature_29Feature_30
00.5643950.353829-0.2789280.244259-0.181786-0.359068-0.4349220.421213-2.619306-0.233284...-0.752095-0.047534-1.596541-2.185107-0.475254-2.322643-0.664499-1.974565-0.8528450.497673
1-1.267875-2.791355-0.0870761.215719-0.609884-0.713474-0.228118-1.0441300.946386-0.418563...1.0120541.1523400.9626491.0602071.5687581.9717191.2155562.2483570.7644810.759086
21.255162-0.1926090.540949-1.7154350.2744402.556369-1.5192880.040003-0.1161920.200872...0.452080-0.5119770.175765-0.709609-1.761413-0.222903-0.364405-1.2242400.260271-0.052288
3-1.142260-0.0584410.0731800.767581-0.7071620.221958-0.0941280.026847-0.7135160.806025...-1.7074730.4210670.2106890.256840-0.117659-0.285450-1.195636-0.097772-0.528391-0.231970
4-0.242462-0.681530-0.062332-0.463858-1.4583970.806520-0.6852240.200540-0.0581700.478191...0.8206140.000589-0.1489460.2076310.275857-0.189223-0.384763-0.2252400.261362-0.031957
\n", "

5 rows × 30 columns

\n", "
" ], "text/plain": [ " Feature_1 Feature_2 Feature_3 Feature_4 Feature_5 Feature_6 \\\n", "0 0.564395 0.353829 -0.278928 0.244259 -0.181786 -0.359068 \n", "1 -1.267875 -2.791355 -0.087076 1.215719 -0.609884 -0.713474 \n", "2 1.255162 -0.192609 0.540949 -1.715435 0.274440 2.556369 \n", "3 -1.142260 -0.058441 0.073180 0.767581 -0.707162 0.221958 \n", "4 -0.242462 -0.681530 -0.062332 -0.463858 -1.458397 0.806520 \n", "\n", " Feature_7 Feature_8 Feature_9 Feature_10 ... Feature_21 Feature_22 \\\n", "0 -0.434922 0.421213 -2.619306 -0.233284 ... -0.752095 -0.047534 \n", "1 -0.228118 -1.044130 0.946386 -0.418563 ... 1.012054 1.152340 \n", "2 -1.519288 0.040003 -0.116192 0.200872 ... 0.452080 -0.511977 \n", "3 -0.094128 0.026847 -0.713516 0.806025 ... -1.707473 0.421067 \n", "4 -0.685224 0.200540 -0.058170 0.478191 ... 0.820614 0.000589 \n", "\n", " Feature_23 Feature_24 Feature_25 Feature_26 Feature_27 Feature_28 \\\n", "0 -1.596541 -2.185107 -0.475254 -2.322643 -0.664499 -1.974565 \n", "1 0.962649 1.060207 1.568758 1.971719 1.215556 2.248357 \n", "2 0.175765 -0.709609 -1.761413 -0.222903 -0.364405 -1.224240 \n", "3 0.210689 0.256840 -0.117659 -0.285450 -1.195636 -0.097772 \n", "4 -0.148946 0.207631 0.275857 -0.189223 -0.384763 -0.225240 \n", "\n", " Feature_29 Feature_30 \n", "0 -0.852845 0.497673 \n", "1 0.764481 0.759086 \n", "2 0.260271 -0.052288 \n", "3 -0.528391 -0.231970 \n", "4 0.261362 -0.031957 \n", "\n", "[5 rows x 30 columns]" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_train.head()" ] }, { "cell_type": "code", "execution_count": 21, "id": "20b7a0f2", "metadata": {}, "outputs": [], "source": [ "y_gender_train = y_train['male']\n", "y_gender_test = y_test['male']" ] }, { "cell_type": "markdown", "id": "16c5bd19", "metadata": {}, "source": [ "##### Logistic Regression" ] }, { "cell_type": "code", "execution_count": 45, "id": "4fec5404", "metadata": {}, "outputs": [], "source": [ "from sklearn.linear_model import LogisticRegression" ] }, { "cell_type": "code", "execution_count": 46, "id": "1c2f33c0", "metadata": {}, "outputs": [], "source": [ "model = LogisticRegression()\n", "model.fit(X_train,y_gender_train)\n", "pred = model.predict(X_test)" ] }, { "cell_type": "code", "execution_count": 47, "id": "b003003e", "metadata": {}, "outputs": [], "source": [ "from sklearn.metrics import f1_score, accuracy_score, classification_report, confusion_matrix" ] }, { "cell_type": "code", "execution_count": 48, "id": "37f18f04", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.8915752278222058\n", "\n", "0.8332141324560148\n", "\n", "[[1031 317]\n", " [ 849 4794]]\n", "\n", " precision recall f1-score support\n", "\n", " 0 0.55 0.76 0.64 1348\n", " 1 0.94 0.85 0.89 5643\n", "\n", " accuracy 0.83 6991\n", " macro avg 0.74 0.81 0.77 6991\n", "weighted avg 0.86 0.83 0.84 6991\n", "\n" ] } ], "source": [ "print(f1_score(pred,y_gender_test))\n", "print()\n", "print(accuracy_score(pred,y_gender_test))\n", "print()\n", "print(confusion_matrix(pred,y_gender_test))\n", "print()\n", "print(classification_report(pred,y_gender_test))" ] }, { "cell_type": "markdown", "id": "fecb4655", "metadata": {}, "source": [ "##### KNN" ] }, { "cell_type": "code", "execution_count": 22, "id": "1d87fa51", "metadata": {}, "outputs": [], "source": [ "from sklearn.neighbors import KNeighborsClassifier" ] }, { "cell_type": "code", "execution_count": 24, "id": "0e338994", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\Dell\\anaconda3\\Lib\\site-packages\\sklearn\\base.py:464: UserWarning: X does not have valid feature names, but KNeighborsClassifier was fitted with feature names\n", " warnings.warn(\n" ] } ], "source": [ "model = KNeighborsClassifier()\n", "model.fit(X_train,y_gender_train)\n", "pred = model.predict(X_test.values)" ] }, { "cell_type": "code", "execution_count": 25, "id": "8a0c5634", "metadata": {}, "outputs": [], "source": [ "from sklearn.metrics import f1_score, accuracy_score, confusion_matrix, classification_report" ] }, { "cell_type": "code", "execution_count": 26, "id": "57beade9", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.9548720896809427\n", "\n", "0.9326276641396081\n", "\n", "[[1537 128]\n", " [ 343 4983]]\n", "\n", " precision recall f1-score support\n", "\n", " 0 0.82 0.92 0.87 1665\n", " 1 0.97 0.94 0.95 5326\n", "\n", " accuracy 0.93 6991\n", " macro avg 0.90 0.93 0.91 6991\n", "weighted avg 0.94 0.93 0.93 6991\n", "\n" ] } ], "source": [ "print(f1_score(pred,y_gender_test))\n", "print()\n", "print(accuracy_score(pred,y_gender_test))\n", "print()\n", "print(confusion_matrix(pred,y_gender_test))\n", "print()\n", "print(classification_report(pred,y_gender_test))" ] }, { "cell_type": "code", "execution_count": 27, "id": "45b755ad", "metadata": {}, "outputs": [], "source": [ "sio.dump(model,'KNN_gender_detection')" ] }, { "cell_type": "markdown", "id": "0a0e6e65", "metadata": {}, "source": [ "##### SVM" ] }, { "cell_type": "code", "execution_count": 52, "id": "73d7c8f0", "metadata": {}, "outputs": [], "source": [ "from sklearn.svm import SVC" ] }, { "cell_type": "code", "execution_count": null, "id": "b4154e5b", "metadata": {}, "outputs": [], "source": [ "model = SVC(C=100)\n", "model.fit(X_train,y_gender_train)\n", "pred = model.predict(X_test)" ] }, { "cell_type": "code", "execution_count": 8, "id": "28e55925", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.9528063701689649\n", "\n", "0.9304820483478758\n", "\n", "[[1599 205]\n", " [ 281 4906]]\n", "\n", " precision recall f1-score support\n", "\n", " 0 0.85 0.89 0.87 1804\n", " 1 0.96 0.95 0.95 5187\n", "\n", " accuracy 0.93 6991\n", " macro avg 0.91 0.92 0.91 6991\n", "weighted avg 0.93 0.93 0.93 6991\n", "\n" ] } ], "source": [ "print(f1_score(pred,y_gender_test))\n", "print()\n", "print(accuracy_score(pred,y_gender_test))\n", "print()\n", "print(confusion_matrix(pred,y_gender_test))\n", "print()\n", "print(classification_report(pred,y_gender_test))" ] }, { "cell_type": "markdown", "id": "cbca922a", "metadata": {}, "source": [ "##### Decision Tree" ] }, { "cell_type": "code", "execution_count": 9, "id": "3d22031e", "metadata": {}, "outputs": [], "source": [ "from sklearn.tree import DecisionTreeClassifier" ] }, { "cell_type": "code", "execution_count": 10, "id": "b86e6146", "metadata": {}, "outputs": [], "source": [ "model = DecisionTreeClassifier()\n", "model.fit(X_train,y_gender_train)\n", "pred = model.predict(X_test)" ] }, { "cell_type": "code", "execution_count": 11, "id": "c658bb49", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.8603625673689368\n", "\n", "0.7961664997854384\n", "\n", "[[1176 721]\n", " [ 704 4390]]\n", "\n", " precision recall f1-score support\n", "\n", " 0 0.63 0.62 0.62 1897\n", " 1 0.86 0.86 0.86 5094\n", "\n", " accuracy 0.80 6991\n", " macro avg 0.74 0.74 0.74 6991\n", "weighted avg 0.80 0.80 0.80 6991\n", "\n" ] } ], "source": [ "print(f1_score(pred,y_gender_test))\n", "print()\n", "print(accuracy_score(pred,y_gender_test))\n", "print()\n", "print(confusion_matrix(pred,y_gender_test))\n", "print()\n", "print(classification_report(pred,y_gender_test))" ] }, { "cell_type": "markdown", "id": "2a2c39ae", "metadata": {}, "source": [ "##### Bagging Decision Tree" ] }, { "cell_type": "code", "execution_count": 12, "id": "899a56eb", "metadata": {}, "outputs": [], "source": [ "from sklearn.ensemble import BaggingClassifier\n", "from sklearn.tree import DecisionTreeClassifier" ] }, { "cell_type": "code", "execution_count": 13, "id": "db548555", "metadata": {}, "outputs": [], "source": [ "model = BaggingClassifier(DecisionTreeClassifier(),max_samples=0.5,max_features=1.0,n_estimators=10)\n", "model.fit(X_train, y_gender_train)\n", "pred = model.predict(X_test)" ] }, { "cell_type": "code", "execution_count": 197, "id": "b36a613c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.9014679075122326\n", "\n", "0.8530968387927336\n", "\n", "[[1266 413]\n", " [ 614 4698]]\n", "\n", " precision recall f1-score support\n", "\n", " 0 0.67 0.75 0.71 1679\n", " 1 0.92 0.88 0.90 5312\n", "\n", " accuracy 0.85 6991\n", " macro avg 0.80 0.82 0.81 6991\n", "weighted avg 0.86 0.85 0.86 6991\n", "\n" ] } ], "source": [ "print(f1_score(pred,y_gender_test))\n", "print()\n", "print(accuracy_score(pred,y_gender_test))\n", "print()\n", "print(confusion_matrix(pred,y_gender_test))\n", "print()\n", "print(classification_report(pred,y_gender_test))" ] }, { "cell_type": "markdown", "id": "7b1086e6", "metadata": {}, "source": [ "##### Boosting Decision Tree" ] }, { "cell_type": "code", "execution_count": 15, "id": "d4382dcb", "metadata": {}, "outputs": [], "source": [ "from sklearn.ensemble import AdaBoostClassifier\n", "from sklearn.tree import DecisionTreeClassifier" ] }, { "cell_type": "code", "execution_count": 16, "id": "6bac0b1c", "metadata": {}, "outputs": [], "source": [ "model = AdaBoostClassifier(DecisionTreeClassifier(min_samples_split=10,max_depth=4),n_estimators=10,learning_rate=0.6)\n", "model.fit(X_train, y_gender_train)\n", "pred = model.predict(X_test)" ] }, { "cell_type": "code", "execution_count": 17, "id": "b4c24ab0", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.89351376574895\n", "\n", "0.8367901587755686\n", "\n", "[[1063 324]\n", " [ 817 4787]]\n", "\n", " precision recall f1-score support\n", "\n", " 0 0.57 0.77 0.65 1387\n", " 1 0.94 0.85 0.89 5604\n", "\n", " accuracy 0.84 6991\n", " macro avg 0.75 0.81 0.77 6991\n", "weighted avg 0.86 0.84 0.85 6991\n", "\n" ] } ], "source": [ "print(f1_score(pred,y_gender_test))\n", "print()\n", "print(accuracy_score(pred,y_gender_test))\n", "print()\n", "print(confusion_matrix(pred,y_gender_test))\n", "print()\n", "print(classification_report(pred,y_gender_test))" ] }, { "cell_type": "markdown", "id": "69d13096", "metadata": {}, "source": [ "##### Random Forest Classifier" ] }, { "cell_type": "code", "execution_count": 18, "id": "76dbae17", "metadata": {}, "outputs": [], "source": [ "from sklearn.ensemble import RandomForestClassifier" ] }, { "cell_type": "code", "execution_count": 19, "id": "ca837583", "metadata": {}, "outputs": [], "source": [ "model = RandomForestClassifier()\n", "model.fit(X_train,y_gender_train)\n", "pred = model.predict(X_test)" ] }, { "cell_type": "code", "execution_count": 203, "id": "7f914a52", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.9218778994247543\n", "\n", "0.8795594335574309\n", "\n", "[[1181 143]\n", " [ 699 4968]]\n", "\n", " precision recall f1-score support\n", "\n", " 0 0.63 0.89 0.74 1324\n", " 1 0.97 0.88 0.92 5667\n", "\n", " accuracy 0.88 6991\n", " macro avg 0.80 0.88 0.83 6991\n", "weighted avg 0.91 0.88 0.89 6991\n", "\n" ] } ], "source": [ "print(f1_score(pred,y_gender_test))\n", "print()\n", "print(accuracy_score(pred,y_gender_test))\n", "print()\n", "print(confusion_matrix(pred,y_gender_test))\n", "print()\n", "print(classification_report(pred,y_gender_test))" ] }, { "cell_type": "markdown", "id": "fb222ca8", "metadata": {}, "source": [ "##### Neural Network " ] }, { "cell_type": "code", "execution_count": 5, "id": "351ddbd2", "metadata": {}, "outputs": [], "source": [ "from keras import layers\n", "from keras import models\n", "from keras import optimizers\n", "from keras import losses\n", "from keras import metrics\n", "from tensorflow.keras import regularizers\n", "import tensorflow as tf\n", "from tensorflow.keras.models import Sequential\n", "from tensorflow.keras.layers import Dense,Dropout\n", "from tensorflow.keras.callbacks import EarlyStopping" ] }, { "cell_type": "code", "execution_count": 118, "id": "32f861bd", "metadata": {}, "outputs": [], "source": [ "# CODE HERE\n", "model = Sequential()\n", "\n", "model.add(Dense(30,activation='relu'))\n", "#model.add(Dropout(0.2))\n", "#model.add(Dense(16,activation='relu',kernel_regularizer = regularizers.l2(0.01)))\n", "#model.add(Dropout(0.2))\n", "#model.add(Dense(7,activation='relu'))\n", "#model.add(Dropout(0.2))\n", "#model.add(Dense(18,activation='relu'))\n", "#model.add(Dropout(0.2))\n", "#model.add(Dense(9,activation='relu'))\n", "#model.add(Dropout(0.2))\n", "#model.add(Dense(4,activation='relu'))\n", "#model.add(Dropout(0.2))\n", "#model.add(Dense(2,activation='relu'))\n", "#model.add(Dropout(0.2))\n", "\n", "model.add(Dense(1,activation='sigmoid'))" ] }, { "cell_type": "code", "execution_count": 119, "id": "380ed644", "metadata": {}, "outputs": [], "source": [ "model.compile(optimizer='rmsprop',loss='binary_crossentropy',metrics=['accuracy'])" ] }, { "cell_type": "code", "execution_count": 120, "id": "625a9efa", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/90\n", "246/246 [==============================] - 3s 6ms/step - loss: 0.4370 - accuracy: 0.8056 - val_loss: 0.3802 - val_accuracy: 0.8431\n", "Epoch 2/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.3585 - accuracy: 0.8514 - val_loss: 0.3550 - val_accuracy: 0.8517\n", "Epoch 3/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.3408 - accuracy: 0.8582 - val_loss: 0.3432 - val_accuracy: 0.8582\n", "Epoch 4/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.3298 - accuracy: 0.8633 - val_loss: 0.3345 - val_accuracy: 0.8600\n", "Epoch 5/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.3218 - accuracy: 0.8672 - val_loss: 0.3273 - val_accuracy: 0.8640\n", "Epoch 6/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.3159 - accuracy: 0.8699 - val_loss: 0.3221 - val_accuracy: 0.8667\n", "Epoch 7/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.3111 - accuracy: 0.8722 - val_loss: 0.3189 - val_accuracy: 0.8654\n", "Epoch 8/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.3075 - accuracy: 0.8732 - val_loss: 0.3158 - val_accuracy: 0.8705\n", "Epoch 9/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.3045 - accuracy: 0.8740 - val_loss: 0.3122 - val_accuracy: 0.8701\n", "Epoch 10/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.3015 - accuracy: 0.8756 - val_loss: 0.3102 - val_accuracy: 0.8697\n", "Epoch 11/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2991 - accuracy: 0.8765 - val_loss: 0.3094 - val_accuracy: 0.8697\n", "Epoch 12/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2968 - accuracy: 0.8778 - val_loss: 0.3080 - val_accuracy: 0.8730\n", "Epoch 13/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2948 - accuracy: 0.8782 - val_loss: 0.3050 - val_accuracy: 0.8727\n", "Epoch 14/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2929 - accuracy: 0.8791 - val_loss: 0.3051 - val_accuracy: 0.8718\n", "Epoch 15/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2909 - accuracy: 0.8797 - val_loss: 0.3021 - val_accuracy: 0.8757\n", "Epoch 16/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2894 - accuracy: 0.8803 - val_loss: 0.3025 - val_accuracy: 0.8728\n", "Epoch 17/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2880 - accuracy: 0.8813 - val_loss: 0.3001 - val_accuracy: 0.8751\n", "Epoch 18/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2865 - accuracy: 0.8818 - val_loss: 0.2988 - val_accuracy: 0.8750\n", "Epoch 19/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2852 - accuracy: 0.8826 - val_loss: 0.2998 - val_accuracy: 0.8753\n", "Epoch 20/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2841 - accuracy: 0.8829 - val_loss: 0.2970 - val_accuracy: 0.8763\n", "Epoch 21/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2828 - accuracy: 0.8840 - val_loss: 0.2972 - val_accuracy: 0.8761\n", "Epoch 22/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2819 - accuracy: 0.8843 - val_loss: 0.2956 - val_accuracy: 0.8773\n", "Epoch 23/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2807 - accuracy: 0.8845 - val_loss: 0.2952 - val_accuracy: 0.8757\n", "Epoch 24/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2797 - accuracy: 0.8849 - val_loss: 0.2944 - val_accuracy: 0.8786\n", "Epoch 25/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2790 - accuracy: 0.8851 - val_loss: 0.2937 - val_accuracy: 0.8767\n", "Epoch 26/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2780 - accuracy: 0.8858 - val_loss: 0.2941 - val_accuracy: 0.8774\n", "Epoch 27/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2773 - accuracy: 0.8853 - val_loss: 0.2921 - val_accuracy: 0.8780\n", "Epoch 28/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2763 - accuracy: 0.8859 - val_loss: 0.2971 - val_accuracy: 0.8756\n", "Epoch 29/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2758 - accuracy: 0.8859 - val_loss: 0.2935 - val_accuracy: 0.8787\n", "Epoch 30/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2749 - accuracy: 0.8866 - val_loss: 0.2925 - val_accuracy: 0.8788\n", "Epoch 31/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2742 - accuracy: 0.8877 - val_loss: 0.2923 - val_accuracy: 0.8784\n", "Epoch 32/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2735 - accuracy: 0.8874 - val_loss: 0.2907 - val_accuracy: 0.8776\n", "Epoch 33/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2727 - accuracy: 0.8874 - val_loss: 0.2911 - val_accuracy: 0.8784\n", "Epoch 34/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2721 - accuracy: 0.8878 - val_loss: 0.2900 - val_accuracy: 0.8804\n", "Epoch 35/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2715 - accuracy: 0.8878 - val_loss: 0.2906 - val_accuracy: 0.8797\n", "Epoch 36/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2709 - accuracy: 0.8881 - val_loss: 0.2891 - val_accuracy: 0.8793\n", "Epoch 37/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2703 - accuracy: 0.8885 - val_loss: 0.2895 - val_accuracy: 0.8788\n", "Epoch 38/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2698 - accuracy: 0.8885 - val_loss: 0.2883 - val_accuracy: 0.8808\n", "Epoch 39/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2690 - accuracy: 0.8894 - val_loss: 0.2879 - val_accuracy: 0.8814\n", "Epoch 40/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2684 - accuracy: 0.8890 - val_loss: 0.2871 - val_accuracy: 0.8810\n", "Epoch 41/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2682 - accuracy: 0.8893 - val_loss: 0.2861 - val_accuracy: 0.8808\n", "Epoch 42/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2674 - accuracy: 0.8907 - val_loss: 0.2879 - val_accuracy: 0.8807\n", "Epoch 43/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2673 - accuracy: 0.8894 - val_loss: 0.2862 - val_accuracy: 0.8811\n", "Epoch 44/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2665 - accuracy: 0.8901 - val_loss: 0.2860 - val_accuracy: 0.8830\n", "Epoch 45/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2663 - accuracy: 0.8900 - val_loss: 0.2865 - val_accuracy: 0.8813\n", "Epoch 46/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2658 - accuracy: 0.8905 - val_loss: 0.2865 - val_accuracy: 0.8823\n", "Epoch 47/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2654 - accuracy: 0.8906 - val_loss: 0.2859 - val_accuracy: 0.8811\n", "Epoch 48/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2650 - accuracy: 0.8906 - val_loss: 0.2847 - val_accuracy: 0.8839\n", "Epoch 49/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2646 - accuracy: 0.8905 - val_loss: 0.2847 - val_accuracy: 0.8823\n", "Epoch 50/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2643 - accuracy: 0.8915 - val_loss: 0.2849 - val_accuracy: 0.8831\n", "Epoch 51/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2639 - accuracy: 0.8907 - val_loss: 0.2856 - val_accuracy: 0.8816\n", "Epoch 52/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2635 - accuracy: 0.8910 - val_loss: 0.2844 - val_accuracy: 0.8841\n", "Epoch 53/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2630 - accuracy: 0.8919 - val_loss: 0.2837 - val_accuracy: 0.8834\n", "Epoch 54/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2629 - accuracy: 0.8908 - val_loss: 0.2846 - val_accuracy: 0.8841\n", "Epoch 55/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2624 - accuracy: 0.8915 - val_loss: 0.2838 - val_accuracy: 0.8830\n", "Epoch 56/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2621 - accuracy: 0.8919 - val_loss: 0.2829 - val_accuracy: 0.8839\n", "Epoch 57/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2618 - accuracy: 0.8919 - val_loss: 0.2825 - val_accuracy: 0.8833\n", "Epoch 58/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2615 - accuracy: 0.8920 - val_loss: 0.2854 - val_accuracy: 0.8818\n", "Epoch 59/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2614 - accuracy: 0.8929 - val_loss: 0.2833 - val_accuracy: 0.8839\n", "Epoch 60/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2611 - accuracy: 0.8924 - val_loss: 0.2822 - val_accuracy: 0.8817\n", "Epoch 61/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2608 - accuracy: 0.8919 - val_loss: 0.2816 - val_accuracy: 0.8823\n", "Epoch 62/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2604 - accuracy: 0.8925 - val_loss: 0.2827 - val_accuracy: 0.8841\n", "Epoch 63/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2600 - accuracy: 0.8921 - val_loss: 0.2830 - val_accuracy: 0.8860\n", "Epoch 64/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2598 - accuracy: 0.8930 - val_loss: 0.2824 - val_accuracy: 0.8828\n", "Epoch 65/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2595 - accuracy: 0.8929 - val_loss: 0.2816 - val_accuracy: 0.8846\n", "Epoch 66/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2594 - accuracy: 0.8937 - val_loss: 0.2824 - val_accuracy: 0.8810\n", "Epoch 67/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2590 - accuracy: 0.8935 - val_loss: 0.2824 - val_accuracy: 0.8839\n", "Epoch 68/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2588 - accuracy: 0.8940 - val_loss: 0.2836 - val_accuracy: 0.8830\n", "Epoch 69/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2586 - accuracy: 0.8936 - val_loss: 0.2815 - val_accuracy: 0.8836\n", "Epoch 70/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2585 - accuracy: 0.8940 - val_loss: 0.2805 - val_accuracy: 0.8861\n", "Epoch 71/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2581 - accuracy: 0.8937 - val_loss: 0.2834 - val_accuracy: 0.8814\n", "Epoch 72/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2579 - accuracy: 0.8946 - val_loss: 0.2843 - val_accuracy: 0.8826\n", "Epoch 73/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2578 - accuracy: 0.8937 - val_loss: 0.2817 - val_accuracy: 0.8840\n", "Epoch 74/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2575 - accuracy: 0.8941 - val_loss: 0.2813 - val_accuracy: 0.8840\n", "Epoch 75/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2573 - accuracy: 0.8941 - val_loss: 0.2814 - val_accuracy: 0.8843\n", "Epoch 76/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2572 - accuracy: 0.8937 - val_loss: 0.2828 - val_accuracy: 0.8836\n", "Epoch 77/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2571 - accuracy: 0.8938 - val_loss: 0.2822 - val_accuracy: 0.8849\n", "Epoch 78/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2568 - accuracy: 0.8943 - val_loss: 0.2822 - val_accuracy: 0.8820\n", "Epoch 79/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2566 - accuracy: 0.8948 - val_loss: 0.2826 - val_accuracy: 0.8831\n", "Epoch 80/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2564 - accuracy: 0.8949 - val_loss: 0.2821 - val_accuracy: 0.8830\n", "Epoch 81/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2565 - accuracy: 0.8946 - val_loss: 0.2810 - val_accuracy: 0.8856\n", "Epoch 82/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2561 - accuracy: 0.8949 - val_loss: 0.2823 - val_accuracy: 0.8833\n", "Epoch 83/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2562 - accuracy: 0.8944 - val_loss: 0.2811 - val_accuracy: 0.8836\n", "Epoch 84/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2558 - accuracy: 0.8947 - val_loss: 0.2800 - val_accuracy: 0.8866\n", "Epoch 85/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2559 - accuracy: 0.8944 - val_loss: 0.2806 - val_accuracy: 0.8834\n", "Epoch 86/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2556 - accuracy: 0.8950 - val_loss: 0.2822 - val_accuracy: 0.8854\n", "Epoch 87/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2552 - accuracy: 0.8955 - val_loss: 0.2820 - val_accuracy: 0.8837\n", "Epoch 88/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2553 - accuracy: 0.8949 - val_loss: 0.2795 - val_accuracy: 0.8857\n", "Epoch 89/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2552 - accuracy: 0.8955 - val_loss: 0.2814 - val_accuracy: 0.8837\n", "Epoch 90/90\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2548 - accuracy: 0.8952 - val_loss: 0.2796 - val_accuracy: 0.8849\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 120, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.fit(X_train,y_gender_train,epochs=90,batch_size=256,validation_data=(X_test,y_gender_test))" ] }, { "cell_type": "code", "execution_count": 121, "id": "b9f53792", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model: \"sequential_15\"\n", "_________________________________________________________________\n", " Layer (type) Output Shape Param # \n", "=================================================================\n", " dense_35 (Dense) (None, 30) 930 \n", " \n", " dense_36 (Dense) (None, 1) 31 \n", " \n", "=================================================================\n", "Total params: 961\n", "Trainable params: 961\n", "Non-trainable params: 0\n", "_________________________________________________________________\n", "None\n" ] } ], "source": [ "print(model.summary())" ] }, { "cell_type": "code", "execution_count": 122, "id": "26f06127", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 122, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# CODE HERE\n", "losses = pd.DataFrame(model.history.history)\n", "losses[['val_loss','loss']].plot()" ] }, { "cell_type": "code", "execution_count": 123, "id": "50dfa1e8", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "219/219 [==============================] - 1s 3ms/step\n" ] } ], "source": [ "pred = (model.predict(X_test) > 0.5).astype(\"int32\")" ] }, { "cell_type": "code", "execution_count": 124, "id": "29d417e3", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.9228705566733736\n", "\n", "0.8848519525103705\n", "\n", "[[1370 295]\n", " [ 510 4816]]\n", "\n", " precision recall f1-score support\n", "\n", " 0 0.73 0.82 0.77 1665\n", " 1 0.94 0.90 0.92 5326\n", "\n", " accuracy 0.88 6991\n", " macro avg 0.84 0.86 0.85 6991\n", "weighted avg 0.89 0.88 0.89 6991\n", "\n" ] } ], "source": [ "print(f1_score(pred,y_gender_test))\n", "print()\n", "print(accuracy_score(pred,y_gender_test))\n", "print()\n", "print(confusion_matrix(pred,y_gender_test))\n", "print()\n", "print(classification_report(pred,y_gender_test))" ] }, { "cell_type": "markdown", "id": "96f88b41", "metadata": {}, "source": [ "### Age Category Classification" ] }, { "cell_type": "code", "execution_count": 28, "id": "2232d328", "metadata": {}, "outputs": [], "source": [ "y_age_train = y_train['age_label']\n", "y_age_test = y_test['age_label']" ] }, { "cell_type": "markdown", "id": "5e60cf3c", "metadata": {}, "source": [ "##### Logistic Regression" ] }, { "cell_type": "code", "execution_count": 103, "id": "eeec6244", "metadata": {}, "outputs": [], "source": [ "from sklearn.linear_model import LogisticRegression" ] }, { "cell_type": "code", "execution_count": 104, "id": "80fecbf6", "metadata": {}, "outputs": [], "source": [ "model = LogisticRegression(max_iter=10000000000000)\n", "model.fit(X_train,y_age_train)\n", "pred = model.predict(X_test)" ] }, { "cell_type": "code", "execution_count": 105, "id": "033034f2", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.37658227933088945\n", "\n", "0.32770705192390215\n", "\n", "[[ 0 1 1 0 0 0 0 1]\n", " [ 1 87 60 5 48 21 43 70]\n", " [ 1 73 134 14 22 24 134 96]\n", " [ 0 1 0 3 0 2 0 2]\n", " [ 0 14 15 2 25 4 12 12]\n", " [ 0 5 7 0 0 28 9 4]\n", " [ 8 386 319 76 194 121 805 566]\n", " [ 17 429 517 83 198 295 787 1209]]\n", "\n", " precision recall f1-score support\n", "\n", " 0 0.00 0.00 0.00 3\n", " 1 0.09 0.26 0.13 335\n", " 2 0.13 0.27 0.17 498\n", " 3 0.02 0.38 0.03 8\n", " 4 0.05 0.30 0.09 84\n", " 5 0.06 0.53 0.10 53\n", " 6 0.45 0.33 0.38 2475\n", " 7 0.62 0.34 0.44 3535\n", "\n", " accuracy 0.33 6991\n", " macro avg 0.18 0.30 0.17 6991\n", "weighted avg 0.49 0.33 0.38 6991\n", "\n" ] } ], "source": [ "print(f1_score(pred,y_age_test,average='weighted'))\n", "print()\n", "print(accuracy_score(pred,y_age_test))\n", "print()\n", "print(confusion_matrix(pred,y_age_test))\n", "print()\n", "print(classification_report(pred,y_age_test))" ] }, { "cell_type": "markdown", "id": "b5f28d37", "metadata": {}, "source": [ "##### KNN" ] }, { "cell_type": "code", "execution_count": 29, "id": "9bd27414", "metadata": {}, "outputs": [], "source": [ "from sklearn.neighbors import KNeighborsClassifier" ] }, { "cell_type": "code", "execution_count": 31, "id": "6f01ba8e", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\Dell\\anaconda3\\Lib\\site-packages\\sklearn\\base.py:464: UserWarning: X does not have valid feature names, but KNeighborsClassifier was fitted with feature names\n", " warnings.warn(\n" ] } ], "source": [ "model = KNeighborsClassifier()\n", "model.fit(X_train,y_age_train)\n", "pred = model.predict(X_test.values)" ] }, { "cell_type": "code", "execution_count": 32, "id": "cd6f8cef", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.7962944851183236\n", "\n", "0.795737376627092\n", "\n", "[[ 18 2 0 0 2 1 3 5]\n", " [ 0 852 41 7 18 33 79 94]\n", " [ 2 19 861 3 10 24 77 96]\n", " [ 0 1 3 154 4 4 14 10]\n", " [ 0 15 21 2 413 12 29 43]\n", " [ 0 5 2 1 2 325 21 21]\n", " [ 6 60 64 8 28 48 1478 229]\n", " [ 1 42 61 8 10 48 89 1462]]\n", "\n", " precision recall f1-score support\n", "\n", " 0 0.67 0.58 0.62 31\n", " 1 0.86 0.76 0.80 1124\n", " 2 0.82 0.79 0.80 1092\n", " 3 0.84 0.81 0.83 190\n", " 4 0.85 0.77 0.81 535\n", " 5 0.66 0.86 0.75 377\n", " 6 0.83 0.77 0.80 1921\n", " 7 0.75 0.85 0.79 1721\n", "\n", " accuracy 0.80 6991\n", " macro avg 0.78 0.77 0.77 6991\n", "weighted avg 0.80 0.80 0.80 6991\n", "\n" ] } ], "source": [ "print(f1_score(pred,y_age_test,average='weighted'))\n", "print()\n", "print(accuracy_score(pred,y_age_test))\n", "print()\n", "print(confusion_matrix(pred,y_age_test))\n", "print()\n", "print(classification_report(pred,y_age_test))" ] }, { "cell_type": "code", "execution_count": 110, "id": "3ca50f81", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['KNN_age_model.pkl']" ] }, "execution_count": 110, "metadata": {}, "output_type": "execute_result" } ], "source": [ "joblib.dump(model, 'KNN_age_model')" ] }, { "cell_type": "markdown", "id": "fe64a202", "metadata": {}, "source": [ "##### SVM" ] }, { "cell_type": "code", "execution_count": 111, "id": "834b2032", "metadata": {}, "outputs": [], "source": [ "from sklearn.svm import SVC" ] }, { "cell_type": "code", "execution_count": null, "id": "0ff44c82", "metadata": {}, "outputs": [], "source": [ "model = SVC(C=1)\n", "model.fit(X_train,y_age_train)\n", "pred = model.predict(X_test)" ] }, { "cell_type": "code", "execution_count": 152, "id": "4d7abfac", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.7614100194796487\n", "\n", "0.7608353597482478\n", "\n", "[[ 20 0 1 0 1 0 1 2]\n", " [ 1 798 25 6 16 18 68 92]\n", " [ 1 22 790 5 12 32 55 95]\n", " [ 0 1 2 135 1 1 6 9]\n", " [ 0 3 11 1 373 5 20 26]\n", " [ 0 8 10 1 8 289 22 32]\n", " [ 4 79 98 11 37 62 1413 203]\n", " [ 1 85 116 24 39 88 205 1501]]\n", "\n", " precision recall f1-score support\n", "\n", " 0 0.74 0.80 0.77 25\n", " 1 0.80 0.78 0.79 1024\n", " 2 0.75 0.78 0.77 1012\n", " 3 0.74 0.87 0.80 155\n", " 4 0.77 0.85 0.81 439\n", " 5 0.58 0.78 0.67 370\n", " 6 0.79 0.74 0.76 1907\n", " 7 0.77 0.73 0.75 2059\n", "\n", " accuracy 0.76 6991\n", " macro avg 0.74 0.79 0.76 6991\n", "weighted avg 0.76 0.76 0.76 6991\n", "\n" ] } ], "source": [ "print(f1_score(pred,y_age_test,average='weighted'))\n", "print()\n", "print(accuracy_score(pred,y_age_test))\n", "print()\n", "print(confusion_matrix(pred,y_age_test))\n", "print()\n", "print(classification_report(pred,y_age_test))" ] }, { "cell_type": "markdown", "id": "99ed2d9f", "metadata": {}, "source": [ "##### Decision Tree" ] }, { "cell_type": "code", "execution_count": 4, "id": "fa87ec77", "metadata": {}, "outputs": [], "source": [ "from sklearn.tree import DecisionTreeClassifier" ] }, { "cell_type": "code", "execution_count": 5, "id": "f80d5f38", "metadata": {}, "outputs": [], "source": [ "model = DecisionTreeClassifier()\n", "model.fit(X_train,y_age_train)\n", "pred = model.predict(X_test)" ] }, { "cell_type": "code", "execution_count": 8, "id": "59fd3ee0", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.40225615103109547\n", "\n", "0.40208839937061935\n", "\n", "[[ 6 0 1 1 0 1 4 7]\n", " [ 3 409 95 28 48 40 204 195]\n", " [ 4 107 399 23 52 61 175 216]\n", " [ 0 20 15 37 4 6 50 42]\n", " [ 2 46 59 11 201 19 85 104]\n", " [ 4 50 49 11 22 126 106 126]\n", " [ 4 175 204 37 83 96 758 395]\n", " [ 4 189 231 35 77 146 408 875]]\n", "\n", " precision recall f1-score support\n", "\n", " 0 0.22 0.30 0.26 20\n", " 1 0.41 0.40 0.41 1022\n", " 2 0.38 0.38 0.38 1037\n", " 3 0.20 0.21 0.21 174\n", " 4 0.41 0.38 0.40 527\n", " 5 0.25 0.26 0.25 494\n", " 6 0.42 0.43 0.43 1752\n", " 7 0.45 0.45 0.45 1965\n", "\n", " accuracy 0.40 6991\n", " macro avg 0.34 0.35 0.35 6991\n", "weighted avg 0.40 0.40 0.40 6991\n", "\n" ] } ], "source": [ "print(f1_score(pred,y_age_test,average='weighted'))\n", "print()\n", "print(accuracy_score(pred,y_age_test))\n", "print()\n", "print(confusion_matrix(pred,y_age_test))\n", "print()\n", "print(classification_report(pred,y_age_test))" ] }, { "cell_type": "markdown", "id": "ca09c701", "metadata": {}, "source": [ "##### Bagging Decision Tree" ] }, { "cell_type": "code", "execution_count": 9, "id": "d16e092c", "metadata": {}, "outputs": [], "source": [ "from sklearn.ensemble import BaggingClassifier\n", "from sklearn.tree import DecisionTreeClassifier" ] }, { "cell_type": "code", "execution_count": 10, "id": "0450e792", "metadata": {}, "outputs": [], "source": [ "model = BaggingClassifier(DecisionTreeClassifier(),max_samples=0.5,max_features=1.0,n_estimators=10)\n", "model.fit(X_train, y_age_train)\n", "pred = model.predict(X_test)" ] }, { "cell_type": "code", "execution_count": 11, "id": "ff37709a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.5177393450250413\n", "\n", "0.512516092118438\n", "\n", "[[ 3 0 0 0 0 0 0 0]\n", " [ 0 553 77 19 48 52 157 169]\n", " [ 6 87 525 23 43 54 180 179]\n", " [ 0 0 6 57 1 1 4 3]\n", " [ 1 15 16 3 197 9 22 30]\n", " [ 2 13 12 2 6 122 29 39]\n", " [ 7 164 196 41 97 114 1023 437]\n", " [ 8 164 221 38 95 143 375 1103]]\n", "\n", " precision recall f1-score support\n", "\n", " 0 0.11 1.00 0.20 3\n", " 1 0.56 0.51 0.53 1075\n", " 2 0.50 0.48 0.49 1097\n", " 3 0.31 0.79 0.45 72\n", " 4 0.40 0.67 0.51 293\n", " 5 0.25 0.54 0.34 225\n", " 6 0.57 0.49 0.53 2079\n", " 7 0.56 0.51 0.54 2147\n", "\n", " accuracy 0.51 6991\n", " macro avg 0.41 0.63 0.45 6991\n", "weighted avg 0.53 0.51 0.52 6991\n", "\n" ] } ], "source": [ "print(f1_score(pred,y_age_test,average='weighted'))\n", "print()\n", "print(accuracy_score(pred,y_age_test))\n", "print()\n", "print(confusion_matrix(pred,y_age_test))\n", "print()\n", "print(classification_report(pred,y_age_test))" ] }, { "cell_type": "markdown", "id": "d137fdd4", "metadata": {}, "source": [ "##### Boosting Decision Tree" ] }, { "cell_type": "code", "execution_count": 12, "id": "0d0e06c8", "metadata": {}, "outputs": [], "source": [ "from sklearn.ensemble import AdaBoostClassifier\n", "from sklearn.tree import DecisionTreeClassifier" ] }, { "cell_type": "code", "execution_count": 13, "id": "3e7fae64", "metadata": {}, "outputs": [], "source": [ "model = AdaBoostClassifier(DecisionTreeClassifier(min_samples_split=10,max_depth=4),n_estimators=10,learning_rate=0.6)\n", "model.fit(X_train, y_age_train)\n", "pred = model.predict(X_test)" ] }, { "cell_type": "code", "execution_count": 14, "id": "ae285b01", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.395014876392853\n", "\n", "0.3428694035188099\n", "\n", "[[ 2 0 0 0 0 0 0 0]\n", " [ 1 131 41 2 26 8 43 43]\n", " [ 1 40 125 7 13 20 70 69]\n", " [ 0 0 2 2 0 1 0 1]\n", " [ 0 5 2 3 28 1 5 8]\n", " [ 0 6 7 0 1 19 6 9]\n", " [ 8 324 310 94 161 130 763 503]\n", " [ 15 490 566 75 258 316 903 1327]]\n", "\n", " precision recall f1-score support\n", "\n", " 0 0.07 1.00 0.14 2\n", " 1 0.13 0.44 0.20 295\n", " 2 0.12 0.36 0.18 345\n", " 3 0.01 0.33 0.02 6\n", " 4 0.06 0.54 0.10 52\n", " 5 0.04 0.40 0.07 48\n", " 6 0.43 0.33 0.37 2293\n", " 7 0.68 0.34 0.45 3950\n", "\n", " accuracy 0.34 6991\n", " macro avg 0.19 0.47 0.19 6991\n", "weighted avg 0.53 0.34 0.40 6991\n", "\n" ] } ], "source": [ "print(f1_score(pred,y_age_test,average='weighted'))\n", "print()\n", "print(accuracy_score(pred,y_age_test))\n", "print()\n", "print(confusion_matrix(pred,y_age_test))\n", "print()\n", "print(classification_report(pred,y_age_test))" ] }, { "cell_type": "markdown", "id": "e9c2133a", "metadata": {}, "source": [ "##### Random Forest Classifier" ] }, { "cell_type": "code", "execution_count": 15, "id": "9d694f01", "metadata": {}, "outputs": [], "source": [ "from sklearn.ensemble import RandomForestClassifier" ] }, { "cell_type": "code", "execution_count": 16, "id": "aa11f8fa", "metadata": {}, "outputs": [], "source": [ "model = RandomForestClassifier()\n", "model.fit(X_train,y_age_train)\n", "pred = model.predict(X_test)" ] }, { "cell_type": "code", "execution_count": 17, "id": "b389f76b", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.6567027435146164\n", "\n", "0.6501215848948648\n", "\n", "[[ 6 0 0 0 0 0 0 1]\n", " [ 0 602 16 2 15 16 22 30]\n", " [ 1 20 587 8 10 11 39 50]\n", " [ 0 0 0 71 0 0 0 0]\n", " [ 0 1 4 1 251 0 0 3]\n", " [ 0 1 1 0 0 123 0 2]\n", " [ 12 155 181 48 106 110 1343 312]\n", " [ 8 217 264 53 105 235 386 1562]]\n", "\n", " precision recall f1-score support\n", "\n", " 0 0.22 0.86 0.35 7\n", " 1 0.60 0.86 0.71 703\n", " 2 0.56 0.81 0.66 726\n", " 3 0.39 1.00 0.56 71\n", " 4 0.52 0.97 0.67 260\n", " 5 0.25 0.97 0.40 127\n", " 6 0.75 0.59 0.66 2267\n", " 7 0.80 0.55 0.65 2830\n", "\n", " accuracy 0.65 6991\n", " macro avg 0.51 0.83 0.58 6991\n", "weighted avg 0.71 0.65 0.66 6991\n", "\n" ] } ], "source": [ "print(f1_score(pred,y_age_test,average='weighted'))\n", "print()\n", "print(accuracy_score(pred,y_age_test))\n", "print()\n", "print(confusion_matrix(pred,y_age_test))\n", "print()\n", "print(classification_report(pred,y_age_test))" ] }, { "cell_type": "markdown", "id": "0b7aee24", "metadata": {}, "source": [ "##### XG Boost" ] }, { "cell_type": "code", "execution_count": 4, "id": "0db9fd04", "metadata": {}, "outputs": [], "source": [ "import xgboost as xgb" ] }, { "cell_type": "code", "execution_count": 5, "id": "9639ab56", "metadata": {}, "outputs": [], "source": [ "model = xgb.XGBClassifier()\n", "model.fit(X_train, y_age_train)\n", "pred = model.predict(X_test)" ] }, { "cell_type": "code", "execution_count": 7, "id": "0276d893", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.5942879832278003\n", "\n", "0.5903304248319268\n", "\n", "[[ 10 0 0 0 0 0 0 1]\n", " [ 1 590 46 10 23 15 69 75]\n", " [ 4 44 511 6 21 24 88 109]\n", " [ 0 1 3 89 2 0 4 7]\n", " [ 0 12 17 2 242 4 15 14]\n", " [ 0 7 12 1 2 148 16 25]\n", " [ 5 149 198 44 115 107 1149 341]\n", " [ 7 193 266 31 82 197 449 1388]]\n", "\n", " precision recall f1-score support\n", "\n", " 0 0.37 0.91 0.53 11\n", " 1 0.59 0.71 0.65 829\n", " 2 0.49 0.63 0.55 807\n", " 3 0.49 0.84 0.62 106\n", " 4 0.50 0.79 0.61 306\n", " 5 0.30 0.70 0.42 211\n", " 6 0.64 0.55 0.59 2108\n", " 7 0.71 0.53 0.61 2613\n", "\n", " accuracy 0.59 6991\n", " macro avg 0.51 0.71 0.57 6991\n", "weighted avg 0.62 0.59 0.59 6991\n", "\n" ] } ], "source": [ "print(f1_score(pred,y_age_test,average='weighted'))\n", "print()\n", "print(accuracy_score(pred,y_age_test))\n", "print()\n", "print(confusion_matrix(pred,y_age_test))\n", "print()\n", "print(classification_report(pred,y_age_test))" ] }, { "cell_type": "markdown", "id": "f4d90192", "metadata": {}, "source": [ "#### Neural Network" ] }, { "cell_type": "markdown", "id": "ebeda6af", "metadata": {}, "source": [ "##### Deep Learning" ] }, { "cell_type": "code", "execution_count": 5, "id": "2a026990", "metadata": {}, "outputs": [], "source": [ "y_age_train = y_train.drop(['male','age_label'],axis=1)\n", "y_age_test = y_test.drop(['male','age_label'],axis=1)" ] }, { "cell_type": "code", "execution_count": 4, "id": "7eab5467", "metadata": {}, "outputs": [], "source": [ "from keras import layers, models, optimizers, losses, metrics\n", "from tensorflow.keras import regularizers\n", "import tensorflow as tf\n", "from tensorflow.keras.models import Sequential\n", "from tensorflow.keras.layers import Dense,Dropout, LSTM\n", "from tensorflow.keras.callbacks import EarlyStopping" ] }, { "cell_type": "code", "execution_count": 138, "id": "e1d2fe35", "metadata": {}, "outputs": [], "source": [ "# CODE HERE\n", "model = Sequential()\n", "\n", "model.add(InputLayer(input_shape=30))\n", "model.add(Dense(200,activation='tanh'))\n", "#model.add(Dropout(0.2))\n", "model.add(Dense(150,activation='tanh'))\n", "#model.add(Dropout(0.2))\n", "model.add(Dense(112,activation='tanh'))\n", "#model.add(Dropout(0.2))\n", "model.add(Dense(84,activation='tanh'))\n", "#model.add(Dropout(0.2))\n", "model.add(Dense(63,activation='tanh'))\n", "#model.add(Dropout(0.2))\n", "model.add(Dense(48,activation='tanh'))\n", "#model.add(Dropout(0.2))\n", "model.add(Dense(36,activation='tanh'))\n", "#model.add(Dropout(0.2))\n", "model.add(Dense(27,activation='relu'))\n", "#model.add(Dropout(0.2))\n", "model.add(Dense(21,activation='relu'))\n", "#model.add(Dropout(0.2))\n", "model.add(Dense(15,activation='relu'))\n", "#model.add(Dropout(0.2))\n", "#model.add(Dense(2,activation='relu'))\n", "#model.add(Dropout(0.2))\n", "\n", "model.add(Dense(7,activation='softmax'))" ] }, { "cell_type": "code", "execution_count": 139, "id": "665635aa", "metadata": {}, "outputs": [], "source": [ "earlystop = EarlyStopping(monitor='val_loss',patience=3)" ] }, { "cell_type": "code", "execution_count": 140, "id": "6036ca66", "metadata": {}, "outputs": [], "source": [ "losses = {'output_1':'binary_crossentropy'}" ] }, { "cell_type": "code", "execution_count": 141, "id": "a037084b", "metadata": {}, "outputs": [], "source": [ "model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])" ] }, { "cell_type": "code", "execution_count": 142, "id": "4d654802", "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/190\n", "246/246 [==============================] - 2s 5ms/step - loss: 0.4140 - accuracy: 0.2937 - val_loss: 0.3690 - val_accuracy: 0.3084\n", "Epoch 2/190\n", "246/246 [==============================] - 1s 6ms/step - loss: 0.3592 - accuracy: 0.3581 - val_loss: 0.3444 - val_accuracy: 0.4048\n", "Epoch 3/190\n", "246/246 [==============================] - 1s 4ms/step - loss: 0.3289 - accuracy: 0.4509 - val_loss: 0.3136 - val_accuracy: 0.4765\n", "Epoch 4/190\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2974 - accuracy: 0.5149 - val_loss: 0.2925 - val_accuracy: 0.5207\n", "Epoch 5/190\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2715 - accuracy: 0.5697 - val_loss: 0.2727 - val_accuracy: 0.5726\n", "Epoch 6/190\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2508 - accuracy: 0.6116 - val_loss: 0.2630 - val_accuracy: 0.5870\n", "Epoch 7/190\n", "246/246 [==============================] - 1s 4ms/step - loss: 0.2356 - accuracy: 0.6410 - val_loss: 0.2547 - val_accuracy: 0.6068\n", "Epoch 8/190\n", "246/246 [==============================] - 1s 4ms/step - loss: 0.2222 - accuracy: 0.6623 - val_loss: 0.2529 - val_accuracy: 0.6085\n", "Epoch 9/190\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.2118 - accuracy: 0.6803 - val_loss: 0.2430 - val_accuracy: 0.6261\n", "Epoch 10/190\n", "246/246 [==============================] - 1s 6ms/step - loss: 0.2024 - accuracy: 0.6962 - val_loss: 0.2380 - val_accuracy: 0.6370\n", "Epoch 11/190\n", "246/246 [==============================] - 1s 4ms/step - loss: 0.1943 - accuracy: 0.7084 - val_loss: 0.2382 - val_accuracy: 0.6385\n", "Epoch 12/190\n", "246/246 [==============================] - 1s 5ms/step - loss: 0.1876 - accuracy: 0.7177 - val_loss: 0.2321 - val_accuracy: 0.6498\n", "Epoch 13/190\n", "246/246 [==============================] - 1s 4ms/step - loss: 0.1811 - accuracy: 0.7301 - val_loss: 0.2368 - val_accuracy: 0.6488\n", "Epoch 14/190\n", "246/246 [==============================] - 1s 4ms/step - loss: 0.1754 - accuracy: 0.7380 - val_loss: 0.2340 - val_accuracy: 0.6495\n", "Epoch 15/190\n", "246/246 [==============================] - 1s 4ms/step - loss: 0.1701 - accuracy: 0.7464 - val_loss: 0.2360 - val_accuracy: 0.6514\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 142, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.fit(X_train,y_age_train,epochs=190,batch_size=256,validation_data=(X_test,y_age_test),callbacks=earlystop)" ] }, { "cell_type": "code", "execution_count": 143, "id": "4dcd8aaf", "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model: \"sequential_17\"\n", "_________________________________________________________________\n", " Layer (type) Output Shape Param # \n", "=================================================================\n", " dense_251 (Dense) (None, 200) 6200 \n", " \n", " dense_252 (Dense) (None, 150) 30150 \n", " \n", " dense_253 (Dense) (None, 112) 16912 \n", " \n", " dense_254 (Dense) (None, 84) 9492 \n", " \n", " dense_255 (Dense) (None, 63) 5355 \n", " \n", " dense_256 (Dense) (None, 48) 3072 \n", " \n", " dense_257 (Dense) (None, 36) 1764 \n", " \n", " dense_258 (Dense) (None, 27) 999 \n", " \n", " dense_259 (Dense) (None, 21) 588 \n", " \n", " dense_260 (Dense) (None, 15) 330 \n", " \n", " dense_261 (Dense) (None, 7) 112 \n", " \n", "=================================================================\n", "Total params: 74,974\n", "Trainable params: 74,974\n", "Non-trainable params: 0\n", "_________________________________________________________________\n", "None\n" ] } ], "source": [ "print(model.summary())" ] }, { "cell_type": "code", "execution_count": 144, "id": "ba65e49f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 144, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# CODE HERE\n", "losses = pd.DataFrame(model.history.history)\n", "losses[['val_loss','loss']].plot()" ] }, { "cell_type": "code", "execution_count": 145, "id": "645f48ce", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "219/219 [==============================] - 1s 3ms/step\n" ] } ], "source": [ "pred = (model.predict(X_test) > 0.5).astype(\"int32\")" ] }, { "cell_type": "code", "execution_count": 146, "id": "09812cc9", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.6595140112999031\n", "\n", "0.6076383922185667\n", "\n", "\n", " precision recall f1-score support\n", "\n", " 0 0.65 0.79 0.71 821\n", " 1 0.58 0.75 0.66 810\n", " 2 0.47 0.80 0.59 107\n", " 3 0.62 0.75 0.68 403\n", " 4 0.35 0.73 0.48 237\n", " 5 0.60 0.71 0.65 1514\n", " 6 0.69 0.65 0.67 2075\n", "\n", " micro avg 0.61 0.71 0.66 5967\n", " macro avg 0.57 0.74 0.63 5967\n", "weighted avg 0.62 0.71 0.66 5967\n", " samples avg 0.61 0.61 0.61 5967\n", "\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\Dell\\anaconda3\\lib\\site-packages\\sklearn\\metrics\\_classification.py:1248: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in samples with no predicted labels. Use `zero_division` parameter to control this behavior.\n", " _warn_prf(average, modifier, msg_start, len(result))\n", "C:\\Users\\Dell\\anaconda3\\lib\\site-packages\\sklearn\\metrics\\_classification.py:1248: UndefinedMetricWarning: Recall and F-score are ill-defined and being set to 0.0 in samples with no true labels. Use `zero_division` parameter to control this behavior.\n", " _warn_prf(average, modifier, msg_start, len(result))\n" ] } ], "source": [ "print(f1_score(pred,y_age_test,average='weighted'))\n", "print()\n", "print(accuracy_score(pred,y_age_test))\n", "print()\n", "#print(confusion_matrix(pred,y_age_test))\n", "print()\n", "print(classification_report(pred,y_age_test))" ] }, { "cell_type": "markdown", "id": "877cde03", "metadata": {}, "source": [ "##### Real Time Model Testing" ] }, { "cell_type": "code", "execution_count": 11, "id": "aa6da0fb", "metadata": {}, "outputs": [], "source": [ "import joblib" ] }, { "cell_type": "code", "execution_count": 12, "id": "64f732d3", "metadata": {}, "outputs": [], "source": [ "## Voice Data Feature Extraction\n", "\n", "### extract the features from the audio files using mfcc\n", "def feature_extracter(fileName):\n", " audio,sample_rate = librosa.load(fileName,res_type='kaiser_fast')\n", " mfcc_features = librosa.feature.mfcc(y=audio,sr=sample_rate,n_mfcc=30)\n", " mfccs_scaled_features = np.mean(mfcc_features.T, axis=0)\n", " \n", " return list(mfccs_scaled_features)" ] }, { "cell_type": "code", "execution_count": 37, "id": "81ff0caa", "metadata": {}, "outputs": [], "source": [ "fileName = 'C:\\\\Users\\\\Dell\\\\Downloads\\\\narendra-modi-walking-out-of-karan-thapar-interview-tuberippercom_R89R3fPq.wav'\n", "col_name = ['Feature_1', 'Feature_2', 'Feature_3', 'Feature_4', 'Feature_5','Feature_6', 'Feature_7', 'Feature_8', 'Feature_9', 'Feature_10','Feature_11', 'Feature_12', 'Feature_13', 'Feature_14', 'Feature_15','Feature_16', 'Feature_17', 'Feature_18', 'Feature_19', 'Feature_20','Feature_21', 'Feature_22', 'Feature_23', 'Feature_24', 'Feature_25','Feature_26', 'Feature_27', 'Feature_28', 'Feature_29', 'Feature_30']" ] }, { "cell_type": "code", "execution_count": 38, "id": "0c037e5f", "metadata": {}, "outputs": [], "source": [ "observation = [feature_extracter(fileName)]\n", "observation = pd.DataFrame(observation, columns = col_name)" ] }, { "cell_type": "code", "execution_count": 39, "id": "b4b0ba94", "metadata": {}, "outputs": [], "source": [ "## scaling the observation\n", "scaler = joblib.load('scaler.pkl')\n", "scaled_observation = scaler.transform(observation)\n", "scaled_observation = pd.DataFrame(scaled_observation, columns = col_name)" ] }, { "cell_type": "code", "execution_count": 40, "id": "38b86647", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Male\n" ] } ], "source": [ "### Gender classification model\n", "gender_model = joblib.load('KNN_gender_detection.pkl')\n", "gender_predict = gender_model.predict(scaled_observation)\n", "## considering the labels 1 = male 0 = female\n", "if gender_predict[0] == 1:\n", " print('Male')\n", "else:\n", " print('Female')" ] }, { "cell_type": "code", "execution_count": 41, "id": "5fc843c1", "metadata": {}, "outputs": [], "source": [ "def age_reverse_labelling(label):\n", " if label == 0:\n", " return 'Eighties'\n", " if label == 1:\n", " return 'Fifties'\n", " if label == 2:\n", " return 'Fourties'\n", " if label == 3:\n", " return 'Seventies'\n", " if label == 4:\n", " return 'Sixties'\n", " if label == 5:\n", " return 'Teens'\n", " if label == 6:\n", " return 'Thirties'\n", " if label == 7:\n", " return 'Twenties'\n", " else:\n", " return 'Cannot be predicted'" ] }, { "cell_type": "code", "execution_count": 42, "id": "4cb31b52", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Twenties\n" ] } ], "source": [ "### Age classification model\n", "age_model = joblib.load('KNN_age_model.pkl')\n", "age_predict = age_model.predict(scaled_observation)\n", "## considering the labels 1 = male 0 = female\n", "print(age_reverse_labelling(age_predict[0]))" ] } ], "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.11.5" } }, "nbformat": 4, "nbformat_minor": 5 }