# conf-mat
[![PyPI version](https://badge.fury.io/py/conf-mat.svg)](https://badge.fury.io/py/conf-mat)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
This library was created to address the confusion in confusion matrices and classification reports generated by libraries like scikit-learn. It displays confusion matrices and their heatmaps in a more aesthetically pleasing, intuitive way. It also presents classification reports and accuracy rates in a manner that clarifies the calculation method and how those results were obtained, which can help alleviate confusion for beginners in machine learning
## Installation
You can install `conf-mat` via pip:
```bash
pip install conf-mat
```
## Usage
### For Binary Classification
```python
from numpy.random import randint
from matplotlib.pyplot import show
from conf_mat import print_conf_mat, plot_conf_mat, conf_mat_to_html
y_true = randint(0, 2, 1000)
y_pred = randint(0, 2, 1000)
# Show The Confusion Matrix On The Console (Classes Names Are Not Mandatory)
print_conf_mat(y_true, y_pred, classes_names=[False, True])
# Show The Confusion Matrix As A Heat Map (Classes Names Are Not Mandatory)
plot_conf_mat(y_true, y_pred, classes_names=[False, True])
show() # If You Are Using VSCode And You Are Executing The Code Direcctely
# Show The Confusion Matrix As It Appears On The Console And As A Heat Map On The HTML Page (Classes Names Are Not Mandatory)
conf_mat_to_html(y_true, y_pred, classes_names=[False, True])
```
### Output
```bash
Confusion Matrix :
________________
╒═════════════════════╤═══════════════════════════╤═══════════════════════════╕
│ Classes │ Predicted Positive (PP) │ Predicted Negative (PN) │
╞═════════════════════╪═══════════════════════════╪═══════════════════════════╡
│ Actual Positive (P) │ True Positive (TP) : 264 │ False Negative (FN) : 237 │
│ │ │ Type II Error (Missed) │
├─────────────────────┼───────────────────────────┼───────────────────────────┤
│ Actual Negative (N) │ False Positive (FP) : 229 │ True Negative (TN) : 270 │
│ │ Type I Error (Wrong) │ │
╘═════════════════════╧═══════════════════════════╧═══════════════════════════╛
╒══════════╤══════════════════════════════════════════════════════╕
│ │ Rate (Score) │
╞══════════╪══════════════════════════════════════════════════════╡
│ Accuracy │ Correct TP + TN │
│ │ _______ : _________________ OR 1 - Error = 0.53 │
│ │ │
│ │ Total TP + FP + FN + TN │
├──────────┼──────────────────────────────────────────────────────┤
│ Error │ Wrong FP + FN │
│ │ _____ : _________________ OR 1 - Accuracy = 0.47 │
│ │ │
│ │ Total TP + FP + FN + TN │
╘══════════╧══════════════════════════════════════════════════════╛
Classification Report :
_____________________
╒══════════════════╤═════════════════╤════════════════════╤═════════════════════╤════════════════╕
│ │ Precision (P) │ Recall (R) │ F1-Score (F) │ Support (S) │
╞══════════════════╪═════════════════╪════════════════════╪═════════════════════╪════════════════╡
│ Positive (True) │ P1 (PPV): │ R1 (Sensitivity): │ F1 : │ S1 : │
│ │ │ │ │ │
│ │ TP │ TP │ 2 x P1 x R1 │ │
│ │ _______ = 0.54 │ _______ = 0.53 │ ___________ = 0.53 │ TP + FN = 501 │
│ │ │ │ │ │
│ │ TP + FP │ TP + FN │ P1 + R1 │ │
├──────────────────┼─────────────────┼────────────────────┼─────────────────────┼────────────────┤
│ Negative (False) │ P0 (NPV): │ R0 (Specificity): │ F0 : │ S0 : │
│ │ │ │ │ │
│ │ TN │ TN │ 2 x P0 x R0 │ │
│ │ _______ = 0.53 │ _______ = 0.54 │ ___________ = 0.54 │ FP + TN = 499 │
│ │ │ │ │ │
│ │ TN + FN │ TN + FP │ P0 + R0 │ │
├──────────────────┼─────────────────┼────────────────────┼─────────────────────┼────────────────┤
│ Macro Avg │ P1 + P0 │ R1 + R0 │ F1 + F0 │ TS = 1000 │
│ │ _______ = 0.53 │ _______ = 0.53 │ _______ = 0.53 │ │
│ │ │ │ │ │
│ │ 2 │ 2 │ 2 │ │
├──────────────────┼─────────────────┼────────────────────┼─────────────────────┼────────────────┤
│ Weighted Avg │ W1 │ W2 │ W3 │ TS = 1000 │
│ │ __ = 0.53 │ __ = 0.53 │ __ = 0.53 │ │
│ │ │ │ │ │
│ │ TS │ TS │ TS │ │
╘══════════════════╧═════════════════╧════════════════════╧═════════════════════╧════════════════╛
PPV : Positive Predictive Value
NPV : Negative Predictive Value
W1 = (P1 x S1) + (P0 x S0)
W2 = (R1 x S1) + (R0 x S0)
W3 = (F1 x S1) + (F0 x S0)
TS : Total Support = S1 + S0
Note : All Real Numbers Are Rounded With Two Digits After The Comma
HTML File Generated Successfully :)
```
#### You Can Plot, Generate HTML Page For Confusion Matrix And Classification Report Directly From One Calculation
```python
from numpy.random import randint
from matplotlib.pyplot import show
from conf_mat import print_conf_mat, plot_conf_mat, conf_mat_to_html
y_true = randint(0, 2, 1000)
y_pred = randint(0, 2, 1000)
# Show The Confusion Matrix On The Console (Classes Names Are Not Mandatory)
cm = print_conf_mat(y_true, y_pred, classes_names=[False, True])
# Show The Confusion Matrix As A Heat Map (Classes Names Are Not Mandatory)
plot_conf_mat(conf_mat=cm, classes_names=[False, True])
show() # If You Are Using VSCode And You Are Executing The Code Direcctely
# Show The Confusion Matrix As It Appears On The Console And As A Heat Map On The HTML Page (Classes Names Are Not Mandatory)
conf_mat_to_html(conf_mat=cm, classes_names=[False, True])
```
#### You Can Hide Detail Information For Confusion Matrix, Classification Report And Confusion Matrix Heatmap
```python
from numpy.random import randint
from matplotlib.pyplot import show
from conf_mat import print_conf_mat, plot_conf_mat, conf_mat_to_html
y_true = randint(0, 2, 1000)
y_pred = randint(0, 2, 1000)
# Show The Confusion Matrix On The Console (Classes Names Are Not Mandatory)
cm = print_conf_mat(y_true, y_pred, classes_names=[False, True], detail=False)
# Show The Confusion Matrix As A Heat Map (Classes Names Are Not Mandatory)
plot_conf_mat(conf_mat=cm, classes_names=[False, True], detail=False)
show() # If You Are Using VSCode And You Are Executing The Code Direcctely
# Show The Confusion Matrix As It Appears On The Console And As A Heat Map On The HTML Page (Classes Names Are Not Mandatory)
conf_mat_to_html(conf_mat=cm, classes_names=[False, True], detail=False)
```
### Output
```bash
Confusion Matrix :
________________
╒═════════════════════╤═══════════════════════════╤═══════════════════════════╕
│ Classes │ Predicted Positive (PP) │ Predicted Negative (PN) │
╞═════════════════════╪═══════════════════════════╪═══════════════════════════╡
│ Actual Positive (P) │ 239 │ 249 │
├─────────────────────┼───────────────────────────┼───────────────────────────┤
│ Actual Negative (N) │ 243 │ 269 │
╘═════════════════════╧═══════════════════════════╧═══════════════════════════╛
╒══════════╤════════════════╕
│ │ Rate (Score) │
╞══════════╪════════════════╡
│ Accuracy │ 0.51 │
├──────────┼────────────────┤
│ Error │ 0.49 │
╘══════════╧════════════════╛
Classification Report :
_____________________
╒══════════════════╤═════════════════╤══════════════╤════════════════╤═══════════════╕
│ │ Precision (P) │ Recall (R) │ F1-Score (F) │ Support (S) │
╞══════════════════╪═════════════════╪══════════════╪════════════════╪═══════════════╡
│ Positive (True) │ 0.5 │ 0.49 │ 0.49 │ 488 │
├──────────────────┼─────────────────┼──────────────┼────────────────┼───────────────┤
│ Negative (False) │ 0.52 │ 0.53 │ 0.52 │ 512 │
├──────────────────┼─────────────────┼──────────────┼────────────────┼───────────────┤
│ Macro Avg │ 0.51 │ 0.51 │ 0.51 │ 1000 │
├──────────────────┼─────────────────┼──────────────┼────────────────┼───────────────┤
│ Weighted Avg │ 0.51 │ 0.51 │ 0.51 │ 1000 │
╘══════════════════╧═════════════════╧══════════════╧════════════════╧═══════════════╛
HTML File Generated Successfully :)
```
#### You Can Plot And Generate HTML Page For Confusion Matrix Directly From One Calculation And Without Print Confusion Matrix And Classification Report
```python
from numpy.random import randint
from matplotlib.pyplot import show
from conf_mat import calc_conf_mat, plot_conf_mat, conf_mat_to_html
y_true = randint(0, 2, 1000)
y_pred = randint(0, 2, 1000)
# Show The Confusion Matrix On The Console (Classes Names Are Not Mandatory)
cm = calc_conf_mat(y_true, y_pred)
print(cm)
# Show The Confusion Matrix As A Heat Map (Classes Names Are Not Mandatory)
plot_conf_mat(conf_mat=cm, classes_names=[False, True], detail=False)
show() # If You Are Using VSCode And You Are Executing The Code Direcctely
# Show The Confusion Matrix As It Appears On The Console And As A Heat Map On The HTML Page (Classes Names Are Not Mandatory)
conf_mat_to_html(conf_mat=cm, classes_names=[False, True], detail=False)
```
### Output
```bash
[[227, 260], [254, 259]]
HTML File Generated Succesfuly :)
```
### For Multi Classification
```python
from numpy.random import randint
from matplotlib.pyplot import show
from conf_mat import print_conf_mat, plot_conf_mat, conf_mat_to_html
y_true = randint(0, 10, 1000)
y_pred = randint(0, 10, 1000)
# Show The Confusion Matrix On The Console (Classes Names Are Not Mandatory)
print_conf_mat(y_true, y_pred, classes_names=[
'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9', 'C10'])
# Show The Confusion Matrix As A Heat Map (Classes Names Are Not Mandatory)
plot_conf_mat(y_true, y_pred, classes_names=[
'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9', 'C10'])
show() # If You Are Using VSCode And You Are Executing The Code Direcctely
# Show The Confusion Matrix As It Appears On The Console And As A Heat Map On The HTML Page (Classes Names Are Not Mandatory)
conf_mat_to_html(y_true, y_pred, classes_names=[
'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9', 'C10'])
```
### Output
```bash
Confusion Matrix :
________________
╒═══════════╤══════╤══════╤══════╤══════╤══════╤══════╤══════╤══════╤══════╤═══════╕
│ Classes │ C1 │ C2 │ C3 │ C4 │ C5 │ C6 │ C7 │ C8 │ C9 │ C10 │
╞═══════════╪══════╪══════╪══════╪══════╪══════╪══════╪══════╪══════╪══════╪═══════╡
│ C1 │ 12 │ 15 │ 9 │ 8 │ 11 │ 15 │ 12 │ 10 │ 14 │ 6 │
├───────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼───────┤
│ C2 │ 12 │ 14 │ 7 │ 12 │ 11 │ 14 │ 11 │ 13 │ 6 │ 4 │
├───────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼───────┤
│ C3 │ 13 │ 8 │ 7 │ 6 │ 12 │ 6 │ 7 │ 8 │ 9 │ 8 │
├───────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼───────┤
│ C4 │ 10 │ 13 │ 12 │ 11 │ 5 │ 17 │ 8 │ 15 │ 10 │ 19 │
├───────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼───────┤
│ C5 │ 10 │ 10 │ 8 │ 11 │ 7 │ 7 │ 11 │ 7 │ 14 │ 14 │
├───────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼───────┤
│ C6 │ 7 │ 11 │ 10 │ 7 │ 8 │ 13 │ 6 │ 9 │ 7 │ 8 │
├───────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼───────┤
│ C7 │ 10 │ 8 │ 12 │ 10 │ 9 │ 15 │ 7 │ 13 │ 10 │ 12 │
├───────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼───────┤
│ C8 │ 8 │ 11 │ 12 │ 7 │ 11 │ 11 │ 8 │ 12 │ 13 │ 11 │
├───────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼───────┤
│ C9 │ 8 │ 6 │ 12 │ 10 │ 11 │ 5 │ 6 │ 8 │ 12 │ 2 │
├───────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼───────┤
│ C10 │ 8 │ 15 │ 7 │ 7 │ 8 │ 13 │ 13 │ 12 │ 17 │ 5 │
╘═══════════╧══════╧══════╧══════╧══════╧══════╧══════╧══════╧══════╧══════╧═══════╛
Yellow : Not None Correct Values / True Positive (TP) OR True Negative (TN)
Red : Not None Wrong Values / False Positive (FP) OR False Negative (FN)
Green : None Correct Values
Blue : None Wrong Values
╒══════════╤════════════════════════════════════════════════════════════════╕
│ │ Rate (Score) │
╞══════════╪════════════════════════════════════════════════════════════════╡
│ Accuracy │ Correct Sum Of Yellow Values │
│ │ _______ : ____________________________ OR 1 - Error = 0.1 │
│ │ │
│ │ Total Sum Of Yellow And Red Values │
├──────────┼────────────────────────────────────────────────────────────────┤
│ Error │ Wrong Sum Of Red Values │
│ │ _____ : ____________________________ OR 1 - Accuracy = 0.9 │
│ │ │
│ │ Total Sum Of Yellow And Red Values │
╘══════════╧════════════════════════════════════════════════════════════════╛
Classification Report :
_____________________
╒══════════════╤═════════════════╤══════════════╤════════════════╤═══════════════╕
│ │ Precision (P) │ Recall (R) │ F1-Score (F) │ Support (S) │
╞══════════════╪═════════════════╪══════════════╪════════════════╪═══════════════╡
│ C1 │ 0.12 │ 0.11 │ 0.11 │ 112 │
├──────────────┼─────────────────┼──────────────┼────────────────┼───────────────┤
│ C2 │ 0.13 │ 0.13 │ 0.13 │ 104 │
├──────────────┼─────────────────┼──────────────┼────────────────┼───────────────┤
│ C3 │ 0.07 │ 0.08 │ 0.08 │ 84 │
├──────────────┼─────────────────┼──────────────┼────────────────┼───────────────┤
│ C4 │ 0.12 │ 0.09 │ 0.11 │ 120 │
├──────────────┼─────────────────┼──────────────┼────────────────┼───────────────┤
│ C5 │ 0.08 │ 0.07 │ 0.07 │ 99 │
├──────────────┼─────────────────┼──────────────┼────────────────┼───────────────┤
│ C6 │ 0.11 │ 0.15 │ 0.13 │ 86 │
├──────────────┼─────────────────┼──────────────┼────────────────┼───────────────┤
│ C7 │ 0.08 │ 0.07 │ 0.07 │ 106 │
├──────────────┼─────────────────┼──────────────┼────────────────┼───────────────┤
│ C8 │ 0.11 │ 0.12 │ 0.11 │ 104 │
├──────────────┼─────────────────┼──────────────┼────────────────┼───────────────┤
│ C9 │ 0.11 │ 0.15 │ 0.12 │ 80 │
├──────────────┼─────────────────┼──────────────┼────────────────┼───────────────┤
│ C10 │ 0.06 │ 0.05 │ 0.05 │ 105 │
├──────────────┼─────────────────┼──────────────┼────────────────┼───────────────┤
│ Macro Avg │ 0.1 │ 0.1 │ 0.1 │ 1000 │
├──────────────┼─────────────────┼──────────────┼────────────────┼───────────────┤
│ Weighted Avg │ 0.1 │ 0.1 │ 0.1 │ 1000 │
╘══════════════╧═════════════════╧══════════════╧════════════════╧═══════════════╛
Precision : Yellow Value / Sum Of Yellow Value Column
Recall : Yellow Value / Sum Of Yellow Value Row
F1-Score : (2 x Precision x Recall) / (Precision + Recall)
Support : Sum Of Each Row
Macro Avg :
Precision : (Sum Of Precision Column) / Classes Count
Recall : (Sum Of Recall Column) / Classes Count
F1-Score : (Sum Of F1-Score Column) / Classes Count
Support : Total (Sum Of All Matrix)
Weighted Avg :
Precision : (Sum Of (Precision x support)) / Total (Sum Of All Matrix)
Recall : (Sum Of (Recall x Support)) / Total (Sum Of All Matrix)
F1-Score : (Sum Of (F1-Score x Support)) / Total (Sum Of All Matrix)
Support : Total (Sum Of All Matrix)
Note : All Real Numbers Are Rounded With Two Digits After The Comma
HTML File Generated Successfully :)
```
#### You Can Plot, Generate HTML Page For Confusion Matrix And Classification Report Directly From One Calculation
```python
from numpy.random import randint
from matplotlib.pyplot import show
from conf_mat import print_conf_mat, plot_conf_mat, conf_mat_to_html
y_true = randint(0, 10, 1000)
y_pred = randint(0, 10, 1000)
# Show The Confusion Matrix On The Console (Classes Names Are Not Mandatory)
cm = print_conf_mat(y_true, y_pred, classes_names=[
'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9', 'C10'])
# Show The Confusion Matrix As A Heat Map (Classes Names Are Not Mandatory)
plot_conf_mat(conf_mat=cm, classes_names=[
'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9', 'C10'])
show() # If You Are Using VSCode And You Are Executing The Code Direcctely
# Show The Confusion Matrix As It Appears On The Console And As A Heat Map On The HTML Page (Classes Names Are Not Mandatory)
conf_mat_to_html(conf_mat=cm, classes_names=[
'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9', 'C10'])
```
#### You Can Hide Detail Information For Confusion Matrix, Classification Report And Confusion Matrix Heatmap
```python
from numpy.random import randint
from matplotlib.pyplot import show
from conf_mat import print_conf_mat, plot_conf_mat, conf_mat_to_html
y_true = randint(0, 10, 1000)
y_pred = randint(0, 10, 1000)
# Show The Confusion Matrix On The Console (Classes Names Are Not Mandatory)
cm = print_conf_mat(y_true, y_pred, detail=False)
# Show The Confusion Matrix As A Heat Map (Classes Names Are Not Mandatory)
plot_conf_mat(conf_mat=cm, classes_names=[
'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9', 'C10'], detail=False)
show() # If You Are Using VSCode And You Are Executing The Code Direcctely
# Show The Confusion Matrix As It Appears On The Console And As A Heat Map On The HTML Page (Classes Names Are Not Mandatory)
conf_mat_to_html(conf_mat=cm, classes_names=[
'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9', 'C10'], detail=False)
```
### Output
```bash
Confusion Matrix :
________________
╒═══════════╤═════╤═════╤═════╤═════╤═════╤═════╤═════╤═════╤═════╤═════╕
│ Classes │ 0 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │
╞═══════════╪═════╪═════╪═════╪═════╪═════╪═════╪═════╪═════╪═════╪═════╡
│ 0 │ 13 │ 10 │ 13 │ 11 │ 11 │ 10 │ 11 │ 11 │ 10 │ 8 │
├───────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ 1 │ 13 │ 13 │ 6 │ 7 │ 13 │ 11 │ 10 │ 8 │ 4 │ 7 │
├───────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ 2 │ 9 │ 8 │ 10 │ 6 │ 9 │ 11 │ 10 │ 13 │ 10 │ 12 │
├───────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ 3 │ 9 │ 11 │ 13 │ 17 │ 9 │ 8 │ 9 │ 6 │ 10 │ 4 │
├───────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ 4 │ 12 │ 9 │ 12 │ 11 │ 4 │ 12 │ 13 │ 10 │ 9 │ 10 │
├───────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ 5 │ 11 │ 13 │ 3 │ 11 │ 13 │ 3 │ 12 │ 12 │ 10 │ 6 │
├───────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ 6 │ 11 │ 8 │ 8 │ 15 │ 12 │ 8 │ 11 │ 10 │ 7 │ 9 │
├───────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ 7 │ 11 │ 9 │ 5 │ 13 │ 10 │ 7 │ 9 │ 16 │ 9 │ 19 │
├───────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ 8 │ 10 │ 13 │ 6 │ 15 │ 5 │ 4 │ 10 │ 9 │ 8 │ 7 │
├───────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ 9 │ 14 │ 13 │ 18 │ 11 │ 8 │ 12 │ 11 │ 12 │ 7 │ 10 │
╘═══════════╧═════╧═════╧═════╧═════╧═════╧═════╧═════╧═════╧═════╧═════╛
╒══════════╤════════════════╕
│ │ Rate (Score) │
╞══════════╪════════════════╡
│ Accuracy │ 0.1 │
├──────────┼────────────────┤
│ Error │ 0.9 │
╘══════════╧════════════════╛
Classification Report :
_____________________
╒══════════════╤═════════════════╤══════════════╤════════════════╤═══════════════╕
│ │ Precision (P) │ Recall (R) │ F1-Score (F) │ Support (S) │
╞══════════════╪═════════════════╪══════════════╪════════════════╪═══════════════╡
│ 0 │ 0.12 │ 0.12 │ 0.12 │ 108 │
├──────────────┼─────────────────┼──────────────┼────────────────┼───────────────┤
│ 1 │ 0.12 │ 0.14 │ 0.13 │ 92 │
├──────────────┼─────────────────┼──────────────┼────────────────┼───────────────┤
│ 2 │ 0.11 │ 0.1 │ 0.1 │ 98 │
├──────────────┼─────────────────┼──────────────┼────────────────┼───────────────┤
│ 3 │ 0.15 │ 0.18 │ 0.16 │ 96 │
├──────────────┼─────────────────┼──────────────┼────────────────┼───────────────┤
│ 4 │ 0.04 │ 0.04 │ 0.04 │ 102 │
├──────────────┼─────────────────┼──────────────┼────────────────┼───────────────┤
│ 5 │ 0.03 │ 0.03 │ 0.03 │ 94 │
├──────────────┼─────────────────┼──────────────┼────────────────┼───────────────┤
│ 6 │ 0.1 │ 0.11 │ 0.11 │ 99 │
├──────────────┼─────────────────┼──────────────┼────────────────┼───────────────┤
│ 7 │ 0.15 │ 0.15 │ 0.15 │ 108 │
├──────────────┼─────────────────┼──────────────┼────────────────┼───────────────┤
│ 8 │ 0.1 │ 0.09 │ 0.09 │ 87 │
├──────────────┼─────────────────┼──────────────┼────────────────┼───────────────┤
│ 9 │ 0.11 │ 0.09 │ 0.1 │ 116 │
├──────────────┼─────────────────┼──────────────┼────────────────┼───────────────┤
│ Macro Avg │ 0.1 │ 0.1 │ 0.1 │ 1000 │
├──────────────┼─────────────────┼──────────────┼────────────────┼───────────────┤
│ Weighted Avg │ 0.1 │ 0.1 │ 0.1 │ 1000 │
╘══════════════╧═════════════════╧══════════════╧════════════════╧═══════════════╛
HTML File Generated Successfully :)
```
#### You Can Plot And Generate HTML Page For Confusion Matrix Directly From One Calculation And Without Print Confusion Matrix And Classification Report
```python
from numpy.random import randint
from matplotlib.pyplot import show
from conf_mat import calc_conf_mat, plot_conf_mat, conf_mat_to_html
y_true = randint(0, 10, 1000)
y_pred = randint(0, 10, 1000)
# Show The Confusion Matrix On The Console (Classes Names Are Not Mandatory)
cm = calc_conf_mat(y_true, y_pred)
print(cm)
# Show The Confusion Matrix As A Heat Map (Classes Names Are Not Mandatory)
plot_conf_mat(conf_mat=cm, classes_names=[
'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9', 'C10'], detail=False)
show() # If You Are Using VSCode And You Are Executing The Code Direcctely
# Show The Confusion Matrix As It Appears On The Console And As A Heat Map On The HTML Page (Classes Names Are Not Mandatory)
conf_mat_to_html(conf_mat=cm, classes_names=[
'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9', 'C10'], detail=False)
```
### Output
```bash
[[7, 9, 15, 9, 8, 13, 11, 11, 6, 8], [7, 4, 16, 12, 12, 18, 12, 15, 13, 11], [6, 10, 8, 14, 8, 9, 8, 12, 10, 5], [4, 8, 8, 11, 13, 9, 8, 13, 12, 12], [8, 10, 10, 5, 11, 12, 14, 14, 12, 12], [4, 10, 10, 9, 8, 6, 12, 15, 9, 12], [7, 8, 4, 10, 9, 11, 19, 13, 7, 10], [10, 10, 14, 10, 11, 15, 9, 10, 10, 6], [14, 10, 11, 10, 8, 11, 8, 14, 8, 12], [11, 12, 8, 9, 4, 12, 5, 9, 5, 8]]
HTML File Generated Successfully :)
```
### Note
These outputs are specific to the first function only (conf_mat), in both cases. I'll leave it to you to discover the other two functions (conf_mat_disp, conf_mat_to_html) on your own.
## License
This project is licensed under the MIT License - see the LICENSE file for details.
Raw data
{
"_id": null,
"home_page": "",
"name": "conf-mat",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "confusion matrix,confusion matrix display,plot confusion matrix,khiat,khiat mohamed,performance metrics,khiat mohammed,khiat abderrezzak,confusion matrix visualization,khiat mohamed abderrezzak,khiat mohammed abderrezzak,classification report,khiat abderrezzak mohamed,khiat abderrezzak mohammed,heatmap,mohamed,mohammed,machine learning,mohamed khiat,mohammed khiat,deep learning,mohamed abderrezzak,mohammed abderrezzak,data visualization,mohamed abderrezzak khiat,mohammed abderrezzak khiat,data analysis,mohamed khiat abderrezzak,mohammed khiat abderrezzak,beginner-friendly,abderrezzak,abderrezzak khiat,aesthetically pleasing,abderrezzak mohamed,abderrezzak mohammed,accuracy score calculation,abderrezzak khiat mohamed,abderrezzak khiat mohammed,model score calculation,abderrezzak mohamed khiat,abderrezzak mohammed khiat,confusion matrix calculation,confusion matrix html display",
"author": "khiat Mohammed Abderrezzak",
"author_email": "khiat.abderrezzak@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/9f/3c/88ddb4ec7e24041652c61cc10c6fad1192094d4134fc9ee9d82fda9d1e54/conf-mat-1.0.2.tar.gz",
"platform": null,
"description": "# conf-mat\n\n\n[![PyPI version](https://badge.fury.io/py/conf-mat.svg)](https://badge.fury.io/py/conf-mat)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n\nThis library was created to address the confusion in confusion matrices and classification reports generated by libraries like scikit-learn. It displays confusion matrices and their heatmaps in a more aesthetically pleasing, intuitive way. It also presents classification reports and accuracy rates in a manner that clarifies the calculation method and how those results were obtained, which can help alleviate confusion for beginners in machine learning\n\n\n## Installation\n\n\nYou can install `conf-mat` via pip:\n\n\n```bash\npip install conf-mat\n```\n\n\n## Usage \n\n\n### For Binary Classification\n\n\n```python\nfrom numpy.random import randint\nfrom matplotlib.pyplot import show\nfrom conf_mat import print_conf_mat, plot_conf_mat, conf_mat_to_html\n\n\ny_true = randint(0, 2, 1000)\ny_pred = randint(0, 2, 1000)\n\n\n# Show The Confusion Matrix On The Console (Classes Names Are Not Mandatory)\nprint_conf_mat(y_true, y_pred, classes_names=[False, True])\n\n\n# Show The Confusion Matrix As A Heat Map (Classes Names Are Not Mandatory)\nplot_conf_mat(y_true, y_pred, classes_names=[False, True])\nshow() # If You Are Using VSCode And You Are Executing The Code Direcctely\n\n\n# Show The Confusion Matrix As It Appears On The Console And As A Heat Map On The HTML Page (Classes Names Are Not Mandatory)\nconf_mat_to_html(y_true, y_pred, classes_names=[False, True])\n```\n\n\n### Output\n\n\n```bash\nConfusion Matrix : \n________________\n\n\u2552\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2555\n\u2502 Classes \u2502 Predicted Positive (PP) \u2502 Predicted Negative (PN) \u2502\n\u255e\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2561\n\u2502 Actual Positive (P) \u2502 True Positive (TP) : 264 \u2502 False Negative (FN) : 237 \u2502\n\u2502 \u2502 \u2502 Type II Error (Missed) \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 Actual Negative (N) \u2502 False Positive (FP) : 229 \u2502 True Negative (TN) : 270 \u2502\n\u2502 \u2502 Type I Error (Wrong) \u2502 \u2502\n\u2558\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255b\n\n\u2552\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2555\n\u2502 \u2502 Rate (Score) \u2502\n\u255e\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2561\n\u2502 Accuracy \u2502 Correct TP + TN \u2502\n\u2502 \u2502 _______ : _________________ OR 1 - Error = 0.53 \u2502\n\u2502 \u2502 \u2502\n\u2502 \u2502 Total TP + FP + FN + TN \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 Error \u2502 Wrong FP + FN \u2502\n\u2502 \u2502 _____ : _________________ OR 1 - Accuracy = 0.47 \u2502\n\u2502 \u2502 \u2502\n\u2502 \u2502 Total TP + FP + FN + TN \u2502\n\u2558\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255b\n\n\nClassification Report : \n_____________________\n\n\u2552\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2555\n\u2502 \u2502 Precision (P) \u2502 Recall (R) \u2502 F1-Score (F) \u2502 Support (S) \u2502\n\u255e\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2561\n\u2502 Positive (True) \u2502 P1 (PPV): \u2502 R1 (Sensitivity): \u2502 F1 : \u2502 S1 : \u2502\n\u2502 \u2502 \u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 TP \u2502 TP \u2502 2 x P1 x R1 \u2502 \u2502\n\u2502 \u2502 _______ = 0.54 \u2502 _______ = 0.53 \u2502 ___________ = 0.53 \u2502 TP + FN = 501 \u2502\n\u2502 \u2502 \u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 TP + FP \u2502 TP + FN \u2502 P1 + R1 \u2502 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 Negative (False) \u2502 P0 (NPV): \u2502 R0 (Specificity): \u2502 F0 : \u2502 S0 : \u2502\n\u2502 \u2502 \u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 TN \u2502 TN \u2502 2 x P0 x R0 \u2502 \u2502\n\u2502 \u2502 _______ = 0.53 \u2502 _______ = 0.54 \u2502 ___________ = 0.54 \u2502 FP + TN = 499 \u2502\n\u2502 \u2502 \u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 TN + FN \u2502 TN + FP \u2502 P0 + R0 \u2502 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 Macro Avg \u2502 P1 + P0 \u2502 R1 + R0 \u2502 F1 + F0 \u2502 TS = 1000 \u2502\n\u2502 \u2502 _______ = 0.53 \u2502 _______ = 0.53 \u2502 _______ = 0.53 \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 2 \u2502 2 \u2502 2 \u2502 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 Weighted Avg \u2502 W1 \u2502 W2 \u2502 W3 \u2502 TS = 1000 \u2502\n\u2502 \u2502 __ = 0.53 \u2502 __ = 0.53 \u2502 __ = 0.53 \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 TS \u2502 TS \u2502 TS \u2502 \u2502\n\u2558\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255b\n\nPPV : Positive Predictive Value\n\nNPV : Negative Predictive Value\n\nW1 = (P1 x S1) + (P0 x S0)\n\nW2 = (R1 x S1) + (R0 x S0)\n\nW3 = (F1 x S1) + (F0 x S0)\n\nTS : Total Support = S1 + S0\n\nNote : All Real Numbers Are Rounded With Two Digits After The Comma\n\nHTML File Generated Successfully :)\n\n```\n\n\n#### You Can Plot, Generate HTML Page For Confusion Matrix And Classification Report Directly From One Calculation \n\n\n```python\nfrom numpy.random import randint\nfrom matplotlib.pyplot import show\nfrom conf_mat import print_conf_mat, plot_conf_mat, conf_mat_to_html\n\n\ny_true = randint(0, 2, 1000)\ny_pred = randint(0, 2, 1000)\n\n\n# Show The Confusion Matrix On The Console (Classes Names Are Not Mandatory)\ncm = print_conf_mat(y_true, y_pred, classes_names=[False, True])\n\n\n# Show The Confusion Matrix As A Heat Map (Classes Names Are Not Mandatory)\nplot_conf_mat(conf_mat=cm, classes_names=[False, True])\nshow() # If You Are Using VSCode And You Are Executing The Code Direcctely\n\n\n# Show The Confusion Matrix As It Appears On The Console And As A Heat Map On The HTML Page (Classes Names Are Not Mandatory)\nconf_mat_to_html(conf_mat=cm, classes_names=[False, True])\n```\n\n\n#### You Can Hide Detail Information For Confusion Matrix, Classification Report And Confusion Matrix Heatmap \n\n\n```python\nfrom numpy.random import randint\nfrom matplotlib.pyplot import show\nfrom conf_mat import print_conf_mat, plot_conf_mat, conf_mat_to_html\n\n\ny_true = randint(0, 2, 1000)\ny_pred = randint(0, 2, 1000)\n\n\n# Show The Confusion Matrix On The Console (Classes Names Are Not Mandatory)\ncm = print_conf_mat(y_true, y_pred, classes_names=[False, True], detail=False)\n\n\n# Show The Confusion Matrix As A Heat Map (Classes Names Are Not Mandatory)\nplot_conf_mat(conf_mat=cm, classes_names=[False, True], detail=False)\nshow() # If You Are Using VSCode And You Are Executing The Code Direcctely\n\n\n# Show The Confusion Matrix As It Appears On The Console And As A Heat Map On The HTML Page (Classes Names Are Not Mandatory)\nconf_mat_to_html(conf_mat=cm, classes_names=[False, True], detail=False)\n```\n\n\n### Output\n\n\n```bash\nConfusion Matrix : \n________________\n\n\u2552\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2555\n\u2502 Classes \u2502 Predicted Positive (PP) \u2502 Predicted Negative (PN) \u2502\n\u255e\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2561\n\u2502 Actual Positive (P) \u2502 239 \u2502 249 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 Actual Negative (N) \u2502 243 \u2502 269 \u2502\n\u2558\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255b\n\n\u2552\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2555\n\u2502 \u2502 Rate (Score) \u2502\n\u255e\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2561\n\u2502 Accuracy \u2502 0.51 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 Error \u2502 0.49 \u2502\n\u2558\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255b\n\n\nClassification Report : \n_____________________\n\n\u2552\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2555\n\u2502 \u2502 Precision (P) \u2502 Recall (R) \u2502 F1-Score (F) \u2502 Support (S) \u2502\n\u255e\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2561\n\u2502 Positive (True) \u2502 0.5 \u2502 0.49 \u2502 0.49 \u2502 488 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 Negative (False) \u2502 0.52 \u2502 0.53 \u2502 0.52 \u2502 512 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 Macro Avg \u2502 0.51 \u2502 0.51 \u2502 0.51 \u2502 1000 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 Weighted Avg \u2502 0.51 \u2502 0.51 \u2502 0.51 \u2502 1000 \u2502\n\u2558\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255b\n\nHTML File Generated Successfully :)\n\n```\n\n\n#### You Can Plot And Generate HTML Page For Confusion Matrix Directly From One Calculation And Without Print Confusion Matrix And Classification Report\n\n\n```python\nfrom numpy.random import randint\nfrom matplotlib.pyplot import show\nfrom conf_mat import calc_conf_mat, plot_conf_mat, conf_mat_to_html\n\n\ny_true = randint(0, 2, 1000)\ny_pred = randint(0, 2, 1000)\n\n\n# Show The Confusion Matrix On The Console (Classes Names Are Not Mandatory)\ncm = calc_conf_mat(y_true, y_pred)\nprint(cm)\n\n# Show The Confusion Matrix As A Heat Map (Classes Names Are Not Mandatory)\nplot_conf_mat(conf_mat=cm, classes_names=[False, True], detail=False)\nshow() # If You Are Using VSCode And You Are Executing The Code Direcctely\n\n\n# Show The Confusion Matrix As It Appears On The Console And As A Heat Map On The HTML Page (Classes Names Are Not Mandatory)\nconf_mat_to_html(conf_mat=cm, classes_names=[False, True], detail=False)\n```\n\n\n### Output\n\n\n```bash\n[[227, 260], [254, 259]]\n\nHTML File Generated Succesfuly :)\n\n```\n\n\n### For Multi Classification\n\n\n```python\nfrom numpy.random import randint\nfrom matplotlib.pyplot import show\nfrom conf_mat import print_conf_mat, plot_conf_mat, conf_mat_to_html\n\n\ny_true = randint(0, 10, 1000)\ny_pred = randint(0, 10, 1000)\n\n\n# Show The Confusion Matrix On The Console (Classes Names Are Not Mandatory)\nprint_conf_mat(y_true, y_pred, classes_names=[\n 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9', 'C10'])\n\n\n# Show The Confusion Matrix As A Heat Map (Classes Names Are Not Mandatory)\nplot_conf_mat(y_true, y_pred, classes_names=[\n 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9', 'C10'])\nshow() # If You Are Using VSCode And You Are Executing The Code Direcctely\n\n\n# Show The Confusion Matrix As It Appears On The Console And As A Heat Map On The HTML Page (Classes Names Are Not Mandatory)\nconf_mat_to_html(y_true, y_pred, classes_names=[\n 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9', 'C10'])\n```\n\n\n### Output\n\n\n```bash\nConfusion Matrix : \n________________\n\n\u2552\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2555\n\u2502 Classes \u2502 C1 \u2502 C2 \u2502 C3 \u2502 C4 \u2502 C5 \u2502 C6 \u2502 C7 \u2502 C8 \u2502 C9 \u2502 C10 \u2502\n\u255e\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2561\n\u2502 C1 \u2502 12 \u2502 15 \u2502 9 \u2502 8 \u2502 11 \u2502 15 \u2502 12 \u2502 10 \u2502 14 \u2502 6 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 C2 \u2502 12 \u2502 14 \u2502 7 \u2502 12 \u2502 11 \u2502 14 \u2502 11 \u2502 13 \u2502 6 \u2502 4 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 C3 \u2502 13 \u2502 8 \u2502 7 \u2502 6 \u2502 12 \u2502 6 \u2502 7 \u2502 8 \u2502 9 \u2502 8 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 C4 \u2502 10 \u2502 13 \u2502 12 \u2502 11 \u2502 5 \u2502 17 \u2502 8 \u2502 15 \u2502 10 \u2502 19 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 C5 \u2502 10 \u2502 10 \u2502 8 \u2502 11 \u2502 7 \u2502 7 \u2502 11 \u2502 7 \u2502 14 \u2502 14 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 C6 \u2502 7 \u2502 11 \u2502 10 \u2502 7 \u2502 8 \u2502 13 \u2502 6 \u2502 9 \u2502 7 \u2502 8 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 C7 \u2502 10 \u2502 8 \u2502 12 \u2502 10 \u2502 9 \u2502 15 \u2502 7 \u2502 13 \u2502 10 \u2502 12 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 C8 \u2502 8 \u2502 11 \u2502 12 \u2502 7 \u2502 11 \u2502 11 \u2502 8 \u2502 12 \u2502 13 \u2502 11 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 C9 \u2502 8 \u2502 6 \u2502 12 \u2502 10 \u2502 11 \u2502 5 \u2502 6 \u2502 8 \u2502 12 \u2502 2 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 C10 \u2502 8 \u2502 15 \u2502 7 \u2502 7 \u2502 8 \u2502 13 \u2502 13 \u2502 12 \u2502 17 \u2502 5 \u2502\n\u2558\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255b\n\nYellow : Not None Correct Values / True Positive (TP) OR True Negative (TN)\nRed : Not None Wrong Values / False Positive (FP) OR False Negative (FN)\nGreen : None Correct Values\nBlue : None Wrong Values\n\n\u2552\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2555\n\u2502 \u2502 Rate (Score) \u2502\n\u255e\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2561\n\u2502 Accuracy \u2502 Correct Sum Of Yellow Values \u2502\n\u2502 \u2502 _______ : ____________________________ OR 1 - Error = 0.1 \u2502\n\u2502 \u2502 \u2502\n\u2502 \u2502 Total Sum Of Yellow And Red Values \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 Error \u2502 Wrong Sum Of Red Values \u2502\n\u2502 \u2502 _____ : ____________________________ OR 1 - Accuracy = 0.9 \u2502\n\u2502 \u2502 \u2502\n\u2502 \u2502 Total Sum Of Yellow And Red Values \u2502\n\u2558\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255b\n\n\nClassification Report : \n_____________________\n\n\u2552\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2555\n\u2502 \u2502 Precision (P) \u2502 Recall (R) \u2502 F1-Score (F) \u2502 Support (S) \u2502\n\u255e\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2561\n\u2502 C1 \u2502 0.12 \u2502 0.11 \u2502 0.11 \u2502 112 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 C2 \u2502 0.13 \u2502 0.13 \u2502 0.13 \u2502 104 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 C3 \u2502 0.07 \u2502 0.08 \u2502 0.08 \u2502 84 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 C4 \u2502 0.12 \u2502 0.09 \u2502 0.11 \u2502 120 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 C5 \u2502 0.08 \u2502 0.07 \u2502 0.07 \u2502 99 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 C6 \u2502 0.11 \u2502 0.15 \u2502 0.13 \u2502 86 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 C7 \u2502 0.08 \u2502 0.07 \u2502 0.07 \u2502 106 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 C8 \u2502 0.11 \u2502 0.12 \u2502 0.11 \u2502 104 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 C9 \u2502 0.11 \u2502 0.15 \u2502 0.12 \u2502 80 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 C10 \u2502 0.06 \u2502 0.05 \u2502 0.05 \u2502 105 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 Macro Avg \u2502 0.1 \u2502 0.1 \u2502 0.1 \u2502 1000 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 Weighted Avg \u2502 0.1 \u2502 0.1 \u2502 0.1 \u2502 1000 \u2502\n\u2558\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255b\n\nPrecision : Yellow Value / Sum Of Yellow Value Column\n\nRecall : Yellow Value / Sum Of Yellow Value Row\n\nF1-Score : (2 x Precision x Recall) / (Precision + Recall)\n\nSupport : Sum Of Each Row\n\nMacro Avg :\n\n Precision : (Sum Of Precision Column) / Classes Count\n\n Recall : (Sum Of Recall Column) / Classes Count\n\n F1-Score : (Sum Of F1-Score Column) / Classes Count\n\n Support : Total (Sum Of All Matrix)\n\nWeighted Avg :\n\n Precision : (Sum Of (Precision x support)) / Total (Sum Of All Matrix)\n\n Recall : (Sum Of (Recall x Support)) / Total (Sum Of All Matrix)\n\n F1-Score : (Sum Of (F1-Score x Support)) / Total (Sum Of All Matrix)\n\n Support : Total (Sum Of All Matrix)\n\nNote : All Real Numbers Are Rounded With Two Digits After The Comma\n\nHTML File Generated Successfully :)\n\n```\n\n\n#### You Can Plot, Generate HTML Page For Confusion Matrix And Classification Report Directly From One Calculation \n\n\n```python\nfrom numpy.random import randint\nfrom matplotlib.pyplot import show\nfrom conf_mat import print_conf_mat, plot_conf_mat, conf_mat_to_html\n\n\ny_true = randint(0, 10, 1000)\ny_pred = randint(0, 10, 1000)\n\n\n# Show The Confusion Matrix On The Console (Classes Names Are Not Mandatory)\ncm = print_conf_mat(y_true, y_pred, classes_names=[\n 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9', 'C10'])\n\n\n# Show The Confusion Matrix As A Heat Map (Classes Names Are Not Mandatory)\nplot_conf_mat(conf_mat=cm, classes_names=[\n 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9', 'C10'])\nshow() # If You Are Using VSCode And You Are Executing The Code Direcctely\n\n\n# Show The Confusion Matrix As It Appears On The Console And As A Heat Map On The HTML Page (Classes Names Are Not Mandatory)\nconf_mat_to_html(conf_mat=cm, classes_names=[\n 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9', 'C10'])\n```\n\n\n#### You Can Hide Detail Information For Confusion Matrix, Classification Report And Confusion Matrix Heatmap\n\n\n```python\nfrom numpy.random import randint\nfrom matplotlib.pyplot import show\nfrom conf_mat import print_conf_mat, plot_conf_mat, conf_mat_to_html\n\n\ny_true = randint(0, 10, 1000)\ny_pred = randint(0, 10, 1000)\n\n\n# Show The Confusion Matrix On The Console (Classes Names Are Not Mandatory)\ncm = print_conf_mat(y_true, y_pred, detail=False)\n\n\n# Show The Confusion Matrix As A Heat Map (Classes Names Are Not Mandatory)\nplot_conf_mat(conf_mat=cm, classes_names=[\n 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9', 'C10'], detail=False)\nshow() # If You Are Using VSCode And You Are Executing The Code Direcctely\n\n\n# Show The Confusion Matrix As It Appears On The Console And As A Heat Map On The HTML Page (Classes Names Are Not Mandatory)\nconf_mat_to_html(conf_mat=cm, classes_names=[\n 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9', 'C10'], detail=False)\n```\n\n\n### Output\n\n\n```bash\nConfusion Matrix : \n________________\n\n\u2552\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2555\n\u2502 Classes \u2502 0 \u2502 1 \u2502 2 \u2502 3 \u2502 4 \u2502 5 \u2502 6 \u2502 7 \u2502 8 \u2502 9 \u2502\n\u255e\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2561\n\u2502 0 \u2502 13 \u2502 10 \u2502 13 \u2502 11 \u2502 11 \u2502 10 \u2502 11 \u2502 11 \u2502 10 \u2502 8 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 1 \u2502 13 \u2502 13 \u2502 6 \u2502 7 \u2502 13 \u2502 11 \u2502 10 \u2502 8 \u2502 4 \u2502 7 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 2 \u2502 9 \u2502 8 \u2502 10 \u2502 6 \u2502 9 \u2502 11 \u2502 10 \u2502 13 \u2502 10 \u2502 12 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 3 \u2502 9 \u2502 11 \u2502 13 \u2502 17 \u2502 9 \u2502 8 \u2502 9 \u2502 6 \u2502 10 \u2502 4 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 4 \u2502 12 \u2502 9 \u2502 12 \u2502 11 \u2502 4 \u2502 12 \u2502 13 \u2502 10 \u2502 9 \u2502 10 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 5 \u2502 11 \u2502 13 \u2502 3 \u2502 11 \u2502 13 \u2502 3 \u2502 12 \u2502 12 \u2502 10 \u2502 6 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 6 \u2502 11 \u2502 8 \u2502 8 \u2502 15 \u2502 12 \u2502 8 \u2502 11 \u2502 10 \u2502 7 \u2502 9 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 7 \u2502 11 \u2502 9 \u2502 5 \u2502 13 \u2502 10 \u2502 7 \u2502 9 \u2502 16 \u2502 9 \u2502 19 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 8 \u2502 10 \u2502 13 \u2502 6 \u2502 15 \u2502 5 \u2502 4 \u2502 10 \u2502 9 \u2502 8 \u2502 7 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 9 \u2502 14 \u2502 13 \u2502 18 \u2502 11 \u2502 8 \u2502 12 \u2502 11 \u2502 12 \u2502 7 \u2502 10 \u2502\n\u2558\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u255b\n\n\u2552\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2555\n\u2502 \u2502 Rate (Score) \u2502\n\u255e\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2561\n\u2502 Accuracy \u2502 0.1 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 Error \u2502 0.9 \u2502\n\u2558\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255b\n\n\nClassification Report : \n_____________________\n\n\u2552\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2555\n\u2502 \u2502 Precision (P) \u2502 Recall (R) \u2502 F1-Score (F) \u2502 Support (S) \u2502\n\u255e\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2561\n\u2502 0 \u2502 0.12 \u2502 0.12 \u2502 0.12 \u2502 108 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 1 \u2502 0.12 \u2502 0.14 \u2502 0.13 \u2502 92 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 2 \u2502 0.11 \u2502 0.1 \u2502 0.1 \u2502 98 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 3 \u2502 0.15 \u2502 0.18 \u2502 0.16 \u2502 96 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 4 \u2502 0.04 \u2502 0.04 \u2502 0.04 \u2502 102 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 5 \u2502 0.03 \u2502 0.03 \u2502 0.03 \u2502 94 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 6 \u2502 0.1 \u2502 0.11 \u2502 0.11 \u2502 99 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 7 \u2502 0.15 \u2502 0.15 \u2502 0.15 \u2502 108 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 8 \u2502 0.1 \u2502 0.09 \u2502 0.09 \u2502 87 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 9 \u2502 0.11 \u2502 0.09 \u2502 0.1 \u2502 116 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 Macro Avg \u2502 0.1 \u2502 0.1 \u2502 0.1 \u2502 1000 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 Weighted Avg \u2502 0.1 \u2502 0.1 \u2502 0.1 \u2502 1000 \u2502\n\u2558\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255b\n\nHTML File Generated Successfully :)\n\n```\n\n\n#### You Can Plot And Generate HTML Page For Confusion Matrix Directly From One Calculation And Without Print Confusion Matrix And Classification Report\n\n\n```python\nfrom numpy.random import randint\nfrom matplotlib.pyplot import show\nfrom conf_mat import calc_conf_mat, plot_conf_mat, conf_mat_to_html\n\n\ny_true = randint(0, 10, 1000)\ny_pred = randint(0, 10, 1000)\n\n\n# Show The Confusion Matrix On The Console (Classes Names Are Not Mandatory)\ncm = calc_conf_mat(y_true, y_pred)\nprint(cm)\n\n# Show The Confusion Matrix As A Heat Map (Classes Names Are Not Mandatory)\nplot_conf_mat(conf_mat=cm, classes_names=[\n 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9', 'C10'], detail=False)\nshow() # If You Are Using VSCode And You Are Executing The Code Direcctely\n\n\n# Show The Confusion Matrix As It Appears On The Console And As A Heat Map On The HTML Page (Classes Names Are Not Mandatory)\nconf_mat_to_html(conf_mat=cm, classes_names=[\n 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9', 'C10'], detail=False)\n```\n\n\n### Output\n\n\n```bash\n[[7, 9, 15, 9, 8, 13, 11, 11, 6, 8], [7, 4, 16, 12, 12, 18, 12, 15, 13, 11], [6, 10, 8, 14, 8, 9, 8, 12, 10, 5], [4, 8, 8, 11, 13, 9, 8, 13, 12, 12], [8, 10, 10, 5, 11, 12, 14, 14, 12, 12], [4, 10, 10, 9, 8, 6, 12, 15, 9, 12], [7, 8, 4, 10, 9, 11, 19, 13, 7, 10], [10, 10, 14, 10, 11, 15, 9, 10, 10, 6], [14, 10, 11, 10, 8, 11, 8, 14, 8, 12], [11, 12, 8, 9, 4, 12, 5, 9, 5, 8]]\n\nHTML File Generated Successfully :)\n\n```\n\n\n### Note\n\n\nThese outputs are specific to the first function only (conf_mat), in both cases. I'll leave it to you to discover the other two functions (conf_mat_disp, conf_mat_to_html) on your own.\n\n\n## License\n\n\nThis project is licensed under the MIT License - see the LICENSE file for details.\n",
"bugtrack_url": null,
"license": "",
"summary": "Sophisticate Open Confusion Matrix",
"version": "1.0.2",
"project_urls": null,
"split_keywords": [
"confusion matrix",
"confusion matrix display",
"plot confusion matrix",
"khiat",
"khiat mohamed",
"performance metrics",
"khiat mohammed",
"khiat abderrezzak",
"confusion matrix visualization",
"khiat mohamed abderrezzak",
"khiat mohammed abderrezzak",
"classification report",
"khiat abderrezzak mohamed",
"khiat abderrezzak mohammed",
"heatmap",
"mohamed",
"mohammed",
"machine learning",
"mohamed khiat",
"mohammed khiat",
"deep learning",
"mohamed abderrezzak",
"mohammed abderrezzak",
"data visualization",
"mohamed abderrezzak khiat",
"mohammed abderrezzak khiat",
"data analysis",
"mohamed khiat abderrezzak",
"mohammed khiat abderrezzak",
"beginner-friendly",
"abderrezzak",
"abderrezzak khiat",
"aesthetically pleasing",
"abderrezzak mohamed",
"abderrezzak mohammed",
"accuracy score calculation",
"abderrezzak khiat mohamed",
"abderrezzak khiat mohammed",
"model score calculation",
"abderrezzak mohamed khiat",
"abderrezzak mohammed khiat",
"confusion matrix calculation",
"confusion matrix html display"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "aace68b7d2d8601252bf267be5c15b3fe66150998bfdae8de8a78628cea6af83",
"md5": "50e9d190d0355705e8877fcc9ad0e1eb",
"sha256": "ad72b59ae5d8554de977a6da09601421f2eb5d5a33827d16b91126b029febc91"
},
"downloads": -1,
"filename": "conf_mat-1.0.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "50e9d190d0355705e8877fcc9ad0e1eb",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 13600,
"upload_time": "2024-02-28T09:40:53",
"upload_time_iso_8601": "2024-02-28T09:40:53.905010Z",
"url": "https://files.pythonhosted.org/packages/aa/ce/68b7d2d8601252bf267be5c15b3fe66150998bfdae8de8a78628cea6af83/conf_mat-1.0.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9f3c88ddb4ec7e24041652c61cc10c6fad1192094d4134fc9ee9d82fda9d1e54",
"md5": "0b199bfa56ffd33894e8de01cd031ae3",
"sha256": "10280c8dd477af3444f908d7ae69e96b6afb93c57759b2d6f1890501d2aa439e"
},
"downloads": -1,
"filename": "conf-mat-1.0.2.tar.gz",
"has_sig": false,
"md5_digest": "0b199bfa56ffd33894e8de01cd031ae3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 20328,
"upload_time": "2024-02-28T09:40:56",
"upload_time_iso_8601": "2024-02-28T09:40:56.357324Z",
"url": "https://files.pythonhosted.org/packages/9f/3c/88ddb4ec7e24041652c61cc10c6fad1192094d4134fc9ee9d82fda9d1e54/conf-mat-1.0.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-02-28 09:40:56",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "conf-mat"
}