Avaliação, Ajuste e Seleção de Modelos

Avaliação, Ajuste e Seleção de Modelos#

Importante

Para execução dos códigos, é necessário instalar as seguintes bibliotecas:

  • !pip install -U scikit-learn

Avaliação para Regressão#

# Pipeline de Regressão
import pandas as pd
from sklearn.datasets import fetch_california_housing

# Carregando os dados
califa_dataset = fetch_california_housing()

# Separando atributos preditivos do atributo alvo
data = pd.DataFrame(califa_dataset.data, columns=califa_dataset.feature_names)
target = califa_dataset.target

from sklearn.model_selection import train_test_split

# Aplicando a técnica de hold-out 
train, test, train_labels, test_labels = train_test_split(data,
                                                          target,
                                                          test_size=0.2,
                                                          random_state=12)
                                                          
# Importando o regressor baseado em Árvore de Decisão
from sklearn.tree import DecisionTreeRegressor

dt = DecisionTreeRegressor(random_state=42)

# Treinando o modelo e coletando predições
dt.fit(train, train_labels)
preds_dt = dt.predict(test)

# Importando as métricas de avaliação para regressão
from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score

# Exibindo os valores de avaliação de performance
print(f"MSE: {mean_squared_error(test_labels, preds_dt)}")
print(f"RMSE: {mean_squared_error(test_labels, preds_dt, squared=False)}")
print(f"MAE: {mean_absolute_error(test_labels, preds_dt)}")
print(f"R2_score: {r2_score(test_labels, preds_dt)}")

Avaliação para Classificação#

# Pipeline de Classificação
import pandas as pd

# Leitura dos dados
df = pd.read_csv('diabetes.csv')

# Separando os dados em atributos preditivos (X) e atributo alvo (y)
X = df.iloc[:, :-1].values
y = df.iloc[:, -1].values

from sklearn.model_selection import train_test_split

# Aplicando a técnica de hold-out 
training_set, test_set, train_labels, test_labels = train_test_split(X,  
                                                                     y,  
                                                                     test_size=0.3,
                                                                     random_state=12,
                                                                     stratify=y)

# Importando o classificador baseado em Árvore de Decisão
from sklearn.tree import DecisionTreeClassifier

dt = DecisionTreeClassifier(random_state=42)

# Treinando o modelo e coletando predições
dt.fit(training_set, train_labels)
preds_dt = dt.predict(test_set)

# Importando as métricas de avaliação para classificação
from sklearn.metrics import accuracy_score, f1_score, recall_score, precision_score, roc_auc_score

# Exibindo os valores de avaliação de performance
print(f"Acurácia: {accuracy_score(test_labels, preds_dt)}")
print(f"F1-Score: {f1_score(test_labels, preds_dt)}")
print(f"Revocação (Recall): {recall_score(test_labels, preds_dt)}")
print(f"Precisão: {precision_score(test_labels, preds_dt)}")
print(f"AUC: {roc_auc_score(test_labels, preds_dt)}")

# Utilizando uma função que facilita a conferência de diversas métricas
from sklearn.metrics import classification_report

print(classification_report(test_labels, preds_dt))