Drzewo decyzyjne - uzupełnienie

This commit is contained in:
s464931 2022-05-18 01:10:31 +02:00
parent bf0f1a4362
commit 457248b9fa
3 changed files with 211 additions and 44 deletions

View File

@ -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

1 plec wiek czas_w_pom temp_w_pom poziom_kurzu poziom_oswietlenia niebezp_towary decyzja
2 2 1 18 3 40 0 2 1 0 1
3 2 1 54 3 40 0 1 2 1 1 0 1
4 2 1 25 3 40 0 1 2 1 0 0 1
5 2 1 41 3 40 0 1 2 2 1 0 0 1
6 1 2 1 25 3 41 0 1 2 1 0 1
7 2 1 18 2 40 0 2 1 1 1 1
8 2 1 54 2 40 0 2 1 2 1 1 1
9 2 1 25 2 40 0 1 1 1 0 1
10 2 1 41 2 40 0 1 2 1 1 0 1
11 1 2 1 25 2 41 0 1 1 1 1
12 1 2 1 18 2 40 0 2 1 1 0 0
13 2 1 54 3 40 1 0 2 1 1 1 0 1 0
14 2 1 25 3 40 1 0 2 1 2 1 1 0 1 0
15 2 1 41 3 40 1 0 1 1 1 0 0
16 1 2 1 25 3 41 1 0 1 1 1 0 1 0
17 1 2 1 18 3 40 1 0 1 2 1 0 1 0
18 1 2 1 54 3 40 1 0 2 1 1 2 0 0
19 2 1 25 2 40 1 0 2 1 1 2 1 0 0
20 1 2 1 41 2 40 1 0 2 1 1 2 1 0 0
21 2 2 25 3 41 0 2 1 1 2 0 1 0
22 2 1 2 18 3 40 0 2 1 2 1 1 0 1
23 2 1 2 54 3 40 0 2 1 2 1 0 0 1
24 2 1 2 25 3 40 0 1 2 1 0 0 1
25 1 2 41 3 40 0 2 1 2 1 0 1
26 2 1 2 25 2 41 0 2 1 1 1 0 1
27 2 2 18 2 39 0 1 2 1 1 1
28 2 2 54 2 39 0 2 2 1 1 0 1
29 2 2 25 2 39 0 1 2 2 1 1 0 1
30 1 2 2 41 2 39 0 2 2 1 1 1
31 1 2 2 25 2 20 0 2 1 0 1 0 1
32 2 2 18 3 39 1 0 2 1 2 1 1
33 2 2 54 3 39 1 0 1 2 1 2 1 1
34 2 2 25 3 39 1 0 2 2 1 0 1
35 1 2 2 41 3 39 1 0 2 2 1 1
36 1 2 2 25 3 20 1 0 1 2 2 1 1
37 1 2 2 18 3 39 1 0 2 1 1 0 1 0
38 2 2 54 2 39 1 0 2 1 1 1 0
39 1 2 2 25 2 39 1 0 2 1 1 1 0
40 2 41 39 0 1 1 1 0
41 2 25 20 0 1 1 1 0
42 2 18 39 0 1 2 1 0
43 2 54 39 0 1 2 1 0
44 2 25 39 0 1 2 1 0
45 2 41 39 0 1 2 1 0
46 2 25 20 0 1 2 1 0
47 1 18 39 0 1 1 1 1
48 1 54 39 0 1 1 1 1
49 1 25 39 0 1 1 1 1
50 1 41 39 0 1 1 1 1
51 1 25 20 0 1 1 1 1
52 1 18 39 0 2 1 0 0
53 1 54 39 0 2 1 0 0
54 1 25 39 0 2 1 0 0
55 1 41 39 0 2 1 0 0
56 1 25 20 0 2 1 0 0
57 2 18 40 1 2 1 1 1
58 2 54 40 1 2 1 1 1
59 2 25 40 1 2 1 1 1
60 2 41 40 1 2 1 1 1
61 2 25 41 1 2 1 1 1
62 2 18 40 1 2 2 1 1
63 2 54 40 1 2 2 1 1
64 2 25 40 1 2 2 1 1
65 2 41 40 1 2 2 1 1
66 2 25 41 1 2 2 1 1
67 2 18 40 1 1 1 1 0
68 2 54 40 1 1 1 1 0
69 2 25 40 1 1 1 1 0
70 2 41 40 1 1 1 1 0
71 2 25 41 1 1 1 1 0
72 1 18 40 1 1 1 1 1
73 1 54 40 1 1 1 1 1
74 1 25 40 1 1 1 1 1
75 1 41 40 1 1 1 1 1
76 1 25 41 1 1 1 1 1
77 1 18 40 1 1 2 1 1
78 1 54 40 1 1 2 1 1
79 1 25 40 1 1 2 1 1
80 1 41 40 1 1 2 1 1
81 1 25 41 1 1 2 1 1
82 1 18 40 1 2 1 0 0
83 1 54 40 1 2 1 0 0
84 1 25 40 1 2 1 0 0
85 1 41 40 1 2 1 0 0
86 1 25 41 1 2 1 0 0
87 2 18 39 1 2 1 1 0
88 2 54 39 1 2 1 1 0
89 2 25 39 1 2 1 1 0
90 2 41 39 1 2 1 1 0
91 2 25 20 1 2 1 1 0
92 1 18 39 1 2 1 1 0
93 1 54 39 1 2 1 1 0
94 1 25 39 1 2 1 1 0
95 1 41 39 1 2 1 1 0
96 1 25 20 1 2 1 1 0
97 1 18 19 0 2 1 1 0
98 1 54 19 0 2 1 1 0
99 1 25 19 0 2 1 1 0
100 1 41 19 0 2 1 1 0
101 1 25 19 0 2 1 1 0
102 2 55 40 0 2 1 0 1
103 2 63 40 0 2 1 0 1
104 2 57 40 0 2 1 0 1
105 2 72 40 0 2 1 0 1
106 2 57 41 0 2 1 0 1
107 2 55 40 0 2 2 1 1
108 2 63 40 0 2 2 1 1
109 2 57 40 0 2 2 1 1
110 2 72 40 0 2 2 1 1
111 2 57 41 0 2 2 1 1
112 2 55 40 0 2 2 0 0
113 2 63 40 0 2 2 0 0
114 2 57 40 0 2 2 0 0
115 2 72 40 0 2 2 0 0
116 2 57 41 0 2 2 0 0
117 2 55 40 0 1 2 0 0
118 2 63 40 0 1 2 0 0
119 2 57 40 0 1 2 0 0
120 2 72 40 0 1 2 0 0
121 2 57 41 0 1 2 0 0
122 1 55 40 0 2 2 0 1
123 1 63 40 0 2 2 0 1
124 1 57 40 0 2 2 0 1
125 1 72 40 0 2 2 0 1
126 1 57 41 0 2 2 0 1
127 2 55 39 0 2 1 1 1
128 2 63 39 0 2 1 1 1
129 2 57 39 0 2 1 1 1
130 2 72 39 0 2 1 1 1
131 2 57 20 0 2 1 1 1
132 2 55 39 0 1 1 1 1
133 2 63 39 0 1 1 1 1
134 2 57 39 0 1 1 1 1
135 2 72 39 0 1 1 1 1
136 2 57 20 0 1 1 1 1
137 2 55 39 0 2 2 1 0
138 2 63 39 0 2 2 1 0
139 2 57 39 0 2 2 1 0
140 2 72 39 0 2 2 1 0
141 2 57 20 0 2 2 1 0
142 2 55 39 0 1 2 1 0
143 2 63 39 0 1 2 1 0
144 2 57 39 0 1 2 1 0
145 2 72 39 0 1 2 1 0
146 2 57 20 0 1 2 1 0
147 1 55 39 0 2 2 1 1
148 1 63 39 0 2 2 1 1
149 1 57 39 0 2 2 1 1
150 1 72 39 0 2 2 1 1
151 1 57 20 0 2 2 1 1
152 1 55 39 0 2 1 0 0
153 1 63 39 0 2 1 0 0
154 1 57 39 0 2 1 0 0
155 1 72 39 0 2 1 0 0
156 1 57 20 0 2 1 0 0
157 2 55 40 1 2 1 1 1
158 2 63 40 1 2 1 1 1
159 2 57 40 1 2 1 1 1
160 2 72 40 1 2 1 1 1
161 2 57 41 1 2 1 1 1
162 2 55 40 1 1 1 1 1
163 2 63 40 1 1 1 1 1
164 2 57 40 1 1 1 1 1
165 2 72 40 1 1 1 1 1
166 2 57 41 1 1 1 1 1
167 2 55 40 1 2 2 1 0
168 2 63 40 1 2 2 1 0
169 2 57 40 1 2 2 1 0
170 2 72 40 1 2 2 1 0
171 2 57 41 1 2 2 1 0
172 1 55 40 1 2 2 1 1
173 1 63 40 1 2 2 1 1
174 1 57 40 1 2 2 1 1
175 1 72 40 1 2 2 1 1
176 1 57 41 1 2 2 1 1
177 1 55 40 1 1 2 1 1
178 1 63 40 1 1 2 1 1
179 1 57 40 1 1 2 1 1
180 1 72 40 1 1 2 1 1
181 1 57 41 1 1 2 1 1
182 1 55 40 1 2 1 0 0
183 1 63 40 1 2 1 0 0
184 1 57 40 1 2 1 0 0
185 1 72 40 1 2 1 0 0
186 1 57 41 1 2 1 0 0
187 2 55 39 1 2 1 1 0
188 2 63 39 1 2 1 1 0
189 2 57 39 1 2 1 1 0
190 2 72 39 1 2 1 1 0
191 2 57 20 1 2 1 1 0
192 1 55 39 1 2 1 1 0
193 1 63 39 1 2 1 1 0
194 1 57 39 1 2 1 1 0
195 1 72 39 1 2 1 1 0
196 1 57 20 1 2 1 1 0
197 1 55 19 0 2 1 1 0
198 1 63 19 0 2 1 1 0
199 1 57 19 0 2 1 1 0
200 1 72 19 0 2 1 1 0
201 1 57 19 0 2 1 1 0

BIN
drzewo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

View File

@ -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: