From cda73609f767f5593f876de9dd957768542b30b9 Mon Sep 17 00:00:00 2001 From: andrzej Date: Mon, 11 May 2020 13:44:58 +0200 Subject: [PATCH 1/6] =?UTF-8?q?Poprawka,=20dodanie=20wynik=C3=B3w=20testow?= =?UTF-8?q?ania?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Andrzej_Preibisz.md | 8 ++++++-- Test_Results.png | Bin 0 -> 75645 bytes Test_results.xlsx | Bin 0 -> 6358 bytes package_location_classifier/classifier.py | 10 ++++++---- 4 files changed, 12 insertions(+), 6 deletions(-) create mode 100644 Test_Results.png create mode 100644 Test_results.xlsx diff --git a/Andrzej_Preibisz.md b/Andrzej_Preibisz.md index d94bb94..4d1cef2 100644 --- a/Andrzej_Preibisz.md +++ b/Andrzej_Preibisz.md @@ -57,7 +57,8 @@ i prawdopodobnie oznaczało overfitting drzewa. W przypadku głębokości chodzi Zastosowany zbiór uczący obejmuje 373 rekordy zapisane w formacie .csv, w którym poszczególne kolumny oznaczają odpowiednio: produkt, kategorię produktu, temperature na regale, wilgotność powietrza na danym regale, szansę że przedmiot po dłuższym czasie przechowywania będzie w dobrym stanie, oraz informację czy można bezpiecznie go tu położyć. Przykładowy rekord: ``frozen food,freezed,21, 0.5, 0.01, 0 `` . Zbiór testowy z kolei zawiera 26 rekordów w tym samym formacie. -Przygotowanie zbioru uczącego i testowego dla drzewa: \ +Zbiór uczący znajduje się w pliku package_location_classifier/trainset/trainset.csv, a testowy package_location/testset/testset.csv. +Przygotowanie zbioru uczącego i testowego dla drzewa: `` products = pd.read_csv("package_location_classifier/trainset/trainset.csv", header=0, sep=",", names=cols_names) testset = pd.read_csv("package_location_classifier/testset/testset.csv", header=None, sep=",", names=cols_names) @@ -71,6 +72,9 @@ Przygotowanie zbioru uczącego i testowego dla drzewa: \ X_train = pd.get_dummies(products[feature_cols]) y_train = products.chance_of_survive `` -Graficzna reprezentacja drzewa wygenerowanego dla tego zbioru uczącego: \ +Graficzna reprezentacja drzewa wygenerowanego dla tego zbioru uczącego: [Przykładowe drzewo](Drzewo.png) +Wyniki ewaluacji zestawu testowego, znajdujące się w pliku Test_results.xlsx: +[Wyniki testu](Test_Results.png) + diff --git a/Test_Results.png b/Test_Results.png new file mode 100644 index 0000000000000000000000000000000000000000..f3e3dd2b92c6156a214cc04ed918de3ea43d35ec GIT binary patch literal 75645 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%0Dxr3V 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 P{?!$Hb*|Fn*LVL1>bKh| literal 0 HcmV?d00001 diff --git a/package_location_classifier/classifier.py b/package_location_classifier/classifier.py index 525c2d5..6ade99b 100644 --- a/package_location_classifier/classifier.py +++ b/package_location_classifier/classifier.py @@ -47,12 +47,14 @@ class PackageLocationClassifier(): y_pred = self.predictor.predict(test_X) evaluation = pd.DataFrame({'category': testset.category, 'temperature': testset.temperature , 'humid': testset.humidity ,'Actual': test_y, 'Predicted': y_pred}) + evaluation = evaluation.round({'Actual': 3, 'Predicted': 3}) evaluation['Prediction_diff'] = abs(evaluation['Actual'] - evaluation['Predicted']) + evaluation.to_excel("Test_resultsv2.xlsx") print("Prediction differs from actual value by average {}".format(round(evaluation['Prediction_diff'].mean(), 2))) - export_graphviz(clf, out_file=data, filled=True, rounded=True, special_characters=True, feature_names=dummies_names) - graph = pydotplus.graph_from_dot_data(data.getvalue()) - graph.write_png('Drzewo.png') - Image(graph.create_png()) + # export_graphviz(clf, out_file=data, filled=True, rounded=True, special_characters=True, feature_names=dummies_names) + # graph = pydotplus.graph_from_dot_data(data.getvalue()) + # graph.write_png('Drzewo.png') + # Image(graph.create_png()) def check_if_can_place(self, package, tile): category = package.category From c781418f2b1904b79237e462c270bbcaaf9292d6 Mon Sep 17 00:00:00 2001 From: andrzej Date: Mon, 11 May 2020 13:45:21 +0200 Subject: [PATCH 2/6] Poprawka --- package_location_classifier/classifier.py | 1 - 1 file changed, 1 deletion(-) diff --git a/package_location_classifier/classifier.py b/package_location_classifier/classifier.py index 6ade99b..060425c 100644 --- a/package_location_classifier/classifier.py +++ b/package_location_classifier/classifier.py @@ -49,7 +49,6 @@ class PackageLocationClassifier(): evaluation = pd.DataFrame({'category': testset.category, 'temperature': testset.temperature , 'humid': testset.humidity ,'Actual': test_y, 'Predicted': y_pred}) evaluation = evaluation.round({'Actual': 3, 'Predicted': 3}) evaluation['Prediction_diff'] = abs(evaluation['Actual'] - evaluation['Predicted']) - evaluation.to_excel("Test_resultsv2.xlsx") print("Prediction differs from actual value by average {}".format(round(evaluation['Prediction_diff'].mean(), 2))) # export_graphviz(clf, out_file=data, filled=True, rounded=True, special_characters=True, feature_names=dummies_names) # graph = pydotplus.graph_from_dot_data(data.getvalue()) From f71413379786871f7883122e17fc460f22986930 Mon Sep 17 00:00:00 2001 From: andrzej Date: Mon, 11 May 2020 14:01:16 +0200 Subject: [PATCH 3/6] =?UTF-8?q?Poprawka,=20dodanie=20blok=C3=B3w=20kodu=20?= =?UTF-8?q?i=20screen=C3=B3w?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Andrzej_Preibisz.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/Andrzej_Preibisz.md b/Andrzej_Preibisz.md index 4d1cef2..b15093c 100644 --- a/Andrzej_Preibisz.md +++ b/Andrzej_Preibisz.md @@ -30,7 +30,7 @@ na przykład kładąc paczkę z lakierem/benzyną na regale lepiej mieć trochę kładąc książkę - że nie zniszczeje od wilgoci. W związku z tym zamiast prostej odpowiedzi Tak/Nie na pytanie czy dany obiekt można położyć na danym regale potrzebna była przewidywana wartość prawdopodobieństwa że w danym miejscu zachowa się on w dobrym stanie. Wszystkie te progi wynoszą odpowiednio: - `` + ``` python PACKAGE_PLACE_TRESHOLD = { "normal": 0.8, "freezed": 0.85, @@ -38,7 +38,7 @@ zachowa się on w dobrym stanie. Wszystkie te progi wynoszą odpowiednio: "flammable": 0.9, "keep_dry": 0.8 } - `` + ``` Zdecydowałem się więc na wybór drzewa regresyjnego. Biblioteką której użyłem w celu implementacji drzewa jest scikit-learn. Najważniejszym problemem oprócz dokładności oszacowań dokonanych przy pomocy drzewa było uniknięcie overfittingu(przepasowania), @@ -46,8 +46,10 @@ czyli sytuacji, w której drzewo perfekcyjnie dopasuje się do danych ze zbioru z danymi spoza tego zbioru poradzi sobie już dużo gorzej. Oprócz błędnej oceny danych innych niż ze zbioru uczącego sygnałem wskazującym na overfitting drzewa jest zbyt duża jego głębokość drzewa (odległość od korzenia do najdalszego liścia), oraz liście zawierające tylko 1 rekord. W celu uniknięcia overfittingu zdecydowałem się na ograniczenie maksymalnej głębokości drzewa, oraz na ustawienie minimalnej -ilości rekordów w liściu. Drzewo wraz z odpowiednimi ograniczeniami zdefiniowane jest w następujący sposób \ -``clf = DecisionTreeRegressor(ccp_alpha=0.02, min_samples_leaf=5, max_depth=5)`` +ilości rekordów w liściu. Drzewo wraz z odpowiednimi ograniczeniami zdefiniowane jest w następujący sposób +```python +clf = DecisionTreeRegressor(ccp_alpha=0.02, min_samples_leaf=5, max_depth=5) +``` gdzie argumenty min_samples_leaf, oraz max_depth oznaczają odpowiednio minimalną ilość rekordów(przykładów ze zbioru uczącego) w liściu, oraz maksymalną głębokość drzewa. Kryterium według którego mierzona jest "jakość" rozgałęzienia jest tzw. MSE(Mean Squared Error), czyli kwadrat odchylenia standardowego wartości przewidywanej wobec faktycznej. Dobierając te parametry wyszedłem z założenia że jeżeli 5 rekordów będzie w jednym liściu, to znaczy że najprawdopodbniej zachodzi @@ -59,7 +61,7 @@ produkt, kategorię produktu, temperature na regale, wilgotność powietrza na d Przykładowy rekord: ``frozen food,freezed,21, 0.5, 0.01, 0 `` . Zbiór testowy z kolei zawiera 26 rekordów w tym samym formacie. Zbiór uczący znajduje się w pliku package_location_classifier/trainset/trainset.csv, a testowy package_location/testset/testset.csv. Przygotowanie zbioru uczącego i testowego dla drzewa: - `` + ``` python products = pd.read_csv("package_location_classifier/trainset/trainset.csv", header=0, sep=",", names=cols_names) testset = pd.read_csv("package_location_classifier/testset/testset.csv", header=None, sep=",", names=cols_names) products = products.round({"chance_of_survive": 1}) @@ -71,10 +73,10 @@ Przygotowanie zbioru uczącego i testowego dla drzewa: products = products.sample(frac=1) X_train = pd.get_dummies(products[feature_cols]) y_train = products.chance_of_survive - `` + ``` Graficzna reprezentacja drzewa wygenerowanego dla tego zbioru uczącego: -[Przykładowe drzewo](Drzewo.png) +![Przykładowe drzewo](Drzewo.png) Wyniki ewaluacji zestawu testowego, znajdujące się w pliku Test_results.xlsx: -[Wyniki testu](Test_Results.png) +![Wyniki testu](Test_Results.png) From 25578850d9af60fdad6f3d67817e54fb66b3c75c Mon Sep 17 00:00:00 2001 From: andrzej Date: Mon, 11 May 2020 14:05:54 +0200 Subject: [PATCH 4/6] Poprawka --- Andrzej_Preibisz.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Andrzej_Preibisz.md b/Andrzej_Preibisz.md index b15093c..f5eb88a 100644 --- a/Andrzej_Preibisz.md +++ b/Andrzej_Preibisz.md @@ -80,3 +80,5 @@ Graficzna reprezentacja drzewa wygenerowanego dla tego zbioru uczącego: Wyniki ewaluacji zestawu testowego, znajdujące się w pliku Test_results.xlsx: ![Wyniki testu](Test_Results.png) +Przewidywana wartość w zestawie testowym różni się od wartości faktycznej średnio o 0.87, jako że w raporcie wartości są pomnożone przez 10, daje to średnio +0.087 wartości różnicy w czasie działania drzewa. From 549ef7cd851a1a650d64c7794bc10eb7deab15ca Mon Sep 17 00:00:00 2001 From: andrzej Date: Mon, 11 May 2020 14:15:54 +0200 Subject: [PATCH 5/6] Poprawka --- Andrzej_Preibisz.md | 51 +++++++++++++++++++++++ package_location_classifier/classifier.py | 4 -- 2 files changed, 51 insertions(+), 4 deletions(-) diff --git a/Andrzej_Preibisz.md b/Andrzej_Preibisz.md index f5eb88a..453998a 100644 --- a/Andrzej_Preibisz.md +++ b/Andrzej_Preibisz.md @@ -74,6 +74,15 @@ Przygotowanie zbioru uczącego i testowego dla drzewa: X_train = pd.get_dummies(products[feature_cols]) y_train = products.chance_of_survive ``` +Uczenie drzewa i ewaluacja przy pomocy zbioru testowego: +``` python + self.predictor = clf.fit(X_train, y_train) + + y_pred = self.predictor.predict(test_X) + +``` + + Graficzna reprezentacja drzewa wygenerowanego dla tego zbioru uczącego: ![Przykładowe drzewo](Drzewo.png) @@ -82,3 +91,45 @@ Wyniki ewaluacji zestawu testowego, znajdujące się w pliku Test_results.xlsx: Przewidywana wartość w zestawie testowym różni się od wartości faktycznej średnio o 0.87, jako że w raporcie wartości są pomnożone przez 10, daje to średnio 0.087 wartości różnicy w czasie działania drzewa. + + +##### Zastosowanie drzewa w części wspólnej projektu + +Po podniesieniu paczki przez agenta odpalana jest funkcja szukająca najbliższego pasującego regału. +Przy poszukiwaniu takiego regału stosowana jest funkcja heurystyczna o następującym kodzie: +```python + def rack_heuristics(self, start, goal, can_place): + heur_can_place = not can_place + diff_x = pow(goal.x - start.x, 2) + diff_y = pow(goal.y - start.y, 2) + place_cost = 100 * float(heur_can_place) + return round(sqrt(diff_x + diff_y), 3) + float(place_cost) +``` +Parametr can_place to wynik ewaluacji pola goal, przy pomocy drzewa: +```python + for rack in quarter_racks: + new_node = Node(rack.x_position, rack.y_position) + can_place = self.location_classifier.check_if_can_place(package, rack) + cost = self.rack_heuristics(start_node, new_node, can_place) +``` +self.location_classifier, to obiekt klasy PackageLocationClassifier. +Klasa ta zawiera metodę check_if_can_place() : +```python + def check_if_can_place(self, package, tile): + category = package.category + cat_treshold = PACKAGE_PLACE_TRESHOLD[category] + fields = [[ + tile.air_temperature, + tile.humidity, + category == "flammable", + category == "fragile", + category=="freezed" , + category == "keep_dry", + category == "normal" + ]] + + quality_of_place = round(self.predictor.predict(fields)[0]/10, 2) + if quality_of_place > cat_treshold: + return True + return False +``` \ No newline at end of file diff --git a/package_location_classifier/classifier.py b/package_location_classifier/classifier.py index 060425c..fa97a47 100644 --- a/package_location_classifier/classifier.py +++ b/package_location_classifier/classifier.py @@ -42,8 +42,6 @@ class PackageLocationClassifier(): clf = DecisionTreeRegressor(ccp_alpha=0.02, min_samples_leaf=5, max_depth=5) self.predictor = clf.fit(X_train, y_train) - - y_pred = self.predictor.predict(test_X) evaluation = pd.DataFrame({'category': testset.category, 'temperature': testset.temperature , 'humid': testset.humidity ,'Actual': test_y, 'Predicted': y_pred}) @@ -69,8 +67,6 @@ class PackageLocationClassifier(): ]] quality_of_place = round(self.predictor.predict(fields)[0]/10, 2) - # print("{} - dopasowanie {}".format(package,quality_of_place)) - # pdb.set_trace() if quality_of_place > cat_treshold: return True return False From 2fdca0e3c0ffdeb9736c83afe107fab37f5c9bf4 Mon Sep 17 00:00:00 2001 From: andrzej Date: Mon, 11 May 2020 14:56:44 +0200 Subject: [PATCH 6/6] Poprawka --- Andrzej_Preibisz.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Andrzej_Preibisz.md b/Andrzej_Preibisz.md index 453998a..d0e070e 100644 --- a/Andrzej_Preibisz.md +++ b/Andrzej_Preibisz.md @@ -51,7 +51,8 @@ ilości rekordów w liściu. Drzewo wraz z odpowiednimi ograniczeniami zdefiniow clf = DecisionTreeRegressor(ccp_alpha=0.02, min_samples_leaf=5, max_depth=5) ``` gdzie argumenty min_samples_leaf, oraz max_depth oznaczają odpowiednio minimalną ilość rekordów(przykładów ze zbioru uczącego) w liściu, oraz maksymalną głębokość drzewa. -Kryterium według którego mierzona jest "jakość" rozgałęzienia jest tzw. MSE(Mean Squared Error), czyli kwadrat odchylenia standardowego wartości przewidywanej wobec faktycznej. +Argument ccp_alpha oznacza parametr \alpha stosowany przy complexity-cost pruning. Pruning oznacza dalsze przycięcie drzewa, aby uniknąć overfittingu +Kryterium według którego mierzona jest "jakość" rozgałęzienia jest tzw. MSE(Mean Squared Error), czyli błąd średniokwadratowy(średnia kwadratów odchylenia wielkości oczekiwanej od rzeczywistej). Dobierając te parametry wyszedłem z założenia że jeżeli 5 rekordów będzie w jednym liściu, to znaczy że najprawdopodbniej zachodzi już w ich przypadku pewna prawidłowość, i mają one jakieś wspólne cechy, które determinują taką, a nie inną wartość przewidywaną, w odróżnieniu od sytuacji gdy liść zawierałby tylko 1-2 rekordy, co wskazywałoby na bardzo specyficzne parametry takiego/ich rekordu/ów,