Sie sind auf Seite 1von 8

REGRESION LINEAL

Juan David Solarte Moreno


April 22, 2019

1 Introducción
En este documento se explica sobre la regresión lineal y los paquetes de datos
CSV. La regresión lineal es un algoritmo de aprendizaje supervisado que se
utiliza en Machine Learning y en estadı́stica. En su versión más sencilla, lo que
haremos es ’dibujar una recta’ que nos indicará la tendencia de un conjunto de
datos continuos (si fueran discretos, utilizarı́amos Regresión Logı́stica).

2 Objetivos
• Generar un código funcional en python
• Generar un algoritmo que genere una gráfica en 1d, 2d y en poly.
• Explicar en funcionamiento de los archivos CSV.

3 Procedimiento
Elementos usados:
• Programa Python27.
• Scripts matplotlib 2.2.3.

• Scripts numpy-1.15.1 cp27.


• Scripts pip install -U scikit-learn.

3.1 Instalar los Scripts


Para instalar cualquier Scripts se debe usar CMD el sı́mbolo del sistema (este
se ejecuta como administrador), se escribe la dirección de la carpeta Scripts en
Python, los archivos respectivos deben estar en la misma carpeta y se instala
con el comando: pip install ”el nombre completo copiado del archivo”
Se instala en el CMD con la direccion de la carpeta de Python27 y Scripts, us-
ando el comando ’pip install -U scikit-learn’ y aceptar. Si no funciona el código
del que se a estado trabando es conveniente reiniciar el sistema o desinstalar
los programas con el comando pip uninstall y volver a reinstalarlos.

1
Figure 1: Instalació con CMD. Fuente propia

3.2 Algorimos de regresion 1D


Este código muestra cómo se puede aplicar el análisis de regresión lineal a
datos de una dimensionales, usando datos almacenados en un archivo excel
que almacena coordenadas.
from future import print function, division
from builtins import range
import numpy as np
import matplotlib.pyplot as plt
X = []
Y = []
for line in open(’data 1d.csv’):
x, y = line.split(’,’)
X.append(float(x))
Y.append(float(y))
X = np.array(X)
Y = np.array(Y)
plt.scatter(X, Y)
plt.show()

Se importa el archivo excel con las coordenadas y se convierten en X y Y en


matrices NumPy

denominator = X.dot(X) - X.mean() * X.sum()


a = ( X.dot(Y) - Y.mean()*X.sum() ) / denominator
b = ( Y.mean() * X.dot(X) - X.mean() * X.dot(Y) ) / denominator

calculamos la predicción Y.

Yhat = a*X + b
plt.scatter(X, Y)
plt.plot(X, Yhat)
plt.show()
d1 = Y - Yhat
d2 = Y - Y.mean()

2
r2 = 1 - d1.dot(d1) / d2.dot(d2)
print(”the r-squared is:”, r2)

Se imprime las imagenes X vs Y, x vs ythat

Figure 2: Grafica (x,y).

Figure 3: Grafica (x,y).

3
Se imprime un variable para determinar qué tan bueno es el modelo, la
variable se llama r-squared.

Figure 4: calculado r-square

3.3 Algorimos de regresion 2D


Este código muestra cómo se puede aplicar el análisis de regresión lineal a
datos de dos dimensionales, usando datos almacenados en un archivo excel
que almacena coordenadas.
from future import print function, division
from builtins import range
import numpy as np
from mpl toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
X = []
Y = []
for line in open(’data 2d.csv’):
x1, x2, y = line.split(’,’)
X.append([float(x1), float(x2), 1])
Y.append(float(y))
X = np.array(X)
Y = np.array(Y)
fig = plt.figure()
ax = fig.add subplot(111, projection=’3d’)
ax.scatter(X[:,0], X[:,1], Y)
plt.show()
w = np.linalg.solve(np.dot(X.T, X), np.dot(X.T, Y))
Yhat = np.dot(X, w)
d1 = Y - Yhat
d2 = Y - Y.mean()
r2 = 1 - d1.dot(d1) / d2.dot(d2)
print(”the r-squared is:”, r2)

Aplicar las ecuaciones que aprendimos para calcular a y b en este caso


NumPy tiene un método especial para resolver AX = b ası́ que no usamos x
= inv (A) * b y se determina w como una matris de multiplicacion.
Se importa el archivo excel con las coordenadas y se convierten en X y Y en
matrices NumPy. Se imprime las imagenes X vs Y, x vs ythat

4
Figure 5: Grafica X vs w

Figure 6: calculo de r-squared

se calcula r-squared para saber que tan bueno es modelo.

5
3.4 Algorimos de regresion poly
la regresión poly muestra cómo se puede aplicar el análisis de regresión lineal
a los datos polinómicos, se importa el arhivo de ejemplo de excel.

from future import print function, division


from builtins import range
import numpy as np
import matplotlib.pyplot as plt
X = []
Y = []
for line in open(’data poly.csv’):
x, y = line.split(’,’)
x = float(x)
X.append([1, x, x*x])
Y.append(float(y))
X = np.array(X)
Y = np.array(Y)
plt.scatter(X[:,1], Y)
plt.title(”The data we’re trying to fit”)
plt.show()
w = np.linalg.solve(np.dot(X.T, X), np.dot(X.T, Y))
plt.scatter(X[:,1], Y)
x line = np.linspace(X[:,1].min(), X[:,1].max())
y line = w[0] + w[1] * x line + w[2] * x line * x line
plt.plot(x line, y line)
plt.title(”Our fitted quadratic”)
plt.show()
Yhat = X.dot(w)
d1 = Y - Yhat
d2 = Y - Y.mean()
r2 = 1 - d1.dot(d1) / d2.dot(d2)
print(”the r-squared is:”, r2)

Convertir X e y en matrices NumPy, aplicar las ecuaciones para calcular a


y b. NumPy tiene un método especial para resolver AX = b ası́ que no usamos
x = inv (A) * b.
Para trazar nuestras predicciones de modelos cuadráticos, se crear una lı́nea
de x y calcular la y de predicción. Con la matrix w se grafica. NP. dot () hace
lo que esperamos para la multiplicación de matrices. se grafica X[:,1], Y. para
trazar nuestras predicciones de modelos cuadraticos, vamos a crear una linea
de x y calcular la y de predicción. se grafica x line, y line.

6
Figure 7: Grafica no lineal x vs y

Figure 8: Grafica no lineal x line, y line

7
Figure 9: cualculo para r-squared

se calcula r-squared para saber que tan bueno es modelo

4 Conclusiones
• las regresiones lineales se usan para aproximar la relación de dependen-
cia entre una variable dependiente Y, las variables independientes X.

• las graficas demuestran la dimension en que se trabaja la regresion lineal


• El algoritmo de disperción ’scatter’ es util en los gráficos

Das könnte Ihnen auch gefallen