SprytnyTraktor/treelearn.py

24 lines
1.3 KiB
Python
Raw Normal View History

2021-05-15 22:41:07 +02:00
import matplotlib.image as pltimg
import matplotlib.pyplot as plt
import os
import pandas
import pydotplus
from sklearn import tree
from sklearn.tree import DecisionTreeClassifier
2021-05-16 15:36:53 +02:00
def treelearn(): #zwraca utworzone drzewo decyzyjne
df = pandas.read_csv(os.path.join('resources', 'data.csv')) #czytanie danych do nauki drzewa z pliku .csv
2021-05-15 22:41:07 +02:00
features = ['amount of seeds', 'collected plants', 'fertilizer', 'fuel', 'water level']
2021-05-16 15:36:53 +02:00
x = df[features] #wczytanie atrybutów, z których ma się uczyć drzewo
y = df['back to station'] #podjęte decyzje
dtree = DecisionTreeClassifier() #tworzy obiekt drzewa
dtree = dtree.fit(x, y) #uczy drzewo
2021-05-15 22:41:07 +02:00
data = tree.export_graphviz(dtree, out_file=None, feature_names=features)
graph = pydotplus.graph_from_dot_data(data)
graph.write_png(os.path.join('resources', 'mydecisiontree.png'))
img = pltimg.imread(os.path.join('resources', 'mydecisiontree.png'))
2021-05-15 22:41:07 +02:00
imgplot = plt.imshow(img)
2021-05-16 15:36:53 +02:00
plt.show() #wyświetl drzewo decyzyjne
return dtree
def make_decision(tree, amount_of_seeds, collected_plants, fertilizer, fuel, water_level): #zwraca decyzję o powrocie do stacji (0 : NIE, 1 : TAK)
decision = tree.predict([[amount_of_seeds, collected_plants, fertilizer, fuel, water_level]]) #podejmij decyzję na podstawie aktualnych parametrów traktora o powrocie do stacji lub nie
return decision