Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Learning
Veamos esas primeras filas: En estas gráficas vemos entre qué valores se concentran la
mayoría de registros.
Vamos a crear nuestros datos de entrada por el momento Predicción en regresión lineal simple
sólo Word Count y como etiquetas los # Shares. Creamos el
objeto LinearRegression y lo hacemos «encajar» (entrenar) Vamos a intentar probar nuestro algoritmo, suponiendo que
con el método fit(). Finalmente imprimimos los coeficientes y quisiéramos predecir cuántos «compartir» obtendrá un
puntajes obtenidos. articulo sobre ML de 2000 palabras
que en realidad este modelo no será muy bueno Pero 1 #Vamos a intentar mejorar el Modelo, con una dimensión
estamos aprendiendo a usarlo, que es lo que nos importa 2 más:
3 # Para poder graficar en 3D, haremos una variable nueva en rojo. Recordemos que en esta gráfica, el eje Z
4 que será la suma de los enlaces, comentarios e imágenes corresponde a la «altura» y representa la cantidad de Shares
5 suma = (filtered_data["# of Links"] + filtered_data['# of que obtendremos.
6 comments'].fillna(0) + filtered_data['# Images video'])
7
8 dataX2 = pd.DataFrame() fig = plt.figure()
9 dataX2["Word count"] = filtered_data["Word count"] 1 ax = Axes3D(fig)
dataX2["suma"] = suma 2
XY_train = np.array(dataX2) 3 # Creamos una malla, sobre la cual graficaremos el plano
z_train = filtered_data['# Shares'].values 4 xx, yy = np.meshgrid(np.linspace(0, 3500, num=10),
Nota: hubiera sido mejor aplicar PCA para reducción de 5 np.linspace(0, 60, num=10))
dimensiones, manteniendo la información más importante 6
de todas 7 # calculamos los valores del plano para los puntos x e y
8 nuevoX = (regr2.coef_[0] * xx)
9 nuevoY = (regr2.coef_[1] * yy)
Ya tenemos nuestras 2 variables de entrada en XY_train 10
y nuestra variable de salida pasa de ser «Y» a ser el eje 11 # calculamos los correspondientes valores para z. Debemos
«Z». 12 sumar el punto de intercepción
13 z = (nuevoX + nuevoY + regr2.intercept_)
14
Creamos un nuevo objeto de Regresión lineal con SKLearn 15 # Graficamos el plano
pero esta vez tendrá las dos dimensiones que entrenar: las 16 ax.plot_surface(xx, yy, z, alpha=0.2, cmap='hot')
que contiene XY_train. Al igual que antes, imprimimos los 17
coeficientes y puntajes obtenidos: 18 # Graficamos en azul los puntos en 3D
19 ax.scatter(XY_train[:, 0], XY_train[:, 1], z_train, c='blue',s=30)
20
# Creamos un nuevo objeto de Regresión Lineal 21 # Graficamos en rojo, los puntos que
regr2 = linear_model.LinearRegression() 22 ax.scatter(XY_train[:, 0], XY_train[:, 1], z_pred, c='red',s=40)
1 23
2 24 # con esto situamos la "camara" con la que visualizamos
# Entrenamos el modelo, esta vez, con 2 dimensiones
3 25 ax.view_init(elev=30., azim=65)
# obtendremos 2 coeficientes, para graficar un plano
4 26
regr2.fit(XY_train, z_train)
5 27 ax.set_xlabel('Cantidad de Palabras')
6 28 ax.set_ylabel('Cantidad de Enlaces,Comentarios e Imagenes')
# Hacemos la predicción con la que tendremos puntos
7 29 ax.set_zlabel('Compartido en Redes')
sobre el plano hallado
8 ax.set_title('Regresión Lineal con Múltiples Variables')
z_pred = regr2.predict(XY_train)
9
10
# Los coeficientes
11
print('Coefficients: \n', regr2.coef_)
12
# Error cuadrático medio
13
print("Mean squared error: %.2f" %
14
mean_squared_error(z_train, z_pred))
15
# Evaluamos el puntaje de varianza (siendo 1.0 el mejor
16
posible)
print('Variance score: %.2f' % r2_score(z_train, z_pred))
<
Referencias:
Como vemos, obtenemos 2 coeficientes (cada uno
correspondiente a nuestras 2 variables predictivas), pues
S/A SciKit de regresión lineal. Disponible desde https://scikit-
ahora lo que graficamos no será una linea si no, un plano learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-
en 3 Dimensiones. examples-linear-model-plot-ols-py
El error obtenido sigue siendo grande, aunque algo mejor S/A Guía de Referencia de SciPy. Disponible
desde https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.mstats.li
que el anterior y el puntaje de Varianza mejora casi el doble nregress.html
del anterior (aunque sigue siendo muy malo, muy lejos del
1).
S/A Documentación de StatsModels. Disponible
desde http://www.statsmodels.org/stable/index.html
Visualizar un plano en 3 Dimensiones en Python
Sarkar, Bali & Tushar. (2018). SharmaPractical Machine Learning with Python. A
Graficaremos nuestros puntos de las características de Problem-Solver’s Guide to Building Real-World Intelligent Systems. Dipanjan
entrada en color azul y los puntos proyectados en el plano Sarkar, Raghav Bali and Tushar Sharma.