{"id":50740211,"url":"https://github.com/marcinwitnik/iris-classifier","last_synced_at":"2026-06-10T16:32:14.488Z","repository":{"id":304979803,"uuid":"1021491157","full_name":"marcinwitnik/iris-classifier","owner":"marcinwitnik","description":"Klasyfikator gatunków Iris z użyciem TensorFlow i Keras ","archived":false,"fork":false,"pushed_at":"2025-07-17T14:08:49.000Z","size":125,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-17T16:18:36.289Z","etag":null,"topics":["ai","data-science","deep-learning","iris-classification","keras","machine-learning","neural-network","python","scikit-learn","tensorflow"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/marcinwitnik.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-17T13:28:35.000Z","updated_at":"2025-07-17T14:15:04.000Z","dependencies_parsed_at":"2025-07-17T19:25:36.409Z","dependency_job_id":"f683af8d-a96b-4ee1-9818-de66cd554cc2","html_url":"https://github.com/marcinwitnik/iris-classifier","commit_stats":null,"previous_names":["marcinwitnik/iris-classifier"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/marcinwitnik/iris-classifier","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcinwitnik%2Firis-classifier","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcinwitnik%2Firis-classifier/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcinwitnik%2Firis-classifier/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcinwitnik%2Firis-classifier/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/marcinwitnik","download_url":"https://codeload.github.com/marcinwitnik/iris-classifier/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcinwitnik%2Firis-classifier/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34161283,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-10T02:00:07.152Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","data-science","deep-learning","iris-classification","keras","machine-learning","neural-network","python","scikit-learn","tensorflow"],"created_at":"2026-06-10T16:32:08.912Z","updated_at":"2026-06-10T16:32:14.480Z","avatar_url":"https://github.com/marcinwitnik.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\u003cimg src=\"https://img.icons8.com/ios-filled/50/FFFFFF/artificial-intelligence.png\" height=\"22px\" /\u003e Klasyfikator Kwiatów Iris w TensorFlow\u003c/h1\u003e\r\n\r\nTen 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.\r\n\r\n---\r\n\r\n## \u003cimg src=\"https://img.icons8.com/pastel-glyph/64/FFFFFF/code--v2.png\" height=\"22px\" /\u003e Technologie i środowisko\r\n\r\n- **Język:**  [![Python](https://img.shields.io/badge/Python-3776AB?style=flat\u0026logo=python\u0026logoColor=white)](https://docs.python.org/3/) \r\n- **Środowisko IDE:** [![PyCharm](https://img.shields.io/badge/PyCharm-009873?style=flat\u0026logo=pycharm\u0026logoColor=white)](https://www.jetbrains.com/pycharm/)  \r\n- **Biblioteki:**  \r\n  - [![TensorFlow](https://img.shields.io/badge/TensorFlow-FF6F00?style=flat\u0026logo=tensorflow\u0026logoColor=white)](https://www.tensorflow.org/learn) – budowa i trening modelu neuronowego  \r\n  - [![scikit-learn](https://img.shields.io/badge/scikit--learn-F7931E?style=flat\u0026logo=scikitlearn\u0026logoColor=white)](https://scikit-learn.org/stable/user_guide.html) – ładowanie zbioru danych Iris, podział na zbiór treningowy i testowy, kodowanie etykiet  \r\n  - [![NumPy](https://img.shields.io/badge/NumPy-013243?style=flat\u0026logo=numpy\u0026logoColor=white)](https://numpy.org/doc/) – przygotowanie danych wejściowych do predykcji  \r\n  - [![Pandas](https://img.shields.io/badge/Pandas-150458?style=flat\u0026logo=pandas\u0026logoColor=white)](https://pandas.pydata.org/docs/) – przekształcenie zbioru danych na DataFrame  \r\n  - [![Matplotlib](https://img.shields.io/badge/Matplotlib-11557C?style=flat\u0026logo=matplotlib\u0026logoColor=white)](https://matplotlib.org/stable/users/index.html) – wizualizacja dokładności i strat modelu  \r\n  - [![datetime](https://img.shields.io/badge/datetime-4B8BBE?style=flat\u0026logoColor=white)](https://docs.python.org/3/library/datetime.html) – generowanie unikalnych ścieżek logów  \r\n  - [![os](https://img.shields.io/badge/os-306998?style=flat\u0026logoColor=white)](https://docs.python.org/3/library/os.html) – obsługa logów i katalogów (pośrednio przez TensorFlow)  \r\n\r\n---\r\n\u003cdetails\u003e\r\n  \u003csummary\u003e\u003cimg src=\"https://img.icons8.com/ios-filled/50/FFFFFF/pin.png\" height=\"22px\"/\u003e Funkcje programu (kliknij, aby rozwinąć)\u003c/summary\u003e\r\n\r\n---\r\n\r\n\u003cdetails\u003e\r\n  \u003csummary\u003e📄 \u003cstrong\u003e\u003cspan style=\"color:#4a90e2\"\u003eload_data.py\u003c/span\u003e\u003c/strong\u003e – przygotowanie danych (kliknij, aby rozwinąć)\u003c/summary\u003e\r\n\r\nTen moduł odpowiada za przygotowanie zbioru danych do treningu:\r\n\r\n- **`get_data()`**  \r\n  Główna funkcja:\r\n  - Wczytuje zbiór Iris z `sklearn.datasets.load_iris()`.\r\n  - Tworzy `DataFrame` z kolumnami cech i etykietą „species”.\r\n  - Zamienia indeksy klas (0, 1, 2) na etykiety tekstowe (np. *setosa*).\r\n  - Koduje etykiety do wartości numerycznych za pomocą `LabelEncoder`.\r\n  - Dzieli dane na `train/test` za pomocą `train_test_split()`.\r\n\r\nZwracane dane:\r\n```python\r\nX_train, X_test, y_train, y_test, encoder\r\n```\r\n\r\n\u003c/details\u003e\r\n\r\n---\r\n\r\n\u003cdetails\u003e\r\n  \u003csummary\u003e📄 \u003cstrong\u003e\u003cspan style=\"color:#7b8d8e\"\u003ebuild_model.py\u003c/span\u003e\u003c/strong\u003e – konstrukcja modelu (kliknij, aby rozwinąć)\u003c/summary\u003e\r\n\r\nModuł zawiera funkcję:\r\n\r\n- **`build_model()`**\r\n  - Tworzy model sekwencyjny `tf.keras.Sequential` z 3 warstwami:\r\n    - 2 warstwy ukryte z 10 neuronami i aktywacją `relu`.\r\n    - 1 warstwa wyjściowa (3 klasy) z `softmax`.\r\n  - Kompiluje model z:\r\n    - Optymalizatorem `adam`\r\n    - Funkcją straty: `sparse_categorical_crossentropy`\r\n    - Metryką: `accuracy`\r\n\r\nZwraca gotowy do treningu obiekt modelu `tf.keras.Model`.\r\n\r\n\u003c/details\u003e\r\n\r\n---\r\n\r\n\u003cdetails\u003e\r\n  \u003csummary\u003e📄 \u003cstrong\u003e\u003cspan style=\"color:#9b59b6\"\u003etrain.py\u003c/span\u003e\u003c/strong\u003e – trenowanie i wizualizacja (kliknij, aby rozwinąć)\u003c/summary\u003e\r\n\r\n- **`train_model(model, X_train, y_train)`**  \r\n  Funkcja realizująca:\r\n  - Trening modelu przez 50 epok z walidacją (`validation_split=0.2`).\r\n  - Konfigurację **TensorBoard** z dynamiczną nazwą folderu (`logs/fit/YYYYMMDD-HHMMSS`).\r\n  - Rejestrowanie logów do plików `.tfevents...`.\r\n\r\n✅ Wykresy generowane przez `matplotlib`:\r\n- Dokładność (`accuracy`, `val_accuracy`)\r\n- Strata (`loss`, `val_loss`)\r\n\r\nFunkcja zwraca obiekt `history` (dane do dalszej analizy wyników).\r\n\r\n\u003c/details\u003e\r\n\r\n---\r\n\r\n\u003cdetails\u003e\r\n  \u003csummary\u003e📄 \u003cstrong\u003e\u003cspan style=\"color:#2ecc71\"\u003eevaluate.py\u003c/span\u003e\u003c/strong\u003e – ocena modelu (kliknij, aby rozwinąć)\u003c/summary\u003e\r\n\r\n- **`evaluate_model(model, X_test, y_test)`**  \r\n  - Wykonuje ewaluację modelu na zbiorze testowym.\r\n  - Zwraca metryki `loss` i `accuracy`.\r\n  - Wynik jest wypisywany w czytelnej formie z dokładnością do 2 miejsc po przecinku.\r\n\r\n\u003c/details\u003e\r\n\r\n---\r\n\r\n\u003cdetails\u003e\r\n  \u003csummary\u003e📄 \u003cstrong\u003e\u003cspan style=\"color:#e67e22\"\u003epredict.py\u003c/span\u003e\u003c/strong\u003e – klasyfikacja nowych próbek (kliknij, aby rozwinąć)\u003c/summary\u003e\r\n\r\n- **`predict_species(model, encoder, input_data)`**  \r\n  - Przygotowuje dane wejściowe (`np.array([[...]])`).\r\n  - Używa modelu do predykcji (`model.predict()`).\r\n  - Wybiera indeks największego prawdopodobieństwa (`tf.argmax()`).\r\n  - Dekoduje etykietę gatunku za pomocą `encoder.inverse_transform()`.\r\n\r\nFunkcja wyświetla komunikat z nazwą przewidzianego gatunku (`Iris-setosa`, `Iris-versicolor`, `Iris-virginica`).\r\n\r\n\u003c/details\u003e\r\n\r\n---\r\n\r\n\u003cdetails\u003e\r\n  \u003csummary\u003e📄 \u003cstrong\u003e\u003cspan style=\"color:#c0392b\"\u003emain.py\u003c/span\u003e\u003c/strong\u003e – główny punkt startowy programu (kliknij, aby rozwinąć)\u003c/summary\u003e\r\n\r\n- Funkcja `main()` uruchamia cały pipeline:\r\n  1. Załadowanie i przygotowanie danych (`get_data`)\r\n  2. Budowa modelu (`build_model`)\r\n  3. Trening (`train_model`)\r\n  4. Ewaluacja (`evaluate_model`)\r\n  5. Predykcja przykładowej próbki (`predict_species`)\r\n\r\nSkrypt jest gotowy do uruchomienia przez terminal lub PyCharma:\r\n```python\r\nif __name__ == \"__main__\":\r\n    main()\r\n```\r\n\r\n\u003c/details\u003e\r\n\r\n---\r\n\r\n\u003cdetails\u003e\r\n  \u003csummary\u003e📄 \u003cstrong\u003e\u003cspan style=\"color:#34495e\"\u003ednn_estimator_iris.py\u003c/span\u003e\u003c/strong\u003e – uproszczony skrypt all-in-one (kliknij, aby rozwinąć)\u003c/summary\u003e\r\n\r\nTen plik zawiera:\r\n- Jednoetapowy pipeline w jednym skrypcie (bez modularnego podziału).\r\n- Przykład zbudowania modelu `Sequential` z większą liczbą neuronów.\r\n- Trenowanie i walidacja przez 50 epok.\r\n- Predykcję próbki `np.array([[5.1, 3.5, 1.4, 0.2]])`.\r\n\r\nUżyte narzędzia:\r\n- `LabelBinarizer` zamiast `LabelEncoder`\r\n- `categorical_crossentropy` (zamiast sparse)\r\n\r\nPlik przydatny jako demo lub sandbox do eksperymentów.\r\n\r\n\u003c/details\u003e\r\n\r\n---\r\n\r\n\u003cdetails\u003e\r\n  \u003csummary\u003e🧰 \u003cstrong\u003eInstalacja i uruchomienie – wymagane komendy (kliknij, aby rozwinąć)\u003c/strong\u003e\u003c/summary\u003e\r\n\r\nAby uruchomić projekt lokalnie, należy wykonać następujące kroki:\r\n\r\n1. **Utworzenie wirtualnego środowiska (opcjonalnie):**\r\n```bash\r\npython -m venv .venv\r\nsource .venv/bin/activate     # Linux/macOS\r\n.venv\\Scripts\\activate      # Windows\r\n```\r\n\r\n2. **Instalacja zależności:**\r\n```bash\r\npip install tensorflow scikit-learn pandas matplotlib\r\n```\r\n\r\n3. **(Opcjonalne) Uruchomienie TensorBoarda:**\r\n```bash\r\ntensorboard --logdir=logs/fit\r\n```\r\n\r\n4. **Uruchomienie programu:**\r\n```bash\r\npython main.py\r\n```\r\n\r\n\u003c/details\u003e\r\n\u003c/details\u003e\r\n\r\n---\r\n\r\n\u003cdetails\u003e\r\n  \u003csummary\u003e\u003cimg src=\"https://img.icons8.com/ios-filled/50/FFFFFF/camera.png\" height=\"22px\"/\u003e Podgląd działania (kliknij, aby rozwinąć)\u003c/summary\u003e\r\n\r\nPoniżej przykładowe wyniki działania programu:\r\n\r\n![Podgląd działania](images/result1.png)  \r\n![Podgląd działania](images/result2.png)\r\n![Podgląd działania](images/result3.png)\r\n\r\n\u003c/details\u003e\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarcinwitnik%2Firis-classifier","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarcinwitnik%2Firis-classifier","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarcinwitnik%2Firis-classifier/lists"}