Ask me anything
Ithy Logo
Sign in to save

Decision Tree Classification for Breast Cancer

Detailed Code Walkthrough and Evaluation Steps for the Model

breast cancer diagnostic report

Highlights

  • Step-by-Step Process: From data loading to model evaluation and visualization.
  • Comprehensive Code Examples: Includes preprocessing, training, prediction, and metrics.
  • Clear Evaluation Methods: Uses confusion matrix, classification report, and accuracy metrics.

Introduction

In this guide, we explain how to build a decision tree classifier for the breast cancer dataset using Python. The model aims to classify tumors as malignant or benign. Following the overview, you will get a detailed step-by-step code walkthrough along with explanations for preprocessing the dataset, training the decision tree, making predictions, and evaluating its performance.


Step 1: Importing Necessary Libraries

The first step in our process is to import the libraries used for data manipulation, model creation, and evaluation. Here, we utilize pandas, numpy, scikit-learn modules such as DecisionTreeClassifier, and visualization libraries like matplotlib.


# Import essential libraries
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
import matplotlib.pyplot as plt
from sklearn import tree
  

Step 2: Loading the Dataset

We assume the breast cancer dataset (for instance, the Wisconsin Breast Cancer Dataset) is stored as a CSV file. In this example, we also define column names where needed. For diagnosis, we map the categorical values to binary numerical representations (e.g., malignant [M] to 1 and benign [B] to 0).


# Load the dataset from CSV file
df = pd.read_csv('breast-cancer-wisconsin-diagnostic.csv', header=None)

# Define column names based on dataset's structure
df.columns = ['radius_mean', 'texture_mean', 'perimeter_mean', 'area_mean', 'smoothness_mean', 
              'compactness_mean', 'concavity_mean', 'concave_points_mean', 'symmetry_mean', 
              'fractal_dimension_mean', 'radius_se', 'texture_se', 'perimeter_se', 'area_se', 
              'smoothness_se', 'compactness_se', 'concavity_se', 'concave_points_se', 'symmetry_se', 
              'fractal_dimension_se', 'radius_worst', 'texture_worst', 'perimeter_worst', 'area_worst', 
              'smoothness_worst', 'compactness_worst', 'concavity_worst', 'concave_points_worst', 
              'symmetry_worst', 'fractal_dimension_worst', 'diagnosis']

# Map the diagnosis column: Malignant (M) becomes 1, and Benign (B) becomes 0.
df['diagnosis'] = df['diagnosis'].map({'M': 1, 'B': 0})
  

Step 3: Data Preprocessing

Data preprocessing is crucial to ensure that the model receives clean and correctly formatted data. In this step, any missing values are handled, and features are separated from the target variable.

Preprocessing Steps

  • Clean the Data: Remove any rows with missing values.
  • Define Features and Target: Separate input features (X) from the output (y).
  • Encoding: Convert any categorical variables if necessary.

# Drop rows with missing values (if any)
df.dropna(inplace=True)

# Define features (all columns except 'diagnosis') and target variable ('diagnosis')
X = df.drop('diagnosis', axis=1)
y = df['diagnosis']
  

Step 4: Splitting the Data

Next, the dataset is divided into a training set and a testing set. Typically, the training set is used to train the model, while the testing set helps evaluate its performance. In this code, 80% of the data is used for training, and 20% for testing.


# Split the dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
  

Step 5: Creating and Training the Decision Tree Model

We now create an instance of the DecisionTreeClassifier. Adjust the random_state parameter to ensure reproducibility. After creating the model instance, we train it on the training data.


# Create a Decision Tree Classifier object
clf = DecisionTreeClassifier(random_state=42)

# Train the classifier on the training data
clf.fit(X_train, y_train)
  

Step 6: Making Predictions

With the classifier trained, use the model to predict the result on the test set. The predicted values will later be compared to the known diagnoses to evaluate the model's effectiveness.


# Make predictions on the testing set
y_pred = clf.predict(X_test)
  

Step 7: Model Evaluation

Evaluating the model performance is key to understanding its strengths and limitations. Here, we compute the accuracy score, generate a classification report including precision, recall, and F1-score, and also display the confusion matrix.

Evaluation Metrics

  • Accuracy: The ratio of correct predictions on the total predictions.
  • Precision, Recall, F1-Score: Detailed evaluation of model performance.
  • Confusion Matrix: Provides visual insight into the classification performance.

# Evaluate the classifier with Accuracy
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy: {:.3f}".format(accuracy))

# Display the Classification Report for precision, recall, F1-score
print("Classification Report:")
print(classification_report(y_test, y_pred))

# Display the Confusion Matrix
print("Confusion Matrix:")
print(confusion_matrix(y_test, y_pred))
  

Step 8: Visualizing the Decision Tree

Visualizing the decision tree aids in understanding how the model makes decisions. We can plot the tree using matplotlib and sklearn.tree.plot_tree, where each node represents a decision point based on the input features.


# Visualize and plot the Decision Tree
plt.figure(figsize=(12, 8))
tree.plot_tree(clf, filled=True, feature_names=X.columns, class_names=['Benign', 'Malignant'])
plt.title("Decision Tree Visualization")
plt.show()
  

Organizing Data Insights

The table below summarizes the key steps and their corresponding actions:

Step Description
Data Import Load the CSV file and define column names.
Preprocessing Clean data by removing missing values and encoding categorical variables.
Data Splitting Separate features and target; split into training and testing sets.
Training Create DecisionTreeClassifier and train on the training dataset.
Prediction Use the model to predict tumor diagnosis on the test set.
Evaluation Compute accuracy, confusion matrix, and classification report.
Visualization Plot the decision tree to visualize its structure and decisions.

References

Recommended Searches


Last updated March 19, 2025

AI-assisted research. Sources, methodology and corrections · Source-checked guides and tools · Explore published answers

Ask Ithy AI