InteligentnySaper/classes/decisionTrees.py

59 lines
1.8 KiB
Python
Raw Normal View History

from chefboost import Chefboost as chef
from multiprocessing import freeze_support
import pandas as pd
from numpy import random
2022-05-19 11:45:35 +02:00
# decision tree create
2022-05-19 11:45:35 +02:00
###############
2022-05-19 11:45:35 +02:00
class DecisionTrees:
2022-05-19 12:26:48 +02:00
def create_model(self):
2022-05-19 17:41:27 +02:00
model = chef.fit(pd.read_csv("data/db.txt"), {'algorithm': 'ID3'})
2022-05-19 12:26:48 +02:00
return model
def return_predict(self, mod):
# read data
2022-05-19 17:41:27 +02:00
#df = pd.read_csv("data/db.txt")
2022-05-19 11:45:35 +02:00
# Header of df looks like:
header = ['Size(bigger_more_difficult)', 'Year(older_more_difficult)', 'Protection_from_defuse',
'Meters_under_the_ground', 'Random_detonation_chance', 'Detonation_power_in_m',
'Decision']
# print data
# print(df.head())
# ID3 config
2022-05-19 17:41:27 +02:00
#config = {'algorithm': 'ID3'}
# create decision tree
# print predict
# print(chef.predict(model, [1, 2022, 0, 0, 0, 10]))
2022-05-19 11:45:35 +02:00
# random generate characteristics for mine
size = random.randint(1, 10)
year = random.randint(1941, 2022)
protection = 0
if year >= 2000:
protection = random.choice([1, 0, 1])
m_under_the_ground = random.randint(0, 10)
detonation_chance = random.randint(0, 100)
detonation_power_in_m = random.randint(0, 10)
detonation_power_in_m = detonation_power_in_m - m_under_the_ground
if detonation_power_in_m <= 0:
detonation_power_in_m = 0
mine_characteristics = [size, year, protection, m_under_the_ground, detonation_chance, detonation_power_in_m]
2022-05-19 11:45:35 +02:00
# print data about mine
print("Mine characteristics : ")
cnt = 0
for i in mine_characteristics:
print(header[cnt], " = ", i)
cnt += 1
# return prediction
2022-05-19 12:26:48 +02:00
return chef.predict(mod, mine_characteristics)