2021-05-18 00:21:14 +02:00
|
|
|
import pandas as pd
|
2021-05-18 19:01:17 +02:00
|
|
|
import json
|
2021-05-18 21:09:10 +02:00
|
|
|
from sklearn import tree
|
|
|
|
import pydotplus
|
|
|
|
from sklearn.tree import DecisionTreeClassifier
|
|
|
|
import matplotlib.pyplot as plt
|
|
|
|
import matplotlib.image as pltimg
|
|
|
|
import pickle
|
2021-05-18 00:21:14 +02:00
|
|
|
class DecisionTree:
|
|
|
|
|
2021-05-18 17:25:03 +02:00
|
|
|
|
2021-05-18 19:01:17 +02:00
|
|
|
def __init__(self, doCreation):
|
2021-05-18 21:09:10 +02:00
|
|
|
self.data = pd.read_csv("C:\\Users\\kratu\\PycharmProjects\\Projekt_AI-Automatyczny_saper\\out.csv")
|
2021-05-18 19:01:17 +02:00
|
|
|
if doCreation:
|
2021-05-18 21:09:10 +02:00
|
|
|
self.mapData()
|
|
|
|
features = ['bomb_type', 'detonation_duration', 'size', 'detonation_area', 'defusable']
|
|
|
|
X = self.data[features]
|
|
|
|
y = self.data['action']
|
|
|
|
dtree = DecisionTreeClassifier()
|
|
|
|
dtree = dtree.fit(X, y)
|
|
|
|
decision_tree_model_pkl = open('tree.pkl', 'wb')
|
|
|
|
pickle.dump(dtree, decision_tree_model_pkl)
|
|
|
|
decision_tree_model_pkl.close()
|
|
|
|
decision_tree_model_pkl = open('Engine/tree.pkl', 'rb')
|
|
|
|
self.dtree = pickle.load(decision_tree_model_pkl)
|
|
|
|
|
|
|
|
def getTree(self):
|
|
|
|
return self.dtree
|
|
|
|
|
|
|
|
def mapData(self):
|
|
|
|
d = {'Atomic Bomb': 0, 'Claymore': 1, 'Land Mine': 2, 'Chemical Bomb': 3, 'Decoy': 4}
|
|
|
|
self.data['bomb_type'] = self.data['bomb_type'].map(d)
|
|
|
|
d = {'immediate': 0, 'short': 1, 'long': 2, 'none': 3}
|
|
|
|
self.data['detonation_duration'] = self.data['detonation_duration'].map(d)
|
|
|
|
d = {'small': 0, 'medium': 1, 'large': 2}
|
|
|
|
self.data['size'] = self.data['size'].map(d)
|
|
|
|
d = {'small': 0, 'large': 1}
|
|
|
|
self.data['detonation_area'] = self.data['detonation_area'].map(d)
|
|
|
|
d = {'no': 0, 'yes': 1}
|
|
|
|
self.data['defusable'] = self.data['defusable'].map(d)
|
|
|
|
d = {'detonate': 0, 'poligon': 1, 'defuse': 2}
|
|
|
|
self.data['action'] = self.data['action'].map(d)
|
|
|
|
|
|
|
|
def mapAction(self, action):
|
|
|
|
d = {0 : 'detonate', 1 : 'poligon', 2 : 'defuse'}
|
|
|
|
return d.get(action)
|
2021-05-18 00:21:14 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
2021-05-18 19:01:17 +02:00
|
|
|
if __name__ == "__main__":
|
2021-05-18 21:09:10 +02:00
|
|
|
# data = pd.read_csv("C:\\Users\\kratu\\PycharmProjects\\Projekt_AI-Automatyczny_saper\\out.csv")
|
|
|
|
DecisionTree(True)
|
|
|
|
# with open('C:\\Users\\kratu\\PycharmProjects\\Projekt_AI-Automatyczny_saper\\DecisionTree.json', 'w') as fp:
|
|
|
|
# json.dump(tree, fp)
|
2021-05-18 19:01:17 +02:00
|
|
|
|
2021-05-18 00:21:14 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
2021-05-18 17:25:03 +02:00
|
|
|
|
|
|
|
|