lunes, 23 de junio de 2025

Comandos Basicos de Git

 

git status

El primer comando de Git, y el que se usa con más frecuencia, es git status. Ya lo ha usado una vez en el ejercicio anterior para ver que había inicializado correctamente el repositorio de Git.

git status muestra el estado del árbol de trabajo (y del área de almacenamiento provisional, de la que pronto hablaremos más). Permite ver los cambios que Git está siguiendo en ese momento para poder decidir si quiere pedir a Git que tome otra instantánea.

git add

git add es el comando que se usa para indicar a Git que empiece a realizar un seguimiento de los cambios en determinados archivos.

El término técnico es preparación de estos cambios. Va a usar git add para almacenar provisionalmente los cambios a fin de prepararse para una confirmación. Todos los cambios en los archivos que se han agregado pero que aún no se han confirmado se almacenan en el área de almacenamiento provisional.

git commit

Después de haber preparado algunos cambios para su confirmación, puede guardar el trabajo en una instantánea ejecutando el comando git commit.

Confirmar (o "commit") es un verbo y un sustantivo. Básicamente tiene el mismo significado que cuando te comprometes a un plan o realizas un cambio en una base de datos. Como verbo, la confirmación de cambios significa que se coloca una copia (del archivo, el directorio u otra "cosa") en el repositorio como una nueva versión. Como sustantivo, una confirmación es el pequeño bloque de datos que asigna una identidad única a los cambios que has confirmado. Los datos que se guardan en una confirmación incluyen el nombre del autor y la dirección de correo electrónico, la fecha, los comentarios sobre lo que se ha hecho (y por qué), una firma digital opcional y el identificador único de la confirmación anterior.

git log

El comando git log permite ver información sobre las confirmaciones anteriores. Cada confirmación tiene un mensaje adjunto (un mensaje de confirmación), y el comando git log permite imprimir información sobre las confirmaciones más recientes, como su marca de tiempo, el autor y un mensaje de confirmación. Este comando ayuda a llevar un registro de lo que has estado haciendo y de los cambios que se han guardado.

git help

Ya ha probado el comando git help, pero vale la pena recordar ciertas cosas. Use este comando para obtener información fácilmente sobre todos los comandos que conoce hasta ahora y más.

Recuerde que cada comando incluye también su propia página de ayuda. Para encontrar estas páginas de ayuda, escriba git <command> --help. Por ejemplo, git commit --help muestra una página que proporciona más información sobre el comando git commit y cómo usarlo.




Terminología de Git

Para entender Git, debe comprender la terminología. Esta es una breve lista de los términos que los usuarios de Git emplean con frecuencia. De momento no se preocupe por los detalles; todos estos términos le irán resultando familiares a medida que avanza por los ejercicios de este módulo.

  • Árbol de trabajo: conjunto de directorios y archivos anidados que contienen el proyecto en el que se trabaja.

  • Repositorio (repo): directorio, situado en el nivel superior de un árbol de trabajo, donde Git mantiene todo el historial y los metadatos de un proyecto. A veces se hace referencia a los repositorios como repos. Un repositorio vacío es aquel que no forma parte de un árbol de trabajo; se usa para compartir o realizar copias de seguridad. Un repositorio vacío suele ser un directorio con un nombre que acaba en .git, por ejemplo, project.git.

  • Hash: número generado por una función hash que representa el contenido de un archivo u otro objeto como un número de dígitos fijo. Git usa hashes de 160 bits de longitud. Una ventaja de usar códigos hash es que Git puede indicar si un archivo ha cambiado aplicando un algoritmo hash a su contenido y comparando el resultado con el hash anterior. Si se cambia la marca de fecha y hora del archivo, pero el hash del archivo no, Git sabe que el contenido del archivo no se ha modificado.

  • Objeto: un repositorio de Git contiene cuatro tipos de objetos, cada uno identificado de forma única por un hash SHA-1. Un objeto blob contiene un archivo normal. Un objeto árbol representa un directorio, y contiene nombres, valores hash y permisos. Un objeto de confirmación representa una versión específica del árbol de trabajo. Una etiqueta es un nombre asociado a una confirmación.

  • Confirmación: cuando se usa como verbo, confirmar significa crear un objeto de confirmación. Esta acción toma su nombre de las confirmaciones en una base de datos. Significa que se confirman los cambios realizados para que otros usuarios también puedan verlos.

  • Rama: serie con nombre de confirmaciones vinculadas. La confirmación más reciente en una rama se denomina nivel superior. La rama predeterminada, que se crea al inicializar un repositorio, se denomina main, y suele tener el nombre master en Git. El nivel superior de la rama actual se denomina HEAD. Las ramas son una característica increíblemente útil de Git porque permiten a los desarrolladores trabajar de forma independiente (o conjunta) en ramas y luego combinar los cambios en la rama predeterminada.

  • Remoto: referencia con nombre a otro repositorio de Git. Cuando se crea un repositorio, Git crea un remoto denominado origin, que es el remoto predeterminado para las operaciones de envío e incorporación de cambios.

  • Comandos, subcomandos y opciones: las operaciones de Git se realizan mediante comandos como git push y git pull. git es el comando, mientras que push o pull es el subcomando. El subcomando especifica la operación que quiere que Git realice. Los comandos suelen ir acompañados de opciones, que usan guiones (-) o guiones dobles (--). Por ejemplo, git reset --hard.

Estos términos y otros, como push e pull, tendrán más sentido en breve. Pero tiene que empezar por algún lado, y puede que le resulte útil volver y revisar este glosario de términos después de terminar este módulo.


Planes de GitHub

Ahora que tiene una mejor comprensión de los diferentes tipos de cuentas que puede tener con GitHub, vamos a analizar los diferentes planes disponibles para mejorar el proceso de administración de software y la colaboración en equipo.

Hay varios productos gratuitos de GitHub, además de los de pago:

  • GitHub Free para cuentas personales y organizaciones
  • GitHub Pro para cuentas personales
  • Equipo de GitHub
  • GitHub Enterprise

GitHub Free

GitHub Free ofrece las características básicas para usuarios y organizaciones. Cualquiera puede registrarse para disfrutar de la versión gratuita de GitHub.

GitHub Free para cuentas personales

Registrarse para obtener GitHub Free da una cuenta de usuario personal a un usuario nuevo. Una cuenta de usuario personal incluye repositorios públicos y privados, así como un número ilimitado de colaboradores.

Con GitHub Free, una cuenta personal incluye:

  • Soporte técnico de la comunidad de GitHub
  • Alertas de Dependabot
  • Aplicación de la autenticación en dos fases
  • 500 MB de almacenamiento de Paquetes de GitHub
  • 120 horas principales de GitHub Codespaces al mes
  • 15 GB de almacenamiento de GitHub Codespaces al mes
  • Acciones de GitHub:
    • 2000 minutos al mes
    • Reglas de protección de implementación para repositorios públicos

GitHub Free para organizaciones

Con GitHub Free para organizaciones, puede trabajar con colaboradores ilimitados en repositorios públicos ilimitados, con un conjunto completo de características. O bien, repositorios privados ilimitados con un conjunto de características limitado.

Además de las características disponibles con GitHub Free para cuentas personales, GitHub Free para organizaciones incluye:

  • Controles de acceso al equipo para administrar los grupos

GitHub Pro

GitHub Pro es similar a GitHub Free, pero incluye características actualizadas. El plan está diseñado para desarrolladores individuales (con su cuenta personal) que desean herramientas avanzadas e información de sus repositorios, pero no pertenecen a un equipo.

Las cuentas de GitHub Pro incluyen todas las características de una cuenta de GitHub Free, además de las características avanzadas siguientes:

  • Soporte técnico de GitHub por correo electrónico
  • 3000 minutos de Acciones de GitHub por mes
  • 2 GB de almacenamiento de Paquetes de GitHub
  • 180 horas principales de GitHub Codespaces al mes
  • 20 GB de almacenamiento de GitHub Codespaces al mes
  • Herramientas avanzadas e información en repositorios privados:
    • Necesidad de revisores de solicitudes de incorporación de cambios
    • Varios revisores de solicitudes de incorporación de cambios
    • Ramas protegidas
    • Propietarios del código
    • Referencias de vínculos automáticos
    • Páginas de GitHub
    • Wikis
    • Gráficos de información del repositorio para pulso, colaboradores, tráfico, confirmaciones, frecuencia de código, red y bifurcaciones

martes, 1 de abril de 2025

miércoles, 5 de febrero de 2025

Regresion

 Que es una regresión? 

La regresión es una técnica estadística utilizada para analizar la relación entre una variable dependiente y una o más variables independientes. Su objetivo principal es modelar y predecir el comportamiento de la variable dependiente en función de las variables independientes.

Existen varios tipos de regresión, siendo los más comunes:

  1. Regresión lineal: Se utiliza para modelar la relación lineal entre dos variables. La ecuación de la regresión lineal simple es de la forma (Y = a + bX), donde (Y) es la variable dependiente, (X) es la variable independiente, (a) es la intersección y (b) es la pendiente de la línea.

  2. Regresión múltiple: Extiende la regresión lineal al incluir múltiples variables independientes. La ecuación general es (Y = a + b_1X_1 + b_2X_2 + ... + b_nX_n).

  3. Regresión logística: Se utiliza cuando la variable dependiente es categórica (por ejemplo, sí/no). Modela la probabilidad de que ocurra un evento.

  4. Regresión polinómica: Se utiliza para modelar relaciones no lineales entre variables, utilizando términos polinómicos.

La regresión es ampliamente utilizada en diversas disciplinas, como la economía, la biología, la ingeniería y las ciencias sociales, para hacer predicciones, inferencias y entender relaciones entre variables.


Modelos de Regresión


Los modelos de regresión se entrenan para predecir valores de etiquetas numéricas basándose en datos de entrenamiento que incluyen tanto características como etiquetas conocidas. El proceso de entrenamiento de un modelo de regresión (o, de hecho, de cualquier modelo de aprendizaje automático supervisado) implica múltiples iteraciones en las que se utiliza un algoritmo adecuado (normalmente con algunos ajustes parametrizados) para entrenar un modelo, evaluar el rendimiento predictivo del modelo y perfeccionarlo repitiendo el proceso de entrenamiento con diferentes algoritmos y parámetros hasta alcanzar un nivel aceptable de precisión predictiva.













En el diagrama se muestran cuatro elementos clave del proceso de entrenamiento para los modelos de aprendizaje automático supervisados:

  1. Divida los datos de entrenamiento (aleatoriamente) para crear un conjunto de datos con el que entrenar el modelo, mientras conserva un subconjunto de los datos que utilizará para validar el modelo entrenado.
  2. Usar un algoritmo para ajustar los datos de entrenamiento a un modelo. En el caso de un modelo de regresión, use un algoritmo de regresión como la regresión lineal.
  3. Use los datos de validación que ha conservado para probar el modelo mediante la predicción de etiquetas para las características.
  4. Compare las etiquetas reales conocidas del conjunto de datos de validación con las etiquetas que predijo el modelo. A continuación, agregue las diferencias entre los valores de etiqueta predichos y reales para calcular una métrica que indique la precisión de la predicción del modelo para los datos de validación.

Después de cada entrenamiento, validar y evaluar la iteración, puede repetir el proceso con distintos algoritmos y parámetros hasta que se logre una métrica de evaluación aceptable.

Ejemplo: regresión

Vamos a explorar la regresión con un ejemplo simplificado en el que entrenaremos un modelo para predecir una etiqueta numérica (y) basada en un único valor de característica (x). La mayoría de los escenarios reales implican varios valores de características, lo que agrega cierta complejidad; pero el principio es el mismo.



import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error, r2_score # Generar datos de ejemplo data = { 'Tamaño': [1500, 1600, 1700, 1800, 1900, 2000, 2100, 2200, 2300, 2400], 'Precio': [300, 320, 340, 360, 380, 400, 420, 440, 460, 480] } # Crear un DataFrame df = pd.DataFrame(data) # Separar las características (X) y la variable objetivo (y) X = df[['Tamaño']] # Características y = df['Precio'] # Variable objetivo # Dividir los datos en conjuntos de entrenamiento y prueba X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # Crear el modelo de regresión lineal modelo = LinearRegression() # Entrenar el modelo modelo.fit(X_train, y_train) # Hacer predicciones y_pred = modelo.predict(X_test) # Evaluar el modelo mse = mean_squared_error(y_test, y_pred) r2 = r2_score(y_test, y_pred) print(f'Error cuadrático medio: {mse}') print(f'R^2: {r2}') # Visualizar los resultados plt.scatter(X, y, color='blue', label='Datos reales') plt.plot(X_test, y_pred, color='red', linewidth=2, label='Predicción') plt.xlabel('Tamaño (pies cuadrados)') plt.ylabel('Precio (miles de dólares)') plt.title('Regresión Lineal: Precio de la Casa vs Tamaño') plt.legend() plt.show()



Métricas de evaluación de regresión

En función de las diferencias entre los valores previstos y reales, puede calcular algunas métricas comunes que se usan para evaluar un modelo de regresión.

Error medio absoluto (MAE)

En este ejemplo, la varianza indica el número de helados que se equivocó cada predicción. No importa si la predicción era superior o inferior al valor real (así, por ejemplo, -3 y +3 indican ambos una varianza de 3). Esta métrica se conoce como error absoluto de cada predicción y se puede resumir para todo el conjunto de validación como el error absoluto medio (MAE).

En el ejemplo del helado, la media (promedio) de los errores absolutos (2, 3, 3, 1, 2 y 3) es 2,33.

Error cuadrático medio (MSE)

La métrica de error absoluto medio tiene en cuenta todas las discrepancias entre las etiquetas predichos y reales. Sin embargo, puede ser más deseable tener un modelo que se equivoque sistemáticamente por poco que otro que cometa menos errores, pero mayores. Una forma de producir una métrica que "amplifique" los errores más grandes es elevar al cuadrado los errores individuales y calcular la media de los valores elevados al cuadrado. Esta métrica se denomina error cuadrático medio (ECM).

En nuestro ejemplo del helado, la media de los valores absolutos al cuadrado (que son 4, 9, 9, 1, 4 y 9) es 6.

Raíz del error cuadrático medio (RMSE)

El error cuadrático medio ayuda a tener en cuenta la magnitud de los errores, pero como eleva al cuadrado los valores de error, la métrica resultante ya no representa la cantidad medida por la etiqueta. En otras palabras, podemos decir que el MSE de nuestro modelo es 6, pero eso no mide su precisión en términos del número de helados que se predijeron mal; 6 es solo una puntuación numérica que indica el nivel de error en las predicciones de validación.

Si queremos medir el error en términos del número de helados, es necesario calcular la raíz cuadrada del MSE; que genera una métrica denominada raíz del error cuadrático medio. En este caso √6, que es 2,45 (helados).

Coeficiente de determinación (R2)

Todas las métricas hasta ahora comparan la discrepancia entre los valores previstos y los reales para evaluar el modelo. Sin embargo, en realidad, hay alguna variación aleatoria natural en las ventas diarias de helados que el modelo tiene en cuenta. En un modelo de regresión lineal, el algoritmo de entrenamiento ajusta una línea recta que minimiza la varianza media entre la función y los valores de etiqueta conocidos. El coeficiente de determinación (más comúnmente denominado R2 o R cuadrado) es una métrica que mide la proporción de la varianza en los resultados de validación que el modelo puede explicar, en contraposición a algún aspecto anómalo de los datos de validación (por ejemplo, un día con un número muy inusual de ventas de helados debido a una fiesta local).

El cálculo de R2 es más complejo que para las métricas anteriores. Compara la suma de las diferencias al cuadrado entre las etiquetas previstas y las reales con la suma de las diferencias al cuadrado entre los valores reales de las etiquetas y la media de los valores reales de las etiquetas, de esta forma:

R2 = 1- ∑(y-ŷ)2 ÷ ∑(y-ȳ)2

No se preocupe demasiado si le parece complicado; la mayoría de las herramientas de aprendizaje automático pueden calcular la métrica automáticamente. Lo importante es que el resultado es un valor entre 0 y 1 que describe la proporción de varianza que explica el modelo. En términos sencillos, cuanto más cercano a 1 sea este valor, mejor se ajusta el modelo a los datos de validación. En el caso del modelo de regresión del helado, el R2 calculado a partir de los datos de validación es 0,95.

Entrenamiento iterativo

Las métricas descritas anteriormente se usan normalmente para evaluar un modelo de regresión. En la mayoría de los escenarios del mundo real, un científico de datos utilizará un proceso iterativo para entrenar y evaluar repetidamente un modelo, variando:

  • La selección y preparación de las características (la elección de las características que se incluirán en el modelo y los cálculos que se les aplicarán para garantizar un mejor ajuste).
  • La selección del algoritmo (en el ejemplo anterior hemos explorado la regresión lineal, pero existen muchos otros algoritmos de regresión)
  • Los parámetros del algoritmo (ajustes numéricos para controlar el comportamiento del algoritmo, más exactamente llamados hiperparámetros para diferenciarlos de los parámetros x e y).

Comandos Basicos de Git

  git status El primer comando de Git, y el que se usa con más frecuencia, es git status . Ya lo ha usado una vez en el ejercicio anterior ...