Zaktualizuj 'WGoracy.md'

This commit is contained in:
Weronika Gorący 2020-05-08 13:54:08 +00:00
parent bbd0baa01a
commit b20710e7c9

View File

@ -1,27 +1,27 @@
### Podprojekt indywidualny - Weronika Gorący # Podprojekt indywidualny - Weronika Gorący
## Wykorzystane metody uczenia ## Wykorzystane metody uczenia
Do realizacji podprojektu wykorzystano drzewa decyzyjne do decydowania, na które regały należy umieścić paczkę na podstawie jej cech. Do implementacji drzew decyzyjnych w Pythonie wykorzystane zostały biblioteki sklearn i pandas. Do realizacji podprojektu wykorzystano drzewa decyzyjne do decydowania, na które regały należy umieścić paczkę na podstawie jej cech. Do implementacji drzew decyzyjnych w Pythonie wykorzystane zostały biblioteki *sklearn* i *pandas*.
## Omówienie kodu ## Omówienie kodu
Kod podprojektu znajduje się w klasie whereDecision w pliku whereDecision.py. Wywołanie metody recognize odbywa się w klasie program w pliku program.py. Kod podprojektu znajduje się w klasie **whereDecision** w pliku [whereDecision.py](https://git.wmi.amu.edu.pl/s444399/AI/src/master/whereDecision.py). Wywołanie metody **recognize** odbywa się w klasie **program** w pliku [program.py](https://git.wmi.amu.edu.pl/s444399/AI/src/master/program.py).
``` ```
whatIsIt = self.neurons.whatIsIt(easygui.fileopenbox("Wybierz zdjęcie paczki", "Wybierz zdjęcie paczki", filetypes = [["*.jpg", "*.jpeg", "*.png", "Pliki graficzne"]])) whatIsIt = self.neurons.whatIsIt(easygui.fileopenbox("Wybierz zdjęcie paczki", "Wybierz zdjęcie paczki", filetypes = [["*.jpg", "*.jpeg", "*.png", "Pliki graficzne"]]))
where = self.whereDecision.recognize(whatIsIt, self.regalsik()) where = self.whereDecision.recognize(whatIsIt, self.regalsik())
``` ```
Do zmiennej whatIsIt zostaje zapisany typ otrzymanej paczki, który został rozpoznany dzięki innemu podprojektowi, następnie wywoływana jest metoda recognize z parametrami whatIsIt i self.regalsik(). Do zmiennej **whatIsIt** zostaje zapisany typ otrzymanej paczki, który został rozpoznany dzięki innemu podprojektowi, następnie wywoływana jest metoda **recognize** z parametrami **whatIsIt** i **self.regalsik()**.
Do tablicy regals zapisywane są dane wszystkich regałów wygenerowanych na planszy. Do tablicy **regals** zapisywane są dane wszystkich regałów wygenerowanych na planszy.
``` ```
self.regals.append((i, j, (self.map[i][j]-3)//4)) self.regals.append((i, j, (self.map[i][j]-3)//4))
``` ```
regalsik() sprawdza czy regał z tablicy regals jest pusty i umieszcza go w tablicy wyjściowej, która ostatecznie jest tablicą krotek zawierajacych informacje o wszystkich pustych regałach na planszy. Każda krotka zawiera informacje o współrzędnej Y i X regału oraz typ paczki jaki może być na niej przechowywany. Metoda **regalsik()** sprawdza czy regał z tablicy **regals** jest pusty i jeżeli tak, to umieszcza go w tablicy wyjściowej, która ostatecznie jest tablicą krotek zawierajacych informacje o wszystkich pustych regałach na planszy. Każda krotka zawiera informacje o współrzędnej Y i X regału oraz typ paczki jaki może być na niej przechowywany.
``` ```
def regalsik(self): def regalsik(self):
@ -34,7 +34,7 @@ regalsik() sprawdza czy regał z tablicy regals jest pusty i umieszcza go w tabl
## Uczenie modelu ## Uczenie modelu
Metoda recognize rozpoczyna od utworzenia zbioru uczącego na podstawie tabeli zawierającej informacje o pustych półkach na planszy. Dla każdego regału sprawdzany jest typ paczki, który może być na niej przechowywany, a następnie jest on dodawany do odpowiedniej kolumny. Tablica lokacja zawiera położenia wszystkich regałów na planszy. Metoda **recognize** rozpoczyna od utworzenia zbioru uczącego na podstawie tabeli zawierającej informacje o pustych półkach na planszy. Dla każdego regału sprawdzany jest typ paczki, który może być na niej przechowywany, a następnie jest on dodawany do odpowiedniej kolumny. Tablica **lokacja** zawiera położenia wszystkich regałów na planszy.
``` ```
def recognize(self, recognize, regals): def recognize(self, recognize, regals):
@ -89,7 +89,7 @@ Jeżeli wszystkie półki są zajęte, wózek zatrzyma się w swojej wyjściowej
return [1, 2] return [1, 2]
``` ```
Do zmiennej z zapisywany jest nasz zbiór uczący, zaś do zmiennej y zapisujemy tabelę prenumeratorzy typu DataFrame z biblioteki pandas, która zawiera dane lokalizacji. Do zmiennej **z** zapisywany jest nasz zbiór uczący, zaś do zmiennej **y** zapisujemy tabelę prenumeratorzy typu DataFrame z biblioteki *pandas*, która zawiera dane lokalizacji.
``` ```
z = list(zip(zwykle, kruche, latwopalne, radioaktywne, niebezpieczne)) z = list(zip(zwykle, kruche, latwopalne, radioaktywne, niebezpieczne))
@ -100,7 +100,7 @@ Do zmiennej z zapisywany jest nasz zbiór uczący, zaś do zmiennej y zapisujemy
## Implementacja ## Implementacja
Do zmiennej drzewko zapisujemy drzewo decyzyjne z biblioteki sklearn utworzone za pomocą metody DecisionTreeClassifier z parametrem criterion ustawionym na "entropy", które pozwala na uzyskiwanie informacji. Na drzewie wywołujemy metodę fit, która dopasowuje do drzewa zbiór uczący zadany w tablicach z i y.Po dopasowaniu danych możemy przewidzieć przynależność nowych przykładów, co robimy wywołując na drzewie metodę predict z parametrem uzyskanym na samym początku, który zawiera informację o rodzaju otrzymanej paczki. W ostateczności zwracamy kod lokalizacji na której zostanie umieszczona paczka. Do zmiennej drzewko zapisujemy drzewo decyzyjne z biblioteki *sklearn* utworzone za pomocą metody **DecisionTreeClassifier** z parametrem **criterion** ustawionym na **"entropy"**, który pozwala na uzyskiwanie informacji. Na drzewie wywołujemy metodę **fit**, która dopasowuje do drzewa zbiór uczący zadany w tablicach **z** i **y**.Po dopasowaniu danych możemy przewidzieć przynależność nowych przykładów, co robimy wywołując na drzewie metodę **predict** z parametrem uzyskanym na samym początku, który zawiera informację o rodzaju otrzymanej paczki. W ostateczności zwracamy kod lokalizacji na której zostanie umieszczona paczka.
``` ```
drzewko = DecisionTreeClassifier(criterion="entropy") drzewko = DecisionTreeClassifier(criterion="entropy")
@ -108,4 +108,4 @@ Do zmiennej drzewko zapisujemy drzewo decyzyjne z biblioteki sklearn utworzone z
return list(make_tuple(lokacja_kody[drzewko.predict(recognize)][0])) return list(make_tuple(lokacja_kody[drzewko.predict(recognize)][0]))
``` ```
Lokalizacja, którą zwróciła metoda recognize zapisywana jest do zmiennej where (klasa program) i na tej podstawie wózek z pomocą algorytmu AStar wybiera odpowiednią ścieżkę do umieszczenia paczki. Lokalizacja, którą zwróciła metoda **recognize** zapisywana jest do zmiennej **where** (klasa **program**) i na tej podstawie wózek z pomocą algorytmu AStar wybiera odpowiednią ścieżkę do umieszczenia paczki.