π» Π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\):
ΠΠΎΠ΄Π΅Π»ΠΎΡ Π½Π° Π»ΠΎΠ³ΠΈΡΡΠΈΡΠΊΠ° ΡΠ΅Π³ΡΠ΅ΡΠΈΡΠ° Π½ΠΈ Π΄Π°Π²Π° ΡΠΎΠΎΠ΄Π²Π΅ΡΠ½ΠΈ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ Π·Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ \(\beta_{0}, \beta_{1}, \beta_{2}\) ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ Π½Π° Π΄Π²Π° ΡΠΈΠΏΠ° Π½Π° Π³Π΅Π½ΠΈ (=ΠΊΠ»Π°ΡΠΈ) ΡΡΠΎ Π½ΠΈ ΡΠ»ΡΠΆΠ°Ρ Π·Π° ΠΏΡΠΈΠ΅ΠΌΡ:
ΠOP: Π‘ΠΎΡΠ΅Π΄Π½ΠΈ Π³Π΅Π½ΠΈ, Π½Π° ΠΈΡΡΠ° Π½ΠΈΡΠΊΠ° ΠΎΠ΄ DNA, ΠΏΠΎΠ·Π½Π°ΡΠΈ Π·Π° ΡΠΎΠ° Π΄Π΅ΠΊΠ° ΠΏΡΠΈΠΏΠ°ΡΠ°Π°Ρ Π½Π° ΠΈΡΡΠΈΠΎΡ ΠΎΠΏΠ΅ΡΠΎΠ½;
NOP: Π‘ΠΎΡΠ΅Π΄Π½ΠΈ Π³Π΅Π½ΠΈ, Π½Π° ΠΈΡΡΠ° Π½ΠΈΡΠΊΠ° ΠΎΠ΄ DNA, ΠΏΠΎΠ·Π½Π°ΡΠΈ Π·Π° ΡΠΎΠ° Π΄Π΅ΠΊΠ° ΠΏΡΠΈΠΏΠ°ΡΠ°Π°Ρ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΎΠΏΠ΅ΡΠΎΠ½ΠΈ;
ΠΠ΅ΡΠΎΡΠ°ΡΠ½ΠΎΡΡΠ° Π·Π° ΠΏΡΠΈΠΏΠ°ΡΠ°ΡΠ΅ Π½Π° ΠΊΠ»Π°ΡΠ° Π·Π°Π²ΠΈΡΠΈ ΠΎΠ΄ ΠΎΡΠ΅Π½ΠΊΠ°ΡΠ° ΠΏΡΠ΅ΠΊΡ ΡΡΠ½ΠΊΡΠΈΡΠ°ΡΠ° Π½Π° Π»ΠΎΠ³ΠΈΡΡΠΈΡΠΊΠ° ΡΠ΅Π³ΡΠ΅ΡΠΈΡΠ°. ΠΠ° Π΄Π²Π΅ΡΠ΅ ΠΊΠ»Π°ΡΠΈ OP, NOP ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π³ΠΎ Π·Π°ΠΏΠΈΡΠ΅ΠΌΠ΅ ΠΊΠ°ΠΊΠΎ:
ΠΠΎΡΠΈΡΡΠ΅ΡΠ΅ΡΠΎ Π½Π° ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΏΠ°ΡΠΎΠ²ΠΈ ΠΎΠ΄ Π³Π΅Π½ΠΈ Π·Π° ΠΊΠΎΠΈ Π·Π½Π°Π΅ΠΌΠ΅ Π΄Π΅ΠΊΠ° ΠΏΡΠΈΠΏΠ°ΡΠ°Π°Ρ Π½Π° ΠΈΡΡ ΠΎΠΏΠ΅ΡΠΎΠ½ (ΠΊΠ»Π°ΡΠ° OP) ΠΈΠ»ΠΈ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΎΠΏΠ΅ΡΠΎΠΈ (ΠΊΠ»Π°ΡΠ° NOP), Π½ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° Π³ΠΈ ΠΏΡΠ΅ΡΠΌΠ΅ΡΠ°ΠΌΠ΅ ΡΠ΅ΠΆΠΈΠ½ΠΈΡΠ΅ \(\beta_{0}, \beta_{1}, \beta_{2}\) ΡΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠΈΠΈΡΠ°ΡΠ΅ Π½Π° log-likelihood ΡΡΠΎ ΠΊΠΎΡΠ΅ΡΠΏΠΎΠ½Π΄ΠΈΡΠ° Π½Π° Π²Π΅ΡΠΎΡΠ°ΡΠ½ΠΎΡΡΠΈΡΠ΅ Π³ΠΎΡΠ΅ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈ.
16.1.2 Π’ΡΠ΅Π½ΠΈΡΠ°ΡΠ΅ Π½Π° ΠΌΠΎΠ΄Π΅Π» Π½Π° Π»ΠΎΠ³ΠΈΡΡΠΈΡΠΊΠ° ΡΠ΅Π³ΡΠ΅ΡΠΈΡΠ°ΒΆ
Π’Π°Π±Π΅Π»Π° 16.1 Π³ΠΈ Π»ΠΈΡΡΠ° Π½Π΅ΠΊΠΎΠΈ ΠΎΠ΄ Π³Π»Π°Π²Π½ΠΈΡΠ΅ ΠΏΠ°ΡΠΎΠ²ΠΈ Π½Π° Π³Π΅Π½ΠΈ Π·Π° ΠΊΠΎΠΈ ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° ΠΎΠΏΠ΅ΡΠΎΠΎΡ Π΅ ΠΏΠΎΠ·Π½Π°ΡΠ°. ΠΠ½Π°Π΅ΡΡΠΈ Π³ΠΎ ΠΎΠ²Π° ΡΠ΅Π³Π° ΡΠ΅ ΡΠ΅ ΠΎΠ±ΠΈΠ΄Π΅ΠΌΠ΅ Π΄Π° Π³ΠΎ ΠΈΡΡΡΠ΅Π½ΠΈΡΠ°ΠΌΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΎΡ Π·Π° Π»ΠΎΠ³ΠΈΡΡΠΈΡΠΊΠ° ΡΠ΅Π³ΡΠ΅ΡΠΈΡΠ°.

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\):

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
