DecisionTreedemo

This commit is contained in:
s464923 2024-05-13 00:14:29 +02:00
parent 9c398488e5
commit 06e13b8f19
3 changed files with 101 additions and 28 deletions

View File

@ -1,4 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="Black">
<option name="sdkName" value="Python 3.9 (traktor)" />
</component>
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9 (traktor)" project-jdk-type="Python SDK" /> <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9 (traktor)" project-jdk-type="Python SDK" />
</project> </project>

106
dane.csv
View File

@ -1,21 +1,85 @@
rodzaj_gleby,wilgotnosc_gleby,temperatura_powietrza,wilgotnosc_powietrza,rodzaj_rosliny,nazwa_rosliny,pora_roku,pora_dnia,podlac wilgotnosc_gleby,temperatura_gleby,opady_deszczu,wiek_rosliny,proc_ekspo_na_swiatlo,pora_dnia,pora_roku,roslina,podlac
piasek,sucha,25,niska,drzewa,modrzew,jesien,południe,tak 40, 20, 5, 3, 70, 10, 2, Marchew, nie
glina,umiarkowana,20,średnia,kwiaty,róża,wiosna,ranek,tak 60, 25, 0, 2, 50, 15, 3, Ziemniaki, tak
piasek,duża,30,wysoka,warzywa,pomidor,lato,południe,tak 30, 18, 10, 1, 80, 12, 4, Pomidor, nie
piasek,umiarkowana,22,średnia,krzewy,jeżyna,lato,południe,tak 50, 22, 3, 4, 60, 18, 1, Salata, tak
glina,mała,18,niska,drzewa,dąb,jesien,ranek,nie 45, 23, 2, 5, 75, 8, 2, Cebula, tak
glina,sucha,24,średnia,kwiaty,tulipan,wiosna,południe,tak 55, 26, 8, 3, 70, 14, 3, Papryka, nie
piasek,duża,28,wysoka,warzywa,ogórek,lato,południe,tak 35, 21, 1, 2, 55, 16, 4, Buraki, tak
glina,umiarkowana,19,średnia,krzewy,porzeczka,lato,południe,tak 65, 24, 6, 4, 80, 11, 1, Brukselka, nie
piasek,umiarkowana,26,średnia,drzewa,jabłoń,lato,południe,tak 42, 20, 4, 3, 65, 13, 2, Rzepak, tak
piasek,sucha,23,średnia,warzywa,papryka,lato,południe,tak 48, 22, 7, 5, 75, 9, 3, Szpinak, tak
glina,mała,17,niska,kwiaty,storczyk,wiosna,ranek,nie 30, 25, 0, 1, 70, 14, 2, Marchew, tak
piasek,sucha,27,wysoka,drzewa,grab,jesien,południe,tak 60, 18, 10, 2, 60, 8, 3, Ziemniaki, nie
glina,umiarkowana,21,średnia,krzewy,jagoda,lato,południe,tak 35, 20, 2, 3, 50, 12, 4, Pomidor, tak
piasek,duża,29,średnia,warzywa,cukinia,lato,południe,tak 50, 23, 1, 4, 65, 17, 1, Salata, tak
glina,mała,16,niska,kwiaty,fiołek,wiosna,południe,nie 45, 24, 5, 5, 80, 10, 2, Cebula, tak
piasek,sucha,26,średnia,drzewa,sosna,jesien,południe,tak 55, 22, 3, 3, 75, 13, 3, Papryka, nie
glina,umiarkowana,20,średnia,krzewy,agrest,lato,ranek,tak 40, 26, 8, 6, 70, 16, 1, Buraki, nie
piasek,duża,31,wysoka,warzywa,kapusta,lato,południe,tak 62, 21, 1, 4, 85, 9, 2, Brukselka, tak
piasek,umiarkowana,24,średnia,krzewy,czarny bez,lato,południe,tak 47, 25, 6, 5, 60, 11, 3, Rzepak, nie
glina,sucha,22,niska,drzewa,jesion,jesien,południe,tak 58, 20, 4, 3, 75, 14, 4, Szpinak, tak
38, 24, 7, 3, 65, 11, 1, Marchew, tak
59, 20, 3, 2, 55, 16, 2, Ziemniaki, nie
33, 22, 5, 1, 70, 9, 3, Pomidor, nie
52, 25, 2, 4, 80, 14, 4, Salata, tak
46, 21, 1, 5, 75, 10, 1, Cebula, tak
56, 26, 8, 3, 70, 15, 2, Papryka, nie
34, 23, 0, 2, 60, 8, 3, Buraki, nie
63, 18, 4, 4, 85, 12, 4, Brukselka, nie
41, 20, 1, 3, 65, 13, 1, Rzepak, tak
49, 22, 9, 5, 75, 17, 2, Szpinak, tak
29, 25, 0, 2, 70, 14, 3, Marchew, tak
61, 18, 11, 3, 60, 8, 1, Ziemniaki, nie
37, 20, 2, 4, 50, 12, 2, Pomidor, tak
51, 23, 0, 5, 65, 16, 4, Salata, tak
44, 24, 4, 6, 80, 10, 3, Cebula, tak
54, 22, 3, 3, 75, 13, 1, Papryka, nie
39, 26, 7, 1, 70, 15, 2, Buraki, nie
64, 21, 0, 4, 85, 9, 3, Brukselka, tak
48, 25, 5, 5, 60, 11, 4, Rzepak, nie
57, 20, 2, 3, 75, 14, 1, Szpinak, tak
32, 24, 8, 3, 65, 10, 2, Marchew, tak
62, 19, 2, 2, 55, 15, 3, Ziemniaki, nie
36, 21, 1, 1, 70, 12, 4, Pomidor, nie
53, 22, 4, 4, 80, 16, 1, Salata, tak
42, 23, 2, 5, 75, 8, 2, Cebula, tak
58, 26, 6, 3, 70, 14, 3, Papryka, nie
35, 21, 0, 2, 60, 17, 4, Buraki, nie
65, 18, 3, 4, 85, 11, 1, Brukselka, nie
45, 20, 1, 3, 65, 13, 2, Rzepak, tak
50, 22, 7, 5, 75, 9, 3, Szpinak, tak
31, 25, 0, 2, 70, 14, 1, Marchew, tak
60, 18, 9, 3, 60, 8, 2, Ziemniaki, nie
34, 20, 3, 4, 50, 12, 3, Pomidor, tak
52, 23, 1, 5, 65, 16, 4, Salata, tak
47, 24, 6, 6, 80, 10, 1, Cebula, tak
55, 22, 2, 3, 75, 13, 2, Papryka, nie
38, 26, 8, 1, 70, 15, 3, Buraki, nie
64, 21, 0, 4, 85, 9, 4, Brukselka, tak
41, 20, 2, 3, 65, 13, 1, Rzepak, tak
49, 22, 8, 5, 75, 17, 2, Szpinak, tak
30, 24, 1, 2, 70, 14, 3, Marchew, tak
61, 18, 10, 3, 60, 8, 1, Ziemniaki, nie
37, 20, 4, 4, 50, 12, 2, Pomidor, tak
51, 23, 2, 5, 65, 16, 4, Salata, tak
44, 24, 5, 6, 80, 10, 3, Cebula, tak
53, 22, 3, 3, 75, 13, 1, Papryka, nie
39, 26, 7, 1, 70, 15, 2, Buraki, nie
65, 21, 0, 4, 85, 9, 3, Brukselka, tak
48, 25, 6, 5, 60, 11, 4, Rzepak, nie
57, 20, 3, 3, 75, 14, 1, Szpinak, tak
32, 24, 9, 2, 65, 10, 2, Marchew, tak
62, 19, 1, 2, 55, 15, 3, Ziemniaki, nie
36, 21, 2, 1, 70, 12, 4, Pomidor, nie
55, 23, 3, 4, 80, 16, 1, Salata, tak
42, 23, 1, 5, 75, 8, 2, Cebula, tak
58, 26, 5, 3, 70, 14, 3, Papryka, nie
35, 21, 0, 2, 60, 17, 4, Buraki, nie
46, 20, 2, 3, 65, 13, 2, Rzepak, tak
50, 22, 6, 5, 75, 9, 3, Szpinak, tak
31, 25, 1, 2, 70, 14, 1, Marchew, tak
60, 18, 8, 3, 60, 8, 2, Ziemniaki, nie
33, 20, 4, 4, 50, 12, 3, Pomidor, tak
52, 23, 1, 5, 65, 16, 4, Salata, tak
47, 24, 7, 6, 80, 10, 1, Cebula, tak

1 rodzaj_gleby wilgotnosc_gleby temperatura_gleby temperatura_powietrza opady_deszczu wilgotnosc_powietrza wiek_rosliny rodzaj_rosliny proc_ekspo_na_swiatlo nazwa_rosliny pora_dnia pora_roku roslina podlac
2 piasek sucha 40 20 25 5 niska 3 drzewa 70 modrzew południe 10 jesien 2 Marchew tak nie
3 glina umiarkowana 60 25 20 0 średnia 2 kwiaty 50 róża ranek 15 wiosna 3 Ziemniaki tak
4 piasek duża 30 18 30 10 wysoka 1 warzywa 80 pomidor południe 12 lato 4 Pomidor tak nie
5 piasek umiarkowana 50 22 22 3 średnia 4 krzewy 60 jeżyna południe 18 lato 1 Salata tak
6 glina mała 45 23 18 2 niska 5 drzewa 75 dąb ranek 8 jesien 2 Cebula nie tak
7 glina sucha 55 26 24 8 średnia 3 kwiaty 70 tulipan południe 14 wiosna 3 Papryka tak nie
8 piasek duża 35 21 28 1 wysoka 2 warzywa 55 ogórek południe 16 lato 4 Buraki tak
9 glina umiarkowana 65 24 19 6 średnia 4 krzewy 80 porzeczka południe 11 lato 1 Brukselka tak nie
10 piasek umiarkowana 42 20 26 4 średnia 3 drzewa 65 jabłoń południe 13 lato 2 Rzepak tak
11 piasek sucha 48 22 23 7 średnia 5 warzywa 75 papryka południe 9 lato 3 Szpinak tak
12 glina mała 30 25 17 0 niska 1 kwiaty 70 storczyk ranek 14 wiosna 2 Marchew nie tak
13 piasek sucha 60 18 27 10 wysoka 2 drzewa 60 grab południe 8 jesien 3 Ziemniaki tak nie
14 glina umiarkowana 35 20 21 2 średnia 3 krzewy 50 jagoda południe 12 lato 4 Pomidor tak
15 piasek duża 50 23 29 1 średnia 4 warzywa 65 cukinia południe 17 lato 1 Salata tak
16 glina mała 45 24 16 5 niska 5 kwiaty 80 fiołek południe 10 wiosna 2 Cebula nie tak
17 piasek sucha 55 22 26 3 średnia 3 drzewa 75 sosna południe 13 jesien 3 Papryka tak nie
18 glina umiarkowana 40 26 20 8 średnia 6 krzewy 70 agrest ranek 16 lato 1 Buraki tak nie
19 piasek duża 62 21 31 1 wysoka 4 warzywa 85 kapusta południe 9 lato 2 Brukselka tak
20 piasek umiarkowana 47 25 24 6 średnia 5 krzewy 60 czarny bez południe 11 lato 3 Rzepak tak nie
21 glina sucha 58 20 22 4 niska 3 drzewa 75 jesion południe 14 jesien 4 Szpinak tak
22 38 24 7 3 65 11 1 Marchew tak
23 59 20 3 2 55 16 2 Ziemniaki nie
24 33 22 5 1 70 9 3 Pomidor nie
25 52 25 2 4 80 14 4 Salata tak
26 46 21 1 5 75 10 1 Cebula tak
27 56 26 8 3 70 15 2 Papryka nie
28 34 23 0 2 60 8 3 Buraki nie
29 63 18 4 4 85 12 4 Brukselka nie
30 41 20 1 3 65 13 1 Rzepak tak
31 49 22 9 5 75 17 2 Szpinak tak
32 29 25 0 2 70 14 3 Marchew tak
33 61 18 11 3 60 8 1 Ziemniaki nie
34 37 20 2 4 50 12 2 Pomidor tak
35 51 23 0 5 65 16 4 Salata tak
36 44 24 4 6 80 10 3 Cebula tak
37 54 22 3 3 75 13 1 Papryka nie
38 39 26 7 1 70 15 2 Buraki nie
39 64 21 0 4 85 9 3 Brukselka tak
40 48 25 5 5 60 11 4 Rzepak nie
41 57 20 2 3 75 14 1 Szpinak tak
42 32 24 8 3 65 10 2 Marchew tak
43 62 19 2 2 55 15 3 Ziemniaki nie
44 36 21 1 1 70 12 4 Pomidor nie
45 53 22 4 4 80 16 1 Salata tak
46 42 23 2 5 75 8 2 Cebula tak
47 58 26 6 3 70 14 3 Papryka nie
48 35 21 0 2 60 17 4 Buraki nie
49 65 18 3 4 85 11 1 Brukselka nie
50 45 20 1 3 65 13 2 Rzepak tak
51 50 22 7 5 75 9 3 Szpinak tak
52 31 25 0 2 70 14 1 Marchew tak
53 60 18 9 3 60 8 2 Ziemniaki nie
54 34 20 3 4 50 12 3 Pomidor tak
55 52 23 1 5 65 16 4 Salata tak
56 47 24 6 6 80 10 1 Cebula tak
57 55 22 2 3 75 13 2 Papryka nie
58 38 26 8 1 70 15 3 Buraki nie
59 64 21 0 4 85 9 4 Brukselka tak
60 41 20 2 3 65 13 1 Rzepak tak
61 49 22 8 5 75 17 2 Szpinak tak
62 30 24 1 2 70 14 3 Marchew tak
63 61 18 10 3 60 8 1 Ziemniaki nie
64 37 20 4 4 50 12 2 Pomidor tak
65 51 23 2 5 65 16 4 Salata tak
66 44 24 5 6 80 10 3 Cebula tak
67 53 22 3 3 75 13 1 Papryka nie
68 39 26 7 1 70 15 2 Buraki nie
69 65 21 0 4 85 9 3 Brukselka tak
70 48 25 6 5 60 11 4 Rzepak nie
71 57 20 3 3 75 14 1 Szpinak tak
72 32 24 9 2 65 10 2 Marchew tak
73 62 19 1 2 55 15 3 Ziemniaki nie
74 36 21 2 1 70 12 4 Pomidor nie
75 55 23 3 4 80 16 1 Salata tak
76 42 23 1 5 75 8 2 Cebula tak
77 58 26 5 3 70 14 3 Papryka nie
78 35 21 0 2 60 17 4 Buraki nie
79 46 20 2 3 65 13 2 Rzepak tak
80 50 22 6 5 75 9 3 Szpinak tak
81 31 25 1 2 70 14 1 Marchew tak
82 60 18 8 3 60 8 2 Ziemniaki nie
83 33 20 4 4 50 12 3 Pomidor tak
84 52 23 1 5 65 16 4 Salata tak
85 47 24 7 6 80 10 1 Cebula tak

View File

@ -2,27 +2,33 @@ from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier, plot_tree from sklearn.tree import DecisionTreeClassifier, plot_tree
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
import pandas as pd import pandas as pd
from sklearn import tree
data = pd.read_csv("dane.csv") data = pd.read_csv("dane.csv")
print(data)
# Wczytanie danych # Wczytanie danych
X = data.drop(columns=["podlac"]) X = data.drop(columns=["podlac"])
X = pd.get_dummies(X) X = pd.get_dummies(X)
y = data["podlac"] y = data["podlac"]
# Podział danych na zbiór treningowy i testowy # Podział danych na zbiór treningowy i testowy
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Inicjalizacja i dopasowanie modelu drzewa decyzyjnego # Inicjalizacja i dopasowanie modelu drzewa decyzyjnego
clf = DecisionTreeClassifier() model = DecisionTreeClassifier()
clf.fit(X_train, y_train) model.fit(X_train, y_train)
# Wyliczenie poprawności algorytmu
accuracy = clf.score(X_test, y_test) accuracy = model.score(X_test, y_test)
print("Accuracy:", accuracy) print("Accuracy:", accuracy)
# Wyświetlenie drzewa decyzyjnego # Wyświetlenie drzewa decyzyjnego
plt.figure(figsize=(8, 5)) plt.figure(figsize=(8, 5))
plot_tree(clf, feature_names=X.columns, class_names=["Nie podlać", "Podlać"], filled=True) plot_tree(model, feature_names=X.columns, class_names=["Nie podlać", "Podlać"], filled=True)
plt.show() plt.show()