From 36c67638e2669863965b102e016b15e542475486 Mon Sep 17 00:00:00 2001 From: Nandini Manoj Pathak <166193813+nandinipathak2005@users.noreply.github.com> Date: Sun, 4 Aug 2024 16:33:13 +0530 Subject: [PATCH] Added index.html,style.css and script.js --- .../Confusion-Matrix-Calculator/README.md | 30 ++++ .../assets/image.jpg | Bin 0 -> 34527 bytes .../Confusion-Matrix-Calculator/index.html | 75 ++++++++++ .../Confusion-Matrix-Calculator/script.js | 34 +++++ .../Confusion-Matrix-Calculator/style.css | 138 ++++++++++++++++++ index.html | 14 ++ 6 files changed, 291 insertions(+) create mode 100644 Calculators/Confusion-Matrix-Calculator/README.md create mode 100644 Calculators/Confusion-Matrix-Calculator/assets/image.jpg create mode 100644 Calculators/Confusion-Matrix-Calculator/index.html create mode 100644 Calculators/Confusion-Matrix-Calculator/script.js create mode 100644 Calculators/Confusion-Matrix-Calculator/style.css diff --git a/Calculators/Confusion-Matrix-Calculator/README.md b/Calculators/Confusion-Matrix-Calculator/README.md new file mode 100644 index 000000000..c954e91e1 --- /dev/null +++ b/Calculators/Confusion-Matrix-Calculator/README.md @@ -0,0 +1,30 @@ +#

Confusion Matrix Calculator

+ +## Description :- + +An interactive web-based calculator that allows users to compute essential machine learning metrics based on a confusion matrix. By entering values for true positives, false positives, false negatives, and true negatives, users can instantly see calculated accuracy, precision, recall, and F1 score. These metrics are crucial for evaluating the performance of classification models in machine learning. + +## Tech Stacks :- + +- HTML +- CSS +- JavaScript + +## Features :- + +- Calculate accuracy, precision, recall, and F1 score based on confusion matrix inputs. +- Instantly see performance metrics relevant to classification models. + +## Usage :- + +1. Open the index.html file in your web browser. + +2. Enter the following inputs: + - True Positive (TP) + - False Positive (FP) + - False Negative (FN) + - True Negative (TN) + +3. Click the "Calculate" button to view the computed metrics. + +The calculator will display accuracy, precision, recall, and F1 score based on the provided confusion matrix values. diff --git a/Calculators/Confusion-Matrix-Calculator/assets/image.jpg b/Calculators/Confusion-Matrix-Calculator/assets/image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7161d95e1e836f128ed414ae7237963d86ed0d3a GIT binary patch literal 34527 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 + + + + Confusion Matrix Calculator + + + + +
+
+

Confusion Matrix Calculator

+ +
+ +
+
+
+
+
+
+
+
+
+ +
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+ + +
+
+ +
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+ +
+
+ +

ACCURACY: (TP+TN)/(TP+TN+FP+FN)

+

PRECISION: TP/(TP+FP)

+

RECALL: TP/(TP+FN)

+

F1 SCORE: 2*((PRECISION+RECALL)/(PRECISON*RECALL))

+
+
+
+ + + \ No newline at end of file diff --git a/Calculators/Confusion-Matrix-Calculator/script.js b/Calculators/Confusion-Matrix-Calculator/script.js new file mode 100644 index 000000000..17a632647 --- /dev/null +++ b/Calculators/Confusion-Matrix-Calculator/script.js @@ -0,0 +1,34 @@ +document.getElementById('confusionMatrixForm').addEventListener('submit', function(event) { + event.preventDefault(); + + // Get input values + const truePositive = parseFloat(document.getElementById('truePositive').value); + const falsePositive = parseFloat(document.getElementById('falsePositive').value); + const falseNegative = parseFloat(document.getElementById('falseNegative').value); + const trueNegative = parseFloat(document.getElementById('trueNegative').value); + + + const accuracy = (truePositive + trueNegative) / (truePositive + falsePositive + falseNegative + trueNegative); + const precision = truePositive / (truePositive + falsePositive); + const recall = truePositive / (truePositive + falseNegative); + const f1Score = 2 * (precision * recall) / (precision + recall); + + + document.getElementById('accuracy').textContent = `Accuracy: ${(accuracy * 100).toFixed(2)}%`; + document.getElementById('precision').textContent = `Precision: ${(precision * 100).toFixed(2)}%`; + document.getElementById('recall').textContent = `Recall: ${(recall * 100).toFixed(2)}%`; + document.getElementById('f1Score').textContent = `F1 Score: ${f1Score.toFixed(2)}`; +}); + +function clearForm() { + document.getElementById('truePositive').value = ''; + document.getElementById('falsePositive').value = ''; + document.getElementById('falseNegative').value = ''; + document.getElementById('trueNegative').value = ''; + + // Clear the result display + document.getElementById('accuracy').textContent = ''; + document.getElementById('precision').textContent = ''; + document.getElementById('recall').textContent = ''; + document.getElementById('f1Score').textContent = ''; +} diff --git a/Calculators/Confusion-Matrix-Calculator/style.css b/Calculators/Confusion-Matrix-Calculator/style.css new file mode 100644 index 000000000..8a4c70708 --- /dev/null +++ b/Calculators/Confusion-Matrix-Calculator/style.css @@ -0,0 +1,138 @@ +body { + font-family: Arial, sans-serif; + background: linear-gradient(to right, rgba(0, 102, 255, 0.9), rgba(0, 178, 178, 0.9)); + +} + +.main-container { + display: flex; + align-items: flex-start; + gap: 15px; + padding: 20px; + max-width: 1200px; + margin: auto; +} + +.container { + background-color: rgba(0, 0, 0, 0.6); + padding: 30px; + border-radius: 8px; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); + max-width: 600px; + color: white; + +} + +.containerimage { + background-color: rgba(0, 0, 0, 0.6); + padding: 10px; + border-radius: 8px; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); + + +} + +.Formulae { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + text-align: center; + color: white; + font-size: 14px; +} + +.cyan-container { + background-color: rgba(0, 255, 255, 0.6); + display: flex; + justify-content: center; + max-width: 600px; + padding: 30px; + border-radius: 8px; + +} + +.resultcontainer { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + color: black; + font-weight: bold; + margin-top: 20px; + font-size: 22px; + +} + + + +h1 { + font-size: 32px; + margin-bottom: 20px; +} + + + +.btn { + background-color: blue; + font-size: 18px; + padding: 10px 20px; +} + +.form-label { + font-size: 16px; +} + +input.form-control { + font-size: 18px; + padding: 10px; +} + +@media (max-width: 768px) { + .main-container { + flex-direction: column; + align-items: center; + gap: 20px; + max-width: 100%; + padding: 10px; + } + + .containerimage { + max-width: 100%; + padding: 10px; + } + + .containerimage img { + width: 100%; + height: auto; + min-width: 300px; + max-width:600px; + } + + .cyan-container { + max-width: 100%; + padding: 20px; + } + + .form-label { + font-size: 14px; + } + + input.form-control { + font-size: 16px; + padding: 12px; + } + + .btn { + font-size: 16px; + padding: 12px 24px; + } + + h1 { + font-size: 28px; + } + + .resultcontainer { + font-size: 20px; + } +} diff --git a/index.html b/index.html index 770b7ae8b..76824f626 100644 --- a/index.html +++ b/index.html @@ -1191,6 +1191,20 @@

Calculates the Conductivity & Resistivity.

+
+
+

Confusion Matrix Calculator

+

Calculates Accuracy, Precision, Recall, and F1 Score for classification models in Machine Learning.

+ +
+

Cosine Formula Calculator