diff --git a/README.md b/README.md index 883cbc9..71607c5 100644 --- a/README.md +++ b/README.md @@ -22,11 +22,10 @@ * [Библиотека для автокодировщиков](labworks/LW2/lab02_lib.py) -### Лабораторная работа №3 31.10.2023 *(материалы 2022 года)* +### Лабораторная работа №3 31.10.2023 -* [Задание](labworks/LW3/IS_Lab03_2022.pdf) -* [Методические указания](labworks/LW3/IS_Lab03_Metod_2022.pdf) -* [Функция для отображения матрицы ошибок](labworks/LW3/cf_matrix.py) +* [Задание](labworks/LW3/IS_Lab03_2023.pdf) +* [Методические указания](labworks/LW3/IS_Lab03_Metod_2023.pdf) ### Лабораторная работа №4 28.11.2023 *(материалы 2022 года)* diff --git a/labworks/LW3/IS_Lab03_2022.pdf b/labworks/LW3/IS_Lab03_2023.pdf similarity index 59% rename from labworks/LW3/IS_Lab03_2022.pdf rename to labworks/LW3/IS_Lab03_2023.pdf index 0d5b459..0fc0ae7 100644 Binary files a/labworks/LW3/IS_Lab03_2022.pdf and b/labworks/LW3/IS_Lab03_2023.pdf differ diff --git a/labworks/LW3/IS_Lab03_Metod_2022.pdf b/labworks/LW3/IS_Lab03_Metod_2022.pdf deleted file mode 100644 index 8fb5fcc..0000000 Binary files a/labworks/LW3/IS_Lab03_Metod_2022.pdf and /dev/null differ diff --git a/labworks/LW3/IS_Lab03_Metod_2023.pdf b/labworks/LW3/IS_Lab03_Metod_2023.pdf new file mode 100644 index 0000000..7efcd8d Binary files /dev/null and b/labworks/LW3/IS_Lab03_Metod_2023.pdf differ diff --git a/labworks/LW3/cf_matrix.py b/labworks/LW3/cf_matrix.py deleted file mode 100644 index b4b10da..0000000 --- a/labworks/LW3/cf_matrix.py +++ /dev/null @@ -1,119 +0,0 @@ -import numpy as np -import matplotlib.pyplot as plt -import seaborn as sns - -def make_confusion_matrix(cf, - group_names=None, - categories='auto', - count=True, - percent=True, - cbar=True, - xyticks=True, - xyplotlabels=True, - sum_stats=True, - figsize=None, - cmap='Blues', - title=None, - f_name=None,): - ''' - This function will make a pretty plot of an sklearn Confusion Matrix cm using a Seaborn heatmap visualization. - - Arguments - --------- - cf: confusion matrix to be passed in - - group_names: List of strings that represent the labels row by row to be shown in each square. - - categories: List of strings containing the categories to be displayed on the x,y axis. Default is 'auto' - - count: If True, show the raw number in the confusion matrix. Default is True. - - percent: If True, show the proportions for each category. Default is True. - - cbar: If True, show the color bar. The cbar values are based off the values in the confusion matrix. - Default is True. - - xyticks: If True, show x and y ticks. Default is True. - - xyplotlabels: If True, show 'True Label' and 'Predicted Label' on the figure. Default is True. - - sum_stats: If True, display summary statistics below the figure. Default is True. - - figsize: Tuple representing the figure size. Default will be the matplotlib rcParams value. - - cmap: Colormap of the values displayed from matplotlib.pyplot.cm. Default is 'Blues' - See http://matplotlib.org/examples/color/colormaps_reference.html - - title: Title for the heatmap. Default is None. - - f_name: Filename for saving picture. Default is None, which means no saving. - - ''' - - - # CODE TO GENERATE TEXT INSIDE EACH SQUARE - blanks = ['' for i in range(cf.size)] - - if group_names and len(group_names)==cf.size: - group_labels = ["{}\n".format(value) for value in group_names] - else: - group_labels = blanks - - if count: - group_counts = ["{0:0.0f}\n".format(value) for value in cf.flatten()] - else: - group_counts = blanks - - if percent: - group_percentages = ["{0:.2%}".format(value) for value in cf.flatten()/np.sum(cf)] - else: - group_percentages = blanks - - box_labels = [f"{v1}{v2}{v3}".strip() for v1, v2, v3 in zip(group_labels,group_counts,group_percentages)] - box_labels = np.asarray(box_labels).reshape(cf.shape[0],cf.shape[1]) - - - # CODE TO GENERATE SUMMARY STATISTICS & TEXT FOR SUMMARY STATS - if sum_stats: - #Accuracy is sum of diagonal divided by total observations - accuracy = np.trace(cf) / float(np.sum(cf)) - - #if it is a binary confusion matrix, show some more stats - if len(cf)==2: - #Metrics for Binary Confusion Matrices - precision = cf[1,1] / sum(cf[:,1]) - recall = cf[1,1] / sum(cf[1,:]) - f1_score = 2*precision*recall / (precision + recall) - stats_text = "\n\nAccuracy={:0.3f}\nPrecision={:0.3f}\nRecall={:0.3f}\nF1 Score={:0.3f}".format( - accuracy,precision,recall,f1_score) - else: - stats_text = "\n\nAccuracy={:0.3f}".format(accuracy) - else: - stats_text = "" - - - # SET FIGURE PARAMETERS ACCORDING TO OTHER ARGUMENTS - if figsize==None: - #Get default figure size if not set - figsize = plt.rcParams.get('figure.figsize') - - if xyticks==False: - #Do not show categories if xyticks is False - categories=False - - - # MAKE THE HEATMAP VISUALIZATION - plt.figure(figsize=figsize) - sns.heatmap(cf,annot=box_labels,fmt="",cmap=cmap,cbar=cbar,xticklabels=categories,yticklabels=categories,annot_kws={"size": 20}) - - if xyplotlabels: - plt.ylabel('True label') - plt.xlabel('Predicted label' + stats_text) - else: - plt.xlabel(stats_text) - - if title: - plt.title(title) - - if f_name: - plt.savefig(fname = f_name, dpi=None, facecolor='w', edgecolor='w', orientation='portrait', pad_inches=0.1) \ No newline at end of file