Metadata-Version: 2.4
Name: cl1-solutions
Version: 1.0.0
Summary: All-in-one CLI and Python package to retrieve Jupyter Notebook solutions and datasets for all CL1 problem statements.
Home-page: https://github.com/example/cl1-solutions
Author: CL1 Contributor
Author-email: CL1 Contributor <developer@example.com>
License: MIT
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Education
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy
Requires-Dist: pandas
Requires-Dist: scikit-learn
Requires-Dist: matplotlib
Requires-Dist: seaborn
Requires-Dist: scipy
Requires-Dist: openpyxl
Dynamic: author
Dynamic: home-page
Dynamic: license-file
Dynamic: requires-python

# CL1 Solutions (`cl1-solutions`)

[![PyPI version](https://img.shields.io/pypi/v/cl1-solutions.svg)](https://pypi.org/project/cl1-solutions/)
[![Python Versions](https://img.shields.io/pypi/pyversions/cl1-solutions.svg)](https://pypi.org/project/cl1-solutions/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

> **All-in-One CLI & PyPI Package** to retrieve complete, ready-to-run Jupyter Notebook solutions (`.ipynb`) and datasets for all 13 Computational Lab 1 / Data Science & Machine Learning assignments in **one single command** (numbered cleanly from 1 to 13 with no separate sub-parts).

---

## ⚡ Quick Start

### 1. Install via pip

Once published to PyPI:
```bash
pip install cl1-solutions
```

Or install locally from source:
```bash
pip install .
```

---

### 2. Retrieve All Solutions in One Command

To extract all 13 Jupyter Notebooks and all sample datasets into your project:

```bash
cl1-get
```

*That's it!* All 13 notebooks and required datasets will be neatly extracted into `./cl1_solutions/`.

You can also specify a custom destination directory:
```bash
cl1-get all --dest ./my_cl1_notebooks
```

---

## 💻 CLI Commands & Usage

| Command | Action |
|---|---|
| `cl1-get` | **Extract all 13 notebooks and all datasets** (default action) |
| `cl1-get list` | List all 13 problem statements, categories, and matching notebook files |
| `cl1-get 1` | Extract only the notebook for Problem 1 (`01_Feature_Transformation.ipynb`) |
| `cl1-get 6` | Extract only the notebook for Problem 6 (`06_Reinforcement_Learning.ipynb`) |
| `cl1-get 13` | Extract only the notebook for Problem 13 (`13_Time_Series_Analysis.ipynb`) |
| `cl1-get info 6` | View detailed description and task list for Problem 6 |
| `cl1-get data` | Extract only the datasets folder |
| `cl1-get pypi-help` | Print instructions for building and publishing to PyPI |
| `python -m cl1_solutions` | Python module execution alias for all CLI commands |

---

## 📚 Complete Catalog of Included Problem Statements (1 to 13)

Every single assignment from 1 to 13 has a dedicated, complete, and thoroughly documented `.ipynb` notebook:

| No. | Category / Topic | Notebook File | Datasets | Key Methods & Contents |
|---|---|---|---|---|
| **1** | Feature Transformation | `01_Feature_Transformation.ipynb` | `Wine.csv`, `Iris.csv` | **Part A:** PCA for Dimensionality Reduction on Wine. **Part B:** LDA on Iris dataset for flower classification. |
| **2** | Regression Analysis | `02_Regression_Analysis.ipynb` | `uber_fares_sample.csv`, `diabetes.csv` | **Part A:** Uber Ride Price Prediction (Linear, Ridge, Lasso, R2, RMSE). **Part B:** Diabetes Univariate & Bivariate analysis. |
| **3** | Classification Analysis | `03_Classification_Analysis.ipynb` | Built-in Digits, `Social_Network_Ads.csv` | **Part A:** SVM for Handwritten Digits (0-9). **Part B:** KNN on Social Network Ads (Confusion Matrix, Precision, Recall). |
| **4** | Clustering Analysis | `04_Clustering_Analysis.ipynb` | `Iris.csv`, `cc_data_sample.csv` | **Part A:** K-Means with Elbow Method on Iris. **Part B:** K-Medoids (PAM) with Silhouette Method on Credit Card data. |
| **5** | Ensemble Learning | `05_Ensemble_Learning.ipynb` | `car_evaluation.csv`, `Iris.csv` | **Part A:** Random Forest Classifier for Car Safety. **Part B:** Multi-Ensemble Comparison (Voting, AdaBoost, GBM, XGBoost). |
| **6** | Reinforcement Learning | `06_Reinforcement_Learning.ipynb` | GridWorld, Taxi, Tic-Tac-Toe | **Part A:** Maze Exploration (Q-Learning). **Part B:** Taxi Problem (Taxi-v3). **Part C:** Tic-Tac-Toe Game Agent. |
| **7** | Data Formats | `07_Data_Loading_Storage.ipynb` | `sales_sample` (CSV, Excel, JSON) | Load 3 formats, quality check, deduplication, unified dataframe, derived metrics, Bar/Pie/Box plots. |
| **8** | Web APIs | `08_Interacting_With_Web_APIs.ipynb` | OpenWeatherMap API | Live/Mock weather pipeline, Temp/Humidity/Wind/Precip extraction, modeling, geospatial & correlation plots. |
| **9** | Data Cleaning | `09_Data_Cleaning_Preparation.ipynb` | `Telecom_Customer_Churn.csv` | 11 Tasks: Null imputation, Deduplication, Type conversions, Outlier capping, Tenure cohorts, Standardized split. |
| **10** | Data Wrangling | `10_Data_Wrangling.ipynb` | `RealEstate_Prices.csv` | 7 Tasks: Sanitize column headers, Demographic merge, Subsetting, One-hot encoding, Price/sqft metrics, Log transform. |
| **11** | Data Visualization | `11_Data_Visualization.ipynb` | `City_Air_Quality.csv` | 9 Matplotlib tasks: AQI threshold bands, Pollutant subplots (PM2.5, PM10, CO), Monthly bar, Box/Violin, Bubble chart. |
| **12** | Data Aggregation | `12_Data_Aggregation.ipynb` | `Retail_Sales_Data.csv` | 8 Tasks: Regional total sales, Bar/Pie distribution, Top region ranking, Region x Category matrix, Stacked/Grouped bars. |
| **13** | Time Series | `13_Time_Series_Analysis.ipynb` | `Stock_Prices.csv` | 8 Tasks: Datetime index, Price/Volume trends, 20/50 SMA & EMA, Seasonality decomposition, Correlation, ARIMA forecast. |

---

## 🐍 Python Library API

You can also use this package programmatically inside any Python script:

```python
import cl1_solutions

# List all problem descriptions
problems = cl1_solutions.list_all_problems()
for p in problems:
    print(p["id"], p["title"])

# Retrieve all notebooks and datasets to a custom folder
cl1_solutions.retrieve_all(dest_dir="./my_folder")

# Retrieve only Problem 6 (Reinforcement Learning)
cl1_solutions.copy_notebooks("./my_folder", problem_ids=["6"])
```

---

## 🚀 Publishing to PyPI (How-To Guide)

To publish this package to the Python Package Index (PyPI) under your account:

### 1. Build the Package
```bash
python -m build
```
This generates:
- Source distribution (`dist/cl1_solutions-1.0.0.tar.gz`)
- Binary wheel (`dist/cl1_solutions-1.0.0-py3-none-any.whl`)

### 2. Verify Archives
```bash
twine check dist/*
```

### 3. Upload to PyPI (Production)
```bash
twine upload dist/*
```
Enter your PyPI API token (`__token__` and your API token password) when prompted.

---

## 📝 License

Distributed under the **MIT License**. Feel free to use, modify, and distribute.
