Introdução
Neste laboratório, exploraremos o Gradiente Descendente Estocástico (SGD), um poderoso algoritmo de otimização comumente utilizado em aprendizado de máquina para resolver problemas de grande escala e esparsos. Aprenderemos a utilizar as classes SGDClassifier e SGDRegressor da biblioteca scikit-learn para treinar classificadores e regressores lineares.
Dicas da Máquina Virtual
Após o início da VM, clique no canto superior esquerdo para mudar para a aba Notebook para acessar o Jupyter Notebook para praticar.
Às vezes, pode ser necessário aguardar alguns segundos para que o Jupyter Notebook termine de carregar. A validação de operações não pode ser automatizada devido a limitações no Jupyter Notebook.
Se você enfrentar problemas durante o aprendizado, sinta-se à vontade para perguntar ao Labby. Forneça feedback após a sessão e resolveremos o problema rapidamente para você.
Importar as bibliotecas necessárias
Primeiro, precisamos importar as bibliotecas necessárias. Usaremos a biblioteca scikit-learn para aprendizado de máquina e pré-processamento de dados.
import numpy as np
from sklearn.datasets import load_iris
from sklearn.linear_model import SGDClassifier, SGDRegressor
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, mean_squared_error
Carregar e pré-processar os dados
Em seguida, carregaremos o conjunto de dados iris e o pré-processaremos escalando as características usando StandardScaler.
## Carregar o conjunto de dados iris
iris = load_iris()
X, y = iris.data, iris.target
## Escalar as características
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
## Dividir os dados em conjuntos de treino e teste
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)
Treinar um classificador usando SGD
Agora, treinaremos um classificador usando a classe SGDClassifier. Usaremos a função de perda log_loss e a penalidade l2.
## Treinar um classificador usando SGD
clf = SGDClassifier(loss="log_loss", penalty="l2", max_iter=100, random_state=42)
clf.fit(X_train, y_train)
## Fazer previsões no conjunto de teste
y_pred = clf.predict(X_test)
## Medir a precisão do classificador
accuracy = accuracy_score(y_test, y_pred)
## Imprimir a precisão
print("Precisão do Classificador:", accuracy)
Treinar um regressor usando SGD
Em seguida, treinaremos um regressor usando a classe SGDRegressor. Usaremos a função de perda squared_error e a penalidade l2.
## Treinar um regressor usando SGD
reg = SGDRegressor(loss="squared_error", penalty="l2", max_iter=100, random_state=42)
reg.fit(X_train, y_train)
## Fazer previsões no conjunto de teste
y_pred = reg.predict(X_test)
## Medir o erro quadrático médio do regressor
mse = mean_squared_error(y_test, y_pred)
## Imprimir o erro quadrático médio
print("Erro Quadrático Médio do Regressor:", mse)
Resumo
Neste laboratório, aprendemos como usar o Gradiente Descendente Estocástico (SGD) para treinar classificadores e regressores lineares usando a biblioteca scikit-learn. Treinamos um classificador no conjunto de dados iris e medimos sua precisão, e treinamos um regressor e medimos seu erro quadrático médio. O SGD é um poderoso algoritmo de otimização que pode lidar com problemas de aprendizado de máquina de grande escala e esparsos de forma eficiente.