From 8a05edf9258dba576397712abde88c49058e5eab Mon Sep 17 00:00:00 2001 From: Veronika Polevara Date: Thu, 11 May 2023 19:34:08 +0200 Subject: [PATCH] add decision tree --- decisionTree/data.csv | 22 ++++++++++++++++++++++ decisionTree/decision_tree_model.pkl | Bin 0 -> 1833 bytes decisionTree/evaluate.py | 9 +++++++++ decisionTree/prepare.py | 21 +++++++++++++++++++++ domain/entities/cat.py | 2 ++ domain/entities/earring.py | 8 ++++++++ domain/entities/garbage.py | 4 ++-- domain/world.py | 8 +++++++- main.py | 5 ++++- media/sprites/earrings.webp | Bin 0 -> 5430 bytes requirements.txt | 5 ++++- view/renderer.py | 7 +++++++ 12 files changed, 86 insertions(+), 5 deletions(-) create mode 100644 decisionTree/data.csv create mode 100644 decisionTree/decision_tree_model.pkl create mode 100644 decisionTree/evaluate.py create mode 100644 decisionTree/prepare.py create mode 100644 domain/entities/earring.py create mode 100644 media/sprites/earrings.webp diff --git a/decisionTree/data.csv b/decisionTree/data.csv new file mode 100644 index 0000000..0563613 --- /dev/null +++ b/decisionTree/data.csv @@ -0,0 +1,22 @@ +1-2-3-4-5;1-green 2-yellow 3-orange 4-black 5-while 6-blue;in dB 0-100;0-24;0/1;in cm;in C;0/1 +Size;Color;Sound;Time;Smell;Height;Temperature;ToRemove +1;2;0;16;1;10;25;1 +2;1;0;12;0;50;24;0 +2;3;30;13;1;38;38;0 +1;4;0;7;1;5;27;1 +1;2;0;16;1;10;25;1 +2;1;0;12;0;50;24;0 +2;3;30;13;1;38;38;0 +1;4;0;7;1;5;27;1 +1;2;0;16;1;10;25;1 +2;1;0;12;0;50;24;0 +2;3;30;13;1;38;38;0 +1;4;0;7;1;5;27;1 +1;2;0;16;1;10;25;1 +2;1;0;12;0;50;24;0 +2;3;30;13;1;38;38;0 +1;4;0;7;1;5;27;1 +1;2;0;16;1;10;25;1 +2;1;0;12;0;50;24;0 +2;3;30;13;1;38;38;0 +1;4;0;7;1;5;27;1 \ No newline at end of file diff --git a/decisionTree/decision_tree_model.pkl b/decisionTree/decision_tree_model.pkl new file mode 100644 index 0000000000000000000000000000000000000000..58f7d191c36195fcb7ea97128729c5391634db68 GIT binary patch literal 1833 zcma)7&2Jk;6kj`WY;RIyw5N;2ZDG3p#n`4>nRMV3IoL)p@AErY^nVmMm~4kuB7Qh@~liEV9_1#t$E&mb%>Avh&! z$)riYa107f&x;ZEV~UrAI)zUZ;s6o>lSehT*}ndq8U4&Xi!GvL#==v|Pi9`31& zSLbS^`p%lHyimj8@QX`0=Er#~lq+rQ`_Xe01UOa~^6flA;|DThCt*NBf!vvZiaG7f zeOdL4$iRydG6*tXFe7ZEgm_VyiX`)d&8=L@E<(0>#j#F#)k7ZC-b-x~>Wj_S#uaFo z%h$&nKz%G&_=wle_{NCW&v|3Sn|-GOS#rBDX!5i9=2!#taF1_6e*DIWw;)4f>ji&f zHA~)hFP`#Ff4mMlN9-rUZ;oqlJ&61$;kV5FD9XYKf76H@vw-mJoE;F~=Q}34&kf%A z?eQk)9+Lq2Wx&O|MDRQAU@m~Kk8Fht;FC);m|1GDMj$+|hZojsX zN^Ybc_OTvix_i(l7J;SC07ml0@=!r0by?Gk0U&rg4Nwcy@b9a$K zql~|FIsdZAz^P~q!&ae9sGY6n7l4$7LIJF6`8cmQSX(%_C)d9D@T03ap!bJ;Y5Qa< zkVlz6QF1dei==qfi}{7^Bq*#78flqExfhh~u8E*nRZ8B@HxZejl`q1?e7M?5`oVRC z>P9-&nWA6O@0Npj0m} zOI(z7*0XSR_V)ie|Kp!O$A3R=T`}SI{(jk?lKy)gZ@-t~jq+k>?|xRB`}2pz zOKv>Feg+$8waJiN^}HMyyg*W`j4-FUmF|8{dj-v3mQ}vX?=UaD;#=m*HY#w9o{>cV Q-@%T3G}s;Ns>~hy2d}J bool: - return bool(self.dust[x][y]) + if len(self.dust[x][y]) == 0: + return False + tmp = evaluate([self.dust[x][y][0].props]) + return bool(tmp[0]) def is_docking_station_at(self, x: int, y: int) -> bool: return bool(self.doc_station.x == x and self.doc_station.y == y) diff --git a/main.py b/main.py index 0bdd36a..c2999f6 100644 --- a/main.py +++ b/main.py @@ -8,6 +8,8 @@ from domain.commands.vacuum_move_command import VacuumMoveCommand from domain.entities.cat import Cat from domain.entities.entity import Entity from domain.entities.vacuum import Vacuum +from domain.entities.garbage import Garbage +from domain.entities.earring import Earring from domain.entities.docking_station import Doc_Station from domain.world import World from view.renderer import Renderer @@ -135,7 +137,7 @@ def generate_world(tiles_x: int, tiles_y: int) -> World: for _ in range(10): temp_x = randint(0, tiles_x - 1) temp_y = randint(0, tiles_y - 1) - world.add_entity(Entity(temp_x, temp_y, "PEEL")) + world.add_entity(Garbage(temp_x, temp_y)) world.vacuum = Vacuum(1, 1) world.doc_station = Doc_Station(9, 8) if config.getboolean("APP", "cat"): @@ -146,6 +148,7 @@ def generate_world(tiles_x: int, tiles_y: int) -> World: world.add_entity(Entity(3, 4, "PLANT2")) world.add_entity(Entity(8, 8, "PLANT2")) world.add_entity(Entity(9, 3, "PLANT3")) + world.add_entity(Earring(5, 5)) return world diff --git a/media/sprites/earrings.webp b/media/sprites/earrings.webp new file mode 100644 index 0000000000000000000000000000000000000000..9c84a7ef780f67d7ba372750c7211ca4a37ba308 GIT binary patch literal 5430 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 RlujWA0AL>fPoe?<{sSGV%&!0d literal 0 HcmV?d00001 diff --git a/requirements.txt b/requirements.txt index edcb635..98bd1d8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,6 @@ pygame configparser -formaFormatting: Provider - black \ No newline at end of file +pandas +scikit-learn +joblib +# formaFormatting: Provider - black \ No newline at end of file diff --git a/view/renderer.py b/view/renderer.py index e8294cb..e21d270 100644 --- a/view/renderer.py +++ b/view/renderer.py @@ -94,6 +94,13 @@ class Renderer: self.tile_height + self.tile_height / 4, ), ), + "EARRING": pygame.transform.scale( + pygame.image.load("media/sprites/earrings.webp"), + ( + self.tile_width + self.tile_width / 4, + self.tile_height + self.tile_height / 4, + ), + ), } self.cat_direction_sprite = {