scieee Open visual document viewer

Asistente digital mediante Machine Learning para detección de fallo del sensor del ángulo de ataque de una aeronave

Vélez Ruiz, Francisco José

Abstract

Desde sus inicios, el sector de la aviación siempre ha destacado por ser un sector puntero en cuanto a innovación e incorporación de la última tecnología. Hoy en día, la tendencia sigue siendo la misma. En España cada vez es mayor la participación en el sector aeronáutico, habiéndose multiplicado por cuatro en los últimos quince años. De esta forma, la industria aeronáutica representa un 4.7% del PIB industrial con un porcentaje de más del 80% dedicado a la exportación. (extraído de la Introducción)

Full text

P oyec o Fin de Ca e a Ingenie ía de Telecomunicación Fo ma o de Publicación de la Escuela Técnica Supe io de Ingenie ía Au o : F. Ja ie Payán Some Tu o : Juan José Mu illo Fuen es Dep. Teo ía de la Señal y Comunicaciones Escuela Técnica Supe io de Ingenie ía Uni e sidad de Se illa Se illa, 2013 T abajo Fin de G ado G ado en Ingenie ía Ae oespacial Asis en e digi al median e Machine Lea - ning pa a de ección de allo del senso del ángulo de a aque de una ae ona e Au o : F ancisco José Vélez Ruiz Tu o : Ma ía de los Ángeles Ma ín P a s Dp o. Ingenie ía Elec ónica Escuela Técnica Supe io de Ingenie ía Uni e sidad de Se illa Se illa, 2021 T abajo Fin de G ado G ado en Ingenie ía Ae oespacial Asis en e digi al median e Machine Lea ning pa a de ección de allo del senso del ángulo de a aque de una ae ona e Au o : F ancisco José Vélez Ruiz Tu o : Ma ía de los Ángeles Ma ín P a s P o eso a Ti ula de Uni e sidad Dp o. Ingenie ía Elec ónica Escuela Técnica Supe io de Ingenie ía Uni e sidad de Se illa Se illa, 2021 T abajo Fin de G ado: Asis en e digi al median e Machine Lea ning pa a de ección de allo del senso del ángulo de a aque de una ae ona e Au o : F ancisco José Vélez Ruiz Tu o : Ma ía de los Ángeles Ma ín P a s El ibunal nomb ado pa a juzga el abajo a iba indicado, compues o po los siguien es p o eso es: P esiden e: Vocal/es: Sec e a io: acue dan o o ga le la cali icación de: El Sec e a io del T ibunal Fecha: Índice Índice de Figu as V Índice de Tablas VII 1 In oducción 1 1.1 Sec o ae onáu ico: inno ación y segu idad 1 1.2 La cua a e olución indus ial y el Big Da a 2 2 Desc ipción del p oblema 3 2.1 Tecnología del senso AOA del B737 en la ac ualidad 3 2.2 Tecnología del senso AOA del B737 con la implemen ación del modelo p edic i o 4 3 Da os 7 3.1 X Plane 11 7 3.2 Se de da os 8 3.3 Visualización de da os 10 3.3.1 Despegue y ascenso 11 3.3.2 C uce o 13 4 Selección de ca ac e ís icas y mé icas de e o 17 4.1 Selección de ca ac e ís icas 17 4.1.1 Selección de ca ac e ís icas basado en pe cen iles 17 4.1.2 Selección de ca ac e ís icas median e el mé odo Selec K Bes 17 4.1.3 Selección de ca ac e ís icas median e el mé odo eg ession 18 4.1.4 Conclusión 18 4.2 Mé icas de e o 18 4.2.1 Fac o R218 4.2.2 Media del e o absolu o 19 4.2.3 E o cuad á ico medio 19 5 Teo ía de los modelos a implemen a 21 5.1 Reg esión lineal simple 21 5.2 Reg esión polinomial simple 23 5.3 Reg esión lineal múl iple 24 5.4 Suppo Vec o Machine 24 5.4.1 Ke nel 26 5.5 Redes neu onales 28 6 Implemen ación de los modelos 31 6.1 Modelo p edic i o: eg esión lineal y polinomial simple 31 6.1.1 Despegue y ascenso 31 6.1.2 C uce o 33 I II Índice 6.2 Modelo p edic i o: eg esión lineal múl iple 34 6.2.1 Despegue y ascenso 35 Implemen ación del modelo con la selección de ca ac e ís icas 35 Inco po ación de la a iable CL al modelo 36 Mejo a del modelo median e la il ación de da os 36 Resul ados 37 6.2.2 C uce o 38 Implemen ación del modelo con la selección de ca ac e ís icas 38 6.3 Modelo p edic i o: eg esión simple con écnicas de Suppo Vec o Machine 40 6.3.1 Despegue y ascenso 40 6.3.2 C uce o 42 6.4 Modelo p edic i o: eg esión lineal múl iple con écnicas de Suppo Vec o Machine 46 6.4.1 Despegue y ascenso 46 6.5 Modelo p edic i o: eg esión median e Redes Neu onales 48 7 Tes ing de los mejo es modelos 51 7.1 Despegue y ascenso 55 7.1.1 Modelo 1: Reg esión simple 55 7.1.2 Modelo 2: Reg esión lineal múl iple 56 7.1.3 Modelo 3: Reg esión simple con écnicas de SVM 56 7.1.4 Modelo 4: Reg esión múl iple con écnicas de SVM 57 7.1.5 Modelo 5: Reg esión múl iple median e Redes Neu onales 58 7.2 C uce o 59 7.2.1 Modelo 1: Reg esión simple 59 7.2.2 Modelo 2: Reg esión lineal múl iple 59 7.2.3 Modelo 3: Reg esión simple con écnicas de SVM 60 7.3 Conclusiones 61 8 E olución de los modelos con la can idad de da os 63 8.1 Despegue y ascenso 63 8.2 C uce o 65 9 Aplicación del modelo a di e en es casos 67 9.1 Despegue y ascenso 67 9.1.1 Caso 1 y 2: odos los senso es uncionan 67 9.1.2 Caso 3, 4 y 5: un senso a oja un alo di e en e y dos senso es a ojan un alo igual 68 9.1.3 Caso 6 y 7: odos los senso es dan un alo di e en e 69 9.2 C uce o 69 9.3 Conclusiones 69 10 Conclusiones y líneas u u as 71 10.1 Conclusiones 71 10.2 Líneas u u as 71 11 Anexo de códigos 73 11.1 Ca ga de da os 73 11.2 Da a cleaning 77 11.2.1 Despegue y ascenso 77 11.2.2 C uce o 79 11.3 Visualización de da os 81 11.3.1 Despegue y ascenso 81 11.3.2 C uce o 84 11.4 Fea u e selec ion 86 11.4.1 Despegue y ascenso 86 Índice III 11.4.2 C uce o 89 11.5 Reg esión simple 92 11.5.1 Despegue y ascenso 92 11.5.2 C uce o 99 11.6 Reg esión lineal múl iple 113 11.6.1 Despegue y ascenso 113 11.6.2 C uce o 134 11.7 SVM simple 144 11.7.1 C uce o 150 11.8 SVM múl iple 160 11.8.1 Despegue y ascenso 160 11.8.2 C uce o 164 11.9 Tes ing 166 11.9.1 Despegue y ascenso 166 11.9.2 C uce o 217 11.10Lea ning cu es 234 11.10.1Despegue y ascenso 234 11.10.2C uce o 239 11.11Mejo es modelos 242 11.11.1Despegue y ascenso 242 11.11.2C uce o 252 11.12Aplicación en di e en es casos 259 11.12.1Despegue y ascenso 259 11.12.2C uce o 261 Bibliog a ía 265 13 Si ios web 265 14 Lib os 265 15 Cu sos 265 16 A ículos 265 2Capí ulo 1. In oducción Po es as azones, las g andes emp esas ienden a inco po a la ecnología más pun e a en sus p oduc os. Es a ecnología, hoy en día, apun a hacia a iones menos con aminan es, a iones eléc icos, a iones más e icien es y a iones más segu os (habiendo sido la segu idad un obje i o p esen e en oda la his o ia de la a iación). El obje o de es e es udio es mejo a la segu idad de los a iones median e la p edicción de allos en el sis ema de ángulo de a aque. Ya que el hecho de que un senso de ángulo de a aque a oje un esul ado e óneo pod ía desencadena un acciden e ca as ó ico. Pa a consegui es e obje i o ma cado, se u iliza án écnicas de Machine Lea ning, las cuales son posibles de implemen a g acias a la disposición de una g an can idad de da os simulados. 1.2 La cua a e olución indus ial y el Big Da a Hace a ios años que las g andes emp esas se es án pe ca ando de la can idad de bene icios que se pueden ob ene de los da os. Es po eso que, pa a saca p o echo de los mismos, cada ez más se es án in en ando almacena de una o ma co ec a. A es a g an can idad de da os se le denomina Big Da a. Muchos expe os dicen que el Big Da a ya es á eniendo una g an epe cusión en el p esen e y que es a epe cusión se inc emen a á en el u u o. Algunos lo llaman la e a del Big Da a. Po o o lado, ambién se habla de la ac ualidad como la cua a e olución indus ial. En es a cua a e olución, la au oma ización es cada ez más ecuen e en odos los sec o es. Pa a consegui muchos de los obje i os p opues os de ca a a la au oma ización, el Big Da a (unido a he amien as p edic i as como el Machine Lea ning o el Deep Lea ning) es esencial. En cuan o a la indus ia ae onáu ica, cada ez son más las emp esas que es án in oduciendo es a ecnología en sus p oduc os. Desde la p edicción de allos de u bo anes has a la p edicción de demanda de pasaje os y op imización de u as, el Big Da a y la in eligencia a i i icial es án jugando papeles cla es en es os sis emas. Se p e é que la u ilización de es a ecnología cada ez sea mayo en la indus ia ae onáu ica. Como se ha dicho an e io men e, es e es udio a a á de saca p o echo de una g an can idad de da os (se pod ía denomina Big Da a) median e écnicas de Machine Lea ning pa a p edeci allos en los senso es de ángulo de a aque y, po an o, aumen a la segu idad de las ae ona es. 2 Desc ipción del p oblema 2.1 Tecnología del senso AOA del B737 en la ac ualidad El obje o de es e es udio se á aumen a la edundancia en el sis ema de de ección de en ada en pé dida del a ión come cial B737. En la ac ualidad, dicho sis ema se basa solamen e en dos senso es de ángulo de a aque. Sin emba go, en es e es udio se supond á que iene es senso es, pa a que el modelo lógico enga más si uaciones di e en es a compa a con el modelo es adís ico que se impolemen a á. Figu a 2.1 Senso es AOA del B737. Po an o, se supone que el modelo B737 iene es senso es AOA pa a medi el ángulo de a aque, de o ma que, g acias a la edundancia, se pueda p e eni si alguno de ellos es á dando un ángulo de a aque e óneo. El modelo lógico del B737 es el siguien e (con iene indica que se le ha llamdo AOA al ángulo de a aque que inalmen e oma ía el sis ema como co ec o): 3 4Capí ulo 2. Desc ipción del p oblema Figu a 2.2 Modelo lógico con 3 senso es AOA. De es a o ma, se pueden da los siguien es casos: 1. Los es senso es miden el mismo ángulo de a aque : en es e caso el sis ema oma como co ec o cualquie a de los es ou pu s, pues o que son iguales. 2. Dos senso es miden el mismo ángulo de a aque y el e ce o mide un ángulo di e en e : en es e caso el sis ema oma como co ec o el ángulo en el que coinciden dos de los senso es. 3. Cada uno de los senso es mide un ángulo di e en e : en es e caso no se sabe cuál ángulo es el co ec o y el pilo o debe á guia se po su in uición. El p oblema de es e modelo es el segundo caso nomb ado. Pues o que, si los dos senso es que miden el mismo ángulo es án allando, el sis ema oma ía un angulo de a aque e óneo, lo que pod ía se ca as ó ico. 2.2 Tecnología del senso AOA del B737 con la implemen ación del modelo p edic- i o El p incipal obje i o de la implemen ación de un modelo que p ediga el ángulo de a aque se ía co egi el caso nomb ado an e io men e. El modelo lógico que segui ía el sis ema en es e caso es el siguien e (con iene indica que se le ha llamdo AOA al ángulo de a aque que inalmen e oma ía el sis ema como co ec o): 2.2 Tecnología del senso AOA del B737 con la implemen ación del modelo p edic i o 5 Figu a 2.3 Modelo lógico con 3 senso es AOA y el modelo es adís ico. En es e caso se supone que se ha implemen ado un modelo que ha sido en enado con da os de uelos an e io es. Dicho modelo ecibe como inpu las a iables del uelo a iempo eal y ob iene como ou pu el alo de ángulo de a aque p edecido (AOA*). Con es a implemen ación, se pod ían da los siguien es escena ios: 1. Los es senso es miden el mismo ángulo de a aque . Aho a hab ía que comp oba si dicho ángulo de a aque coincide con el AOA*: a) Sí coinciden : no hay allo y el modelo oma cualquie alo de los cua o, pues o que son odos iguales. b) No coinciden p obablemen e el modelo es é allando. El sis ema oma ía cualquie alo de los es de los senso es, pues o que los es son iguales. 2. Dos senso es miden el mismo ángulo de a aque y el e ce o mide un ángulo di e en e . En es e caso hab ía que comp oba si el alo de los dos senso es que coinciden ambién coincide con AOA*: a) Sí coinciden : dos senso es dan un alo co ec o y uno es á allando. El sis ema oma el alo de dichos dos senso es o el AOA*, pues o que son iguales. b) No coinciden. Hab ía que obse a si el alo del senso que da un ángulo di e en e coincide con el AOA*: I. Sí coinciden : el alo del senso es co ec o y el sis ema oma dicho alo o el AOA*, pues o que son iguales. II. No coinciden : en es e caso ninguno de los es senso es coincide ni en e ellos ni con el AOA*. El pilo o debe á guia se po la in uición. 6Capí ulo 2. Desc ipción del p oblema 3. Cada uno de los senso es mide un ángulo di e en e . Hab ía que comp oba si alguno de los es ángulos coincide con el AOA*: a) Sí coinciden : dicho alo es co ec o. El sis ema oma dicho alo o el AOA*, pues o que son iguales. b) No coinciden: el pilo o debe á guia se po la inu ición. Los da os de pa ida pa a en ena al modelo son da os de uelos an e io es en los que pod ía da se que el alo que mide alguno de los es senso es AOA sea e óneo. Sin emba go, pues o que es e escena io se da muy poco ecuen emen e, apenas in lui á en la e iciencia de nues o modelo. Todos los modelos incluídos en es e documen o son modelos de eg esión cuyo p opósi o es ob ene el alo de ángulo de a aque del a ión median e las a iables a iempo eal p opo cionadas po el mismo. En es udios pos e io es que no se inclui án en es e documen o, se p ocede á a consegui el mismo obje i o pe o implemen ando modelos de eg esión logís ica (con a iables ca egó icas: 1 = NO FALLA, 0 = SÍ FALLA). 3 Da os 3.1 X Plane 11 Pa a consegui el obje i o p opues o en el apa ado an e io (implemen a un modelo es adís ico que p ediga el alo del ángulo de a aque), es necesa ia una g an can idad de da os de uelo en di e en es condiciones. Pa a ello, se ha u ilizado el simulado XPlane11. Figu a 3.1 Logo de XPlane11. XPlane11 ha sido ca alogado como el simulado de uelo más ealis a de la ac ualidad. Es e so wa e es u ilizado po pilo os pa a en ena sus habilidades así como po aman es de la ae onáu ica pa a ap ecia en p ime a pe sona el abajo de un pilo o. Es e simulado incluye de o ma g a ui a el modelo B737-800, que se ha u ilizado en es e es udio. Figu a 3.2 B737-800 en XPlane11. 7 8Capí ulo 3. Da os Cabe des aca que no esul a i ial pilo a una ae ona e de es as ca ac e ís icas con XPlane11. Pa a ello, se ha hecho una e isión de ídeos u o iales de pilo os que enseñan a ello y se ha in en ado ealiza despegues y uelos en c uce o in en ando segui lo máximo posible las pau as que indican es os pilo os así como las condiciones de uelo que se oman en la ealidad pa a cada uno de los amos. Sin emba go, se ha op ado po no ealiza ningún amo de descenso y a e izaje, ya que el hecho de que és e sea el amo más complejo de pilo a pod ía hace que los da os ob enidos no sean an iables como los da os de los amos an e io es. Figu a 3.3 Panel de con ol del B737-800 en XPlane11. 3.2 Se de da os Como se ha dicho an e io men e, los da os se co esponden con acciones de despegue, ascenso y c uce o de ocho uelos con di e en es condicones (al i ud, elocidad c uce o, elocidad de subida, u bulencias, me eo ología...) simulados en XPlane11. En dicho simulado se ha seleccionado un o al de 68 a iables ( azonablemen e escogidas) pa a que apa ezcan en el se de da os. Pa a implemen a los modelos, se c ea un da a se con odos los uelos y se sepa a en despegue y asceno po un lado y c uce o po o o: •Da a se c uce o: 68 columnas ×36699 ilas. •Da a se despegue y ascenso: 68 columnas ×57384 ilas. A con inuación se adjun a una abla en la que se especi ican odos las a iables que con iene el da ase . Con iene deci que el da ase incluye da os de los cuáles no se conoce muy bien su signi icado, pe o que no son los de in e és. 3.2 Se de da os 9 Tabla 3.1 Va iables del se de da os I. Nomb e Va iable Unidad ’mues a’ Núme o de da o ob enido. Sin unidad ’ o l, ime’ Tiempo o al en el que se gene a el da o. s ’VIS, is’ ’Vind,kias’ Velocidad indicada en nudos de elocidad del ai e indicada. Nudos ’Vind,keas’ Velocidad indicada en nudos de elocidad del ai e equi alen e ( elocidad del ai e calib ada co egida pa a lujo adiabá ico comp esible a la co espondien e al i ud de uelo). Nudos ’V ue,k as’ Velocidad e dade a en nudos de elocidad del ai e e dade a. Nudos ’V ue,k gs’ ’Vind,mph’ ’V ue,mphas’ ’V ue,mphgs’ ’Mach, a io’ Núme o de Mach. Adimensional ’wind,speed’ Velocidad del ien o. Nudos ’wind,di ’ Di ección del ien o espec o al no e medida en sen ido ho a io. El ien o de no e a su o ma 0º. G ados ’dens, a io’ Ra io de densidad. ’ba o,inHG’ P esión ba omé ica. Pulgada de Me cu io éle ,su ’ Supe icie del ele a o de lec ada. áil n,su ’ Supe icie del ale ón de lec ada. ’ udd ,su ’ Supe icie del udde de lec ada. ’M, lb’ Momen o de pi ch. Pie-lib a ue za ’L, lb’ Momen o de oll. Pie-lib a ue za Ñ, lb’ Momen o de yaw. Pie-lib a ue za ’Q, ad/s’ Pi ch a e. ad/s ’P, ad/s’ Roll a e. ad/s ’R, ad/s’ Yaw a e. ad/s ’pi ch,deg’ Pi ch. G ados ’ oll,deg’ Roll. G ados ’hding, ue’ Heading e dade o. G ados ’hding,mag’ Heading magné ico. G ados ’be a,deg’ Resbalamien o. G ados ’hpa h,deg’ ’ pa h,deg’ ’slip,deg’ ’la ,deg’ La i ud. G ados ’lon,deg’ Longi ud. G ados ál ,ind’ Al i ud. Pies 10 Capí ulo 3. Da os Tabla 3.2 Va iables del se de da os II. Nomb e Va iable Unidad ’ h s ,1,lb’ Empuje mo o 1 Lib as ’ h s ,2,lb’ Empuje mo o 2 Lib as ’ pm1,engin’ pm mo o 1 pm ’ pm2,engin’ pm mo o 2 pm ’li ,lb’ Sus en ación. Lib as ’d ag,lb’ Resis encia. Lib as ’L/D, a io’ E iciencia ae odinámica. Adimensional ’cl, o al’ Coe icien e de sus en ación. Adimensional ’cd, o al’ Coe icien e de esis encia. Adimensional ’L/D, a io.1’ éle 1,deg’ Ángulo de de lexión del ele a o . G ados ’ ud 1,deg’ Ángulo de de lexión del udde . G ados ’wing1,li ’ ’wing1,li .1’ ’wing2,li ’ ’wing2,li .1’ ’wing3,li ’ ’wing3,li .1’ ’wing1,d ag’ ’wing1,d ag.1’ ’wing2,d ag’ ’wing2,d ag.1’ ’wing3,d ag’ ’wing3,d ag.1’ ’hs ab,li ’ ’hs ab,li .1’ ’ s b2,li ’ ’hs ab,d ag’ ’hs ab,d ag.1’ álpha,deg1’ AOA senso 1 G ados álpha,deg2’ AOA senso 2 G ados álpha,deg3’ AOA senso 3 G ados 3.3 Visualización de da os A con inuación se p ocede a la isualización de los da os del da ase y de sus espec i as elaciones. Pues o que isualiza las 68 a iables se ía demasiado copioso, se c ea á un nue o da ase que incluya solamen e las a iables que son de in e és. Dichas a iables son: 1. Mach 2. Wind speed 3. Wind di ec ion* 4. Supe icie del elea o 5. Supe icie del ale ón 6. Supe icie del udde 7. Al i ud 8. Empuje o al 9. pm media 10. CL 3.3 Visualización de da os 11 11. CD 12. Resbalamien o 13. Pi ch 14. Roll 15. AOA1 16. AOA2 17. AOA3 Cabe des aca que se han c eado es a iables nue as de la siguien e o ma: •Empuje o al = empuje1 + empuje2 • pm media = pm1+ pm2 2 •Wind di ec ion* = wind di ec ion - heading Siendo wind di ec ion* el ángulo que o ma el eje del uselaje con la di ección del ien o. La jus i icaciones p incipales pa a elegi es as a iables se exponen a con inuación: •Se excluyen odas las alocidades pues o que es án in ínsicamen e ep esen adas po el Mach. • Se excluyen a iables que son o almen e supe luas a la ho a de es udia el ángulo de a aque. Po ejemplo: la i ud, longi ud, ho a... • Se excluyen odas las a iables que son sus en ación y esis encia pues o que es án in ínsecas en el CL y en el CD. • Se exluyen a iables que, po in uición, no end án un g an impac o en la a iable dependien e (AOA). 3.3.1 Despegue y ascenso En p ime luga , se hace uso de la he amien a "desc ibe" de py hon pa a isualiza las ca ac e ís icas de las a iables: Figu a 3.4 Función desc ibe pa a a iables de despegue y ascenso I. 18 Capí ulo 4. Selección de ca ac e ís icas y mé icas de e o Tabla 4.2 Selección de ca ac e ís icas po Selec K Bes . Posición Despegue y ascenso C uce o 1 Mach Mach 2 Wind Speed Wind Speed 3 Pi ch Pi ch 4 Al i ude Al i ude 5 pm media CL 6 Wind Di ec ion Empuje o al 4.1.3 Selección de ca ac e ís icas median e el mé odo eg ession Es e mé odo compa a modelos de eg esión pa a pun ua el e ec o indi idual de cada una de las a iables. Las mejo es a iables según es e modelo son las siguien es: Tabla 4.3 Selección de ca ac e ís icas po eg ession. Posición Despegue y ascenso C uce o 1 Mach Mach 2 Wind Speed Wind Speed 3 Pi ch Pi ch 4 Al i ude Al i ude 5 pm media CL 6 Wind Di ec ion Empuje o al 4.1.4 Conclusión Los esul ados ayudan a ene una idea de cuáles son las a iables más ele an es, ya que és as se epi en más o menos pa a los di e en es modelos. Además, los conocimien os ae onáu icos ayudan a con i ma que es as a iables pod ian se bas an e ele an es pa a el ángulo de a aque. Finalmen e, con iene ano a que dichas a iables ambién enían un al o alo de co elación con el ángulo de a aque. 4.2 Mé icas de e o En es e apa ado se desc ibi án los dis in os mé odos u ilizado pa a medi la iabilidad del modelo. Aquellos modelos que ob engan esul ados más a o ables en las mé icas de e o se án aquellos que se implemen a án inalmen e y que se u iliza án pa a comp oba si uncionan con los da os de un nue o uelo simulado y no incluído en los modelos. A con inuación, se desc iben las mé icas de e o . 4.2.1 Fac o R2 El ac o R2 , ambién conocido como coe icien e de de e minación, mide la exac i ud en la que la a iable independien e desc ibe la a iable dependien e. La de inición de R2 es bas an e sencilla: es la p opo ción de la a ianza o al de la a iable dependien e p edecida a pa i de la ai bale independien e que se e á es udiando. Es deci : R2=∑(ˆy−¯ Y)2 ∑(y−¯ Y)2 Siendo y la a iable dependien e eal, ˆy la a iable dependien e p edecida y ¯ Y la media de la a iable eal. Un alo de 1 indica un ajus e pe ec o, un alo de 0 indica un que el modelo es equi alen e a la media y un alo nega i o indica que p edicciones pesimas. Valo es acep ados de R2 en p oblemas eales ondan desde 0.6 a 0.9. En es e caso, 0.6 se á el alo que se oma á como lími e a la ho a de decidi si un modelo in e esa se es udidado o no. 4.2 Mé icas de e o 19 4.2.2 Media del e o absolu o Es a mé ica es bas an e ácil de explica pues o que solamen e consis e en calcula el alo del e o absolu o de la a iable eal y la p edecida y hace la media a i mé ica. La ó mula del e o absolu o es: Ea=|y−ˆy| 4.2.3 E o cuad á ico medio El e o cuad á ico medio es la media a i mé ica de los e o es cuad á icos, que se calcula de la siguien e o ma: Ec= (y−ˆy)2 Se puede obse a que es e e o es el mismo que el an e io pe o ele ado al cuad ado, po lo que no nos apo a mucha más in o mación. Sin emaba go, se conside a á po que es una mé ica muy u ilizada en Machine Lea ning, po lo que se á de u ilidad pa a decidi si oma un modelo o no según e e encias. Cabe des aca que la media del e o absolu o no coincide con la media del e o cuad á ico pa a n 6=1. 5 Teo ía de los modelos a implemen a En es a sección se p e ende hace un b e e esumen explica i o de los modelos es adís icos que se an a implemen a pos e io men e. Cabe des aca que en ningún momen o se desa olla á ningún código pa a usa es os modelos, ya que se u iliza án lib e ías (po ejemplo Sciki -Lea n) que ienen unciones con los modelos ya implemen ados. Po an o, ampoco se p o undiza á en el uncionamien o in e no de cada uno de los modelos, pues o que ello conlle a ía ala ga la memo ia demasiado. Solamen e se ha á una b e e in oducción sob e en qué se basa el uncionamien o de cada modelo. Figu a 5.1 Logo de Sciki s Lea n. 5.1 Reg esión lineal simple La eg esión lineal es un modelo que pe mi e desc ibi cómo in luye una a iable X (Mach, Al i ud, CL...) sob e o a a iable Y (AOA) median e una unción lineal: (x) = β0+β1x El modelo de eg esión lineal pa e de una se ie de pun os que se conside an los da os eales del p oblema (en es e caso, los da os de los uelos simulados): 21 22 Capí ulo 5. Teo ía de los modelos a implemen a Pa a gene a la eg esión se u iliza la écnica de ajus e de mínimos cuad ados. Pa a ello, en p ime luga , se calcula la media a i mé ica y la a ianza an o de los alo es de X como los alo es de Y. ¯x= n ∑ i=1 xi n ¯y= n ∑ i=1 yi n σ2 x=∑n i=1x2 i−n·¯x2 n−1 σ2 y=∑n i=1y2 i−n·¯y2 n−1 Po úl imo, la pendien e y la o denada en el o igen de la unción p edic i a se calculan de la siguien e o ma: β1=∑n i=1yiyi−n(¯x)(¯x) σ2 x(n−1) β0=¯y−m¯x De es a o ma, se gene a una ec a que busca compo a se de mane a simila a los pun os eales. 5.2 Reg esión polinomial simple 23 5.2 Reg esión polinomial simple Puede ocu i que un modelo lineal se ea muy limi ado a la ho a de imi a el compo amien o del conjun o de da os de pa ida. En ese caso, puede que sea con enien e la implemen ación de un modelo en el que la unción p edic i a no sea una ec a. Es e es el caso de la eg esión polinomial simple. Es e modelo se ca ac e iza po añadi cu a u a al ele a la a iable independien e (X) a di e en es po encias. Supongamos aho a que los da os de pa ida son los siguien es: El p ocedimien o pa a gene a la eg esión cuad á ica u ilizando la écnica de ajus e de mínimos cuad ados equie e un sis ema de ecuaciones que son p oduc o de analiza la suma de los cuad ados de los esiduos. Dicho sis ema se ía: s = n ∑ i=1 (yi−a0−a1xi−a2x2 i)2 Po lo que el p oblema se educi ía a encon a los pa áme os de dicha ecuación pa a halla la unción p edic i a. De es a o ma, dicha unción se ía la siguien e: 24 Capí ulo 5. Teo ía de los modelos a implemen a En es e caso se ha desa ollado una eg esión polinomial cuad á ica, pe o la unción no iene po qué se de g ado dos, sino que se á de un g ado n pa a el cuál la unción se ajus e de la mejo o ma posible a los da os de pa ida. 5.3 Reg esión lineal múl iple La eg esión lineal múl iple consis e en aumen a el núme o de a iables independien es usadas en la eg esión lineal simple. Es deci , se pasa de ene una a iable independien e a un núme o n que depende á de la complejidad que se le quie a añadi al modelo y de la e iciencia añadida que supond ía ag ega cie as a iables. Es e modelo, al igual que la eg esión lineal simple, c ea una unción de o ma que, median e la écnica de ajus e de mínimos cuad ados, imi e el compo amien o de los da os de pa ida. (x) = β0+β1x1+β2x2+... +βnxn En es e caso, pues o que se a a de un p oblema con n dimensiones, no es posible ealiza una ep esen ación g á ica. Pa a es e ipo de modelo (así como pa a cualquie o o que sea mul i a iable), es necesa io ene en cuen a la mul icolinealidad. La mul icolinealidad es un p oblema muy ecuen e que se p esen a cuando las a iables explica i as son muy dependien es en e sí. En caso de da se es e enómeno, debe á op a se po elimina aquellas a iables con al a dependencia del modelo, al y como se ha á en apa ados pos e io es. 5.4 Suppo Vec o Machine Los algo i mos de Suppo Vec o Machine o de máquinas de sopo e ec o ial son unos algo i mos que ue on desa ollados po Vladimi Vapnik en la década de los 90. Dichos algo i mos se encuen an den o del g upo de ap endizaje supe isado y son muy ú iles pa a soluciona p oblemas an o de clasi icación como de eg esión. Al igual que las eg esiones is as an e io men e, los algo i mos SVM basan sus p edicciones en el ap endizaje de un conjun o de da os de en enamien o que oma como inpu . El SVM es un modelo que ep esen a a los pun os de en enamien o en el espacio ec o ial n (núme o de a iables) sepa ando a las clases de dos o más ca ego ía di e en es median e un hipe plano de inido po el ec o en e los pun os que es án más ce canos a las clases que se quie an sepa a . Pa a cla i ica el uncionamien o ma emá ico de es os algo i mos se pond á el siguien e ejemplo: Sea un conjun o de da os como el que se p esen a a con inuación, donde se puede obse a que los da os p esen an un compo amien o simila a un modelo lineal. 5.4 Suppo Vec o Machine 25 En p ime luga , se busca el modelo lineal que mejo desc iba el compo amien o del conjun o de pun os mos ado. En es e caso es una línea ec a, a la que se llama hipe plano. Sin emba go, no iene po qué se una ec a, ya que la dis ubución de da os puede se mucho más compleja y he e ogénea que la mos ada. Aún así, la idea p incipal siguie siendo la misma. De es a o ma, en es e caso el hipe plano se pod á de ini median e la exp esión de una ec a: y=β0+β1x A con inuación, se buscan dos bandas pa alelas al hipe plano, siendo necesa io que en e ambas se cub an la mayo can idad de da os. Es as bandas son conocidas como ec o es de apoyo o sopo e. 26 Capí ulo 5. Teo ía de los modelos a implemen a Es as ec as pa alelas a la an e io end án las siguien es exp esiones: y=β0+β1x+ε y=β0+β1x−ε De es a o ma, median e la gene ación de es e hipe plano, los algo i mos de Suppo Vec o Machine son capaces de soluciona p oblemas de clasi icación y eg esión. Sin emba go, la base ma emá ica que se encuen a de ás de es a algo imo no se expond á en es a memo ia pues o que es algo que se escapa de la misma. Algunas en ajas de los algo i mos de SVM son: •G an e ec i idad en espacios con muchas dimensiones. • Pueden se aún e ec i os en casos en los que el núme o de dimensiones es mayo que el núme o de mues as. • Usan un subse de da os de en enamien o en el ec o de sopo e, po lo que son ambién e icien es en cuan o a memo ia. •Son muy e sá iles, pueden se aplicados con di e en es ke nel. 5.4.1 Ke nel A la ho a de c ea un modelo basado en SVM, es esencial escoge el mejo ke nel posible. Dicho de una o ma muy simple, el ke nel es la unción en la cuál se basa el SVM pa a adecua se de la mejo o ma posible a los da os de pa ida. Exis en muchos ipos de ke nel. Algunos de los más u ilizados son el ke nel lineal, el ke nel polinomial y el ke nel b . Se án és os los que se implemen en en los modelos de SVM de es e es udio. Los dos p ime os casos se co esponden a un hipe pa áme o basado en una ec a y en una unción polinomial espec i amen e, mien as que el ke nel b es á basado en una unción exponencial. A con inuación se adjun an o os de ejemplos de cada uno de es os ke nel pa a un caso de dos dimensiones: 5.4 Suppo Vec o Machine 27 Figu a 5.2 Ejemplo Ke nel lineal. Figu a 5.3 Ejemplo Ke nel polinomial. 34 Capí ulo 6. Implemen ación de los modelos Tabla 6.5 E o es del modelo de eg esión lineal simple (CL). Conjun o R2E o absolu o medio E o cuad á ico medio T aining 0.876 0.332 0.222 Tes ing 0.875 0.335 0.227 Las cu as de eg esión ob enidas son las siguien es (en na anja se ep esen a el conjun o de es ing y en azul el de aining): Figu a 6.2 Reg esión simple polinómica g ado 2 (Pi ch) . Figu a 6.3 Reg esión lineal simple (CL) . 6.2 Modelo p edic i o: eg esión lineal múl iple En es a sección se p e ende p opone un modelo de eg esión lineal múl iple con las a iables que lo hagan lo más e icien e posible. Es o no es a ea ácil, pues o que hay que ene en cuen a que la a iable independien e 6.2 Modelo p edic i o: eg esión lineal múl iple 35 enga una al a epe cusión en el compo amien o de la a iable independien e pe o que no enga una al a co elación con o as a iables independien es que se incluyan en el modelo. En p ime luga se implemen a á un modelo en el que, pa a elegi qué a iables independien es in oduci , se u iliza án los modelos de selección de ca ac e ís icas de los apa ados an e io es. Po o o lado, como se ha nomb ado p e iamen e, hay que ene en cuen a la colinealidad en e las a iables independien es. Pues o que, si una a iable independien e es muy e icien e a la ho a de es ablece un modelo de eg esión lineal pe o ambién iene una al a dependencia con o a a iable independien e, el modelo de eg esión múl iple se e á nega i amen e a ec ado. De es a o ma, es con enien e es udia la colinealidad de las a iables independien es. Pa a ello se u iliza el ac o in lación de la a ianza (VIF). La e e encia que se suele u iliza pa a sabe si se deben inclui las a iables en el modelo o no es la siguien e: •VIF =1: Las a iables no es án co elacionadas •VIF <5: Las a iables ienen una co elación mode ada y se pueden queda en el modelo •VIF >5: Las a iables es án al amen e co elacionadas y deben desapa ece del modelo Es e ac o se es udia á (aunque no se incluya explíci amen e) cada ez que se implemen e un modelo mul i a iable. 6.2.1 Despegue y ascenso Implemen ación del modelo con la selección de ca ac e ís icas Las a iables que se eligen según los modelos de selección de ca ac e ís icas p e iamen e implemen ados (en conc e o Selec KBes ) son las siguien es: •Mach •Wind Speed •Pi ch •Al i ude • pm media •Wind Di ec ion Dichas a iables se han nomb ado o denadas de más a menos e icien es. A con inuación se adjun a una abla en la que se pueden obse a los alo es de VIF pa a el caso de dichas a iables independien es con el ángulo de a aque como a iable independien e: Tabla 6.6 Valo es de VIF. Va iables VIF Mach 4.33 Wind Speed 2.35 Pi ch 1.75 Al i ude 2.54 pm media 3.34 Wind Di ec ion 2.34 Se puede obse a que, según la e e encia, odas las a iables se pod ían inclui en el modelo sin que a ec e la colinealidad. Es deci , se pod ía c ea un modelo de eg esión lineal múl iple con es as 6 a iables sin que el e ec o de la colinealidad uese un p oblema. Sin emba go, el hecho de que no haya al os alo es de VIF en es e caso no quie e deci que no los aya a habe en modelos de eg esión en los que se elimine alguna de las a iables an e io es del inpu . Es deci , si, po ejemplo, se c ease un modelo de eg esión lineal múl iple de 3 a iables con el Mach, el Wind Speed y el Wind Di ec ion, al calcula de nue o los alo es de VIF, pod ía apa ece alguno que supe ase la e e encia. Po an o, cada ez que se implemen e un modelo mul i a iable, se comp oba á que los alo es de VIF no supe en la e e encia. 36 Capí ulo 6. Implemen ación de los modelos Inco po ación de la a iable CL al modelo El sis ema de selección de ca ac e ís icas no ha omado a la a iable CL como buena pa a el modelo. Sin emba go, se sabe que el CL iene una elación eó icamen e lineal con el ángulo de a aque (excep o cuando el a ión en a en pé dida). Po an o, po in uición, se pod ía pensa que dicha a iable pod ía mejo a la e iciencia del modelo. De es a o ma, se añadi á dicha a iable, ya que, en caso de ene al a dependencia con o a a iable de inpu , el es udio del VIF se i á pa a de ec a lo y elimina la de cualquie modelo. Mejo a del modelo median e la il ación de da os Tal y como se mos ó en la sección de isualización de da os, el his og ama de ecuencias del ángulo de a aque pa a el caso de despegue y ascenso es el siguien e: Se puede obse a que dicho diag ama incluye ángulos de a aque demasiado g andes (un ángulo de a aque de 10 º es un ángulo ce cano al alo de en ada en pé dida). También se ap ecia que la ecuencia con la que apa ecen dichos alo es es muy baja en compa ación con la ecuencia de ángulos de a aque muy bajos. Po es as dos azones (ángulo demasiado g ande y ecuencia demasiado pequeña) se decide hace un il ado de los da os de o ma que el modelo solamen e incluya ángulos de a aque meno es a 11 º , de o ma que el his og ama queda de la siguien e o ma: 6.2 Modelo p edic i o: eg esión lineal múl iple 37 Cabe des aca , que se ha ealizado es a il ación po que se ha comp obado que los modelos mejo an con ella. Po es a misma azón, de aho a en adelan e odos los modelos pa a el despegue y ascenso se implemen a án con es a il ación de da os. Resul ados A con inuación, se adjun an los esul ados ob enidos. El p ocedimien o que se ha seguido ha consis ido en: 1. Toma los da os co espondien es a las 7 a iables nomb adas an e io men e y a la a iable dependien e (ángulo de a aque). 2. Implemen a odas las eg esiones lineales múl iples posibles ( odas las combinaciones de a iables independien es) de 3 a 7 a iables. Es o es: •21 eg esiones lineales con 2 a iables •35 eg esiones lineales con 3 a iables •35 eg esiones lineales con 4 a iables •21 eg esiones lineales con 5 a iables •7 eg esiones lineales con 6 a iables •1 eg esión lineal con 7 a iables 3. De odos los modelos an e io es se han cogido los 3 mejo es que no p esen en alo es de VIF supe io es a los de e e encia. 4. Los esul ados a ojados po dichos modelos se p esen an a con inuación. Tabla 6.7 Mé icas de e o de los 3 mejo es modelos de eg esión lineal múl iple (despegue y ascenso). Núme o de a iables Va iables R2E o absolu o medio E o cuad á ico medio 5Mach, Wind Speed, al i ude, pm media, CL 0.67 0.66 0.85 4Mach, Wind Speed, pm media, CL 0.67 0.67 0.85 6Mach, Wind Speed, pi ch, al i ude, Wind Di ec ion, CL 0.68 0.62 0.82 Tabla 6.8 Valo es de VIF pa a modelo de 5 a iables. Va iables VIF Mach 4.21 Wind Speed 1.07 Al i ude 2.55 CL 1.31 pm media 2.99 Tabla 6.9 Valo es de VIF pa a modelo de 4 a iables. Va iables VIF Mach 2.75 Wind Speed 1.06 CL 1.24 pm media 2.97 38 Capí ulo 6. Implemen ación de los modelos Tabla 6.10 Valo es de VIF pa a modelo de 6 a iables. Va iables VIF Mach 3.24 Wind Speed 2.44 Pi ch 2.10 CL 1.85 Al i ude 2.90 Wind Di ec ion 2.52 6.2.2 C uce o Implemen ación del modelo con la selección de ca ac e ís icas Al igual que en el caso del despegue y ascenso, se u iliza la unción de Sciki -Lea n Selec Kbes , de o ma que se ob ienen las siguien es a iables: •Mach •Wind Speed •Pi ch •Al i ude •CL •Empuje o al De nue o, se á necesa io comp oba la colinealidad de es as a iables con la a iable AOA como a iable dependien e. Al calcula el VIF, se ob ienen los siguien es esul ados: Tabla 6.11 Valo es de VIF. Va iables VIF Mach 12.24 Wind Speed 4.36 hline Pi ch 5.65 Al i ude 5.99 CL 25.30 Empuje o al 2.26 Se obe an a ios alo es de VIF que supe an al alo es ablecido como e e encia. En es e caso, se p ocede a elimina del modelo a la a iable cuyo VIF es más al o (CL), pues o que no con iene a la ho a de implemen a un modelo de eg esión lineal múl iple con 6 a iables. Una ez eliminada, se calculan de nue o los alo es de VIF, de o ma que se ob iene lo siguien e: Tabla 6.12 Valo es de VIF. Va iables VIF Mach 2.73 Wind Speed 4.06 Pi ch 5.16 Al i ude 3.35 Empuje o al 2.25 En es e caso se obse a que solamen e la a iable Pi ch supe a a la e e encia po muy poco. Sin emba go, debido a que dicha a iable iene una co elación muy al a con la a iable independien e y el alo del VIF es p ác icamen e el de e e encia, se decide deja a la a iable en el modelo, pues o que po in uición se puede pensa que es más e icien e deja la que elimina la. 6.2 Modelo p edic i o: eg esión lineal múl iple 39 De es a o ma, se ía posible la implemen ación de un modelo con las 5 a iables an e io es. Al igual que en el apa ado an e io , se segui á el p ocedimien o siguien e: 1. Toma los da os co espondien es a las 6 a iables nomb adas an e io men e y a la a iable dependien e (ángulo de a aque). 2. Implemen a odas las eg esiones lineales múl iples posibles ( odas las combinaciones de a iables independien es) de 3 a 6 a iables. Es o es: •15 eg esiones lineales con 2 a iables •20 eg esiones lineales con 3 a iables •15 eg esiones lineales con 4 a iables •6 eg esiones lineales con 5 a iables •1 eg esión lineal con 6 a iables 3. De odos los modelos an e io es se han cogido los 3 mejo es que no p esen en alo es de VIF supe io es a los de e e encia. 4. Los esul ados a ojados po dichos modelos se p esen an a con inuación. Tabla 6.13 Mé icas de e o de los 3 mejo es modelos de eg esión lineal múl iple (c uce o). Núme o de a iables Va iables R2E o absolu o medio E o cuad á ico medio 2 Mach, pi ch 0.91 0.23 0.16 2 Mach, al i ude 0.82 0.47 0.32 3 Mach, pi ch, al i ude 0.93 0.26 0.13 Tabla 6.14 Valo es de VIF pa a modelo de 2 a iables. Va iables VIF Mach 2.20 Pi ch 2.20 Tabla 6.15 Valo es de VIF pa a modelo de 2 a iables. Va iables VIF Mach 1.07 Al i ude 1.07 Tabla 6.16 Valo es de VIF pa a modelo de 3 a iables. Va iables VIF Mach 2.71 Pi ch 2.17 Al i ude 4.44 En es e caso se obse a que no es necesa io implemen a modelos con muchas a iables pa a op imiza el e o . 40 Capí ulo 6. Implemen ación de los modelos 6.3 Modelo p edic i o: eg esión simple con écnicas de Suppo Vec o Machine 6.3.1 Despegue y ascenso Pues o que en apa ados an e io es se ha comp obado que el CL es la mejo a iable a la ho a de implemen a un modelo pa a el despegue y el asecenso, en el caso de la eg esión simple con SVM solamen e se implemen a án modelos con es a a iable. Los modelos que se han implemen ado son SVM con ke nel lineal, SVM con ke nel b , SVM con ke nel polinomial de g ado 2 y SVM con ke nel polinomial de g ado 3. Los esul ados ob enidos son los siguien es: Tabla 6.17 Mé icas de e o pa a SVM (CL). Modelo R2E o absolu o medio E o cuad á ico medio Lineal 0.515 0.722 1.256 b 0.520 0.685 1.244 Polinomial g ado 2 0.531 0.771 1.215 Polinomial g ado 3 0.490 0.877 1.321 Se obse a que ningún modelo p esen a un R2 mayo que 0.6. Sin emba go, se op a á po oma el modelo que p esen a meno e o absolu o (ke nel = b ) y es udia lo en el apa ado pos e io po hace una compa ación en e és e y el modelo de eg esión simple. Se obse a que, de los cua o modelos, el que ob iene menos e o absolu o medio es el b , pe o aún así no es un buen alo como pa a conside a lo como modelo solución. A con inuación se adjun an las g á icas en las que se puede obse a en na anja los alo es eales y en azul la p edicción: Figu a 6.4 SVM ke nel lineal. 6.3 Modelo p edic i o: eg esión simple con écnicas de Suppo Vec o Machine 41 Figu a 6.5 SVM ke nel b . Figu a 6.6 SVM ke nel polinomial g ado 2. 42 Capí ulo 6. Implemen ación de los modelos Figu a 6.7 SVM ke nel polinomial g ado 3. 6.3.2 C uce o En el caso del c uce o, los modelos que se implemen a án se án con las a iables CL y Pi ch. Es posible que haya más a iables de las cuales se pueda ob ene un buen esul ado pa a un modelo simple. Sin emba go, pues o que los es udios an e io es han mos ado que el CL y el pi ch son las a iables de las que se ob ienen mejo es esul ados, sólo se u iliza án es as dos, ya que pos e io men e, en el modelo de eg esión múl iple con SVM, se in oduci án más a iables. Tabla 6.18 Mé icas de e o pa a SVM simple (CL). Modelo R2E o absolu o medio E o cuad á ico medio Lineal 0.86 0.30 0.24 b 0.88 0.27 0.21 Polinomial g ado 2 0.87 0.30 0.23 Polinomial g ado 3 0.85 0.36 0.27 Tabla 6.19 Mé icas de e o pa a SVM simple (pi ch). Modelo R2E o absolu o medio E o cuad á ico medio Lineal 0.90 0.20 0.18 b 0.96 0.73 0.16 Polinomial g ado 2 0.56 0.37 0.79 Polinomial g ado 3 -0.46 0.59 2.61 En es e caso los dos mejo es modelos (que se án los que se es udia án) son el SVM con ke nel b pa a CL y el SVM con ke nel lineal pa a el pi ch. A con inuación se adjun an las g á icas pa a c uce o: 6.3 Modelo p edic i o: eg esión simple con écnicas de Suppo Vec o Machine 43 Figu a 6.8 SVM ke nel lineal (CL). Figu a 6.9 SVM ke nel b (CL). 7 Tes ing de los mejo es modelos En es a sección lo que se ha á es es udia la e iciencia de los mejo es modelos ob enidos. Pa a ello, se oma á el mejo modelo de cada uno de los algo i mos implemen ados (pa a c uce o y despegue y ascenso) y se es udia á su p ecisión. Pa a es udia la p ecisión, se simula á un nue o uelo nunca an es in oducido en los modelos an e io es. Los da os de es e nue o uelo se án los da os pa a el es ing, mien as que los da os de los 8 uelos de los apa ados an e io es se án los da os de aining. Pa a cada uno de los modelos seleccionados, se p ocede á de la siguien e o ma: •Se c ea á la cu a de eg esión con los da os de los 8 uelos de los apa ados an e io es. •Se oma án las a iables independien es necesa ias del nue o uelo simulado ( a iables de es ing). •Con el modelo de eg esión se calcula án los ángulos de a aque es imados. • Dichos ángulos de a aque se compa a án con los ángulos de a aque eales ob enidos en el nue o uelo simulado. A con inuación, se hace una ep esen ación de algunas de las a iables del nue o uelo, pa a ene una p ime a isualización de sus condiciones. Figu a 7.1 E olución de la al i ud en despegue y ascenso. 51 52 Capí ulo 7. Tes ing de los mejo es modelos Figu a 7.2 E olución del Mach en despegue y ascenso. Figu a 7.3 E olución del ángulo de a aque en despegue y ascenso. 53 Figu a 7.4 E olución de la al i ud en c uce o. Figu a 7.5 E olución del Mach en c uce o. 54 Capí ulo 7. Tes ing de los mejo es modelos Figu a 7.6 E olución del ángulo de a aque en c uce o. Median e las g á icas se puede comp oba que se a a de un uelo que ealiza el ascenso en es amos y que las condiciones de c uce o son una al i ud de unos 32000 y una elocidad de Mach 0.75 ap oximadamen e. Po o o lado, como se puede obse a en el siguien e his og ama de ecuencias, el ángulo de a aque a ía en un ango de en e 0ºy 9ºap oxiamdamen e. Figu a 7.7 His og ama de ecuencias de ángulo de a aque. Como se ha dicho an e io men e, es e apa ado a a de compa a el alo eal del ángulo de a aque del nue o uelo simulado con el alo que el modelo p edice a pa i de los da os de dicho uelo. Pa a es udia la ce eza del ángulo de a aque que el modelo p edice, se u iliza án los siguien es pa áme os: •Po cen a je :P=100 ·AOA eal AOAp ed •E o absolu o :Ea =|AOA eal −AOAp ed| •E o ela i o :E =100 ·Ea AOAp ed =|100 −P| Pa a isualiza es as mé icas de e o , se ha á uso de la he amien a "desc ibe()", que iene como ou pu la media, el máximo, el mínimo, la des iación ípica y los es p ime os cuan iles de cada una de las a iables. 7.1 Despegue y ascenso 55 Po o o lado, ambién es con enien e es ablece un alo mínimo de e o absolu o a la ho a de oma la a iable p edicha como álida. Es deci , si el alo absolu o de la di e encia en e la a iable p edicha y la a iable eal es meno que dicho alo mínimo, se conside a á que el modelo p edice un ángulo co ec o. De es a o ma, se oma á como alo mínimo Eamin =0.25 . Es e alo se oma á como e e encia al calcula el po cen aje de acie os que iene cada modelo. Una ez explicado el p ocedimien o pa a es udia la e iciencia de los modelos, se p ocede a expone es os esul ados, como en casos an e io es, sepa ados en despegue y ascenso y c uce o. Con iene ano a que ambién se adjun a, pa a cada uno de ellos, una g á ica con 30 mues as omadas al aza en las que se obse a el alo eal y el p edicho po el modelo. 7.1 Despegue y ascenso 7.1.1 Modelo 1: Reg esión simple El mejo modelo en es e caso es una eg esión polinomial simple de g ado 3 con CL como a iable indepen- dien e. Los esul ados que a oja es e modelo son bas an e pésimos. Sin emba go, es con enien e expone los ya que ayuda án a ene una isión gene al de cómo han mejo ado los modelos con la complejidad de los mismos. Tabla 7.1 Modelo de eg esión polinómica de g ado 3 (CL) Po cen aje de acie os: 5.93%. Po cen aje E o Absolu o E o ela i o Media 68.04 0.79 37.39 Des iación ípica 42.89 0.43 38.25 Mínimo 0.063 0.00 0.04 P ime cuan il 67.56 0.43 9.49 Segundo cuan il 73.43 0.81 26.6 Te ce cuan il 104.71 0.95 32.51 Máximo 907.03 5.24 807.03 Figu a 7.8 Compa ación AOA eal y AOA del modelo pa a 30 mues as. 56 Capí ulo 7. Tes ing de los mejo es modelos 7.1.2 Modelo 2: Reg esión lineal múl iple En es e caso el mejo modelo de eg esión lineal múl iple con Mach, Wind Speed, al i ude, pm media y CL como a iables independien es. Tabla 7.2 Modelo de eg esión lineal múl iple (Mach, Wind Speed, al i ude, pm media, CL) Po cen aje de acie os: 46.52%. Po cen aje E o Absolu o E o ela i o Media 86.90 0.73 21.44 Des iación ípica 155.16 0.86 154.22 Mínimo -5964.88 0.00 -6064.88 P ime cuan il 86.05 0.12 3.56 Segundo cuan il 98.61 0.27 14.11 Te ce cuan il 133.41 1.25 53.31 Máximo 4173.95 6.10 4073.95 Figu a 7.9 Compa ación AOA eal y AOA del modelo pa a 30 mues as. 7.1.3 Modelo 3: Reg esión simple con écnicas de SVM En es e caso el mejo modelo es un modelo con ke nel b y con CL como a iable independien e. Tabla 7.3 Modelo de eg esión simple con SVM de ke nel b (CL) Po cen aje de acie os: 29.78%. Po cen aje E o Absolu o E o ela i o Media 72.95 0.87 46.08 Des iación ípica 168.24 0.61 164.05 Mínimo 0.05 0.00 0.03 P ime cuan il 56.13 0.20 16.47 Segundo cuan il 70.17 1.12 29.87 Te ce cuan il 103.83 1.26 44.23 Máximo 6633.65 5.80 6533.65 7.1 Despegue y ascenso 57 Figu a 7.10 Compa ación AOA eal y AOA del modelo pa a 30 mues as. 7.1.4 Modelo 4: Reg esión múl iple con écnicas de SVM En es e caso se ha decidido que el mejo modelo es el de las siguien es 5 a iables con ke nel lineal: Mach, Wind Speed, Pi ch, Al i ude, pm media. Tabla 7.4 Modelo de eg esión múl iple con SVM de ke nel lineal (Mach, wind speed, pi ch, al i ude, pm media) Po cen aje de acie os: 46.87%. Po cen aje E o Absolu o E o ela i o Media 106.14 0.95 46.05 Des iación ípica 1190.70 1.103 1189.82 Mínimo -71666.12 0.00 -71766.12 P ime cuan il 85.03 0.21 8.01 Segundo cuan il 106.89 0.30 42.49 Te ce cuan il 150.07 1.64 92.69 Máximo 59023.06 6.57 58923.06 58 Capí ulo 7. Tes ing de los mejo es modelos Figu a 7.11 Compa ación AOA eal y AOA del modelo pa a 30 mues as. 7.1.5 Modelo 5: Reg esión múl iple median e Redes Neu onales Las a iables de es e modelo son: Mach, Wind Speed, Al i ud, Wind Di ec ion. Tabla 7.5 Modelo de eg esión múl iple con Redes Neu onales (Mach, wind speed, pi ch, al i ude) Po cen aje de acie os: 42.27%. Po cen aje E o Absolu o E o ela i o Media 75.28 0.92 48.64 Des iación ípica 296.20 0.88 293.22 Mínimo -2979.22 0.00 -3079.22 P ime cuan il 53.16 0.07 13.89 Segundo cuan il 68.36 0.66 33.50 Te ce cuan il 90.90 1.76 46.92 Máximo 13456.72 5.82 13356.72 Figu a 7.12 Compa ación AOA eal y AOA del modelo pa a 30 mues as. 7.2 C uce o 59 7.2 C uce o 7.2.1 Modelo 1: Reg esión simple El mejo modelo de odos es una eg esión lineal simple con CL como a iable independien e. Tabla 7.6 Modelo de eg esión lineal simple (CL) Po cen aje de acie os: 81.76%. Po cen aje E o Absolu o E o ela i o Media 110.80 0.20 10.80 Des iación ípica 1.20 0.11 1.20 Mínimo 106.66 0.10 6.66 P ime cuan il 110.23 0.14 10.23 Segundo cuan il 111.06 0.15 11.06 Te ce cuan il 111.51 0.21 11.51 Máximo 115.16 0.76 15.16 Figu a 7.13 Compa ación AOA eal y AOA del modelo pa a 30 mues as. 7.2.2 Modelo 2: Reg esión lineal múl iple En es e caso el mejo modelo iene 2 a iables independien es: Mach y pi ch. Tabla 7.7 Modelo de eg esión lineal múl iple (Mahc, pi ch) Po cen aje de acie os: 90.32%. Po cen aje E o Absolu o E o ela i o Media 99.89 0.16 6.70 Des iación ípica 8.35 0.26 4.97 Mínimo 66.83 0.00 0.00 P ime cuan il 94.58 0.04 2.69 Segundo cuan il 100.70 0.12 5.46 Te ce cuan il 106.20 0.20 10.50 Máximo 113.29 2.80 33.17 66 Capí ulo 8. E olución de los modelos con la can idad de da os Figu a 8.7 Modelo 2: eg esión lineal múl iple. Figu a 8.8 Modelo 3: eg esión simple con SVM. En es e caso se obse a que, pa a los es modelos, la e iciencia se man iene p ác icamen e cons an e a pa i de los 25000 da os ap oximadamen e. Po o a pa e, al igual que en el caso an e io , los modelos más simples (uno y dos) no expe imen an un aumen o del iempo de ejecución an acusado como el modelo 3, el cuál es mucho más complejo que los dos an e io es. 9 Aplicación del modelo a di e en es casos En es a úl ima sección se p e ende c ea di e en es si uaciones de allo en los senso es de ángulo de a aque y comp oba si el modelo implemen ado sol en a ía el p oblema o no. Pa a ello, se a a u iliza el mismo uelo simulado que se u ilizó en la sección 7. Se u iliza án los da os de es e uelo pues o que, como se acla ó an e io men e, el modelo no los ha u ilizado pa a en ena se, po an o, son da os comple amen e nue os. El p ocedimien o que se segui á se á el siguien e: 1. Se sepa a án los da os pa a los casos de despegue y ascenso y de c uce o, pues o que los modelos pa a es os dos amos son di e en es. 2. Se oma án mues as elegidas a conciencia del se de da os del uelo mencionado an e io men e. Pa a elegi dichas mues as, se end án en cuen a las di e en es a iables de la misma, de o ma que se p e ende á que haya a iedad de condiciones. Es deci , se p e ende que haya mues as con di e en e Mach, al i ud, pi ch... 3. Se modi ica án a conciencia los da os de los es senso es de ángulo de a aque, de o ma que se c ea án di e sas si uaciones de allo. 4. Se some e án odas las mues as al algo i mo que se explica a con inuación y se ob end án los esul ados. 5. Se expond án los esul ados en una abla explica i a. En cuan o al algo i mo implemen ado, es un algo i mo basado en el diag ama de lujo que se expuso en la sección 2. Como se ha explicado an e io men e, se oma 0.25 como el e o absolu o máximo que puede come e el modelo. De es a o ma, cuando el esul ado a ojado po el modelo y el alo que mide un senso de ángulo de a aque se di e encien en menos de 0.25, se in e p e a á como que ambos mé odos a ojan el mismo esul ado. Sin emba go, el esul ado que se oma á se á siemp e el medido po el senso , ya que de es a o ma podemos co egi los e o es más al os del modelo (los que se ap oximan a 0.25). Como ambién es necesa io oma un alo pa a el cuál los alo es medidos po los senso es son di e en es y no se ienen da os eales, se oma á igualmen e 0.25 como di e encia máxima pa a decidi si dos senso es es án a ojando esul ados di e en es. Como se ap ecia en el diag ama de lujo de la sección 2, pueden da se 6 escena ios. A con inuación, se busca án a conciencia mues as que p o oquen cada uno de es os escena ios y se ha án cie as obse aciones. Cabe des aca aquí que no es posible medi el po cen aje en el que se da cada uno de es os escena ios ya que el allo del senso AOA es in oducido a conciencia pa a p o oca los, debido a que no se ienen da os eales o simulados en los que el senso alle. 9.1 Despegue y ascenso 9.1.1 Caso 1 y 2: odos los senso es uncionan En caso de que odos los senso es uncionan, pod ía da se que el modelo a oje un alo que coincida con el de los senso es (caso 1) o, en caso con a io, que no coincida (caso 2). 67 68 Capí ulo 9. Aplicación del modelo a di e en es casos Tabla 9.1 Caso 1. AOA1 AOA2 AOA3 AOA modelo AOA e ec i o 3.362 3.381 3.365 3.29 3.362 Tabla 9.2 Caso 2. AOA1 AOA2 AOA3 AOA modelo AOA e ec i o 6.166 6.212 6.123 4.073 6.166 Tan o en el caso 1 como en el caso 2, no hab á ningún p oblema pues o que la edundancia de los senso es hace que se pueda asegu a que el da o es co ec o (suponemos como muy imp obable que los 3 senso es allen a ojando el mismo alo ). En cuan o al modelo, el p oblema se ía el caso 2, ya que alla en el esul ado. Sin emba go, no end ía epe cusión a la ho a de oma el alo . 9.1.2 Caso 3, 4 y 5: un senso a oja un alo di e en e y dos senso es a ojan un alo igual En es e caso, se supond á que el senso 2 a oja un alo di e en e mien as que los senso es 1 y 3 a ojan el mismo alo . En es e caso, pod ía ocu i que el esul ado del modelo sea igual al del senso 2 (caso 3), que sea igual al del senso 1 y 3 (caso 4) o que no sea igual a ninguno (caso 5). Tabla 9.3 Caso 3. AOA1 AOA2 AOA3 AOA modelo AOA e ec i o 5.172 2.280 5.352 2.219 2.280 Tabla 9.4 Caso 4. AOA1 AOA2 AOA3 AOA modelo AOA e ec i o 3.474 4.012 3.494 3.374 3.474 Tabla 9.5 Caso 5. AOA1 AOA2 AOA3 AOA modelo AOA e ec i o 4.980 4.002 4.975 3.691 - En los casos 3 y 4 el esul ado del modelo es de g an u ilidad ya que pe mi e sabe cuál de los senso es es á uncionando co ec amen e. Sin emba go, en el caso 5, el modelo es a á p obablemen e allando, po lo que no puede se de u ilidad a la ho a de decidi qué senso es el que unciona. En es e caso, el pilo o debe á usa su in uición pa a oma como e dade o el alo de los senso es o no. Cabe aquí des aca que el obje i o y la g an en aja de es e es udio es e i a es e ipo de si uaciones. Como se ha is o an e io men e, los modelos implemen ados pa a despegue y a e izaje pod ían e i a las en casi un 50% mien as que los modelos de c uce o las e i a ían en más de un 95%. También cabe des aca que la e iciencia de es os modelos puede mejo a conside ablemen e ya sea con da os o con cambios en los mismos modelos. 9.2 C uce o 69 9.1.3 Caso 6 y 7: odos los senso es dan un alo di e en e En es e caso, odos los senso es dan un alo di e en e, po lo que puede ocu i que el modelo a oje un esul ado que sea igual a alguno de los senso es (caso 6) o que el modelo no coincida con ninguno (caso 7). Tabla 9.6 Caso 6. AOA1 AOA2 AOA3 AOA modelo AOA e ec i o 6.205 5.348 4.002 5.253 5.348 Tabla 9.7 Caso 7. AOA1 AOA2 AOA3 AOA modelo AOA e ec i o 1.256 2.650 2.003 0.506 - En el caso 6, el modelo se ía de g an ayuda pa a iden i ica que el ángulo de a aque co ec o es el que aloja el senso 2, mien as que, en el caso 7, de nue o se ía el pilo o el que end ía que guia se po su in uición y decidi si oma como co ec o alguno de los alo es o no. 9.2 C uce o En el caso del c uce o los azonamien os son exac amen e los mismos que en el despegue y ascenso, solo que el núme o de acie os es mayo . Po an o, no se adjun a án ablas de esul ados pa a es e amo ya que a ojan esul ados en los que el algo i mo se compo a ía de o ma idén ica al caso an e io . 9.3 Conclusiones Como ya se ha expues o an e io men e, la implemen ación del modelo no hace que el mé odo de medición del ángulo de a aque sea in alible pe o sí ayuda conside ablemen e a co egi e o es como los is os en los casos 3, 4 y 6. Cabe epe i aquí que la capacidad del modelo de co egi esos e o es depende de su e iciencia. En el caso del c uce o se pod ía co egi más del 95% de es os casos mien as que en el despegue y ascenso se ha llegado solo a la ci a del 47%. Sin emba go, como se ha dicho an e io men e, el hecho de aumen a el núme o de da os, hace nue as il aciones de és os, cambia el p oceso de da a cleaning o, sin más, implemen a o os ipos de modelos pod ía mejo a conside ablemen e la ci a ob enida en es e es udio. 10 Conclusiones y líneas u u as 10.1 Conclusiones En es a úl ima sección se p e ende hace un esumen de las conclusiones que se han ido ob eniendo a lo la go de la memo ia. En p ime luga , con iene eco da que los esul ados que se han ob enido pa a c uce o (e ec i idad de más del 95%) son mucho mejo es que los que se han ob enido en despegue y ascenso (e ec i idad de casi el 50%). Po an o se pod ía deci que en c uce o el modelo es casi comple amen e e ec i o, es deci , en p ác icamen e odas las si uaciones en las que los senso es AOA allen, el modelo co egi á el e o . Sin emba go, en el caso de despegue y ascenso, es o sólo ocu i á en ap oximadamen e la mi ad de las ocasiones. Aún así, el modelo pod ía se en able de ins ala , ya que no equie e ningún Ha dwa e que inc emen e el cos e y pod ía mejo a se. En cuan o a es o úl imo, las o mas de mejo a lo se a a á en líneas u u as. En cuan o a los modelos, se ha obse ado que, pa a el caso del c uce o, la eg esión simple con écnicas de SVM y con CL como a iable independien e es su icien e pa a consegui buenos esul ados. En el caso de despegue y ascenso, el modelo que ha conseguido mejo es esul ados (mayo po cen aje de acie os en el es ing) ha sido la eg esión lineal múl iple. Sin emba go, hay o os modelos (como las edes neu onales o el SVM múl iple) que han ob enido un po cen aje de acie os muy ce cano al de la eg esión lineal múl iple y además se ha obse ado que la des iación ípica de es os modelos es meno que en la lineal múl iple. Es o pod ía conduci a la conclusión de que es os modelos más complejos pod ían supe a los esul ados ob enidos si se ealizan cie os cambios, los cuales se a a án en el apa ado de líneas u u as. También con iene habla en es a sección sob e los iempos de ejecución. Se obse a que los modelos más simples ( eg esiones simples y múl iples) equie en un iempo de ejecución que es ín imo, mien as que los modelos más complejos (SVM y edes neu onales) equie en un iempo de ejecución que es de a ios ó denes de magni ud mayo que en el caso de los modelos simples. Es o debe ene se en cuen a a la ho a de elegi el modelo, ya que, como se necesi an los esul ados a iempo eal, no puede implemen a se un modelo con un iempo de ejecución demasiado g ande. También se obse a que, mien as que, en los modelos más simples, el iempo de ejecución no cambia con la can idad de da os, en los modelos más complejos si se obse a un aumen o conside able. Finalmen e, ambién cabe des aca que se ha obse ado que el único modelo que pod ía segui mejo ando con la can idad de da os es el modelo de edes neu onales. 10.2 Líneas u u as Como es e es udio se co esponde a un p oyec o de inal de ca e a. No es posible ex ende lo demasiado debido a los lími es de iempo y con enido eque idos. El hecho de que es e es udio haya pa ido de 0 y no haya omado ningún esul ado de ningún es udio simila hace que los esul ados mos ados sean unas p ime as ap oximaciones. Es deci , se pod ía a anza y p o undiza mucho más. El obje o de es e apa ado es da unas pau as de cómo se pod ía segui mejo ando los esul ados. En p ime luga , cabe eco da que el es udio se ha ealizado pa a los amos de despegue y ascenso y de c uce o. Es o se debe a que esul aba muy complicado simula el a e izaje de una mane a ap oximada a la ealidad (se necesi a mucha expe iencia con el simulado pa a ello). Po an o, una o ma de hace es e 71 72 Capí ulo 10. Conclusiones y líneas u u as es udio más comple o se ía ob ene da os de descenso y a e izaje y ealiza el p ocedimien o que se ha seguido con los da os de es a memo ia. En elación a los da os de la simulación, ambién pod ía ayuda bas an e a mejo a los esul ados el hecho de ealiza simulaciones que se ace quen más a la ealidad (pe sona que usa el simulado con más expe iencia) o incluso con da os eales. Es o ayuda ía a que los da os p obablemen e sean más homogéneos, ya que el uelo segui ía las pau as ma cadas po ley ( elocidad, al u a, iempos de despegue y a e izaje...) y los amos de uelo en los que no es posible u iliza el pilo o au omá ico se ían mucho más con olados. Po o a pa e, o a o ma de mejo a los esul ados se ía p oba los modelos u ilizados con di e en es pa áme os (ke nel, i e aciones...) o di ec amen e p oba o o ipo de modelos de eg esión. En la misma lib a ía de Sciki Lea n hay más modelos que no se han u ilizado. El hecho de p oba no quie e deci que se ayan a ob ene ca egó icamen e mejo es esul ados. Sin emba go, se cub i ía un ango más amplio de posibilidades, en e las cuales pod ía es a la óp ima. Finalmen e, algo que pod ía mejo a conside ablemen e los esul ados se ía una nue a il ación de da os. En es a memo ia se ha obse ado cómo, al elimina da os co espondien es a ángulos de a aque muy g andes y poco ecuen es, el modelo mejo aba bas an e. Po an o, o os p ocedimien os simila es pod ían ayuda a la mejo a. Además, un nue o p oceso de il ación de da os en el que se elimine can idad de da os y se dejen solamen e aquellos da os que op imizan el uncionamien o del modelo pod ía mejo a , además de los esul ados, la e ec i idad de los algo i mos (po ejemplo, el iempo de ejecución). Algunas o mas de ealiza es os p ocesos pod ían se la in uición (median e isualizaciones y p uebas se a obse ando qué da os son los más ele an es) o la u ilización de algo i mos es ocás icos (como los algo i mos gené icos) que ealicen de o ma au omá ica una explo ación sob e qué da os son los más e ec i os pa a ealiza . Además, el hecho de conoce qué da os con iene in oduci en el modelo, pod ía se bas an e e ec i o a la ho a de implemen a lo y que siga ap endiendo con los mismos da os de los uelos en los que ha uncionado. 11 Anexo de códigos 11.1 Ca ga de da os #!/us /bin/en py hon # coding: u -8 # In[1]: impo pandas as pd impo os # In[67]: mainpa h = ".. da os ascenso y c uce o" ilename1 = "Da a1.xlsx" da a1 = pd. ead_excel(mainpa h + "/" + ilename1) ilename2 = "Da a2.xlsx" da a2 = pd. ead_excel(mainpa h + "/" + ilename2) ilename3 = "Da a3.xlsx" da a3 = pd. ead_excel(mainpa h + "/" + ilename3) ilename4 = "Da a4.xlsx" da a4 = pd. ead_excel(mainpa h + "/" + ilename4) ilename5 = "Da a5.xlsx" da a5 = pd. ead_excel(mainpa h + "/" + ilename5) ilename6 = "Da a6.xlsx" da a6 = pd. ead_excel(mainpa h + "/" + ilename6) ilename7 = "Da a7.xlsx" da a7 = pd. ead_excel(mainpa h + "/" + ilename7) ilename8 = "Da a7.xlsx" da a8 = pd. ead_excel(mainpa h + "/" + ilename8) 73 74 Capí ulo 11. Anexo de códigos # In[2]: mainpa h = ".. da os ascenso y c uce o" ilename9 = "Da a9.xlsx" da a9 = pd. ead_excel(mainpa h + "/" + ilename9) # In[68]: a iables=[’mues a’,’_ o l,_ ime’,’__VIS,_ is’,’_Vind,_kias’,’_Vind,_keas’,’ V ue,_k as’,’V ue,_k gs’,’_Vind,__mph’,’V ue,mphas’,’V ue,mphgs’,’_Mach , a io’,’_wind,speed’,’_wind,__di ’,’_dens, a io’,’ba o_,_inHG’,’_ele ,_ su ’,’ail n,_su ’,’ udd ,_su ’,’____M,_ lb’,’____L,_ lb’,’____N,_ lb ’,’____Q, ad/s’,’____P, ad/s’,’____R, ad/s’,’pi ch,__deg’,’_ oll,__deg’,’ hding,_ ue’,’hding,__mag’,’alpha,__deg’,’_be a,__deg’,’hpa h,__deg’,’ pa h ,__deg’,’_slip,__deg’,’__la ,__deg’,’__lon,__deg’,’__al ,__ind’,’ h s ,_1, lb’,’ h s ,_2,lb’,’ pm_1,engin’,’ pm_2,engin’,’_li ,___lb’,’_d ag,___lb ’,’__L/D, a io’,’___cl, o al’,’___cd, o al’,’__L/D, a io’,’ele 1,__deg’,’ ud 1,__deg’,’wing1,_li ’,’wing1,_li ’,’wing2,_li ’,’wing2,_li ’,’wing 3,_li ’,’wing3,_li ’,’wing1,_d ag’,’wing1,_d ag’,’wing2,_d ag’,’wing2,_ d ag’,’wing3,_d ag’,’wing3,_d ag’,’hs ab,_li ’,’hs ab,_li ’,’ s b2,_li ’,’hs ab,_d ag’,’hs ab,_d ag’,’ s b2,_d ag’] c uce o=[0,28000,30000,28000,28000,35000,32000,37000,36000] da a1=da a1[ a iables] da a2=da a2[ a iables] da a3=da a3[ a iables] da a4=da a4[ a iables] da a5=da a5[ a iables] da a6=da a6[ a iables] da a7=da a7[ a iables] da a8=da a8[ a iables] aux1=da a1.loc[(da a1[’__al ,__ind’]>c uce o[1]*0.99) & (da a1[’__al ,__ind’]< c uce o[1]*1.01),’mues a’] da a1A = da a1[da a1[’mues a’]<aux1.min()] da a1C = da a1[da a1[’mues a’]>aux1.min()] aux2=da a2.loc[(da a2[’__al ,__ind’]>c uce o[2]*0.99) & (da a2[’__al ,__ind’]< c uce o[2]*1.01),’mues a’] da a2A = da a2[da a2[’mues a’]<aux2.min()] da a2C = da a2[da a2[’mues a’]>aux2.min()] aux3=da a3.loc[(da a3[’__al ,__ind’]>c uce o[3]*0.99) & (da a3[’__al ,__ind’]< c uce o[3]*1.01),’mues a’] da a3A = da a3[da a3[’mues a’]<aux3.min()] da a3C = da a3[da a3[’mues a’]>aux3.min()] aux4=da a4.loc[(da a4[’__al ,__ind’]>c uce o[4]*0.99) & (da a1[’__al ,__ind’]< c uce o[4]*1.01),’mues a’] da a4A = da a4[da a4[’mues a’]<aux4.min()] da a4C = da a4[da a4[’mues a’]>aux4.min()] 11.1 Ca ga de da os 75 aux5=da a5.loc[(da a5[’__al ,__ind’]>c uce o[5]*0.99) & (da a5[’__al ,__ind’]< c uce o[5]*1.01),’mues a’] da a5A = da a5[da a5[’mues a’]<aux5.min()] da a5C = da a5[da a5[’mues a’]>aux5.min()] aux6=da a6.loc[(da a6[’__al ,__ind’]>c uce o[6]*0.99) & (da a6[’__al ,__ind’]< c uce o[6]*1.01),’mues a’] da a6A = da a6[da a6[’mues a’]<aux6.min()] da a6C = da a6[da a6[’mues a’]>aux6.min()] aux7=da a7.loc[(da a7[’__al ,__ind’]>c uce o[7]*0.99) & (da a7[’__al ,__ind’]< c uce o[7]*1.01),’mues a’] da a7A = da a7[da a7[’mues a’]<aux7.min()] da a7C = da a7[da a7[’mues a’]>aux7.min()] aux8=da a8.loc[(da a8[’__al ,__ind’]>c uce o[8]*0.99) & (da a8[’__al ,__ind’]< c uce o[8]*1.01),’mues a’] da a8A = da a8[da a8[’mues a’]<aux8.min()] da a8C = da a8[da a8[’mues a’]>aux8.min()] da a1C. ese _index(d op=T ue, inplace=T ue) mues a1=pd.Se ies( ange(0,da a1C.shape[0])) da a1C[’mues a’]=mues a1 da a2C. ese _index(d op=T ue, inplace=T ue) mues a2=pd.Se ies( ange(0,da a2C.shape[0])) da a2C[’mues a’]=mues a2 da a3C. ese _index(d op=T ue, inplace=T ue) mues a3=pd.Se ies( ange(0,da a3C.shape[0])) da a3C[’mues a’]=mues a3 da a4C. ese _index(d op=T ue, inplace=T ue) mues a4=pd.Se ies( ange(0,da a4C.shape[0])) da a4C[’mues a’]=mues a4 da a5C. ese _index(d op=T ue, inplace=T ue) mues a5=pd.Se ies( ange(0,da a5C.shape[0])) da a5C[’mues a’]=mues a5 da a6C. ese _index(d op=T ue, inplace=T ue) mues a6=pd.Se ies( ange(0,da a6C.shape[0])) da a6C[’mues a’]=mues a6 da a7C. ese _index(d op=T ue, inplace=T ue) mues a7=pd.Se ies( ange(0,da a7C.shape[0])) da a7C[’mues a’]=mues a7 da a8C. ese _index(d op=T ue, inplace=T ue) mues a8=pd.Se ies( ange(0,da a8C.shape[0])) da a8C[’mues a’]=mues a8 # In[3]: 82 Capí ulo 11. Anexo de códigos mainpa h = ".. da os ascenso y c uce o" ilename = "Da aA_cleaned.xlsx" da a = pd. ead_excel(mainpa h + "/" + ilename) # In[3]: da a.shape # In[4]: da a.columns. alues # ### En es e apa ado amos a c ea un subse de da os con las columnas más ele an es pa a isualiza # In[5]: da ai=da a[[’_Mach, a io’,’_ele ,_su ’,’ail n,_su ’,’ udd ,_su ’, ’_wind, speed’,’pi ch,__deg’, ’_ oll,__deg’, ’_be a,__deg’, ’__al ,__ind’,’___cl, o al’,’___cd, o al’, ’alpha,__deg’,’alpha,__deg1’, ’alpha,__deg2’]] da ai[’empuje o al’]=da a[’ h s ,_1,lb’]+da a[’ h s ,_2,lb’] da ai[’ pm media’]=(da a[’ pm_1,engin’]+da a[’ pm_1,engin’])/2 da ai[’wind di ec ion*’]=da a[’_wind,__di ’]-da a[’hding,_ ue’] da ai = da ai. ename(columns={’pi ch,__deg’:’pi ch’,’_Mach, a io’:’Mach’,’_ele ,_su ’:’ele a o su ace’,’ail n,_su ’:’aile on su ace’,’ udd ,_su ’:’ udde su ace’, ’_wind,speed’:’wind speed’,’pi ch,__deg’:’pi ch’, ’_ oll ,__deg’:’ oll’, ’_be a,__deg’:’slippage’, ’__al ,__ind’:’al i ude’,’___cl, o al’:’CL’,’___cd, o al’:’CD’, ’alpha,__deg’:’AOA1’,’alpha,__deg1’:’AOA2’, ’alpha,__deg2’:’AOA3’}) da ai.columns. alues # In[6]: aux1=da ai[[’Mach’, ’ele a o su ace’, ’aile on su ace’, ’ udde su ace’,’ wind speed’, ’pi ch’, ’ oll’, ’slippage’, ’al i ude’]] aux1.desc ibe() # In[7]: 11.3 Visualización de da os 83 aux2=da ai[[’CL’, ’CD’,’AOA1’, ’AOA2’, ’AOA3’, ’empuje o al’, ’ pm media’,’ wind di ec ion*’]] aux2.desc ibe() # In[8]: da ai.d ypes # In[9]: co = da ai.co () ge _ipy hon(). un_line_magic(’ma plo lib’, ’inline’) pl . igu e( igsize=(12,10)) sns.hea map(co , linewid h=0.5,anno =T ue,cmap="RdBu"); # In[10]: da a.plo (kind="sca e ", x=’alpha,__deg’, y=’___cd, o al’) # ### His og amas de ecuencias # In[11]: k = in (np.ceil(1+np.log2(3333))) pl .his (da ai["AOA1"], bins = k) #bins = [0,30,60,...,200] pl .xlabel("Ángulo de a aque") pl .ylabel("F ecuencia") pl . i le("His og ama de ecuencias del ángulo de a aque") # In[29]: pl .boxplo (da a["alpha,__deg"]) pl .ylabel("Ángulo de a aque") pl . i le("Boxplo de ángulo de a aque") # In[30]: k = in (np.ceil(1+np.log2(3333))) pl .his (da a["_Mach, a io"], bins = k) #bins = [0,30,60,...,200] pl .xlabel("Mach") pl .ylabel("F ecuencia") pl . i le("His og ama del Mach") 84 Capí ulo 11. Anexo de códigos # Hay que elimina odas las ilas de da os de da aA en las que Mach=0, ya que és as se co esponden con los momen os p e ios al despegue. # In[ ]: 11.3.2 C uce o #!/us /bin/en py hon # coding: u -8 # In[1]: impo pandas as pd impo os impo numpy as np impo ma plo lib.pyplo as pl impo seabo n as sns # In[2]: mainpa h = ".. da os ascenso y c uce o" ilename = "Da aC_cleaned.xlsx" da a = pd. ead_excel(mainpa h + "/" + ilename) # In[3]: da a.shape # In[4]: da a.columns. alues # ### En es e apa ado amos a c ea un subse de da os con las columnas más ele an es pa a isualiza # In[5]: da ai=da a[[’_Mach, a io’,’_ele ,_su ’,’ail n,_su ’,’ udd ,_su ’, ’_wind, speed’,’pi ch,__deg’, ’_ oll,__deg’, ’_be a,__deg’, ’__al ,__ind’,’___cl, o al’,’___cd, o al’, ’alpha,__deg’,’alpha,__deg1’, ’alpha,__deg2’]] da ai[’empuje o al’]=da a[’ h s ,_1,lb’]+da a[’ h s ,_2,lb’] da ai[’ pm media’]=(da a[’ pm_1,engin’]+da a[’ pm_1,engin’])/2 da ai[’wind di ec ion*’]=da a[’_wind,__di ’]-da a[’hding,_ ue’] da ai = da ai. ename(columns={’pi ch,__deg’:’pi ch’,’_Mach, a io’:’Mach’,’_ele ,_su ’:’ele a o su ace’,’ail n,_su ’:’aile on su ace’,’ udd ,_su ’:’ 11.3 Visualización de da os 85 udde su ace’, ’_wind,speed’:’wind speed’,’pi ch,__deg’:’pi ch’, ’_ oll ,__deg’:’ oll’, ’_be a,__deg’:’slippage’, ’__al ,__ind’:’al i ude’,’___cl, o al’:’CL’,’___cd, o al’:’CD’, ’alpha,__deg’:’AOA1’,’alpha,__deg1’:’AOA2’, ’alpha,__deg2’:’AOA3’}) da ai.columns. alues # In[6]: aux1=da ai[[’Mach’, ’ele a o su ace’, ’aile on su ace’, ’ udde su ace’,’ wind speed’, ’pi ch’, ’ oll’, ’slippage’, ’al i ude’]] aux1.desc ibe() # In[7]: aux2=da ai[[’CL’, ’CD’,’AOA1’, ’AOA2’, ’AOA3’, ’empuje o al’, ’ pm media’,’ wind di ec ion*’]] aux2.desc ibe() # In[8]: da ai.d ypes # In[9]: co = da ai.co () ge _ipy hon(). un_line_magic(’ma plo lib’, ’inline’) pl . igu e( igsize=(12,10)) sns.hea map(co , linewid h=0.5,anno =T ue,cmap="RdBu"); # In[8]: da a.plo (kind="sca e ", x=’alpha,__deg’, y=’___cl, o al’) # In[9]: da a.plo (kind="sca e ", x=’alpha,__deg’, y=’___cd, o al’) # ### His og amas de ecuencias 86 Capí ulo 11. Anexo de códigos # In[10]: k = in (np.ceil(1+np.log2(3333))) pl .his (da ai["AOA1"], bins = k) #bins = [0,30,60,...,200] pl .xlabel("Ángulo de a aque") pl .ylabel("F ecuencia") pl . i le("His og ama de ecuencias del ángulo de a aque") # In[12]: pl .boxplo (da a["alpha,__deg"]) pl .ylabel("Ángulo de a aque") pl . i le("Boxplo de ángulo de a aque") # In[13]: k = in (np.ceil(1+np.log2(3333))) pl .his (da a["_Mach, a io"], bins = k) #bins = [0,30,60,...,200] pl .xlabel("Mach") pl .ylabel("F ecuencia") pl . i le("His og ama del Mach") # In[ ]: 11.4 Fea u e selec ion 11.4.1 Despegue y ascenso #!/us /bin/en py hon # coding: u -8 # In[1]: impo pandas as pd impo os impo numpy as np impo ma plo lib.pyplo as pl om sklea n.da ase s impo load_digi s om sklea n. ea u e_selec ion impo Selec Pe cen ile,Selec Fp , Selec KBes , _classi , _ eg ession om sklea n. ea u e_selec ion impo RFE om sklea n.s m impo SVR om sklea n.linea _model impo Linea Reg ession om sklea n.p ep ocessing impo PolynomialFea u es # In[2]: 11.4 Fea u e selec ion 87 mainpa h = ".. da os ascenso y c uce o" ilename = "Da aA_cleaned.xlsx" da a = pd. ead_excel(mainpa h + "/" + ilename) # In[3]: da ai=da a[[’_Mach, a io’,’_ele ,_su ’,’ail n,_su ’,’ udd ,_su ’, ’_wind, speed’,’pi ch,__deg’, ’_ oll,__deg’, ’_be a,__deg’, ’__al ,__ind’,’___cl, o al’,’___cd, o al’, ’alpha,__deg’,’alpha,__deg1’, ’alpha,__deg2’]] da ai[’empuje o al’]=da a[’ h s ,_1,lb’]+da a[’ h s ,_2,lb’] da ai[’ pm media’]=(da a[’ pm_1,engin’]+da a[’ pm_1,engin’])/2 da ai[’winddi ec ion’]=da a[’_wind,__di ’]-da a[’hding,_ ue’] da ai = da ai. ename(columns={’pi ch,__deg’:’pi ch’,’_Mach, a io’:’Mach’,’_ele ,_su ’:’ele a o su ace’,’ail n,_su ’:’aile on su ace’,’ udd ,_su ’:’ udde su ace’, ’_wind,speed’:’windspeed’,’pi ch,__deg’:’pi ch’, ’_ oll,__ deg’:’ oll’, ’_be a,__deg’:’slippage’, ’__al ,__ind’:’al i ude’,’___cl, o al’:’CL’,’___cd, o al’:’CD’, ’alpha,__deg’:’AOA1’,’alpha,__deg1’:’AOA2’, ’alpha,__deg2’:’AOA3’}) da ai=da ai.sample( ac=1). ese _index(d op=T ue) da ai.shape # In[4]: de clean_da ase (d ): asse isins ance(d , pd.Da aF ame), "d needs o be a pd.Da aF ame" d .d opna(inplace=T ue) indices_ o_keep = ~d .isin([np.nan, np.in , -np.in ]).any(1) e u n d [indices_ o_keep].as ype(np. loa 64) clean_da ase (da ai) da ai.head() # In[5]: y=da ai.AOA1 X=da ai.d op([’AOA1’,’AOA2’,’AOA3’],axis=1) columnas = lis (X.columns. alues) X.shape # # Selec Pe cen ile ( _classi ) 88 Capí ulo 11. Anexo de códigos # h ps://sciki -lea n.o g/s able/modules/gene a ed/sklea n. ea u e_selec ion. Selec Pe cen ile.h ml#sklea n. ea u e_selec ion.Selec Pe cen ile # In[6]: seleccionadas= Selec Pe cen ile(pe cen ile=50). i (X, y) a ib = seleccionadas.ge _suppo () a ibu os = [columnas[i] o i in lis (a ib.nonze o()[0])] a ibu os # # Selec K Bes ( _classi ) # h ps://sciki -lea n.o g/s able/modules/gene a ed/sklea n. ea u e_selec ion. Selec KBes .h ml#sklea n. ea u e_selec ion.Selec KBes # In[7]: seleccionadas = Selec KBes ( _classi , k=6). i (X,y) a ib = seleccionadas.ge _suppo () a ibu os = [columnas[i] o i in lis (a ib.nonze o()[0])] a ibu os # # F eg ession # h ps://sciki -lea n.o g/s able/modules/gene a ed/sklea n. ea u e_selec ion. _ eg ession.h ml#sklea n. ea u e_selec ion. _ eg ession # In[8]: seleccionadas = _ eg ession(X,y) seleccionadas = [columnas[i] o i in lis (a ib.nonze o()[0])] seleccionadas # # SELECT FPR # h ps://sciki -lea n.o g/s able/modules/gene a ed/sklea n. ea u e_selec ion. Selec Fp .h ml#sklea n. ea u e_selec ion.Selec Fp # In[9]: seleccionadas = Selec Fp ( _classi , alpha=0.01). i (X, y) a ib = seleccionadas.ge _suppo () a ibu os = [columnas[i] o i in lis (a ib.nonze o()[0])] a ibu os # # RFE 11.4 Fea u e selec ion 89 # h ps://sciki -lea n.o g/s able/modules/gene a ed/sklea n. ea u e_selec ion. RFE.h ml#sklea n. ea u e_selec ion.RFE # In[ ]: 11.4.2 C uce o #!/us /bin/en py hon # coding: u -8 # In[7]: impo pandas as pd impo os impo numpy as np impo ma plo lib.pyplo as pl om sklea n.da ase s impo load_digi s om sklea n. ea u e_selec ion impo Selec Pe cen ile,Selec Fp , Selec KBes , _classi , _ eg ession om sklea n. ea u e_selec ion impo RFE om sklea n.s m impo SVR om sklea n.linea _model impo Linea Reg ession om sklea n.p ep ocessing impo PolynomialFea u es # In[8]: mainpa h = ".. da os ascenso y c uce o" ilename = "Da aC_cleaned.xlsx" da a = pd. ead_excel(mainpa h + "/" + ilename) # In[9]: da ai=da a[[’_Mach, a io’,’_ele ,_su ’,’ail n,_su ’,’ udd ,_su ’, ’_wind, speed’,’pi ch,__deg’, ’_ oll,__deg’, ’_be a,__deg’, ’__al ,__ind’,’___cl, o al’,’___cd, o al’, ’alpha,__deg’,’alpha,__deg1’, ’alpha,__deg2’]] da ai[’empuje o al’]=da a[’ h s ,_1,lb’]+da a[’ h s ,_2,lb’] da ai[’ pm media’]=(da a[’ pm_1,engin’]+da a[’ pm_1,engin’])/2 da ai[’winddi ec ion’]=da a[’_wind,__di ’]-da a[’hding,_ ue’] da ai = da ai. ename(columns={’pi ch,__deg’:’pi ch’,’_Mach, a io’:’Mach’,’_ele ,_su ’:’ele a o su ace’,’ail n,_su ’:’aile on su ace’,’ udd ,_su ’:’ udde su ace’, ’_wind,speed’:’windspeed’,’pi ch,__deg’:’pi ch’, ’_ oll,__ deg’:’ oll’, ’_be a,__deg’:’slippage’, ’__al ,__ind’:’al i ude’,’___cl, o al’:’CL’,’___cd, o al’:’CD’, ’alpha,__deg’:’AOA1’,’alpha,__deg1’:’AOA2’, ’alpha,__deg2’:’AOA3’}) da ai=da ai.sample( ac=1). ese _index(d op=T ue) 90 Capí ulo 11. Anexo de códigos da ai.shape # In[10]: de clean_da ase (d ): asse isins ance(d , pd.Da aF ame), "d needs o be a pd.Da aF ame" d .d opna(inplace=T ue) indices_ o_keep = ~d .isin([np.nan, np.in , -np.in ]).any(1) e u n d [indices_ o_keep].as ype(np. loa 64) clean_da ase (da ai) da ai.head() # In[11]: y=da ai.AOA1 X=da ai.d op([’AOA1’,’AOA2’,’AOA3’],axis=1) columnas = lis (X.columns. alues) X.shape # # Selec Pe cen ile ( _classi ) # h ps://sciki -lea n.o g/s able/modules/gene a ed/sklea n. ea u e_selec ion. Selec Pe cen ile.h ml#sklea n. ea u e_selec ion.Selec Pe cen ile # In[12]: seleccionadas= Selec Pe cen ile(pe cen ile=50). i (X, y) a ib = seleccionadas.ge _suppo () a ibu os = [columnas[i] o i in lis (a ib.nonze o()[0])] a ibu os # # Selec K Bes ( _classi ) # h ps://sciki -lea n.o g/s able/modules/gene a ed/sklea n. ea u e_selec ion. Selec KBes .h ml#sklea n. ea u e_selec ion.Selec KBes # In[14]: seleccionadas = Selec KBes ( _classi , k=6). i (X,y) a ib = seleccionadas.ge _suppo () a ibu os = [columnas[i] o i in lis (a ib.nonze o()[0])] a ibu os # # F eg ession 11.4 Fea u e selec ion 91 # h ps://sciki -lea n.o g/s able/modules/gene a ed/sklea n. ea u e_selec ion. _ eg ession.h ml#sklea n. ea u e_selec ion. _ eg ession # In[15]: seleccionadas = _ eg ession(X,y) seleccionadas = [columnas[i] o i in lis (a ib.nonze o()[0])] seleccionadas # # SELECT FPR # h ps://sciki -lea n.o g/s able/modules/gene a ed/sklea n. ea u e_selec ion. Selec Fp .h ml#sklea n. ea u e_selec ion.Selec Fp # In[16]: seleccionadas = Selec Fp ( _classi , alpha=0.01). i (X, y) a ib = seleccionadas.ge _suppo () a ibu os = [columnas[i] o i in lis (a ib.nonze o()[0])] a ibu os # # RFE # h ps://sciki -lea n.o g/s able/modules/gene a ed/sklea n. ea u e_selec ion. RFE.h ml#sklea n. ea u e_selec ion.RFE # Es e mé odo hace la selección de ca ac e ís icas po eliminación en cuan o a los esul ados que ob iene en un modelo. Po an o, pa a implemen a lo es necesa io implemen a p e iamen e un modelo. # In[19]: es ima o = Linea Reg ession() seleccionadas = RFE(es ima o , n_ ea u es_ o_selec =10, s ep=1) seleccionadas = seleccionadas. i (X, y) a ibu os = seleccionadas.ge _suppo () a ibu os = [columnas[i] o i in lis (a ib.nonze o()[0])] a ibu os # In[ ]: om sklea n.model_selec ion impo ain_ es _spli X = da ai[’V ue,mphas’]. alues. eshape(-1,1) y = da ai["AOA1"]. alues. eshape(-1, 1) X_ ain, X_ es , y_ ain, y_ es = ain_ es _spli (X, y, es _size=0.33, andom_s a e=100) 98 Capí ulo 11. Anexo de códigos eg = Linea Reg ession(). i (poly. ans o m(X_ ain),y_ ain) pl .sca e (X_ ain,y_ ain) pl .sca e (X_ es ,y_ es ) y_ ain_ha = eg.p edic (poly. ans o m(X_ ain)) y_ es _ha = eg.p edic (poly. ans o m(X_ es )) x_model = np.linspace(-100,20). eshape((-1,1)) y_model = eg.p edic (poly. ans o m(x_model)) pl .plo (x_model,y_model, " --") pl .axis([0, 18, 0, 16]) p in ("R2 ain:", 2_sco e(y_ ain,y_ ain_ha )) p in ("R2 es :", 2_sco e(y_ es ,y_ es _ha )) pl .show() in e ac (plo ,deg ee=(1,10)); # # REGRESIÓN LINEAL SIMPLE (ALTITUDE) # In[29]: lm = sm .ols( o mula="AOA1~al i ude", da a = da ai). i () lm.summa y() # In[30]: AOA1_p ed = lm.p edic (pd.Da aF ame(da ai["al i ude"])) ge _ipy hon(). un_line_magic(’ma plo lib’, ’inline’) da ai.plo (kind = "sca e ", x = "al i ude", y ="AOA1") pl .plo (pd.Da aF ame(da ai["al i ude"]), AOA1_p ed, c=" ed", linewid h = 2) # In[32]: om sklea n.model_selec ion impo ain_ es _spli X = da ai["al i ude"]. alues. eshape(-1,1) y = da ai["AOA1"]. alues. eshape(-1, 1) X_ ain, X_ es , y_ ain, y_ es = ain_ es _spli ( X, y, es _size=0.33, andom_s a e=100) de plo (deg ee = 1): poly = PolynomialFea u es(deg ee=deg ee) poly. i _ ans o m(X_ ain) eg = Linea Reg ession(). i (poly. ans o m(X_ ain),y_ ain) 11.5 Reg esión simple 99 pl .sca e (X_ ain,y_ ain) pl .sca e (X_ es ,y_ es ) y_ ain_ha = eg.p edic (poly. ans o m(X_ ain)) y_ es _ha = eg.p edic (poly. ans o m(X_ es )) x_model = np.linspace(-10,40000). eshape((-1,1)) y_model = eg.p edic (poly. ans o m(x_model)) pl .plo (x_model,y_model, " --") pl .axis([0, 40000, 0, 16]) p in ("R2 ain:", 2_sco e(y_ ain,y_ ain_ha )) p in ("R2 es :", 2_sco e(y_ es ,y_ es _ha )) pl .show() in e ac (plo ,deg ee=(1,10)); # In[ ]: 11.5.2 C uce o #!/us /bin/en py hon # coding: u -8 # In[1]: impo pandas as pd impo os impo numpy as np impo ma plo lib.pyplo as pl impo seabo n as sns impo s a smodels.api as sm impo s a smodels. o mula.api as sm om sklea n.p ep ocessing impo PolynomialFea u es ge _ipy hon(). un_line_magic(’ma plo lib’, ’inline’) om ipywidge s impo in e ac , in e ac i e, ixed, in e ac _manual impo ipywidge s as widge s om sklea n.linea _model impo Linea Reg ession om sklea n.me ics impo 2_sco e om sklea n.me ics impo mean_absolu e_e o om sklea n.me ics impo mean_squa ed_e o # In[2]: mainpa h = ".. da os ascenso y c uce o" ilename = "Da aC_cleaned.xlsx" 100 Capí ulo 11. Anexo de códigos da a = pd. ead_excel(mainpa h + "/" + ilename) # In[3]: da ai=da a[[’_Mach, a io’,’_ele ,_su ’,’ail n,_su ’,’ udd ,_su ’, ’_wind, speed’,’pi ch,__deg’, ’_ oll,__deg’, ’_be a,__deg’, ’__al ,__ind’,’___cl, o al’,’___cd, o al’, ’alpha,__deg’,’alpha,__deg1’, ’alpha,__deg2’]] da ai[’empuje o al’]=da a[’ h s ,_1,lb’]+da a[’ h s ,_2,lb’] da ai[’ pmmedia’]=(da a[’ pm_1,engin’]+da a[’ pm_1,engin’])/2 da ai[’winddi ec ion’]=da a[’_wind,__di ’]-da a[’hding,_ ue’] da ai = da ai. ename(columns={’pi ch,__deg’:’pi ch’,’_Mach, a io’:’Mach’,’_ele ,_su ’:’ele a o su ace’,’ail n,_su ’:’aile onsu ace’,’ udd ,_su ’:’ udde su ace’, ’_wind,speed’:’windspeed’,’pi ch,__deg’:’pi ch’, ’_ oll,__ deg’:’ oll’, ’_be a,__deg’:’slippage’, ’__al ,__ind’:’al i ude’,’___cl, o al’:’CL’,’___cd, o al’:’CD’, ’alpha,__deg’:’AOA1’,’alpha,__deg1’:’AOA2’, ’alpha,__deg2’:’AOA3’}) da ai=da ai.sample( ac=1). ese _index(d op=T ue) # In[4]: de clean_da ase (d ): asse isins ance(d , pd.Da aF ame), "d needs o be a pd.Da aF ame" d .d opna(inplace=T ue) indices_ o_keep = ~d .isin([np.nan, np.in , -np.in ]).any(1) e u n d [indices_ o_keep].as ype(np. loa 64) clean_da ase (da ai) da ai.head() # In[5]: co = da ai.co () ge _ipy hon(). un_line_magic(’ma plo lib’, ’inline’) pl . igu e( igsize=(12,10)) sns.hea map(co , linewid h=0.5,anno =T ue,cmap="RdBu"); # Se obse a que las a iables que ienen una co elación lineal más al a en alo absolu o con el ángulo de a aque son: # # * Pi ch: 0.95 # * Coe icien e de sus en ación: 0.94 # * Velocidad del ien o: 0.84 # * Mach: -0.74 # * Al i ud: 0.7 11.5 Reg esión simple 101 # * Supe icie del ele a o de lec ada: -0.63 # * Empuje 1 y 2: -0.63 # * Di ección del ien o: 0.61 # * Coe icien e de esis encia: 0.42 # # Po an o, és as son las a iables que amos a selecciona pa a c ea los modelos de eg esión lineal simple (en el caso del empuje ha emos una eg esión lineal múl iple de dos a iables po ene el a ión dos mo o es). También se espe a que es as a iables sean las que salgan a la ho a de hace el modelo de eg esión lineal múl iple con las lib e ías. # # Des aca po o a pa e que, pues o que es amos abajando con da os en los que sabemos que los senso es de ángulos de a aque no han allado, podemos abaja con una sola columna de da o de senso de ángulo de a aque (’AOA 1’) pues o que la di e encia espec o a las o as se á meno que el 1 %. # # REGRESIÓN SIMPLE (PITCH) # In[6]: lm = sm .ols( o mula="AOA1~pi ch", da a = da ai). i () lm.summa y() # In[7]: AOA1_p ed = lm.p edic (pd.Da aF ame(da ai["pi ch"])) ge _ipy hon(). un_line_magic(’ma plo lib’, ’inline’) da ai.plo (kind = "sca e ", x = "pi ch", y ="AOA1") pl .plo (pd.Da aF ame(da ai["pi ch"]), AOA1_p ed, c=" ed", linewid h = 2) # * SST = SSD + SSR # * SST : Va iabilidad de los da os con espec o de su media # * SSD : Di e encia en e los da os o iginales y las p edicciones que el modelo no es capaz de explica (e o es que debe ían segui una dis ibució n no mal) # * SSR : Di e encia en e la eg esión y el alo medio que el modelo busca explica # * R2 = SSR / SST, coe icien e de de e minación en e 0 y 1 # In[14]: om sklea n.model_selec ion impo ain_ es _spli X = da ai["pi ch"]. alues. eshape(-1,1) y = da ai["AOA1"]. alues. eshape(-1, 1) X_ ain, X_ es , y_ ain, y_ es = ain_ es _spli ( X, y, es _size=0.33, andom_s a e=100) de plo (deg ee = 1): poly = PolynomialFea u es(deg ee=deg ee) poly. i _ ans o m(X_ ain) 102 Capí ulo 11. Anexo de códigos eg = Linea Reg ession(). i (poly. ans o m(X_ ain),y_ ain) pl .sca e (X_ ain,y_ ain) pl .sca e (X_ es ,y_ es ) y_ ain_ha = eg.p edic (poly. ans o m(X_ ain)) y_ es _ha = eg.p edic (poly. ans o m(X_ es )) x_model = np.linspace(-10,40). eshape((-1,1)) y_model = eg.p edic (poly. ans o m(x_model)) pl .plo (x_model,y_model, " ") pl .axis([-0.5, 10, 0, 10]) pl .xlabel("Pi ch") pl .ylabel("AOA") p in ("R2 ain:", 2_sco e(y_ ain,y_ ain_ha )) p in ("R2 es :", 2_sco e(y_ es ,y_ es _ha )) pl .show() in e ac (plo ,deg ee=(1,10)); # In[8]: X = da ai["pi ch"]. alues. eshape(-1,1) y = da ai["AOA1"]. alues. eshape(-1, 1) X_ ain, X_ es , y_ ain, y_ es = ain_ es _spli (X, y, es _size=0.33, andom_s a e=100) poly = PolynomialFea u es(deg ee=2) poly. i _ ans o m(X_ ain) eg = Linea Reg ession(). i (poly. ans o m(X_ ain),y_ ain) y_ ain_ha = eg.p edic (poly. ans o m(X_ ain)) y_ es _ha = eg.p edic (poly. ans o m(X_ es )) p in ("R2 ain:", 2_sco e(y_ ain,y_ ain_ha )) p in ("R2 es :", 2_sco e(y_ es ,y_ es _ha )) p in ("E o absolu o medio ain:",mean_absolu e_e o (y_ ain,y_ ain_ha )) p in ("E o absolu o medio es :",mean_absolu e_e o (y_ es ,y_ es _ha )) p in ("E o cuad á ico medio ain:",mean_squa ed_e o (y_ ain,y_ ain_ha )) p in ("E o cuad á ico medio es :",mean_squa ed_e o (y_ es ,y_ es _ha )) 11.5 Reg esión simple 103 # # REGRESIÓN SIMPLE (CD) # In[9]: lm = sm .ols( o mula="AOA1~CD", da a = da ai). i () lm.summa y() # In[10]: AOA1_p ed = lm.p edic (pd.Da aF ame(da ai["CD"])) ge _ipy hon(). un_line_magic(’ma plo lib’, ’inline’) da ai.plo (kind = "sca e ", x = "CD", y ="AOA1") pl .plo (pd.Da aF ame(da ai["CD"]), AOA1_p ed, c=" ed", linewid h = 2) # In[41]: om sklea n.model_selec ion impo ain_ es _spli X = da ai["CD"]. alues. eshape(-1,1) y = da ai["AOA1"]. alues. eshape(-1, 1) X_ ain, X_ es , y_ ain, y_ es = ain_ es _spli ( X, y, es _size=0.33, andom_s a e=100) de plo (deg ee = 1): poly = PolynomialFea u es(deg ee=deg ee) poly. i _ ans o m(X_ ain) eg = Linea Reg ession(). i (poly. ans o m(X_ ain),y_ ain) pl .sca e (X_ ain,y_ ain) pl .sca e (X_ es ,y_ es ) y_ ain_ha = eg.p edic (poly. ans o m(X_ ain)) y_ es _ha = eg.p edic (poly. ans o m(X_ es )) x_model = np.linspace(0,40). eshape((-1,1)) y_model = eg.p edic (poly. ans o m(x_model)) pl .plo (x_model,y_model, " --") pl .axis([0, 0.075, 0, 10]) p in ("R2 ain:", 2_sco e(y_ ain,y_ ain_ha )) p in ("R2 es :", 2_sco e(y_ es ,y_ es _ha )) pl .show() in e ac (plo ,deg ee=(1,10)); # # REGRESIÓN SIMPLE (MACH) # In[12]: 104 Capí ulo 11. Anexo de códigos lm = sm .ols( o mula="AOA1~Mach", da a = da ai). i () lm.summa y() # In[13]: om sklea n.me ics impo 2_sco e AOA1_p ed = lm.p edic (pd.Da aF ame(da ai["Mach"])) ge _ipy hon(). un_line_magic(’ma plo lib’, ’inline’) da ai.plo (kind = "sca e ", x = "Mach", y ="AOA1") pl .plo (pd.Da aF ame(da ai["Mach"]), AOA1_p ed, c=" ed", linewid h = 2) # In[47]: om sklea n.model_selec ion impo ain_ es _spli X = da ai["Mach"]. alues. eshape(-1,1) y = da ai["AOA1"]. alues. eshape(-1, 1) X_ ain, X_ es , y_ ain, y_ es = ain_ es _spli ( X, y, es _size=0.33, andom_s a e=100) de plo (deg ee = 1): poly = PolynomialFea u es(deg ee=deg ee) poly. i _ ans o m(X_ ain) eg = Linea Reg ession(). i (poly. ans o m(X_ ain),y_ ain) pl .sca e (X_ ain,y_ ain) pl .sca e (X_ es ,y_ es ) y_ ain_ha = eg.p edic (poly. ans o m(X_ ain)) y_ es _ha = eg.p edic (poly. ans o m(X_ es )) x_model = np.linspace(0,40). eshape((-1,1)) y_model = eg.p edic (poly. ans o m(x_model)) pl .plo (x_model,y_model, " --") pl .axis([0.4, 1, 0, 10]) p in ("R2 ain:", 2_sco e(y_ ain,y_ ain_ha )) p in ("R2 es :", 2_sco e(y_ es ,y_ es _ha )) pl .show() in e ac (plo ,deg ee=(1,10)); # # REGRESIÓN SIMPLE (CL) # In[15]: lm = sm .ols( o mula="AOA1~CL", da a = da ai). i () lm.summa y() 11.5 Reg esión simple 105 # In[16]: om sklea n.me ics impo 2_sco e AOA1_p ed = lm.p edic (pd.Da aF ame(da ai["CL"])) ge _ipy hon(). un_line_magic(’ma plo lib’, ’inline’) da ai.plo (kind = "sca e ", x = "CL", y ="AOA1") pl .plo (pd.Da aF ame(da ai["CL"]), AOA1_p ed, c=" ed", linewid h = 2) # In[13]: om sklea n.model_selec ion impo ain_ es _spli X = da ai["CL"]. alues. eshape(-1,1) y = da ai["AOA1"]. alues. eshape(-1, 1) X_ ain, X_ es , y_ ain, y_ es = ain_ es _spli ( X, y, es _size=0.33, andom_s a e=100) de plo (deg ee = 1): poly = PolynomialFea u es(deg ee=deg ee) poly. i _ ans o m(X_ ain) eg = Linea Reg ession(). i (poly. ans o m(X_ ain),y_ ain) pl .sca e (X_ ain,y_ ain) pl .sca e (X_ es ,y_ es ) y_ ain_ha = eg.p edic (poly. ans o m(X_ ain)) y_ es _ha = eg.p edic (poly. ans o m(X_ es )) x_model = np.linspace(0,40). eshape((-1,1)) y_model = eg.p edic (poly. ans o m(x_model)) pl .plo (x_model,y_model, " ") pl .axis([0.1, 0.6, 0, 10]) pl .xlabel("CL") pl .ylabel("AOA") p in ("R2 ain:", 2_sco e(y_ ain,y_ ain_ha )) p in ("R2 es :", 2_sco e(y_ es ,y_ es _ha )) pl .show() in e ac (plo ,deg ee=(1,10)); # In[12]: X = da ai["CL"]. alues. eshape(-1,1) y = da ai["AOA1"]. alues. eshape(-1, 1) X_ ain, X_ es , y_ ain, y_ es = ain_ es _spli (X, y, es _size=0.33, andom_s a e=100) 106 Capí ulo 11. Anexo de códigos poly = PolynomialFea u es(deg ee=1) poly. i _ ans o m(X_ ain) eg = Linea Reg ession(). i (poly. ans o m(X_ ain),y_ ain) y_ ain_ha = eg.p edic (poly. ans o m(X_ ain)) y_ es _ha = eg.p edic (poly. ans o m(X_ es )) p in ("R2 ain:", 2_sco e(y_ ain,y_ ain_ha )) p in ("R2 es :", 2_sco e(y_ es ,y_ es _ha )) p in ("E o absolu o medio ain:",mean_absolu e_e o (y_ ain,y_ ain_ha )) p in ("E o absolu o medio es :",mean_absolu e_e o (y_ es ,y_ es _ha )) p in ("E o cuad á ico medio ain:",mean_squa ed_e o (y_ ain,y_ ain_ha )) p in ("E o cuad á ico medio es :",mean_squa ed_e o (y_ es ,y_ es _ha )) # # REGRESIÓN SIMPLE (WIND SPEED) # In[18]: lm = sm .ols( o mula="AOA1~windspeed", da a = da ai). i () lm.summa y() # In[19]: om sklea n.me ics impo 2_sco e AOA1_p ed = lm.p edic (pd.Da aF ame(da ai["windspeed"])) ge _ipy hon(). un_line_magic(’ma plo lib’, ’inline’) da ai.plo (kind = "sca e ", x = "windspeed", y ="AOA1") pl .plo (pd.Da aF ame(da ai["windspeed"]), AOA1_p ed, c=" ed", linewid h = 2) # In[51]: om sklea n.model_selec ion impo ain_ es _spli X = da ai["windspeed"]. alues. eshape(-1,1) y = da ai["AOA1"]. alues. eshape(-1, 1) X_ ain, X_ es , y_ ain, y_ es = ain_ es _spli ( X, y, es _size=0.33, andom_s a e=100) de plo (deg ee = 1): poly = PolynomialFea u es(deg ee=deg ee) poly. i _ ans o m(X_ ain) 11.5 Reg esión simple 107 eg = Linea Reg ession(). i (poly. ans o m(X_ ain),y_ ain) pl .sca e (X_ ain,y_ ain) pl .sca e (X_ es ,y_ es ) y_ ain_ha = eg.p edic (poly. ans o m(X_ ain)) y_ es _ha = eg.p edic (poly. ans o m(X_ es )) x_model = np.linspace(0,40). eshape((-1,1)) y_model = eg.p edic (poly. ans o m(x_model)) pl .plo (x_model,y_model, " --") pl .axis([0, 15, 0, 10]) p in ("R2 ain:", 2_sco e(y_ ain,y_ ain_ha )) p in ("R2 es :", 2_sco e(y_ es ,y_ es _ha )) pl .show() in e ac (plo ,deg ee=(1,10)); # # REGRESIÓN SIMPLE (ALTITUDE) # In[21]: lm = sm .ols( o mula="AOA1~al i ude", da a = da ai). i () lm.summa y() # In[22]: om sklea n.me ics impo 2_sco e AOA1_p ed = lm.p edic (pd.Da aF ame(da ai["al i ude"])) ge _ipy hon(). un_line_magic(’ma plo lib’, ’inline’) da ai.plo (kind = "sca e ", x = "al i ude", y ="AOA1") pl .plo (pd.Da aF ame(da ai["al i ude"]), AOA1_p ed, c=" ed", linewid h = 2) # In[52]: om sklea n.model_selec ion impo ain_ es _spli X = da ai["al i ude"]. alues. eshape(-1,1) y = da ai["AOA1"]. alues. eshape(-1, 1) X_ ain, X_ es , y_ ain, y_ es = ain_ es _spli ( X, y, es _size=0.33, andom_s a e=100) de plo (deg ee = 1): poly = PolynomialFea u es(deg ee=deg ee) poly. i _ ans o m(X_ ain) eg = Linea Reg ession(). i (poly. ans o m(X_ ain),y_ ain) 114 Capí ulo 11. Anexo de códigos da ai = da ai. ename(columns={’pi ch,__deg’:’pi ch’,’_Mach, a io’:’Mach’,’_ele ,_su ’:’ele a o su ace’,’ail n,_su ’:’aile on su ace’,’ udd ,_su ’:’ udde su ace’, ’_wind,speed’:’windspeed’,’pi ch,__deg’:’pi ch’, ’_ oll,__ deg’:’ oll’, ’_be a,__deg’:’slippage’, ’__al ,__ind’:’al i ude’,’___cl, o al’:’CL’,’___cd, o al’:’CD’, ’alpha,__deg’:’AOA1’,’alpha,__deg1’:’AOA2’, ’alpha,__deg2’:’AOA3’}) da ai=da ai.sample( ac=1). ese _index(d op=T ue) da ai.shape # In[4]: de clean_da ase (d ): asse isins ance(d , pd.Da aF ame), "d needs o be a pd.Da aF ame" d .d opna(inplace=T ue) indices_ o_keep = ~d .isin([np.nan, np.in , -np.in ]).any(1) e u n d [indices_ o_keep].as ype(np. loa 64) clean_da ase (da ai) da ai.head() # In[5]: co = da ai.co () ge _ipy hon(). un_line_magic(’ma plo lib’, ’inline’) pl . igu e( igsize=(12,10)) sns.hea map(co , linewid h=0.5,anno =T ue,cmap="RdBu"); # # SELECCIÓN DE CARACTERÍSTICAS CON EL MÉTODO selec Kbes # Es e algo i mo selecciona a los mejo es a ibu os basándose en una p ueba es adís ica uni a ian e. Al obje o Selec KBes le pasamos la p ueba es adí s ica que amos a a aplica , en es e caso una p ueba F de inida po el obje o _classi , jun o con el núme o de a ibu os a selecciona . El algo i mo a a aplica la p ueba a odos los a ibu os y a a selecciona los que mejo esul ado ob u ie on. # In[6]: # Aplicando el algo i mo uni a ian e de p ueba F. da a_aux=da ai[[’Mach’, ’ele a o su ace’, ’aile on su ace’, ’ udde su ace ’,’windspeed’, ’pi ch’, ’ oll’, ’slippage’, ’al i ude’, ’CL’, ’CD’,’AOA1’, ’empuje o al’, ’ pmmedia’, ’winddi ec ion’]] k = 6 # núme o de a ibu os a selecciona AOA1 = da a_aux[’AOA1’] en ena = da a_aux.d op([’AOA1’], axis=1) 11.6 Reg esión lineal múl iple 115 columnas = lis (en ena .columns. alues) seleccionadas = Selec KBes ( _classi , k=k). i (en ena , AOA1) a ib = seleccionadas.ge _suppo () a ibu os = [columnas[i] o i in lis (a ib.nonze o()[0])] a ibu os # # MULTICOLINEALIDAD DE LAS VARIABLES # Fac o In lación de la Va ianza # # * VIF = 1 : Las a iables no es án co elacionadas # * VIF < 5 : Las a iables ienen una co elación mode ada y se pueden queda en el modelo # * VIF >5 : Las a iables es án al amen e co elacionadas y deben desapa ece del modelo # # # En los modelos lineales múl iples, los p edic o es deben se independien es, no debe de habe colinealidad en e ellos. La colinealidad ocu e cuando un p edic o es á linealmen e elacionado con uno o a ios de los o os p edic o es del modelo. Como consecuencia de la colinealidad, no se puede iden i ica de o ma p ecisa el e ec o indi idual que iene cada p edic o sob e la a iable espues a, lo que se aduce en un inc emen o de la a ianza de los coe icien es de eg esión es imados has a el pun o de que esul a imposible es ablece su signi icancia es adís ica. Además, pequeños cambios en los da os, p o ocan g andes cambios en las es imaciones de los coe icien es. Si bien la colinealidad p opiamen e dicha exis e solo si el coe icien e de co elación simple o múl iple en e p edic o es es 1, cosa que a amen e ocu e en la ealidad, es ecuen e encon a la llamada casi -colinealidad o mul icolinealidad no pe ec a. # # No exis e un mé odo es adís ico conc e o pa a de e mina la exis encia de colinealidad o mul icolinealidad en e los p edic o es de un modelo de eg esión, sin emba go, se han desa ollado nume osas eglas p ác icas que a an de de e mina en qué medida a ec an al modelo. Los pasos ecomendados a segui son: # # Si el coe icien e de de e minación R2 es al o pe o ninguno de los p edic o es esul a signi ica i o, hay indicios de colinealidad. # # C ea una ma iz de co elación en la que se calcula la elación lineal en e cada pa de p edic o es. Es impo an e ene en cuen a que, a pesa de no ob ene se ningún coe icien e de co elación al o, no es á asegu ado que no exis a mul icolinealidad. Se puede da el caso de ene una elación lineal casi pe ec a en e es o más a iables y que las co elaciones simples en e pa es de es as mismas a iables no sean mayo es que 0.5. # # Gene a un modelo de eg esión lineal simple en e cada uno de los p edic o es en e al es o. Si en alguno de los modelos el *coe icien e de de e minación R2 es al o, es a ía señalando a una posible colinealidad. # # Tole ancia (TOL) y Fac o de In lación de la Va ianza (VIF). Se a a de dos pa áme os que ienen a cuan i ica lo mismo (uno es el in e so del o o). El VIF de cada p edic o se calcula según la siguien e ó mula: # # VIF =1/(1 R 2^2) 116 Capí ulo 11. Anexo de códigos # # Tole ancia=1/VIF # # Es a es la opción más ecomendada, los lími es de e e encia que se suelen emplea son: # # VIF = 1: ausencia o al de colinealidad # # 1 < VIF < 5: la eg esión puede e se a ec ada po cie a colinealidad. # # 5 < VIF < 10: la eg esión puede e se al amen e a ec ada po cie a colinealidad. # # El é mino ole ancia es 1VIF po lo que los lími es ecomendables es án en e 1 y 0.1. # # En caso de encon a colinealidad en e p edic o es, hay dos posibles soluciones. La p ime a es exclui uno de los p edic o es p oblemá icos in en ando conse a el que, a juicio del in es igado , es á in luyendo ealmen e en la a iable espues a. Es a medida no suele ene mucho impac o en el modelo en cuan o a su capacidad p edic i a ya que, al exis i colinealidad, la in o mación que apo a uno de los p edic o es es edundan e en p esencia del o o. La segunda opción consis e en combina las a iables colineales en un único p edic o , aunque con el iesgo de pe de su in e p e ación. # # Cuando se in en a es ablece elaciones causa-e ec o, la colinealidad puede lle a a conclusiones muy e óneas, haciendo c ee que una a iable es la causa cuando, en ealidad, es o a la que es á in luenciando sob e ese p edic o . # ### A con inuación se comp oba á el VIF de las a iables que hemos ob enido median e la selección de ca ac e ís icas # [’Mach’, ’windspeed’, ’pi ch’, ’al i ude’, ’ pm media’, ’wind di ec ion*’] # In[ ]: lm_n = sm .ols( o mula="Mach~windspeed+pi ch+al i ude+ pmmedia+winddi ec ion", da a = da ai). i () squa ed_n = lm_n. squa ed VIF = 1/(1- squa ed_n) VIF # In[ ]: lm_n = sm .ols( o mula="windspeed~Mach+pi ch+al i ude+ pmmedia+winddi ec ion", da a = da ai). i () squa ed_n = lm_n. squa ed VIF = 1/(1- squa ed_n) VIF # In[ ]: 11.6 Reg esión lineal múl iple 117 lm_n = sm .ols( o mula="pi ch~windspeed+Mach+al i ude+ pmmedia+winddi ec ion", da a = da ai). i () squa ed_n = lm_n. squa ed VIF = 1/(1- squa ed_n) VIF # In[ ]: lm_n = sm .ols( o mula="al i ude~windspeed+pi ch+Mach+ pmmedia+winddi ec ion", da a = da ai). i () squa ed_n = lm_n. squa ed VIF = 1/(1- squa ed_n) VIF # In[ ]: lm_n = sm .ols( o mula=" pmmedia~windspeed+pi ch+al i ude+Mach+winddi ec ion", da a = da ai). i () squa ed_n = lm_n. squa ed VIF = 1/(1- squa ed_n) VIF # In[ ]: lm_n = sm .ols( o mula="winddi ec ion~windspeed+pi ch+al i ude+ pmmedia+Mach", da a = da ai). i () squa ed_n = lm_n. squa ed VIF = 1/(1- squa ed_n) VIF # # REGRESIÓN LINEAL MÚLTIPLE (MACH, WINDSPEED, PITCH, ALTITUDE, pm MEDIA, WIND DIRECTION) # In[ ]: om sklea n.model_selec ion impo ain_ es _spli om sklea n.linea _model impo Linea Reg ession # P epa ación de da os iniciales X = da ai[[’Mach’, ’windspeed’, ’pi ch’, ’al i ude’, ’ pmmedia’, ’winddi ec ion ’]] # Pa a usa odas las a iables excep o la a iable independien e y # alguna con co elación muy baja, u ilizamos el siguien e comando: # X=d .d op(["MEDV","CHAS"],axis=1) # No a: cuan o más se ap oxime a 1 el alo absolu o de la co elación, más e icien e se á la ap oximación y = da ai["AOA1"]. alues. eshape(-1, 1) 118 Capí ulo 11. Anexo de códigos # Hacemos un spli de 33% X_ ain, X_ es , y_ ain, y_ es = ain_ es _spli (X, y, es _size=0.33, andom_s a e=100) # Se en ena el modelo eg = Linea Reg ession(). i (X_ ain,y_ ain) # Hacemos las p edicciones y_ ain_ha = eg.p edic (X_ ain) y_ es _ha = eg.p edic (X_ es ) om sklea n.me ics impo 2_sco e # Calculamos el e o p in ("En enamien o", 2_sco e(y_ ain, y_ ain_ha )) p in ("P ueba", 2_sco e(y_ es , y_ es _ha )) # In[ ]: om sklea n.model_selec ion impo ain_ es _spli om sklea n.linea _model impo Linea Reg ession # P epa ación de da os iniciales X = da ai[[’Mach’, ’windspeed’, ’pi ch’, ’al i ude’, ’ pmmedia’]] # Pa a usa odas las a iables excep o la a iable independien e y # alguna con co elación muy baja, u ilizamos el siguien e comando: # X=d .d op(["MEDV","CHAS"],axis=1) # No a: cuan o más se ap oxime a 1 el alo absolu o de la co elación, más e icien e se á la ap oximación y = da ai["AOA1"]. alues. eshape(-1, 1) # Hacemos un spli de 33% X_ ain, X_ es , y_ ain, y_ es = ain_ es _spli (X, y, es _size=0.33, andom_s a e=100) # Se en ena el modelo eg = Linea Reg ession(). i (X_ ain,y_ ain) # Hacemos las p edicciones y_ ain_ha = eg.p edic (X_ ain) y_ es _ha = eg.p edic (X_ es ) om sklea n.me ics impo 2_sco e # Calculamos el e o p in ("En enamien o", 2_sco e(y_ ain, y_ ain_ha )) p in ("P ueba", 2_sco e(y_ es , y_ es _ha )) # In[ ]: om sklea n.model_selec ion impo ain_ es _spli om sklea n.linea _model impo Linea Reg ession # P epa ación de da os iniciales X = da ai[[’Mach’, ’windspeed’, ’pi ch’, ’al i ude’, ’winddi ec ion’]] # Pa a usa odas las a iables excep o la a iable independien e y # alguna con co elación muy baja, u ilizamos el siguien e comando: 11.6 Reg esión lineal múl iple 119 # X=d .d op(["MEDV","CHAS"],axis=1) # No a: cuan o más se ap oxime a 1 el alo absolu o de la co elación, más e icien e se á la ap oximación y = da ai["AOA1"]. alues. eshape(-1, 1) # Hacemos un spli de 33% X_ ain, X_ es , y_ ain, y_ es = ain_ es _spli (X, y, es _size=0.33, andom_s a e=100) # Se en ena el modelo eg = Linea Reg ession(). i (X_ ain,y_ ain) # Hacemos las p edicciones y_ ain_ha = eg.p edic (X_ ain) y_ es _ha = eg.p edic (X_ es ) om sklea n.me ics impo 2_sco e # Calculamos el e o p in ("En enamien o", 2_sco e(y_ ain, y_ ain_ha )) p in ("P ueba", 2_sco e(y_ es , y_ es _ha )) # In[ ]: om sklea n.model_selec ion impo ain_ es _spli om sklea n.linea _model impo Linea Reg ession # P epa ación de da os iniciales X = da ai[[’Mach’, ’windspeed’, ’pi ch’,’ pmmedia’, ’winddi ec ion’]] # Pa a usa odas las a iables excep o la a iable independien e y # alguna con co elación muy baja, u ilizamos el siguien e comando: # X=d .d op(["MEDV","CHAS"],axis=1) # No a: cuan o más se ap oxime a 1 el alo absolu o de la co elación, más e icien e se á la ap oximación y = da ai["AOA1"]. alues. eshape(-1, 1) # Hacemos un spli de 33% X_ ain, X_ es , y_ ain, y_ es = ain_ es _spli (X, y, es _size=0.33, andom_s a e=100) # Se en ena el modelo eg = Linea Reg ession(). i (X_ ain,y_ ain) # Hacemos las p edicciones y_ ain_ha = eg.p edic (X_ ain) y_ es _ha = eg.p edic (X_ es ) om sklea n.me ics impo 2_sco e # Calculamos el e o p in ("En enamien o", 2_sco e(y_ ain, y_ ain_ha )) p in ("P ueba", 2_sco e(y_ es , y_ es _ha )) # In[ ]: om sklea n.model_selec ion impo ain_ es _spli 120 Capí ulo 11. Anexo de códigos om sklea n.linea _model impo Linea Reg ession # P epa ación de da os iniciales X = da ai[[’Mach’, ’windspeed’,’al i ude’, ’ pmmedia’, ’winddi ec ion’]] # Pa a usa odas las a iables excep o la a iable independien e y # alguna con co elación muy baja, u ilizamos el siguien e comando: # X=d .d op(["MEDV","CHAS"],axis=1) # No a: cuan o más se ap oxime a 1 el alo absolu o de la co elación, más e icien e se á la ap oximación y = da ai["AOA1"]. alues. eshape(-1, 1) # Hacemos un spli de 33% X_ ain, X_ es , y_ ain, y_ es = ain_ es _spli (X, y, es _size=0.33, andom_s a e=100) # Se en ena el modelo eg = Linea Reg ession(). i (X_ ain,y_ ain) # Hacemos las p edicciones y_ ain_ha = eg.p edic (X_ ain) y_ es _ha = eg.p edic (X_ es ) om sklea n.me ics impo 2_sco e # Calculamos el e o p in ("En enamien o", 2_sco e(y_ ain, y_ ain_ha )) p in ("P ueba", 2_sco e(y_ es , y_ es _ha )) # In[ ]: om sklea n.model_selec ion impo ain_ es _spli om sklea n.linea _model impo Linea Reg ession # P epa ación de da os iniciales X = da ai[[’Mach’, ’pi ch’, ’al i ude’, ’ pmmedia’, ’winddi ec ion’]] # Pa a usa odas las a iables excep o la a iable independien e y # alguna con co elación muy baja, u ilizamos el siguien e comando: # X=d .d op(["MEDV","CHAS"],axis=1) # No a: cuan o más se ap oxime a 1 el alo absolu o de la co elación, más e icien e se á la ap oximación y = da ai["AOA1"]. alues. eshape(-1, 1) # Hacemos un spli de 33% X_ ain, X_ es , y_ ain, y_ es = ain_ es _spli (X, y, es _size=0.33, andom_s a e=100) # Se en ena el modelo eg = Linea Reg ession(). i (X_ ain,y_ ain) # Hacemos las p edicciones y_ ain_ha = eg.p edic (X_ ain) y_ es _ha = eg.p edic (X_ es ) om sklea n.me ics impo 2_sco e # Calculamos el e o p in ("En enamien o", 2_sco e(y_ ain, y_ ain_ha )) p in ("P ueba", 2_sco e(y_ es , y_ es _ha )) 11.6 Reg esión lineal múl iple 121 # In[ ]: om sklea n.model_selec ion impo ain_ es _spli om sklea n.linea _model impo Linea Reg ession # P epa ación de da os iniciales X = da ai[[’windspeed’, ’pi ch’, ’al i ude’, ’ pmmedia’, ’winddi ec ion’]] # Pa a usa odas las a iables excep o la a iable independien e y # alguna con co elación muy baja, u ilizamos el siguien e comando: # X=d .d op(["MEDV","CHAS"],axis=1) # No a: cuan o más se ap oxime a 1 el alo absolu o de la co elación, más e icien e se á la ap oximación y = da ai["AOA1"]. alues. eshape(-1, 1) # Hacemos un spli de 33% X_ ain, X_ es , y_ ain, y_ es = ain_ es _spli (X, y, es _size=0.33, andom_s a e=100) # Se en ena el modelo eg = Linea Reg ession(). i (X_ ain,y_ ain) # Hacemos las p edicciones y_ ain_ha = eg.p edic (X_ ain) y_ es _ha = eg.p edic (X_ es ) om sklea n.me ics impo 2_sco e # Calculamos el e o p in ("En enamien o", 2_sco e(y_ ain, y_ ain_ha )) p in ("P ueba", 2_sco e(y_ es , y_ es _ha )) # In[ ]: om sklea n.model_selec ion impo ain_ es _spli om sklea n.linea _model impo Linea Reg ession # P epa ación de da os iniciales X = da ai[[’pi ch’, ’al i ude’, ’ pmmedia’, ’winddi ec ion’]] # Pa a usa odas las a iables excep o la a iable independien e y # alguna con co elación muy baja, u ilizamos el siguien e comando: # X=d .d op(["MEDV","CHAS"],axis=1) # No a: cuan o más se ap oxime a 1 el alo absolu o de la co elación, más e icien e se á la ap oximación y = da ai["AOA1"]. alues. eshape(-1, 1) # Hacemos un spli de 33% X_ ain, X_ es , y_ ain, y_ es = ain_ es _spli (X, y, es _size=0.33, andom_s a e=100) # Se en ena el modelo eg = Linea Reg ession(). i (X_ ain,y_ ain) # Hacemos las p edicciones y_ ain_ha = eg.p edic (X_ ain) y_ es _ha = eg.p edic (X_ es ) 122 Capí ulo 11. Anexo de códigos om sklea n.me ics impo 2_sco e # Calculamos el e o p in ("En enamien o", 2_sco e(y_ ain, y_ ain_ha )) p in ("P ueba", 2_sco e(y_ es , y_ es _ha )) # In[ ]: om sklea n.model_selec ion impo ain_ es _spli om sklea n.linea _model impo Linea Reg ession # P epa ación de da os iniciales X = da ai[[’pi ch’, ’al i ude’, ’ pmmedia’]] # Pa a usa odas las a iables excep o la a iable independien e y # alguna con co elación muy baja, u ilizamos el siguien e comando: # X=d .d op(["MEDV","CHAS"],axis=1) # No a: cuan o más se ap oxime a 1 el alo absolu o de la co elación, más e icien e se á la ap oximación y = da ai["AOA1"]. alues. eshape(-1, 1) # Hacemos un spli de 33% X_ ain, X_ es , y_ ain, y_ es = ain_ es _spli (X, y, es _size=0.33, andom_s a e=100) # Se en ena el modelo eg = Linea Reg ession(). i (X_ ain,y_ ain) # Hacemos las p edicciones y_ ain_ha = eg.p edic (X_ ain) y_ es _ha = eg.p edic (X_ es ) om sklea n.me ics impo 2_sco e # Calculamos el e o p in ("En enamien o", 2_sco e(y_ ain, y_ ain_ha )) p in ("P ueba", 2_sco e(y_ es , y_ es _ha )) # # MODELO ANTERIOR CON CL # Se obse a que la a iable CL ienen ningún VIF mayo de 5 con ninguna de las a iables seleccionadas. Así que se añade el CL al modelo pa a e cómo a ec a a su e iciencia. # In[ ]: lm_n = sm .ols( o mula="Mach~windspeed+pi ch+al i ude+ pmmedia+winddi ec ion+CL ", da a = da ai). i () squa ed_n = lm_n. squa ed VIF = 1/(1- squa ed_n) VIF # In[ ]: 11.6 Reg esión lineal múl iple 123 lm_n = sm .ols( o mula="windspeed~Mach+pi ch+al i ude+ pmmedia+winddi ec ion+CL ", da a = da ai). i () squa ed_n = lm_n. squa ed VIF = 1/(1- squa ed_n) VIF # In[ ]: lm_n = sm .ols( o mula="pi ch~windspeed+Mach+al i ude+ pmmedia+winddi ec ion+CL ", da a = da ai). i () squa ed_n = lm_n. squa ed VIF = 1/(1- squa ed_n) VIF # In[ ]: lm_n = sm .ols( o mula="al i ude~windspeed+pi ch+Mach+ pmmedia+winddi ec ion+CL ", da a = da ai). i () squa ed_n = lm_n. squa ed VIF = 1/(1- squa ed_n) VIF # In[ ]: lm_n = sm .ols( o mula=" pmmedia~windspeed+pi ch+al i ude+Mach+winddi ec ion+CL ", da a = da ai). i () squa ed_n = lm_n. squa ed VIF = 1/(1- squa ed_n) VIF # In[ ]: lm_n = sm .ols( o mula="winddi ec ion~windspeed+pi ch+al i ude+ pmmedia+Mach+CL ", da a = da ai). i () squa ed_n = lm_n. squa ed VIF = 1/(1- squa ed_n) VIF # In[ ]: lm_n = sm .ols( o mula="CL~windspeed+pi ch+al i ude+ pmmedia+winddi ec ion+Mach ", da a = da ai). i () squa ed_n = lm_n. squa ed VIF = 1/(1- squa ed_n) VIF 130 Capí ulo 11. Anexo de códigos dos= a iables X = da ai[dos] y = da ai[uno]. alues. eshape(-1, 1) eg = Linea Reg ession(). i (X,y) y_ha = eg.p edic (X) R2= 2_sco e(y, y_ha ) VIF = 1/(1-R2) p in (uno,VIF) # # MEJORA DEL MODELO CON FILTRACIÓN DE DATOS # En es e apa ado se p e ende ol e a implemen a el modelo an e io pe o haciendo una limpieza de da os de o ma que no se incluyan ángulos de a aque demasiado g andes. # In[7]: k = in (np.ceil(1+np.log2(3333))) pl .his (da ai["AOA1"], bins = k) #bins = [0,30,60,...,200] pl .xlabel("Ángulo de a aque") pl .ylabel("F ecuencia") pl . i le("His og ama de ecuencias del ángulo de a aque") # In[10]: da ai2 = da ai.d op(da ai[da ai[’AOA1’]>11].index) # In[11]: k = in (np.ceil(1+np.log2(3333))) pl .his (da ai2["AOA1"], bins = k) #bins = [0,30,60,...,200] pl .xlabel("Ángulo de a aque") pl .ylabel("F ecuencia") pl . i le("His og ama de ecuencias del ángulo de a aque") # In[12]: om sklea n.model_selec ion impo ain_ es _spli om sklea n.linea _model impo Linea Reg ession # P epa ación de da os iniciales X = da ai2[[’CL’,’Mach’, ’windspeed’, ’pi ch’, ’al i ude’, ’ pmmedia’, ’ winddi ec ion’]] # Pa a usa odas las a iables excep o la a iable independien e y # alguna con co elación muy baja, u ilizamos el siguien e comando: # X=d .d op(["MEDV","CHAS"],axis=1) # No a: cuan o más se ap oxime a 1 el alo absolu o de la co elación, más e icien e se á la ap oximación 11.6 Reg esión lineal múl iple 131 y = da ai2["AOA1"]. alues. eshape(-1, 1) # Hacemos un spli de 33% X_ ain, X_ es , y_ ain, y_ es = ain_ es _spli (X, y, es _size=0.33, andom_s a e=100) # Se en ena el modelo eg = Linea Reg ession(). i (X_ ain,y_ ain) # Hacemos las p edicciones y_ ain_ha = eg.p edic (X_ ain) y_ es _ha = eg.p edic (X_ es ) om sklea n.me ics impo 2_sco e # Calculamos el e o p in ("En enamien o", 2_sco e(y_ ain, y_ ain_ha )) p in ("P ueba", 2_sco e(y_ es , y_ es _ha )) # In[13]: o i in ange(0,6): a iables=[’CL’,’Mach’, ’windspeed’, ’pi ch’, ’al i ude’, ’ pmmedia’, ’ winddi ec ion’] uno= a iables[i] a iables.pop(i) dos= a iables X = da ai2[dos] y = da ai2[uno]. alues. eshape(-1, 1) eg = Linea Reg ession(). i (X,y) y_ha = eg.p edic (X) R2= 2_sco e(y, y_ha ) VIF = 1/(1-R2) p in (uno,VIF) # In[14]: om sklea n.model_selec ion impo ain_ es _spli om sklea n.linea _model impo Linea Reg ession # P epa ación de da os iniciales X = da ai2[[’CL’,’Mach’, ’windspeed’, ’pi ch’, ’al i ude’, ’winddi ec ion’]] # Pa a usa odas las a iables excep o la a iable independien e y # alguna con co elación muy baja, u ilizamos el siguien e comando: # X=d .d op(["MEDV","CHAS"],axis=1) # No a: cuan o más se ap oxime a 1 el alo absolu o de la co elación, más e icien e se á la ap oximación y = da ai2["AOA1"]. alues. eshape(-1, 1) # Hacemos un spli de 33% X_ ain, X_ es , y_ ain, y_ es = ain_ es _spli (X, y, es _size=0.33, andom_s a e=100) 132 Capí ulo 11. Anexo de códigos # Se en ena el modelo eg = Linea Reg ession(). i (X_ ain,y_ ain) # Hacemos las p edicciones y_ ain_ha = eg.p edic (X_ ain) y_ es _ha = eg.p edic (X_ es ) om sklea n.me ics impo 2_sco e # Calculamos el e o p in ("En enamien o", 2_sco e(y_ ain, y_ ain_ha )) p in ("P ueba", 2_sco e(y_ es , y_ es _ha )) # In[15]: o i in ange(0,6): a iables=[’CL’,’Mach’, ’windspeed’, ’pi ch’, ’al i ude’, ’ pmmedia’, ’ winddi ec ion’] uno= a iables[i] a iables.pop(i) dos= a iables X = da ai2[dos] y = da ai2[uno]. alues. eshape(-1, 1) eg = Linea Reg ession(). i (X,y) y_ha = eg.p edic (X) R2= 2_sco e(y, y_ha ) VIF = 1/(1-R2) p in (uno,VIF) # In[16]: om sklea n.model_selec ion impo ain_ es _spli om sklea n.linea _model impo Linea Reg ession # P epa ación de da os iniciales X = da ai2[[’CL’,’Mach’, ’pi ch’, ’al i ude’, ’winddi ec ion’]] # Pa a usa odas las a iables excep o la a iable independien e y # alguna con co elación muy baja, u ilizamos el siguien e comando: # X=d .d op(["MEDV","CHAS"],axis=1) # No a: cuan o más se ap oxime a 1 el alo absolu o de la co elación, más e icien e se á la ap oximación y = da ai2["AOA1"]. alues. eshape(-1, 1) # Hacemos un spli de 33% X_ ain, X_ es , y_ ain, y_ es = ain_ es _spli (X, y, es _size=0.33, andom_s a e=100) # Se en ena el modelo eg = Linea Reg ession(). i (X_ ain,y_ ain) # Hacemos las p edicciones y_ ain_ha = eg.p edic (X_ ain) y_ es _ha = eg.p edic (X_ es ) 11.6 Reg esión lineal múl iple 133 om sklea n.me ics impo 2_sco e # Calculamos el e o p in ("En enamien o", 2_sco e(y_ ain, y_ ain_ha )) p in ("P ueba", 2_sco e(y_ es , y_ es _ha )) # In[17]: o i in ange(0,6): a iables=[’CL’,’Mach’, ’windspeed’, ’pi ch’, ’al i ude’, ’ pmmedia’, ’ winddi ec ion’] uno= a iables[i] a iables.pop(i) dos= a iables X = da ai2[dos] y = da ai2[uno]. alues. eshape(-1, 1) eg = Linea Reg ession(). i (X,y) y_ha = eg.p edic (X) R2= 2_sco e(y, y_ha ) VIF = 1/(1-R2) p in (uno,VIF) # # REGRESIÓN LINEAL MÚLTIPLE CON 3 VARIABLES # [’Mach’, ’windspeed’, ’pi ch’, ’al i ude’, ’ pmmedia’, ’winddi ec ion’, ’CL’] # In[10]: lis a=[’Mach’, ’windspeed’, ’pi ch’, ’al i ude’, ’ pmmedia’, ’winddi ec ion’, ’ CL’] de po encia(c): i len(c) == 0: e u n [[]] = po encia(c[:-1]) e u n + [s + [c[-1]] o s in ] de combinaciones(c, n): e u n [s o s in po encia(c) i len(s) == n] lis a=combinaciones(lis a,3) # In[16]: y = da ai["AOA1"]. alues. eshape(-1, 1) o i in lis a: X = da ai[i] 134 Capí ulo 11. Anexo de códigos X_ ain, X_ es , y_ ain, y_ es = ain_ es _spli (X, y, es _size=0.33, andom_s a e=100) eg = Linea Reg ession(). i (X_ ain,y_ ain) y_ ain_ha = eg.p edic (X_ ain) y_ es _ha = eg.p edic (X_ es ) eg = Linea Reg ession(). i (X,y) y_ha = eg.p edic (X) p in (i) p in ("En enamien o", 2_sco e(y_ ain, y_ ain_ha )) p in ("P ueba", 2_sco e(y_ es , y_ es _ha )) p in (’e o absolu o’,mean_absolu e_e o (y, y_ha )) p in (’e o medio cuad ado’,mean_squa ed_e o (y,y_ha )) p in (’R2 o al’, 2_sco e(y, y_ha )) p in () p in () p in () # In[ ]: 11.6.2 C uce o #!/us /bin/en py hon # coding: u -8 # In[5]: impo pandas as pd impo os impo numpy as np impo ma plo lib.pyplo as pl impo seabo n as sns impo s a smodels.api as sm impo s a smodels. o mula.api as sm om sklea n. ea u e_selec ion impo Selec KBes , _classi om sklea n.ensemble impo Ex aT eesClassi ie om sklea n. ea u e_selec ion impo RFE om sklea n.me ics impo mean_absolu e_e o om sklea n.me ics impo mean_squa ed_e o om sklea n.me ics impo 2_sco e # In[2]: mainpa h = ".. da os ascenso y c uce o" ilename = "Da aC_cleaned.xlsx" da a = pd. ead_excel(mainpa h + "/" + ilename) # In[3]: 11.6 Reg esión lineal múl iple 135 da ai=da a[[’_Mach, a io’,’_ele ,_su ’,’ail n,_su ’,’ udd ,_su ’, ’_wind, speed’,’pi ch,__deg’, ’_ oll,__deg’, ’_be a,__deg’, ’__al ,__ind’,’___cl, o al’,’___cd, o al’, ’alpha,__deg’,’alpha,__deg1’, ’alpha,__deg2’]] da ai[’empuje o al’]=da a[’ h s ,_1,lb’]+da a[’ h s ,_2,lb’] da ai[’ pmmedia’]=(da a[’ pm_1,engin’]+da a[’ pm_1,engin’])/2 da ai[’winddi ec ion’]=da a[’_wind,__di ’]-da a[’hding,_ ue’] da ai = da ai. ename(columns={’pi ch,__deg’:’pi ch’,’_Mach, a io’:’Mach’,’_ele ,_su ’:’ele a o su ace’,’ail n,_su ’:’aile onsu ace’,’ udd ,_su ’:’ udde su ace’, ’_wind,speed’:’windspeed’,’pi ch,__deg’:’pi ch’, ’_ oll,__ deg’:’ oll’, ’_be a,__deg’:’slippage’, ’__al ,__ind’:’al i ude’,’___cl, o al’:’CL’,’___cd, o al’:’CD’, ’alpha,__deg’:’AOA1’,’alpha,__deg1’:’AOA2’, ’alpha,__deg2’:’AOA3’}) da ai=da ai.sample( ac=1). ese _index(d op=T ue) da ai.columns # In[4]: de clean_da ase (d ): asse isins ance(d , pd.Da aF ame), "d needs o be a pd.Da aF ame" d .d opna(inplace=T ue) indices_ o_keep = ~d .isin([np.nan, np.in , -np.in ]).any(1) e u n d [indices_ o_keep].as ype(np. loa 64) clean_da ase (da ai) da ai.head() # In[5]: co = da ai.co () ge _ipy hon(). un_line_magic(’ma plo lib’, ’inline’) pl . igu e( igsize=(12,10)) sns.hea map(co , linewid h=0.5,anno =T ue,cmap="RdBu"); # # SELECCIÓN DE CARACTERÍSTICAS CON EL MÉTODO selec Kbes # In[6]: # Aplicando el algo i mo uni a ian e de p ueba F. da a_aux=da ai[[’Mach’, ’ele a o su ace’, ’aile onsu ace’, ’ udde su ace’,’ windspeed’, ’pi ch’, ’ oll’, ’slippage’, ’al i ude’, ’CL’, ’CD’,’AOA1’, ’ empuje o al’, ’ pmmedia’, ’winddi ec ion’]] k = 6 # núme o de a ibu os a selecciona AOA1 = da a_aux[’AOA1’] en ena = da a_aux.d op([’AOA1’], axis=1) 136 Capí ulo 11. Anexo de códigos columnas = lis (en ena .columns. alues) seleccionadas = Selec KBes ( _classi , k=k). i (en ena , AOA1) a ib = seleccionadas.ge _suppo () a ibu os = [columnas[i] o i in lis (a ib.nonze o()[0])] a ibu os # # MULTICOLINEALIDAD DE LAS VARIABLES # In[7]: lm_n = sm .ols( o mula="Mach~windspeed+pi ch+al i ude+CL+empuje o al", da a = da ai). i () squa ed_n = lm_n. squa ed VIF = 1/(1- squa ed_n) VIF # In[8]: lm_n = sm .ols( o mula="windspeed~Mach+pi ch+al i ude+CL+empuje o al", da a = da ai). i () squa ed_n = lm_n. squa ed VIF = 1/(1- squa ed_n) VIF # In[9]: lm_n = sm .ols( o mula="pi ch~windspeed+Mach+al i ude+CL+empuje o al", da a = da ai). i () squa ed_n = lm_n. squa ed VIF = 1/(1- squa ed_n) VIF # In[10]: lm_n = sm .ols( o mula="al i ude~windspeed+pi ch+Mach+CL+empuje o al", da a = da ai). i () squa ed_n = lm_n. squa ed VIF = 1/(1- squa ed_n) VIF # In[11]: lm_n = sm .ols( o mula="CL~windspeed+pi ch+al i ude+Mach+empuje o al", da a = da ai). i () squa ed_n = lm_n. squa ed VIF = 1/(1- squa ed_n) VIF 11.6 Reg esión lineal múl iple 137 # In[12]: lm_n = sm .ols( o mula="empuje o al~windspeed+pi ch+al i ude+CL+Mach", da a = da ai). i () squa ed_n = lm_n. squa ed VIF = 1/(1- squa ed_n) VIF # ### Se obse a que el VIF más al o es el del CL, po lo que se op a po elimina dicha a iable del modelo y ol e a comp oba la mul icolinealidad: # In[13]: lm_n = sm .ols( o mula="Mach~windspeed+pi ch+al i ude+empuje o al", da a = da ai). i () squa ed_n = lm_n. squa ed VIF = 1/(1- squa ed_n) VIF # In[14]: lm_n = sm .ols( o mula="windspeed~Mach+pi ch+al i ude+empuje o al", da a = da ai). i () squa ed_n = lm_n. squa ed VIF = 1/(1- squa ed_n) VIF # In[15]: lm_n = sm .ols( o mula="pi ch~windspeed+Mach+al i ude+empuje o al", da a = da ai). i () squa ed_n = lm_n. squa ed VIF = 1/(1- squa ed_n) VIF # In[16]: lm_n = sm .ols( o mula="al i ude~windspeed+pi ch+Mach+empuje o al", da a = da ai). i () squa ed_n = lm_n. squa ed VIF = 1/(1- squa ed_n) VIF # In[17]: 138 Capí ulo 11. Anexo de códigos lm_n = sm .ols( o mula="empuje o al~windspeed+pi ch+al i ude+Mach", da a = da ai). i () squa ed_n = lm_n. squa ed VIF = 1/(1- squa ed_n) VIF # ### Comp obamos ambién los VIF eliminando el Mach: # In[18]: lm_n = sm .ols( o mula="windspeed~pi ch+al i ude+CL+empuje o al", da a = da ai) . i () squa ed_n = lm_n. squa ed VIF = 1/(1- squa ed_n) VIF # In[19]: lm_n = sm .ols( o mula="pi ch~windspeed+al i ude+CL+empuje o al", da a = da ai) . i () squa ed_n = lm_n. squa ed VIF = 1/(1- squa ed_n) VIF # In[20]: lm_n = sm .ols( o mula="al i ude~pi ch+windspeed+CL+empuje o al", da a = da ai) . i () squa ed_n = lm_n. squa ed VIF = 1/(1- squa ed_n) VIF # In[21]: lm_n = sm .ols( o mula="CL~pi ch+al i ude+windspeed+empuje o al", da a = da ai) . i () squa ed_n = lm_n. squa ed VIF = 1/(1- squa ed_n) VIF # In[22]: lm_n = sm .ols( o mula="empuje o al~pi ch+al i ude+CL+windspeed", da a = da ai) . i () squa ed_n = lm_n. squa ed 11.6 Reg esión lineal múl iple 139 VIF = 1/(1- squa ed_n) VIF # ### Comp obamos ambién los VIF eliminando el Pi ch: # In[23]: lm_n = sm .ols( o mula="Mach~windspeed+al i ude+empuje o al+CL", da a = da ai). i () squa ed_n = lm_n. squa ed VIF = 1/(1- squa ed_n) VIF # In[24]: lm_n = sm .ols( o mula="windspeed~Mach+al i ude+empuje o al+CL", da a = da ai). i () squa ed_n = lm_n. squa ed VIF = 1/(1- squa ed_n) VIF # In[25]: lm_n = sm .ols( o mula="al i ude~Mach+windspeed+empuje o al+CL", da a = da ai). i () squa ed_n = lm_n. squa ed VIF = 1/(1- squa ed_n) VIF # In[26]: lm_n = sm .ols( o mula="empuje o al~Mach+windspeed+al i ude+CL", da a = da ai). i () squa ed_n = lm_n. squa ed VIF = 1/(1- squa ed_n) VIF # In[27]: lm_n = sm .ols( o mula="CL~Mach+windspeed+al i ude+empuje o al", da a = da ai). i () squa ed_n = lm_n. squa ed VIF = 1/(1- squa ed_n) VIF 242 Capí ulo 11. Anexo de códigos # In[8]: X = da ai[["Mach", ’pi ch’]]. alues. eshape(-2,2) y = da ai["AOA1"]. alues. eshape(-1, 1) es ima o =Linea Reg ession() i le=’Lea ning cu es: eg esión lineal múl iple (Mach, pi ch)’ c =5 ain_sizes=[5000, 10000, 20000, 29000] # In[9]: plo _lea ning_cu e(es ima o =Linea Reg ession(), i le=’Lea ning cu es: eg esión lineal múl iple (Mach, pi ch)’, X=X, y=y, axes=None, ylim=None, c =5, n_jobs=None, ain_sizes=[5000, 10000, 20000, 29000]) # # SVM (CL) # In[10]: X = da ai["CL"]. alues. eshape(-1,1) Y = da ai["AOA1"]. alues. eshape(-1, 1) Y=Y. a el() es ima o =SVR() i le=’Lea ning cu es: SVM b (CL)’ c =5 ain_sizes=[5000, 10000, 20000, 29000] # In[11]: plo _lea ning_cu e(es ima o , i le, X=X, y=y, axes=None, ylim=None, c =5, n_ jobs=None, ain_sizes=[5000, 10000, 20000, 29000]) # In[ ]: 11.11 Mejo es modelos 11.11.1 Despegue y ascenso #!/us /bin/en py hon # coding: u -8 # In[1]: 11.11 Mejo es modelos 243 impo pandas as pd impo os impo numpy as np impo ma plo lib.pyplo as pl impo seabo n as sns impo s a smodels.api as sm impo s a smodels. o mula.api as sm om sklea n.p ep ocessing impo PolynomialFea u es ge _ipy hon(). un_line_magic(’ma plo lib’, ’inline’) om ipywidge s impo in e ac , in e ac i e, ixed, in e ac _manual impo ipywidge s as widge s om sklea n.linea _model impo Linea Reg ession om sklea n.s m impo SVR om sklea n.me ics impo mean_absolu e_e o om sklea n.me ics impo mean_squa ed_e o om sklea n.me ics impo 2_sco e impo andom om sklea n.pipeline impo make_pipeline om sklea n.p ep ocessing impo S anda dScale om sklea n.da ase s impo make_ eg ession om sklea n.s m impo Linea SVR om sklea n impo s m om sklea n.neu al_ne wo k impo MLPReg esso # In[ ]: mainpa h = ".. da os ascenso y c uce o" ilename = "Da aA_cleaned.xlsx" da a = pd. ead_excel(mainpa h + "/" + ilename) # In[ ]: mainpa h = ".. da os ascenso y c uce o" ilename = "Da a9A_cleaned.xlsx" da a_p ueba = pd. ead_excel(mainpa h + "/" + ilename) # In[ ]: 244 Capí ulo 11. Anexo de códigos da ai=da a[[’_Mach, a io’,’_ele ,_su ’,’ail n,_su ’,’ udd ,_su ’, ’_wind, speed’,’pi ch,__deg’, ’_ oll,__deg’, ’_be a,__deg’, ’__al ,__ind’,’___cl, o al’,’___cd, o al’, ’alpha,__deg’,’alpha,__deg1’, ’alpha,__deg2’]] da ai[’empuje o al’]=da a[’ h s ,_1,lb’]+da a[’ h s ,_2,lb’] da ai[’ pmmedia’]=(da a[’ pm_1,engin’]+da a[’ pm_1,engin’])/2 da ai[’winddi ec ion’]=da a[’_wind,__di ’]-da a[’hding,_ ue’] da ai = da ai. ename(columns={’pi ch,__deg’:’pi ch’,’_Mach, a io’:’Mach’,’_ele ,_su ’:’ele a o su ace’,’ail n,_su ’:’aile onsu ace’,’ udd ,_su ’:’ udde su ace’, ’_wind,speed’:’windspeed’,’pi ch,__deg’:’pi ch’, ’_ oll,__ deg’:’ oll’, ’_be a,__deg’:’slippage’, ’__al ,__ind’:’al i ude’,’___cl, o al’:’CL’,’___cd, o al’:’CD’, ’alpha,__deg’:’AOA1’,’alpha,__deg1’:’AOA2’, ’alpha,__deg2’:’AOA3’}) da ai=da ai.sample( ac=1). ese _index(d op=T ue) # In[ ]: da a_p uebaii=da a_p ueba[[’mues a’,’_Mach, a io’,’_ele ,_su ’,’ail n,_su ’,’ udd ,_su ’, ’_wind,speed’,’pi ch,__deg’, ’_ oll,__deg’, ’_be a,__deg’, ’__al ,__ind’,’___cl, o al’,’___cd, o al’, ’alpha,__deg’,’alpha,__deg1’, ’ alpha,__deg2’]] da a_p uebaii[’empuje o al’]=da a_p ueba[’ h s ,_1,lb’]+da a_p ueba[’ h s ,_2, lb’] da a_p uebaii[’ pmmedia’]=(da a_p ueba[’ pm_1,engin’]+da a_p ueba[’ pm_1,engin ’])/2 da a_p uebaii[’winddi ec ion’]=da a_p ueba[’_wind,__di ’]-da a_p ueba[’hding,_ ue’] da a_p uebaii= da a_p uebaii. ename(columns={’pi ch,__deg’:’pi ch’,’_Mach, a io ’:’Mach’,’_ele ,_su ’:’ele a o su ace’,’ail n,_su ’:’aile onsu ace’,’ udd ,_su ’:’ udde su ace’, ’_wind,speed’:’windspeed’,’pi ch,__deg’:’ pi ch’, ’_ oll,__deg’:’ oll’, ’_be a,__deg’:’slippage’, ’__al ,__ind’:’ al i ude’,’___cl, o al’:’CL’,’___cd, o al’:’CD’, ’alpha,__deg’:’AOA1’,’ alpha,__deg1’:’AOA2’, ’alpha,__deg2’:’AOA3’}) da a_p uebaii = da a_p uebaii.d op(da a_p uebaii[(da a_p uebaii[’AOA1’] > 0.2) & (da a_p uebaii[’mues a’] < 100)].index) # In[ ]: da a_p uebai=da a_p ueba[[’_Mach, a io’,’_ele ,_su ’,’ail n,_su ’,’ udd ,_ su ’, ’_wind,speed’,’pi ch,__deg’, ’_ oll,__deg’, ’_be a,__deg’, ’__al ,__ ind’,’___cl, o al’,’___cd, o al’, ’alpha,__deg’,’alpha,__deg1’, ’alpha,__ deg2’]] da a_p uebai[’empuje o al’]=da a_p ueba[’ h s ,_1,lb’]+da a_p ueba[’ h s ,_2,lb ’] 11.11 Mejo es modelos 245 da a_p uebai[’ pmmedia’]=(da a_p ueba[’ pm_1,engin’]+da a_p ueba[’ pm_1,engin ’])/2 da a_p uebai[’winddi ec ion’]=da a_p ueba[’_wind,__di ’]-da a_p ueba[’hding,_ ue’] da a_p uebai= da a_p uebai. ename(columns={’pi ch,__deg’:’pi ch’,’_Mach, a io ’:’Mach’,’_ele ,_su ’:’ele a o su ace’,’ail n,_su ’:’aile onsu ace’,’ udd ,_su ’:’ udde su ace’, ’_wind,speed’:’windspeed’,’pi ch,__deg’:’ pi ch’, ’_ oll,__deg’:’ oll’, ’_be a,__deg’:’slippage’, ’__al ,__ind’:’ al i ude’,’___cl, o al’:’CL’,’___cd, o al’:’CD’, ’alpha,__deg’:’AOA1’,’ alpha,__deg1’:’AOA2’, ’alpha,__deg2’:’AOA3’}) da a_p uebai=da a_p uebai.sample( ac=1). ese _index(d op=T ue) # In[ ]: de clean_da ase (d ): asse isins ance(d , pd.Da aF ame), "d needs o be a pd.Da aF ame" d .d opna(inplace=T ue) indices_ o_keep = ~d .isin([np.nan, np.in , -np.in ]).any(1) e u n d [indices_ o_keep].as ype(np. loa 64) clean_da ase (da ai) clean_da ase (da a_p uebai) da ai.head() # # VISUALIZACIÓN DATOS DEL NUEVO VUELO # In[23]: da a_p uebaii.plo ("mues a","AOA1") # In[20]: da a_p uebaii.plo ("mues a","al i ude") # In[21]: da a_p uebaii.plo ("mues a","Mach") # In[24]: k = in (np.ceil(1+np.log2(3333))) 246 Capí ulo 11. Anexo de códigos pl .his (da a_p uebai["AOA1"], bins = k) #bins = [0,30,60,...,200] pl .xlabel("Ángulo de a aque") pl .ylabel("F ecuencia") pl . i le("His og ama de ecuencias del ángulo de a aque") # # MODELO 1: REGRESIÓN POLINOMIAL SIMPLE DE GRADO 3 (CL) # In[25]: om sklea n.model_selec ion impo ain_ es _spli X = da ai["CL"]. alues. eshape(-1,1) y = da ai["AOA1"]. alues. eshape(-1, 1) poly = PolynomialFea u es(deg ee=3) poly. i _ ans o m(X) eg = Linea Reg ession(). i (poly. ans o m(X),y) X_p ueba=da a_p uebai["CL"]. alues. eshape(-1,1) y_ha = eg.p edic (poly. ans o m(X)) p in ("R2 :", 2_sco e(y,y_ha )) AOA1_p ed_p ueba= eg.p edic (poly. ans o m(X_p ueba)) da a_p uebai[’AOA1_p ed_p ueba’]=AOA1_p ed_p ueba po cen aje=100*da a_p uebai[’AOA1’]/da a_p uebai[’AOA1_p ed_p ueba’] e o _absolu o=abs(da a_p uebai[’AOA1’]-da a_p uebai[’AOA1_p ed_p ueba’]) e o _ ela i o=100*e o _absolu o/da a_p uebai[’AOA1_p ed_p ueba’] p in (’PORCENTAJE’) p in (po cen aje.desc ibe()) p in (’ERROR ABSOLUTO’) p in (e o _absolu o.desc ibe()) p in (’ERROR RELATIVO’) p in (e o _ ela i o.desc ibe()) p ueba=[e o _absolu o<0.25] p ueba2=sum(p ueba) acie os=sum(p ueba2) acie os po cen aje_acie os=100*acie os/e o _absolu o.shape[0] p in (’ACIERTOS =’,po cen aje_acie os,’%’) # In[36]: 11.11 Mejo es modelos 247 aux1=np.ze os(30) o i in ange(0,30): aux1[i]= andom. andin (0, da a_p uebai.shape[0]) aux=da a_p uebai.iloc[aux1,:] aux=aux. ese _index() aux[’index1’]=aux.index pl .sca e (aux[’index1’], aux[’AOA1’], c=’ ’,label="Real") pl .sca e (aux[’index1’], aux[’AOA1_p ed_p ueba’], c=’b’,label="Modelo") pl .xlabel("mues a") pl .ylabel("AOA") pl .legend(loc="uppe igh ") # # MODELO 2: REGRESIÓN LINEAL MÚLTIPLE # In[52]: da ai = da ai.d op(da ai[da ai[’AOA1’]>11].index) X = da ai[[’Mach’, ’windspeed’, ’al i ude’, ’ pmmedia’, ’CL’]] y = da ai["AOA1"]. alues. eshape(-1, 1) eg = Linea Reg ession(). i (X,y) X_p ueba=da a_p uebai[[’Mach’, ’windspeed’, ’al i ude’, ’ pmmedia’, ’CL’]] AOA1_p ed_p ueba = eg.p edic (X_p ueba) da a_p uebai[’AOA1_p ed_p ueba’]=AOA1_p ed_p ueba po cen aje=100*da a_p uebai[’AOA1’]/da a_p uebai[’AOA1_p ed_p ueba’] e o _absolu o=abs(da a_p uebai[’AOA1’]-da a_p uebai[’AOA1_p ed_p ueba’]) e o _ ela i o=100*e o _absolu o/da a_p uebai[’AOA1_p ed_p ueba’] p ueba=[e o _absolu o<0.25] p ueba2=sum(p ueba) acie os=sum(p ueba2) acie os po cen aje_acie os=100*acie os/e o _absolu o.shape[0] p in (’PORCENTAJE’) p in (po cen aje.desc ibe()) p in (’ERROR ABSOLUTO’) p in (e o _absolu o.desc ibe()) p in (’ERROR RELATIVO’) p in (e o _ ela i o.desc ibe()) 248 Capí ulo 11. Anexo de códigos p ueba=[e o _absolu o<0.25] p ueba2=sum(p ueba) acie os=sum(p ueba2) acie os po cen aje_acie os=100*acie os/e o _absolu o.shape[0] p in (’ACIERTOS =’,po cen aje_acie os,’%’) # In[53]: aux1=np.ze os(30) o i in ange(0,30): aux1[i]= andom. andin (0, da a_p uebai.shape[0]) aux=da a_p uebai.iloc[aux1,:] aux=aux. ese _index() aux[’index1’]=aux.index pl .sca e (aux[’index1’], aux[’AOA1’], c=’ ’,label="Real") pl .sca e (aux[’index1’], aux[’AOA1_p ed_p ueba’], c=’b’,label="Modelo") pl .xlabel("mues a") pl .ylabel("AOA") pl .legend(loc="uppe igh ") # In[104]: ec o 1=p ueba[0] ec o 1[2972]=T ue ec o 1[3532]=T ue ec o 1[3791]=T ue ec o 1[5780]=T ue ec o 1[5830]=T ue ec o 2=np.ze os(7000) =1 =0 con =0 o i in ange(0,len( ec o 1)): i ec o 1[i]==T ue: i ==0 and ==1: con =con +1 ec o 2[con ]= ec o 2[con ]+1 =1 =0 i ec o 1[i]==False: 11.11 Mejo es modelos 249 i ==1 and ==0: con =con +1 ec o 2[con ]= ec o 2[con ]+1 =1 =0 de elimina_ce os(o iginal): nue a = [] o da o in o iginal: i da o != 0: nue a.append(da o) e u n nue a ec o 2 = elimina_ce os( ec o 2) # # MODELO 3: SVM SIMPLE # In[14]: da ai = da ai.d op(da ai[da ai[’AOA1’]>11].index) X=da ai[["CL"]]. alues. eshape(-1,1) Y=da ai[["AOA1"]]. alues. eshape(-1,1) Y=Y. a el() eg = s m.SVR() eg . i (X, Y) X_p ueba=da a_p uebai["CL"]. alues. eshape(-1,1) AOA1_p ed_p ueba= eg .p edic (X_p ueba) da a_p uebai[’AOA1_p ed_p ueba’]=AOA1_p ed_p ueba po cen aje=100*da a_p uebai[’AOA1’]/da a_p uebai[’AOA1_p ed_p ueba’] e o _absolu o=abs(da a_p uebai[’AOA1’]-da a_p uebai[’AOA1_p ed_p ueba’]) e o _ ela i o=100*e o _absolu o/da a_p uebai[’AOA1_p ed_p ueba’] p in (’PORCENTAJE’) p in (po cen aje.desc ibe()) p in (’ERROR ABSOLUTO’) p in (e o _absolu o.desc ibe()) p in (’ERROR RELATIVO’) p in (e o _ ela i o.desc ibe()) p ueba=[e o _absolu o<0.25] p ueba2=sum(p ueba) 250 Capí ulo 11. Anexo de códigos acie os=sum(p ueba2) acie os po cen aje_acie os=100*acie os/e o _absolu o.shape[0] p in (’ACIERTOS =’,po cen aje_acie os,’%’) # In[16]: aux1=np.ze os(30) o i in ange(0,30): aux1[i]= andom. andin (0, da a_p uebai.shape[0]) aux=da a_p uebai.iloc[aux1,:] aux=aux. ese _index() aux[’index1’]=aux.index pl .sca e (aux[’index1’], aux[’AOA1’], c=’ ’,label="Real") pl .sca e (aux[’index1’], aux[’AOA1_p ed_p ueba’], c=’b’,label="Modelo") pl .xlabel("mues a") pl .ylabel("AOA") pl .legend(loc="uppe igh ") # # MODELO 4: SVM MÚLTIPLE # In[10]: da ai = da ai.d op(da ai[da ai[’AOA1’]>11].index) i=[’Mach’, ’windspeed’, ’pi ch’, ’al i ude’, ’ pmmedia’] Y = da ai["AOA1"]. alues. eshape(-1, 1) Y=Y. a el() X=da ai[i]. alues. eshape(-5,5) eg = make_pipeline(S anda dScale (),Linea SVR( andom_s a e=0, ol=1e-5)) eg . i (X, Y) y_ha = eg .p edic (X) X_p ueba=da a_p uebai[i]. alues. eshape(-5,5) AOA1_p ed_p ueba= eg .p edic (X_p ueba) da a_p uebai[’AOA1_p ed_p ueba’]=AOA1_p ed_p ueba po cen aje=100*da a_p uebai[’AOA1’]/da a_p uebai[’AOA1_p ed_p ueba’] e o _absolu o=abs(da a_p uebai[’AOA1’]-da a_p uebai[’AOA1_p ed_p ueba’]) e o _ ela i o=100*e o _absolu o/da a_p uebai[’AOA1_p ed_p ueba’] p in (’PORCENTAJE’) p in (po cen aje.desc ibe()) p in (’ERROR ABSOLUTO’) p in (e o _absolu o.desc ibe()) p in (’ERROR RELATIVO’) 11.11 Mejo es modelos 251 p in (e o _ ela i o.desc ibe()) p ueba=[e o _absolu o<0.25] p ueba2=sum(p ueba) acie os=sum(p ueba2) acie os po cen aje_acie os=100*acie os/e o _absolu o.shape[0] p in (’ACIERTOS =’,po cen aje_acie os,’%’) # In[12]: aux1=np.ze os(30) o i in ange(0,30): aux1[i]= andom. andin (0, da a_p uebai.shape[0]) aux=da a_p uebai.iloc[aux1,:] aux=aux. ese _index() aux[’index1’]=aux.index pl .sca e (aux[’index1’], aux[’AOA1’], c=’ ’,label="Real") pl .sca e (aux[’index1’], aux[’AOA1_p ed_p ueba’], c=’b’,label="Modelo") pl .xlabel("mues a") pl .ylabel("AOA") pl .legend(loc="uppe igh ") # # MODELO 5: REDES NEURONALES # In[11]: da ai = da ai.d op(da ai[da ai[’AOA1’]>11].index) i=[’Mach’, ’windspeed’, ’pi ch’, ’CL’] Y = da ai["AOA1"]. alues. eshape(-1, 1) Y=Y. a el() X=da ai[i]. alues. eshape(-4,4) eg = MLPReg esso ( andom_s a e=1, max_i e =500). i (X, Y) y_ha = eg .p edic (X) X_p ueba=da a_p uebai[i]. alues. eshape(-4,4) AOA1_p ed_p ueba= eg .p edic (X_p ueba) da a_p uebai[’AOA1_p ed_p ueba’]=AOA1_p ed_p ueba po cen aje=100*da a_p uebai[’AOA1’]/da a_p uebai[’AOA1_p ed_p ueba’] e o _absolu o=abs(da a_p uebai[’AOA1’]-da a_p uebai[’AOA1_p ed_p ueba’]) e o _ ela i o=100*e o _absolu o/da a_p uebai[’AOA1_p ed_p ueba’] p in (’PORCENTAJE’) p in (po cen aje.desc ibe()) 258 Capí ulo 11. Anexo de códigos Y=Y. a el() eg = s m.SVR() eg . i (X, Y) X_p ueba=da a_p uebai["CL"]. alues. eshape(-1,1) AOA1_p ed_p ueba= eg .p edic (X_p ueba) da a_p uebai[’AOA1_p ed_p ueba’]=AOA1_p ed_p ueba po cen aje=100*da a_p uebai[’AOA1’]/da a_p uebai[’AOA1_p ed_p ueba’] e o _absolu o=abs(da a_p uebai[’AOA1’]-da a_p uebai[’AOA1_p ed_p ueba’]) e o _ ela i o=100*e o _absolu o/da a_p uebai[’AOA1_p ed_p ueba’] p in (’PORCENTAJE’) p in (po cen aje.desc ibe()) p in (’ERROR ABSOLUTO’) p in (e o _absolu o.desc ibe()) p in (’ERROR RELATIVO’) p in (e o _ ela i o.desc ibe()) p ueba=[e o _absolu o<0.25] p ueba2=sum(p ueba) acie os=sum(p ueba2) acie os po cen aje_acie os=100*acie os/e o _absolu o.shape[0] p in (’ACIERTOS =’,po cen aje_acie os,’%’) # In[17]: aux1=np.ze os(30) o i in ange(0,30): aux1[i]= andom. andin (0, da a_p uebai.shape[0]) aux=da a_p uebai.iloc[aux1,:] aux=aux. ese _index() aux[’index1’]=aux.index pl .sca e (aux[’index1’], aux[’AOA1’], c=’ ’,label="Real") pl .sca e (aux[’index1’], aux[’AOA1_p ed_p ueba’], c=’b’,label="Modelo") pl .xlabel("mues a") pl .ylabel("AOA") pl .legend(loc="uppe igh ") # In[ ]: 11.12 Aplicación en di e en es casos 259 11.12 Aplicación en di e en es casos 11.12.1 Despegue y ascenso #!/us /bin/en py hon # coding: u -8 # In[12]: impo pandas as pd impo os impo numpy as np om sklea n.linea _model impo Linea Reg ession om sklea n.neu al_ne wo k impo MLPReg esso # In[2]: mainpa h = ".. da os ascenso y c uce o" ilename = "Da aA_cleaned.xlsx" da a = pd. ead_excel(mainpa h + "/" + ilename) # In[3]: mainpa h = ".. da os ascenso y c uce o" ilename = "Da a9A_cleaned.xlsx" da a_p ueba = pd. ead_excel(mainpa h + "/" + ilename) # In[4]: da ai=da a[[’_Mach, a io’,’_ele ,_su ’,’ail n,_su ’,’ udd ,_su ’, ’_wind, speed’,’pi ch,__deg’, ’_ oll,__deg’, ’_be a,__deg’, ’__al ,__ind’,’___cl, o al’,’___cd, o al’, ’alpha,__deg’,’alpha,__deg1’, ’alpha,__deg2’]] da ai[’empuje o al’]=da a[’ h s ,_1,lb’]+da a[’ h s ,_2,lb’] da ai[’ pmmedia’]=(da a[’ pm_1,engin’]+da a[’ pm_1,engin’])/2 da ai[’winddi ec ion’]=da a[’_wind,__di ’]-da a[’hding,_ ue’] da ai = da ai. ename(columns={’pi ch,__deg’:’pi ch’,’_Mach, a io’:’Mach’,’_ele ,_su ’:’ele a o su ace’,’ail n,_su ’:’aile onsu ace’,’ udd ,_su ’:’ udde su ace’, ’_wind,speed’:’windspeed’,’pi ch,__deg’:’pi ch’, ’_ oll,__ deg’:’ oll’, ’_be a,__deg’:’slippage’, ’__al ,__ind’:’al i ude’,’___cl, o al’:’CL’,’___cd, o al’:’CD’, ’alpha,__deg’:’AOA1’,’alpha,__deg1’:’AOA2’, ’alpha,__deg2’:’AOA3’}) da ai=da ai.sample( ac=1). ese _index(d op=T ue) 260 Capí ulo 11. Anexo de códigos # In[6]: da a_p uebai=da a_p ueba[[’_Mach, a io’,’_ele ,_su ’,’ail n,_su ’,’ udd ,_ su ’, ’_wind,speed’,’pi ch,__deg’, ’_ oll,__deg’, ’_be a,__deg’, ’__al ,__ ind’,’___cl, o al’,’___cd, o al’, ’alpha,__deg’,’alpha,__deg1’, ’alpha,__ deg2’]] da a_p uebai[’empuje o al’]=da a_p ueba[’ h s ,_1,lb’]+da a_p ueba[’ h s ,_2,lb ’] da a_p uebai[’ pmmedia’]=(da a_p ueba[’ pm_1,engin’]+da a_p ueba[’ pm_1,engin ’])/2 da a_p uebai[’winddi ec ion’]=da a_p ueba[’_wind,__di ’]-da a_p ueba[’hding,_ ue’] da a_p uebai= da a_p uebai. ename(columns={’pi ch,__deg’:’pi ch’,’_Mach, a io ’:’Mach’,’_ele ,_su ’:’ele a o su ace’,’ail n,_su ’:’aile onsu ace’,’ udd ,_su ’:’ udde su ace’, ’_wind,speed’:’windspeed’,’pi ch,__deg’:’ pi ch’, ’_ oll,__deg’:’ oll’, ’_be a,__deg’:’slippage’, ’__al ,__ind’:’ al i ude’,’___cl, o al’:’CL’,’___cd, o al’:’CD’, ’alpha,__deg’:’AOA1’,’ alpha,__deg1’:’AOA2’, ’alpha,__deg2’:’AOA3’}) da a_p uebai=da a_p uebai.sample( ac=1). ese _index(d op=T ue) # In[7]: de clean_da ase (d ): asse isins ance(d , pd.Da aF ame), "d needs o be a pd.Da aF ame" d .d opna(inplace=T ue) indices_ o_keep = ~d .isin([np.nan, np.in , -np.in ]).any(1) e u n d [indices_ o_keep].as ype(np. loa 64) clean_da ase (da ai) clean_da ase (da a_p uebai) da ai.head() # # C eación eg esión # ### Reg esión lineal múl iple # In[11]: da ai = da ai.d op(da ai[da ai[’AOA1’]>11].index) X = da ai[[’Mach’, ’windspeed’, ’al i ude’, ’ pmmedia’, ’CL’]] y = da ai["AOA1"]. alues. eshape(-1, 1) 11.12 Aplicación en di e en es casos 261 eg = Linea Reg ession(). i (X,y) X_p ueba=da a_p uebai[[’Mach’, ’windspeed’, ’al i ude’, ’ pmmedia’, ’CL’]] AOA1_p ed_p ueba = eg.p edic (X_p ueba) da a_p uebai[’AOA1_p ed_p ueba1’]=AOA1_p ed_p ueba # ### Redes neu onales # In[13]: da ai = da ai.d op(da ai[da ai[’AOA1’]>11].index) i=[’Mach’, ’windspeed’, ’pi ch’, ’CL’] Y = da ai["AOA1"]. alues. eshape(-1, 1) Y=Y. a el() X=da ai[i]. alues. eshape(-4,4) eg = MLPReg esso ( andom_s a e=1, max_i e =500). i (X, Y) X_p ueba=da a_p uebai[i]. alues. eshape(-4,4) AOA1_p ed_p ueba= eg .p edic (X_p ueba) da a_p uebai[’AOA1_p ed_p ueba2’]=AOA1_p ed_p ueba # In[14]: da a_p uebai.iloc[600:650,:] # In[ ]: 11.12.2 C uce o #!/us /bin/en py hon # coding: u -8 # In[7]: impo pandas as pd impo os impo numpy as np om sklea n.s m impo SVR om sklea n impo s m 262 Capí ulo 11. Anexo de códigos # In[2]: mainpa h = ".. da os ascenso y c uce o" ilename = "Da aC_cleaned.xlsx" da a = pd. ead_excel(mainpa h + "/" + ilename) # In[3]: mainpa h = ".. da os ascenso y c uce o" ilename = "Da a9C_cleaned.xlsx" da a_p ueba = pd. ead_excel(mainpa h + "/" + ilename) # In[4]: da ai=da a[[’_Mach, a io’,’_ele ,_su ’,’ail n,_su ’,’ udd ,_su ’, ’_wind, speed’,’pi ch,__deg’, ’_ oll,__deg’, ’_be a,__deg’, ’__al ,__ind’,’___cl, o al’,’___cd, o al’, ’alpha,__deg’,’alpha,__deg1’, ’alpha,__deg2’]] da ai[’empuje o al’]=da a[’ h s ,_1,lb’]+da a[’ h s ,_2,lb’] da ai[’ pmmedia’]=(da a[’ pm_1,engin’]+da a[’ pm_1,engin’])/2 da ai[’winddi ec ion’]=da a[’_wind,__di ’]-da a[’hding,_ ue’] da ai = da ai. ename(columns={’pi ch,__deg’:’pi ch’,’_Mach, a io’:’Mach’,’_ele ,_su ’:’ele a o su ace’,’ail n,_su ’:’aile onsu ace’,’ udd ,_su ’:’ udde su ace’, ’_wind,speed’:’windspeed’,’pi ch,__deg’:’pi ch’, ’_ oll,__ deg’:’ oll’, ’_be a,__deg’:’slippage’, ’__al ,__ind’:’al i ude’,’___cl, o al’:’CL’,’___cd, o al’:’CD’, ’alpha,__deg’:’AOA1’,’alpha,__deg1’:’AOA2’, ’alpha,__deg2’:’AOA3’}) da ai=da ai.sample( ac=1). ese _index(d op=T ue) # In[5]: da a_p uebai=da a_p ueba[[’_Mach, a io’,’_ele ,_su ’,’ail n,_su ’,’ udd ,_ su ’, ’_wind,speed’,’pi ch,__deg’, ’_ oll,__deg’, ’_be a,__deg’, ’__al ,__ ind’,’___cl, o al’,’___cd, o al’, ’alpha,__deg’,’alpha,__deg1’, ’alpha,__ deg2’]] da a_p uebai[’empuje o al’]=da a_p ueba[’ h s ,_1,lb’]+da a_p ueba[’ h s ,_2,lb ’] da a_p uebai[’ pmmedia’]=(da a_p ueba[’ pm_1,engin’]+da a_p ueba[’ pm_1,engin ’])/2 da a_p uebai[’winddi ec ion’]=da a_p ueba[’_wind,__di ’]-da a_p ueba[’hding,_ ue’] da a_p uebai= da a_p uebai. ename(columns={’pi ch,__deg’:’pi ch’,’_Mach, a io ’:’Mach’,’_ele ,_su ’:’ele a o su ace’,’ail n,_su ’:’aile onsu ace’,’ udd ,_su ’:’ udde su ace’, ’_wind,speed’:’windspeed’,’pi ch,__deg’:’ 11.12 Aplicación en di e en es casos 263 pi ch’, ’_ oll,__deg’:’ oll’, ’_be a,__deg’:’slippage’, ’__al ,__ind’:’ al i ude’,’___cl, o al’:’CL’,’___cd, o al’:’CD’, ’alpha,__deg’:’AOA1’,’ alpha,__deg1’:’AOA2’, ’alpha,__deg2’:’AOA3’}) da a_p uebai=da a_p uebai.sample( ac=1). ese _index(d op=T ue) # In[6]: de clean_da ase (d ): asse isins ance(d , pd.Da aF ame), "d needs o be a pd.Da aF ame" d .d opna(inplace=T ue) indices_ o_keep = ~d .isin([np.nan, np.in , -np.in ]).any(1) e u n d [indices_ o_keep].as ype(np. loa 64) clean_da ase (da ai) clean_da ase (da a_p uebai) da ai.head() # # C eación eg esión # ### SVM simple # In[8]: X=da ai[["CL"]]. alues. eshape(-1,1) Y=da ai[["AOA1"]]. alues. eshape(-1,1) Y=Y. a el() eg = s m.SVR() eg . i (X, Y) X_p ueba=da a_p uebai["CL"]. alues. eshape(-1,1) AOA1_p ed_p ueba= eg .p edic (X_p ueba) da a_p uebai[’AOA1_p ed_p ueba’]=AOA1_p ed_p ueba # In[ ]: Bibliog a ía 13 Si ios web [1] Sciki s Lea n: h ps://sciki -lea n.o g/s able/ [2] Gi Hub: h ps://gi hub.com/ [3] S ack O e low: h ps://es.s acko e low.com/ [4] Pandas: h ps://pandas.pyda a.o g/pandas-docs/s able/index.h ml [5] Ma plo lib: h ps://ma plo lib.o g/ [6] NumPy: h ps://numpy.o g/ [7] X-Plane 11: h ps://www.x-plane.com/ 14 Lib os [8] Fauzia Ahmad: Big Da a: Lea ning, Analy ics, and Applica ions. [9] Da id Ríos Insua y Da id Gómez-Ulla e O eiza: Big Da a: concep os, ecnologías y aplicaciones. 15 Cu sos [10] Juan Gab iel Comillas: Cu so de Machine Leaning en Py hon. [11] Uni e sidad de Michigan; Da a Science in Py hon. [12] Red de uni e sidades Anáhuac: Modelos p edic i os con Machine Lea ning [13] Apun es de la asigna u a de A ióni a. G ado de ingenie ía ae oespacial, Un ie sidad de Se illa. 16 A ículos [14] Geo ey Holmes, Pia Sa o , S ephen Reed, Paul Sou he n, Kei h Wo den y Elizabe h C oss: P edic ion o landing gea loads using machine lea ning echniques (2016). [15] Desde la cabina de uelo:Los senso es del ángulo de a aque en un a ión (2015). [16] UTC Ae ospace Sys ems:Angle o A ack (AOA) Sys ems. [17] Tu ning poin news: Why Boeing only used one Angle o A ack AOA Senso . [18] Flying: How I Wo ks: Angle o A ack Indica o . [19] Edua do Mo ales: diaposi i as sob e p ocesos gaussianos, Ins i u o Nacional de As o ísica, Óp ica y Elec ónica de México. [20] Redes neu onales a i iciales, ESPOL. [21] ITAé ea: Indus ia ae onáu ica en España [22] Pa ha Adhika i, Ha sha Gu uaja Ra y Ma hias Bude a h: Machine Lea ning based Da a D i en Diagnos ics P ognos ics F amewo k o Ai c a P edic i e Main enance. [23] Zheng Liu, No be Meyendo and Nezih M ad: The Role o Da a Fusion in P edic i e Main enan- ceUsing Digi al Twin. [24] Geo ey Holmes, Pia Sa o , S ephen Reed, Paul Sou he n, Kei h Wo den and Elizabe h C oss: P edic ion o landing gea loads using machine lea ning echniques. 265 266 Capí ulo 11. Bibliog a ía [25] Se gio Manuel Ignacio Co é Ma el: Modelo de de ección de allas y al as pa a sis ema neumé ico de u binas de a iones Boeing 767 a a és de machine lea ning.