Created
November 29, 2023 22:54
-
-
Save tomasoak/9ea17e4a0b820e416804e5ed9fce695c to your computer and use it in GitHub Desktop.
eEDB-001 - Análise e Mineração de Dados - Atividade 04
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
""" | |
Universidade de São Paulo | |
Escola Politécnica | |
Especializaçäo em Engenharia de Dados & Big Data | |
Análise e Mineração de Dados - eEDB-001 | |
Atividade 04 | |
Desenvolvimento de função que realiza validação cruzada no treinamento de | |
modelo de regressão logística. | |
""" | |
import numpy as np | |
from sklearn.linear_model import LogisticRegression | |
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score | |
from sklearn.model_selection import KFold | |
def cross_validation_logistic_regression(features, labels, model, folds): | |
""" | |
Realiza a validação cruzada no treinamento do modelo de regressão logística. | |
Parâmetros: | |
features: Os dados de features. | |
labels: Os rótulos. | |
model: O modelo de regressão logística a ser treinado. | |
folds: O número de folds. | |
Retorno: | |
Uma matriz com as métricas de desempenho em cada fold. | |
""" | |
# Divide os dados em folds | |
kfold = KFold(n_splits=folds) | |
splits = kfold.split(features, labels) | |
# Itera sobre os folds | |
scores = np.zeros((folds, 4)) | |
for i, (train_index, test_index) in enumerate(splits): | |
# Treina o modelo no fold de treino | |
model.fit(features[train_index], labels[train_index]) | |
# Faz as predições no fold de teste | |
predictions = model.predict(features[test_index]) | |
# Calcula as métricas de desempenho | |
scores[i] = [ | |
accuracy_score(labels[test_index], predictions), | |
precision_score(labels[test_index], predictions), | |
recall_score(labels[test_index], predictions), | |
f1_score(labels[test_index], predictions) | |
] | |
return scores |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment