diff --git a/dataset.csv b/dataset.csv index 6108118..181b121 100644 --- a/dataset.csv +++ b/dataset.csv @@ -1,39 +1,201 @@ plec;wiek;czas_w_pom;temp_w_pom;poziom_kurzu;poziom_oswietlenia;niebezp_towary;decyzja -2;1;3;0;2;1;0;1 -2;1;3;0;1;1;1;1 -2;1;3;0;1;1;0;0 -2;1;3;0;1;2;0;0 -1;1;3;0;1;1;0;1 -2;1;2;0;2;1;1;1 -2;1;2;0;2;2;1;1 -2;1;2;0;1;1;1;0 -2;1;2;0;1;2;1;0 -1;1;2;0;1;1;1;1 -1;1;2;0;2;1;0;0 -2;1;3;1;2;1;1;1 -2;1;3;1;2;2;1;1 -2;1;3;1;1;1;1;0 -1;1;3;1;1;1;1;1 -1;1;3;1;1;2;1;1 -1;1;3;1;2;1;0;0 -2;1;2;1;2;1;1;0 -1;1;2;1;2;1;1;0 -2;2;3;0;2;1;0;1 -2;2;3;0;2;2;1;1 -2;2;3;0;2;2;0;0 -2;2;3;0;1;2;0;0 -1;2;3;0;2;2;0;1 -2;2;2;0;2;1;1;1 -2;2;2;0;1;1;1;1 -2;2;2;0;2;2;1;0 -2;2;2;0;1;2;1;0 -1;2;2;0;2;2;1;1 -1;2;2;0;2;1;0;0 -2;2;3;1;2;1;1;1 -2;2;3;1;1;1;1;1 -2;2;3;1;2;2;1;0 -1;2;3;1;2;2;1;1 -1;2;3;1;1;2;1;1 -1;2;3;1;2;1;0;0 -2;2;2;1;2;1;1;0 -1;2;2;1;2;1;1;0 +2;18;40;0;2;1;0;1 +2;54;40;0;2;1;0;1 +2;25;40;0;2;1;0;1 +2;41;40;0;2;1;0;1 +2;25;41;0;2;1;0;1 +2;18;40;0;1;1;1;1 +2;54;40;0;1;1;1;1 +2;25;40;0;1;1;1;1 +2;41;40;0;1;1;1;1 +2;25;41;0;1;1;1;1 +2;18;40;0;1;1;0;0 +2;54;40;0;1;1;0;0 +2;25;40;0;1;1;0;0 +2;41;40;0;1;1;0;0 +2;25;41;0;1;1;0;0 +2;18;40;0;1;2;0;0 +2;54;40;0;1;2;0;0 +2;25;40;0;1;2;0;0 +2;41;40;0;1;2;0;0 +2;25;41;0;1;2;0;0 +1;18;40;0;1;1;0;1 +1;54;40;0;1;1;0;1 +1;25;40;0;1;1;0;1 +1;41;40;0;1;1;0;1 +1;25;41;0;1;1;0;1 +2;18;39;0;2;1;1;1 +2;54;39;0;2;1;1;1 +2;25;39;0;2;1;1;1 +2;41;39;0;2;1;1;1 +2;25;20;0;2;1;1;1 +2;18;39;0;2;2;1;1 +2;54;39;0;2;2;1;1 +2;25;39;0;2;2;1;1 +2;41;39;0;2;2;1;1 +2;25;20;0;2;2;1;1 +2;18;39;0;1;1;1;0 +2;54;39;0;1;1;1;0 +2;25;39;0;1;1;1;0 +2;41;39;0;1;1;1;0 +2;25;20;0;1;1;1;0 +2;18;39;0;1;2;1;0 +2;54;39;0;1;2;1;0 +2;25;39;0;1;2;1;0 +2;41;39;0;1;2;1;0 +2;25;20;0;1;2;1;0 +1;18;39;0;1;1;1;1 +1;54;39;0;1;1;1;1 +1;25;39;0;1;1;1;1 +1;41;39;0;1;1;1;1 +1;25;20;0;1;1;1;1 +1;18;39;0;2;1;0;0 +1;54;39;0;2;1;0;0 +1;25;39;0;2;1;0;0 +1;41;39;0;2;1;0;0 +1;25;20;0;2;1;0;0 +2;18;40;1;2;1;1;1 +2;54;40;1;2;1;1;1 +2;25;40;1;2;1;1;1 +2;41;40;1;2;1;1;1 +2;25;41;1;2;1;1;1 +2;18;40;1;2;2;1;1 +2;54;40;1;2;2;1;1 +2;25;40;1;2;2;1;1 +2;41;40;1;2;2;1;1 +2;25;41;1;2;2;1;1 +2;18;40;1;1;1;1;0 +2;54;40;1;1;1;1;0 +2;25;40;1;1;1;1;0 +2;41;40;1;1;1;1;0 +2;25;41;1;1;1;1;0 +1;18;40;1;1;1;1;1 +1;54;40;1;1;1;1;1 +1;25;40;1;1;1;1;1 +1;41;40;1;1;1;1;1 +1;25;41;1;1;1;1;1 +1;18;40;1;1;2;1;1 +1;54;40;1;1;2;1;1 +1;25;40;1;1;2;1;1 +1;41;40;1;1;2;1;1 +1;25;41;1;1;2;1;1 +1;18;40;1;2;1;0;0 +1;54;40;1;2;1;0;0 +1;25;40;1;2;1;0;0 +1;41;40;1;2;1;0;0 +1;25;41;1;2;1;0;0 +2;18;39;1;2;1;1;0 +2;54;39;1;2;1;1;0 +2;25;39;1;2;1;1;0 +2;41;39;1;2;1;1;0 +2;25;20;1;2;1;1;0 +1;18;39;1;2;1;1;0 +1;54;39;1;2;1;1;0 +1;25;39;1;2;1;1;0 +1;41;39;1;2;1;1;0 +1;25;20;1;2;1;1;0 +1;18;19;0;2;1;1;0 +1;54;19;0;2;1;1;0 +1;25;19;0;2;1;1;0 +1;41;19;0;2;1;1;0 +1;25;19;0;2;1;1;0 +2;55;40;0;2;1;0;1 +2;63;40;0;2;1;0;1 +2;57;40;0;2;1;0;1 +2;72;40;0;2;1;0;1 +2;57;41;0;2;1;0;1 +2;55;40;0;2;2;1;1 +2;63;40;0;2;2;1;1 +2;57;40;0;2;2;1;1 +2;72;40;0;2;2;1;1 +2;57;41;0;2;2;1;1 +2;55;40;0;2;2;0;0 +2;63;40;0;2;2;0;0 +2;57;40;0;2;2;0;0 +2;72;40;0;2;2;0;0 +2;57;41;0;2;2;0;0 +2;55;40;0;1;2;0;0 +2;63;40;0;1;2;0;0 +2;57;40;0;1;2;0;0 +2;72;40;0;1;2;0;0 +2;57;41;0;1;2;0;0 +1;55;40;0;2;2;0;1 +1;63;40;0;2;2;0;1 +1;57;40;0;2;2;0;1 +1;72;40;0;2;2;0;1 +1;57;41;0;2;2;0;1 +2;55;39;0;2;1;1;1 +2;63;39;0;2;1;1;1 +2;57;39;0;2;1;1;1 +2;72;39;0;2;1;1;1 +2;57;20;0;2;1;1;1 +2;55;39;0;1;1;1;1 +2;63;39;0;1;1;1;1 +2;57;39;0;1;1;1;1 +2;72;39;0;1;1;1;1 +2;57;20;0;1;1;1;1 +2;55;39;0;2;2;1;0 +2;63;39;0;2;2;1;0 +2;57;39;0;2;2;1;0 +2;72;39;0;2;2;1;0 +2;57;20;0;2;2;1;0 +2;55;39;0;1;2;1;0 +2;63;39;0;1;2;1;0 +2;57;39;0;1;2;1;0 +2;72;39;0;1;2;1;0 +2;57;20;0;1;2;1;0 +1;55;39;0;2;2;1;1 +1;63;39;0;2;2;1;1 +1;57;39;0;2;2;1;1 +1;72;39;0;2;2;1;1 +1;57;20;0;2;2;1;1 +1;55;39;0;2;1;0;0 +1;63;39;0;2;1;0;0 +1;57;39;0;2;1;0;0 +1;72;39;0;2;1;0;0 +1;57;20;0;2;1;0;0 +2;55;40;1;2;1;1;1 +2;63;40;1;2;1;1;1 +2;57;40;1;2;1;1;1 +2;72;40;1;2;1;1;1 +2;57;41;1;2;1;1;1 +2;55;40;1;1;1;1;1 +2;63;40;1;1;1;1;1 +2;57;40;1;1;1;1;1 +2;72;40;1;1;1;1;1 +2;57;41;1;1;1;1;1 +2;55;40;1;2;2;1;0 +2;63;40;1;2;2;1;0 +2;57;40;1;2;2;1;0 +2;72;40;1;2;2;1;0 +2;57;41;1;2;2;1;0 +1;55;40;1;2;2;1;1 +1;63;40;1;2;2;1;1 +1;57;40;1;2;2;1;1 +1;72;40;1;2;2;1;1 +1;57;41;1;2;2;1;1 +1;55;40;1;1;2;1;1 +1;63;40;1;1;2;1;1 +1;57;40;1;1;2;1;1 +1;72;40;1;1;2;1;1 +1;57;41;1;1;2;1;1 +1;55;40;1;2;1;0;0 +1;63;40;1;2;1;0;0 +1;57;40;1;2;1;0;0 +1;72;40;1;2;1;0;0 +1;57;41;1;2;1;0;0 +2;55;39;1;2;1;1;0 +2;63;39;1;2;1;1;0 +2;57;39;1;2;1;1;0 +2;72;39;1;2;1;1;0 +2;57;20;1;2;1;1;0 +1;55;39;1;2;1;1;0 +1;63;39;1;2;1;1;0 +1;57;39;1;2;1;1;0 +1;72;39;1;2;1;1;0 +1;57;20;1;2;1;1;0 +1;55;19;0;2;1;1;0 +1;63;19;0;2;1;1;0 +1;57;19;0;2;1;1;0 +1;72;19;0;2;1;1;0 +1;57;19;0;2;1;1;0 diff --git a/drzewo.png b/drzewo.png new file mode 100644 index 0000000..e1c70a7 Binary files /dev/null and b/drzewo.png differ diff --git a/rescue.py b/rescue.py index 69fab77..bb5aa6b 100644 --- a/rescue.py +++ b/rescue.py @@ -1,28 +1,33 @@ import random import pandas as pd +import pydotplus from sklearn.tree import DecisionTreeClassifier -from sklearn.model_selection import train_test_split -from sklearn import metrics - from krata import * +from sklearn import metrics, tree def drzewo_decyzyjne(): columns = ['plec', 'wiek', 'czas_w_pom', 'temp_w_pom', 'poziom_kurzu', 'poziom_oswietlenia', 'niebezp_towary', 'decyzja'] df = pd.read_csv("dataset.csv", header=0, sep=";", names=columns) - x = df[['plec', 'wiek', 'czas_w_pom', 'temp_w_pom', 'poziom_kurzu', 'poziom_oswietlenia', 'niebezp_towary']] + kolumny_x=['plec', 'wiek', 'czas_w_pom', 'temp_w_pom', 'poziom_kurzu', 'poziom_oswietlenia', 'niebezp_towary'] + x = df[kolumny_x] y = df.decyzja #df.info() #X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3) clf = DecisionTreeClassifier() clf = clf.fit(x, y) # print("Dokładność: ", metrics.accuracy_score(y_test, y_pred)) + + dot_data = tree.export_graphviz(clf, out_file=None, feature_names=kolumny_x, class_names=['0', '1']) + graph = pydotplus.graph_from_dot_data(dot_data) + graph.write_png('drzewo.png') + return clf def decyzja_osoba(osoba: PoleKraty, clf: DecisionTreeClassifier): z=[] z.extend(random.choices([1,2], weights=[1,2], k=1)) #1 kobieta, 2 mężczyzna - z.extend(random.choices([1, 2], weights=[4,1], k=1)) # 1 dorosły, 2 osoba starsza - z.extend(random.choices([1, 2, 3], weights=[2, 5, 3], k=1)) # jak długo przebywa w pomieszczeniu, 3 to nadłużej + z.append(random.randint(18, 75)) #od 55 osoba starsza + z.append(random.randint(1, 60)) # jak długo przebywa w pomieszczeniu, od 40 min długo, od 20 min średnio, do 20 min krótko if osoba.kolumna > 21: z.append(0) # zimne pomieszczenie else: