es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo conocer la ecuación de la curva de ajuste.

Me gustaría preguntar,
¿Cómo saber la ecuación de la curva de ajuste? especialmente en grado 3.
Entonces ajusto mis datos usando regresión lineal con grado 3.
Me gustaría dividir la curva de ajuste en figuras separadas.

    # Ajustando la regresión polinómica al conjunto de datos
# Usamos grado 2 para nuestro polinomio
from sklearn.preprocessing import PolynomialFeatures
from sklearn.metrics import r2_score

poly_reg1 = PolynomialFeatures(degree= 1)
x_poly1 = poly_reg1.fit_transform(x1)
pol_reg1 = LinearRegression()
pol_reg1.fit(x_poly1, y1)

poly_reg2 = PolynomialFeatures(degree= 3)
x_poly2 = poly_reg2.fit_transform(x2)
pol_reg2 = LinearRegression()
pol_reg2.fit(x_poly2, y2)

# Encontrar el valor R2
y_poly_pred1=pol_reg1.predict(x_poly1)
r2_1 = r2_score(x1,y_poly_pred1)

y_poly_pred2=pol_reg2.predict(x_poly2)
r2_2 = r2_score(x2,y_poly_pred2)

# Visualizar los resultados de la regresión polinómica
plt.scatter(x1, y1, color='blue')
plt.plot(x1, pol_reg1.predict(poly_reg1.fit_transform(x1)), color='magenta')
plt.scatter(x2, y2, color='black')
plt.plot(x2, pol_reg2.predict(poly_reg2.fit_transform(x2)), color='red')

plt.title('EAN vs ln I_m')
plt.xlabel('EAN')
plt.ylabel('ln I_m')
plt.show()

print('r2_1 es '+ str(r2_1))
print('r2_2 es '+ str(r2_2))
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para conocer la ecuación de la curva de ajuste, puedes usar el atributo coef_ del objeto de regresión polinómica ajustado. Por ejemplo, en el código proporcionado, puedes obtener los coeficientes de la regresión polinómica de grado 3 llamando a pol_reg2.coef_.

    Para dividir la curva de ajuste en figuras separadas, puedes usar la función plt.subplots para crear múltiples subtramas dentro de una figura. Por ejemplo, puedes crear dos subtramas, una para cada conjunto de datos, llamando a fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10,5)). Luego, puedes graficar la curva de ajuste para cada conjunto de datos en su subtrama correspondiente llamando a ax1.plot(x1, pol_reg1.predict(poly_reg1.fit_transform(x1)), color='magenta') y ax2.plot(x2, pol_reg2.predict(poly_reg2.fit_transform(x2)), color='red').

    Aquí tienes una versión actualizada del código que incluye estos cambios:

    # Ajustar la regresión polinómica al conjunto de datos
    # utilizamos un grado 2 para nuestro polinomio
    from sklearn.preprocessing import PolynomialFeatures
    from sklearn.metrics import r2_score
    
    poly_reg1 = PolynomialFeatures(degree=1)
    x_poly1 = poly_reg1.fit_transform(x1)
    pol_reg1 = LinearRegression()
    pol_reg1.fit(x_poly1, y1)
    
    poly_reg2 = PolynomialFeatures(degree=3)
    x_poly2 = poly_reg2.fit_transform(x2)
    pol_reg2 = LinearRegression()
    pol_reg2.fit(x_poly2, y2)
    
    # encontrar el valor de R2
    y_poly_pred1 = pol_reg1.predict(x_poly1)
    r2_1 = r2_score(x1, y_poly_pred1)
    
    y_poly_pred2 = pol_reg2.predict(x_poly2)
    r2_2 = r2_score(x2, y_poly_pred2)
    
    # Visualización de los resultados de la regresión polinómica
    fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10,5))
    
    ax1.scatter(x1, y1, color='blue')
    ax1.plot(x1, pol_reg1.predict(poly_reg1.fit_transform(x1)), color='magenta')
    
    ax2.scatter(x2, y2, color='black')
    ax2.plot(x2, pol_reg2.predict(poly_reg2.fit_transform(x2)), color='red')
    
    ax1.set_title('EAN vs ln I_m (Grado 1)')
    ax1.set_xlabel('EAN')
    ax1.set_ylabel('ln I_m')
    
    ax2.set_title('EAN vs ln I_m (Grado 3)')
    ax2.set_xlabel('EAN')
    ax2.set_ylabel('ln I_m')
    
    plt.show()
    
    print('r2_1 es '+ str(r2_1))
    print('r2_2 es '+ str(r2_2))
    
    print('La ecuación de la curva de ajuste de grado 3 es: y = {:.2f}x^3 + {:.2f}x^2 + {:.2f}x + {:.2f}'.format(*pol_reg2.coef_))
    

Comments are closed.