From bdea00c5b2397e8ce6ffd59ebb29603640481e85 Mon Sep 17 00:00:00 2001 From: Mateusz Kantorski Date: Tue, 30 May 2023 19:09:24 +0200 Subject: [PATCH] Read tree from file --- DecisionTree/wyuczone_drzewo.pkl | Bin 0 -> 8185 bytes drzewo_decyzyjne.py | 37 ++++++++++++------------------- main.py | 10 +++++---- 3 files changed, 20 insertions(+), 27 deletions(-) create mode 100644 DecisionTree/wyuczone_drzewo.pkl diff --git a/DecisionTree/wyuczone_drzewo.pkl b/DecisionTree/wyuczone_drzewo.pkl new file mode 100644 index 0000000000000000000000000000000000000000..751d4545d499e2fb5db3d0b38926e750ab38eb25 GIT binary patch literal 8185 zcmdT}TWlOx86G>1vv$&SliICGOzJqU2|~f5{qmN}d~x`K$8Tf>p8erJPf->Z*a+>L(kyBASW7Z1HNJRYmZV zBCJf=u`5o{V6t8Tax4~fWHKeo&XrudL1|?n@@fftftm0-3s$k}m8xDvkS%_K3TXxY z4WBQjbJ=vNP|cSntx`543Lf~Y#zJyexol4!E8C?~V`&qWYP!BY@R!zCi3%6S?NC?L z-(OmB?UEx3cUn9b%j03OTXu`*ac@%a-ClQt&}z+&1YbM*WN;`LGMD%*cLif(WBcdC zr~bz@yddp&+PPfuaVwv-GL3A|sd91?gy&|A&~Rdd8_F_U6eqAIq|&7tqx zsO`%z5Ou7vFJFJ^wU^(YW)~EGmZR=#i4QxHtg-Z-mw)}ik1n%xaLg8045Q;J@gB)Lw_WTCZLXIzbA^SCTb$Df5k|{`vRIOpPPiv_G}ZGpvLB ztRO_5@OSE#_dk3t{THUjk>H)AkGxSQtdlsy)H)ki9VhAtjH{=fAM}CEu3Jg@T~Dai zyT*_o>L%%-rt?$l)y0$KXBD9eHTLT0-LGHy>+cxmL&|%b_NT_5ts zs3S10o{QD@Zi;VBOq}2T&4qK{yYz}eb;17cp>?YKqu1qX=X0^@ ziM|2j`lruXFV*AYg!(!0=Cc>q4gchA#z`*Wfu`qkedD?*&esurXCps)o@GCCCI&A& z{~o(J;)M^4gWgR1xVgssOSNI%NBXxA>V22&8HRID(gPfE_tQGHzq9Pzi5LHtSo24w z&RTPeQV2-UjH zvdo9a?|FCpU54*}sn*x@yr^@Vldt+i~$dHqj`UI?i_xy^~O#vl@Hz=WBb~+umWHR@Ob( z^qk>)SuWqsN65}@LiOC5zrUbgb+xH|e3bM*L8wBFt$FFf(*yr_i{blN%14@x6Zbc{ zF2z4d4(=h;_rrl_HjTcprWW0crCL9~i}XK5sL$C)J(ss``5vl=NvO(e?8*!89Gop(X1Fg(wNZXA>F+1h z>v?2(`;WUHo@V;*0PL&1v`(Lwv+GZ`p7j2-V9t;iFfKpUUKig-e(odG=S8w-uKIVQ zns@WRUY1`-+7Vg=jQ>^A0t%bsj;I!Jp8LGzxX{<>($fr z`J&EIk{={L4-l&G|F{42-vOVYgia8ubrbt2cx|HXj%n7XB+mI^qK^=&b(`;lzK^gE zfN}dlkMk(`IZmke{rTSxUTI%Fz2IJcjPxHORL`H;Yvy+`>H&H-Guo6PK9!er;RR`vLERr1?R9lKgy*Q13gw$M7CXs`c|nNZ%q<`>^=;R@4y~ zS5N(1f<7>Aom%HEejXQOzx^>gR~2v7^_R-xWozq`cyoOudgraa#SL4snwPAqx27RChc|wze4>U*)8VGx!f#3td?;$(DE~4Y~z)zAM>>wV< zK}T{D^wT=Xb&T{$FQRFE1Tk{d5qbwmkMa}mJ0Oubs>+QajYd6ydfxxBPvj1H0EumY zhF$Ps7jhuvpn>2cfAIfXyXXhj17RPuj*tT(-^{_0xJ}Yihlx+|P8}p#Y8l3MRc_o% zH0P{{-F-PbV{6;hxgdXGz5RQRdK45OZ zMqHR{(2;#oM7)se2zx-tK_h d']) y = pd.read_csv('DecisionTree/decisions.txt', names=['polka']) - # X_train, X_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state=1) # 70% treningowe and 30% testowe + # Tworzenie instancji klasyfikatora ID3 clf = DecisionTreeClassifier(criterion='entropy') # Trenowanie klasyfikatora clf.fit(x.values, y.values) - # clf.fit(X_train, y_train) + + # Zapis drzewa do pliku + joblib.dump(clf, 'DecisionTree/wyuczone_drzewo.pkl') + return clf -# # Predykcja na nowych danych -# new_data = [[2, 2, 1, 0, 1, 1, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0]] -# predictions = clf.predict(new_data) -# # y_pred = clf.predict(X_test) +def stworz_plik_drzewa_w_pdf(clf, feature_names, class_names): + # Wygenerowanie pliku .dot reprezentującego drzewo + dot_data = export_graphviz(clf, out_file=None, feature_names=feature_names, class_names=class_names, filled=True, + rounded=True) + # Tworzenie obiektu graphviz z pliku .dot + graph = graphviz.Source(dot_data) -# print(predictions) -# # print("Accuracy:", clf.score(new_data, predictions)) -# # print("Accuracy:", metrics.accuracy_score(y_test, y_pred)) - - -# Wygenerowanie pliku .dot reprezentującego drzewo -# dot_data = export_graphviz(clf, out_file=None, feature_names=list(x.columns), class_names=['0', '1'], filled=True, -# rounded=True) - -# # Tworzenie obiektu graphviz z pliku .dot -# graph = graphviz.Source(dot_data) - -# # Wyświetlanie drzewa -# graph.view() - -# z = pd.concat([x, y], axis=1) -# z.to_csv('dane.csv', index=False) + # Wyświetlanie drzewa + graph.view() diff --git a/main.py b/main.py index 868f509..2282dc5 100644 --- a/main.py +++ b/main.py @@ -1,13 +1,13 @@ import sys + +import joblib import pygame from paczka import Paczka from wozek import Wozek import wyszukiwanie import ekran from grid import GridCellType, SearchGrid -from sklearn.tree import DecisionTreeClassifier -import pandas as pd -import drzewo_decyzyjne + from plansza import a_pix, b_pix pygame.init() @@ -19,7 +19,9 @@ def main(): p2 = Paczka('maly', 1, 'ogród', False, True, False, any, any, any, any, any) ekran.dodaj_paczki_na_rampe(p1, p2) grid_points = SearchGrid() - drzewo = drzewo_decyzyjne.make_tree() + + # Odczyt drzewa z pliku + drzewo = joblib.load('DecisionTree/wyuczone_drzewo.pkl') while True: for event in pygame.event.get():