From c46be7894f43f932e5d986f0f1390699bab601df Mon Sep 17 00:00:00 2001 From: negativenagesh Date: Thu, 3 Oct 2024 23:26:15 +0530 Subject: [PATCH 1/5] added code for PCA from scratch --- dimensionality-reduction/__init__.py | 1 + dimensionality-reduction/pca.py | 56 ++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 dimensionality-reduction/__init__.py create mode 100644 dimensionality-reduction/pca.py diff --git a/dimensionality-reduction/__init__.py b/dimensionality-reduction/__init__.py new file mode 100644 index 0000000..5a5085b --- /dev/null +++ b/dimensionality-reduction/__init__.py @@ -0,0 +1 @@ +from pca import pca \ No newline at end of file diff --git a/dimensionality-reduction/pca.py b/dimensionality-reduction/pca.py new file mode 100644 index 0000000..bb0cea1 --- /dev/null +++ b/dimensionality-reduction/pca.py @@ -0,0 +1,56 @@ +import numpy as np +from numpy import linalg as la + + +class pca(): + + """ + PCA is a dimendionality reduction technique. + Linear dimensionality reduction using Singular Value Decomposition of the data to project it to a lower dimensional space + + """ + + def __init__(self): + self.cov=cov + self.eigen=eigen + self.eigval=None + self.eigvct=None + self.covar=None + self.princicomp=None + + def cov(self,x): + + """ + first we have to find the covariance matrix of the given array/dataframe + + """ + self.covar=np.cov(x) + + return self.covar + + def eigen(self,x): + + """ + Second step is to find eigen values and vectors of the given array + + """ + self.eigval, self.eigvct = np.la.eig(self.covar) + + return self.eigval,self.eigvct + + def ncomp(self,numcomponents): + + """ + Method to choose number of principal components + + """ + self.princicomp=self.eigvct[0:numcomponents] + + """ + For examples, if numcomponents=2 then this function returns first 2 rows of eigenvectors + + """ + + return self.princicomp + + \ No newline at end of file From caa58c0ac94935b5e24e8cbd1276baffbb6e2f05 Mon Sep 17 00:00:00 2001 From: negativenagesh Date: Thu, 3 Oct 2024 23:49:58 +0530 Subject: [PATCH 2/5] added requirements.txt which contains all the libraries which are required for this --- requirements.txt | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 requirements.txt diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..743e75c --- /dev/null +++ b/requirements.txt @@ -0,0 +1,5 @@ +numpy +matplotlib +pandas +collections +os \ No newline at end of file From fdeca00dc47bc2e1801ead1d428eb78d1bc4539d Mon Sep 17 00:00:00 2001 From: negativenagesh Date: Fri, 4 Oct 2024 00:39:50 +0530 Subject: [PATCH 3/5] =?UTF-8?q?=1B[200~Updated=20README.md=20to=20include:?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 204 ++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 145 insertions(+), 59 deletions(-) diff --git a/README.md b/README.md index f84a858..7810a89 100644 --- a/README.md +++ b/README.md @@ -1,60 +1,146 @@ -# MLfromScratch -Library for machine learning where all algorithms are implemented from scratch. Used only numpy. - -Here I tried to keep package modules in same structure as sklearn. - -## Package Description - -1. linear_model - * LinearRegression - * SGDRegressor - * SGDClassifier -2. tree - * DecisionTreeClassifier - * DecisionTreeRegressor -3. neighbors - * KNeighborsRegressor - * KNeighborsClassifier -4. naive_bayes - * GaussianNB - * MultinomialNB -5. cluster - * KMeans - * AgglomerativeClustering - * DBSCAN - * MeanShift -6. ensemble - * RandomForestClassifier - * RandomForestRegressor - * GradientBoostingRegressor - * GradientBoostingClassifier - * VotingClassifier -7. metrics - * mean_squared_error - * root_mean_squared_error - * mean_absolute_error - * r2_score - * accuracy_score - * confusion_matrix - * roc_auc_score - * roc_curve - * precision_score - * recall_score - * sensitivity_score - * specificity_score - * f1_score - * adjusted_rand_score -8. model_selection - * train_test_split - * KFold -9. preprocessing - * StandardScaler - * MinMaxScaler - * RobustScaler - * LabelEncoder - * OneHotEncoder - -## Contributors - -* [Aditya Jain](https://adityajain.me) +
+

๐Ÿง  MLfromScratch

+ +![Python](https://img.shields.io/badge/Python-3.8+-blue?style=flat-square&logo=python&logoColor=white) +![NumPy](https://img.shields.io/badge/NumPy-Library-green?style=flat-square&logo=numpy&logoColor=white) +![License](https://img.shields.io/github/license/adityajn105/MLfromScratch?style=flat-square) +![GitHub contributors](https://img.shields.io/github/contributors/adityajn105/MLfromScratch?style=flat-square) + +
+ +**MLfromScratch** is a library designed to help you learn and understand machine learning algorithms by building them from scratch using only `NumPy`! No black-box libraries, no hidden magicโ€”just pure Python and math. It's perfect for beginners who want to see what's happening behind the scenes of popular machine learning models. + +๐Ÿ”— **[Explore the Documentation](https://github.com/adityajn105/MLfromScratch/wiki)** + +--- + +## ๐Ÿ“ฆ Package Structure + +Our package structure is designed to look like `scikit-learn`, so if you're familiar with that, you'll feel right at home! + +### ๐Ÿ”ง Modules and Algorithms (Explained for Beginners)

+#### ๐Ÿ“ˆ **1. Linear Models (`linear_model`)** + +- **LinearRegression** ![Linear Regression](https://img.shields.io/badge/Linear%20Regression-blue?style=flat-square&logo=mathworks): Imagine drawing a straight line through a set of points to predict future values. Linear Regression helps in predicting something like house prices based on size. + +- **SGDRegressor** ![SGD](https://img.shields.io/badge/SGD-Fast-blue?style=flat-square&logo=rocket): A fast way to do Linear Regression using Stochastic Gradient Descent. Perfect for large datasets. + +- **SGDClassifier** ![Classifier](https://img.shields.io/badge/SGD-Classifier-yellow?style=flat-square&logo=target): A classification algorithm predicting categories like "spam" or "not spam."

+ + +#### ๐ŸŒณ **2. Decision Trees (`tree`)** + +- **DecisionTreeClassifier** ![Tree](https://img.shields.io/badge/Tree-Classifier-brightgreen?style=flat-square&logo=leaf): Think of this as playing 20 questions to guess something. A decision tree asks yes/no questions to classify data. + +- **DecisionTreeRegressor** ![Regressor](https://img.shields.io/badge/Tree-Regressor-yellowgreen?style=flat-square&logo=mathworks): Predicts a continuous number (like temperature tomorrow) based on input features.

+ + +#### ๐Ÿ‘ฅ **3. K-Nearest Neighbors (`neighbors`)** + +- **KNeighborsClassifier** ![KNN](https://img.shields.io/badge/KNN-Classifier-9cf?style=flat-square&logo=people-arrows): Classifies data by looking at the 'k' nearest neighbors to the new point. + +- **KNeighborsRegressor** ![KNN](https://img.shields.io/badge/KNN-Regressor-lightblue?style=flat-square&logo=chart-bar): Instead of classifying, it predicts a number based on nearby data points.

+ + +#### ๐Ÿงฎ **4. Naive Bayes (`naive_bayes`)** + +- **GaussianNB** ![Gaussian](https://img.shields.io/badge/GaussianNB-fast-brightgreen?style=flat-square&logo=matrix): Works great for data that follows a normal distribution (bell-shaped curve). + +- **MultinomialNB** ![Multinomial](https://img.shields.io/badge/MultinomialNB-text-ff69b4?style=flat-square&logo=alphabetical-order): Ideal for text classification tasks like spam detection.

+ + +#### ๐Ÿ“Š **5. Clustering (`cluster`)** + +- **KMeans** ![KMeans](https://img.shields.io/badge/KMeans-Clustering-ff69b4?style=flat-square&logo=group): Groups data into 'k' clusters based on similarity. + +- **AgglomerativeClustering** ![Agglomerative](https://img.shields.io/badge/Agglomerative-Hierarchical-blueviolet?style=flat-square&logo=chart-bar): Clusters by merging similar points until a single large cluster is formed. + +- **DBSCAN** ![DBSCAN](https://img.shields.io/badge/DBSCAN-Noise%20Filtering-blue?style=flat-square&logo=waves): Groups points close to each other and filters out noise. No need to specify the number of clusters! + +- **MeanShift** ![MeanShift](https://img.shields.io/badge/MeanShift-Clustering-yellowgreen?style=flat-square&logo=sort-amount-up): Shifts data points toward areas of high density to find clusters.

+ + +#### ๐ŸŒฒ **6. Ensemble Methods (`ensemble`)** + +- **RandomForestClassifier** ![RandomForest](https://img.shields.io/badge/Random%20Forest-Classifier-brightgreen?style=flat-square&logo=forest): Combines multiple decision trees to make stronger decisions. + +- **RandomForestRegressor** ![RandomForest](https://img.shields.io/badge/Random%20Forest-Regressor-lightblue?style=flat-square&logo=tree): Predicts continuous values using an ensemble of decision trees. + +- **GradientBoostingClassifier** ![GradientBoosting](https://img.shields.io/badge/Gradient%20Boosting-Classifier-9cf?style=flat-square&logo=chart-line): Builds trees sequentially, each correcting errors made by the last. + +- **VotingClassifier** ![Voting](https://img.shields.io/badge/Voting-Classifier-orange?style=flat-square&logo=thumbs-up): Combines the results of multiple models to make a final prediction.

+ + +#### ๐Ÿ“ **7. Metrics (`metrics`)** + +Measure your modelโ€™s performance: + +- **accuracy_score** ![Accuracy](https://img.shields.io/badge/Accuracy-High-brightgreen?style=flat-square&logo=bar-chart): Measures how many predictions your model got right. + +- **f1_score** ![F1 Score](https://img.shields.io/badge/F1_Score-Balance-lightgreen?style=flat-square&logo=scales): Balances precision and recall into a single score. + +- **roc_curve** ![ROC](https://img.shields.io/badge/ROC-Curve-orange?style=flat-square&logo=wave): Shows the trade-off between true positives and false positives.

+ + +#### โš™๏ธ **8. Model Selection (`model_selection`)** + +- **train_test_split** ![TrainTestSplit](https://img.shields.io/badge/Train_Test_Split-blueviolet?style=flat-square&logo=arrows): Splits your data into training and test sets. + +- **KFold** ![KFold](https://img.shields.io/badge/KFold-CrossValidation-blue?style=flat-square&logo=matrix): Trains the model in 'k' iterations for better validation.

+ + +#### ๐Ÿ” **9. Preprocessing (`preprocessing`)** + +- **StandardScaler** ![StandardScaler](https://img.shields.io/badge/StandardScaler-Normalization-ff69b4?style=flat-square&logo=arrows-v): Standardizes your data so it has a mean of 0 and a standard deviation of 1. + +- **LabelEncoder** ![LabelEncoder](https://img.shields.io/badge/LabelEncoder-Classification-yellow?style=flat-square&logo=code): Converts text labels into numerical labels (e.g., "cat", "dog").

+ + +#### ๐Ÿงฉ **10. Dimensionality Reduction (`decomposition`)** + +Dimensionality Reduction helps in simplifying data while retaining most of its valuable information. By reducing the number of features (dimensions) in a dataset, it makes data easier to visualize and speeds up machine learning algorithms. + +- **PCA (Principal Component Analysis)** ![PCA](https://img.shields.io/badge/PCA-PrincipalComponentAnalysis-orange?style=flat-square&logo=chart-line): PCA reduces the number of dimensions by finding new uncorrelated variables called principal components. It projects your data onto a lower-dimensional space while retaining as much variance as possible.

+ - **How It Works**: PCA finds the axes (principal components) that maximize the variance in your data. The first principal component captures the most variance, and each subsequent component captures progressively less. + - **Use Case**: Use PCA when you have many features, and you want to simplify your dataset for better visualization or faster computation. It is particularly useful when features are highly correlated. + +--- + +## ๐ŸŽฏ Why Use This Library? + +- **Learning-First Approach**: If you're a beginner and want to *understand* machine learning, this is the library for you. No hidden complexity, just code. +- **No Hidden Magic**: Everything is written from scratch, so you can see exactly how each algorithm works. +- **Lightweight**: Uses only `NumPy`, making it fast and easy to run.

+ +## ๐Ÿš€ Getting Started + +```bash +# Clone the repository +git clone https://github.com/adityajn105/MLfromScratch.git + +# Navigate to the project directory +cd MLfromScratch + +# Install the required dependencies +pip install -r requirements.txt +``` +

+ +## ๐Ÿ‘จโ€๐Ÿ’ป Author +This project is maintained by [Aditya Jain](https://adityajain.me/)

+ +## ๐Ÿง‘โ€๐Ÿ’ป Contributors +Constributor: [Subrahmanya Gaonkar](https://github.com/negativenagesh) + +We welcome contributions from everyone, especially beginners! If you're new to open-source, donโ€™t worryโ€”feel free to ask questions, open issues, or submit a pull request.

+ +## ๐Ÿค How to Contribute +1. Fork the repository. +2. Create a new branch (git checkout -b feature-branch). +3. Make your changes and commit (git commit -m "Added new feature"). +4. Push the changes (git push origin feature-branch). +5. Submit a pull request and explain your changes.

+ +## ๐Ÿ“„ License +This project is licensed under the [MIT License](https://github.com/adityajn105/MLfromScratch/blob/master/LICENSE) - see the LICENSE file for details. From 1da71f636523b4cfd82b7a6b4588b6c8050856a5 Mon Sep 17 00:00:00 2001 From: negativenagesh Date: Fri, 4 Oct 2024 00:46:51 +0530 Subject: [PATCH 4/5] Updated README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7810a89..e5c172c 100644 --- a/README.md +++ b/README.md @@ -143,4 +143,4 @@ We welcome contributions from everyone, especially beginners! If you're new to o 5. Submit a pull request and explain your changes.

## ๐Ÿ“„ License -This project is licensed under the [MIT License](https://github.com/adityajn105/MLfromScratch/blob/master/LICENSE) - see the LICENSE file for details. +This project is licensed under the [MIT License](https://github.com/adityajn105/MLfromScratch/blob/master/LICENSE) - see the LICENSE file for details. \ No newline at end of file From ffaf1bdf4f6927ff4def5739e6e6a8f1d9691520 Mon Sep 17 00:00:00 2001 From: negativenagesh Date: Fri, 4 Oct 2024 00:55:59 +0530 Subject: [PATCH 5/5] reverting --- README.md | 204 ++++++++++++++++-------------------------------------- 1 file changed, 59 insertions(+), 145 deletions(-) diff --git a/README.md b/README.md index e5c172c..f84a858 100644 --- a/README.md +++ b/README.md @@ -1,146 +1,60 @@ -
+# MLfromScratch +Library for machine learning where all algorithms are implemented from scratch. Used only numpy. + +Here I tried to keep package modules in same structure as sklearn. + +## Package Description + +1. linear_model + * LinearRegression + * SGDRegressor + * SGDClassifier +2. tree + * DecisionTreeClassifier + * DecisionTreeRegressor +3. neighbors + * KNeighborsRegressor + * KNeighborsClassifier +4. naive_bayes + * GaussianNB + * MultinomialNB +5. cluster + * KMeans + * AgglomerativeClustering + * DBSCAN + * MeanShift +6. ensemble + * RandomForestClassifier + * RandomForestRegressor + * GradientBoostingRegressor + * GradientBoostingClassifier + * VotingClassifier +7. metrics + * mean_squared_error + * root_mean_squared_error + * mean_absolute_error + * r2_score + * accuracy_score + * confusion_matrix + * roc_auc_score + * roc_curve + * precision_score + * recall_score + * sensitivity_score + * specificity_score + * f1_score + * adjusted_rand_score +8. model_selection + * train_test_split + * KFold +9. preprocessing + * StandardScaler + * MinMaxScaler + * RobustScaler + * LabelEncoder + * OneHotEncoder + +## Contributors + +* [Aditya Jain](https://adityajain.me) -

๐Ÿง  MLfromScratch

- -![Python](https://img.shields.io/badge/Python-3.8+-blue?style=flat-square&logo=python&logoColor=white) -![NumPy](https://img.shields.io/badge/NumPy-Library-green?style=flat-square&logo=numpy&logoColor=white) -![License](https://img.shields.io/github/license/adityajn105/MLfromScratch?style=flat-square) -![GitHub contributors](https://img.shields.io/github/contributors/adityajn105/MLfromScratch?style=flat-square) - -
- -**MLfromScratch** is a library designed to help you learn and understand machine learning algorithms by building them from scratch using only `NumPy`! No black-box libraries, no hidden magicโ€”just pure Python and math. It's perfect for beginners who want to see what's happening behind the scenes of popular machine learning models. - -๐Ÿ”— **[Explore the Documentation](https://github.com/adityajn105/MLfromScratch/wiki)** - ---- - -## ๐Ÿ“ฆ Package Structure - -Our package structure is designed to look like `scikit-learn`, so if you're familiar with that, you'll feel right at home! - -### ๐Ÿ”ง Modules and Algorithms (Explained for Beginners)

-#### ๐Ÿ“ˆ **1. Linear Models (`linear_model`)** - -- **LinearRegression** ![Linear Regression](https://img.shields.io/badge/Linear%20Regression-blue?style=flat-square&logo=mathworks): Imagine drawing a straight line through a set of points to predict future values. Linear Regression helps in predicting something like house prices based on size. - -- **SGDRegressor** ![SGD](https://img.shields.io/badge/SGD-Fast-blue?style=flat-square&logo=rocket): A fast way to do Linear Regression using Stochastic Gradient Descent. Perfect for large datasets. - -- **SGDClassifier** ![Classifier](https://img.shields.io/badge/SGD-Classifier-yellow?style=flat-square&logo=target): A classification algorithm predicting categories like "spam" or "not spam."

- - -#### ๐ŸŒณ **2. Decision Trees (`tree`)** - -- **DecisionTreeClassifier** ![Tree](https://img.shields.io/badge/Tree-Classifier-brightgreen?style=flat-square&logo=leaf): Think of this as playing 20 questions to guess something. A decision tree asks yes/no questions to classify data. - -- **DecisionTreeRegressor** ![Regressor](https://img.shields.io/badge/Tree-Regressor-yellowgreen?style=flat-square&logo=mathworks): Predicts a continuous number (like temperature tomorrow) based on input features.

- - -#### ๐Ÿ‘ฅ **3. K-Nearest Neighbors (`neighbors`)** - -- **KNeighborsClassifier** ![KNN](https://img.shields.io/badge/KNN-Classifier-9cf?style=flat-square&logo=people-arrows): Classifies data by looking at the 'k' nearest neighbors to the new point. - -- **KNeighborsRegressor** ![KNN](https://img.shields.io/badge/KNN-Regressor-lightblue?style=flat-square&logo=chart-bar): Instead of classifying, it predicts a number based on nearby data points.

- - -#### ๐Ÿงฎ **4. Naive Bayes (`naive_bayes`)** - -- **GaussianNB** ![Gaussian](https://img.shields.io/badge/GaussianNB-fast-brightgreen?style=flat-square&logo=matrix): Works great for data that follows a normal distribution (bell-shaped curve). - -- **MultinomialNB** ![Multinomial](https://img.shields.io/badge/MultinomialNB-text-ff69b4?style=flat-square&logo=alphabetical-order): Ideal for text classification tasks like spam detection.

- - -#### ๐Ÿ“Š **5. Clustering (`cluster`)** - -- **KMeans** ![KMeans](https://img.shields.io/badge/KMeans-Clustering-ff69b4?style=flat-square&logo=group): Groups data into 'k' clusters based on similarity. - -- **AgglomerativeClustering** ![Agglomerative](https://img.shields.io/badge/Agglomerative-Hierarchical-blueviolet?style=flat-square&logo=chart-bar): Clusters by merging similar points until a single large cluster is formed. - -- **DBSCAN** ![DBSCAN](https://img.shields.io/badge/DBSCAN-Noise%20Filtering-blue?style=flat-square&logo=waves): Groups points close to each other and filters out noise. No need to specify the number of clusters! - -- **MeanShift** ![MeanShift](https://img.shields.io/badge/MeanShift-Clustering-yellowgreen?style=flat-square&logo=sort-amount-up): Shifts data points toward areas of high density to find clusters.

- - -#### ๐ŸŒฒ **6. Ensemble Methods (`ensemble`)** - -- **RandomForestClassifier** ![RandomForest](https://img.shields.io/badge/Random%20Forest-Classifier-brightgreen?style=flat-square&logo=forest): Combines multiple decision trees to make stronger decisions. - -- **RandomForestRegressor** ![RandomForest](https://img.shields.io/badge/Random%20Forest-Regressor-lightblue?style=flat-square&logo=tree): Predicts continuous values using an ensemble of decision trees. - -- **GradientBoostingClassifier** ![GradientBoosting](https://img.shields.io/badge/Gradient%20Boosting-Classifier-9cf?style=flat-square&logo=chart-line): Builds trees sequentially, each correcting errors made by the last. - -- **VotingClassifier** ![Voting](https://img.shields.io/badge/Voting-Classifier-orange?style=flat-square&logo=thumbs-up): Combines the results of multiple models to make a final prediction.

- - -#### ๐Ÿ“ **7. Metrics (`metrics`)** - -Measure your modelโ€™s performance: - -- **accuracy_score** ![Accuracy](https://img.shields.io/badge/Accuracy-High-brightgreen?style=flat-square&logo=bar-chart): Measures how many predictions your model got right. - -- **f1_score** ![F1 Score](https://img.shields.io/badge/F1_Score-Balance-lightgreen?style=flat-square&logo=scales): Balances precision and recall into a single score. - -- **roc_curve** ![ROC](https://img.shields.io/badge/ROC-Curve-orange?style=flat-square&logo=wave): Shows the trade-off between true positives and false positives.

- - -#### โš™๏ธ **8. Model Selection (`model_selection`)** - -- **train_test_split** ![TrainTestSplit](https://img.shields.io/badge/Train_Test_Split-blueviolet?style=flat-square&logo=arrows): Splits your data into training and test sets. - -- **KFold** ![KFold](https://img.shields.io/badge/KFold-CrossValidation-blue?style=flat-square&logo=matrix): Trains the model in 'k' iterations for better validation.

- - -#### ๐Ÿ” **9. Preprocessing (`preprocessing`)** - -- **StandardScaler** ![StandardScaler](https://img.shields.io/badge/StandardScaler-Normalization-ff69b4?style=flat-square&logo=arrows-v): Standardizes your data so it has a mean of 0 and a standard deviation of 1. - -- **LabelEncoder** ![LabelEncoder](https://img.shields.io/badge/LabelEncoder-Classification-yellow?style=flat-square&logo=code): Converts text labels into numerical labels (e.g., "cat", "dog").

- - -#### ๐Ÿงฉ **10. Dimensionality Reduction (`decomposition`)** - -Dimensionality Reduction helps in simplifying data while retaining most of its valuable information. By reducing the number of features (dimensions) in a dataset, it makes data easier to visualize and speeds up machine learning algorithms. - -- **PCA (Principal Component Analysis)** ![PCA](https://img.shields.io/badge/PCA-PrincipalComponentAnalysis-orange?style=flat-square&logo=chart-line): PCA reduces the number of dimensions by finding new uncorrelated variables called principal components. It projects your data onto a lower-dimensional space while retaining as much variance as possible.

- - **How It Works**: PCA finds the axes (principal components) that maximize the variance in your data. The first principal component captures the most variance, and each subsequent component captures progressively less. - - **Use Case**: Use PCA when you have many features, and you want to simplify your dataset for better visualization or faster computation. It is particularly useful when features are highly correlated. - ---- - -## ๐ŸŽฏ Why Use This Library? - -- **Learning-First Approach**: If you're a beginner and want to *understand* machine learning, this is the library for you. No hidden complexity, just code. -- **No Hidden Magic**: Everything is written from scratch, so you can see exactly how each algorithm works. -- **Lightweight**: Uses only `NumPy`, making it fast and easy to run.

- -## ๐Ÿš€ Getting Started - -```bash -# Clone the repository -git clone https://github.com/adityajn105/MLfromScratch.git - -# Navigate to the project directory -cd MLfromScratch - -# Install the required dependencies -pip install -r requirements.txt -``` -

- -## ๐Ÿ‘จโ€๐Ÿ’ป Author -This project is maintained by [Aditya Jain](https://adityajain.me/)

- -## ๐Ÿง‘โ€๐Ÿ’ป Contributors -Constributor: [Subrahmanya Gaonkar](https://github.com/negativenagesh) - -We welcome contributions from everyone, especially beginners! If you're new to open-source, donโ€™t worryโ€”feel free to ask questions, open issues, or submit a pull request.

- -## ๐Ÿค How to Contribute -1. Fork the repository. -2. Create a new branch (git checkout -b feature-branch). -3. Make your changes and commit (git commit -m "Added new feature"). -4. Push the changes (git push origin feature-branch). -5. Submit a pull request and explain your changes.

- -## ๐Ÿ“„ License -This project is licensed under the [MIT License](https://github.com/adityajn105/MLfromScratch/blob/master/LICENSE) - see the LICENSE file for details. \ No newline at end of file