Skip to content

Instantly share code, notes, and snippets.

@tomasoak
Created November 29, 2023 22:54
Show Gist options
  • Save tomasoak/9ea17e4a0b820e416804e5ed9fce695c to your computer and use it in GitHub Desktop.
Save tomasoak/9ea17e4a0b820e416804e5ed9fce695c to your computer and use it in GitHub Desktop.
eEDB-001 - Análise e Mineração de Dados - Atividade 04
"""
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