In [1]:
import numpy as np

# Las features son las predicciones de la última encuesta de Cifra, Equipos, Radar y Factum, en ese orden
encuestas_X=np.array([[50.9,31.8,12.5, #Cifra
                       52.5,31.6,11.1, #Equipos
                       54.0,29.0,08.0, #Radar
                       54.5,31.0,12.0], #Factum
                                      #2004
                      [45.0,31.0,12.0, #Cifra
                       44.0,30.0,10.0, #Equipos
                       45.0,29.0,14.0, #Radar
                       46.0,34.0,10.0],#Factum
                                      #2009
                      [43.0,32.0,18.0, #Cifra
                       43.6,33.4,15.1, #Equipos
                       45.6,31.3,15.2, #Radar
                       44.0,34.0,15.0] #Factum
                                      #2014
                     ])

# Resultados reales en 2004 y 2009 para cada partido
resultados_frente=np.array([50.54,48.0,47.8])
resultados_blancos=np.array([34.3,29.0, 30.8])
resultados_colorados=np.array([10.36,17.0, 12.8])

resultado_ballotage_fa=[54.63,53.48]
resultado_ballotage_blancos=[45.37,41.17]

from sklearn import linear_model

# Predicciones de las encuestas para 2019
encuestas_2019=np.array([38.0,27.0,11.0, #Cifra -- Final
                         41.1,28.7,11.7, #Equipos
                         43.6,24.5,15.8, #Radar -- Final
                         40.0,28.0,13.0]).reshape(1,-1) #Factum -- Final


print ("---")
print ("Predicciones utilizando RegressRidge")
print ("---")
# Utilizo un alpha alto porque las features están correlacionadas
clf=linear_model.Ridge(alpha=50.0)
clf.fit(encuestas_X,resultados_frente)
print("Predicción para el Frente:", clf.predict(encuestas_2019))
clf.fit(encuestas_X,resultados_blancos)
print ("Predicción para los blancos:",clf.predict(encuestas_2019))
clf.fit(encuestas_X,resultados_colorados)
print ("Predicción para los colorados:",clf.predict(encuestas_2019))


# Predicción ballotage
print ("---")
print ("Predicciones ballotage (basados en 2009,2014)")
print ("---")

clf=linear_model.Ridge(alpha=70.0)
clf.fit(encuestas_X[1:3],resultado_ballotage_fa)
print("Predicción para el Frente:", clf.predict(encuestas_2019))
clf.fit(encuestas_X[1:3],resultado_ballotage_blancos)
print ("Predicción para los blancos:",clf.predict(encuestas_2019))


---
Predicciones utilizando RegressRidge
---
Predicción para el Frente: [47.38865268]
Predicción para los blancos: [28.6112576]
Predicción para los colorados: [16.70908836]
---
Predicciones ballotage (basados en 2009,2014)
---
Predicción para el Frente: [54.19052508]
Predicción para los blancos: [43.76496115]