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
- Host: GitHub
- URL: https://github.com/marcinwitnik/iris-classifier
- Owner: marcinwitnik
- Created: 2025-07-17T13:28:35.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2025-07-17T14:08:49.000Z (11 months ago)
- Last Synced: 2025-07-17T16:18:36.289Z (11 months ago)
- Topics: ai, data-science, deep-learning, iris-classification, keras, machine-learning, neural-network, python, scikit-learn, tensorflow
- Language: Python
- Homepage:
- Size: 122 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
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:** [](https://docs.python.org/3/)
- **Środowisko IDE:** [](https://www.jetbrains.com/pycharm/)
- **Biblioteki:**
- [](https://www.tensorflow.org/learn) – budowa i trening modelu neuronowego
- [](https://scikit-learn.org/stable/user_guide.html) – ładowanie zbioru danych Iris, podział na zbiór treningowy i testowy, kodowanie etykiet
- [](https://numpy.org/doc/) – przygotowanie danych wejściowych do predykcji
- [](https://pandas.pydata.org/docs/) – przekształcenie zbioru danych na DataFrame
- [](https://matplotlib.org/stable/users/index.html) – wizualizacja dokładności i strat modelu
- [](https://docs.python.org/3/library/datetime.html) – generowanie unikalnych ścieżek logów
- [](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:


