Python - regresion polinomial

 
Vista:
sin imagen de perfil
Val: 17
Ha disminuido su posición en 7 puestos en Python (en relación al último mes)
Gráfica de Python

regresion polinomial

Publicado por Carlos (7 intervenciones) el 03/11/2020 20:06:37
Buenas tardes,

estoy implementado una regresion polinomial pero se me hace como muy largo el codigo que he echo y la verdad no se me ocurre como simplificarlo.

¿Alguno me puede decir como seria posible simplificar, con menos codigo, el programa?


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import numpy as np
import math
 
x = np.array([0, 1, 2, 3, 4, 5])
y = np.array([5, 5, 13, 24, 36, 65])
xala2 = x**2
xala3 = x**3
xala4 = x**4
xpory = np.multiply(x, y)
xala2pory = (x**2)*y
 
sumax = np.sum(x)
sumay = np.sum(y)
suma_xala2 = np.sum(xala2)
suma_xala3 = np.sum(xala3)
suma_xala4 = np.sum(xala4)
suma_xpory = np.sum(xpory)
suma_xala2pory = np.sum(xala2pory)
 
n = len(x)
 
print(x)
print(y)
print(xala2)
print(xala3)
print(xala4)
print(xpory)
print(xala2pory)
print('')
print("sumatoria x: ",sumax)
print("sumatoria y: ",sumay)
print("sumatoria x^2: ",suma_xala2)
print("sumatoria x^3: ",suma_xala3)
print("sumatoria x^4: ",suma_xala4)
print("sumatoria x*y: ",suma_xpory)
print("sumatoria x^2*y: ",suma_xala2pory)
print('')
print("ecuacion 1 => ",n,"a0 +",sumax,"a1 +",suma_xala2,"a2 =",sumay)
print("ecuacion 2 => ",sumax,"a0 +",suma_xala2,"a1 +",suma_xala3,"a2 =",suma_xpory)
print("ecuacion 3 => ",suma_xala2,"a0 +",suma_xala3,"a1 +",suma_xala4,"a2 =",suma_xala2pory)
 
a = np.array([[n,sumax,suma_xala2],[sumax,suma_xala2,suma_xala3],[suma_xala2,suma_xala3,suma_xala4]])
b = np.array([sumay,suma_xpory,suma_xala2pory])
 
z = np.linalg.solve(a,b)
print('')
print("el sistema de ecuaciones lineales resuelto: ")
print(z)
print('')
print("ingrese los valores de a0, a1 y a2: ")
a0 = float(input("valor de a0 = "))
a1 = float(input("valor de a1 = "))
a2 = float(input("valor de a2 = "))
print('')
print("ecuacion: ")
print("y = ",a0,"+",a1,"x +",a2,"x^2")
 
promediox = np.mean(x)
promedioy = np.mean(y)
 
st = (y-promedioy)**2
suma_st = np.sum(st)
 
sr = (y-a0-(a1*x)-(a2*(x**2)))**2
suma_sr = np.sum(sr)
 
sy = math.sqrt((suma_st/(n-1)))
sydivx = math.sqrt((suma_sr/(n-2)))
 
print('')
print("promedio de x = ",promediox)
print("promedio de y = ",promedioy)
print('')
print("st:")
print(st)
print("sr:")
print(sr)
print('')
print("sumatoria st = ",suma_st)
print("sumatoria sr = ",suma_sr)
print('')
print("sy = ",sy)
print("sy/x = ",sydivx)
 
if (sydivx < sy):
    print("el modelo es adecuado")
    r = math.sqrt(((suma_st-suma_sr)/suma_st))
    rfinal = r*100
    print('coeficiente de correlacion(r) = ',rfinal)
else:
    print('El modelo no es adecuado')
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

regresion polinomial

Publicado por tincopasan (1082 intervenciones) el 04/11/2020 01:39:47
no te voy a hacer todo el código, pero te muestro una forma:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import numpy as np
x = np.array([0,1,2,3,4,5])
y = np.array([5,5,13,24,36,65])
 
def potencia(lista,elevado):
    return pow(lista,elevado)
 
def suma(lista):
    return np.sum(lista)
 
def multiplicar(uno,dos):
    return np.multiply(uno,dos)
 
print(f"""vector x : {x}
vector y : {y}
vector x elevado a 2 : {potencia(x,2)}
vector x elevado a 3 : {potencia(x,3)}
vector x elevado a 4 : {potencia(x,4)}
vector x multiplicado por vector y: {multiplicar(x,y)}
""")

para eso existen las funciones, para no tener que repetir código.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar