import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.datasets import load_iris
from sklearn.metrics import confusion_matrix
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier

iris = load_iris()  # Load the iris dataset
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, random_state=42)
model = DecisionTreeClassifier(random_state=42)
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
cm = confusion_matrix(y_test, y_pred)   

# Create a DataFrame from the confusion matrix and plot using seaborn's heatmap function
classes = iris.target_names
df_cm = pd.DataFrame(cm, index=classes, columns=classes)
plt.figure(figsize=(4, 3))
heatmap = sns.heatmap(df_cm, annot=True, cmap="Blues")
plt.title('Confusion matrix')
plt.xlabel('Predicted label')
plt.ylabel('True label')
plt.show()