Add report models in benchmark

Add SVC, WODT & ExtraTree models
This commit is contained in:
2021-09-25 12:54:46 +02:00
parent d630dfaeab
commit 60374c6613
6 changed files with 406 additions and 36 deletions

View File

@@ -8,31 +8,14 @@ from tqdm import tqdm
import numpy as np
import pandas as pd
from sklearn.model_selection import StratifiedKFold, cross_validate
from sklearn.tree import DecisionTreeClassifier, ExtraTreeClassifier
from stree import Stree
from Utils import Folders, Files
from Models import Models
class Randomized:
seeds = [57, 31, 1714, 17, 23, 79, 83, 97, 7, 1]
class Models:
@staticmethod
def get_model(name):
if name == "STree":
return Stree
elif name == "Cart":
return DecisionTreeClassifier
elif name == "ExtraTree":
return ExtraTreeClassifier
else:
msg = f"No model recognized {name}"
if name == "Stree" or name == "stree":
msg += ", did you mean STree?"
raise ValueError(msg)
class Diterator:
def __init__(self, data):
self._stack = data.copy()
@@ -178,20 +161,6 @@ class Experiment:
self.leaves = []
self.depths = []
def _get_complexity(self, result):
if self.model_name == "Cart":
nodes = result.tree_.node_count
depth = result.tree_.max_depth
leaves = result.get_n_leaves()
if self.model_name == "ExtraTree":
nodes = 0
leaves = result.get_n_leaves()
depth = 0
else:
nodes, leaves = result.nodes_leaves()
depth = result.depth_ if hasattr(result, "depth_") else 0
return nodes, leaves, depth
def _n_fold_crossval(self, X, y, hyperparameters):
if self.scores != []:
raise ValueError("Must init experiment before!")
@@ -217,8 +186,8 @@ class Experiment:
self.scores.append(res["test_score"])
self.times.append(res["fit_time"])
for result_item in res["estimator"]:
nodes_item, leaves_item, depth_item = self._get_complexity(
result_item
nodes_item, leaves_item, depth_item = Models.get_complexity(
self.model_name, result_item
)
self.nodes.append(nodes_item)
self.leaves.append(leaves_item)