## 📦 `Models` Class – Regression Models Playground

This class helps you quickly test different **regression algorithms** (OLS, SGD, BGD) on any DataFrame and target.

---


### ✂️ `split_data(ratio=0.8, randomState=42)`

Splits data into train/test based on ratio.
Uses `self.target_column` to separate X and y.

---

### 📈 `Linear_Regression_OLS(get_equation=False, plot=False, accuracy=True)`

Trains simple (1D) Linear Regression using **Ordinary Least Squares**.

* `get_equation`: print learned line
* `plot`: visualize
* `accuracy`: print score

---

### 📊 `MLinear_Regression_OLS(get_equation=False, plot=False, accuracy=True)`

Multi-feature version of OLS Linear Regression.

---

### ⚡ `MLinear_Regression_SGD(epochs=100, learning_rate=0.01, plot=False, accuracy=True, get_equation=False)`

Multi-feature **SGD** Linear Regression.
Trains with Stochastic Gradient Descent.

---

### 🌀 `Linear_Regression_BGD(epochs=100, learning_rate=0.01, plot=False, accuracy=True, get_equation=False)`

Simple (1D) Linear Regression using **Batch Gradient Descent**.

---

### 💪 `MLinear_Regression_BGD(epochs=100, learning_rate=0.01, plot=False, accuracy=True, get_equation=False)`

Multi-feature BGD-based Linear Regression.

---

### 🧼 `Standard_Scale(features=None)`

Standardizes features (z-score normalization).
Applies to entire DataFrame if no features are specified.
Re-splits data after scaling.

---

### 🚀 `Linear_Regression_SGD(epochs=100, learning_rate=0.01, plot=False, accuracy=True, get_equation=False)`

Simple (1D) Linear Regression using **SGD**.

---

### 📤 `Extract_Data()`

Returns `(X_train, X_test, y_train, y_test)` — useful for external use.

---

### 🆕 `Set_DF(newDF, target_column)`

Reset the class with a new DataFrame and target column.

---

### 🔀 `Select_Model(model=None, batch_size=None, method=None, epochs=100, learning_rate=0.01, plot=False, accuracy=True, get_equation=False)`

Unified interface to select and run any regression model or method.

* `model`: Choose `'linear_regression'` (`'lr'`) or `'multi_linear_regression'` (`'mlr'`)
* `method`: Specify algorithm (`'ols'`, `'bgd'`, `'sgd'`, `'mgbd'`)
* `batch_size`: For mini-batch gradient descent (`'mgbd'`)
* Other arguments are passed to the underlying method

Raises `ValueError` if model or method is unknown.