code: def make_confusion_matrix(y: list, yhat: list) -> None:
      """
      Calculates and plots a confusion matrix
      Parameters
      ----------
      y : list or array of actual interaction values such as ratings
      yhat: list or array of actual predicted interaction values
      Returns:
      -------
          A confusion matrix plot
      """
      cm = confusion_matrix(y, yhat, labels=[1, 0])
      cm = (
          np.round(
              cm.astype("float") / cm.sum(axis=1)[:, np.newaxis], 4
          )
          * 100
      )
  
      fmt = ".2f"
      _ = cm.max() / 2.0  # TODO: Unused argument
      descriptions = np.array(
          [
              ["True Positive", "False Negative"],
              ["False Positive", "True Negatives"],
          ]
      )
      colors = np.array([["green", "red"], ["red", "green"]])
      plt.imshow(
          [[0, 0], [0, 0]], interpolation="nearest", cmap=plt.cm.Greys
      )
      for i, j in product(range(cm.shape[0]), range(cm.shape[1])):
          plt.text(
              j,
              i,
              format(cm[i, j], fmt) + "%\n" + descriptions[i, j],
              horizontalalignment="center",
              color=colors[i, j],
          )
      plt.axhline(y=0.5, xmin=0, xmax=1, color="black", linewidth=0.75)
      plt.axvline(x=0.5, ymin=0, ymax=1, color="black", linewidth=0.75)
      plt.ylabel("True")
      plt.xlabel("Predicted")
      plt.title("Confusion Matrix")
      plt.xticks([0, 1], [1, 0], rotation=45)
      plt.yticks([0, 1], [1, 0])
      plt.show()
  
imports: import random
  from itertools import product
  from math import sqrt
  from typing import List
  import matplotlib.pyplot
  import numpy
  import pandas
  import scipy.sparse
  from sklearn.metrics import confusion_matrix, mean_squared_error
  from sklearn.metrics.pairwise import cosine_similarity
  import warnings
label_desc: Use image node_id 13 for calling a global function with example usage: make_confusion_matrix(y, yhat) without return types