Constantes de ganancia , ajuste de modelo

Uno de los problemas que he encontrado en la utilización de los modelos de dosis/respuesta es el comportamiento de la fatiga en los distintos individuos, sobre todo aquellos que no saben o nadan mal.

Es bastante compleja la recolección y construcción de los datos, dado que se requiere atletas nuevos y disciplinados (no fácil de conseguir) y también atletas buenos y disciplinados (algo mas sencillo).

La forma empleada fue partir de las constantes particulares que describió el Dr Skiba y a partir de ahi empezar a probar y analizar el resultados por medio de Test o bien carreras objetivos B o C , Es decir arranque primero con un set de constantes bastante holgadas y luego empiece a reducir , por cada combinación de éxito es = 1 y una de fracaso o que no le gusto los suficiente = 0, hasta ahí parece bastante artesanal si se toma en cuenta carreras pero mas objetivo si son test dado que no dependen de muchos factores.

El Dr Skiba utiliza la herramienta solver de excel para determinar estas constantes, en mi caso he realizado una L regresión(LogisticRegression)  con el modulo sklearn de python, las dos son buenas formas.

Esto lo vengo probando desde 2014 obteniendo muy buenos resultados en os atletas que están parametrizados bajo este programa. Debajo dejo un código en Python que puede probar para determinar que prob de éxito tienen las distintas combinaciones y ajustar cual conviene utilizar.

mathCore

Tambien hay que tener en cuenta que si las constantes tienen buen ajuste las curvas de influencia le pueden dar una idea de cuando hacer el pico de entrenamiento y cuando comenzar el Taper.

ci

ci

 

Constantes como para ir probando.

Elite / Pro IM

Swim / K1=1 K2 1..3  +Time 20..40   -Time 2..5 
 Bike   / K1=1 K2 2      +Time 30..50   -Time 3..8 
 Run   /  K1=1 K2 2      +Time 30..50   -Time 5..11

Amateur MOP IM

Swim / K1=1 K2 2..4  +Time 20..40   -Time 2..5 
 Bike   / K1=1 K2 2..4  +Time 20..50   -Time 3..8
 Run   /  K1=1 K2 2..5  +Time 20..50   -Time 3..8

Amateur MOP OL

Swim / K1=1 K2 2..4  +Time 16..30   -Time 2..8
 Bike   / K1=1 K2 2..5  +Time 18..35   -Time 3..8
 Run   /  K1=1 K2 2..5  +Time 18..35   -Time 3..8

 

 

Python 2.7

import numpy
import sklearn
from sklearn.linear_model import LogisticRegression

#Aprendisaje
# K1-K2 - t1 - t2 (ciclos IM) 
datastore = numpy.array([
 [1,2,30,2],[1,2,35,2],[1,2,40,2],[1,2,50,2],
 [1,2,30,3],[1,2,35,3],[1,2,40,3],[1,2,50,3],
 [1,2,30,4],[1,2,35,4],[1,2,40,4],[1,2,50,4],
 [1,2,30,5],[1,2,35,5],[1,2,40,5],[1,2,50,5],
 [1,2,40,7],[1,2,38,7],[1,2,42,7],[1,2,45,7],
 [1,3,30,2],[1,3,35,2],[1,3,40,2],[1,3,50,2],
 [1,3,30,3],[1,3,35,3],[1,3,40,3],[1,3,50,3],
 [1,3,30,4],[1,3,35,4],[1,3,40,4],[1,3,50,4],
 [1,3,30,5],[1,3,35,5],[1,3,40,5],[1,3,50,5],
 [1,3,40,7],[1,3,38,7],[1,3,42,7],[1,3,45,7],])

observaciones = numpy.array([1,1,1,0,1,0,0,1,1,0,0,0,0,1,1,0,1,0,0,0,1,1,1,0,1,1,0,1,1,0,1,0,0,1,1,0,0,0,0,0,])

x = datastore
y = observaciones

#Verificar estas constantes 
data = numpy.array([1,3,20,7])
data = data.reshape(1,-1)


logreg= LogisticRegression(C=100).fit(x,y)
print("S: {:.3f})".format(logreg.score(x,y)))

verificar = logreg.predict(data)
print(verificar)

p = logreg.predict_proba(data)
print(p)

prob = round(float(p[0][1])*100)
print ("Prob de exito " + str(prob))