--- tags: aliases: date: 2025-03-02 time: 20:53:47 description: --- # Project Structure ``` mlpredictor/ │ ├── mlpredictor/ │ ├── __init__.py │ ├── model.py │ ├── tests/ │ ├── test_model.py │ ├── LICENSE ├── README.md ├── pyproject.toml └── .gitignore ``` ## Content of `setup.py` ``` from setuptools import setup setup( name='mypackage', version='0.1', packages=['mypackage'], install_requires=['requests']) ``` ## Content of `pyproject.toml` ```toml [build-system] requires = ["setuptools>=42", "wheel"] build-backend = "setuptools.build_meta" [project] name = "mlpredictor" version = "0.1.0" description = "A simple machine learning package using scikit-learn" authors = [ {name = "Ebrahim", email = "ebimsv0501@gmail.com"} ] license = {text = "MIT"} readme = "README.md" requires-python = ">=3.6" dependencies = [ "scikit-learn>=1.0", ] [project.urls] "Homepage" = "https://github.com/ebimsv/mlpredictor" ``` - **[build-system]**: Specifies the build system requirements (i.e., using `setuptools` and `wheel`). - **[project]**: Contains metadata about the package, like name, version, description, and dependencies. ## Content of `README.md`

# MLPredictor  
  
MLPredictor is a simple machine learning package that trains a RandomForest model using the Iris dataset and enables users to make predictions. The package is built using `scikit-learn` and is intended as a demonstration of packaging Python machine learning projects for distribution.  
  
## Features  
  
- Train a RandomForestClassifier on the Iris dataset.  
- Make predictions on new data after training.  
- Save and load trained models.  
  
## Installation  
  
You can install the package via **PyPI** or from **source**.  
  
### Install from PyPI  
  
```bash  
pip install mlpredictor  
```  
  
### Install from Source (GitHub)  
  
```bash  
git clone https://github.com/ebimsv/mlpredictor.git  
cd mlpredictor  
pip install .  
```  
  
## Usage  
  
After installation, you can use `MLPredictor` to train a model and make predictions.  
  
### Example: Training and Making Predictions  
  
```python  
from mlpredictor import MLPredictor  
  
# Initialize the predictor  
predictor = MLPredictor()  
  
# Train the model on the Iris dataset  
predictor.train()  
  
# Make a prediction on a sample input  
sample_input = [5.1, 3.5, 1.4, 0.2]  
prediction = predictor.predict(sample_input)  
  
print(f"Predicted class: {prediction}")  
```
## Content of `.gitignore` ``` *.pyc __pycache__/ *.pkl dist/ build/ ``` # Test ## Content of `tests/test_model.py` ```python import pytest from mlpredictor import MLPredictor def test_train_and_predict(): model = MLPredictor() model.train() result = model.predict([5.1, 3.5, 1.4, 0.2]) assert len(result) == 1 if __name__ == "__main__": pytest.main() ``` ## Run test ```bash pytest tests ``` # Install ## Test locally ``` pip install . ``` ## Publish on PyPI 1. **Install 'Twine' and 'build'**: ``` pip install twine build ``` 2. **Build the Package**: ``` python -m build ``` 3. **Upload to PyPI** ``` twine upload dist/* ``` # 參考來源 - [Building Python Packages. A Comprehensive Guide to setup.py and… | by Ebrahim Mousavi | Medium](https://medium.com/@ebimsv/building-python-packages-07fbfbb959a9)