2022-11-25 12:35:45 +01:00
|
|
|
from sklearn.dummy import DummyClassifier
|
|
|
|
from sklearn import linear_model, svm, naive_bayes, neighbors, tree, ensemble
|
|
|
|
from lightgbm import LGBMClassifier
|
|
|
|
import xgboost as xg
|
|
|
|
|
|
|
|
class ClassificationModels():
|
|
|
|
|
|
|
|
def __init__(self):
|
|
|
|
self.cmodels = self.init_classification_models()
|
|
|
|
|
|
|
|
def get_cmodels(self):
|
|
|
|
return self.cmodels
|
|
|
|
|
|
|
|
def init_classification_models(self):
|
|
|
|
cmodels = {
|
|
|
|
'dummy_classifier': {
|
|
|
|
'model': DummyClassifier(strategy="most_frequent"),
|
|
|
|
'metrics': [0, 0, 0, 0]
|
|
|
|
},
|
|
|
|
'logistic_regression': {
|
2022-11-25 14:44:11 +01:00
|
|
|
'model': linear_model.LogisticRegression(max_iter=1000),
|
2022-11-25 12:35:45 +01:00
|
|
|
'metrics': [0, 0, 0, 0]
|
|
|
|
},
|
|
|
|
'support_vector_machine': {
|
|
|
|
'model': svm.SVC(),
|
|
|
|
'metrics': [0, 0, 0, 0]
|
|
|
|
},
|
|
|
|
'gaussian_naive_bayes': {
|
|
|
|
'model': naive_bayes.GaussianNB(),
|
|
|
|
'metrics': [0, 0, 0, 0]
|
|
|
|
},
|
|
|
|
'stochastic_gradient_descent_classifier': {
|
|
|
|
'model': linear_model.SGDClassifier(),
|
|
|
|
'metrics': [0, 0, 0, 0]
|
|
|
|
},
|
|
|
|
'knn': {
|
|
|
|
'model': neighbors.KNeighborsClassifier(),
|
|
|
|
'metrics': [0, 0, 0, 0]
|
|
|
|
},
|
|
|
|
'decision_tree': {
|
|
|
|
'model': tree.DecisionTreeClassifier(),
|
|
|
|
'metrics': [0, 0, 0, 0]
|
|
|
|
},
|
|
|
|
'random_forest_classifier': {
|
|
|
|
'model': ensemble.RandomForestClassifier(),
|
|
|
|
'metrics': [0, 0, 0, 0]
|
|
|
|
},
|
|
|
|
'gradient_boosting_classifier': {
|
|
|
|
'model': ensemble.GradientBoostingClassifier(),
|
|
|
|
'metrics': [0, 0, 0, 0]
|
|
|
|
},
|
|
|
|
'lgbm_classifier': {
|
|
|
|
'model': LGBMClassifier(),
|
|
|
|
'metrics': [0, 0, 0, 0]
|
|
|
|
},
|
|
|
|
'XGBoost_classifier': {
|
|
|
|
'model': xg.sklearn.XGBClassifier(),
|
|
|
|
'metrics': [0, 0, 0, 0]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return cmodels
|
|
|
|
|
|
|
|
def get_total_models_scores(self, n_clusters=1):
|
|
|
|
for model_title, model in self.cmodels.items():
|
|
|
|
print("\n************************************\n")
|
|
|
|
print("Current model:", model_title, end="\n")
|
|
|
|
print("Acc:", model['metrics'][0]/n_clusters)
|
|
|
|
print("Precision:", model['metrics'][1]/n_clusters)
|
|
|
|
print("Recall:", model['metrics'][2]/n_clusters)
|
|
|
|
print("F1:", model['metrics'][3]/n_clusters)
|