Introdução
Na ciência de dados, construir e avaliar modelos preditivos é uma tarefa essencial. Tanto o R quanto o Python oferecem ecossistemas robustos para aprendizado de máquina — o R com tidymodels (ou caret) e o Python com scikit-learn. Este tutorial fornece exemplos lado a lado usando o conhecido conjunto de dados iris para comparar como cada linguagem aborda o treinamento, a avaliação e a previsão de modelos. Ao final, você entenderá as semelhanças e diferenças entre esses fluxos de trabalho, o que o ajudará a escolher o melhor conjunto de ferramentas para seus projetos.
Exemplo comparativo: treinando um modelo de classificação no conjunto de dados Iris
Dividiremos o conjunto de dados iris em conjuntos de treinamento e teste, treinaremos um modelo de regressão logística em cada linguagem e, em seguida, avaliaremos seu desempenho.
#| label: r-tidymodels
# Carregar bibliotecas necessárias
library(tidymodels)
# Carregar o conjunto de dados iris
data(iris)
# Divida os dados em conjuntos de treinamento e teste
set.seed(123)
<- initial_split(iris, prop = 0.8)
iris_split <- training(iris_split)
iris_train <- testing(iris_split)
iris_test
# Defina uma especificação de modelo de regressão logística para classificação multiclasse
<- multinom_reg() %>%
model_spec set_engine("nnet") %>%
set_mode("classification")
# Crie um fluxo de trabalho e adicione o modelo e a fórmula
<- workflow() %>%
iris_workflow add_model(model_spec) %>%
add_formula(Species ~ .)
# Ajustar o modelo
<- fit(iris_workflow, data = iris_train)
iris_fit
# Faça previsões no conjunto de testes
<- predict(iris_fit, new_data = iris_test) %>%
iris_pred bind_cols(iris_test)
# Avalie o desempenho do modelo
<- iris_pred %>% metrics(truth = Species, estimate = .pred_class)
metrics print(metrics)
Resultados:
.metric .estimator .estimate
<chr> <chr> <dbl>
1 accuracy multiclass 0.967
2 kap multiclass 0.946
#| label: python-scikit-learn
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, classification_report
# Carregar o conjunto de dados iris
= load_iris()
iris = pd.DataFrame(iris.data, columns=iris.feature_names)
df 'Species'] = iris.target
df[
# Divida o conjunto de dados em conjuntos de treinamento e teste
= df.drop('Species', axis=1)
X = df['Species']
y = train_test_split(X, y, test_size=0.2, random_state=123)
X_train, X_test, y_train, y_test
# Inicialize e ajuste um modelo de regressão logística
= LogisticRegression(max_iter=200)
model
model.fit(X_train, y_train)
# Faça previsões no conjunto de testes
= model.predict(X_test)
pred
# Avalie o desempenho do modelo
= accuracy_score(y_test, pred)
accuracy print("Accuracy:", accuracy)
print("Classification Report:")
print(classification_report(y_test, pred))
Resultados:
precision recall f1-score support
0 1.00 1.00 1.00 13
1 1.00 1.00 1.00 6
2 1.00 1.00 1.00 11
accuracy 1.00 30
macro avg 1.00 1.00 1.00 30
weighted avg 1.00 1.00 1.00 30
A coluna de suporte indica o número de instâncias verdadeiras (ou observações reais) de cada classe no conjunto de testes. Ele informa quantas amostras pertencem a cada classe, o que é útil para entender a distribuição das classes em seu conjunto de dados.
Discussão
Comparação de fluxos de trabalho
Divisão de dados:
Ambos os exemplos dividem o conjunto de dados iris em conjuntos de treinamento e teste usando abordagens semelhantes de sementes aleatórias.Treinamento do modelo:
- R (tidymodels): Usa um fluxo de trabalho que integra a especificação do modelo e a modelagem baseada em fórmulas.
- Python (scikit-learn): Implementa uma abordagem mais imperativa, ajustando diretamente um modelo de regressão logística.
- R (tidymodels): Usa um fluxo de trabalho que integra a especificação do modelo e a modelagem baseada em fórmulas.
Avaliação:
Ambos os métodos avaliam o desempenho do modelo, embora as métricas e os formatos de saída sejam diferentes. A abordagem tidymodels aproveita uma sintaxe organizada e fácil de usar, enquanto o scikit-learn fornece funções integradas para relatórios detalhados de classificação e precisão.
Pontos fortes de cada abordagem
tidymodels (R):
Oferece um fluxo de trabalho altamente modular e consistente que se integra perfeitamente a outras ferramentas tidyverse, facilitando a extensão e a personalização.scikit-learn (Python):
Oferece uma interface simples e amplamente adotada, com suporte robusto para uma variedade de algoritmos de aprendizado de máquina e ferramentas de pré-processamento.
Conclusão
Esta comparação lado a lado demonstra que tanto o tidymodels em R quanto o scikit-learn em Python oferecem fluxos de trabalho poderosos para construir e avaliar modelos de aprendizado de máquina. Ao compreender as nuances de cada abordagem, você pode selecionar o ambiente que melhor se alinha às suas necessidades de ciência de dados ou até mesmo combiná-los para aproveitar os pontos fortes de ambos.
Leitura adicional
- Python para usuários de R: transição para Python para ciência de dados
- Manipulação de dados em Python vs. R: dplyr vs. pandas
- Sintaxe R vs. Sintaxe Python: um guia comparativo
Boa programação e aproveite a exploração dos fluxos de trabalho de aprendizado de máquina em R e Python!
Explore mais artigos
Aqui estão mais artigos da mesma categoria para ajudá-lo a se aprofundar no tópico.
Reuso
Citação
@online{kassambara2024,
author = {Kassambara, Alboukadel},
title = {Fluxos de trabalho de aprendizado de máquina: tidymodels vs.
scikit-learn},
date = {2024-02-13},
url = {https://www.datanovia.com/pt/learn/programming/transition/machine-learning-workflows.html},
langid = {pt}
}