{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load\n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\nimport zipfile\nimport sklearn\nimport numpy as np\nimport scipy.misc # to visualize only\nfrom scipy import stats\nfrom sklearn.decomposition import PCA as sklearnPCA\nfrom sklearn.feature_selection import SelectKBest\nfrom sklearn.neural_network import MLPClassifier\nfrom sklearn.feature_selection import chi2\nfrom sklearn import svm, linear_model, naive_bayes\nfrom sklearn import metrics\nimport math\nimport matplotlib.pyplot as plt\nimport skimage\nfrom skimage.feature import hog\nfrom skimage import data, color, exposure\nfrom skimage.feature import daisy\nfrom skimage.io import imread\nfrom skimage.transform import resize\nimport pandas as pd\nimport numpy as np\nimport seaborn as sns\nimport matplotlib.pyplot as plt\nimport os\nimport random\nimport zipfile\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.metrics import ConfusionMatrixDisplay, confusion_matrix, classification_report \nimport tensorflow as tf\nfrom keras.preprocessing.image import load_img, ImageDataGenerator\nfrom keras.models import Sequential, Model\nfrom keras.layers import Conv2D, MaxPool2D, Flatten, Dense, GlobalAveragePooling2D, Dropout, BatchNormalization, Input\nfrom keras.callbacks import ReduceLROnPlateau, EarlyStopping, ModelCheckpoint\nfrom keras.applications.vgg16 import VGG16, preprocess_input\n\n# Input data files are available in the read-only \"../input/\" directory\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n\n# You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2021-12-17T16:21:40.994077Z","iopub.execute_input":"2021-12-17T16:21:40.99578Z","iopub.status.idle":"2021-12-17T16:21:41.012143Z","shell.execute_reply.started":"2021-12-17T16:21:40.995726Z","shell.execute_reply":"2021-12-17T16:21:41.011435Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"os.listdir(\"../input/dogs-vs-cats/\")","metadata":{"execution":{"iopub.status.busy":"2021-12-17T16:21:41.014005Z","iopub.execute_input":"2021-12-17T16:21:41.014699Z","iopub.status.idle":"2021-12-17T16:21:41.028203Z","shell.execute_reply.started":"2021-12-17T16:21:41.014656Z","shell.execute_reply":"2021-12-17T16:21:41.027393Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"TRAIN_PATH = \"../input/dogs-vs-cats/train.zip\"\nTEST_PATH = \"../input/dogs-vs-cats/test1.zip\"\n\nFILES = \"/kaggle/files/unzipped/\"\n\nwith zipfile.ZipFile(TRAIN_PATH, 'r') as zipp:\n    zipp.extractall(FILES)\n    \nwith zipfile.ZipFile(TEST_PATH, 'r') as zipp:\n    zipp.extractall(FILES)","metadata":{"execution":{"iopub.status.busy":"2021-12-17T16:21:41.0294Z","iopub.execute_input":"2021-12-17T16:21:41.029775Z","iopub.status.idle":"2021-12-17T16:21:59.542336Z","shell.execute_reply.started":"2021-12-17T16:21:41.029744Z","shell.execute_reply":"2021-12-17T16:21:59.54133Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_df = pd.DataFrame({\"file\": os.listdir(\"/kaggle/files/unzipped/train\")})\ntrain_df[\"label\"] = train_df[\"file\"].apply(lambda x: x.split(\".\")[0])\n\n","metadata":{"execution":{"iopub.status.busy":"2021-12-17T16:21:59.544482Z","iopub.execute_input":"2021-12-17T16:21:59.544909Z","iopub.status.idle":"2021-12-17T16:21:59.581686Z","shell.execute_reply.started":"2021-12-17T16:21:59.544866Z","shell.execute_reply":"2021-12-17T16:21:59.580955Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"x= train_df ['file']\ny = train_df ['label']","metadata":{"execution":{"iopub.status.busy":"2021-12-17T16:21:59.582844Z","iopub.execute_input":"2021-12-17T16:21:59.583213Z","iopub.status.idle":"2021-12-17T16:22:00.186638Z","shell.execute_reply.started":"2021-12-17T16:21:59.583183Z","shell.execute_reply":"2021-12-17T16:22:00.185778Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"hog_features_train_set = np.zeros((len(x),3780 ))\nfor i in range(len(x)):\n    img = imread(FILES + \"train/\" + train_df[\"file\"][i])\n    resized_img = resize(img, (128, 64))\n    fd, hog_image = hog(resized_img, orientations=9, pixels_per_cell=(8, 8),\n                \tcells_per_block=(2, 2), visualize=True, multichannel=True)\n    hog_features_train_set[i] = fd.reshape((1,3780 ))\n","metadata":{"execution":{"iopub.status.busy":"2021-12-17T16:22:00.188078Z","iopub.execute_input":"2021-12-17T16:22:00.188973Z","iopub.status.idle":"2021-12-17T16:35:31.5648Z","shell.execute_reply.started":"2021-12-17T16:22:00.188923Z","shell.execute_reply":"2021-12-17T16:35:31.5633Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_df = pd.DataFrame({\"file\": os.listdir(\"/kaggle/files/unzipped/test1\")})\n\ntest_df.head()","metadata":{"execution":{"iopub.status.busy":"2021-12-17T16:35:31.566367Z","iopub.status.idle":"2021-12-17T16:35:31.567133Z","shell.execute_reply.started":"2021-12-17T16:35:31.56686Z","shell.execute_reply":"2021-12-17T16:35:31.566889Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_x= test_df ['file']\nhog_features_test_set = np.zeros((len(test_x),3780))\nfor i in range(len(test_x)):\n    img = imread(FILES + \"test1/\" + test_df[\"file\"][i])\n    resized_img = resize(img, (128, 64))\n    fd, hog_image = hog(resized_img, orientations=9, pixels_per_cell=(8, 8),\n                \tcells_per_block=(2, 2), visualize=True, multichannel=True)\n    hog_features_test_set[i] = fd.reshape((1,3780))","metadata":{"execution":{"iopub.status.busy":"2021-12-17T16:35:31.568661Z","iopub.status.idle":"2021-12-17T16:35:31.569415Z","shell.execute_reply.started":"2021-12-17T16:35:31.569152Z","shell.execute_reply":"2021-12-17T16:35:31.56918Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"x_train = hog_features_train_set\ny_train = y\nx_test = hog_features_test_set","metadata":{"execution":{"iopub.status.busy":"2021-12-17T16:35:31.570905Z","iopub.status.idle":"2021-12-17T16:35:31.571643Z","shell.execute_reply.started":"2021-12-17T16:35:31.571371Z","shell.execute_reply":"2021-12-17T16:35:31.571398Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sv = svm.SVC()\nprint \"Training SVM\"\nsv.fit(x_train,y_train)\nprint \"Testing SVM\"\npredicted_svm = sv.predict(x_test)\nnp.savetxt(\"predicted_svm_hog.csv\",predicted_svm, delimiter =\",\")","metadata":{"execution":{"iopub.status.busy":"2021-12-17T16:35:31.573039Z","iopub.status.idle":"2021-12-17T16:35:31.573844Z","shell.execute_reply.started":"2021-12-17T16:35:31.573591Z","shell.execute_reply":"2021-12-17T16:35:31.57362Z"},"trusted":true},"execution_count":null,"outputs":[]}]}