raport update

This commit is contained in:
Piotr Jakub Dębski 2020-06-15 14:46:40 +02:00
parent 1231a8f914
commit 7cadde5b3d

View File

@ -23,13 +23,13 @@ Piotr Jakub Dębski 01.06.2020
- pydot - pydot
oraz dodatkowo: oraz dodatkowo:
- graphviz - graphviz
za pomocą którego wygenerowane została reprezentacja wizualna drzew decyzyjnych za pomocą którego wygenerowane została reprezentacja wizualna modelów drzew decyzyjnych
food_tree.pdf oraz drink_tree.pdf znajdujących się w folderze graphs. food_tree.pdf oraz drink_tree.pdf znajdujących się w folderze graphs.
### Dane ### Dane
Dane na których podstawie algorytm ma stworzyć modele drzew decyzyjnych umieszczone zostały w Dane na których podstawie algorytm ma stworzyć modele drzew decyzyjnych umieszczone zostały
pliku learning_db.py i podzielone na 6 binarnych kategorii: w pliku learning_db.py i podzielone na 6 binarnych kategorii:
- gender - płeć ( M - mężczyzna K - kobieta ) - gender - płeć ( M - mężczyzna K - kobieta )
- age - wiek ( Adult - dorosły Child - dziecko ) - age - wiek ( Adult - dorosły Child - dziecko )
- outfit - ubiór ( Casual - codzienny Elegant - reprezentacyjny ) - outfit - ubiór ( Casual - codzienny Elegant - reprezentacyjny )
@ -37,37 +37,41 @@ Piotr Jakub Dębski 01.06.2020
- vege - dieta wegetariańska ( "Yes" "No" ) - vege - dieta wegetariańska ( "Yes" "No" )
- time - czas ( "Afternoon" - popołudnie "Evening" - wieczór ) - time - czas ( "Afternoon" - popołudnie "Evening" - wieczór )
oraz na 2 kategorie, które mają zostać sklasyfikowane : oraz na 2 kategorie, które mają zostać sklasyfikowane :
- food - dania ( 35 wyborów ) - food - dania ( 10 wyborów )
- drink - napoje ( 8 wyborów ) - drink - napoje ( 5 wyborów )
Dane zawierają 200 przykładów. Dane zawierają 200 przykładów.
### Tworzenie drzewa ### Tworzenie drzewa
1. Za pomocą funkcji pandas.DataFrame() program łączy ze sobą wszystkie przykłady w 1. Za pomocą funkcji pandas.DataFrame() program łączy ze sobą wszystkie przykłady w
dwuwymiarową strukturę danych o wymiarach 9x200 (kategorie+index)x(przykłady). dwuwymiarową strukturę danych o wymiarach 9x200 (kategorie+index)x(przykłady).
2. Za pomocą funkcji pandas.factorize() program dostosowuje dane w każdej kolumnie do naszych 2. Za pomocą funkcji pandas.factorize() program dostosowuje dane w każdej kolumnie do
potrzeb i obliczeń. naszych potrzeb i obliczeń.
3. Następnie model danych zostaje podzielony na X - zbiór przykładów oraz y - odpowiadający 3. Następnie model danych zostaje podzielony na X - zbiór przykładów oraz y - odpowiadający
przykładom wynik czyli rodzaj dania. przykładom wynik czyli rodzaj dania.
4. Zestaw danych zostaje podzielony na testowy dzięki funkcji train_test_split() 4. Zestaw danych zostaje podzielony na testowy dzięki funkcji train_test_split()
( 25% - food , 40% - drink) i treningowy ( 75% - food , 60% - drink ) ( 10% - food , 40% - drink) i treningowy ( 55% - food , 45% - drink )
5. Dzięki funkcji DecisionTreeClassifier() oraz tą samą funkcją z argumentem wymagającym przyjęcia 5. Dzięki funkcji DecisionTreeClassifier() oraz tą samą funkcją z argumentem wymagającym
do kryterium entropii tworzą się dwa klasyfikatory (wyniki będą porównywane by wybrać przyjęcia do kryterium entropii tworzą się dwa klasyfikatory (wyniki będą porównywane by
dokładniejszą metodę) wybrać dokładniejszą metodę)
6. Zestaw treningowy przekazany zostaje do funkcji fit() dzięki czemu można teraz 6. Zestaw treningowy przekazany zostaje do funkcji fit() dzięki czemu można teraz
przeprowadzić predykcję za pomocą funkcji predict(), której w miejsce argumentu wprowadzamy przeprowadzić predykcję za pomocą funkcji predict(), której w miejsce argumentu wprowadzamy
zestaw testowy. zestaw testowy.
7. W wyniku wielokrotnych porównań dokładności funkcji predict() na klasyfikatorach, entropia 7. W wyniku wielokrotnych porównań dokładności funkcji predict() na klasyfikatorach,
okazuje się lepszym kryterium od indeksu Giniego na zadanym zestawie danych, więc model drzewa entropia okazuje się lepszym kryterium od indeksu Giniego na zadanym zestawie danych, więc
korzystający z tego kryterium zostaje zapisany do użycia w głównym ciele projektu. model drzewa korzystający z tego kryterium zostaje zapisany do późniejszego stosowania.
8. Kroki 3-7 zostały powtórzone dla drzewa napojów, a odpowiednie wizualizacje drzew decyzyjnych 8. Kroki 3-7 zostały powtórzone dla drzewa napojów, a odpowiednie wizualizacje drzew
zapisane są w folderze graphs. decyzyjnych zapisane są w folderze graphs.
### Synchronizacja w projekcie ### Synchronizacja w projekcie
Modele food_model i drink_model zostaną załadowane do programu z folderu models. Modele food_model i drink_model zostaną załadowane do programu z folderu models.
Do obsługi stworzonego modelu stworzona jest klasa Client oraz funkcja client_ordering(ctr) Do obsługi stworzonego modelu stworzona jest klasa Client oraz funkcja client_ordering(clt)
Klasa Client poprzez swój konstruktor automatycznie losuje wszystkie cechy, na podstawie Klasa Client poprzez swój konstruktor automatycznie losuje wszystkie cechy oraz pobiera
których funkcja predict() wybiera danie oraz napój, natomiast funkcja client_ordering(ctr) wymaga aktualną godzinę, natomiast funkcja client_ordering(clt) wymaga w swoim argumencie
w swoim argumencie posiadania obiektu klasy Client, z której pobierze wszystkie wartości cech posiadania obiektu klasy Client, z której pobierze wszystkie wartości cech i przeniesie je
i przeniesie je do funkcji predict() zwracając otrzymane wyniki. do funkcji predict() zwracając otrzymane przez klienta zamówienie.
<!--stackedit_data:
eyJoaXN0b3J5IjpbLTc0NzY1NDM0MiwxMDUxMDAwNjk2LDExNT
Q5MzU2MTZdfQ==
-->