diff --git a/adult_income.ipynb b/adult_income.ipynb new file mode 100644 index 0000000..4be294b --- /dev/null +++ b/adult_income.ipynb @@ -0,0 +1,961 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "f4162f87", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "018c0041", + "metadata": {}, + "outputs": [], + "source": [ + "from tensorflow.keras.layers import *\n", + "from tensorflow.keras.models import *" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "id": "791b9bf5", + "metadata": {}, + "outputs": [], + "source": [ + "import tensorflow as tf" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "ded2fe10", + "metadata": { + "collapsed": true + }, + "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", + "
ageworkclassfnlwgteducationeducation_nummarital_statusoccupationrelationshipracesexcapital-gaincapital-losshours-per-weeknative-country50k
039State-gov77516Bachelors13Never-marriedAdm-clericalNot-in-familyWhiteMale2174040United-States<=50K
150Self-emp-not-inc83311Bachelors13Married-civ-spouseExec-managerialHusbandWhiteMale0013United-States<=50K
238Private215646HS-grad9DivorcedHandlers-cleanersNot-in-familyWhiteMale0040United-States<=50K
353Private23472111th7Married-civ-spouseHandlers-cleanersHusbandBlackMale0040United-States<=50K
428Private338409Bachelors13Married-civ-spouseProf-specialtyWifeBlackFemale0040Cuba<=50K
\n", + "
" + ], + "text/plain": [ + " age workclass fnlwgt education education_num \\\n", + "0 39 State-gov 77516 Bachelors 13 \n", + "1 50 Self-emp-not-inc 83311 Bachelors 13 \n", + "2 38 Private 215646 HS-grad 9 \n", + "3 53 Private 234721 11th 7 \n", + "4 28 Private 338409 Bachelors 13 \n", + "\n", + " marital_status occupation relationship race sex \\\n", + "0 Never-married Adm-clerical Not-in-family White Male \n", + "1 Married-civ-spouse Exec-managerial Husband White Male \n", + "2 Divorced Handlers-cleaners Not-in-family White Male \n", + "3 Married-civ-spouse Handlers-cleaners Husband Black Male \n", + "4 Married-civ-spouse Prof-specialty Wife Black Female \n", + "\n", + " capital-gain capital-loss hours-per-week native-country 50k \n", + "0 2174 0 40 United-States <=50K \n", + "1 0 0 13 United-States <=50K \n", + "2 0 0 40 United-States <=50K \n", + "3 0 0 40 United-States <=50K \n", + "4 0 0 40 Cuba <=50K " + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = pd.read_csv('./deep_source_files/adult.txt', header=None, names = ['age', 'workclass','fnlwgt', 'education', 'education_num', 'marital_status', 'occupation', 'relationship', 'race'\\\n", + ", 'sex', 'capital-gain', 'capital-loss', 'hours-per-week', 'native-country', '50k'])\n", + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "8bc540a9", + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 32561 entries, 0 to 32560\n", + "Data columns (total 15 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 32561 non-null int64 \n", + " 1 workclass 32561 non-null object\n", + " 2 fnlwgt 32561 non-null int64 \n", + " 3 education 32561 non-null object\n", + " 4 education_num 32561 non-null int64 \n", + " 5 marital_status 32561 non-null object\n", + " 6 occupation 32561 non-null object\n", + " 7 relationship 32561 non-null object\n", + " 8 race 32561 non-null object\n", + " 9 sex 32561 non-null object\n", + " 10 capital-gain 32561 non-null int64 \n", + " 11 capital-loss 32561 non-null int64 \n", + " 12 hours-per-week 32561 non-null int64 \n", + " 13 native-country 32561 non-null object\n", + " 14 50k 32561 non-null object\n", + "dtypes: int64(6), object(9)\n", + "memory usage: 3.7+ MB\n" + ] + } + ], + "source": [ + "df.info()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ca77921e", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "9b9fc9f1", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + " <=50K 24720\n", + " >50K 7841\n", + "Name: 50k, dtype: int64" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['50k'].value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ccef65fe", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "8a32123e", + "metadata": { + "code_folding": [] + }, + "outputs": [], + "source": [ + "# deep learning model을 생성하고 학습 후 평가하시오..\n", + "# machine learning 모델과 비교.." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fe3df23b", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "760e94fc", + "metadata": {}, + "outputs": [], + "source": [ + "y = df['50k'].apply(lambda x: 1 if x == ' >50K' else 0)\n", + "x = df.loc[:, :'native-country']" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c36e2cd2", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "4df0214f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(32561, 14)" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "b88520da", + "metadata": {}, + "outputs": [], + "source": [ + "x = pd.get_dummies(x)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2524d7e0", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "b21411a9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1., 0.],\n", + " [1., 0.],\n", + " [1., 0.],\n", + " ...,\n", + " [1., 0.],\n", + " [1., 0.],\n", + " [0., 1.]], dtype=float32)" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y_oh = tf.keras.utils.to_categorical(y)\n", + "y_oh" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "94f3d0a5", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b10d06c3", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 51, + "id": "9aab9a6b", + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.model_selection import train_test_split\n", + "x_train, x_test, y_train, y_test = train_test_split(x,y_oh, test_size=0.3, random_state=111)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9237938b", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 52, + "id": "9429c0a9", + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.preprocessing import StandardScaler\n", + "\n", + "scaler = StandardScaler()\n", + "\n", + "scaler.fit(x_train)\n", + "\n", + "x_train_sc = scaler.transform(x_train)\n", + "x_test_sc = scaler.transform(x_test)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "31bbe062", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "c9672280", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(22792, 108)" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x_train.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "id": "97f88dd6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: \"sequential_9\"\n", + "_________________________________________________________________\n", + " Layer (type) Output Shape Param # \n", + "=================================================================\n", + " dense_41 (Dense) (None, 256) 27904 \n", + " \n", + " dropout_7 (Dropout) (None, 256) 0 \n", + " \n", + " dense_42 (Dense) (None, 128) 32896 \n", + " \n", + " dropout_8 (Dropout) (None, 128) 0 \n", + " \n", + " dense_43 (Dense) (None, 56) 7224 \n", + " \n", + " dropout_9 (Dropout) (None, 56) 0 \n", + " \n", + " dense_44 (Dense) (None, 28) 1596 \n", + " \n", + " dropout_10 (Dropout) (None, 28) 0 \n", + " \n", + " dense_45 (Dense) (None, 2) 58 \n", + " \n", + "=================================================================\n", + "Total params: 69,678\n", + "Trainable params: 69,678\n", + "Non-trainable params: 0\n", + "_________________________________________________________________\n" + ] + } + ], + "source": [ + "model = Sequential()\n", + "model.add(Dense(256, activation='relu', input_dim=108))\n", + "model.add(Dropout(0.3))\n", + "model.add(Dense(128, activation='relu'))\n", + "model.add(Dropout(0.3))\n", + "model.add(Dense(56, activation='relu'))\n", + "model.add(Dropout(0.3))\n", + "model.add(Dense(28, activation='relu'))\n", + "model.add(Dropout(0.3))\n", + "model.add(Dense(2, activation='softmax')) # multi_classification\n", + "model.summary()" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "id": "864ace90", + "metadata": {}, + "outputs": [], + "source": [ + "model.compile(loss='binary_crossentropy', metrics=['accuracy'], optimizer='adam')" + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "id": "28bc8911", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/100\n", + "912/912 [==============================] - 2s 2ms/step - loss: 0.3540 - accuracy: 0.8382 - val_loss: 0.3117 - val_accuracy: 0.8552\n", + "Epoch 2/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.3418 - accuracy: 0.8439 - val_loss: 0.3129 - val_accuracy: 0.8559\n", + "Epoch 3/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.3256 - accuracy: 0.8496 - val_loss: 0.3073 - val_accuracy: 0.8513\n", + "Epoch 4/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.3204 - accuracy: 0.8551 - val_loss: 0.3011 - val_accuracy: 0.8636\n", + "Epoch 5/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.3172 - accuracy: 0.8556 - val_loss: 0.3123 - val_accuracy: 0.8546\n", + "Epoch 6/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.3136 - accuracy: 0.8559 - val_loss: 0.3031 - val_accuracy: 0.8550\n", + "Epoch 7/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.3073 - accuracy: 0.8582 - val_loss: 0.3035 - val_accuracy: 0.8576\n", + "Epoch 8/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.3067 - accuracy: 0.8584 - val_loss: 0.3064 - val_accuracy: 0.8546\n", + "Epoch 9/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.3039 - accuracy: 0.8603 - val_loss: 0.3016 - val_accuracy: 0.8568\n", + "Epoch 10/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2995 - accuracy: 0.8620 - val_loss: 0.3048 - val_accuracy: 0.8557\n", + "Epoch 11/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2979 - accuracy: 0.8620 - val_loss: 0.3097 - val_accuracy: 0.8583\n", + "Epoch 12/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2941 - accuracy: 0.8638 - val_loss: 0.3088 - val_accuracy: 0.8544\n", + "Epoch 13/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2943 - accuracy: 0.8626 - val_loss: 0.3117 - val_accuracy: 0.8541\n", + "Epoch 14/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2913 - accuracy: 0.8648 - val_loss: 0.3067 - val_accuracy: 0.8579\n", + "Epoch 15/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2888 - accuracy: 0.8661 - val_loss: 0.3099 - val_accuracy: 0.8598\n", + "Epoch 16/100\n", + "912/912 [==============================] - 2s 2ms/step - loss: 0.2864 - accuracy: 0.8690 - val_loss: 0.3123 - val_accuracy: 0.8568\n", + "Epoch 17/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2847 - accuracy: 0.8675 - val_loss: 0.3191 - val_accuracy: 0.8570\n", + "Epoch 18/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2835 - accuracy: 0.8709 - val_loss: 0.3119 - val_accuracy: 0.8587\n", + "Epoch 19/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2813 - accuracy: 0.8680 - val_loss: 0.3268 - val_accuracy: 0.8574\n", + "Epoch 20/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2793 - accuracy: 0.8688 - val_loss: 0.3274 - val_accuracy: 0.8598\n", + "Epoch 21/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2772 - accuracy: 0.8714 - val_loss: 0.3180 - val_accuracy: 0.8552\n", + "Epoch 22/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2719 - accuracy: 0.8734 - val_loss: 0.3199 - val_accuracy: 0.8563\n", + "Epoch 23/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2740 - accuracy: 0.8723 - val_loss: 0.3244 - val_accuracy: 0.8557\n", + "Epoch 24/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2693 - accuracy: 0.8741 - val_loss: 0.3304 - val_accuracy: 0.8524\n", + "Epoch 25/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2664 - accuracy: 0.8755 - val_loss: 0.3610 - val_accuracy: 0.8537\n", + "Epoch 26/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2659 - accuracy: 0.8753 - val_loss: 0.3481 - val_accuracy: 0.8539\n", + "Epoch 27/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2683 - accuracy: 0.8767 - val_loss: 0.3418 - val_accuracy: 0.8539\n", + "Epoch 28/100\n", + "912/912 [==============================] - 2s 2ms/step - loss: 0.2645 - accuracy: 0.8759 - val_loss: 0.3382 - val_accuracy: 0.8517\n", + "Epoch 29/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2614 - accuracy: 0.8779 - val_loss: 0.3656 - val_accuracy: 0.8537\n", + "Epoch 30/100\n", + "912/912 [==============================] - 2s 2ms/step - loss: 0.2604 - accuracy: 0.8780 - val_loss: 0.3472 - val_accuracy: 0.8513\n", + "Epoch 31/100\n", + "912/912 [==============================] - 2s 2ms/step - loss: 0.2617 - accuracy: 0.8762 - val_loss: 0.3467 - val_accuracy: 0.8513\n", + "Epoch 32/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2554 - accuracy: 0.8804 - val_loss: 0.3618 - val_accuracy: 0.8489\n", + "Epoch 33/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2606 - accuracy: 0.8770 - val_loss: 0.3426 - val_accuracy: 0.8535\n", + "Epoch 34/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2533 - accuracy: 0.8820 - val_loss: 0.3779 - val_accuracy: 0.8519\n", + "Epoch 35/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2557 - accuracy: 0.8786 - val_loss: 0.3713 - val_accuracy: 0.8517\n", + "Epoch 36/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2548 - accuracy: 0.8802 - val_loss: 0.3760 - val_accuracy: 0.8473\n", + "Epoch 37/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2537 - accuracy: 0.8810 - val_loss: 0.3468 - val_accuracy: 0.8489\n", + "Epoch 38/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2524 - accuracy: 0.8812 - val_loss: 0.3994 - val_accuracy: 0.8522\n", + "Epoch 39/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2521 - accuracy: 0.8836 - val_loss: 0.3740 - val_accuracy: 0.8502\n", + "Epoch 40/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2470 - accuracy: 0.8834 - val_loss: 0.3707 - val_accuracy: 0.8482\n", + "Epoch 41/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2507 - accuracy: 0.8803 - val_loss: 0.3598 - val_accuracy: 0.8487\n", + "Epoch 42/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2480 - accuracy: 0.8836 - val_loss: 0.3556 - val_accuracy: 0.8502\n", + "Epoch 43/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2444 - accuracy: 0.8847 - val_loss: 0.3795 - val_accuracy: 0.8519\n", + "Epoch 44/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2420 - accuracy: 0.8877 - val_loss: 0.3700 - val_accuracy: 0.8506\n", + "Epoch 45/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2461 - accuracy: 0.8842 - val_loss: 0.3843 - val_accuracy: 0.8491\n", + "Epoch 46/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2434 - accuracy: 0.8846 - val_loss: 0.3866 - val_accuracy: 0.8517\n", + "Epoch 47/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2396 - accuracy: 0.8860 - val_loss: 0.3945 - val_accuracy: 0.8513\n", + "Epoch 48/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2433 - accuracy: 0.8873 - val_loss: 0.3751 - val_accuracy: 0.8495\n", + "Epoch 49/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2408 - accuracy: 0.8866 - val_loss: 0.4040 - val_accuracy: 0.8497\n", + "Epoch 50/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2372 - accuracy: 0.8862 - val_loss: 0.4229 - val_accuracy: 0.8504\n", + "Epoch 51/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2359 - accuracy: 0.8900 - val_loss: 0.3859 - val_accuracy: 0.8508\n", + "Epoch 52/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2343 - accuracy: 0.8900 - val_loss: 0.4494 - val_accuracy: 0.8524\n", + "Epoch 53/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2377 - accuracy: 0.8909 - val_loss: 0.3987 - val_accuracy: 0.8469\n", + "Epoch 54/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2398 - accuracy: 0.8890 - val_loss: 0.3926 - val_accuracy: 0.8500\n", + "Epoch 55/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2318 - accuracy: 0.8924 - val_loss: 0.4146 - val_accuracy: 0.8506\n", + "Epoch 56/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2349 - accuracy: 0.8894 - val_loss: 0.3655 - val_accuracy: 0.8482\n", + "Epoch 57/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2332 - accuracy: 0.8914 - val_loss: 0.4501 - val_accuracy: 0.8469\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 58/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2312 - accuracy: 0.8910 - val_loss: 0.4252 - val_accuracy: 0.8456\n", + "Epoch 59/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2310 - accuracy: 0.8900 - val_loss: 0.4573 - val_accuracy: 0.8469\n", + "Epoch 60/100\n", + "912/912 [==============================] - 1s 1ms/step - loss: 0.2307 - accuracy: 0.8920 - val_loss: 0.4345 - val_accuracy: 0.8469\n", + "Epoch 61/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2304 - accuracy: 0.8935 - val_loss: 0.4664 - val_accuracy: 0.8465\n", + "Epoch 62/100\n", + "912/912 [==============================] - 1s 1ms/step - loss: 0.2296 - accuracy: 0.8931 - val_loss: 0.4022 - val_accuracy: 0.8465\n", + "Epoch 63/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2269 - accuracy: 0.8916 - val_loss: 0.4043 - val_accuracy: 0.8513\n", + "Epoch 64/100\n", + "912/912 [==============================] - 1s 1ms/step - loss: 0.2321 - accuracy: 0.8909 - val_loss: 0.3895 - val_accuracy: 0.8519\n", + "Epoch 65/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2269 - accuracy: 0.8925 - val_loss: 0.4225 - val_accuracy: 0.8471\n", + "Epoch 66/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2224 - accuracy: 0.8943 - val_loss: 0.4547 - val_accuracy: 0.8495\n", + "Epoch 67/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2272 - accuracy: 0.8959 - val_loss: 0.4378 - val_accuracy: 0.8447\n", + "Epoch 68/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2233 - accuracy: 0.8958 - val_loss: 0.4381 - val_accuracy: 0.8497\n", + "Epoch 69/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2209 - accuracy: 0.8955 - val_loss: 0.4964 - val_accuracy: 0.8484\n", + "Epoch 70/100\n", + "912/912 [==============================] - 2s 2ms/step - loss: 0.2267 - accuracy: 0.8946 - val_loss: 0.4306 - val_accuracy: 0.8462\n", + "Epoch 71/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2216 - accuracy: 0.8975 - val_loss: 0.4433 - val_accuracy: 0.8429\n", + "Epoch 72/100\n", + "912/912 [==============================] - 2s 2ms/step - loss: 0.2212 - accuracy: 0.8963 - val_loss: 0.4213 - val_accuracy: 0.8469\n", + "Epoch 73/100\n", + "912/912 [==============================] - 2s 2ms/step - loss: 0.2223 - accuracy: 0.8965 - val_loss: 0.4271 - val_accuracy: 0.8484\n", + "Epoch 74/100\n", + "912/912 [==============================] - 2s 2ms/step - loss: 0.2207 - accuracy: 0.8966 - val_loss: 0.4140 - val_accuracy: 0.8440\n", + "Epoch 75/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2181 - accuracy: 0.8972 - val_loss: 0.4547 - val_accuracy: 0.8478\n", + "Epoch 76/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2186 - accuracy: 0.8999 - val_loss: 0.4003 - val_accuracy: 0.8454\n", + "Epoch 77/100\n", + "912/912 [==============================] - 2s 2ms/step - loss: 0.2147 - accuracy: 0.8989 - val_loss: 0.5213 - val_accuracy: 0.8482\n", + "Epoch 78/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2163 - accuracy: 0.8992 - val_loss: 0.4328 - val_accuracy: 0.8421\n", + "Epoch 79/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2179 - accuracy: 0.8978 - val_loss: 0.5128 - val_accuracy: 0.8429\n", + "Epoch 80/100\n", + "912/912 [==============================] - 2s 2ms/step - loss: 0.2134 - accuracy: 0.9015 - val_loss: 0.4329 - val_accuracy: 0.8462\n", + "Epoch 81/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2181 - accuracy: 0.8989 - val_loss: 0.4816 - val_accuracy: 0.8434\n", + "Epoch 82/100\n", + "912/912 [==============================] - 2s 2ms/step - loss: 0.2188 - accuracy: 0.8980 - val_loss: 0.4519 - val_accuracy: 0.8449\n", + "Epoch 83/100\n", + "912/912 [==============================] - 2s 2ms/step - loss: 0.2148 - accuracy: 0.8973 - val_loss: 0.4267 - val_accuracy: 0.8469\n", + "Epoch 84/100\n", + "912/912 [==============================] - 2s 2ms/step - loss: 0.2109 - accuracy: 0.9001 - val_loss: 0.4336 - val_accuracy: 0.8434\n", + "Epoch 85/100\n", + "912/912 [==============================] - 2s 2ms/step - loss: 0.2115 - accuracy: 0.9023 - val_loss: 0.5063 - val_accuracy: 0.8487\n", + "Epoch 86/100\n", + "912/912 [==============================] - 2s 2ms/step - loss: 0.2140 - accuracy: 0.9014 - val_loss: 0.5478 - val_accuracy: 0.8476\n", + "Epoch 87/100\n", + "912/912 [==============================] - 2s 2ms/step - loss: 0.2115 - accuracy: 0.9026 - val_loss: 0.4676 - val_accuracy: 0.8465\n", + "Epoch 88/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2119 - accuracy: 0.9010 - val_loss: 0.4958 - val_accuracy: 0.8445\n", + "Epoch 89/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2097 - accuracy: 0.9039 - val_loss: 0.4859 - val_accuracy: 0.8471\n", + "Epoch 90/100\n", + "912/912 [==============================] - 2s 2ms/step - loss: 0.2070 - accuracy: 0.9029 - val_loss: 0.5048 - val_accuracy: 0.8451\n", + "Epoch 91/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2091 - accuracy: 0.9019 - val_loss: 0.5138 - val_accuracy: 0.8449\n", + "Epoch 92/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2115 - accuracy: 0.9007 - val_loss: 0.5430 - val_accuracy: 0.8456\n", + "Epoch 93/100\n", + "912/912 [==============================] - 2s 2ms/step - loss: 0.2080 - accuracy: 0.9025 - val_loss: 0.5590 - val_accuracy: 0.8480\n", + "Epoch 94/100\n", + "912/912 [==============================] - 2s 2ms/step - loss: 0.2099 - accuracy: 0.9032 - val_loss: 0.4896 - val_accuracy: 0.8425\n", + "Epoch 95/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2108 - accuracy: 0.9029 - val_loss: 0.4753 - val_accuracy: 0.8451\n", + "Epoch 96/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2005 - accuracy: 0.9069 - val_loss: 0.5408 - val_accuracy: 0.8469\n", + "Epoch 97/100\n", + "912/912 [==============================] - 2s 2ms/step - loss: 0.2104 - accuracy: 0.9030 - val_loss: 0.5367 - val_accuracy: 0.8401\n", + "Epoch 98/100\n", + "912/912 [==============================] - 2s 2ms/step - loss: 0.2108 - accuracy: 0.9030 - val_loss: 0.5167 - val_accuracy: 0.8429\n", + "Epoch 99/100\n", + "912/912 [==============================] - 2s 2ms/step - loss: 0.2091 - accuracy: 0.9033 - val_loss: 0.5383 - val_accuracy: 0.8429\n", + "Epoch 100/100\n", + "912/912 [==============================] - 1s 2ms/step - loss: 0.2093 - accuracy: 0.9033 - val_loss: 0.5230 - val_accuracy: 0.8405\n" + ] + } + ], + "source": [ + "hist = model.fit(x_train_sc, y_train, validation_split=0.2, epochs=100, batch_size=20)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d0e75e92", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 90, + "id": "faada725", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "306/306 [==============================] - 0s 1ms/step - loss: 10435.6309 - accuracy: 0.7643\n" + ] + }, + { + "data": { + "text/plain": [ + "[10435.630859375, 0.7642542719841003]" + ] + }, + "execution_count": 90, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.evaluate(x_test, y_test)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b9fc749f", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 91, + "id": "a2d8a693", + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 91, + "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.plot(hist.history['loss'], c='r')\n", + "plt.plot(hist.history['val_loss'], c='b')" + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "id": "7d6c0160", + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 92, + "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.plot(hist.history['accuracy'], c='r')\n", + "plt.plot(hist.history['val_accuracy'], c='b')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "49bcd9fb", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 94, + "id": "9cdf9112", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.8494216398812571" + ] + }, + "execution_count": 94, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.ensemble import RandomForestClassifier\n", + "rfc = RandomForestClassifier()\n", + "rfc.fit(x_train, y_train)\n", + "rfc.score(x_test, y_test)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5c20b830", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5f02bc7e", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8a2e37b5", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/concrete_strength.ipynb b/concrete_strength.ipynb new file mode 100644 index 0000000..d363896 --- /dev/null +++ b/concrete_strength.ipynb @@ -0,0 +1,1405 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "ff138b7a", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "1b109bb0", + "metadata": {}, + "outputs": [], + "source": [ + "from tensorflow.keras.layers import *\n", + "from tensorflow.keras.models import *\n", + "import tensorflow as tf" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "9e7647d8", + "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", + "
Cement (component 1)(kg in a m^3 mixture)Blast Furnace Slag (component 2)(kg in a m^3 mixture)Fly Ash (component 3)(kg in a m^3 mixture)Water (component 4)(kg in a m^3 mixture)Superplasticizer (component 5)(kg in a m^3 mixture)Coarse Aggregate (component 6)(kg in a m^3 mixture)Fine Aggregate (component 7)(kg in a m^3 mixture)Age (day)Concrete compressive strength(MPa, megapascals)
0540.00.00.0162.02.51040.0676.02879.986111
1540.00.00.0162.02.51055.0676.02861.887366
2332.5142.50.0228.00.0932.0594.027040.269535
3332.5142.50.0228.00.0932.0594.036541.052780
4198.6132.40.0192.00.0978.4825.536044.296075
\n", + "
" + ], + "text/plain": [ + " Cement (component 1)(kg in a m^3 mixture) \\\n", + "0 540.0 \n", + "1 540.0 \n", + "2 332.5 \n", + "3 332.5 \n", + "4 198.6 \n", + "\n", + " Blast Furnace Slag (component 2)(kg in a m^3 mixture) \\\n", + "0 0.0 \n", + "1 0.0 \n", + "2 142.5 \n", + "3 142.5 \n", + "4 132.4 \n", + "\n", + " Fly Ash (component 3)(kg in a m^3 mixture) \\\n", + "0 0.0 \n", + "1 0.0 \n", + "2 0.0 \n", + "3 0.0 \n", + "4 0.0 \n", + "\n", + " Water (component 4)(kg in a m^3 mixture) \\\n", + "0 162.0 \n", + "1 162.0 \n", + "2 228.0 \n", + "3 228.0 \n", + "4 192.0 \n", + "\n", + " Superplasticizer (component 5)(kg in a m^3 mixture) \\\n", + "0 2.5 \n", + "1 2.5 \n", + "2 0.0 \n", + "3 0.0 \n", + "4 0.0 \n", + "\n", + " Coarse Aggregate (component 6)(kg in a m^3 mixture) \\\n", + "0 1040.0 \n", + "1 1055.0 \n", + "2 932.0 \n", + "3 932.0 \n", + "4 978.4 \n", + "\n", + " Fine Aggregate (component 7)(kg in a m^3 mixture) Age (day) \\\n", + "0 676.0 28 \n", + "1 676.0 28 \n", + "2 594.0 270 \n", + "3 594.0 365 \n", + "4 825.5 360 \n", + "\n", + " Concrete compressive strength(MPa, megapascals) \n", + "0 79.986111 \n", + "1 61.887366 \n", + "2 40.269535 \n", + "3 41.052780 \n", + "4 44.296075 " + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = pd.read_excel('./deep_source_files/Concrete_Data.xls')\n", + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "b31ab157", + "metadata": {}, + "outputs": [], + "source": [ + "df.columns = ['cement','furnace','ash','water','superplasticizer','coarse','fine','age','strength']" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "36e3784d", + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 1030 entries, 0 to 1029\n", + "Data columns (total 9 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 cement 1030 non-null float64\n", + " 1 furnace 1030 non-null float64\n", + " 2 ash 1030 non-null float64\n", + " 3 water 1030 non-null float64\n", + " 4 superplasticizer 1030 non-null float64\n", + " 5 coarse 1030 non-null float64\n", + " 6 fine 1030 non-null float64\n", + " 7 age 1030 non-null int64 \n", + " 8 strength 1030 non-null float64\n", + "dtypes: float64(8), int64(1)\n", + "memory usage: 72.5 KB\n" + ] + } + ], + "source": [ + "df.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "38c00f57", + "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", + "
cementfurnaceashwatersuperplasticizercoarsefineagestrength
0540.00.00.0162.02.51040.0676.02879.986111
1540.00.00.0162.02.51055.0676.02861.887366
2332.5142.50.0228.00.0932.0594.027040.269535
3332.5142.50.0228.00.0932.0594.036541.052780
4198.6132.40.0192.00.0978.4825.536044.296075
\n", + "
" + ], + "text/plain": [ + " cement furnace ash water superplasticizer coarse fine age \\\n", + "0 540.0 0.0 0.0 162.0 2.5 1040.0 676.0 28 \n", + "1 540.0 0.0 0.0 162.0 2.5 1055.0 676.0 28 \n", + "2 332.5 142.5 0.0 228.0 0.0 932.0 594.0 270 \n", + "3 332.5 142.5 0.0 228.0 0.0 932.0 594.0 365 \n", + "4 198.6 132.4 0.0 192.0 0.0 978.4 825.5 360 \n", + "\n", + " strength \n", + "0 79.986111 \n", + "1 61.887366 \n", + "2 40.269535 \n", + "3 41.052780 \n", + "4 44.296075 " + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4720dbb3", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "d138600e", + "metadata": {}, + "outputs": [], + "source": [ + "# strength를 예측하는 neural network model을 만들고 평가하시오.." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1d6bd229", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "0099a0b3", + "metadata": {}, + "outputs": [], + "source": [ + "y = df.strength\n", + "x = df.loc[:, :'age']" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "697e8028", + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0 79.986111\n", + "1 61.887366\n", + "2 40.269535\n", + "3 41.052780\n", + "4 44.296075\n", + " ... \n", + "1025 44.284354\n", + "1026 31.178794\n", + "1027 23.696601\n", + "1028 32.768036\n", + "1029 32.401235\n", + "Name: strength, Length: 1030, dtype: float64" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y # regression" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "642ffd6f", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "d3119b20", + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.model_selection import train_test_split\n", + "x_train, x_test, y_train, y_test = train_test_split(x,y, test_size=0.2, random_state=111)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "57e35559", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "80fac1cf", + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.preprocessing import MinMaxScaler\n", + "\n", + "scaler = MinMaxScaler()\n", + "\n", + "scaler.fit(x_train)\n", + "x_train_sc = scaler.transform(x_train)\n", + "x_test_sc = scaler.transform(x_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "ad75c125", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(824, 8)" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x_train.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "fdbed459", + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: \"sequential\"\n", + "_________________________________________________________________\n", + " Layer (type) Output Shape Param # \n", + "=================================================================\n", + " dense (Dense) (None, 256) 2304 \n", + " \n", + " dense_1 (Dense) (None, 128) 32896 \n", + " \n", + " dense_2 (Dense) (None, 56) 7224 \n", + " \n", + " dense_3 (Dense) (None, 28) 1596 \n", + " \n", + " dense_4 (Dense) (None, 1) 29 \n", + " \n", + "=================================================================\n", + "Total params: 44,049\n", + "Trainable params: 44,049\n", + "Non-trainable params: 0\n", + "_________________________________________________________________\n" + ] + } + ], + "source": [ + "model = Sequential()\n", + "model.add(Dense(256, input_dim=8, activation='relu'))\n", + "model.add(Dense(128, activation='relu'))\n", + "model.add(Dense(56, activation='relu'))\n", + "model.add(Dense(28, activation='relu'))\n", + "model.add(Dense(1))\n", + "model.summary()" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "3fd96bf9", + "metadata": {}, + "outputs": [], + "source": [ + "model.compile(loss='mean_squared_error', optimizer='adam')" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "3e66ae7e", + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/100\n", + "66/66 [==============================] - 0s 3ms/step - loss: 863.8524 - val_loss: 253.5287\n", + "Epoch 2/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 204.3968 - val_loss: 178.2988\n", + "Epoch 3/100\n", + "66/66 [==============================] - 0s 2ms/step - loss: 145.9846 - val_loss: 140.6652\n", + "Epoch 4/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 126.2157 - val_loss: 133.4973\n", + "Epoch 5/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 117.3546 - val_loss: 125.8332\n", + "Epoch 6/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 116.6077 - val_loss: 124.9199\n", + "Epoch 7/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 108.9657 - val_loss: 111.5492\n", + "Epoch 8/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 100.6447 - val_loss: 110.5959\n", + "Epoch 9/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 92.6357 - val_loss: 95.2640\n", + "Epoch 10/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 86.3447 - val_loss: 88.2061\n", + "Epoch 11/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 77.1072 - val_loss: 87.6115\n", + "Epoch 12/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 69.8681 - val_loss: 75.9527\n", + "Epoch 13/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 65.7164 - val_loss: 69.2419\n", + "Epoch 14/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 63.0649 - val_loss: 63.7330\n", + "Epoch 15/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 57.2305 - val_loss: 62.4517\n", + "Epoch 16/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 56.6774 - val_loss: 58.9463\n", + "Epoch 17/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 52.8902 - val_loss: 54.6599\n", + "Epoch 18/100\n", + "66/66 [==============================] - 0s 2ms/step - loss: 50.0483 - val_loss: 52.1739\n", + "Epoch 19/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 45.8436 - val_loss: 54.1810\n", + "Epoch 20/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 48.7018 - val_loss: 60.1593\n", + "Epoch 21/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 45.2344 - val_loss: 45.4661\n", + "Epoch 22/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 44.9407 - val_loss: 50.7822\n", + "Epoch 23/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 42.6913 - val_loss: 42.2270\n", + "Epoch 24/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 43.4352 - val_loss: 42.0882\n", + "Epoch 25/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 42.8409 - val_loss: 46.1499\n", + "Epoch 26/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 42.7029 - val_loss: 41.2565\n", + "Epoch 27/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 40.9813 - val_loss: 39.0895\n", + "Epoch 28/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 37.5777 - val_loss: 37.2759\n", + "Epoch 29/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 39.4489 - val_loss: 37.8708\n", + "Epoch 30/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 39.5973 - val_loss: 40.2170\n", + "Epoch 31/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 36.3776 - val_loss: 35.5613\n", + "Epoch 32/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 36.2942 - val_loss: 36.2404\n", + "Epoch 33/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 35.9046 - val_loss: 33.0716\n", + "Epoch 34/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 38.5112 - val_loss: 36.4193\n", + "Epoch 35/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 44.7111 - val_loss: 35.4618\n", + "Epoch 36/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 40.3638 - val_loss: 33.0946\n", + "Epoch 37/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 35.8065 - val_loss: 33.3058\n", + "Epoch 38/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 34.1487 - val_loss: 33.3899\n", + "Epoch 39/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 33.9670 - val_loss: 35.0284\n", + "Epoch 40/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 33.7326 - val_loss: 35.8733\n", + "Epoch 41/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 35.9596 - val_loss: 31.5148\n", + "Epoch 42/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 32.3948 - val_loss: 30.8912\n", + "Epoch 43/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 32.3694 - val_loss: 31.4137\n", + "Epoch 44/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 31.0836 - val_loss: 32.2693\n", + "Epoch 45/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 31.8382 - val_loss: 29.1718\n", + "Epoch 46/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 34.0218 - val_loss: 29.5010\n", + "Epoch 47/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 32.1277 - val_loss: 33.8596\n", + "Epoch 48/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 30.6031 - val_loss: 31.9619\n", + "Epoch 49/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 33.9742 - val_loss: 33.2220\n", + "Epoch 50/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 33.1069 - val_loss: 31.1363\n", + "Epoch 51/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 32.8707 - val_loss: 28.1913\n", + "Epoch 52/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 29.1343 - val_loss: 33.7811\n", + "Epoch 53/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 32.1534 - val_loss: 28.3851\n", + "Epoch 54/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 29.0159 - val_loss: 31.5364\n", + "Epoch 55/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 29.5793 - val_loss: 28.2253\n", + "Epoch 56/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 30.4586 - val_loss: 32.6443\n", + "Epoch 57/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 29.3391 - val_loss: 26.6040\n", + "Epoch 58/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 28.7258 - val_loss: 38.4231\n", + "Epoch 59/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 30.8126 - val_loss: 30.6403\n", + "Epoch 60/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 29.3109 - val_loss: 27.1383\n", + "Epoch 61/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 28.2650 - val_loss: 27.3669\n", + "Epoch 62/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 27.1452 - val_loss: 29.4155\n", + "Epoch 63/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 28.4015 - val_loss: 26.6283\n", + "Epoch 64/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 26.3604 - val_loss: 25.1489\n", + "Epoch 65/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 26.7334 - val_loss: 27.8768\n", + "Epoch 66/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 25.6632 - val_loss: 27.0037\n", + "Epoch 67/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 27.9597 - val_loss: 33.3250\n", + "Epoch 68/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 25.2843 - val_loss: 27.8843\n", + "Epoch 69/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 25.2747 - val_loss: 25.9905\n", + "Epoch 70/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 25.5165 - val_loss: 33.7087\n", + "Epoch 71/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 24.1302 - val_loss: 24.6336\n", + "Epoch 72/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 24.3786 - val_loss: 27.2481\n", + "Epoch 73/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 24.2112 - val_loss: 25.9465\n", + "Epoch 74/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 23.5201 - val_loss: 25.4118\n", + "Epoch 75/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 24.4009 - val_loss: 25.1696\n", + "Epoch 76/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 25.6821 - val_loss: 23.9779\n", + "Epoch 77/100\n", + "66/66 [==============================] - 0s 2ms/step - loss: 24.4320 - val_loss: 24.2703\n", + "Epoch 78/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 23.1994 - val_loss: 25.7530\n", + "Epoch 79/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 21.3851 - val_loss: 30.5481\n", + "Epoch 80/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 23.2986 - val_loss: 23.3804\n", + "Epoch 81/100\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "66/66 [==============================] - 0s 1ms/step - loss: 22.8602 - val_loss: 24.2502\n", + "Epoch 82/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 23.8959 - val_loss: 22.3153\n", + "Epoch 83/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 24.1877 - val_loss: 23.0466\n", + "Epoch 84/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 22.7385 - val_loss: 23.8789\n", + "Epoch 85/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 21.7386 - val_loss: 23.4674\n", + "Epoch 86/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 22.8226 - val_loss: 22.0640\n", + "Epoch 87/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 21.4064 - val_loss: 23.3618\n", + "Epoch 88/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 21.8638 - val_loss: 23.0547\n", + "Epoch 89/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 19.9992 - val_loss: 24.2248\n", + "Epoch 90/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 19.7748 - val_loss: 34.1037\n", + "Epoch 91/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 23.2838 - val_loss: 30.7516\n", + "Epoch 92/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 21.6518 - val_loss: 22.4616\n", + "Epoch 93/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 21.6962 - val_loss: 21.1011\n", + "Epoch 94/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 20.2561 - val_loss: 23.1630\n", + "Epoch 95/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 20.1636 - val_loss: 26.0417\n", + "Epoch 96/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 21.5790 - val_loss: 31.2093\n", + "Epoch 97/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 20.9352 - val_loss: 27.5033\n", + "Epoch 98/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 20.1222 - val_loss: 22.0241\n", + "Epoch 99/100\n", + "66/66 [==============================] - 0s 1ms/step - loss: 21.7818 - val_loss: 24.2856\n", + "Epoch 100/100\n", + "66/66 [==============================] - 0s 2ms/step - loss: 19.1662 - val_loss: 22.2836\n" + ] + } + ], + "source": [ + "hist = model.fit(x_train_sc, y_train, epochs=100, batch_size=10, validation_split=0.2)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "298b3a78", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "da4f2c20", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 24, + "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.plot(hist.history['loss'])\n", + "plt.plot(hist.history['val_loss'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "85066cd7", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "4a96e30c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "7/7 [==============================] - 0s 1ms/step - loss: 1977869312.0000\n" + ] + }, + { + "data": { + "text/plain": [ + "1977869312.0" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.evaluate(x_test, y_test)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6616eeee", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "f6497df0", + "metadata": {}, + "outputs": [], + "source": [ + "preds = model.predict(x_test_sc)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "0205b7ff", + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[45.368923,\n", + " 29.70999,\n", + " 31.84686,\n", + " 33.701836,\n", + " 61.375706,\n", + " 33.869713,\n", + " 19.271906,\n", + " 14.431589,\n", + " 23.122871,\n", + " 19.345968,\n", + " 37.855362,\n", + " 32.760098,\n", + " 37.845757,\n", + " 53.81366,\n", + " 41.115845,\n", + " 59.511375,\n", + " 31.540426,\n", + " 25.475939,\n", + " 34.919136,\n", + " 20.281279,\n", + " 19.805513,\n", + " 29.130491,\n", + " 24.232594,\n", + " 24.131506,\n", + " 43.57869,\n", + " 38.129646,\n", + " 20.957235,\n", + " 19.961845,\n", + " 62.2474,\n", + " 46.54567,\n", + " 64.51732,\n", + " 36.436935,\n", + " 46.357742,\n", + " 35.602036,\n", + " 28.451513,\n", + " 42.601955,\n", + " 37.038097,\n", + " 37.96987,\n", + " 42.54087,\n", + " 30.35013,\n", + " 78.41295,\n", + " 43.80167,\n", + " 26.789455,\n", + " 34.310493,\n", + " 42.548042,\n", + " 30.215372,\n", + " 41.126312,\n", + " 14.034615,\n", + " 32.149864,\n", + " 23.570326,\n", + " 43.05079,\n", + " 62.535057,\n", + " 34.832466,\n", + " 36.932266,\n", + " 43.655083,\n", + " 47.540222,\n", + " 46.57078,\n", + " 40.16523,\n", + " 32.665092,\n", + " 30.303907,\n", + " 37.793972,\n", + " 12.796452,\n", + " 51.086784,\n", + " 31.077673,\n", + " 76.41998,\n", + " 26.076525,\n", + " 16.583643,\n", + " 49.870773,\n", + " 55.517883,\n", + " 76.31974,\n", + " 41.937717,\n", + " 45.99546,\n", + " 42.86609,\n", + " 37.411324,\n", + " 44.911186,\n", + " 25.06669,\n", + " 12.865903,\n", + " 63.262688,\n", + " 59.2107,\n", + " 56.156826,\n", + " 54.111507,\n", + " 38.521385,\n", + " 35.20486,\n", + " 43.45697,\n", + " 41.49909,\n", + " 74.21853,\n", + " 5.784622,\n", + " 22.490927,\n", + " 49.29733,\n", + " 36.96221,\n", + " 25.020693,\n", + " 17.793676,\n", + " 23.15072,\n", + " 50.235035,\n", + " 7.0405498,\n", + " 28.104767,\n", + " 60.934822,\n", + " 24.222261,\n", + " 35.22718,\n", + " 32.024788,\n", + " 36.883896,\n", + " 37.945663,\n", + " 22.936369,\n", + " 8.309097,\n", + " 16.7964,\n", + " 13.620266,\n", + " 20.088436,\n", + " 54.755188,\n", + " 30.421593,\n", + " 30.599161,\n", + " 38.921604,\n", + " 42.2892,\n", + " 22.706335,\n", + " 44.32276,\n", + " 27.026411,\n", + " 19.358648,\n", + " 52.240368,\n", + " 54.425396,\n", + " 15.086339,\n", + " 8.461037,\n", + " 74.21853,\n", + " 27.93961,\n", + " 18.656061,\n", + " 35.46042,\n", + " 64.26077,\n", + " 28.203274,\n", + " 22.5283,\n", + " 66.816376,\n", + " 43.321926,\n", + " 34.523285,\n", + " 43.435112,\n", + " 26.16228,\n", + " 22.816496,\n", + " 48.98912,\n", + " 39.140915,\n", + " 70.82097,\n", + " 15.731771,\n", + " 10.004705,\n", + " 45.142723,\n", + " 47.156403,\n", + " 26.041666,\n", + " 41.419224,\n", + " 21.515108,\n", + " 58.201057,\n", + " 28.93469,\n", + " 35.163868,\n", + " 47.197365,\n", + " 41.30638,\n", + " 59.49891,\n", + " 19.716253,\n", + " 37.78317,\n", + " 26.69575,\n", + " 54.5057,\n", + " 41.59693,\n", + " 34.511738,\n", + " 22.973402,\n", + " 9.438608,\n", + " 27.41013,\n", + " 25.893251,\n", + " 30.447481,\n", + " 40.916615,\n", + " 71.201675,\n", + " 66.503555,\n", + " 25.268316,\n", + " 27.063534,\n", + " 28.883596,\n", + " 52.184624,\n", + " 35.8452,\n", + " 32.06022,\n", + " 40.185005,\n", + " 14.105488,\n", + " 27.277931,\n", + " 24.955896,\n", + " 50.34646,\n", + " 8.209303,\n", + " 17.652578,\n", + " 44.70304,\n", + " 41.333206,\n", + " 39.763084,\n", + " 66.05668,\n", + " 18.690687,\n", + " 13.715476,\n", + " 47.1445,\n", + " 24.378143,\n", + " 45.212715,\n", + " 40.95725,\n", + " 36.63566,\n", + " 24.129108,\n", + " 56.095993,\n", + " 46.138855,\n", + " 14.82826,\n", + " 53.90435,\n", + " 53.27279,\n", + " 73.29619,\n", + " 15.171923,\n", + " 28.63064,\n", + " 39.2185,\n", + " 44.155304,\n", + " 77.42864,\n", + " 3.6717358,\n", + " 51.00345,\n", + " 7.469794,\n", + " 38.16006,\n", + " 48.67729,\n", + " 64.93767,\n", + " 63.390217]" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "preds = [v[0] for v in preds]\n", + "preds" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "797f0535", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "587f86b2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.8791392568935923" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.metrics import r2_score\n", + "r2_score(y_test, preds)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c20c676e", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "2e7edf87", + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(47.739318239999996, 45.368923)\n", + "(30.44726016, 29.70999)\n", + "(42.29245784, 31.84686)\n", + "(32.922478999999996, 33.701836)\n", + "(65.909079268, 61.375706)\n", + "(26.22766704, 33.869713)\n", + "(20.96696516, 19.271906)\n", + "(10.53519328, 14.431589)\n", + "(23.221551679999997, 23.122871)\n", + "(13.395533715270679, 19.345968)\n", + "(33.05347944, 37.855362)\n", + "(42.79577532, 32.760098)\n", + "(36.44570136, 37.845757)\n", + "(52.82075636, 53.81366)\n", + "(37.34202016, 41.115845)\n", + "(62.935369279999996, 59.511375)\n", + "(33.72916592, 31.540426)\n", + "(29.7508894, 25.475939)\n", + "(24.40055564, 34.919136)\n", + "(24.44881896, 20.281279)\n", + "(20.08443588, 19.805513)\n", + "(32.039949719999996, 29.130491)\n", + "(18.287661424, 24.232594)\n", + "(34.23937816, 24.131506)\n", + "(49.20100736, 43.57869)\n", + "(50.60064364, 38.129646)\n", + "(21.917063088, 20.957235)\n", + "(15.091250688, 19.961845)\n", + "(64.30053176, 62.2474)\n", + "(41.934619796, 46.54567)\n", + "(68.29949256, 64.51732)\n", + "(39.056057496, 36.436935)\n", + "(44.38846488, 46.357742)\n", + "(33.398217439999996, 35.602036)\n", + "(30.2335226, 28.451513)\n", + "(34.73580088, 42.601955)\n", + "(33.5430074, 37.038097)\n", + "(39.45181672, 37.96987)\n", + "(48.846616696, 42.54087)\n", + "(32.763899519999995, 30.35013)\n", + "(79.29663476, 78.41295)\n", + "(43.01296026, 43.80167)\n", + "(24.579819399999998, 26.789455)\n", + "(44.86420332, 34.310493)\n", + "(33.019005639999996, 42.548042)\n", + "(23.835874796, 30.215372)\n", + "(43.377003588, 41.126312)\n", + "(21.29101888, 14.034615)\n", + "(32.72253096, 32.149864)\n", + "(22.435549039999998, 23.570326)\n", + "(40.563252031999994, 43.05079)\n", + "(44.51946532, 62.535057)\n", + "(34.48758952, 34.832466)\n", + "(32.401235144, 36.932266)\n", + "(55.89581932, 43.655083)\n", + "(45.2985732, 47.540222)\n", + "(33.116911232, 46.57078)\n", + "(33.082437432, 40.16523)\n", + "(37.363393916, 32.665092)\n", + "(31.44700036, 30.303907)\n", + "(33.192064116000005, 37.793972)\n", + "(12.83804312, 12.796452)\n", + "(57.21823428799999, 51.086784)\n", + "(36.349864196, 31.077673)\n", + "(57.226507999999995, 76.41998)\n", + "(21.946021079999998, 26.076525)\n", + "(17.95395504, 16.583643)\n", + "(53.72396992, 49.870773)\n", + "(45.3675208, 55.517883)\n", + "(61.887365759999994, 76.31974)\n", + "(22.489328168, 41.937717)\n", + "(51.331488199999995, 45.99546)\n", + "(44.207822168, 42.86609)\n", + "(41.40992856, 37.411324)\n", + "(48.15300384, 44.911186)\n", + "(24.483292759999998, 25.06669)\n", + "(11.57630204, 12.865903)\n", + "(67.30664712, 63.262688)\n", + "(58.60546, 59.2107)\n", + "(55.55108132, 56.156826)\n", + "(61.232363559999996, 54.111507)\n", + "(37.42475728, 38.521385)\n", + "(44.61185510399999, 35.20486)\n", + "(42.620648416, 43.45697)\n", + "(33.419591196, 41.49909)\n", + "(77.29715436, 74.21853)\n", + "(8.06342182, 5.784622)\n", + "(24.437787344, 22.490927)\n", + "(52.5035974, 49.29733)\n", + "(33.399596392, 36.96221)\n", + "(25.17966352, 25.020693)\n", + "(16.27852836, 17.793676)\n", + "(16.503987012, 23.15072)\n", + "(51.0556978, 50.235035)\n", + "(6.883728383999999, 7.0405498)\n", + "(26.94472208, 28.104767)\n", + "(60.19814956, 60.934822)\n", + "(26.200088, 24.222261)\n", + "(30.219733079999997, 35.22718)\n", + "(26.96540636, 32.024788)\n", + "(38.11423328, 36.883896)\n", + "(36.93522932, 37.945663)\n", + "(23.73865868, 22.936369)\n", + "(10.730314988, 8.309097)\n", + "(6.26733684, 16.7964)\n", + "(7.3980774799999995, 13.620266)\n", + "(22.31833812, 20.088436)\n", + "(53.38612668, 54.755188)\n", + "(31.2677366, 30.421593)\n", + "(29.41304616, 30.599161)\n", + "(32.8535314, 38.921604)\n", + "(42.54756396, 42.2892)\n", + "(21.02212324, 22.706335)\n", + "(49.185149411999994, 44.32276)\n", + "(29.72331036, 27.026411)\n", + "(22.13907436, 19.358648)\n", + "(53.95839176, 52.240368)\n", + "(57.02655996, 54.425396)\n", + "(9.735401119999999, 15.086339)\n", + "(4.9035533120000006, 8.461037)\n", + "(77.29715436, 74.21853)\n", + "(27.62730332, 27.93961)\n", + "(14.699628319999999, 18.656061)\n", + "(33.762260768, 35.46042)\n", + "(66.89985628, 64.26077)\n", + "(31.420110796000003, 28.203274)\n", + "(23.5111316, 22.5283)\n", + "(69.65776027999999, 66.816376)\n", + "(52.908319811999995, 43.321926)\n", + "(23.8903434, 34.523285)\n", + "(40.934879596, 43.435112)\n", + "(24.8900836, 26.16228)\n", + "(21.066249704, 22.816496)\n", + "(50.94882902, 48.98912)\n", + "(35.86585204399999, 39.140915)\n", + "(74.16693332, 70.82097)\n", + "(17.236210524, 15.731771)\n", + "(12.052040479999999, 10.004705)\n", + "(42.030456959999995, 45.142723)\n", + "(55.82687172, 47.156403)\n", + "(32.90179472, 26.041666)\n", + "(38.804398756000005, 41.419224)\n", + "(30.38520732, 21.515108)\n", + "(54.896079119999996, 58.201057)\n", + "(33.003837168, 28.93469)\n", + "(37.171030112, 35.163868)\n", + "(48.401215199999996, 47.197365)\n", + "(37.25928304, 41.30638)\n", + "(61.06688932, 59.49891)\n", + "(25.726417988, 19.716253)\n", + "(34.90127512, 37.78317)\n", + "(31.026419999999998, 26.69575)\n", + "(56.3991368, 54.5057)\n", + "(46.20178676, 41.59693)\n", + "(39.58281716, 34.511738)\n", + "(26.922658848, 22.973402)\n", + "(11.414275179999999, 9.438608)\n", + "(11.46598588, 27.41013)\n", + "(12.63809508, 25.893251)\n", + "(27.681082448, 30.447481)\n", + "(30.079769451999997, 40.916615)\n", + "(67.79617508, 71.201675)\n", + "(65.19685056, 66.503555)\n", + "(33.08795324, 25.268316)\n", + "(14.54104884, 27.063534)\n", + "(23.696600644, 28.883596)\n", + "(56.061293559999996, 52.184624)\n", + "(35.2322236, 35.8452)\n", + "(34.569637164, 32.06022)\n", + "(46.24315532, 40.185005)\n", + "(12.788400847999998, 14.105488)\n", + "(28.79941252, 27.277931)\n", + "(27.742445811999996, 24.955896)\n", + "(51.95891136, 50.34646)\n", + "(6.467284879999999, 8.209303)\n", + "(21.26343984, 17.652578)\n", + "(53.90323368, 44.70304)\n", + "(39.6621069, 41.333206)\n", + "(42.42345828, 39.763084)\n", + "(58.522722879999996, 66.05668)\n", + "(17.43684804, 18.690687)\n", + "(14.2032056, 13.715476)\n", + "(39.435269296, 47.1445)\n", + "(22.53207568, 24.378143)\n", + "(47.029847436000004, 45.212715)\n", + "(52.20022796, 40.95725)\n", + "(43.388724679999996, 36.63566)\n", + "(24.49708228, 24.129108)\n", + "(81.75116932, 56.095993)\n", + "(42.32693164, 46.138855)\n", + "(15.520104759999999, 14.82826)\n", + "(56.83350668, 53.90435)\n", + "(53.69225402399999, 53.27279)\n", + "(74.19451236, 73.29619)\n", + "(14.306626999999999, 15.171923)\n", + "(27.234302, 28.63064)\n", + "(43.69898888, 39.2185)\n", + "(55.50971276, 44.155304)\n", + "(64.90037588, 77.42864)\n", + "(4.565020596, 3.6717358)\n", + "(58.99846132, 51.00345)\n", + "(7.723510152, 7.469794)\n", + "(40.85834776, 38.16006)\n", + "(37.6798634, 48.67729)\n", + "(74.69782984, 64.93767)\n", + "(61.797733879999996, 63.390217)\n" + ] + } + ], + "source": [ + "for i in zip(y_test, preds):\n", + " print(i)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5ec29378", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}