--- license: mit language: - en metrics: - accuracy pipeline_tag: image-classification --- ## 📂 Project Structure ``` . ├── image_classifier.h5 # Trained model ├── main.py # Training & prediction script └── README.md # Project description ``` --- ## ⚙️ Technologies Used * Python 3.10+ * TensorFlow / Keras * NumPy * Matplotlib --- ## 📊 Dataset The dataset is from **Kaggle Multi-Cancer Dataset**: ``` /kaggle/input/multi-cancer/Multi Cancer/Multi Cancer/Breast Cancer ``` Images are split into **90% training** and **10% validation** using `ImageDataGenerator`. --- ## 🏗️ Model Architecture * **Conv2D (32 filters, 3x3, ReLU)** * **MaxPooling2D (2x2)** * **Conv2D (64 filters, 3x3, ReLU)** * **MaxPooling2D (2x2)** * **Conv2D (128 filters, 3x3, ReLU)** * **MaxPooling2D (2x2)** * **Flatten** * **Dense (512, ReLU)** * **Dense (Softmax output, # of classes)** Optimizer: **Adam** Loss: **Categorical Crossentropy** Metric: **Accuracy** --- ## 🚀 Training ```python model.fit(train_generator, validation_data=validation_generator, epochs=10) ``` After training, the model is saved as: ```python model.save("image_classifier.h5") ``` --- ## 🔮 Prediction Example ```python def guess(image_path, model, class_indices): img = load_img(image_path, target_size=(150, 150)) img_array = img_to_array(img) / 255.0 img_array = np.expand_dims(img_array, axis=0) prediction = model.predict(img_array) predicted_class = np.argmax(prediction) class_labels = {v: k for k, v in class_indices.items()} predicted_label = class_labels[predicted_class] plt.imshow(img) plt.title(f"Model guess: {predicted_label}") plt.axis("off") plt.show() ``` --- ## ✅ Results * Trains a CNN model for breast cancer image classification * Provides a simple **guess() function** to visualize predictions * Model is reusable via `image_classifier.h5`