πŸ’» Π‘11: ΠŸΡ€Π΅Π΄Π²ΠΈΠ΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° структурата Π½Π° ΠΎΠΏΠ΅Ρ€ΠΎΠ½ со SVMΒΆ

Опис Π½Π° Π±Π°Ρ€Π°ΡšΠ΅

Π”Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΡ‚ Π·Π° ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° структурата Π½Π° ΠΎΠΏΠ΅Ρ€ΠΎΠ½ΠΎΡ‚ кај Π±Π°ΠΊΡ‚Π΅Ρ€ΠΈΡ˜Π°Ρ‚Π° Bacillus subtilis опишан Π²ΠΎ поглавјС 16 ΠΎΠ΄ Ρ‚ΡƒΡ‚ΠΎΡ€ΠΈΡ˜Π°Π»ΠΎΡ‚. Π”Π° сС ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΡ‚ Π½Π° Логистичка Ρ€Π΅Π³Ρ€Π΅ΡΠΈΡ˜Π° ΠΈ Машини со ΠŸΠΎΠ΄Π΄Ρ€ΠΆΡƒΠ²Π°Ρ‡ΠΊΠΈ Π’Π΅ΠΊΡ‚ΠΎΡ€ΠΈ (SVM) ΠΈ Π΄Π° сС спорСдат Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅.

1. Логистичка Ρ€Π΅Π³Ρ€Π΅ΡΠΈΡ˜Π°ΒΆ

16.1.1 Позадина ΠΈ Ρ†Π΅Π»ΠΈΒΆ

Логистичка Ρ€Π΅Π³Ρ€Π΅ΡΠΈΡ˜Π° Π΅ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° Π·Π° Π½Π°Π³Π»Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ ΡƒΡ‡Π΅ΡšΠ΅ (supervised learning), пристап ΠΊΠΎΠΈ сС ΠΎΠ±ΠΈΠ΄ΡƒΠ²Π° Π΄Π° Ρ€Π°Π·Π»ΠΈΠΊΡƒΠ²Π° К класи Π΅Π΄Π½Π° ΠΎΠ΄ Π΄Ρ€ΡƒΠ³Π° со помош Π½Π° тСТинска сума Π½Π° Π½Π΅ΠΊΠΎΠΈ Π°ΠΏΡ€ΠΈΠΎΡ€ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ \(x_i\). Логистичка Ρ€Π΅Π³Ρ€Π΅ΡΡ˜Π° Π΅ ΠΌΠΎΠ΄Π΅Π» кој Π³ΠΎ кориситСмС Π·Π° прСсмСтка Π½Π° Ρ‚Π΅ΠΆΠΈΠ½ΠΈΡ‚Π΅ \(\beta_i\) Π½Π° ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΎΠ΅Π½Π»ΠΈΠ²ΠΈΡ‚Π΅. Π’ΠΎ BioPython, логистичката Ρ€Π΅Π³Ρ€Π΅ΡΠΈΡ˜Π° Π΅ ΠΌΠΎΠ΄Π΅Π» кој ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Π»Π½ΠΎ Π΅ ΠΈΠ·Π²Π΅Π΄Π΅Π½ само Π·Π° Π΄Π²Π΅ класи (К=2); Π±Ρ€ΠΎΡ˜ΠΎΡ‚ Π½Π° ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π΅ΠΌΠ° ΠΏΡ€Π΅Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½ Π»ΠΈΠΌΠΈΡ‚.

Како ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ќС сС ΠΎΠ±ΠΈΠ΄Π΅ΠΌΠ΅ Π΄Π° ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ΠΈΠΌΠ΅ ΠΎΠΏΠ΅Ρ€ΠΎΠ½ Π½Π° Π±Π°ΠΊΡ‚Π΅Ρ€ΠΈΡ˜Π°. ΠžΠΏΠ΅Ρ€ΠΎΠ½ Π΅ ΠΊΠ°ΠΊΠΎ Π·Π±ΠΈΡ€ ΠΎΠ΄ сврзани Π³Π΅Π½ΠΈ Π½Π° иста DNA нишка ΡˆΡ‚ΠΎ сС ΠΏΡ€Π΅Π²Π΅Π΄ΡƒΠ²Π°Π°Ρ‚ (со процСсот Π½Π° Ρ‚Ρ€Π°Π½ΡΠΊΠΈΠΏΡ†ΠΈΡ˜Π°) Π²ΠΎ Π΅Π΄ΠΈΠ½Π΅Ρ‡Π½Π° mRNA ΠΌΠΎΠ»Π΅ΠΊΡƒΠ»Π°. ΠŸΡ€ΠΎΡ†Π΅ΡΠΎΡ‚ Π½Π° Ρ‚Ρ€Π°Π½ΡΠ»Π°Ρ†ΠΈΡ˜Π° ΠΎΠ΄ Π΅Π΄ΠΈΠ½Π΅Ρ‡Π½Π° mRNA ΠΌΠΎΠ»Π΅ΠΊΡƒΠ»Π° ΠΏΠΎΡ‚ΠΎΠ° Π³ΠΈ ΠΏΠΎΠ²Π»Π΅ΠΊΡƒΠ²Π° соодвСнитС ΠΏΡ€ΠΎΡ‚Π΅ΠΈΠ½ΠΈ Π·Π° Ρ‚ΠΎΡ˜ ΠΎΠΏΠ΅Ρ€ΠΎΠ½.

Π—Π° Π±Π°ΠΊΡ‚Π΅Ρ€ΠΈΡ˜Π°Ρ‚Π° Bacillus subtils, Ρ‡ΠΈΠΈ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ќС Π³ΠΈ користимС, Π΅ со просСчСн Π±Ρ€ΠΎΡ˜ Π½Π° Π³Π΅Π½ΠΈ Π²ΠΎ ΠΎΠΏΠ΅Ρ€ΠΎΠ½=2.4.

Како ΠΏΡ€Π² Ρ‡Π΅ΠΊΠΎΡ€ Π²ΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π°ΡšΠ΅ Π½Π° Ρ€Π΅Π³ΡƒΠ»Π°Ρ†ΠΈΡ˜Π° Π½Π° Π³Π΅Π½ΠΈ кај Π±Π°ΠΊΡ‚Π΅Ρ€ΠΈΠΈ, ΠΌΠΎΡ€Π°ΠΌΠ΅ Π΄Π° ја Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌΠ΅ структурата Π½Π° ΠΎΠΏΠ΅Ρ€ΠΎΠ½ΠΎΡ‚. Π—Π° ΠΎΠΊΠΎΠ»Ρƒ 10% ΠΎΠ΄ Π³Π΅Π½ΠΎΡ‚ Π²ΠΎ ΠΎΠ²Π°Π° Π±Π°ΠΊΡ‚Π΅Ρ€ΠΈΡ˜Π° структурата Π½Π° ΠΎΠΏΠ΅Ρ€ΠΎΠ½ΠΎΡ‚ Π΅ ΠΏΠΎΠ·Π½Π°Ρ‚Π° ΠΎΠ΄ СкспСримСнти. Π’ΡƒΠΊΠ° Π²Π»Π΅Π³ΡƒΠ²Π° Π²ΠΎ ΠΈΠ³Ρ€Π° Π½Π°Π΄Π³Π»Π΅Π΄ΡƒΠ²Π°Π½ΠΎΡ‚ΠΎ ΡƒΡ‡Π΅ΡšΠ΅, ΠΊΠΎΠ΅ ΠΊΠ°ΠΊΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆ Π΄Π° слуТи Π·Π° ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° структурата Π½Π°ΠΎΠΏΠ΅Ρ€ΠΎΠ½ΠΎΡ‚ Π·Π° останатитС 90% ΠΎΠ΄ Π³Π΅Π½ΠΈΡ‚Π΅.

Π—Π° Π²Π°ΠΊΠΎΠ² Π½Π°Π΄Π³Π»Π΅Π΄ΡƒΠ²Π°Π½ пристап Π½Π° ΡƒΡ‡Π΅ΡšΠ΅, Ρ‚Ρ€Π΅Π±Π° Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅ΠΌΠ΅ Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ \(x_i\) ΡˆΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ лСсно Π΄Π° сС ΠΈΠ·ΠΌΠ΅Ρ€Π°Ρ‚ ΠΈ Π½Π΅ΠΊΠ°ΠΊΠΎ Π΄Π° сС ΠΏΠΎΠ²Ρ€Π·Π°Π½ΠΈ со структурата Π½Π° ΠΎΠΏΠ΅Ρ€ΠΎΠ½ΠΎΡ‚. Π•Π΄Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π½Π° ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ΡƒΠ²Π°Ρ‡ΠΎΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ Ρ€Π°ΡΡ‚ΠΎΡ˜Π°Π½ΠΈΠ΅Ρ‚ΠΎ Π²ΠΎ Π±Π°Π·Π½ΠΈΡ‚Π΅ ΠΏΠ°Ρ€ΠΎΠ²ΠΈ ΠΏΠΎΠΌΠ΅Ρ“Ρƒ Π³Π΅Π½ΠΈΡ‚Π΅. БосСднитС Π³Π΅Π½ΠΈ ΠΊΠΎΠΈ ΠΏΡ€ΠΈΠΏΠ°Ρ“Π°Π°Ρ‚ Π½Π° истиот ΠΎΠΏΠ΅Ρ€ΠΎΠ½ ΠΈΠΌΠ°Π°Ρ‚ Ρ‚Π΅Π½Π΄Π΅Π½Ρ†ΠΈΡ˜Π° Π΄Π° Π±ΠΈΠ΄Π°Ρ‚ ΠΎΠ΄Π΄Π΅Π»Π΅Π½ΠΈ со Ρ€Π΅Π»Π°Ρ‚ΠΈΠ²Π½ΠΎ ΠΊΡ€Π°Ρ‚ΠΊΠΎ Ρ€Π°ΡΡ‚ΠΎΡ˜Π°Π½ΠΈΠ΅, Π΄ΠΎΠ΄Π΅ΠΊΠ° сосСднитС Π³Π΅Π½ΠΈ Π²ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΎΠΏΠ΅Ρ€ΠΎΠ½ΠΈ ΠΈΠΌΠ°Π°Ρ‚ Ρ‚Π΅Π½Π΄Π΅Π½Ρ†ΠΈΡ˜Π° Π΄Π° ΠΈΠΌΠ°Π°Ρ‚ ΠΏΠΎΠ³ΠΎΠ»Π΅ΠΌ простор ΠΏΠΎΠΌΠ΅Ρ“Ρƒ Π½ΠΈΠ² Π·Π° Π΄Π° ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠ°Ρ‚ сСквСнци Π½Π° ΠΏΡ€ΠΎΠΌΠΎΡ‚ΠΎΡ€ΠΈ ΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ‚ΠΎΡ€ΠΈ. Π”Ρ€ΡƒΠ³Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π½Π° ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ΡƒΠ²Π°Ρ‡ΠΎΡ‚ сС Π±Π°Π·ΠΈΡ€Π° Π½Π° ΠΌΠ΅Ρ€Π΅ΡšΠ° Π½Π° ΠΈΠ·Ρ€Π°Π·ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π³Π΅Π½ΠΈ. По Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΡ˜Π°, Π³Π΅Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΈ ΠΏΡ€ΠΈΠΏΠ°Ρ“Π°Π°Ρ‚ Π½Π° истиот ΠΎΠΏΠ΅Ρ€ΠΎΠ½ ΠΈΠΌΠ°Π°Ρ‚ Π΅Π΄Π½Π°ΠΊΠ²ΠΈ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ Π½Π° гСнска Π΅ΠΊΡΠΏΡ€Π΅ΡΠΈΡ˜Π°, Π΄ΠΎΠ΄Π΅ΠΊΠ° Π³Π΅Π½ΠΈΡ‚Π΅ Π²ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΎΠΏΠ΅Ρ€ΠΎΠ½ΠΈ сС ΠΎΡ‡Π΅ΠΊΡƒΠ²Π° Π΄Π° ΠΈΠΌΠ°Π°Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ Π½Π° ΠΈΠ·Ρ€Π°Π·ΡƒΠ²Π°ΡšΠ΅. Π’ΠΎ пракса, ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ Π½Π° ΠΈΠ·Ρ€Π°Π·ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π³Π΅Π½ΠΈΡ‚Π΅ Π²ΠΎ истиот ΠΎΠΏΠ΅Ρ€ΠΎΠ½ Π½Π΅ сС сосСма ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΈ ΠΏΠΎΡ€Π°Π΄ΠΈ присуството Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ Π²ΠΎ ΠΌΠ΅Ρ€Π΅ΡšΠ΅Ρ‚ΠΎ. Π—Π° Π΄Π° сС ΠΏΡ€ΠΎΡ†Π΅Π½ΠΈ сличноста Π²ΠΎ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ‚Π΅ Π½Π° ΠΈΠ·Ρ€Π°Π·ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π³Π΅Π½ΠΈ, прСтпоставувамС Π΄Π΅ΠΊΠ° Π³Ρ€Π΅ΡˆΠΊΠΈΡ‚Π΅ Π²ΠΎ ΠΌΠ΅Ρ€Π΅ΡšΠ΅Ρ‚ΠΎ слСдат Π½ΠΎΡ€ΠΌΠ°Π»Π½Π° Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΡ˜Π° ΠΈ ја прСсмСтуваат соодвСтната ΠΎΡ†Π΅Π½ΠΊΠ° Π·Π° Π²Π΅Ρ€ΠΎΡ˜Π°Ρ‚Π½ΠΎΡΡ‚ Π·Π° Π½Π°Ρ˜Π°Π²ΡƒΠ²Π°ΡšΠ΅ (log-likelihood score).

Π‘Π΅Π³Π° ΠΈΠΌΠ°ΠΌΠ΅ 2 ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΠ»ΠΈΠ²ΠΈ ΡˆΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π³ΠΈ користима Π·Π° ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π΄Π²Π° сосСдни Π³Π΅Π½ΠΈ Π½Π° Π΅Π΄Π½Π° иста нишка Π½Π° DNA ΠΊΠΎΠΈ ΠΏΡ€ΠΈΠΏΠ°Ρ“Π°Π°Ρ‚ Π½Π° истиот ΠΎΠΏΠ΅Ρ€ΠΎΠ½:

  • \(x_1\): Π±Ρ€ΠΎΡ˜ΠΎΡ‚ Π½Π° Π±Π°Π·Π½ΠΈ ΠΏΠ°Ρ€ΠΎΠ²ΠΈ ΠΌΠ΅Ρ“Ρƒ Π½ΠΈΠ²

  • \(x_2\): сличноста Π²ΠΎ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΎΡ‚ Π½Π° Π΅ΠΊΡΠΏΡ€Π΅ΡΠΈΡ˜Π°

Π’ΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΎΡ‚ Π½Π° логистичка Ρ€Π΅Π³Ρ€Π΅ΡΠΈΡ˜Π°, користимС тСТински суми ΠΎΠ΄ ΠΎΠ²ΠΈΠ΅ Π΄Π²Π΅ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ врСдности Π½Π° прСсСтамС Π·Π°Π΅Π΄Π½ΠΈΡ‡ΠΊΠ° ΠΎΡ†Π΅Π½ΠΊΠ° \(S\):

\[S = \beta_{0} + \beta_{1} + x_1 + \beta_{2} \cdot x_2\]

ΠœΠΎΠ΄Π΅Π»ΠΎΡ‚ Π½Π° логистичка Ρ€Π΅Π³Ρ€Π΅ΡΠΈΡ˜Π° Π½ΠΈ Π΄Π°Π²Π° соодвСтни врСдности Π·Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ \(\beta_{0}, \beta_{1}, \beta_{2}\) ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ Π½Π° Π΄Π²Π° Ρ‚ΠΈΠΏΠ° Π½Π° Π³Π΅Π½ΠΈ (=класи) ΡˆΡ‚ΠΎ Π½ΠΈ слуТат Π·Π° ΠΏΡ€ΠΈΠ΅ΠΌΡ€:

  • ОOP: БосСдни Π³Π΅Π½ΠΈ, Π½Π° иста нишка ΠΎΠ΄ DNA, ΠΏΠΎΠ·Π½Π°Ρ‚ΠΈ Π·Π° Ρ‚ΠΎΠ° Π΄Π΅ΠΊΠ° ΠΏΡ€ΠΈΠΏΠ°Ρ“Π°Π°Ρ‚ Π½Π° истиот ΠΎΠΏΠ΅Ρ€ΠΎΠ½;

  • NOP: БосСдни Π³Π΅Π½ΠΈ, Π½Π° иста нишка ΠΎΠ΄ DNA, ΠΏΠΎΠ·Π½Π°Ρ‚ΠΈ Π·Π° Ρ‚ΠΎΠ° Π΄Π΅ΠΊΠ° ΠΏΡ€ΠΈΠΏΠ°Ρ“Π°Π°Ρ‚ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΎΠΏΠ΅Ρ€ΠΎΠ½ΠΈ;

Π’Π΅Ρ€ΠΎΡ˜Π°Ρ‚Π½ΠΎΡΡ‚Π° Π·Π° ΠΏΡ€ΠΈΠΏΠ°Ρ“Π°ΡšΠ΅ Π½Π° класа зависи ΠΎΠ΄ ΠΎΡ†Π΅Π½ΠΊΠ°Ρ‚Π° ΠΏΡ€Π΅ΠΊΡƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° логистичка Ρ€Π΅Π³Ρ€Π΅ΡΠΈΡ˜Π°. Π—Π° Π΄Π²Π΅Ρ‚Π΅ класи OP, NOP ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π³ΠΎ запишСмС ΠΊΠ°ΠΊΠΎ:

\[Pr(OP|x_1, x_2) = \frac{exp(\beta_{0} + \beta_{1} + x_1 + \beta_{2} \cdot x_2)}{1 + exp(\beta_{0} + \beta_{1} + x_1 + \beta_{2} \cdot x_2)}\]
\[Pr(NOP|x_1, x_2) = \frac{1}{1 + exp(\beta_{0} + \beta_{1} + x_1 + \beta_{2} \cdot x_2)}\]

ΠšΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅Ρ‚ΠΎ Π½Π° повСќС ΠΏΠ°Ρ€ΠΎΠ²ΠΈ ΠΎΠ΄ Π³Π΅Π½ΠΈ Π·Π° ΠΊΠΎΠΈ Π·Π½Π°Π΅ΠΌΠ΅ Π΄Π΅ΠΊΠ° ΠΏΡ€ΠΈΠΏΠ°Ρ“Π°Π°Ρ‚ Π½Π° ист ΠΎΠΏΠ΅Ρ€ΠΎΠ½ (класа OP) ΠΈΠ»ΠΈ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΎΠΏΠ΅Ρ€ΠΎΠΈ (класа NOP), Π½ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° Π³ΠΈ прСсмСтамС Ρ‚Π΅ΠΆΠΈΠ½ΠΈΡ‚Π΅ \(\beta_{0}, \beta_{1}, \beta_{2}\) со ΠΌΠ°ΠΊΡΠΈΠΌΠΈΠΈΡ€Π°ΡšΠ΅ Π½Π° log-likelihood ΡˆΡ‚ΠΎ корСспондира Π½Π° Π²Π΅Ρ€ΠΎΡ˜Π°Ρ‚Π½ΠΎΡΡ‚ΠΈΡ‚Π΅ Π³ΠΎΡ€Π΅ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈ.

16.1.2 Π’Ρ€Π΅Π½ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΌΠΎΠ΄Π΅Π» Π½Π° логистичка Ρ€Π΅Π³Ρ€Π΅ΡΠΈΡ˜Π°ΒΆ

Π’Π°Π±Π΅Π»Π° 16.1 Π³ΠΈ листа Π½Π΅ΠΊΠΎΠΈ ΠΎΠ΄ Π³Π»Π°Π²Π½ΠΈΡ‚Π΅ ΠΏΠ°Ρ€ΠΎΠ²ΠΈ Π½Π° Π³Π΅Π½ΠΈ Π·Π° ΠΊΠΎΠΈ структурата Π½Π° ΠΎΠΏΠ΅Ρ€ΠΎΠΎΡ‚ Π΅ ΠΏΠΎΠ·Π½Π°Ρ‚Π°. Π—Π½Π°Π΅Ρ˜ΡœΠΈ Π³ΠΎ ΠΎΠ²Π° сСга ќС сС ΠΎΠ±ΠΈΠ΄Π΅ΠΌΠ΅ Π΄Π° Π³ΠΎ истрСнирамС ΠΌΠΎΠ΄Π΅Π»ΠΎΡ‚ Π·Π° логистичка Ρ€Π΅Π³Ρ€Π΅ΡΠΈΡ˜Π°.

https://raw.githubusercontent.com/zelenelez/images/master/logisticTable.png

Fig. 2 БосСдни ΠΏΠ°Ρ€ΠΎΠ²ΠΈ ΠΎΠ΄ Π³Π΅Π½ΠΈ ΡˆΡ‚ΠΎ ΠΏΡ€ΠΈΠΏΠ°Ρ“Π°Π°Ρ‚ наист ΠΎΠΏΠ΅Ρ€ΠΎ (класа OP) ΠΈΠ»ΠΈ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΎΠΏΠ΅Ρ€ΠΎΠ½ΠΈ (класа NOP). Π˜Π½Ρ‚Π΅Ρ€Π³Π΅Π½ΡΠΊΠΈ Ρ€Π°ΡΡ‚ΠΎΡ˜Π°Π½ΠΈΠ° сС Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½ΠΈ само Π΄ΠΎΠΊΠΎΠ»ΠΊΡƒ Π΄Π²Π° Π³Π΅Π½Π° сС ΠΏΡ€Π΅ΠΊΠ»ΠΎΠΏΡƒΠ²Π°Π°Ρ‚. [Table 16.1]ΒΆ

from Bio import LogisticRegression
xs = [[-53, -200.78],
          [117, -267.14],
          [57, -163.47],
          [16, -190.30],
          [11, -220.94],
          [85, -193.94],
          [16, -182.71],
          [15, -180.41],
          [-26, -181.73],
          [58, -259.87],
          [126, -414.53],
          [191, -249.57],
          [113, -265.28],
          [145, -312.99],
          [154, -213.83],
          [147, -380.85],
          [93, -291.13]]
ys = [1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          0,
          0,
          0,
          0,
          0,
          0,
          0]
model = LogisticRegression.train(xs, ys)

Π’ΡƒΠΊΠ°, \(x_s\) ΠΈ \(y_s\) сС ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈΡ‚Π΅ Π·Π° Ρ‚Ρ€Π΅Π½ΠΈΡ€Π°ΡšΠ΅:

  • \(x_s\): содрТи ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π·Π° сСкој Π³Π΅Π½

  • \(y_s\): ја спСцифицира класата, Π΄Π°Π»ΠΈ Π³Π΅Π½ΠΎΡ‚ Π΅ ΠΎΠ΄ класа 1, (OP) ΠΈΠ»ΠΈ 0 (NOP)

Π Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π½ΠΈΠΎΡ‚ ΠΌΠΎΠ΄Π΅Π» Π΅ Π·Π°Ρ‡ΡƒΠ²Π°Π½ Π²ΠΎ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°Ρ‚Π° model, ΡˆΡ‚ΠΎ Π³ΠΈ содрТи Ρ‚Π΅ΠΆΠΈΠ½ΠΈΡ‚Π΅ \(\beta_{0}, \beta_{1}, \beta_{2}\):

print(model.beta)
[8.98302901571447, -0.035968960444850887, 0.021813956629835197]

Π’ΡƒΠΊΠ° ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΠΌΠ΅ Π΄Π΅ΠΊΠ° \(\beta_{1}\) Π΅ Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π΅Π½, бидСјќи гСнскитС ΠΏΠ°Ρ€ΠΎΠ²ΠΈ со ΠΏΠΎΠΊΡ€Π°Ρ‚ΠΊΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π³Π΅Π½ΠΎ Ρ€Π°ΡΡ‚ΠΎΡ˜Π°Π½ΠΈΠ΅ ΠΈΠΌΠ°Π°Ρ‚ ΠΏΠΎΠ³ΠΎΠ»Π΅ΠΌΠ° Π²Π΅Ρ€ΠΎΡ˜Π°Ρ‚Π½ΠΎΡΡ‚ Π΄Π° ΠΏΡ€ΠΈΠΏΠ°Ρ“Π°Π°Ρ‚ Π½Π° истиот ΠΎΠΏΠ΅Ρ€ΠΎΠ½ (класа OP). Од Π΄Ρ€ΡƒΠ³Π° страна, \(\beta_{2}\) Π΅ ΠΏΠΎΠ·ΠΈΡ‚ΠΈΠ²Π΅Π½, бидСјќи гСнскитС ΠΏΠ°Ρ€ΠΎΠ²ΠΈ ΠΊΠΎΠΈ ΠΏΡ€ΠΈΠΏΠ°Ρ“Π°Π°Ρ‚ Π½Π° истиот ΠΎΠΏΠ΅Ρ€ΠΎΠ½ ΠΎΠ±ΠΈΡ‡Π½ΠΎ ΠΈΠΌΠ°Π°Ρ‚ повисок Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° сличност Π½Π° Π½ΠΈΠ²Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ Π½Π° ΠΈΠ·Ρ€Π°Π·ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π³Π΅Π½ΠΈ. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Π°Ρ€ΠΎΡ‚ \(\beta_{0}\) Π΅ ΠΏΠΎΠ·ΠΈΡ‚ΠΈΠ²Π΅Π½ ΠΊΠ°ΠΊΠΎ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° повисоката ΠΏΡ€Π΅Π²Π°Π»Π΅Π½Ρ†Π° Π½Π° гСнски ΠΏΠ°Ρ€ΠΎΠ²ΠΈ Π½Π° ΠΎΠΏΠ΅Ρ€ΠΎΠ½ ΠΎΡ‚ΠΊΠΎΠ»ΠΊΡƒ Π½Π΅-опСронскитС Π³Π΅Π½ΠΈ Π²ΠΎ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈΡ‚Π΅ Π·Π° ΠΎΠ±ΡƒΠΊΠ°.

Π€ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π°Ρ‚Π° train ΠΈΠΌΠ° Π΄Π²Π° ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»Π½ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ: update_fn ΠΈ typecode. Од Π΄Π²Π°Ρ‚Π°, update_fn ΠΌΠΎΠΆΠ΅ Π΄Π° сС искористи Π·Π° Π΄Π° сС ΠΎΠ΄Ρ€Π΅Π΄ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° Π·Π° ΠΏΠΎΠ²Ρ€Π°Ρ‚Π΅Π½ ΠΏΠΎΠ²ΠΈΠΊ, зСмајќи Π³ΠΈ ΠΊΠ°ΠΊΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ Π±Ρ€ΠΎΡ˜ΠΎΡ‚ Π½Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡƒΠ²Π°ΡšΠ΅ ΠΈ Π²Π΅Ρ€ΠΎΡ˜Π°Ρ‚Π½ΠΎΡΡ‚Π° Π·Π° Π½Π°Ρ˜Π°Π²ΡƒΠ²Π°ΡšΠ΅. Π‘ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π°Ρ‚Π° Π·Π° ΠΏΠΎΠ²Ρ€Π°Ρ‚Π΅Π½ ΠΏΠΎΠ²ΠΈΠΊ (callback function), ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π° Π³ΠΎ слСдимС Π½Π°ΠΏΡ€Π΅Π΄ΠΎΠΊΠΎΡ‚ Π½Π° прСсмСтката Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΎΡ‚ (кој користи ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡƒΠ²Π°ΡšΠ΅ Π½Π° Newton-Raphson Π·Π° Π΄Π° ја Π·Π³ΠΎΠ»Π΅ΠΌΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π°Ρ‚Π° Π·Π° Π²Π΅Ρ€ΠΎΡ˜Π°Ρ‚Π½ΠΎΡΡ‚ Π·Π° Π½Π°Ρ˜Π°Π²ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΎΡ‚ Π½Π° логистичка Ρ€Π΅Π³Ρ€Π΅ΡΠΈΡ˜Π°):

def show_progress(iteration, loglikelihood):
    print("Iteration:", iteration, "Log-likelihood function:", loglikelihood)

model = LogisticRegression.train(xs, ys, update_fn=show_progress)
Iteration: <built-in function iter> Log-likelihood function: -11.78350206951907
Iteration: <built-in function iter> Log-likelihood function: -7.158867676721056
Iteration: <built-in function iter> Log-likelihood function: -5.768772098679432
Iteration: <built-in function iter> Log-likelihood function: -5.113622943382592
Iteration: <built-in function iter> Log-likelihood function: -4.748706424325652
Iteration: <built-in function iter> Log-likelihood function: -4.50026077146048
Iteration: <built-in function iter> Log-likelihood function: -4.311277737371034
Iteration: <built-in function iter> Log-likelihood function: -4.1601504339559465
Iteration: <built-in function iter> Log-likelihood function: -4.035617197847367
Iteration: <built-in function iter> Log-likelihood function: -3.93073282192017
Iteration: <built-in function iter> Log-likelihood function: -3.8408766092914273
Iteration: <built-in function iter> Log-likelihood function: -3.762825606050504
Iteration: <built-in function iter> Log-likelihood function: -3.69425027154435
Iteration: <built-in function iter> Log-likelihood function: -3.63341786019592
Iteration: <built-in function iter> Log-likelihood function: -3.579008558366153
Iteration: <built-in function iter> Log-likelihood function: -3.529996713864589
Iteration: <built-in function iter> Log-likelihood function: -3.4855714516343337
Iteration: <built-in function iter> Log-likelihood function: -3.4450820613930997
Iteration: <built-in function iter> Log-likelihood function: -3.4079994844651083
Iteration: <built-in function iter> Log-likelihood function: -3.3738885623997366
Iteration: <built-in function iter> Log-likelihood function: -3.3423876581020284
Iteration: <built-in function iter> Log-likelihood function: -3.3131934376911234
Iteration: <built-in function iter> Log-likelihood function: -3.286049334600595
Iteration: <built-in function iter> Log-likelihood function: -3.2607366863005254
Iteration: <built-in function iter> Log-likelihood function: -3.2370678409148406
Iteration: <built-in function iter> Log-likelihood function: -3.214880736138568
Iteration: <built-in function iter> Log-likelihood function: -3.194034592585724
Iteration: <built-in function iter> Log-likelihood function: -3.1744064605163884
Iteration: <built-in function iter> Log-likelihood function: -3.1558884270318726
Iteration: <built-in function iter> Log-likelihood function: -3.138385339473235
Iteration: <built-in function iter> Log-likelihood function: -3.121812935946028
Iteration: <built-in function iter> Log-likelihood function: -3.1060962996567087
Iteration: <built-in function iter> Log-likelihood function: -3.0911685728203993
Iteration: <built-in function iter> Log-likelihood function: -3.076969880170042
Iteration: <built-in function iter> Log-likelihood function: -3.0634464228770586
Iteration: <built-in function iter> Log-likelihood function: -3.050549711911315
Iteration: <built-in function iter> Log-likelihood function: -3.0382359161858656
Iteration: <built-in function iter> Log-likelihood function: -3.026465305727712
Iteration: <built-in function iter> Log-likelihood function: -3.015201773938085
Iteration: <built-in function iter> Log-likelihood function: -3.0044124260112417
Iteration: <built-in function iter> Log-likelihood function: -2.994067222959573
Iteration: <built-in function iter> Log-likelihood function: -2.9841386725875947

Π˜Ρ‚Π΅Ρ€Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° застнува ΡˆΡ‚ΠΎΠΌ Π·Π³ΠΎΠ»Π΅ΠΌΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° log-likelihood Ρ„ΡƒΠ½Ρ†ΠΈΡ˜Π°Ρ‚Π° Π΅ ΠΏΠΎΠΌΠ°Π»ΠΎ ΠΎΠ΄ 0.01. Ако Π½Π΅ настанува Π½ΠΈΠΊΠ°ΠΊΠ²Π° ΠΊΠΎΠ½Π²Π΅Ρ€Π³Π΅Π½Ρ†ΠΈΡ˜Π° ΠΏΠΎ 500 ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡƒΠ²Π°ΡšΠ°, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π°Ρ‚Π° train Π²Ρ€Π°ΡœΠ° Π³Ρ€Π΅ΡˆΠΊΠ° ΠΎΠ΄ Ρ‚ΠΈΠΏ AssertionError

16.1.3 ΠšΠ»Π°ΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° со Логистичка Π Π΅Π³Ρ€Π΅ΡΠΈΡ˜Π°ΒΆ

ΠšΠ»Π°ΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° сС ΠΏΡ€ΠΈΠΌΠ΅Π½ΡƒΠ²Π° со ΠΏΠΎΠ²ΠΈΠΊΡƒΠ²Π°ΡšΠ΅ Π½Π° classify Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π°Ρ‚Π°. ΠŸΡ€ΠΈ Π΄Π°Π΄Π΅Π½ ΠΌΠΎΠ΄Π΅Π» Π·Π° логистичка Ρ€Π΅Π³Ρ€Π΅ΡΠΈΡ˜Π° ΠΈ врСдноститС \(x_1\) ΠΈ \(x_2\) (Π·Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠ°Ρ€ Π³Π΅Π½ΠΈ Π·Π° ΠΊΠΎΠΈ Π½Π΅ Π·Π½Π°Π΅ΠΌΠ΅ Π½Π° ΠΊΠ°ΠΊΠΎΠ² ΠΎΠΏΠ΅Ρ€ΠΎΠ½ ΠΏΡ€ΠΈΠΏΠ°Ρ“Π°Π°Ρ‚), ΠΎΠ²Π°Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π°Ρ‚Π° Π²Ρ€Π°ΡœΠ° 1 ΠΈΠ»ΠΈ 0, ΡˆΡ‚ΠΎ корСспондира Π·Π° Ρ‚ΠΎΠ° Π΄Π°Π»ΠΈ ΠΏΡ€ΠΈΠΏΠ°Ρ“Π°Π°Ρ‚ Π½Π° ист ΠΎΠΏΠ΅Ρ€ΠΎΠ½ (класа OP) ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠΏΠ°Ρ“Π°Π°Ρ‚ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½ ΠΎΠΏΠ΅Ρ€ΠΎΠ½ (класа NOP).

На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄Π° ја Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ слСдната ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡ˜Π° Π½Π° ΠΏΠ°Ρ€ΠΎΠ²ΠΈ ΠΎΠ΄ Π³Π΅Π½ΠΈ \(yxcE\), \(yxcD\), \(yxiA\), \(yxiB\):

https://raw.githubusercontent.com/zelenelez/images/master/genePairs.png

Fig. 3 БосСдни ΠΏΠ°Ρ€ΠΎΠ²ΠΈ Π³Π΅Π½ΠΈ Π·Π° кој припадноста Π½Π° ΠΎΠΏΠ΅Ρ€ΠΎΠ½ΠΎΡ‚ Π΅ Π½Π΅ΠΏΠΎΠ·Π½Π°Ρ‚Π° [Table 16.2]ΒΆ

print("yxcE, yxcD:", LogisticRegression.classify(model, [6, -173.143442352]))
yxcE, yxcD: 1
print("yxiB, yxiA:", LogisticRegression.classify(model, [309, -271.005880394]))
yxiB, yxiA: 0

Π—Π° Π΄Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ΅ΠΌΠ΅ ΠΊΠΎΠ»ΠΊΡƒ ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ΠΌΠ΅ самоувСрСни Π²ΠΎ ΠΎΠ²ΠΈΠ΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ΡƒΠ²Π°ΡšΠ°, ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° ја ΠΏΠΎΠ²ΠΈΠΊΠ°ΠΌΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π°Ρ‚Π° Π·Π° ΠΏΡ€Π΅ΡΠΌΠ΅Ρ‚ΡƒΠ²Π°ΡšΠ΅ Π·Π° Π΄Π° Π³ΠΈ Π΄ΠΎΠ±ΠΈΠ΅ΠΌΠ΅ Π²Π΅Ρ€ΠΎΡ˜Π°Ρ‚Π½ΠΎΡΡ‚ΠΈΡ‚Π΅ (Ρ€Π°Π²Π΅Π½ΠΊΠΈΡ‚Π΅ Π³ΠΎΡ€Π΅) Π·Π° класитС OP ΠΈ NOP.

Π—Π° \(yxcE\), \(yxcD\) Π΄ΠΎΠΈΠ²Π°ΠΌΠ΅:

q, p = LogisticRegression.calculate(model, [6, -173.143442352])
print("class OP: probability =", p, "class NOP: probability =", q)
class OP: probability = 0.9932421635025626 class NOP: probability = 0.006757836497437442

ΠΈ Π·Π° \(yxiA\), \(yxiB\):

q, p = LogisticRegression.calculate(model, [309, -271.005880394])
print("class OP: probability =", p, "class NOP: probability =", q)
class OP: probability = 0.00032121125181733316 class NOP: probability = 0.9996787887481826

Π—Π° Π΄Π° Π΄ΠΎΠ±ΠΈΠ΅ΠΌΠ΅ идСја Π·Π° точноста Π½Π° ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ΡƒΠ²Π°ΡšΠ°Ρ‚Π° Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΎΡ‚ Π½Π° логистичка Ρ€Π΅Π³Ρ€Π΅ΡΠΈΡ˜Π°, ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° ја ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠ΅ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈΡ‚Π΅ Π·Π° ΡƒΡ‡Π΅ΡšΠ΅:

for i in range(len(ys)):
    print("True:", ys[i], "Predicted:", LogisticRegression.classify(model, xs[i]))
True: 1 Predicted: 1
True: 1 Predicted: 0
True: 1 Predicted: 1
True: 1 Predicted: 1
True: 1 Predicted: 1
True: 1 Predicted: 1
True: 1 Predicted: 1
True: 1 Predicted: 1
True: 1 Predicted: 1
True: 1 Predicted: 1
True: 0 Predicted: 0
True: 0 Predicted: 0
True: 0 Predicted: 0
True: 0 Predicted: 0
True: 0 Predicted: 0
True: 0 Predicted: 0
True: 0 Predicted: 0

ΠΏΠΎΠΊΠ°ΠΆΡƒΠ²Π°Ρ˜ΡœΠΈ Π΄Π΅ΠΊΠ° ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ Π·Π° ситС, освСн Π·Π° Π΅Π΄Π΅Π½ гСнски ΠΏΠ°Ρ€ΠΎΠ²ΠΈ. ΠŸΠΎΡΠΈΠ³ΡƒΡ€Π½Π° ΠΏΡ€ΠΎΡ†Π΅Π½ΠΊΠ° Π½Π° точноста Π½Π° ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ΡƒΠ²Π°ΡšΠ°Ρ‚Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС најдС ΠΎΠ΄ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚Π° Π·Π° ΠΎΡΡ‚Π°Π²Π°ΡšΠ΅ Π΅Π΄Π½ΠΎ, Π²ΠΎ која ΠΌΠΎΠ΄Π΅Π»ΠΎΡ‚ сС прСсмСтува ΠΎΠ΄ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈΡ‚Π΅ Π·Π° ΠΎΠ±ΡƒΠΊΠ° ΠΎΡ‚ΠΊΠ°ΠΊΠΎ ќС сС отстрани Π³Π΅Π½ΠΎΡ‚ ΡˆΡ‚ΠΎ Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ΠΈ:

from Bio import LogisticRegression
dataset_len = len(ys)
pred_LR = 0 

for i in range(len(ys)):
    model = LogisticRegression.train(xs[:i]+xs[i+1:], ys[:i]+ys[i+1:])
    print("True:", ys[i], "Predicted:", LogisticRegression.classify(model, xs[i]))
    if ys[i] == LogisticRegression.classify(model, xs[i]):
        pred_LR += 1

print(f"\nΠŸΡ€Π΅Ρ†ΠΈΠ·Π½ΠΎΡΡ‚(LR): {pred_LR/dataset_len * 100:.2f}%")
True: 1 Predicted: 1
True: 1 Predicted: 0
True: 1 Predicted: 1
True: 1 Predicted: 1
True: 1 Predicted: 1
True: 1 Predicted: 1
True: 1 Predicted: 1
True: 1 Predicted: 1
True: 1 Predicted: 1
True: 1 Predicted: 1
True: 0 Predicted: 0
True: 0 Predicted: 0
True: 0 Predicted: 0
True: 0 Predicted: 0
True: 0 Predicted: 1
True: 0 Predicted: 0
True: 0 Predicted: 0

ΠŸΡ€Π΅Ρ†ΠΈΠ·Π½ΠΎΡΡ‚(LR): 88.24%

Π’ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π΅ исто Ρ‚Π°ΠΊΠ° Π½Π°Π²Π΅Π΄Π΅Π½ΠΎ Π΄Π΅ΠΊΠ° прСцизноста Π΅ 88% со ΡˆΡ‚ΠΎ овој ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΅ Ρ€Π΅ΠΏΡ€ΠΎΠ΄ΡƒΡ†ΠΈΡ€Π°Π½ ΠΈ Ρ‚ΡƒΠΊΠ°.

2. Машини со ΠŸΠΎΠ΄Π΄Ρ€ΠΆΡƒΠ²Π°Ρ‡ΠΊΠΈ Π’Π΅ΠΊΡ‚ΠΎΡ€ΠΈ (SVM)ΒΆ

ΠŸΡ€Π΅Π΄Π½ΠΎΡΡ‚ΠΈΡ‚Π΅ Π½Π° ΠΌΠ°ΡˆΠΈΠ½ΠΈΡ‚Π΅ Π·Π° ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π½Π° Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΈ сС:

  • Π•Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ Π²ΠΎ високо-Π΄ΠΈΠΌΠ΅Π½Π·ΠΈΠΎΠ½Π°Π»Π½ΠΈ простори.

  • Π‘Γ¨ ΡƒΡˆΡ‚Π΅ Π΅ Сфикасно Π²ΠΎ случаи ΠΊΠΎΠ³Π° Π±Ρ€ΠΎΡ˜ΠΎΡ‚ Π½Π° Π΄ΠΈΠΌΠ΅Π½Π·ΠΈΠΈ Π΅ ΠΏΠΎΠ³ΠΎΠ»Π΅ΠΌ ΠΎΠ΄ Π±Ρ€ΠΎΡ˜ΠΎΡ‚ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΡ†ΠΈ.

  • ΠšΠΎΡ€ΠΈΡΡ‚ΠΈ подмноТСство Π½Π° Ρ‚ΠΎΡ‡ΠΊΠΈ Π·Π° ΠΎΠ±ΡƒΠΊΠ° Π²ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° ΠΎΠ΄Π»ΡƒΠΊΠ° (Π½Π°Ρ€Π΅Ρ‡Π΅Π½ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΈ Π·Π° ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ°), Ρ‚Π°ΠΊΠ° ΡˆΡ‚ΠΎ Π΅ исто Ρ‚Π°ΠΊΠ° Сфикасна Π²ΠΎ ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°Ρ‚Π°.

  • Разноврсна: Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° Ρ˜Π°Π΄Ρ€ΠΎΡ‚ΠΎ ΠΌΠΎΠΆΠ°Ρ‚ Π΄Π° Π±ΠΈΠ΄Π°Ρ‚ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈ Π·Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° ΠΎΠ΄Π»ΡƒΠΊΠ°. Π”Π°Π΄Π΅Π½ΠΈ сС Π·Π°Π΅Π΄Π½ΠΈΡ‡ΠΊΠΈ Ρ˜Π°Π΄Ρ€Π°, Π½ΠΎ исто Ρ‚Π°ΠΊΠ° Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° сС спСцифицираат ΠΏΡ€ΠΈΠ»Π°Π³ΠΎΠ΄Π΅Π½ΠΈ Ρ˜Π°Π΄Ρ€Π°.

НСдостатоцитС Π½Π° ΠΌΠ°ΡˆΠΈΠ½ΠΈΡ‚Π΅ Π·Π° ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π½Π° Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΈ Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π°Π°Ρ‚:

  • Ако Π±Ρ€ΠΎΡ˜ΠΎΡ‚ Π½Π° ΠΎΠ΄Π»ΠΈΠΊΠΈ Π΅ ΠΌΠ½ΠΎΠ³Ρƒ ΠΏΠΎΠ³ΠΎΠ»Π΅ΠΌ ΠΎΠ΄ Π±Ρ€ΠΎΡ˜ΠΎΡ‚ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΡ†ΠΈ, ΠΈΠ·Π±Π΅Π³Π½ΡƒΠ²Π°Ρ˜Ρ‚Π΅ ΠΏΡ€Π΅Ρ‚Π΅Ρ€Π°Π½ΠΎ ΠΏΡ€ΠΈΠ»Π°Π³ΠΎΠ΄ΡƒΠ²Π°ΡšΠ΅ ΠΏΡ€ΠΈ ΠΈΠ·Π±ΠΎΡ€ΠΎΡ‚ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ Π½Π° Ρ˜Π°Π΄Ρ€ΠΎΡ‚ΠΎ, Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΡ‚ Π·Π° Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€Π°ΡšΠ΅ Π΅ ΠΊΠ»ΡƒΡ‡Π΅Π½.

  • SVM Π½Π΅ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π°Π°Ρ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΏΡ€ΠΎΡ†Π΅Π½ΠΊΠΈ Π½Π° Π²Π΅Ρ€ΠΎΡ˜Π°Ρ‚Π½ΠΎΡΡ‚Π°, Ρ‚ΠΈΠ΅ сС прСсмСтуваат со ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° Π½Π° скапа Π²Ρ‚ΠΎΡ€ΠΈ-вкрстСна Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡ˜Π° (Π²ΠΈΠ΄Π΅Ρ‚Π΅ Π Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ ΠΈ Π²Π΅Ρ€ΠΎΡ˜Π°Ρ‚Π½ΠΎΡΡ‚ΠΈ ΠΏΠΎΠ΄ΠΎΠ»Ρƒ).

SVC ΠΈ NuSVC сС слични ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ, Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ°Π°Ρ‚ ΠΌΠ°Π»ΠΊΡƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π³Ρ€ΡƒΠΏΠΈ Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ ΠΈ ΠΈΠΌΠ°Ρ‚Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡ΠΊΠΈ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π°Ρ†ΠΈΠΈ. Од Π΄Ρ€ΡƒΠ³Π° страна, LinearSVC Π΅ Π΄Ρ€ΡƒΠ³Π° (ΠΏΠΎΠ±Ρ€Π·Π°) ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° Π½Π° ΠΊΠ»Π°ΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° Π½Π° Π²Π΅ΠΊΡ‚ΠΎΡ€ Π·Π° ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π·Π° ΡΠ»ΡƒΡ‡Π°Ρ˜ Π½Π° Π»ΠΈΠ½Π΅Π°Ρ€Π½ΠΎ kernel. Π—Π°Π±Π΅Π»Π΅ΠΆΠ΅Ρ‚Π΅ Π΄Π΅ΠΊΠ° LinearSVC Π½Π΅ ΠΏΡ€ΠΈΡ„Π°ΡœΠ° Ρ˜Π°Π΄Ρ€ΠΎ Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅, бидСјќи сС прСтпоставува Π΄Π΅ΠΊΠ° Π΅ Π»ΠΈΠ½Π΅Π°Ρ€Π½ΠΎ.

Како ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ класификатори, SVC, NuSVC ΠΈ LinearSVC ΠΏΡ€ΠΈΠΌΠ°Π°Ρ‚ Π½Π° Π²Π»Π΅Π· Π΄Π²Π΅ Π½ΠΈΠ·ΠΈ: Π½ΠΈΠ·Π° X ΠΎΠ΄ ΠΎΠ±Π»ΠΈΠΊ (n_samples, n_features) која Π³ΠΈ содрТи Ρ‚Ρ€Π΅Π½ΠΈΡ€Π°Ρ‡ΠΊΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΡ†ΠΈ ΠΈ Π½ΠΈΠ·Π° y ΠΎΠ΄ Π»Π°Π±Π΅Π»ΠΈ Π·Π° класата Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΡ†ΠΈΡ‚Π΅ (ΠΈΠ»ΠΈ ΠΈΠ½Ρ‚ΠΈΠ³Π΅Ρ€ΠΈ ΠΈΠ»ΠΈ стрингови) ΠΎΠ΄ ΠΎΠ±Π»ΠΈΠΊ (n_samples):

from sklearn import svm

clf = svm.SVC()
X = xs
y = ys
clf.fit(X, y)
SVC()

ΠŸΡ€Π΅ΡΠΌΠ΅Ρ‚ΡƒΠ²Π°ΡšΠ΅ Π½Π° прСцизност:

dataset_len = len(ys)
pred_SVM = 0 
for i in range(len(ys)):
    result = clf.predict([xs[i]])
    print("True:", ys[i], "Predicted:", result[0])
    if ys[i] == result[0]:
        pred_SVM+=1

print(f"\nΠŸΡ€Π΅Ρ†ΠΈΠ·Π½ΠΎΡΡ‚ (SVM): {pred_SVM/dataset_len * 100:.2f}%")
True: 1 Predicted: 1
True: 1 Predicted: 0
True: 1 Predicted: 1
True: 1 Predicted: 1
True: 1 Predicted: 1
True: 1 Predicted: 1
True: 1 Predicted: 1
True: 1 Predicted: 1
True: 1 Predicted: 1
True: 1 Predicted: 1
True: 0 Predicted: 0
True: 0 Predicted: 0
True: 0 Predicted: 0
True: 0 Predicted: 0
True: 0 Predicted: 0
True: 0 Predicted: 0
True: 0 Predicted: 0

ΠŸΡ€Π΅Ρ†ΠΈΠ·Π½ΠΎΡΡ‚ (SVM): 94.12%

Π‘ΠΏΠΎΡ€Π΅Π΄Π±Π° Π½Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΈΒΆ

ΠœΠΎΠ΄Π΅Π»ΠΎΡ‚ Π½Π° логистичка Ρ€Π΅Π³Ρ€Π΅ΡΠΈΡ˜Π° Π΅ сличСн Π½Π° Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚Π° Π½Π° Π»ΠΈΠ½Π΅Π°Ρ€Π½Π° Π΄ΠΈΡΠΊΡ€ΠΈΠΌΠΈΠ½Π°Ρ†ΠΈΡ˜Π°. Π’ΠΎ Π»ΠΈΠ½Π΅Π°Ρ€Π½Π° Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° Π΄ΠΈΡΠΊΡ€ΠΈΠΌΠΈΠ½Π°Ρ†ΠΈΡ˜Π°, Π²Π΅Ρ€ΠΎΡ˜Π°Ρ‚Π½ΠΎΡΡ‚Π° Π½Π° класата исто Ρ‚Π°ΠΊΠ° Π³ΠΈ слСди Ρ€Π°Π²Π΅Π½ΠΊΠΈΡ‚Π΅ ΠΎΠ΄ Π³ΠΎΡ€Π΅. Π‘Π΅ΠΏΠ°ΠΊ, намСсто Π΄Π° Π³ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π½ΡƒΠ²Π°ΠΌΠ΅ ΠΊΠΎΠ΅Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚ΠΈΡ‚Π΅ \(\beta\) Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ, Π½ΠΈΠ΅ ΠΏΡ€Π²ΠΎ ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π°ΠΌΠ΅ Π½Π° Π½ΠΎΡ€ΠΌΠ°Π»Π½Π° Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΡ˜Π° Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡ‚Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ΡƒΠ²Π°Ρ‡ΠΈ \(x\). Вогаш ΠΊΠΎΠ΅Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚ΠΈΡ‚Π΅ \(\beta\) сС прСсмСтуваат ΠΎΠ΄ срСдствата ΠΈ ΠΊΠΎΠ²Π°Ρ€ΠΈΡ˜Π°Π½Ρ‚ΠΈΡ‚Π΅ Π½Π° Π½ΠΎΡ€ΠΌΠ°Π»Π½Π°Ρ‚Π° Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΡ˜Π°. Ако Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° x Π΅ навистина Π½ΠΎΡ€ΠΌΠ°Π»Π½Π°, Ρ‚ΠΎΠ³Π°Ρˆ ΠΎΡ‡Π΅ΠΊΡƒΠ²Π°ΠΌΠ΅ Π»ΠΈΠ½Π΅Π°Ρ€Π½Π° дискриминаторска Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π° сС прСтстави ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΎ ΠΎΠ΄ ΠΌΠΎΠ΄Π΅Π»ΠΎΡ‚ Π½Π° логистичка Ρ€Π΅Π³Ρ€Π΅ΡΠΈΡ˜Π°. Од Π΄Ρ€ΡƒΠ³Π° страна, ΠΌΠΎΠ΄Π΅Π»ΠΎΡ‚ Π½Π° логистичка Ρ€Π΅Π³Ρ€Π΅ΡΠΈΡ˜Π° Π΅ поцврст ΠΊΠΎΠ½ ΠΎΡ‚ΡΡ‚Π°ΠΏΡƒΠ²Π°ΡšΠ°Ρ‚Π° ΠΎΠ΄ нормалноста.

Π”Ρ€ΡƒΠ³ сличСн пристап Π΅ машина Π·Π° ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π½Π° Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΈ со Π»ΠΈΠ½Π΅Π°Ρ€Π½ΠΎ Ρ˜Π°Π΄Ρ€ΠΎ (Support Vector Machines - SVM). Π’Π°ΠΊΠ²ΠΈΠΎΡ‚ SVM користи ΠΈ Π»ΠΈΠ½Π΅Π°Ρ€Π½Π° ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡ˜Π° Π½Π° ΠΏΡ€Π΅Π΄ΠΈΠΊΡ‚ΠΎΡ€ΠΈΡ‚Π΅, Π½ΠΎ Π³ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π½ΡƒΠ²Π° ΠΊΠΎΠ΅Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚ΠΈΡ‚Π΅ Ξ² ΠΎΠ΄ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡ‚Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ΡƒΠ²Π°Ρ‡ΠΈ x Π±Π»ΠΈΠ·Ρƒ Π³Ρ€Π°Π½ΠΈΡ‡Π½ΠΈΠΎΡ‚ Ρ€Π΅Π³ΠΈΠΎΠ½ ΠΏΠΎΠΌΠ΅Ρ“Ρƒ класи. Ако ΠΌΠΎΠ΄Π΅Π»ΠΎΡ‚ Π½Π° логистичка Ρ€Π΅Π³Ρ€Π΅ΡΠΈΡ˜Π° (Ρ€Π°Π²Π΅Π½ΠΊΠΈ ΠΎΠ΄ Π³ΠΎΡ€Π΅) Π΅ Π΄ΠΎΠ±Π°Ρ€ опис Π·Π° \(x\) ΠΏΠΎΠ΄Π°Π»Π΅ΠΊΡƒ ΠΎΠ΄ Π³Ρ€Π°Π½ΠΈΡ‡Π½ΠΈΠΎΡ‚ Ρ€Π΅Π³ΠΈΠΎΠ½, ΠΎΡ‡Π΅ΠΊΡƒΠ²Π°ΠΌΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΎΡ‚ Π½Π° логистичка Ρ€Π΅Π³Ρ€Π΅ΡΠΈΡ˜Π° Π΄Π° ΠΈΠΌΠ° ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ ΠΎΠ΄ SVM со Π»ΠΈΠ½Π΅Π°Ρ€Π½ΠΎ Ρ˜Π°Π΄Ρ€ΠΎ, бидСјќи сС ΠΏΠΎΡ‚ΠΏΠΈΡ€Π° Π½Π° повСќС ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ . Ако Π½Π΅, SVM со Π»ΠΈΠ½Π΅Π°Ρ€Π½ΠΎ Ρ˜Π°Π΄Ρ€ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС прСтстави ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΎ.

# Π§ΠΈΡ‚Π°Ρ˜ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ
import pandas
import matplotlib.pyplot as plt
from sklearn import model_selection
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC

# Ρ‡ΠΈΡ‚Π°Ρ˜ Π΄Π°Ρ‚Π°
X = xs
Y = ys

# спрСми ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π° Π·Π° крос Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡ˜Π° (test harness)
seed = 2

# спрСми ΠΌΠΎΠ΄Π΅Π»ΠΈ Π²ΠΎ листа со имиња
models = []
models.append(('LR', LogisticRegression()))
models.append(('SVM', SVC()))

# Π΅Π²Π°Π»ΡƒΠΈΡ€Π°Ρ˜ ΠΌΠΎΠ΄Π΅Π»
results = []
names = []
scoring = 'accuracy'

for name, model in models:
    kfold = model_selection.KFold(n_splits=10, shuffle=True, random_state=seed)
    cv_results = model_selection.cross_val_score(model, X, Y, cv=kfold, scoring=scoring)
    results.append(cv_results)
    names.append(name)
    msg = "(%s) ΠŸΡ€ΠΎΡΠ΅ΠΊ acc: %.2f , Π‘Ρ‚Π°Ρ€Π΄Π½Π° Π΄Π΅Π²ΠΈΡ˜Π°Ρ†ΠΈΡ˜Π° acc: %.2f" % (name, cv_results.mean(), cv_results.std())
    print()
    if name == 'SVM':
        print("Suport vector machine", end="")
        print(f"\nΠŸΡ€Π΅Ρ†ΠΈΠ·Π½ΠΎΡΡ‚: {pred_SVM/dataset_len * 100:.2f}%")
    else: 
        print("Логистичка Ρ€Π΅Π³Ρ€Π΅ΡΠΈΡ˜Π°", end="")
        print(f"\nΠŸΡ€Π΅Ρ†ΠΈΠ·Π½ΠΎΡΡ‚: {pred_LR/dataset_len * 100:.2f}%")
    print(msg)
    
# boxplot спорСдба
fig = plt.figure()
fig.suptitle('Box plot спорСдба')
ax = fig.add_subplot(111)
plt.boxplot(results)
ax.set_xticklabels(names)
plt.show()
Логистичка Ρ€Π΅Π³Ρ€Π΅ΡΠΈΡ˜Π°
ΠŸΡ€Π΅Ρ†ΠΈΠ·Π½ΠΎΡΡ‚: 88.24%
(LR) ΠŸΡ€ΠΎΡΠ΅ΠΊ acc: 0.85 , Π‘Ρ‚Π°Ρ€Π΄Π½Π° Π΄Π΅Π²ΠΈΡ˜Π°Ρ†ΠΈΡ˜Π° acc: 0.23

Suport vector machine
ΠŸΡ€Π΅Ρ†ΠΈΠ·Π½ΠΎΡΡ‚: 94.12%
(SVM) ΠŸΡ€ΠΎΡΠ΅ΠΊ acc: 0.95 , Π‘Ρ‚Π°Ρ€Π΄Π½Π° Π΄Π΅Π²ΠΈΡ˜Π°Ρ†ΠΈΡ˜Π° acc: 0.15
../_images/B11_34_1.png