Merge pull request 'learn, graph, read csv; decision making' (#23) from decisiontree into master
Reviewed-on: #23
This commit is contained in:
commit
ea8187f586
100
main.py
100
main.py
@ -7,28 +7,30 @@ import astar
|
|||||||
import common
|
import common
|
||||||
import field
|
import field
|
||||||
import settings
|
import settings
|
||||||
|
import tree
|
||||||
|
import shutup
|
||||||
|
|
||||||
possible_fields = {
|
possibleFields = {
|
||||||
'dirt': field.Dirt(),
|
'dirt': field.Dirt(),
|
||||||
'grass': field.Grass(),
|
'grass': field.Grass(),
|
||||||
'cobble': field.Cobble(),
|
'cobble': field.Cobble(),
|
||||||
'sand': field.Sand(),
|
'sand': field.Sand(),
|
||||||
'station': field.Station(),
|
'station': field.Station(),
|
||||||
'carrot_empty': field.Carrot('carrot_empty'),
|
'carrot_empty': field.Carrot_empty(),
|
||||||
'carrot_sow': field.Carrot('carrot_sow'),
|
'carrot_sow': field.Carrot_sow(),
|
||||||
'carrot_watered': field.Carrot('carrot_watered'),
|
'carrot_watered': field.Carrot_watered(),
|
||||||
'carrot_feritized': field.Carrot('carrot_feritized'),
|
'carrot_feritized': field.Carrot_feritized(),
|
||||||
'potato_empty': field.Potato('potato_empty'),
|
'potato_empty': field.Potato_empty(),
|
||||||
'potato_sow': field.Potato('potato_sow'),
|
'potato_sow': field.Potato_sow(),
|
||||||
'potato_watered': field.Potato('potato_watered'),
|
'potato_watered': field.Potato_watered(),
|
||||||
'potato_feritized': field.Potato('potato_feritized'),
|
'potato_feritized': field.Potato_feritized(),
|
||||||
'wheat_empty': field.Wheat('wheat_empty'),
|
'wheat_empty': field.Wheat_empty(),
|
||||||
'wheat_sow': field.Wheat('wheat_sow'),
|
'wheat_sow': field.Wheat_sow(),
|
||||||
'wheat_watered': field.Wheat('wheat_watered'),
|
'wheat_watered': field.Wheat_watered(),
|
||||||
'wheat_feritized': field.Wheat('wheat_feritized')
|
'wheat_feritized': field.Wheat_feritized()
|
||||||
}
|
}
|
||||||
|
|
||||||
possible_fields_with_plants = [
|
possibleFieldsWithPlants = [
|
||||||
'carrot_empty',
|
'carrot_empty',
|
||||||
'carrot_sow',
|
'carrot_sow',
|
||||||
'carrot_watered',
|
'carrot_watered',
|
||||||
@ -43,11 +45,12 @@ possible_fields_with_plants = [
|
|||||||
'wheat_feritized'
|
'wheat_feritized'
|
||||||
]
|
]
|
||||||
|
|
||||||
|
shutup.please()
|
||||||
|
|
||||||
def randomize_map():
|
def randomize_map():
|
||||||
fields_array = []
|
fields_array = []
|
||||||
for i in possible_fields:
|
for i in possibleFields:
|
||||||
fields_array.append(possible_fields[i].tile.object)
|
fields_array.append(possibleFields[i].tile.object)
|
||||||
field_array_big = []
|
field_array_big = []
|
||||||
field_array_small = []
|
field_array_small = []
|
||||||
field_array_big_2 = []
|
field_array_big_2 = []
|
||||||
@ -61,16 +64,16 @@ def randomize_map():
|
|||||||
# k = random.choice(list(possibleFields.keys()))
|
# k = random.choice(list(possibleFields.keys()))
|
||||||
x = random.uniform(0, 100)
|
x = random.uniform(0, 100)
|
||||||
if x <= 80:
|
if x <= 80:
|
||||||
plant = random.choice(possible_fields_with_plants)
|
plant = random.choice(possibleFieldsWithPlants)
|
||||||
field_array_small.append(possible_fields[plant].tile.object)
|
field_array_small.append(possibleFields[plant].tile.object)
|
||||||
field_array_small_2.append('dirt')
|
field_array_small_2.append('dirt')
|
||||||
field_array_small_3.append(plant)
|
field_array_small_3.append(plant)
|
||||||
elif 80 < x <= 90:
|
elif 80 < x <= 90:
|
||||||
field_array_small.append(possible_fields['sand'].tile.object)
|
field_array_small.append(possibleFields['sand'].tile.object)
|
||||||
field_array_small_2.append('sand')
|
field_array_small_2.append('sand')
|
||||||
field_array_small_3.append('sand')
|
field_array_small_3.append('sand')
|
||||||
elif 90 < x <= 100:
|
elif 90 < x <= 100:
|
||||||
field_array_small.append(possible_fields['grass'].tile.object)
|
field_array_small.append(possibleFields['grass'].tile.object)
|
||||||
field_array_small_2.append('grass')
|
field_array_small_2.append('grass')
|
||||||
field_array_small_3.append('grass')
|
field_array_small_3.append('grass')
|
||||||
field_array_big.append(field_array_small)
|
field_array_big.append(field_array_small)
|
||||||
@ -81,14 +84,14 @@ def randomize_map():
|
|||||||
field_array_small_3 = []
|
field_array_small_3 = []
|
||||||
|
|
||||||
for i in range(height):
|
for i in range(height):
|
||||||
field_array_big[math.floor(width / 2)][i] = possible_fields['cobble'].tile.object
|
field_array_big[math.floor(width / 2)][i] = possibleFields['cobble'].tile.object
|
||||||
field_array_big_2[math.floor(width / 2)][i] = 'cobble'
|
field_array_big_2[math.floor(width / 2)][i] = 'cobble'
|
||||||
field_array_big_3[math.floor(width / 2)][i] = 'cobble'
|
field_array_big_3[math.floor(width / 2)][i] = 'cobble'
|
||||||
for i in range(width):
|
for i in range(width):
|
||||||
field_array_big[i][math.floor(height / 2)] = possible_fields['cobble'].tile.object
|
field_array_big[i][math.floor(height / 2)] = possibleFields['cobble'].tile.object
|
||||||
field_array_big_2[i][math.floor(height / 2)] = 'cobble'
|
field_array_big_2[i][math.floor(height / 2)] = 'cobble'
|
||||||
field_array_big_3[i][math.floor(height / 2)] = 'cobble'
|
field_array_big_3[i][math.floor(height / 2)] = 'cobble'
|
||||||
field_array_big[0][0] = possible_fields['station'].tile.object
|
field_array_big[0][0] = possibleFields['station'].tile.object
|
||||||
field_array_big_2[0][0] = 'station'
|
field_array_big_2[0][0] = 'station'
|
||||||
field_array_big_3[0][0] = 'station'
|
field_array_big_3[0][0] = 'station'
|
||||||
return field_array_big, field_array_big_2, field_array_big_3
|
return field_array_big, field_array_big_2, field_array_big_3
|
||||||
@ -97,16 +100,16 @@ def randomize_map():
|
|||||||
def read_img(agent, fields):
|
def read_img(agent, fields):
|
||||||
window = common.get('window')
|
window = common.get('window')
|
||||||
current_field = fields[agent.x()][agent.y()]
|
current_field = fields[agent.x()][agent.y()]
|
||||||
if current_field == possible_fields['grass'].tile.object:
|
if current_field == possibleFields['grass'].tile.object:
|
||||||
window.blit(possible_fields['grass'].block.object, (0, 0))
|
window.blit(possibleFields['grass'].block.object, (0, 0))
|
||||||
elif current_field == possible_fields['dirt'].tile.object:
|
elif current_field == possibleFields['dirt'].tile.object:
|
||||||
window.blit(possible_fields['dirt'].block.object, (0, 0))
|
window.blit(possibleFields['dirt'].block.object, (0, 0))
|
||||||
elif current_field == possible_fields['sand'].tile.object:
|
elif current_field == possibleFields['sand'].tile.object:
|
||||||
window.blit(possible_fields['sand'].block.object, (0, 0))
|
window.blit(possibleFields['sand'].block.object, (0, 0))
|
||||||
elif current_field == possible_fields['cobble'].tile.object:
|
elif current_field == possibleFields['cobble'].tile.object:
|
||||||
window.blit(possible_fields['cobble'].block.object, (0, 0))
|
window.blit(possibleFields['cobble'].block.object, (0, 0))
|
||||||
elif current_field == possible_fields['station'].tile.object:
|
elif current_field == possibleFields['station'].tile.object:
|
||||||
window.blit(possible_fields['station'].block.object, (0, 0))
|
window.blit(possibleFields['station'].block.object, (0, 0))
|
||||||
|
|
||||||
pygame.display.update()
|
pygame.display.update()
|
||||||
pygame.time.delay(2000)
|
pygame.time.delay(2000)
|
||||||
@ -143,7 +146,7 @@ def draw_window(agent, fields):
|
|||||||
pygame.display.update()
|
pygame.display.update()
|
||||||
|
|
||||||
|
|
||||||
def generate_movement(fields_for_astar, fields_with_plants, fields_for_movement, agent):
|
def generate_movement(fields_for_astar, fields_with_plants, fields_for_movement, agent, t):
|
||||||
fields_to_sow = []
|
fields_to_sow = []
|
||||||
fields_to_water = []
|
fields_to_water = []
|
||||||
fields_to_feritize = []
|
fields_to_feritize = []
|
||||||
@ -170,7 +173,6 @@ def generate_movement(fields_for_astar, fields_with_plants, fields_for_movement,
|
|||||||
tab = [i, j]
|
tab = [i, j]
|
||||||
fields_to_harvest.append(tab)
|
fields_to_harvest.append(tab)
|
||||||
while True:
|
while True:
|
||||||
decision = False # tu będzie wywołanie drzewa decyzyjnego (powrot do bazy)
|
|
||||||
cords = agent.coordinates()
|
cords = agent.coordinates()
|
||||||
x = cords['x']
|
x = cords['x']
|
||||||
y = cords['y']
|
y = cords['y']
|
||||||
@ -182,6 +184,7 @@ def generate_movement(fields_for_astar, fields_with_plants, fields_for_movement,
|
|||||||
carrots = agent.get_carrots()
|
carrots = agent.get_carrots()
|
||||||
potatoes = agent.get_potatoes()
|
potatoes = agent.get_potatoes()
|
||||||
wheat = agent.get_wheat()
|
wheat = agent.get_wheat()
|
||||||
|
decision = tree.make_decision(t, fuel, water, feritizer, carrots, potatoes, wheat, x, y, seeds)
|
||||||
print("fuel:", fuel, "water:", water, "feritizer:", feritizer, "seeds:", seeds, "carrots:", carrots,
|
print("fuel:", fuel, "water:", water, "feritizer:", feritizer, "seeds:", seeds, "carrots:", carrots,
|
||||||
"potatoes:", potatoes, "wheat:", wheat)
|
"potatoes:", potatoes, "wheat:", wheat)
|
||||||
if k == 0 and len(fields_to_harvest) > 0 and decision == False: # harvest
|
if k == 0 and len(fields_to_harvest) > 0 and decision == False: # harvest
|
||||||
@ -196,7 +199,7 @@ def generate_movement(fields_for_astar, fields_with_plants, fields_for_movement,
|
|||||||
agent_movement(move_list, agent, fields_for_movement, fields_for_astar)
|
agent_movement(move_list, agent, fields_for_movement, fields_for_astar)
|
||||||
fields_to_sow.append(field_to_visit)
|
fields_to_sow.append(field_to_visit)
|
||||||
fields_with_plants[x1][y1] = 'wheat_empty'
|
fields_with_plants[x1][y1] = 'wheat_empty'
|
||||||
fields_for_movement[x1][y1] = possible_fields['wheat_empty'].tile.object
|
fields_for_movement[x1][y1] = possibleFields['wheat_empty'].tile.object
|
||||||
draw_window(agent, fields_for_movement)
|
draw_window(agent, fields_for_movement)
|
||||||
wheat += 1
|
wheat += 1
|
||||||
agent.set_wheat(wheat)
|
agent.set_wheat(wheat)
|
||||||
@ -208,7 +211,7 @@ def generate_movement(fields_for_astar, fields_with_plants, fields_for_movement,
|
|||||||
agent_movement(move_list, agent, fields_for_movement, fields_for_astar)
|
agent_movement(move_list, agent, fields_for_movement, fields_for_astar)
|
||||||
fields_to_sow.append(field_to_visit)
|
fields_to_sow.append(field_to_visit)
|
||||||
fields_with_plants[x1][y1] = 'carrot_empty'
|
fields_with_plants[x1][y1] = 'carrot_empty'
|
||||||
fields_for_movement[x1][y1] = possible_fields['carrot_empty'].tile.object
|
fields_for_movement[x1][y1] = possibleFields['carrot_empty'].tile.object
|
||||||
draw_window(agent, fields_for_movement)
|
draw_window(agent, fields_for_movement)
|
||||||
carrots += 1
|
carrots += 1
|
||||||
agent.set_carrots(carrots)
|
agent.set_carrots(carrots)
|
||||||
@ -220,7 +223,7 @@ def generate_movement(fields_for_astar, fields_with_plants, fields_for_movement,
|
|||||||
agent_movement(move_list, agent, fields_for_movement, fields_for_astar)
|
agent_movement(move_list, agent, fields_for_movement, fields_for_astar)
|
||||||
fields_to_sow.append(field_to_visit)
|
fields_to_sow.append(field_to_visit)
|
||||||
fields_with_plants[x1][y1] = 'potato_empty'
|
fields_with_plants[x1][y1] = 'potato_empty'
|
||||||
fields_for_movement[x1][y1] = possible_fields['potato_empty'].tile.object
|
fields_for_movement[x1][y1] = possibleFields['potato_empty'].tile.object
|
||||||
draw_window(agent, fields_for_movement)
|
draw_window(agent, fields_for_movement)
|
||||||
potatoes += 1
|
potatoes += 1
|
||||||
agent.set_potatoes(potatoes)
|
agent.set_potatoes(potatoes)
|
||||||
@ -238,7 +241,7 @@ def generate_movement(fields_for_astar, fields_with_plants, fields_for_movement,
|
|||||||
agent_movement(move_list, agent, fields_for_movement, fields_for_astar)
|
agent_movement(move_list, agent, fields_for_movement, fields_for_astar)
|
||||||
fields_to_feritize.append(field_to_visit)
|
fields_to_feritize.append(field_to_visit)
|
||||||
fields_with_plants[x1][y1] = 'wheat_watered'
|
fields_with_plants[x1][y1] = 'wheat_watered'
|
||||||
fields_for_movement[x1][y1] = possible_fields['wheat_watered'].tile.object
|
fields_for_movement[x1][y1] = possibleFields['wheat_watered'].tile.object
|
||||||
draw_window(agent, fields_for_movement)
|
draw_window(agent, fields_for_movement)
|
||||||
water -= 1
|
water -= 1
|
||||||
agent.set_water(water)
|
agent.set_water(water)
|
||||||
@ -250,7 +253,7 @@ def generate_movement(fields_for_astar, fields_with_plants, fields_for_movement,
|
|||||||
agent_movement(move_list, agent, fields_for_movement, fields_for_astar)
|
agent_movement(move_list, agent, fields_for_movement, fields_for_astar)
|
||||||
fields_to_feritize.append(field_to_visit)
|
fields_to_feritize.append(field_to_visit)
|
||||||
fields_with_plants[x1][y1] = 'carrot_watered'
|
fields_with_plants[x1][y1] = 'carrot_watered'
|
||||||
fields_for_movement[x1][y1] = possible_fields['carrot_watered'].tile.object
|
fields_for_movement[x1][y1] = possibleFields['carrot_watered'].tile.object
|
||||||
draw_window(agent, fields_for_movement)
|
draw_window(agent, fields_for_movement)
|
||||||
water -= 1
|
water -= 1
|
||||||
agent.set_water(water)
|
agent.set_water(water)
|
||||||
@ -262,7 +265,7 @@ def generate_movement(fields_for_astar, fields_with_plants, fields_for_movement,
|
|||||||
agent_movement(move_list, agent, fields_for_movement, fields_for_astar)
|
agent_movement(move_list, agent, fields_for_movement, fields_for_astar)
|
||||||
fields_to_feritize.append(field_to_visit)
|
fields_to_feritize.append(field_to_visit)
|
||||||
fields_with_plants[x1][y1] = 'potato_watered'
|
fields_with_plants[x1][y1] = 'potato_watered'
|
||||||
fields_for_movement[x1][y1] = possible_fields['potato_watered'].tile.object
|
fields_for_movement[x1][y1] = possibleFields['potato_watered'].tile.object
|
||||||
draw_window(agent, fields_for_movement)
|
draw_window(agent, fields_for_movement)
|
||||||
water -= 1
|
water -= 1
|
||||||
agent.set_water(water)
|
agent.set_water(water)
|
||||||
@ -280,7 +283,7 @@ def generate_movement(fields_for_astar, fields_with_plants, fields_for_movement,
|
|||||||
agent_movement(move_list, agent, fields_for_movement, fields_for_astar)
|
agent_movement(move_list, agent, fields_for_movement, fields_for_astar)
|
||||||
fields_to_harvest.append(field_to_visit)
|
fields_to_harvest.append(field_to_visit)
|
||||||
fields_with_plants[x1][y1] = 'wheat_feritized'
|
fields_with_plants[x1][y1] = 'wheat_feritized'
|
||||||
fields_for_movement[x1][y1] = possible_fields['wheat_feritized'].tile.object
|
fields_for_movement[x1][y1] = possibleFields['wheat_feritized'].tile.object
|
||||||
draw_window(agent, fields_for_movement)
|
draw_window(agent, fields_for_movement)
|
||||||
feritizer -= 1
|
feritizer -= 1
|
||||||
agent.set_feritizer(feritizer)
|
agent.set_feritizer(feritizer)
|
||||||
@ -292,7 +295,7 @@ def generate_movement(fields_for_astar, fields_with_plants, fields_for_movement,
|
|||||||
agent_movement(move_list, agent, fields_for_movement, fields_for_astar)
|
agent_movement(move_list, agent, fields_for_movement, fields_for_astar)
|
||||||
fields_to_harvest.append(field_to_visit)
|
fields_to_harvest.append(field_to_visit)
|
||||||
fields_with_plants[x1][y1] = 'carrot_feritized'
|
fields_with_plants[x1][y1] = 'carrot_feritized'
|
||||||
fields_for_movement[x1][y1] = possible_fields['carrot_feritized'].tile.object
|
fields_for_movement[x1][y1] = possibleFields['carrot_feritized'].tile.object
|
||||||
draw_window(agent, fields_for_movement)
|
draw_window(agent, fields_for_movement)
|
||||||
feritizer -= 1
|
feritizer -= 1
|
||||||
agent.set_feritizer(feritizer)
|
agent.set_feritizer(feritizer)
|
||||||
@ -304,7 +307,7 @@ def generate_movement(fields_for_astar, fields_with_plants, fields_for_movement,
|
|||||||
agent_movement(move_list, agent, fields_for_movement, fields_for_astar)
|
agent_movement(move_list, agent, fields_for_movement, fields_for_astar)
|
||||||
fields_to_harvest.append(field_to_visit)
|
fields_to_harvest.append(field_to_visit)
|
||||||
fields_with_plants[x1][y1] = 'potato_feritized'
|
fields_with_plants[x1][y1] = 'potato_feritized'
|
||||||
fields_for_movement[x1][y1] = possible_fields['potato_feritized'].tile.object
|
fields_for_movement[x1][y1] = possibleFields['potato_feritized'].tile.object
|
||||||
draw_window(agent, fields_for_movement)
|
draw_window(agent, fields_for_movement)
|
||||||
feritizer -= 1
|
feritizer -= 1
|
||||||
agent.set_feritizer(feritizer)
|
agent.set_feritizer(feritizer)
|
||||||
@ -322,7 +325,7 @@ def generate_movement(fields_for_astar, fields_with_plants, fields_for_movement,
|
|||||||
agent_movement(move_list, agent, fields_for_movement, fields_for_astar)
|
agent_movement(move_list, agent, fields_for_movement, fields_for_astar)
|
||||||
fields_to_water.append(field_to_visit)
|
fields_to_water.append(field_to_visit)
|
||||||
fields_with_plants[x1][y1] = 'wheat_sow'
|
fields_with_plants[x1][y1] = 'wheat_sow'
|
||||||
fields_for_movement[x1][y1] = possible_fields['wheat_sow'].tile.object
|
fields_for_movement[x1][y1] = possibleFields['wheat_sow'].tile.object
|
||||||
draw_window(agent, fields_for_movement)
|
draw_window(agent, fields_for_movement)
|
||||||
seeds -= 1
|
seeds -= 1
|
||||||
agent.set_seeds(seeds)
|
agent.set_seeds(seeds)
|
||||||
@ -334,7 +337,7 @@ def generate_movement(fields_for_astar, fields_with_plants, fields_for_movement,
|
|||||||
agent_movement(move_list, agent, fields_for_movement, fields_for_astar)
|
agent_movement(move_list, agent, fields_for_movement, fields_for_astar)
|
||||||
fields_to_water.append(field_to_visit)
|
fields_to_water.append(field_to_visit)
|
||||||
fields_with_plants[x1][y1] = 'carrot_sow'
|
fields_with_plants[x1][y1] = 'carrot_sow'
|
||||||
fields_for_movement[x1][y1] = possible_fields['carrot_sow'].tile.object
|
fields_for_movement[x1][y1] = possibleFields['carrot_sow'].tile.object
|
||||||
draw_window(agent, fields_for_movement)
|
draw_window(agent, fields_for_movement)
|
||||||
seeds -= 1
|
seeds -= 1
|
||||||
agent.set_seeds(seeds)
|
agent.set_seeds(seeds)
|
||||||
@ -346,7 +349,7 @@ def generate_movement(fields_for_astar, fields_with_plants, fields_for_movement,
|
|||||||
agent_movement(move_list, agent, fields_for_movement, fields_for_astar)
|
agent_movement(move_list, agent, fields_for_movement, fields_for_astar)
|
||||||
fields_to_water.append(field_to_visit)
|
fields_to_water.append(field_to_visit)
|
||||||
fields_with_plants[x1][y1] = 'potato_sow'
|
fields_with_plants[x1][y1] = 'potato_sow'
|
||||||
fields_for_movement[x1][y1] = possible_fields['potato_sow'].tile.object
|
fields_for_movement[x1][y1] = possibleFields['potato_sow'].tile.object
|
||||||
draw_window(agent, fields_for_movement)
|
draw_window(agent, fields_for_movement)
|
||||||
seeds -= 1
|
seeds -= 1
|
||||||
agent.set_seeds(seeds)
|
agent.set_seeds(seeds)
|
||||||
@ -429,6 +432,7 @@ def main():
|
|||||||
pygame.display.set_caption(settings.Pygame.display_name())
|
pygame.display.set_caption(settings.Pygame.display_name())
|
||||||
fields, fields_2, fields_3 = randomize_map()
|
fields, fields_2, fields_3 = randomize_map()
|
||||||
x = True
|
x = True
|
||||||
|
t = tree.treelearn()
|
||||||
while common.get('game_running'):
|
while common.get('game_running'):
|
||||||
pygame.time.Clock().tick(settings.Pygame.fps())
|
pygame.time.Clock().tick(settings.Pygame.fps())
|
||||||
for event in pygame.event.get():
|
for event in pygame.event.get():
|
||||||
@ -439,7 +443,7 @@ def main():
|
|||||||
else:
|
else:
|
||||||
draw_window(agent, fields)
|
draw_window(agent, fields)
|
||||||
if x:
|
if x:
|
||||||
generate_movement(fields_2, fields_3, fields, agent)
|
generate_movement(fields_2, fields_3, fields, agent, t)
|
||||||
x = False
|
x = False
|
||||||
|
|
||||||
agent_action(agent.rotate(None))
|
agent_action(agent.rotate(None))
|
||||||
|
29
tree.py
Normal file
29
tree.py
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
import matplotlib.image as pltimg
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
import os
|
||||||
|
import pandas
|
||||||
|
import pickle
|
||||||
|
import pydotplus
|
||||||
|
from sklearn import tree
|
||||||
|
from sklearn.tree import DecisionTreeClassifier
|
||||||
|
def treelearn():
|
||||||
|
if os.path.exists("assets/tree.pkl"):
|
||||||
|
dtree = pickle.load(open(os.path.join('assets', "tree.pkl"), "rb"))
|
||||||
|
else:
|
||||||
|
df = pandas.read_csv(os.path.join('assets/data', 'data.csv'))
|
||||||
|
columns = ['Fuel','Water','Fertalizer','Carrots','Potatoes','Wheat','X','Y','seeds']
|
||||||
|
x = df[columns]
|
||||||
|
y = df['back to station']
|
||||||
|
dtree = DecisionTreeClassifier()
|
||||||
|
dtree = dtree.fit(x, y)
|
||||||
|
pickle.dump(dtree, open(os.path.join('assets', "tree.pkl"), "wb"))
|
||||||
|
data = tree.export_graphviz(dtree, out_file=None, feature_names=columns)
|
||||||
|
graph = pydotplus.graph_from_dot_data(data)
|
||||||
|
graph.write_png(os.path.join('assets', 'mytree.png'))
|
||||||
|
img = pltimg.imread(os.path.join('assets', 'mytree.png'))
|
||||||
|
imgplot = plt.imshow(img)
|
||||||
|
plt.show()
|
||||||
|
return dtree
|
||||||
|
def make_decision(tree, Fuel,Water,Fertalizer,Carrots,Potatoes,Wheat,X,Y,seeds):
|
||||||
|
decision = tree.predict([[Fuel, Water, Fertalizer, Carrots, Potatoes, Wheat, X, Y, seeds]])
|
||||||
|
return decision
|
Loading…
Reference in New Issue
Block a user