06.- Predecir las ventas con Inteligencia Artificial en TensorFlow ?
En este tutorial les voy a enseñar a poder predecir las ventas que puede llegar a tener su tienda negocio o empresa con inteligencia artificial y pues bueno aquí tengo un ejemplo de las ventas de una tienda.
Es un ejemplo muy sencillo en donde tenemos los días, las ventas que se han tenido en sus respectivos días y la idea es poder predecir cuál va a ser la venta que vamos a tener el día 13 y el día 14 con inteligencia artificial. además tenemos una gráfica en donde expresamos los datos que tenemos
La idea es que nuestro programa que vamos a desarrollar con tensor flow tenga la capacidad de reconocer un patrón y que nuestro programa dibuje una línea lomas cercana a cada uno de esos puntos. Esa línea va a estar definida por esta fórmula w * x + b.
Si asi como lo oyes, ya es posible predecir el futuro y esto lo podemos lograr con unas simples lineas de codigo que esta aqui abajo:
import tensorflow as tf
import matplotlib.pyplot as plt
# Declaramos la variable del peso (Weight W)
# Yo prefiero llamarlo como la inclinacion de la curva
W=tf.Variable([0.01],dtype=tf.float32)
# Declaramos la variable del margen (bias b)
# En otras palabra de aqui para arriba o para abajo
b=tf.Variable([0.01],dtype=tf.float32)
# x son los dias que han transcurriendo
x=tf.placeholder(tf.float32)
# y es la venta de ese dia
y=tf.placeholder(tf.float32)
# Operacion que genera la linea que le llamaremos regresion lineal
regresionLineal=W*x + b
# La taza de aprendisaje es el tamaño de los brincos que hay que dar para encontrar el resultado optimo
tazaDeAprendizaje=0.001
# Estas operaciones lo que hacen es tratar de reducir
# la perdida de exactitud de la inclinacion por cada venta de cada dia
perdida=tf.reduce_sum(tf.square(regresionLineal-y))
optimizacion = tf.train.GradientDescentOptimizer(tazaDeAprendizaje)
entrenar = optimizacion.minimize(perdida)
# Los dias y las ventas por dia
diasDelMes =[1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 ,11 ,12 ]
ventasPorDia=[100,120,110,100,150,140,140,160,150,143,145,150 ]
# Declaramos la vriable que inicializa las variables
init=tf.global_variables_initializer()
# Inicializamos la sesion
sess=tf.Session()
# Inicializamos las variables
sess.run(init)
#Inicializamos la grafica
fig = plt.gcf()
fig.set_size_inches(18.5, 10.5)
fig.show()
fig.canvas.draw()
# Hacemos in cliclo de 1000 repeticiones
# (En TensorFlow a cada repeticion se le conoce como epoca)
for epoca in range(1000):
fig.clear()
entrenar_, resPerdida=sess.run([entrenar,perdida],feed_dict={x: diasDelMes,y:ventasPorDia})
# Obtenemos el resultado de la inclinacion (Weight)
resW=sess.run(W)
# Obtenemos el resultado del sesgo (Bias)
resB=sess.run(b)
# Pintamos las ventas en la grafica
plt.plot(diasDelMes,ventasPorDia,'ro',label="datos")
# Obtenemos la inclinacion de la prediccion en la grafica
inclinacion=[ resW * x + resB for x in diasDelMes]
# Pintamos la linea de la prediccion
plt.plot(diasDelMes,inclinacion,label="ajuste")
#plt.text(0, 0, 'epoca'+str(epoca))
plt.title('Epoca='+str(epoca)+'n W='+str(resW)+'n B='+str(resB)+ 'nPerdida='+str(resPerdida))
if epoca == 0:
plt.legend()
fig.canvas.draw()
plt.show()
Ave que vuela, a la cazuela.