mlearner version: 0.2.0
modelCatBoost
modelCatBoost(name='CBT', random_state=99, args, *kwargs)
None
Methods
FineTune_hyperopt(X, y, mute=False)
None
FineTune_sklearn(X, y, mute=False, n_splits=10, n_iter=2)
https://www.kaggle.com/ksaaskil/pets-definitive-catboost-tuning
Visualizer_Models(directs=None, visu_model=True)
None
add_cat_features(index_features)
None
copy(args, *kwargs)
None
dataset(X, y, categorical_columns_indices=None, test_size=0.2, args, *kwargs)
None
fit(X, y, use_best_model=True, plot=True, save_snapshot=False, verbose=0, args, *kwargs)
None
fit_cv(X, y, fold_count=4, shuffle=True, stratified=True, plot=True, verbose=100)
None
get_important_features(display=True)
None
hyperopt_objective(params)
None
index_features(features)
None
load_model(direct='./checkpoints', name='catboost_model')
None
predict(X, args, *kwargs)
None
predict_proba(X, args, *kwargs)
None
replace_multiclass(targets)
None
save_model(direct='./checkpoints', name='catboost_model')
None
update_model(kwargs)
None
modelLightBoost
modelLightBoost(name='LGB', random_state=99, train_dir='', params=None, args, *kwargs)
Ejemplo multiclass: https://www.kaggle.com/nicapotato/multi-class-lgbm-cv-and-seed-diversification
Methods
FineTune(model, X, y, params, refit='Accuracy', cv=3, verbose=0, randomized=True, n_iter=100, mute=False)
Tecnica de Ajuste fino de hiperparametros.
Model: Modelo a Optimizar.
params: diccionario de parametros con el grid.
scoring: Metricas. scoring = {'AUC': 'roc_auc', 'Accuracy': acc_scorer} - Anotador de metricas: acc_score = make_scorer(accuracy_score, mean_squared_error)
refit: Metrica de importancia para optimizar el modelo'Accuracy'
FineTune_SearchCV(X=None, y=None, X_train=None, X_test=None, y_train=None, y_test=None, params=None, params_finetune=None, ROC=False, randomized=True, cv=10, display_ROC=True, verbose=0, n_iter=10, replace_model=True, nosplit=False, finetune_dir='')
None
GridSearchCV_Evaluating(model, param, max_param, min_score=0.5)
https://scikit-learn.org/stable/auto_examples/model_selection/plot_multi_metric_evaluation.html#sphx-glr-auto-examples-model-selection-plot-multi-metric-evaluation-py
KFold_CrossValidation(model, X, y, n_splits=10, ROC=False, shuffle=True, mute=False, logdir_report='', display=True, save_image=True, verbose=0)
Validacion cruzada respecto a "n_plits" del KFolds.
SeedDiversification_cv(X=None, y=None, X_train=None, X_test=None, y_train=None, y_test=None, n_iter=10, n_max=-4, cv=10, nosplit=False, finetuneseed_dir='', display=True, save_image=True, verbose=0)
None
SeedDiversification_fs(X, y, params, n_iter=10, mute=False, logdir_report='', display=True, save_image=True)
None
add_model(model, random_state=99)
Incorporar modelo en la clase
class_report(y_true, predictions, clases, save=False, logdir_report='')
Un informe de clasificacion se utiliza para medir la calidad de las predicciones de un algoritmo de clasificacion. Cuantas predicciones son verdaderas y cuantas son falsas. Mas especificamente, los Positivos verdaderos, los Positivos falsos, los negativos verdaderos y los negativos falsos se utilizan para predecir las metricas de un informe de clasificacion.
El informe muestra las principales metricas de clasificacion de precision, recuperacion y puntaje f1 por clase. Las metricas se calculan utilizando verdaderos y falsos positivos, verdaderos y falsos negativos. Positivo y negativo en este caso son nombres genericos para las clases predichas. Hay cuatro formas de verificar si las predicciones son correctas o incorrectas:
TN / Verdadero negativo: cuando un caso fue negativo y se pronostico negativo TP / Verdadero Positivo: cuando un caso fue positivo y predicho positivo FN / Falso negativo: cuando un caso fue positivo pero predicho negativo FP / Falso Positivo: cuando un caso fue negativo pero predicho positivo
La precision es la capacidad de un clasificador de no etiquetar una instancia positiva que en realidad es negativa. Para cada clase se define como la relacion de positivos verdaderos a la suma de positivos verdaderos y falsos.
TP - Positivos verdaderos FP - Positivos falsos
Precision: precision de las predicciones positivas. Precision = TP / (TP + FP)
Recordar es la capacidad de un clasificador para encontrar todas las instancias positivas. Para cada clase se define como la relacion entre los verdaderos positivos y la suma de los verdaderos positivos y los falsos negativos.
FN - Falsos negativos
Recordar: fraccion de positivos identificados correctamente. Recuperacion = TP / (TP + FN)
El puntaje F 1 es una media armonica ponderada de precision y recuperacion de modo que el mejor puntaje es 1.0 y el peor es 0.0. En terminos generales, los puntajes de F 1 son mas bajos que las medidas de precision, ya que incorporan precision y recuerdo en su calculo. Como regla general, el promedio ponderado de F 1 debe usarse para comparar modelos clasificadores, no la precision global.
Puntuacion F1 = 2 * (recuperacion * precision) / (recuperacion + precision)
compute_roc_auc(model, index, X, y)
Computo para todas las pruebas de KFold
confusion_matrix(y_true, y_pred)
None
create_ROC(lm, X_test, Y_test, targets=[0, 1], logdir_report='', display=True, save_image=True)
Se crea la curva ROC de las predicciones de conjunto de test.
Outputs: - df: Dataframe de los datos de metricas ROC. - auc: Area por debajo de la curfa ROC (efectividad de las predicciones).
create_ROC_pro(fprs, tprs, X, y, targets=[0, 1], logdir_report='', display=True, save_image=True)
Plot the Receiver Operating Characteristic from a list of true positive rates and false positive rates.
dataset(X, y, categorical_columns_indices=None, test_size=0.2, args, *kwarg)
None
eval_FineTune(X, y)
https://towardsdatascience.com/hyperparameter-tuning-the-random-forest-in-python-using-scikit-learn-28d2aa77dd74 https://github.com/WillKoehrsen/Machine-Learning-Projects/blob/master/random_forest_explained/Improving%20Random%20Forest%20Part%202.ipynb
eval_train(model, X, y, name='Performance')
None
evaluacion_rf_2features(clf, data_eval, data_eval_target, targets=[0, 1], save=False, logdir_report='', display=True)
Funcion que nos selecciona el thresholder mas optimo:
Inputs:
- data_eval: Conjunto de evaluacion.
- probs: Matriz de probabilidades que viene dado por el "lm.predict_proba" del podelo de RL.
- thresholders: Intervalo de corte para determinar la categoria. viene dado por el "metrics.roc_curve" de sckitlearn.
- display: si queremos mostrar los datos graficados por pantalla.
Outputs:
- th: Thresholder seleccionado.
- res: El accurancy con ese thresholder.
- df: Dataframe con el resultado del test.
evaluate(model, X, y)
Evalucion del modelo Fine-Tune
features_important(X, y, logdir='', display=True, save_image=False)
Explorar las features mas significativas
fit(X=None, y=None, X_train=None, X_test=None, y_train=None, y_test=None, mute=False, use_best_model=True, verbose=0, num_boost_round=100, nosplit=False, kwargs)
None
fit_cv(X=None, y=None, X_train=None, X_test=None, y_train=None, y_test=None, nfold=5, use_best_model=True, verbose=200, nosplit=False, early_stopping_rounds=150, num_boost_round=2000, kwargs)
None
func_acc(prob_pred, y_target)
None
get_important_features(display=True, max_num_features=20)
None
get_model()
None
get_params(deep=True)
Get parameters for this estimator.
Parameters
-
deep
: bool, default=TrueIf True, will return the parameters for this estimator and contained subobjects that are estimators.
Returns
-
params
: mapping of string to anyParameter names mapped to their values.
get_params_json()
None
heatmap_params(parameters, results_df, metric='mean_test_Accuracy')
parametres a relacionar: parameters = ["n_estimators", "min_samples_split"]
index_features(features)
None
load_model(direct='./checkpoints/LGM_model.txt', file_model='.txt')
None
plot_Histograma(predict, correct, incorrect, logdir_report, categorias=[0, 1], display=True, save_image=True)
None
plot_confusion_matrix(y_true, y_pred, classes, num_clases, logdir_report, normalize=False, title=None, cmap=
Una matriz de confusion es un resumen de los resultados de prediccion sobre un problema de clasificacion.
El numero de predicciones correctas e incorrectas se resume con valores de conteo y se desglosa por clase. Esta es la clave de la matriz de confusion.
La matriz de confusion muestra las formas en que su modelo de clasificacion se confunde cuando hace predicciones.
Le da una idea no solo de los errores que esta cometiendo su clasificador, sino mas importante aun, de los tipos de errores que se estan cometiendo.
Es este desglose el que supera la limitacion del uso de la precision de clasificacion solo.
pred_binary(X, args, *kwargs)
None
pred_multiclass(X, args, *kwargs)
None
predict(X, args, *kwargs)
None
predict_proba(X, args, *kwargs)
None
replace_multiclass(targets)
None
restore_model(filename)
Load the model from disk
save_model(direct='./checkpoints', name='LGM_model', file_model='.txt')
Save the model to disk
score(X, y, sample_weight=None)
Return the mean accuracy on the given test data and labels.
In multi-label classification, this is the subset accuracy which is a harsh metric since you require for each sample that each label set be correctly predicted.
Parameters
-
X
: array-like of shape (n_samples, n_features)Test samples.
-
y
: array-like of shape (n_samples,) or (n_samples, n_outputs)True labels for X.
-
sample_weight
: array-like of shape (n_samples,), default=NoneSample weights.
Returns
-
score
: floatMean accuracy of self.predict(X) wrt. y.
set_dataset_nosplit(X_train, X_test, y_train, y_test, categorical_columns_indices=None, args, *kwarg)
None
set_params(params)
Set the parameters of this estimator.
The method works on simple estimators as well as on nested objects
(such as pipelines). The latter have parameters of the form
<component>__<parameter>
so that it's possible to update each
component of a nested object.
Parameters
-
**params
: dictEstimator parameters.
Returns
-
self
: objectEstimator instance.
update_model(kwargs)
None
validacion_cruzada(X, Y, n_splits, shuffle=True, scoring='accuracy')
Validacion cruzada del dataset introducido como input.
Inputs: - cv = Numero de iteraciones.
Outputs: - score: Media de los acc de todas las iteraciones.
modelXGBoost
modelXGBoost(name='XGB', random_state=99, train_dir='', params=None, args, *kwargs)
XGBoost is an optimized distributed gradient boosting library designed to be highly efficient, flexible and portable. It implements machine learning algorithms under the Gradient Boosting framework. XGBoost provides a parallel tree boosting (also known as GBDT, GBM) that solve many data science problems in a fast and accurate way. The same code runs on major distributed environment (Hadoop, SGE, MPI) and can solve problems beyond billions of examples.
Parameters
"min_child_weight": [ Minimum sum of instance weight (hessian) needed in a child. "objective": learning task. "eval_metric": Evaluation metrics for validation data. "max_depth": Maximum depth of a tree. Increasing this value will make the model more complex and more likely to overfit "max_delta_step": /Maximum delta step we allow each leaf output to be. If the value is set to 0, it means there is no constraint. "sampling_method": The method to use to sample the training instances. "subsample": Subsample ratio of the training instances. Setting it to 0.5 means that XGBoost would randomly sample half of the training data prior to growing trees. and this will prevent overfitting. "eta": tep size shrinkage used in update to prevents overfitting. "gamma": Minimum loss reduction required to make a further partition on a leaf node of the tree. "lambda": L2 regularization term on weights. Increasing this value will make model more conservative. "alpha": L1 regularization term on weights. Increasing this value will make model more conservative. "tree_method": he tree construction algorithm used in XGBoost. "predictor": The type of predictor algorithm to use. "num_parallel_tree": umber of parallel trees constructed during each iteration. ...
Documentation
https://xgboost.readthedocs.io/en/latest/ https://www.analyticsvidhya.com/blog/2016/03/complete-guide-parameter-tuning-xgboost-with-codes-python/
Methods
FineTune(model, X, y, params, refit='Accuracy', cv=3, verbose=0, randomized=True, n_iter=100, mute=False)
Tecnica de Ajuste fino de hiperparametros.
Model: Modelo a Optimizar.
params: diccionario de parametros con el grid.
scoring: Metricas. scoring = {'AUC': 'roc_auc', 'Accuracy': acc_scorer} - Anotador de metricas: acc_score = make_scorer(accuracy_score, mean_squared_error)
refit: Metrica de importancia para optimizar el modelo'Accuracy'
FineTune_SearchCV(X=None, y=None, X_train=None, X_test=None, y_train=None, y_test=None, params=None, params_finetune=None, ROC=False, randomized=True, cv=10, n_iter=10, replace_model=True, verbose=0, nosplit=False, finetune_dir='')
None
GridSearchCV_Evaluating(model, param, max_param, min_score=0.5)
https://scikit-learn.org/stable/auto_examples/model_selection/plot_multi_metric_evaluation.html#sphx-glr-auto-examples-model-selection-plot-multi-metric-evaluation-py
KFold_CrossValidation(model, X, y, n_splits=10, ROC=False, shuffle=True, mute=False, logdir_report='', display=True, save_image=True, verbose=0)
Validacion cruzada respecto a "n_plits" del KFolds.
SeedDiversification_cv(X=None, y=None, X_train=None, X_test=None, y_train=None, y_test=None, n_iter=10, n_max=-4, cv=10, nosplit=False, finetuneseed_dir='', display=True, save_image=True, verbose=0)
None
add_model(model, random_state=99)
Incorporar modelo en la clase
class_report(y_true, predictions, clases, save=False, logdir_report='')
Un informe de clasificacion se utiliza para medir la calidad de las predicciones de un algoritmo de clasificacion. Cuantas predicciones son verdaderas y cuantas son falsas. Mas especificamente, los Positivos verdaderos, los Positivos falsos, los negativos verdaderos y los negativos falsos se utilizan para predecir las metricas de un informe de clasificacion.
El informe muestra las principales metricas de clasificacion de precision, recuperacion y puntaje f1 por clase. Las metricas se calculan utilizando verdaderos y falsos positivos, verdaderos y falsos negativos. Positivo y negativo en este caso son nombres genericos para las clases predichas. Hay cuatro formas de verificar si las predicciones son correctas o incorrectas:
TN / Verdadero negativo: cuando un caso fue negativo y se pronostico negativo TP / Verdadero Positivo: cuando un caso fue positivo y predicho positivo FN / Falso negativo: cuando un caso fue positivo pero predicho negativo FP / Falso Positivo: cuando un caso fue negativo pero predicho positivo
La precision es la capacidad de un clasificador de no etiquetar una instancia positiva que en realidad es negativa. Para cada clase se define como la relacion de positivos verdaderos a la suma de positivos verdaderos y falsos.
TP - Positivos verdaderos FP - Positivos falsos
Precision: precision de las predicciones positivas. Precision = TP / (TP + FP)
Recordar es la capacidad de un clasificador para encontrar todas las instancias positivas. Para cada clase se define como la relacion entre los verdaderos positivos y la suma de los verdaderos positivos y los falsos negativos.
FN - Falsos negativos
Recordar: fraccion de positivos identificados correctamente. Recuperacion = TP / (TP + FN)
El puntaje F 1 es una media armonica ponderada de precision y recuperacion de modo que el mejor puntaje es 1.0 y el peor es 0.0. En terminos generales, los puntajes de F 1 son mas bajos que las medidas de precision, ya que incorporan precision y recuerdo en su calculo. Como regla general, el promedio ponderado de F 1 debe usarse para comparar modelos clasificadores, no la precision global.
Puntuacion F1 = 2 * (recuperacion * precision) / (recuperacion + precision)
compute_roc_auc(model, index, X, y)
Computo para todas las pruebas de KFold
confusion_matrix(y_true, y_pred)
None
create_ROC(lm, X_test, Y_test, targets=[0, 1], logdir_report='', display=True, save_image=True)
Se crea la curva ROC de las predicciones de conjunto de test.
Outputs: - df: Dataframe de los datos de metricas ROC. - auc: Area por debajo de la curfa ROC (efectividad de las predicciones).
create_ROC_pro(fprs, tprs, X, y, targets=[0, 1], logdir_report='', display=True, save_image=True)
Plot the Receiver Operating Characteristic from a list of true positive rates and false positive rates.
dataset(X, y, categorical_columns_indices=None, test_size=0.2, args, *kwarg)
None
eval_FineTune(X, y)
https://towardsdatascience.com/hyperparameter-tuning-the-random-forest-in-python-using-scikit-learn-28d2aa77dd74 https://github.com/WillKoehrsen/Machine-Learning-Projects/blob/master/random_forest_explained/Improving%20Random%20Forest%20Part%202.ipynb
eval_train(model, X, y, name='Performance')
None
evaluacion_rf_2features(clf, data_eval, data_eval_target, targets=[0, 1], save=False, logdir_report='', display=True)
Funcion que nos selecciona el thresholder mas optimo:
Inputs:
- data_eval: Conjunto de evaluacion.
- probs: Matriz de probabilidades que viene dado por el "lm.predict_proba" del podelo de RL.
- thresholders: Intervalo de corte para determinar la categoria. viene dado por el "metrics.roc_curve" de sckitlearn.
- display: si queremos mostrar los datos graficados por pantalla.
Outputs:
- th: Thresholder seleccionado.
- res: El accurancy con ese thresholder.
- df: Dataframe con el resultado del test.
evaluate(model, X, y)
Evalucion del modelo Fine-Tune
features_important(X, y, logdir='', display=True, save_image=False)
Explorar las features mas significativas
fit(X=None, y=None, X_train=None, X_test=None, y_train=None, y_test=None, mute=False, use_best_model=True, verbose=0, num_boost_round=100, nosplit=False, kwargs)
None
fit_cv(X=None, y=None, X_train=None, X_test=None, y_train=None, y_test=None, num_boost_round=75, nfold=5, use_best_model=True, verbose=2, nosplit=False, early_stopping_rounds=75, kwargs)
https://xgboost.readthedocs.io/en/latest/parameter.html
func_acc(prob_pred, y_target)
None
get_important_features(display=True, max_num_features=20)
None
get_model()
None
get_params(deep=True)
Get parameters for this estimator.
Parameters
-
deep
: bool, default=TrueIf True, will return the parameters for this estimator and contained subobjects that are estimators.
Returns
-
params
: mapping of string to anyParameter names mapped to their values.
get_params_json()
None
heatmap_params(parameters, results_df, metric='mean_test_Accuracy')
parametres a relacionar: parameters = ["n_estimators", "min_samples_split"]
index_features(features)
None
load_model(direct='./checkpoints/XGB_model.txt', file_model='.txt')
None
plot_Histograma(predict, correct, incorrect, logdir_report, categorias=[0, 1], display=True, save_image=True)
None
plot_confusion_matrix(y_true, y_pred, classes, num_clases, logdir_report, normalize=False, title=None, cmap=
Una matriz de confusion es un resumen de los resultados de prediccion sobre un problema de clasificacion.
El numero de predicciones correctas e incorrectas se resume con valores de conteo y se desglosa por clase. Esta es la clave de la matriz de confusion.
La matriz de confusion muestra las formas en que su modelo de clasificacion se confunde cuando hace predicciones.
Le da una idea no solo de los errores que esta cometiendo su clasificador, sino mas importante aun, de los tipos de errores que se estan cometiendo.
Es este desglose el que supera la limitacion del uso de la precision de clasificacion solo.
pred_binary(X, args, *kwargs)
None
pred_multiclass(X, args, *kwargs)
None
predict(X, args, *kwargs)
None
replace_multiclass(targets)
None
restore_model(filename)
Load the model from disk
save_model(direct='./checkpoints', name='XGB_model', file_model='.txt')
Save the model to disk
score(X, y, sample_weight=None)
Return the mean accuracy on the given test data and labels.
In multi-label classification, this is the subset accuracy which is a harsh metric since you require for each sample that each label set be correctly predicted.
Parameters
-
X
: array-like of shape (n_samples, n_features)Test samples.
-
y
: array-like of shape (n_samples,) or (n_samples, n_outputs)True labels for X.
-
sample_weight
: array-like of shape (n_samples,), default=NoneSample weights.
Returns
-
score
: floatMean accuracy of self.predict(X) wrt. y.
set_dataset_nosplit(X_train, X_test, y_train, y_test, categorical_columns_indices=None, args, *kwarg)
None
set_params(params)
Set the parameters of this estimator.
The method works on simple estimators as well as on nested objects
(such as pipelines). The latter have parameters of the form
<component>__<parameter>
so that it's possible to update each
component of a nested object.
Parameters
-
**params
: dictEstimator parameters.
Returns
-
self
: objectEstimator instance.
update_model(kwargs)
None
validacion_cruzada(X, Y, n_splits, shuffle=True, scoring='accuracy')
Validacion cruzada del dataset introducido como input.
Inputs: - cv = Numero de iteraciones.
Outputs: - score: Media de los acc de todas las iteraciones.