CursosEmpresasBlogLiveConfPrecios

Evaluando el modelo

Clase 14 de 18 • Curso de Regresión Lineal con Python y scikit-learn

Clase anteriorSiguiente clase

Contenido del curso

Introducción al curso
  • 1
    Tu primera regresión lineal con scikit-learn

    Tu primera regresión lineal con scikit-learn

    09:00
  • 2
    Análisis de datos para tu primera regresión lineal

    Análisis de datos para tu primera regresión lineal

    09:49
  • 3
    Entrenando un modelo de regresión lineal con scikit-learn

    Entrenando un modelo de regresión lineal con scikit-learn

    14:01
Cómo funciona la regresión lineal
  • 4
    ¿Qué es la regresión lineal?

    ¿Qué es la regresión lineal?

    04:26
  • 5
    Cuándo utilizar un modelo de regresión lineal

    Cuándo utilizar un modelo de regresión lineal

    03:53
  • 6
    Función de pérdida y optimización: mínimos cuadrados

    Función de pérdida y optimización: mínimos cuadrados

    06:10
  • 7
    Evaluando el modelo: R^2 y MSE

    Evaluando el modelo: R^2 y MSE

    04:49
  • quiz de Cómo funciona la regresión lineal

Regresión lineal multivariable
  • 8
    Regresión lineal multivariable

    Regresión lineal multivariable

    03:45
  • 9
    Análisis de regresión multivariable

    Análisis de regresión multivariable

    14:20
Proyecto práctico
  • 10
    Regresión lineal para predecir los gastos médicos de pacientes

    Regresión lineal para predecir los gastos médicos de pacientes

    04:15
  • 11
    Exploración y preparación de datos

    Exploración y preparación de datos

    07:49
  • 12
    Análisis de correlación de los datos

    Análisis de correlación de los datos

    09:57
  • 13
    Entrenamiento del modelo

    Entrenamiento del modelo

    10:40
  • 14
    Evaluando el modelo

    Evaluando el modelo

    13:20
  • 15
    Mejorando el modelo

    Mejorando el modelo

    13:59
  • quiz de Proyecto práctico

Pasos siguientes
  • 16
    ¿Qué hay más allá de la linealidad?

    ¿Qué hay más allá de la linealidad?

    04:26
  • 17
    Siguientes pasos en modelos de inteligencia artificial

    Siguientes pasos en modelos de inteligencia artificial

    02:11
  • 18

    Comparte tu proyecto de regresión lineal y certifícate

    00:00
    Alex Junior Rodriguez Huerta

    Alex Junior Rodriguez Huerta

    student•
    hace 4 años

    Por si a alguien le sirve como solucioné un error que me tomó buen tiempo:

    python -m pip install regressors Collecting regressors Using cached regressors-0.0.3.tar.gz (24 kB) Preparing metadata (setup.py) ... error error: subprocess-exited-with-error × python setup.py egg_info did not run successfully. │ exit code: 1 ╰─> [1 lines of output] error in regressors setup command: use_2to3 is invalid. [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. error: metadata-generation-failed × Encountered error while generating package metadata. ╰─> See above for output. note: This is an issue with the package mentioned above, not pip. hint: See above for details.

    Lo solucioné así:

    pip install setuptools==58

    Yo tenía una versión más actual y eso causaba un conflicto

      Ever Orlando Reyes Ruiz

      Ever Orlando Reyes Ruiz

      student•
      hace 3 años

      Me funciono perfecto! Gracias.

      Richard Eduardo Sailema Medina

      Richard Eduardo Sailema Medina

      student•
      hace 3 años

      Gracias me sirvió totalmente

    Luis Arces Palomino Blas

    Luis Arces Palomino Blas

    student•
    hace 3 años

    Para agregar la línea que comenta el maestro es

    plt.axhline(y=0, color='r', linestyle='-')
      Victor Renan Castillo Ñañez

      Victor Renan Castillo Ñañez

      student•
      hace 3 años

      Thanks!

      MIGUEL ANGEL ASTAIZA CORDOBA

      MIGUEL ANGEL ASTAIZA CORDOBA

      student•
      hace 2 años

      otra manera de hacerlo:

      y_values = np.zeros_like(y_pred) plt.plot(y_pred,y_values,"r");

      De esta manera sera una linea con los datos reales

    Dick Saide Suárez Blanco

    Dick Saide Suárez Blanco

    student•
    hace 3 años

    😎----->Evaluando el modelo<----

    σ Objetivo es evaluar el modelo hecho en la clase anteior, para ello se usara la libreria llamada regresors.

    1 . Se necesita importar las metricas necesarias, para continuar, por ello se usa:

    " import sklearn.metrics as metrics " +Estableciendo las abreviaturas que se van a usar en el codigo. " mse = metrics.mean_squared_error(y_test,y_pred)" +" y_test,y_pred "se le va sobre la funcion que se esta evaluando. " r2 = metrics.r2_score(y_test, y_pred) " +El siguiente paso es evaluar "r2" print("r2 ", r2.round(4)) +Ahora se imprimen los valores de r2, mas ponemos una funcion de round 4, osea que de ser numero decimal, se nos muestre hasta el 4to digito. " print("mse: ", mse.round(4))" +Con este ultimo, nos arrojara valores que nos sirven para entender el modelo. ------------> En este ejemplo, Luis recibio los valores de " r2 0.7697 " " mse: 0.2591" A lo que el hace una nota diciendo. que "R2" tiene un 76% mientras que "mse" tiene un 26%. NOTA: Modelo que sea evaluado arriba de 75%, es un aceptable modelo para trabajar, un 85% es excelente y arriba de 95% es casi perfecto. Mas nota que si tiene un modelo de 100%, posiblemente esta solamente evaluando ciertos resultados y no el espectro completo, por ello tal vez este muy ajustado, y ya que corregirlo. 2 . Ahora importart las stadisticas de la librera regressors. usando:

    " from regressors import stats " +Debido a que ya debio haber sido instalado regresor anteriormente, uno solo especifica lo que quiere sacar. ----------> Ahora hay que limpiar los pasos del modelo, debido a que la funcion "regressors" necesita que los datos del intercepto y de la pendiente tengan un tipo de formula especifica para que sea mas facil analizar los resultados.

    3 . " model.intercept_ = model.intercept_[0] " +Notese que " [0] " se refiere al valor, debido a que

    "ahora mismo lo entrega como una lista"

    " model.coef_ = model.coef_.reshape(-1) " +Esto permite que cuando apliquemos la funcion que necesitemos utilice los coeficientes y modelos que estan en la libreria "stats" de una forma adecuada. --------->El sig. paso en el codigo es empezar a usar la funcion ya establecida, para ello : 4 . " y_test = y_test.reshape(-1) " + Hacemos un reshape para que se pueda usar de manera correcta. +Y ahora resta imprimir los resultados. para ello hacemos " print("==========Summary==========") " stats.summary(model, X_test, y_test, X_cols) +Summary del modelo, con los datos de prueba, del dato de "x" y "y" NOTAS: Ya que el modelo se entrena con datos que no tiene columnas, entonces se especifia en la tercera coma que las columnas a usar para los datos, son las que estan en las columna X --------->Hasta este punto, debemos de cargar todas las celdas ocupadas en este ejercicio. Y nos mostrara los datos recabados en forma de tabla. 5 . Por ultimo, lo que buscamos es presentar los residuales en graficas, esto usando un scatter.

    " residuals = np.subtract(y_test, y_pred.reshape(-1)) " +Con esto se crean los residuales. " plt.scatter(y_pred, residuals) " +Con esto se define la manera en la que se presenta la funcion . +Por un lado se mostrara el scatter de la prediccion de "Y" y por el otro, los residuales. NOTA: Debio a que usamos reshape(-1), en "y_test" ahora lo usamos con "y_pred", y esto es para ambos esten en la misma direccion. No es recomendable usar todas las variables dentro de la regresion lineal. " plt.show() "

    Cristian Omar Rubio Ceja

    Cristian Omar Rubio Ceja

    student•
    hace 2 años

    Para los que lo están haciendo en Mayo del 2024, tienen 2 soluciones

    1. Downgradeas la versión de ty python a las ultimas de python2 o a las primeras de python3, debido con la libreria regressors está depreciada.

    2. Utilizas otra librería, en mi caso use statsmodels

    %%capture %pip install statsmodels # Add summary of coefficients (estimates, Std. Error, t value, p value) and residuals (min, 1q, median, 3q, max) import statsmodels.api as sm X_train_sm = sm.add_constant(X_train) X_test_sm = sm.add_constant(X_test) model = sm.OLS(y_train, X_train_sm) results = model.fit() print(results.summary())

    Este es su output

    OLS Regression Results ============================================================================== Dep. Variable: y R-squared: 0.744 Model: OLS Adj. R-squared: 0.742 Method: Least Squares F-statistic: 383.9 Date: Mon, 13 May 2024 Prob (F-statistic): 3.92e-306 Time: 13:03:01 Log-Likelihood: -761.00 No. Observations: 1064 AIC: 1540. Df Residuals: 1055 BIC: 1585. Df Model: 8 Covariance Type: nonrobust ============================================================================== coef std err t P>|t| [0.025 0.975] ------------------------------------------------------------------------------ const -0.0022 0.015 -0.146 0.884 -0.032 0.028 x1 -0.0447 0.019 -2.299 0.022 -0.083 -0.007 x2 0.0655 0.015 4.279 0.000 0.035 0.095 x3 -0.0140 0.019 -0.740 0.460 -0.051 0.023 x4 0.1444 0.016 8.923 0.000 0.113 0.176 x5 0.7862 0.016 50.243 0.000 0.756 0.817 x6 -0.0391 0.019 -2.070 0.039 -0.076 -0.002 x7 0.3064 0.015 19.961 0.000 0.276 0.337 x8 -0.0025 0.015 -0.163 0.870 -0.032 0.027 ============================================================================== Omnibus: 233.259 Durbin-Watson: 1.978 Prob(Omnibus): 0.000 Jarque-Bera (JB): 488.001 Skew: 1.236 Prob(JB): 1.08e-106 Kurtosis: 5.213 Cond. No. 2.22 ============================================================================== ``` &#x20;
      Cesar Haziel Pineda Pacheco

      Cesar Haziel Pineda Pacheco

      student•
      hace 2 años

      Excelente aporte bb 😘

      Claudio Chavarría Altamirano

      Claudio Chavarría Altamirano

      student•
      hace 4 meses

      Buenisimo!

    HANSEL BONIFACIO TRUJILLO

    HANSEL BONIFACIO TRUJILLO

    student•
    hace 3 años

    Saludos, he intentado obtener el resumen con regressors .stats, pero aun no he podido, este es el error que obtengo. Esta relacionado a las dimensiones de los Arrays. En pantalla se muestra las dimensiones de cada uno. Agradezco su ayuda. Gracias!!

    plazi pregunta.png

      jader lopez

      jader lopez

      student•
      hace 3 años

      tenemos el mismo error? ati como te fue, yo sigo analisando el codigo viendo donde surge esta la dimencion que me indica

      Denis Picén

      Denis Picén

      student•
      hace 3 años

      Yo tuve problema justo en el paso anterior, en el model.intercept_[0]. Por alguna razón a mi me funcionó quitando la parte de los corchetes.

    Jhon Freddy Tavera Blandon

    Jhon Freddy Tavera Blandon

    student•
    hace 2 años
    residuals = np.subtract(y_test, y_pred.reshape(-1)) plt.scatter(y_pred, residuals) plt.axhline(y=0, color='r', linestyle='--') # Agregar la línea en el valor cero plt.show()
    5.png

    ##Error cuadrático medio (MSE, por sus siglas en inglés):

    • Es la media de los errores al cuadrado entre los valores predichos y los valores reales. Cuanto menor sea el valor del MSE, mejor será el modelo.

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

    • Es la raíz cuadrada del MSE. Al utilizar la raíz cuadrada, se obtiene una métrica en la misma escala que la variable objetivo. También se utiliza para evaluar la precisión del modelo, donde un valor más bajo indica un mejor ajuste.

    Coeficiente de determinación (R^2):

    • Es una medida que indica qué tan bien se ajustan los datos al modelo. R^2 varía entre 0 y 1, donde 1 indica un ajuste perfecto y 0 indica que el modelo no explica la variabilidad de los datos. Un valor cercano a 1 es deseable.

    Error absoluto promedio (MAE, por sus siglas en inglés):

    • Es la media de los errores absolutos entre los valores predichos y los valores reales. Proporciona una medida promedio del tamaño de los errores cometidos por el modelo.

    Estas métricas pueden ser calculadas utilizando funciones de evaluación de modelos de la biblioteca scikit-learn. Aquí tienes un ejemplo de cómo calcular estas métricas:

    from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score # Calculando las métricas mse = mean_squared_error(y_test, y_pred) rmse = np.sqrt(mse) mae = mean_absolute_error(y_test, y_pred) r2 = r2_score(y_test, y_pred) # Imprimiendo los resultados print("Error cuadrático medio (MSE):", mse) print("Raíz del error cuadrático medio (RMSE):", rmse) print("Error absoluto promedio (MAE):", mae) print("Coeficiente de determinación (R^2):", r2)
      Rodrigo Martinez

      Rodrigo Martinez

      student•
      hace un año

      THIS! 🔥

    Cristian Enrique Cuevas Mercado

    Cristian Enrique Cuevas Mercado

    student•
    hace 4 años

    Los residuos vs valores ajustado es ideal para ver si se cumple el supuesto de homogeneidad de varianza en los residuos.

    Fernando Jesús Núñez Valdez

    Fernando Jesús Núñez Valdez

    student•
    hace 3 años

    Podemos usar el modulo de plots de la paquetería regressors que instalamos de la siguiente manera para obtener un grafico como el siguiente:

    residuales.png
    from regressors import plots # Restaurar las variables X_train y y_train para no tener problemas de dimensionalidad. # El model es al que le hicimos el fit con los datos del train. plots.plot_residuals(model, X_train, y_train, r_type='standardized')
      Juan R. Vergara M.

      Juan R. Vergara M.

      student•
      hace 3 años

      Es más detallado, gracias.

    Leandro Tenjo

    Leandro Tenjo

    student•
    hace 2 años

    📈 Mejorar graficó de ++Residuales++

    IMG_3045.png
    plt.axvline(x = 0, c='k', ls='--', alpha=0.5) plt.axhline(y = 0, c='k', ls='--', alpha=0.5) plt.scatter(y_pred, residuals, alpha=0.25) plt.xlabel('Predicciones') plt.ylabel('Realidad') plt.title('Residueles: Diferencia entre prediccion y realidad') plt.show()
    KEVIN XAVIER FREGOSO ROMERO

    KEVIN XAVIER FREGOSO ROMERO

    student•
    hace 4 años

    EStoy tratando de instalar regressors ya reinicie el kernel de mi ambiente en visual y trate en google colab pero me marca esto ERROR: Could not find a version that satisfies the requirement regresors (from versions: none) ERROR: No matching distribution found for regresors

      Luis Fernando Laris Pardo

      Luis Fernando Laris Pardo

      student•
      hace 4 años

      Ese error es porque no encontró la distribución, me parece por lo que muestras que te faltó una s en regressors, avísame si esto te lo soluciona 😄

      Javier Castillo

      Javier Castillo

      student•
      hace un año

      pip install --upgrade pip setuptools==57.5.0

    Claudio Fernando Abarca Barrera

    Claudio Fernando Abarca Barrera

    student•
    hace 4 años

    ¿Entre que rango debiera estar el MSE para ser considerado un buen modelo?

      Luis Fernando Laris Pardo

      Luis Fernando Laris Pardo

      student•
      hace 4 años

      Es complicado porque el MSE es proporcional a la magnitud de tu variable predictora. Es decir si hablamos de millones, entonces obtenemos un MSE de 100, que puede parecer grande, pero 100 es bajo cuando hablamos de millones, a comparación de si tenemos una variable predictora que están en las décimas donde un MSE de 100. Esto debido a que el MSE su utiliza una función de distancia. ¿Tiene sentido?

      Claudio Fernando Abarca Barrera

      Claudio Fernando Abarca Barrera

      student•
      hace 4 años

      Claro, a eso mismo apunta mi pregunta. Entiendo el porqué usar el MSE como función de pérdida para optimizar el modelo, pero no veo claro su uso como métrica para evaluar el mismo. Al usar R2 por ejemplo, su interpretación y rangos son bastante intuitivos, no así con el MSE. En ese caso, creo que sería preferible usar el RMSE, que al menos se puede interpretar de mejor manera al tener las mismas "unidades de medida" que la variable.

    Gerardo Mayel Fernández Alamilla

    Gerardo Mayel Fernández Alamilla

    student•
    hace 2 años

    si tuvieron error con regressors existe otro método que se puede utilizar para obtener el summary:

    import statsmodels.api as sm

    # Transforma de nuevo los datos de entrenamiento a su escala original

    X_train_original = sc_x.inverse_transform(X_train)

    y_train_original = sc_y.inverse_transform(y_train)

    # Añadir una constante (intercepto) a los predictores

    X_train_const = sm.add_constant(X_train_original)

    # Ajustar el modelo OLS

    ols_model = sm.OLS(y_train_original, X_train_const).fit()

    # Imprimir un resumen del modelo

    print(ols_model.summary())

    Se obtiene:

    OLS Regression Results ============================================================================== Dep. Variable: y R-squared: 0.998 Model: OLS Adj. R-squared: 0.998 Method: Least Squares F-statistic: 5.588e+04 Date: Tue, 31 Oct 2023 Prob (F-statistic): 0.00 Time: 23:28:51 Log-Likelihood: -7709.6 No. Observations: 1003 AIC: 1.544e+04 Df Residuals: 993 BIC: 1.549e+04 Df Model: 9 Covariance Type: nonrobust ============================================================================== coef std err t P>|t| [0.025 0.975] ------------------------------------------------------------------------------ const -46.1883 104.998 -0.440 0.660 -252.231 159.855 x1 -9.2017 48.414 -0.190 0.849 -104.207 85.803 x2 -2.7928 1.381 -2.022 0.043 -5.503 -0.083 x3 44.3569 47.450 0.935 0.350 -48.757 137.471 x4 -1.7757 13.922 -0.128 0.899 -29.096 25.545 x5 -19.5770 33.683 -0.581 0.561 -85.675 46.521 x6 -137.3153 77.197 -1.779 0.076 -288.804 14.173 x7 1.8920 3.036 0.623 0.533 -4.066 7.850 x8 1.0134 0.003 358.908 0.000 1.008 1.019 x9 -54.5896 47.967 -1.138 0.255 -148.717 39.538 ============================================================================== Omnibus: 2112.965 Durbin-Watson: 2.010 Prob(Omnibus): 0.000 Jarque-Bera (JB): 4346097.201 Skew: 17.118 Prob(JB): 0.00 Kurtosis: 323.659 Cond. No. 1.17e+05 ==============================================================================

    Notes: [1] Standard Errors assume that the covariance matrix of the errors is correctly specified. [2] The condition number is large, 1.17e+05. This might indicate that there are strong multicollinearity or other numerical problems.

    Patricio Sánchez Fernández

    Patricio Sánchez Fernández

    student•
    hace 8 meses

    El código que escribió el profe me arrojó error, así que "San-ChatGPT" Me indicó la siguiente solución:

    import sklearn.metrics as metrics mse = metrics.mean_squared_error(y_test, Y_pred) r2 = metrics.r2_score(y_test, Y_pred) print('mse:', round(mse, 4)) print('r2:', round(r2, 4))
    Ronald Andrey Beltran Parada

    Ronald Andrey Beltran Parada

    student•
    hace 5 meses

    El curso es excelente, pero la librería regressors ya está desactualizada y su instalación falla por conflictos de versiones. Esto obliga a buscar alternativas como statsmodels , lo que cambia el flujo de trabajo del profesor.

    Sería de gran ayuda que se actualizara el contenido o se agregara una nota con las alternativas actuales para mantener la clase vigente.

    Mil gracias los amo.

    David Nicolás Montaño Vergara

    David Nicolás Montaño Vergara

    student•
    hace 2 años

    Para todos los que tengan problemas en la linea de stats.summary aqui una solucion que encontre:

    from regressors import stats model.intercept_ = model.intercept_model.coef_ = model.coef_.reshape(-1)y_test = y_test.reshape(-1)y_pred = y_pred.reshape(-1)print("--------------Summary---------------------")stats.summary(model, x_test, y_test, x_cols)

    Corran esta linea en un solo cuadro. De igual manera, noten que se estan cambiando las dimensiones de y_test y y_predict y los coeficientes no son exactamente iguales a las del video

      Olga Lisethe Castellanos Galeano

      Olga Lisethe Castellanos Galeano

      student•
      hace 4 meses

      excelente sugerencia, me funcionó

    Brayam Esparza

    Brayam Esparza

    student•
    hace 3 años

    entre mas cerca del cero esten valores en la grafica es mejor?

    Antonio Chávez Campos

    Antonio Chávez Campos

    student•
    hace 3 años

    ValueError: all the input arrays must have same number of dimensions, but the array at index 0 has 1 dimension(s) and the array at index 1 has 2 dimension(s)

    Antonio Chávez Campos

    Antonio Chávez Campos

    student•
    hace 3 años

    Tengo este error IndexError: invalid index to scalar variable.

    acá ---> model.intercept_ = model.intercept_[0]

    Eduardo Ramírez

    Eduardo Ramírez

    student•
    hace 2 años

    Por si tienen error con regressors, pueden usar esto para solucionarlo:

    https://stackoverflow.com/questions/72641804/pip-install-regressors-error-is-python-setup-py-egg-info-did-not-run-suc

    !pip install --upgrade pip setuptools==57.5.0 !pip install regressors

    Camilo Vergara

    Camilo Vergara

    student•
    hace 2 años

    Yo, como varios en esta clase, no pude instalar la librería que el profesor utiliza. Trate de varias formas y no pude, por lo que fui a esta [página](https://regressors.readthedocs.io/en/latest/\_modules/regressors/stats.html#summary) en la cual está la documentación. Con base en esta documentación replique el código con unos ligeros cambios:

    import numpy as npimport pandas as pdimport scipyfrom sklearn.metrics import mean_squared_error, r2_scoreclass stats_model:  def __init__(self, model, X, y, x_labels=None) -> None:    """    model es el modelo lineal de scikit-learn que tiene un método predict()    X es la data de entrenamiento    y es las etiquetas de entrenamiento    xlabels son el nombre de las variables predictores     X e y deben estar previamente estandarizados (usar StandardScaler de sklearn)    """    self.model = model    self.X = X    self.y = y    self.x_labels = x_labels    def metrics(self,y_real, y_pred,metric):    assert metric in ["mse","r2","adj_r2"],"Not a valid metric"    if metric=="mse":      return mean_squared_error(y_real, y_pred)    elif metric == "adj_r2":      n,p=X.shape      r_2 = r2_score(y_real,y_pred)      return 1 - (1 - r_2) * ((n-1)/(n-p-1))    return r2_score(y_real,y_pred)    def coef_se(self):    """    calculate standard error    """    n = self.X.shape[0]    #We create a matrix nx1 full of ones and we concatenate it to    #the X data    X1 = np.hstack((np.ones((n,1)),self.X))    #The standard error of every coefficient of the regression is calculated    se_matrix = scipy.linalg.sqrtm(self.metrics(self.y, self.model.predict(self.X), "mse")* np.linalg.inv(np.matmul(X1.T,X1)))    #We get a list of standard errors of the regression's coeffiecients, which    #indicates how much it varies depending on the variability of the input data    return np.diagonal(se_matrix)   def coef_tval(self):    coef_standard_error = self.coef_se()    a = np.array(self.model.intercept_/coef_standard_error[0])    b = np.array(self.model.coef_/coef_standard_error[1:])    return np.append(a,b)    def coef_pval(self):    n = self.X.shape[0]    t = self.coef_tval()    #este valor p lo usaremos para saber si necesitamos o no usar una variable,    #ya que representa si     p = 2 * (1 - scipy.stats.t.cdf(abs(t),n-1))    return p    def residuals(self):    y_pred = self.model.predict(self.X)    return np.subtract(self.y,y_pred).reshape(-1)    def f_stat(self):    n,p = self.X.shape    y_pred = self.model.predict(self.X)    r_2 = self.metrics(self.y,y_pred,metric="r2")    return (r_2/p) / ((1-r2)/(n-p-1))   def summary(self):    # Check and/or make xlabels    ncols = self.X.shape[1]    xlabels = self.x_labels    if xlabels is None:        #If labels do not exist, they'll be created as x1, x2,x3...        xlabels = np.array(            [f'x{i}' for i in range(1, ncols + 1)], dtype='str')    elif isinstance(xlabels, (tuple, list)):        #if xlabels is either a list or a tuple, we'll use that        #to create a numpy array        xlabels = np.array(xlabels, dtype='str')    # Make sure dims of xlabels matches dims of X    assert xlabels.shape[0] == ncols, f"Dimension of xlabels {xlabels.shape} does not match X {X.shape}"    # Create data frame of coefficient estimates and associated stats    coef_df = pd.DataFrame(        index=['_intercept'] + list(xlabels),        columns=['Estimate', 'Std. Error', 't value', 'p value']    )    coef_df['Estimate'] = np.concatenate(        (np.round(np.array([self.model.intercept_]), 6).reshape(-1,1), np.round((self.model.coef_), 6).reshape(-1,1)))    coef_df['Std. Error'] = np.round(self.coef_se(), 6)    coef_df['t value'] = np.round(self.coef_tval(), 4)    coef_df['p value'] = np.round(self.coef_pval(), 6)    # Create data frame to summarize residuals    resids = self.residuals()    resids_df = pd.DataFrame({        'Min': pd.Series(np.round(resids.min(), 4)),        '1Q': pd.Series(np.round(np.percentile(resids, q=25), 4)),        'Median': pd.Series(np.round(np.median(resids), 4)),        '3Q': pd.Series(np.round(np.percentile(resids, q=75), 4)),        'Max': pd.Series(np.round(resids.max(), 4)),    }, columns=['Min', '1Q', 'Median', '3Q', 'Max'])    # Output results    print("Residuals:")    print(resids_df.to_string(index=False))    print('\n')    print('Coefficients:')    print(coef_df.to_string(index=True))    print('---')    print('R-squared:  {0:.5f},    Adjusted R-squared:  {1:.5f}'.format(        self.metrics(self.y, self.model.predict(self.X),"r2"), self.metrics(self.y,self.model.predict(self.X),"adj_r2")))    print('F-statistic: {0:.2f} on {1} features'.format(        self.f_stat(), ncols))

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads