{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.13","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":18647,"databundleVersionId":1126921,"sourceType":"competition"},{"sourceId":38911282,"sourceType":"kernelVersion"}],"dockerImageVersionId":30664,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import os\nimport pandas as pd\nimport tensorflow as tf\nfrom tensorflow.keras.preprocessing.image import ImageDataGenerator\nfrom tensorflow.keras.preprocessing import image\n","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2024-02-28T15:38:32.250039Z","iopub.execute_input":"2024-02-28T15:38:32.250448Z","iopub.status.idle":"2024-02-28T15:38:47.414903Z","shell.execute_reply.started":"2024-02-28T15:38:32.250399Z","shell.execute_reply":"2024-02-28T15:38:47.413529Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_data = pd.read_csv(\"/kaggle/input/prostate-cancer-grade-assessment/train.csv\")","metadata":{"execution":{"iopub.status.busy":"2024-02-28T15:38:47.416835Z","iopub.execute_input":"2024-02-28T15:38:47.417472Z","iopub.status.idle":"2024-02-28T15:38:47.449992Z","shell.execute_reply.started":"2024-02-28T15:38:47.417437Z","shell.execute_reply":"2024-02-28T15:38:47.449018Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def load_and_preprocess_image(image_path, target_size=(224, 224)):\n    try:\n        img = image.load_img(image_path, target_size=target_size)\n        x = image.img_to_array(img)\n        x = x / 255.0  # Normalize pixel values to [0, 1]\n    except FileNotFoundError:\n        print(f\"Image not found: {image_path}\")\n        # Consider handling missing images appropriately (e.g., excluding them, imputing values)\n        return None\n    return x\n","metadata":{"execution":{"iopub.status.busy":"2024-02-28T15:39:13.971456Z","iopub.execute_input":"2024-02-28T15:39:13.972054Z","iopub.status.idle":"2024-02-28T15:39:13.980156Z","shell.execute_reply.started":"2024-02-28T15:39:13.972008Z","shell.execute_reply":"2024-02-28T15:39:13.978931Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"image_paths = [os.path.join(\"/kaggle/input/prostate-cancer-grade-assessment/train_images/\", f\"{image_id}.tiff\") for image_id in train_data[\"image_id\"]]\nlabels = train_data[\"isup_grade\"]  # Assume \"isup_grade\" is the target column\n# os.getcwd()","metadata":{"execution":{"iopub.status.busy":"2024-02-28T15:39:14.989632Z","iopub.execute_input":"2024-02-28T15:39:14.990152Z","iopub.status.idle":"2024-02-28T15:39:15.021809Z","shell.execute_reply.started":"2024-02-28T15:39:14.990102Z","shell.execute_reply":"2024-02-28T15:39:15.020908Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"datagen = ImageDataGenerator(\n    rotation_range=20,\n    width_shift_range=0.2,\n    height_shift_range=0.2,\n    shear_range=0.2,\n    zoom_range=0.2,\n    horizontal_flip=True,\n#     fill_mode=\"nearest\"\n)\n","metadata":{"execution":{"iopub.status.busy":"2024-02-28T15:39:28.25005Z","iopub.execute_input":"2024-02-28T15:39:28.250477Z","iopub.status.idle":"2024-02-28T15:39:28.258279Z","shell.execute_reply.started":"2024-02-28T15:39:28.250445Z","shell.execute_reply":"2024-02-28T15:39:28.257124Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_generator = datagen.flow_from_directory(\n    \"/kaggle/input/prostate-cancer-grade-assessment\",  \n    target_size=(224, 224),  \n    batch_size=32,  \n    class_mode=\"categorical\",  \n    shuffle=True,\n    seed=42 \n)\n# validation_generator = datagen.flow_from_directory(\n#     \"image/validation\",  # Adjust path if using a validation set\n#     target_size=(224, 224),\n#     batch_size=32,\n#     class_mode=\"categorical\",\n#     shuffle=False\n# )\n","metadata":{"execution":{"iopub.status.busy":"2024-02-28T15:46:25.474693Z","iopub.execute_input":"2024-02-28T15:46:25.47517Z","iopub.status.idle":"2024-02-28T15:46:29.679497Z","shell.execute_reply.started":"2024-02-28T15:46:25.475127Z","shell.execute_reply":"2024-02-28T15:46:29.678498Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model = tf.keras.Sequential([\n    tf.keras.layers.Conv2D(32, (3, 3), activation=\"relu\", input_shape=(224, 224, 3)),\n    tf.keras.layers.MaxPooling2D((2, 2)),\n    tf.keras.layers.Conv2D(64, (3, 3), activation=\"relu\"),\n    tf.keras.layers.MaxPooling2D((2, 2)),\n    tf.keras.layers.Flatten(),\n    tf.keras.layers.Dense(128, activation=\"relu\"),\n#     tf.keras.layers.Dropout(0.5),\n    tf.keras.layers.Dense(6, activation=\"softmax\")  # Adjust num_classes based on your ISUP grade categories\n])\n","metadata":{"execution":{"iopub.status.busy":"2024-02-28T15:44:58.811849Z","iopub.execute_input":"2024-02-28T15:44:58.812328Z","iopub.status.idle":"2024-02-28T15:44:59.01608Z","shell.execute_reply.started":"2024-02-28T15:44:58.812289Z","shell.execute_reply":"2024-02-28T15:44:59.014781Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.summary()","metadata":{"execution":{"iopub.status.busy":"2024-02-28T15:45:05.299259Z","iopub.execute_input":"2024-02-28T15:45:05.299705Z","iopub.status.idle":"2024-02-28T15:45:05.324127Z","shell.execute_reply.started":"2024-02-28T15:45:05.299672Z","shell.execute_reply":"2024-02-28T15:45:05.323054Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.compile(optimizer=\"adam\", loss=\"categorical_crossentropy\", metrics=[\"accuracy\"])\n","metadata":{"execution":{"iopub.status.busy":"2024-02-28T15:45:08.1097Z","iopub.execute_input":"2024-02-28T15:45:08.110416Z","iopub.status.idle":"2024-02-28T15:45:08.120835Z","shell.execute_reply.started":"2024-02-28T15:45:08.11038Z","shell.execute_reply":"2024-02-28T15:45:08.119354Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"history = model.fit(\n    train_generator,\n    epochs=10,  # Adjust epochs based on your dataset and validation results\n#     validation_data=validation_generator\n)","metadata":{"execution":{"iopub.status.busy":"2024-02-28T15:45:33.2399Z","iopub.execute_input":"2024-02-28T15:45:33.240328Z","iopub.status.idle":"2024-02-28T15:45:33.357462Z","shell.execute_reply.started":"2024-02-28T15:45:33.240296Z","shell.execute_reply":"2024-02-28T15:45:33.35616Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# model = Sequential(\n#             [\n#                 layers.Conv2D(32,(3,3), activation='relu', input_shape=(224,224,3)),\n#                 layers.MaxPool2D((2,2)),\n                \n#                 layers.Conv2D(64,(3,3), activation='relu'),\n#                 layers.MaxPool2D((2,2)),\n                \n#                 layers.Conv2D(128,(3,3), activation='relu'),\n#                 layers.MaxPool2D((2,2)),\n                \n#                 layers.Conv2D(128,(3,3), activation='relu'),\n#                 layers.MaxPool2D((2,2)),\n                \n#                 layers.Flatten(),\n#                 layers.Dense(512, activation='relu'),\n#                 layers.Dense(6, activation='softmax')\n#              ]\n# )\n# # model = models.Sequential()\n\n# # # Convolutional and pooling layer pair definition\n# # model.add(layers.Conv2D(32, (3, 3), activation = \"relu\", input_shape = (150,150,3) ))\n# # model.add(layers.MaxPooling2D((2, 2)))\n\n# # model.add(layers.Conv2D(64, (3, 3), activation = \"relu\"))\n# # model.add(layers.MaxPooling2D((2, 2)))\n\n# # model.add(layers.Conv2D(128, (3, 3), activation = \"relu\"))\n# # model.add(layers.MaxPooling2D((2, 2)))\n\n# # model.add(layers.Conv2D(128, (3, 3), activation = \"relu\"))\n# # model.add(layers.MaxPooling2D((2,2)))\n\n# # # Flattening Layer\n# # model.add(layers.Flatten())\n\n# # # ANN layers\n# # model.add(layers.Dense(512, activation = \"relu\"))\n# # model.add(layers.Dense(1, activation = \"sigmoid\"))","metadata":{"execution":{"iopub.status.busy":"2024-02-28T12:16:36.114071Z","iopub.status.idle":"2024-02-28T12:16:36.114714Z","shell.execute_reply.started":"2024-02-28T12:16:36.114386Z","shell.execute_reply":"2024-02-28T12:16:36.114411Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# model.summary()","metadata":{"execution":{"iopub.status.busy":"2024-02-28T12:16:36.116126Z","iopub.status.idle":"2024-02-28T12:16:36.116746Z","shell.execute_reply.started":"2024-02-28T12:16:36.116432Z","shell.execute_reply":"2024-02-28T12:16:36.116455Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])","metadata":{"execution":{"iopub.status.busy":"2024-02-28T12:16:36.118996Z","iopub.status.idle":"2024-02-28T12:16:36.119672Z","shell.execute_reply.started":"2024-02-28T12:16:36.119327Z","shell.execute_reply":"2024-02-28T12:16:36.119354Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# history = model.fit(\n#     train,\n#    epochs=10,\n#    validation_data=test,\n# )","metadata":{"execution":{"iopub.status.busy":"2024-02-28T12:16:36.123376Z","iopub.status.idle":"2024-02-28T12:16:36.124716Z","shell.execute_reply.started":"2024-02-28T12:16:36.12443Z","shell.execute_reply":"2024-02-28T12:16:36.12446Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}