connected neural network with dog/cat model
This commit is contained in:
parent
204d1ae0b1
commit
34552233fe
3
.vscode/settings.json
vendored
Normal file
3
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"git.ignoreLimitWarning": true
|
||||||
|
}
|
BIN
assets/sprites/mines/1.jpg
Normal file
BIN
assets/sprites/mines/1.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 758 KiB |
BIN
assets/sprites/mines/2.jpg
Normal file
BIN
assets/sprites/mines/2.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.1 MiB |
BIN
assets/sprites/notmines/1.jpg
Normal file
BIN
assets/sprites/notmines/1.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.7 MiB |
BIN
assets/sprites/notmines/2.jpg
Normal file
BIN
assets/sprites/notmines/2.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 80 KiB |
@ -3,6 +3,7 @@ import pygame
|
|||||||
from classes import system
|
from classes import system
|
||||||
from random import randrange
|
from random import randrange
|
||||||
from classes import decisionTrees
|
from classes import decisionTrees
|
||||||
|
from classes.neuralNetwork import NeuralNetwork
|
||||||
|
|
||||||
pygame.mixer.init()
|
pygame.mixer.init()
|
||||||
|
|
||||||
@ -12,16 +13,18 @@ class NotMine():
|
|||||||
position_y: int
|
position_y: int
|
||||||
size: int
|
size: int
|
||||||
ismine: bool
|
ismine: bool
|
||||||
|
image_path: str
|
||||||
image: pygame.surface.Surface
|
image: pygame.surface.Surface
|
||||||
font: pygame.font.Font
|
font: pygame.font.Font
|
||||||
done_text: pygame.surface.Surface
|
done_text: pygame.surface.Surface
|
||||||
|
|
||||||
def __init__(self, position_x, position_y, size, ismine):
|
def __init__(self, position_x, position_y, size):
|
||||||
self.position_x = position_x
|
self.position_x = position_x
|
||||||
self.position_y = position_y
|
self.position_y = position_y
|
||||||
self.size = size
|
self.size = size
|
||||||
self.ismine = ismine
|
self.ismine = False
|
||||||
self.image = pygame.image.load("assets/sprites/notmines/" + str(randrange(1, 2)) + ".png")
|
self.image_path = "assets/sprites/notmines/" + str(randrange(1, 3)) + ".jpg"
|
||||||
|
self.image = pygame.image.load(self.image_path)
|
||||||
self.image = pygame.transform.scale(self.image, (self.size, self.size))
|
self.image = pygame.transform.scale(self.image, (self.size, self.size))
|
||||||
self.font = pygame.font.SysFont('Comic Sans MS', int(self.size * 0.3))
|
self.font = pygame.font.SysFont('Comic Sans MS', int(self.size * 0.3))
|
||||||
self.done_text = self.font.render("", False, (255,0,0))
|
self.done_text = self.font.render("", False, (255,0,0))
|
||||||
@ -37,6 +40,7 @@ class Mine():
|
|||||||
position_y: int
|
position_y: int
|
||||||
size: int
|
size: int
|
||||||
ismine: bool
|
ismine: bool
|
||||||
|
image_path: str
|
||||||
image: pygame.surface.Surface
|
image: pygame.surface.Surface
|
||||||
font: pygame.font.Font
|
font: pygame.font.Font
|
||||||
image_text: pygame.surface.Surface
|
image_text: pygame.surface.Surface
|
||||||
@ -47,15 +51,16 @@ class Mine():
|
|||||||
weight: float = 1.0
|
weight: float = 1.0
|
||||||
explosion_timer: int = 100
|
explosion_timer: int = 100
|
||||||
|
|
||||||
def __init__(self, position_x, position_y, size, ismine, difficulty=1, weight=1.0, timer=100):
|
def __init__(self, position_x, position_y, size, difficulty=1, weight=1.0, timer=100):
|
||||||
self.position_x = position_x
|
self.position_x = position_x
|
||||||
self.position_y = position_y
|
self.position_y = position_y
|
||||||
self.size = size
|
self.size = size
|
||||||
self.ismine = ismine
|
self.ismine = True
|
||||||
self.weight = weight
|
self.weight = weight
|
||||||
self.explosion_timer = timer
|
self.explosion_timer = timer
|
||||||
self.difficulty = difficulty
|
self.difficulty = difficulty
|
||||||
self.image = pygame.image.load("assets/sprites/mines/" + str(randrange(1, 2)) + ".png")
|
self.image_path = "assets/sprites/mines/" + str(randrange(1, 3)) + ".jpg"
|
||||||
|
self.image = pygame.image.load(self.image_path)
|
||||||
self.image = pygame.transform.scale(self.image, (self.size, self.size))
|
self.image = pygame.transform.scale(self.image, (self.size, self.size))
|
||||||
self.font = pygame.font.SysFont('Comic Sans MS', int(self.size * 0.3))
|
self.font = pygame.font.SysFont('Comic Sans MS', int(self.size * 0.3))
|
||||||
self.image_text = self.font.render(str(self.weight), False, (255, 0, 0))
|
self.image_text = self.font.render(str(self.weight), False, (255, 0, 0))
|
||||||
@ -192,17 +197,15 @@ class Map:
|
|||||||
break
|
break
|
||||||
if ok and randrange(10) == 0 and not (i < 2 and j < 3):
|
if ok and randrange(10) == 0 and not (i < 2 and j < 3):
|
||||||
#zależnie od wylosowanej liczby mina lub niemina
|
#zależnie od wylosowanej liczby mina lub niemina
|
||||||
if randrange(0, 10) > 3:
|
if randrange(0, 10) > 3: #odpowiednia wartość to > 3
|
||||||
ismine = True
|
|
||||||
difficulty = randrange(0, 4) + 1
|
difficulty = randrange(0, 4) + 1
|
||||||
weight = randrange(10, 31) / 10
|
weight = randrange(10, 31) / 10
|
||||||
timer = randrange(100, 200)
|
timer = randrange(100, 200)
|
||||||
mine = Mine(j, i, self.tile_size, ismine, difficulty, weight, timer)
|
mine = Mine(j, i, self.tile_size, difficulty, weight, timer)
|
||||||
self.mines.append(mine)
|
self.mines.append(mine)
|
||||||
self.encounters.append(mine)
|
self.encounters.append(mine)
|
||||||
else:
|
else:
|
||||||
ismine = False
|
notmine = NotMine(j, i, self.tile_size)
|
||||||
notmine = NotMine(j, i, self.tile_size, ismine)
|
|
||||||
self.notmines.append(notmine)
|
self.notmines.append(notmine)
|
||||||
self.encounters.append(notmine)
|
self.encounters.append(notmine)
|
||||||
|
|
||||||
@ -304,6 +307,7 @@ class Minesweeper:
|
|||||||
self.image = pygame.transform.scale(self.image, (self.size, self.size))
|
self.image = pygame.transform.scale(self.image, (self.size, self.size))
|
||||||
self.rotated_image = self.image
|
self.rotated_image = self.image
|
||||||
self.rotation_degrees = 0
|
self.rotation_degrees = 0
|
||||||
|
self.neural_network = NeuralNetwork()
|
||||||
|
|
||||||
def set_map(self, map: Map):
|
def set_map(self, map: Map):
|
||||||
self.current_map = map
|
self.current_map = map
|
||||||
@ -435,7 +439,7 @@ class Minesweeper:
|
|||||||
if (self.position_x, self.position_y) == (encounter.position_x, encounter.position_y):
|
if (self.position_x, self.position_y) == (encounter.position_x, encounter.position_y):
|
||||||
|
|
||||||
#tutaj będzie sprawdzanie zdjęcia i na podstawie tego przypisywane true albo false do decisionismine
|
#tutaj będzie sprawdzanie zdjęcia i na podstawie tego przypisywane true albo false do decisionismine
|
||||||
decisionismine = encounter.ismine
|
decisionismine = self.neural_network.recognize(encounter.image_path)
|
||||||
|
|
||||||
#wykryto błędnie
|
#wykryto błędnie
|
||||||
if decisionismine != encounter.ismine:
|
if decisionismine != encounter.ismine:
|
||||||
@ -445,6 +449,7 @@ class Minesweeper:
|
|||||||
#wykryto poprawnie, że mina
|
#wykryto poprawnie, że mina
|
||||||
elif decisionismine:
|
elif decisionismine:
|
||||||
print("Mine? - Yes")
|
print("Mine? - Yes")
|
||||||
|
print("")
|
||||||
tree = decisionTrees.DecisionTrees()
|
tree = decisionTrees.DecisionTrees()
|
||||||
decision = tree.return_predict(model)
|
decision = tree.return_predict(model)
|
||||||
print("Decision : ", decision, "\n")
|
print("Decision : ", decision, "\n")
|
||||||
@ -457,6 +462,7 @@ class Minesweeper:
|
|||||||
#wykryto poprawnie, że niemina
|
#wykryto poprawnie, że niemina
|
||||||
else:
|
else:
|
||||||
print("Mine? - No")
|
print("Mine? - No")
|
||||||
|
print("")
|
||||||
encounter.done_text = encounter.font.render("X", False, (255,0,0))
|
encounter.done_text = encounter.font.render("X", False, (255,0,0))
|
||||||
self.current_map.encounters.remove(encounter)
|
self.current_map.encounters.remove(encounter)
|
||||||
pygame.mixer.Channel(3).set_volume(0.01)
|
pygame.mixer.Channel(3).set_volume(0.01)
|
||||||
|
110
classes/neuralNetwork.py
Normal file
110
classes/neuralNetwork.py
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
import pandas as pd
|
||||||
|
import tensorflow as tf
|
||||||
|
import numpy as np
|
||||||
|
import warnings
|
||||||
|
import os
|
||||||
|
from keras.utils import load_img
|
||||||
|
import keras
|
||||||
|
from sklearn.model_selection import train_test_split
|
||||||
|
from keras.preprocessing.image import ImageDataGenerator
|
||||||
|
from keras import Sequential
|
||||||
|
from keras.layers import Conv2D, MaxPool2D, Flatten, Dense
|
||||||
|
warnings.filterwarnings('ignore')
|
||||||
|
|
||||||
|
create_model = False
|
||||||
|
learning_sets_path = "data/learning_sets"
|
||||||
|
save_model_path = "data/models/true_mine_recognizer.model"
|
||||||
|
load_model_path = "data/models/mine_recognizer.model"
|
||||||
|
image_size = 128
|
||||||
|
|
||||||
|
class NeuralNetwork():
|
||||||
|
def __init__(self):
|
||||||
|
if create_model:
|
||||||
|
input_path = []
|
||||||
|
label = []
|
||||||
|
|
||||||
|
for class_name in os.listdir(learning_sets_path):
|
||||||
|
for path in os.listdir(learning_sets_path+ "/" +class_name):
|
||||||
|
if class_name == 'mine':
|
||||||
|
label.append(0)
|
||||||
|
else:
|
||||||
|
label.append(1)
|
||||||
|
input_path.append(os.path.join(learning_sets_path, class_name, path))
|
||||||
|
print(input_path[0], label[0])
|
||||||
|
df = pd.DataFrame()
|
||||||
|
df['images'] = input_path
|
||||||
|
df['label'] = label
|
||||||
|
df = df.sample(frac=1).reset_index(drop=True)
|
||||||
|
df.head()
|
||||||
|
df['label'] = df['label'].astype('str')
|
||||||
|
df.head()
|
||||||
|
|
||||||
|
train, test = train_test_split(df, test_size=0.2, random_state=42)
|
||||||
|
|
||||||
|
|
||||||
|
train_generator = ImageDataGenerator(
|
||||||
|
rescale = 1./255,
|
||||||
|
rotation_range = 40,
|
||||||
|
shear_range = 0.2,
|
||||||
|
zoom_range = 0.2,
|
||||||
|
horizontal_flip = True,
|
||||||
|
fill_mode = 'nearest'
|
||||||
|
)
|
||||||
|
|
||||||
|
val_generator = ImageDataGenerator(rescale = 1./255)
|
||||||
|
|
||||||
|
train_iterator = train_generator.flow_from_dataframe(
|
||||||
|
train,
|
||||||
|
x_col='images',
|
||||||
|
y_col='label',
|
||||||
|
target_size=(image_size,image_size),
|
||||||
|
batch_size=512,
|
||||||
|
class_mode='binary'
|
||||||
|
)
|
||||||
|
|
||||||
|
val_iterator = val_generator.flow_from_dataframe(
|
||||||
|
test,
|
||||||
|
x_col='images',
|
||||||
|
y_col='label',
|
||||||
|
target_size=(image_size,image_size),
|
||||||
|
batch_size=512,
|
||||||
|
class_mode='binary'
|
||||||
|
)
|
||||||
|
|
||||||
|
self.model = Sequential([
|
||||||
|
Conv2D(16, (3,3), activation='relu', input_shape=(image_size,image_size,3)),
|
||||||
|
MaxPool2D((2,2)),
|
||||||
|
Conv2D(32, (3,3), activation='relu'),
|
||||||
|
MaxPool2D((2,2)),
|
||||||
|
Conv2D(64, (3,3), activation='relu'),
|
||||||
|
MaxPool2D((2,2)),
|
||||||
|
Flatten(),
|
||||||
|
Dense(512, activation='relu'),
|
||||||
|
Dense(1, activation='sigmoid')
|
||||||
|
])
|
||||||
|
self.model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
|
||||||
|
self.model.summary()
|
||||||
|
self.model.fit(train_iterator, epochs=10, validation_data=val_iterator)
|
||||||
|
self.model.save(save_model_path)
|
||||||
|
else:
|
||||||
|
self.model = keras.models.load_model(load_model_path,
|
||||||
|
compile=True
|
||||||
|
)
|
||||||
|
def recognize(self, image_path):
|
||||||
|
image = keras.utils.load_img(image_path, target_size=(image_size, image_size))
|
||||||
|
image_array = keras.utils.img_to_array(image)
|
||||||
|
image_array = keras.backend.expand_dims(image_array, 0)
|
||||||
|
|
||||||
|
prediction = self.model.predict(image_array)
|
||||||
|
if prediction[0] > 0.5:
|
||||||
|
predict = "notmine"
|
||||||
|
accuracy = prediction[0] * 100
|
||||||
|
elif prediction[0] <= 0.5:
|
||||||
|
predict = "mine"
|
||||||
|
accuracy = (1 - prediction[0]) * 100
|
||||||
|
|
||||||
|
print("Image: ",image_path," is classified as: ", predict," with: ", accuracy, " accuracy")
|
||||||
|
if predict == "mine":
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
return False
|
15
data/models/mine_recognizer.model/keras_metadata.pb
Normal file
15
data/models/mine_recognizer.model/keras_metadata.pb
Normal file
File diff suppressed because one or more lines are too long
BIN
data/models/mine_recognizer.model/saved_model.pb
Normal file
BIN
data/models/mine_recognizer.model/saved_model.pb
Normal file
Binary file not shown.
Binary file not shown.
BIN
data/models/mine_recognizer.model/variables/variables.index
Normal file
BIN
data/models/mine_recognizer.model/variables/variables.index
Normal file
Binary file not shown.
@ -1,31 +1,31 @@
|
|||||||
[
|
[
|
||||||
{"current_level": 1, "leaf_id": "657140df-de8d-11ec-9c63-d43d7ef1576e", "parents": "root", "rule": "else: return 'detonate'", "feature_idx": -1, "feature_name": "", "instances": 200, "metric": 0, "return_statement": 0, "tree_id": 0},
|
{"current_level": 1, "leaf_id": "3da5aae2-e008-11ec-95c1-d43d7ef1576e", "parents": "root", "rule": "else: return 'detonate'", "feature_idx": -1, "feature_name": "", "instances": 200, "metric": 0, "return_statement": 0, "tree_id": 0},
|
||||||
{"current_level": 1, "leaf_id": "6572790a-de8d-11ec-ac91-d43d7ef1576e", "parents": "root", "rule": "if obj[4]<=80.67436609605278:", "feature_idx": 4, "feature_name": "Random_detonation_chance", "instances": 200, "metric": 0.9964625048848765, "return_statement": 0, "tree_id": 0},
|
{"current_level": 1, "leaf_id": "3da6bcfb-e008-11ec-ba71-d43d7ef1576e", "parents": "root", "rule": "if obj[4]<=80.67436609605278:", "feature_idx": 4, "feature_name": "Random_detonation_chance", "instances": 200, "metric": 0.9964625048848765, "return_statement": 0, "tree_id": 0},
|
||||||
{"current_level": 2, "leaf_id": "6581b986-de8d-11ec-9198-d43d7ef1576e", "parents": "6572790a-de8d-11ec-ac91-d43d7ef1576e", "rule": "else: return 'detonate'", "feature_idx": -1, "feature_name": "", "instances": 161, "metric": 0, "return_statement": 0, "tree_id": 0},
|
{"current_level": 2, "leaf_id": "3db49dc5-e008-11ec-b425-d43d7ef1576e", "parents": "3da6bcfb-e008-11ec-ba71-d43d7ef1576e", "rule": "else: return 'detonate'", "feature_idx": -1, "feature_name": "", "instances": 161, "metric": 0, "return_statement": 0, "tree_id": 0},
|
||||||
{"current_level": 2, "leaf_id": "6582f1e8-de8d-11ec-9c53-d43d7ef1576e", "parents": "6572790a-de8d-11ec-ac91-d43d7ef1576e", "rule": "if obj[2]<=0:", "feature_idx": 2, "feature_name": "Protection_from_defuse", "instances": 161, "metric": 0.9203523274205176, "return_statement": 0, "tree_id": 0},
|
{"current_level": 2, "leaf_id": "3db5af1f-e008-11ec-ba0b-d43d7ef1576e", "parents": "3da6bcfb-e008-11ec-ba71-d43d7ef1576e", "rule": "if obj[2]<=0:", "feature_idx": 2, "feature_name": "Protection_from_defuse", "instances": 161, "metric": 0.9203523274205176, "return_statement": 0, "tree_id": 0},
|
||||||
{"current_level": 3, "leaf_id": "65905ed3-de8d-11ec-b36a-d43d7ef1576e", "parents": "6582f1e8-de8d-11ec-9c53-d43d7ef1576e", "rule": "else: return 'detonate'", "feature_idx": -1, "feature_name": "", "instances": 135, "metric": 0, "return_statement": 0, "tree_id": 0},
|
{"current_level": 3, "leaf_id": "3dc2a6e1-e008-11ec-ba72-d43d7ef1576e", "parents": "3db5af1f-e008-11ec-ba0b-d43d7ef1576e", "rule": "else: return 'detonate'", "feature_idx": -1, "feature_name": "", "instances": 135, "metric": 0, "return_statement": 0, "tree_id": 0},
|
||||||
{"current_level": 3, "leaf_id": "659196b8-de8d-11ec-b5e3-d43d7ef1576e", "parents": "6582f1e8-de8d-11ec-9c53-d43d7ef1576e", "rule": "if obj[3]<=7:", "feature_idx": 3, "feature_name": "Meters_under_the_ground", "instances": 135, "metric": 0.7364977795505669, "return_statement": 0, "tree_id": 0},
|
{"current_level": 3, "leaf_id": "3dc39134-e008-11ec-9943-d43d7ef1576e", "parents": "3db5af1f-e008-11ec-ba0b-d43d7ef1576e", "rule": "if obj[3]<=7:", "feature_idx": 3, "feature_name": "Meters_under_the_ground", "instances": 135, "metric": 0.7364977795505669, "return_statement": 0, "tree_id": 0},
|
||||||
{"current_level": 4, "leaf_id": "659b5a72-de8d-11ec-af31-d43d7ef1576e", "parents": "659196b8-de8d-11ec-b5e3-d43d7ef1576e", "rule": "else: return 'defuse'", "feature_idx": -1, "feature_name": "", "instances": 116, "metric": 0, "return_statement": 0, "tree_id": 0},
|
{"current_level": 4, "leaf_id": "3dcd2d59-e008-11ec-9f6f-d43d7ef1576e", "parents": "3dc39134-e008-11ec-9943-d43d7ef1576e", "rule": "else: return 'defuse'", "feature_idx": -1, "feature_name": "", "instances": 116, "metric": 0, "return_statement": 0, "tree_id": 0},
|
||||||
{"current_level": 4, "leaf_id": "659c924b-de8d-11ec-ba5c-d43d7ef1576e", "parents": "659196b8-de8d-11ec-b5e3-d43d7ef1576e", "rule": "if obj[1]<=1997.8794790831414:", "feature_idx": 1, "feature_name": "Year(older_more_difficult)", "instances": 116, "metric": 0.3936164041111624, "return_statement": 0, "tree_id": 0},
|
{"current_level": 4, "leaf_id": "3dce17a5-e008-11ec-acb7-d43d7ef1576e", "parents": "3dc39134-e008-11ec-9943-d43d7ef1576e", "rule": "if obj[1]<=1997.8794790831414:", "feature_idx": 1, "feature_name": "Year(older_more_difficult)", "instances": 116, "metric": 0.3936164041111624, "return_statement": 0, "tree_id": 0},
|
||||||
{"current_level": 5, "leaf_id": "65a396a0-de8d-11ec-a956-d43d7ef1576e", "parents": "659c924b-de8d-11ec-ba5c-d43d7ef1576e", "rule": "else: return 'defuse'", "feature_idx": -1, "feature_name": "", "instances": 97, "metric": 0, "return_statement": 0, "tree_id": 0},
|
{"current_level": 5, "leaf_id": "3dd4f4e4-e008-11ec-9a04-d43d7ef1576e", "parents": "3dce17a5-e008-11ec-acb7-d43d7ef1576e", "rule": "else: return 'defuse'", "feature_idx": -1, "feature_name": "", "instances": 97, "metric": 0, "return_statement": 0, "tree_id": 0},
|
||||||
{"current_level": 5, "leaf_id": "65a4a8a9-de8d-11ec-8c86-d43d7ef1576e", "parents": "659c924b-de8d-11ec-ba5c-d43d7ef1576e", "rule": "if obj[5]<=2:", "feature_idx": 5, "feature_name": "Detonation_power_in_m", "instances": 97, "metric": 0.445693177722561, "return_statement": 0, "tree_id": 0},
|
{"current_level": 5, "leaf_id": "3dd5df33-e008-11ec-a66b-d43d7ef1576e", "parents": "3dce17a5-e008-11ec-acb7-d43d7ef1576e", "rule": "if obj[5]<=2:", "feature_idx": 5, "feature_name": "Detonation_power_in_m", "instances": 97, "metric": 0.445693177722561, "return_statement": 0, "tree_id": 0},
|
||||||
{"current_level": 6, "leaf_id": "65a851b0-de8d-11ec-ad73-d43d7ef1576e", "parents": "65a4a8a9-de8d-11ec-8c86-d43d7ef1576e", "rule": "else: return 'defuse'", "feature_idx": -1, "feature_name": "", "instances": 65, "metric": 0, "return_statement": 0, "tree_id": 0},
|
{"current_level": 6, "leaf_id": "3dd9615a-e008-11ec-a021-d43d7ef1576e", "parents": "3dd5df33-e008-11ec-a66b-d43d7ef1576e", "rule": "else: return 'defuse'", "feature_idx": -1, "feature_name": "", "instances": 65, "metric": 0, "return_statement": 0, "tree_id": 0},
|
||||||
{"current_level": 6, "leaf_id": "65a9899b-de8d-11ec-af58-d43d7ef1576e", "parents": "65a4a8a9-de8d-11ec-8c86-d43d7ef1576e", "rule": "if obj[0]>3:", "feature_idx": 0, "feature_name": "Size(bigger_more_difficult)", "instances": 65, "metric": 0.33352200393097664, "return_statement": 0, "tree_id": 0},
|
{"current_level": 6, "leaf_id": "3dda7234-e008-11ec-bf9b-d43d7ef1576e", "parents": "3dd5df33-e008-11ec-a66b-d43d7ef1576e", "rule": "if obj[0]>3:", "feature_idx": 0, "feature_name": "Size(bigger_more_difficult)", "instances": 65, "metric": 0.33352200393097664, "return_statement": 0, "tree_id": 0},
|
||||||
{"current_level": 7, "leaf_id": "65a9899c-de8d-11ec-a96c-d43d7ef1576e", "parents": "65a9899b-de8d-11ec-af58-d43d7ef1576e", "rule": "return 'defuse'", "feature_idx": 0, "feature_name": "Size(bigger_more_difficult)", "instances": 65, "metric": 0, "return_statement": 1, "tree_id": 0},
|
{"current_level": 7, "leaf_id": "3dda7235-e008-11ec-bf80-d43d7ef1576e", "parents": "3dda7234-e008-11ec-bf9b-d43d7ef1576e", "rule": "return 'defuse'", "feature_idx": 0, "feature_name": "Size(bigger_more_difficult)", "instances": 65, "metric": 0, "return_statement": 1, "tree_id": 0},
|
||||||
{"current_level": 6, "leaf_id": "65abfae1-de8d-11ec-aaaa-d43d7ef1576e", "parents": "65a4a8a9-de8d-11ec-8c86-d43d7ef1576e", "rule": "if obj[0]<=3:", "feature_idx": 0, "feature_name": "Size(bigger_more_difficult)", "instances": 65, "metric": 0.33352200393097664, "return_statement": 0, "tree_id": 0},
|
{"current_level": 6, "leaf_id": "3de6589c-e008-11ec-b9e2-d43d7ef1576e", "parents": "3dd5df33-e008-11ec-a66b-d43d7ef1576e", "rule": "if obj[0]<=3:", "feature_idx": 0, "feature_name": "Size(bigger_more_difficult)", "instances": 65, "metric": 0.33352200393097664, "return_statement": 0, "tree_id": 0},
|
||||||
{"current_level": 7, "leaf_id": "65abfae2-de8d-11ec-8f35-d43d7ef1576e", "parents": "65abfae1-de8d-11ec-aaaa-d43d7ef1576e", "rule": "return 'defuse'", "feature_idx": 0, "feature_name": "Size(bigger_more_difficult)", "instances": 65, "metric": 0, "return_statement": 1, "tree_id": 0},
|
{"current_level": 7, "leaf_id": "3de6589d-e008-11ec-ac82-d43d7ef1576e", "parents": "3de6589c-e008-11ec-b9e2-d43d7ef1576e", "rule": "return 'defuse'", "feature_idx": 0, "feature_name": "Size(bigger_more_difficult)", "instances": 65, "metric": 0, "return_statement": 1, "tree_id": 0},
|
||||||
{"current_level": 5, "leaf_id": "65b06753-de8d-11ec-9af2-d43d7ef1576e", "parents": "659c924b-de8d-11ec-ba5c-d43d7ef1576e", "rule": "if obj[5]>2:", "feature_idx": 5, "feature_name": "Detonation_power_in_m", "instances": 97, "metric": 0.445693177722561, "return_statement": 0, "tree_id": 0},
|
{"current_level": 5, "leaf_id": "3dfdfd61-e008-11ec-a211-d43d7ef1576e", "parents": "3dce17a5-e008-11ec-acb7-d43d7ef1576e", "rule": "if obj[5]>2:", "feature_idx": 5, "feature_name": "Detonation_power_in_m", "instances": 97, "metric": 0.445693177722561, "return_statement": 0, "tree_id": 0},
|
||||||
{"current_level": 6, "leaf_id": "65b41086-de8d-11ec-b9c3-d43d7ef1576e", "parents": "65b06753-de8d-11ec-9af2-d43d7ef1576e", "rule": "else: return 'defuse'", "feature_idx": -1, "feature_name": "", "instances": 32, "metric": 0, "return_statement": 0, "tree_id": 0},
|
{"current_level": 6, "leaf_id": "3e01a611-e008-11ec-910f-d43d7ef1576e", "parents": "3dfdfd61-e008-11ec-a211-d43d7ef1576e", "rule": "else: return 'defuse'", "feature_idx": -1, "feature_name": "", "instances": 32, "metric": 0, "return_statement": 0, "tree_id": 0},
|
||||||
{"current_level": 6, "leaf_id": "65b548ec-de8d-11ec-8daf-d43d7ef1576e", "parents": "65b06753-de8d-11ec-9af2-d43d7ef1576e", "rule": "if obj[0]<=7:", "feature_idx": 0, "feature_name": "Size(bigger_more_difficult)", "instances": 32, "metric": 0.6252624052234231, "return_statement": 0, "tree_id": 0},
|
{"current_level": 6, "leaf_id": "3e029055-e008-11ec-94d4-d43d7ef1576e", "parents": "3dfdfd61-e008-11ec-a211-d43d7ef1576e", "rule": "if obj[0]<=7:", "feature_idx": 0, "feature_name": "Size(bigger_more_difficult)", "instances": 32, "metric": 0.6252624052234231, "return_statement": 0, "tree_id": 0},
|
||||||
{"current_level": 7, "leaf_id": "65b548ed-de8d-11ec-a6f9-d43d7ef1576e", "parents": "65b548ec-de8d-11ec-8daf-d43d7ef1576e", "rule": "return 'defuse'", "feature_idx": 0, "feature_name": "Size(bigger_more_difficult)", "instances": 32, "metric": 0, "return_statement": 1, "tree_id": 0},
|
{"current_level": 7, "leaf_id": "3e029056-e008-11ec-80d0-d43d7ef1576e", "parents": "3e029055-e008-11ec-94d4-d43d7ef1576e", "rule": "return 'defuse'", "feature_idx": 0, "feature_name": "Size(bigger_more_difficult)", "instances": 32, "metric": 0, "return_statement": 1, "tree_id": 0},
|
||||||
{"current_level": 6, "leaf_id": "65b792b4-de8d-11ec-ae1b-d43d7ef1576e", "parents": "65b06753-de8d-11ec-9af2-d43d7ef1576e", "rule": "if obj[0]>7:", "feature_idx": 0, "feature_name": "Size(bigger_more_difficult)", "instances": 32, "metric": 0.6252624052234231, "return_statement": 0, "tree_id": 0},
|
{"current_level": 6, "leaf_id": "3e0e9dd1-e008-11ec-8ed3-d43d7ef1576e", "parents": "3dfdfd61-e008-11ec-a211-d43d7ef1576e", "rule": "if obj[0]>7:", "feature_idx": 0, "feature_name": "Size(bigger_more_difficult)", "instances": 32, "metric": 0.6252624052234231, "return_statement": 0, "tree_id": 0},
|
||||||
{"current_level": 7, "leaf_id": "65b792b5-de8d-11ec-8bb4-d43d7ef1576e", "parents": "65b792b4-de8d-11ec-ae1b-d43d7ef1576e", "rule": "return 'defuse'", "feature_idx": 0, "feature_name": "Size(bigger_more_difficult)", "instances": 32, "metric": 0, "return_statement": 1, "tree_id": 0},
|
{"current_level": 7, "leaf_id": "3e0e9dd2-e008-11ec-9bd3-d43d7ef1576e", "parents": "3e0e9dd1-e008-11ec-8ed3-d43d7ef1576e", "rule": "return 'defuse'", "feature_idx": 0, "feature_name": "Size(bigger_more_difficult)", "instances": 32, "metric": 0, "return_statement": 1, "tree_id": 0},
|
||||||
{"current_level": 4, "leaf_id": "65be48e0-de8d-11ec-b4ae-d43d7ef1576e", "parents": "659196b8-de8d-11ec-b5e3-d43d7ef1576e", "rule": "if obj[1]>1997.8794790831414:", "feature_idx": 1, "feature_name": "Year(older_more_difficult)", "instances": 116, "metric": 0.3936164041111624, "return_statement": 0, "tree_id": 0},
|
{"current_level": 4, "leaf_id": "3e324f8e-e008-11ec-a2cf-d43d7ef1576e", "parents": "3dc39134-e008-11ec-9943-d43d7ef1576e", "rule": "if obj[1]>1997.8794790831414:", "feature_idx": 1, "feature_name": "Year(older_more_difficult)", "instances": 116, "metric": 0.3936164041111624, "return_statement": 0, "tree_id": 0},
|
||||||
{"current_level": 5, "leaf_id": "65be48e1-de8d-11ec-9136-d43d7ef1576e", "parents": "65be48e0-de8d-11ec-b4ae-d43d7ef1576e", "rule": "return 'defuse'", "feature_idx": 1, "feature_name": "Year(older_more_difficult)", "instances": 116, "metric": 0, "return_statement": 1, "tree_id": 0},
|
{"current_level": 5, "leaf_id": "3e324f8f-e008-11ec-b0e5-d43d7ef1576e", "parents": "3e324f8e-e008-11ec-a2cf-d43d7ef1576e", "rule": "return 'defuse'", "feature_idx": 1, "feature_name": "Year(older_more_difficult)", "instances": 116, "metric": 0, "return_statement": 1, "tree_id": 0},
|
||||||
{"current_level": 3, "leaf_id": "65c2b4d6-de8d-11ec-89c3-d43d7ef1576e", "parents": "6582f1e8-de8d-11ec-9c53-d43d7ef1576e", "rule": "if obj[3]>7:", "feature_idx": 3, "feature_name": "Meters_under_the_ground", "instances": 135, "metric": 0.7364977795505669, "return_statement": 0, "tree_id": 0},
|
{"current_level": 3, "leaf_id": "3e4a6970-e008-11ec-82ec-d43d7ef1576e", "parents": "3db5af1f-e008-11ec-ba0b-d43d7ef1576e", "rule": "if obj[3]>7:", "feature_idx": 3, "feature_name": "Meters_under_the_ground", "instances": 135, "metric": 0.7364977795505669, "return_statement": 0, "tree_id": 0},
|
||||||
{"current_level": 4, "leaf_id": "65c2b4d7-de8d-11ec-8575-d43d7ef1576e", "parents": "65c2b4d6-de8d-11ec-89c3-d43d7ef1576e", "rule": "return 'detonate'", "feature_idx": 3, "feature_name": "Meters_under_the_ground", "instances": 135, "metric": 0, "return_statement": 1, "tree_id": 0},
|
{"current_level": 4, "leaf_id": "3e4a6971-e008-11ec-b6a1-d43d7ef1576e", "parents": "3e4a6970-e008-11ec-82ec-d43d7ef1576e", "rule": "return 'detonate'", "feature_idx": 3, "feature_name": "Meters_under_the_ground", "instances": 135, "metric": 0, "return_statement": 1, "tree_id": 0},
|
||||||
{"current_level": 2, "leaf_id": "65c72151-de8d-11ec-adc4-d43d7ef1576e", "parents": "6572790a-de8d-11ec-ac91-d43d7ef1576e", "rule": "if obj[2]>0:", "feature_idx": 2, "feature_name": "Protection_from_defuse", "instances": 161, "metric": 0.9203523274205176, "return_statement": 0, "tree_id": 0},
|
{"current_level": 2, "leaf_id": "3e625c50-e008-11ec-8286-d43d7ef1576e", "parents": "3da6bcfb-e008-11ec-ba71-d43d7ef1576e", "rule": "if obj[2]>0:", "feature_idx": 2, "feature_name": "Protection_from_defuse", "instances": 161, "metric": 0.9203523274205176, "return_statement": 0, "tree_id": 0},
|
||||||
{"current_level": 3, "leaf_id": "65c72152-de8d-11ec-8a44-d43d7ef1576e", "parents": "65c72151-de8d-11ec-adc4-d43d7ef1576e", "rule": "return 'detonate'", "feature_idx": 2, "feature_name": "Protection_from_defuse", "instances": 161, "metric": 0, "return_statement": 1, "tree_id": 0},
|
{"current_level": 3, "leaf_id": "3e625c51-e008-11ec-bcac-d43d7ef1576e", "parents": "3e625c50-e008-11ec-8286-d43d7ef1576e", "rule": "return 'detonate'", "feature_idx": 2, "feature_name": "Protection_from_defuse", "instances": 161, "metric": 0, "return_statement": 1, "tree_id": 0},
|
||||||
{"current_level": 1, "leaf_id": "65cb8dc2-de8d-11ec-b823-d43d7ef1576e", "parents": "root", "rule": "if obj[4]>80.67436609605278:", "feature_idx": 4, "feature_name": "Random_detonation_chance", "instances": 200, "metric": 0.9964625048848765, "return_statement": 0, "tree_id": 0},
|
{"current_level": 1, "leaf_id": "3e7da9c6-e008-11ec-9254-d43d7ef1576e", "parents": "root", "rule": "if obj[4]>80.67436609605278:", "feature_idx": 4, "feature_name": "Random_detonation_chance", "instances": 200, "metric": 0.9964625048848765, "return_statement": 0, "tree_id": 0},
|
||||||
{"current_level": 2, "leaf_id": "65cb8dc3-de8d-11ec-a99c-d43d7ef1576e", "parents": "65cb8dc2-de8d-11ec-b823-d43d7ef1576e", "rule": "return 'detonate'", "feature_idx": 4, "feature_name": "Random_detonation_chance", "instances": 200, "metric": 0, "return_statement": 1, "tree_id": 0}
|
{"current_level": 2, "leaf_id": "3e7da9c7-e008-11ec-81ca-d43d7ef1576e", "parents": "3e7da9c6-e008-11ec-9254-d43d7ef1576e", "rule": "return 'detonate'", "feature_idx": 4, "feature_name": "Random_detonation_chance", "instances": 200, "metric": 0, "return_statement": 1, "tree_id": 0}
|
||||||
]
|
]
|
@ -1,2 +1,4 @@
|
|||||||
pygame
|
pygame
|
||||||
chefboost
|
chefboost
|
||||||
|
tensorflow #--upgrade
|
||||||
|
sklearn
|
Loading…
Reference in New Issue
Block a user