Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

Faça como eu fiz: ajustando modelos de machine learning

from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
import pandas as pd

housing = fetch_california_housing(as_frame=True)
X = housing.data
y = (housing.target > housing.target.mean()).astype(int) # classificação binária: acima/abaixo da média

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

param_grid = {
'max_depth': [3, 5, 10, None],
'min_samples_split': [2, 5, 10],
'criterion': ['gini', 'entropy']
}

grid_search = GridSearchCV(DecisionTreeClassifier(random_state=42), param_grid, cv=5)
grid_search.fit(X_train, y_train)

print("Melhores parâmetros:", grid_search.best_params_)
y_pred = grid_search.best_estimator_.predict(X_test)
print("Acurácia no teste:", accuracy_score(y_test, y_pred))

import pandas as pd
from sklearn.datasets import load_diabetes
from sklearn.linear_model import LinearRegression
from sklearn.feature_selection import SelectKBest, f_regression

diabetes = load_diabetes()
X = pd.DataFrame(diabetes.data, columns=diabetes.feature_names)
y = diabetes.target

selector = SelectKBest(score_func=f_regression, k=5)
X_new = selector.fit_transform(X, y)

selected_features = pd.DataFrame({
'Feature': X.columns,
'Score': selector.scores_
}).sort_values(by='Score', ascending=False)

print(selected_features.head(10))

1 resposta

Olá, Penha! Como vai?

Parabéns pela resolução da atividade!

Vi que você explorou o DecisionTreeClassifier para classificação com Python, utilizou muito bem o GridSearchCV para otimização de hiperparâmetros e ainda compreendeu a importância da seleção de atributos para melhorar modelos de regressão.

Uma dica interessante para o futuro é combinar seleção de atributos com regressão linear para avaliar o impacto das variáveis escolhidas. Assim:

model = LinearRegression()
model.fit(X_new, y)
print("Coeficientes:", model.coef_)

Isso mostra como cada atributo selecionado contribui para a previsão.

Se quiser aprofundar ainda mais, algumas boas práticas são:

  • Validar os modelos com métricas adequadas: como RMSE ou R² em regressão.
  • Testar diferentes funções de score: além de f_regression, explorar mutual_info_regression.
  • Comparar classificadores e regressões: entender como diferentes técnicas se comportam em datasets distintos.

Ah, uma pergunta: você prefere aprofundar a análise em técnicas de otimização de hiperparâmetros para classificadores ou acha mais interessante explorar métodos de seleção de atributos em regressão?

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!