An open API service indexing awesome lists of open source software.

https://github.com/marcinwitnik/iris-classifier

Klasyfikator gatunków Iris z użyciem TensorFlow i Keras
https://github.com/marcinwitnik/iris-classifier

ai data-science deep-learning iris-classification keras machine-learning neural-network python scikit-learn tensorflow

Last synced: 7 days ago
JSON representation

Klasyfikator gatunków Iris z użyciem TensorFlow i Keras

Awesome Lists containing this project

README

          


Klasyfikator Kwiatów Iris w TensorFlow

Ten projekt to prosty i funkcjonalny **klasyfikator gatunków kwiatów Iris** stworzony z użyciem sieci neuronowych (TensorFlow/Keras). Wykorzystuje znany zbiór danych Iris do trenowania modelu, który przewiduje gatunek na podstawie cech takich jak długość i szerokość działek kielicha oraz płatków. Projekt zawiera podział na moduły odpowiedzialne za wczytywanie danych, budowę modelu, trening, ewaluację oraz predykcję. Przewidziano również integrację z TensorBoardem w celu monitorowania procesu uczenia.

---

## Technologie i środowisko

- **Język:** [![Python](https://img.shields.io/badge/Python-3776AB?style=flat&logo=python&logoColor=white)](https://docs.python.org/3/)
- **Środowisko IDE:** [![PyCharm](https://img.shields.io/badge/PyCharm-009873?style=flat&logo=pycharm&logoColor=white)](https://www.jetbrains.com/pycharm/)
- **Biblioteki:**
- [![TensorFlow](https://img.shields.io/badge/TensorFlow-FF6F00?style=flat&logo=tensorflow&logoColor=white)](https://www.tensorflow.org/learn) – budowa i trening modelu neuronowego
- [![scikit-learn](https://img.shields.io/badge/scikit--learn-F7931E?style=flat&logo=scikitlearn&logoColor=white)](https://scikit-learn.org/stable/user_guide.html) – ładowanie zbioru danych Iris, podział na zbiór treningowy i testowy, kodowanie etykiet
- [![NumPy](https://img.shields.io/badge/NumPy-013243?style=flat&logo=numpy&logoColor=white)](https://numpy.org/doc/) – przygotowanie danych wejściowych do predykcji
- [![Pandas](https://img.shields.io/badge/Pandas-150458?style=flat&logo=pandas&logoColor=white)](https://pandas.pydata.org/docs/) – przekształcenie zbioru danych na DataFrame
- [![Matplotlib](https://img.shields.io/badge/Matplotlib-11557C?style=flat&logo=matplotlib&logoColor=white)](https://matplotlib.org/stable/users/index.html) – wizualizacja dokładności i strat modelu
- [![datetime](https://img.shields.io/badge/datetime-4B8BBE?style=flat&logoColor=white)](https://docs.python.org/3/library/datetime.html) – generowanie unikalnych ścieżek logów
- [![os](https://img.shields.io/badge/os-306998?style=flat&logoColor=white)](https://docs.python.org/3/library/os.html) – obsługa logów i katalogów (pośrednio przez TensorFlow)

---

Funkcje programu (kliknij, aby rozwinąć)

---

📄 load_data.py – przygotowanie danych (kliknij, aby rozwinąć)

Ten moduł odpowiada za przygotowanie zbioru danych do treningu:

- **`get_data()`**
Główna funkcja:
- Wczytuje zbiór Iris z `sklearn.datasets.load_iris()`.
- Tworzy `DataFrame` z kolumnami cech i etykietą „species”.
- Zamienia indeksy klas (0, 1, 2) na etykiety tekstowe (np. *setosa*).
- Koduje etykiety do wartości numerycznych za pomocą `LabelEncoder`.
- Dzieli dane na `train/test` za pomocą `train_test_split()`.

Zwracane dane:
```python
X_train, X_test, y_train, y_test, encoder
```

---

📄 build_model.py – konstrukcja modelu (kliknij, aby rozwinąć)

Moduł zawiera funkcję:

- **`build_model()`**
- Tworzy model sekwencyjny `tf.keras.Sequential` z 3 warstwami:
- 2 warstwy ukryte z 10 neuronami i aktywacją `relu`.
- 1 warstwa wyjściowa (3 klasy) z `softmax`.
- Kompiluje model z:
- Optymalizatorem `adam`
- Funkcją straty: `sparse_categorical_crossentropy`
- Metryką: `accuracy`

Zwraca gotowy do treningu obiekt modelu `tf.keras.Model`.

---

📄 train.py – trenowanie i wizualizacja (kliknij, aby rozwinąć)

- **`train_model(model, X_train, y_train)`**
Funkcja realizująca:
- Trening modelu przez 50 epok z walidacją (`validation_split=0.2`).
- Konfigurację **TensorBoard** z dynamiczną nazwą folderu (`logs/fit/YYYYMMDD-HHMMSS`).
- Rejestrowanie logów do plików `.tfevents...`.

✅ Wykresy generowane przez `matplotlib`:
- Dokładność (`accuracy`, `val_accuracy`)
- Strata (`loss`, `val_loss`)

Funkcja zwraca obiekt `history` (dane do dalszej analizy wyników).

---

📄 evaluate.py – ocena modelu (kliknij, aby rozwinąć)

- **`evaluate_model(model, X_test, y_test)`**
- Wykonuje ewaluację modelu na zbiorze testowym.
- Zwraca metryki `loss` i `accuracy`.
- Wynik jest wypisywany w czytelnej formie z dokładnością do 2 miejsc po przecinku.

---

📄 predict.py – klasyfikacja nowych próbek (kliknij, aby rozwinąć)

- **`predict_species(model, encoder, input_data)`**
- Przygotowuje dane wejściowe (`np.array([[...]])`).
- Używa modelu do predykcji (`model.predict()`).
- Wybiera indeks największego prawdopodobieństwa (`tf.argmax()`).
- Dekoduje etykietę gatunku za pomocą `encoder.inverse_transform()`.

Funkcja wyświetla komunikat z nazwą przewidzianego gatunku (`Iris-setosa`, `Iris-versicolor`, `Iris-virginica`).

---

📄 main.py – główny punkt startowy programu (kliknij, aby rozwinąć)

- Funkcja `main()` uruchamia cały pipeline:
1. Załadowanie i przygotowanie danych (`get_data`)
2. Budowa modelu (`build_model`)
3. Trening (`train_model`)
4. Ewaluacja (`evaluate_model`)
5. Predykcja przykładowej próbki (`predict_species`)

Skrypt jest gotowy do uruchomienia przez terminal lub PyCharma:
```python
if __name__ == "__main__":
main()
```

---

📄 dnn_estimator_iris.py – uproszczony skrypt all-in-one (kliknij, aby rozwinąć)

Ten plik zawiera:
- Jednoetapowy pipeline w jednym skrypcie (bez modularnego podziału).
- Przykład zbudowania modelu `Sequential` z większą liczbą neuronów.
- Trenowanie i walidacja przez 50 epok.
- Predykcję próbki `np.array([[5.1, 3.5, 1.4, 0.2]])`.

Użyte narzędzia:
- `LabelBinarizer` zamiast `LabelEncoder`
- `categorical_crossentropy` (zamiast sparse)

Plik przydatny jako demo lub sandbox do eksperymentów.

---

🧰 Instalacja i uruchomienie – wymagane komendy (kliknij, aby rozwinąć)

Aby uruchomić projekt lokalnie, należy wykonać następujące kroki:

1. **Utworzenie wirtualnego środowiska (opcjonalnie):**
```bash
python -m venv .venv
source .venv/bin/activate # Linux/macOS
.venv\Scripts\activate # Windows
```

2. **Instalacja zależności:**
```bash
pip install tensorflow scikit-learn pandas matplotlib
```

3. **(Opcjonalne) Uruchomienie TensorBoarda:**
```bash
tensorboard --logdir=logs/fit
```

4. **Uruchomienie programu:**
```bash
python main.py
```

---

Podgląd działania (kliknij, aby rozwinąć)

Poniżej przykładowe wyniki działania programu:

![Podgląd działania](images/result1.png)
![Podgląd działania](images/result2.png)
![Podgląd działania](images/result3.png)