Explorando los clasificadores SGD de Scikit-Learn

Beginner

This tutorial is from open-source community. Access the source code

Introducción

En este laboratorio, exploraremos el Descenso de Gradiente Estocástico (Stochastic Gradient Descent - SGD), que es un algoritmo de optimización poderoso comúnmente utilizado en el aprendizaje automático para resolver problemas a gran escala y dispersos. Aprenderemos cómo utilizar las clases SGDClassifier y SGDRegressor de la biblioteca scikit-learn para entrenar clasificadores y regresores lineales.

Consejos sobre la VM

Una vez que se haya completado la inicialización de la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.

A veces, es posible que tenga que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.

Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje sus comentarios después de la sesión y lo resolveremos rápidamente para usted.

Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 92%. Ha recibido una tasa de reseñas positivas del 86% por parte de los estudiantes.

Importar las bibliotecas necesarias

Primero, necesitamos importar las bibliotecas necesarias. Utilizaremos la biblioteca scikit-learn para el aprendizaje automático y el preprocesamiento de datos.

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

Cargar y preprocesar los datos

A continuación, cargaremos el conjunto de datos iris y lo preprocesaremos escalando las características utilizando StandardScaler.

## Cargar el conjunto de datos iris
iris = load_iris()
X, y = iris.data, iris.target

## Escalar las características
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

## Dividir los datos en conjuntos de entrenamiento y prueba
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)

Entrenar un clasificador utilizando SGD

Ahora entrenaremos un clasificador utilizando la clase SGDClassifier. Utilizaremos la función de pérdida log_loss y la penalización l2.

## Entrenar un clasificador utilizando SGD
clf = SGDClassifier(loss="log_loss", penalty="l2", max_iter=100, random_state=42)
clf.fit(X_train, y_train)

## Hacer predicciones en el conjunto de prueba
y_pred = clf.predict(X_test)

## Medir la precisión del clasificador
accuracy = accuracy_score(y_test, y_pred)

## Imprimir la precisión
print("Precisión del clasificador:", accuracy)

Entrenar un regresor utilizando SGD

A continuación, entrenaremos un regresor utilizando la clase SGDRegressor. Utilizaremos la función de pérdida squared_error y la penalización l2.

## Entrenar un regresor utilizando SGD
reg = SGDRegressor(loss="squared_error", penalty="l2", max_iter=100, random_state=42)
reg.fit(X_train, y_train)

## Hacer predicciones en el conjunto de prueba
y_pred = reg.predict(X_test)

## Medir el error cuadrático medio del regresor
mse = mean_squared_error(y_test, y_pred)

## Imprimir el error cuadrático medio
print("Error cuadrático medio del regresor:", mse)

Resumen

En este laboratorio, aprendimos cómo utilizar el Descenso de Gradiente Estocástico (SGD) para entrenar clasificadores y regresores lineales utilizando la biblioteca scikit-learn. Entrenamos un clasificador en el conjunto de datos iris y medimos su precisión, y entrenamos un regresor y medimos su error cuadrático medio. El SGD es un algoritmo de optimización poderoso que puede manejar eficientemente problemas de aprendizaje automático a gran escala y dispersos.