αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰

αž’αžαŸ’αžαž”αž‘αž–αž·αž—αžΆαž€αŸ’αžŸαžΆαž’αŸ†αž–αžΈαžœαž·αž’αžΈαž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαžΎαž˜αŸ’αž”αžΈαž€αŸ†αžŽαžαŸ‹αžŸαž˜αžΈαž€αžΆαžšαž‚αžŽαž·αžαžœαž·αž‘αŸ’αž™αžΆαž“αŸƒαž”αž“αŸ’αž‘αžΆαžαŸ‹αžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αžŸαžΆαž˜αž‰αŸ’αž‰ (αž‚αžΌ) αŸ”

αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸƒαž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαžŠαŸ‚αž›αž”αžΆαž“αž–αž·αž—αžΆαž€αŸ’αžŸαžΆαž“αŸ…αž‘αžΈαž“αŸαŸ‡αž‚αžΊαž•αŸ’αž’αŸ‚αž€αž›αžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαž€αžΆαžšαŸαžαž·αž…αž”αŸ†αž•αž»αžαŸ” αž…αžΌαžšαž™αžΎαž„αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸˆ

  • αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžœαž·αž—αžΆαž‚
  • αž‡αž˜αŸ’αžšαžΆαž›αž‡αž˜αŸ’αžšαžΆαž›
  • αž€αžΆαžšαž…αž»αŸ‡αž‡αž˜αŸ’αžšαžΆαž› Stochastic

αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž“αžΈαž˜αž½αž™αŸ—αž“αŸƒαž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαž”αž“αŸ’αž‘αžΆαžαŸ‹αžαŸ’αžšαž„αŸ‹ αž’αžαŸ’αžαž”αž‘αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž˜αž»αžαž„αžΆαžšαž•αŸ’αžŸαŸαž„αŸ— αžŠαŸ‚αž›αž—αžΆαž‚αž…αŸ’αžšαžΎαž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ‚αž„αž…αŸ‚αž€αž‘αŸ…αž‡αžΆαž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžšαžŸαŸαžšαžŠαŸ„αž™αž˜αž·αž“αž”αŸ’αžšαžΎαž”αžŽαŸ’αžŽαžΆαž›αŸαž™αŸ” αžŽαžΆαŸ†αž—αžΈ αž“αž·αž„αž’αŸ’αž“αž€αžŠαŸ‚αž›αž”αŸ’αžšαžΎαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž‚αžŽαž“αžΆ αžŽαžΆαŸ†αž—αžΈ. αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž‡αžΏαžαžΆαž€αžΆαžšαž”αŸ’αžšαžΎαž‡αŸ†αž“αžΆαž‰ αžŽαžΆαŸ†αž—αžΈ αž“αžΉαž„αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž€αžΆαžšαž…αŸ†αžŽαžΆαž™αž›αžΎαž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαŸ”

αž€αžΌαžŠαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžšαžŸαŸαžšαž“αŸ…αž€αŸ’αž“αž»αž„ αž–αžŸαŸ‹αžαŸ’αž›αžΆαž“αŸ‹ 2.7 αžŠαŸ„αž™αž”αŸ’αžšαžΎ αž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαž™αž½αžšαžŠαŸƒ Jupyter. αž€αžΌαžŠαž”αŸ’αžšαž—αž– αž“αž·αž„αž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž˜αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‚αŸ†αžšαžΌαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž αŸ„αŸ‡αž“αŸ…αž›αžΎ Github

αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αž˜αžΆαž“αž‚αŸ„αž›αž”αŸ†αžŽαž„αž€αžΆαž“αŸ‹αžαŸ‚αž…αŸ’αžšαžΎαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŠαŸ†αž”αžΌαž„ αž“αž·αž„αž’αŸ’αž“αž€αžŠαŸ‚αž›αž”αžΆαž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž”αž“αŸ’αžαž·αž…αž˜αŸ’αžαž„αŸ—αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž‡αžΆαž˜αŸ’αž…αžΆαžŸαŸ‹αž“αŸƒαž€αžΆαžšαžŸαž·αž€αŸ’αžŸαžΆαž•αŸ’αž“αŸ‚αž€αžŠαŸαž’αŸ†αž‘αžΌαž›αžΆαž™αž˜αž½αž™αž“αŸ…αž€αŸ’αž“αž»αž„αž”αž‰αŸ’αž‰αžΆαžŸαž·αž”αŸ’αž”αž“αž·αž˜αŸ’αž˜αž·αž - αž€αžΆαžšαžšαŸ€αž“αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αŸ”

αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž αžΆαž‰αžŸαž˜αŸ’αž—αžΆαžšαŸˆ αž™αžΎαž„αž”αŸ’αžšαžΎαž§αž‘αžΆαž αžšαžŽαŸαžŠαŸαžŸαžΆαž˜αž‰αŸ’αž‰αž˜αž½αž™αŸ”

αž§αž‘αžΆαž αžšαžŽαŸαž›αž€αŸ’αžαžαžŽαŸ’αžŒ

αž™αžΎαž„β€‹αž˜αžΆαž“β€‹αžαž˜αŸ’αž›αŸƒβ€‹αž”αŸ’αžšαžΆαŸ†β€‹αž™αŸ‰αžΆαž„β€‹αžŠαŸ‚αž›β€‹αž€αŸ†αžŽαžαŸ‹β€‹αž›αž€αŸ’αžαžŽαŸˆβ€‹αž’αžΆαžŸαŸ’αžšαŸαž™ Y αž–αžΈ X (αžαžΆαžšαžΆαž„αž›αŸαž ៑)αŸ–

αžαžΆαžšαžΆαž„αž‘αžΈ 1 β€œαž›αž€αŸ’αžαžαžŽαŸ’αžŒαž§αž‘αžΆαž αžšαžŽαŸβ€

αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰

αž™αžΎαž„αž“αžΉαž„αžŸαž“αŸ’αž˜αžαžαžΆαžαž˜αŸ’αž›αŸƒ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ αž‚αžΊαž‡αžΆαžαŸ‚αž“αŸƒαž†αŸ’αž“αžΆαŸ†, αž“αž·αž„ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ - αž”αŸ’αžšαžΆαž€αŸ‹αž…αŸ†αžŽαžΌαž›αž€αŸ’αž“αž»αž„αžαŸ‚αž“αŸαŸ‡αŸ” αž˜αŸ’αž™αŸ‰αžΆαž„β€‹αž‘αŸ€αž αž…αŸ†αžŽαžΌαž›β€‹αž‚αžΊβ€‹αž’αžΆαžŸαŸ’αžšαŸαž™β€‹αž›αžΎβ€‹αžαŸ‚β€‹αž“αŸƒβ€‹αž†αŸ’αž“αžΆαŸ† αž“αž·αž„ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ - αžŸαž‰αŸ’αž‰αžΆαžαŸ‚αž˜αž½αž™αž‚αžαŸ‹αžŠαŸ‚αž›αž”αŸ’αžšαžΆαž€αŸ‹αž…αŸ†αžŽαžΌαž›αž’αžΆαžŸαŸ’αžšαŸαž™αŸ”

αž§αž‘αžΆαž αžšαžŽαŸαž‚αžΊαžŠαžΌαž…αŸ’αž“αŸαŸ‡ - αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž‘αžΆαŸ†αž„αž–αžΈαž‘αžŸαŸ’αžŸαž“αŸˆαž“αŸƒαž€αžΆαžšαž–αžΉαž„αž•αŸ’αž’αŸ‚αž€αžαžΆαž˜αž›αž€αŸ’αžαžαžŽαŸ’αžŒαž“αŸƒαž”αŸ’αžšαžΆαž€αŸ‹αž…αŸ†αžŽαžΌαž›αž“αŸ…αž›αžΎαžαŸ‚αž“αŸƒαž†αŸ’αž“αžΆαŸ†αž“αž·αž„αž–αžΈαž…αŸ†αžŽαž»αž…αž“αŸƒαž‘αž·αžŠαŸ’αž‹αž—αžΆαž–αž“αŸƒαž…αŸ†αž“αž½αž“αž“αŸƒαžαž˜αŸ’αž›αŸƒ - αž˜αžΆαž“αžαž·αž…αžαž½αž…αžŽαžΆαžŸαŸ‹αž“αŸƒαž–αž½αž€αž‚αŸαŸ” αž‘αŸ„αŸ‡αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž—αžΆαž–αžŸαžΆαž˜αž‰αŸ’αž‰αž”αŸ‚αž”αž“αŸαŸ‡αž“αžΉαž„αž’αŸ’αžœαžΎαž±αŸ’αž™αžœαžΆαž’αžΆαž…αž’αŸ’αžœαžΎαž‘αŸ…αž”αžΆαž“ αžŠαžΌαž…αžŠαŸ‚αž›αž–αž½αž€αž‚αŸαž“αž·αž™αžΆαž™αžαžΆ αžŠαžΎαž˜αŸ’αž”αžΈαž–αž“αŸ’αž™αž›αŸ‹ αž˜αž·αž“αž˜αŸ‚αž“αžαŸ‚αž„αžαŸ‚αž˜αžΆαž“αž—αžΆαž–αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž“αŸ„αŸ‡αž‘αŸ αžŸαž˜αŸ’αž—αžΆαžšαŸˆαžŠαŸ‚αž›αž’αŸ’αž“αž€αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŠαŸ†αž”αžΌαž„αž”αž‰αŸ’αž…αžΌαž›αŸ” αž αžΎαž™αž—αžΆαž–αžŸαžΆαž˜αž‰αŸ’αž‰αž“αŸƒαž›αŸαžαž“αžΉαž„αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αžŠαŸ‚αž›αž…αž„αŸ‹αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž§αž‘αžΆαž αžšαžŽαŸαž“αŸ…αž›αžΎαž€αŸ’αžšαžŠαžΆαžŸαžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αžαž˜αŸ’αž›αŸƒαž–αž›αž€αž˜αŸ’αž˜αžŸαŸ†αžαžΆαž“αŸ‹αŸ”

αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž™αžΎαž„αžŸαž“αŸ’αž˜αžαŸ‹αžαžΆαž€αžΆαžšαž–αžΉαž„αž•αŸ’αž’αŸ‚αž€αžŠαŸ‚αž›αž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™αž€αŸ’αž“αž»αž„αž§αž‘αžΆαž αžšαžŽαŸαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ‰αžΆαž“αŸ‹αž”αŸ’αžšαž˜αžΆαžŽαž™αŸ‰αžΆαž„αž›αŸ’αž’αžŠαŸ„αž™αžŸαž˜αžΈαž€αžΆαžšαž‚αžŽαž·αžαžœαž·αž‘αŸ’αž™αžΆαž“αŸƒαž”αž“αŸ’αž‘αžΆαžαŸ‹αžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αžŸαžΆαž˜αž‰αŸ’αž‰ (αž‚αžΌ) αž“αŸƒαž‘αž˜αŸ’αžšαž„αŸ‹:

αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰

αžŠαŸ‚αž›αž‡αžΆαž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž› αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ αž‚αžΊαž‡αžΆαžαŸ‚αžŠαŸ‚αž›αž…αŸ†αžŽαžΌαž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αž‘αž½αž› αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ - αž…αŸ†αžŽαžΌαž›αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž“αžΉαž„αžαŸ‚ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ ΠΈ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ αž‚αžΊαž‡αžΆαž˜αŸαž‚αž»αžŽαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž“αŸƒαž”αž“αŸ’αž‘αžΆαžαŸ‹αž”αŸ‰αžΆαž“αŸ‹αžŸαŸ’αž˜αžΆαž“αŸ”

αž…αŸ†αžŽαžΆαŸ†αžαžΆαž˜αŸαž‚αž»αžŽ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ αž‡αžΆαžšαžΏαž™αŸ—αž‚αŸαž αŸ…αžαžΆαž‡αž˜αŸ’αžšαžΆαž› αž¬αž‡αž˜αŸ’αžšαžΆαž›αž“αŸƒαž”αž“αŸ’αž‘αžΆαžαŸ‹αž”αŸ‰αžΆαž“αŸ‹αžŸαŸ’αž˜αžΆαž“αŸ” αžαŸ†αžŽαžΆαž„αž±αŸ’αž™αž…αŸ†αž“αž½αž“αžŠαŸ‚αž› αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αžœαžΆαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰.

αž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„ αž—αžΆαžšαž€αž·αž…αŸ’αž…αžšαž”αžŸαŸ‹αž™αžΎαž„αž€αŸ’αž“αž»αž„αž§αž‘αžΆαž αžšαžŽαŸαž‚αžΊαž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž˜αŸαž‚αž»αžŽαž”αŸ‚αž”αž“αŸαŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαž˜αžΈαž€αžΆαžš αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ ΠΈ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰αžŠαŸ‚αž›αž‚αž˜αŸ’αž›αžΆαžαž“αŸƒαžαž˜αŸ’αž›αŸƒαž…αŸ†αžŽαžΌαž›αžŠαŸ‚αž›αž”αžΆαž“αž‚αžŽαž“αžΆαžšαž”αžŸαŸ‹αž™αžΎαž„αžαžΆαž˜αžαŸ‚αž–αžΈαž…αž˜αŸ’αž›αžΎαž™αž–αž·αž i.e. αžαž˜αŸ’αž›αŸƒβ€‹αžŠαŸ‚αž›β€‹αž”αž„αŸ’αž αžΆαž‰β€‹αž€αŸ’αž“αž»αž„β€‹αž‚αŸ†αžšαžΌβ€‹αž“αžΉαž„β€‹αž˜αžΆαž“β€‹αžαž·αž…αžαž½αž…αŸ”

αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž€αžΆαžšαŸ‰αŸαžαž·αž…αž”αŸ†αž•αž»αžαŸ”

αž™αŸ„αž„αžαžΆαž˜αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαž€αžΆαžšαŸαžαž·αž…αž”αŸ†αž•αž»αž αž‚αž˜αŸ’αž›αžΆαžαž‚αž½αžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αžŽαž“αžΆαžŠαŸ„αž™αž€αžΆαžšαŸ‰αŸαŸ” αž”αž…αŸ’αž…αŸαž€αž‘αŸαžŸαž“αŸαŸ‡αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž‡αŸ€αžŸαžœαžΆαž„αž€αžΆαžšαž›αž»αž”αž…αŸ„αž›αž‘αŸ…αžœαž·αž‰αž‘αŸ…αž˜αž€αž“αŸƒαž‚αž˜αŸ’αž›αžΆαžαž”αŸ’αžšαžŸαž·αž“αž”αžΎαž–αž½αž€αž‚αŸαž˜αžΆαž“αžŸαž‰αŸ’αž‰αžΆαž•αŸ’αž‘αž»αž™αŸ” αž§αž‘αžΆαž αžšαžŽαŸαž”αŸ’αžšαžŸαž·αž“αž”αžΎαž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž˜αž½αž™ αž‚αž˜αŸ’αž›αžΆαžαž‚αžΊ +5 (αž”αžΌαž€αž”αŸ’αžšαžΆαŸ†) αž“αž·αž„αž˜αž½αž™αž‘αŸ€αž -5 (αžŠαž€αž”αŸ’αžšαžΆαŸ†) αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž•αž›αž”αžΌαž€αž“αŸƒαž‚αž˜αŸ’αž›αžΆαžαž“αžΉαž„αž›αž»αž”αž…αŸ„αž›αž‚αŸ’αž“αžΆαž‘αŸ…αžœαž·αž‰αž‘αŸ…αž˜αž€ αž αžΎαž™αž˜αžΆαž“αž…αŸ†αž“αž½αž“αžŠαž›αŸ‹ 0 (αžŸαžΌαž“αŸ’αž™)αŸ” αžœαžΆαž˜αž·αž“αž’αžΆαž…αž‘αŸ…αžšαž½αž…αž‘αŸαž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αŸ†αž”αŸ‚αž€αž‚αž˜αŸ’αž›αžΆαžαž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžšαžΎαž‘αŸ’αžšαž–αŸ’αž™αžŸαž˜αŸ’αž”αžαŸ’αžαž·αž“αŸƒαž˜αŸ‰αžΌαžŒαž»αž›αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž‚αž˜αŸ’αž›αžΆαžαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αžΉαž„αž˜αžΆαž“αž—αžΆαž–αžœαž·αž‡αŸ’αž‡αž˜αžΆαž“αž αžΎαž™αž“αžΉαž„αž€αž€αž€αž»αž‰αŸ” αž™αžΎαž„αž“αžΉαž„αž˜αž·αž“αžšαžŸαŸ‹αž“αŸ…αž›αžΎαž…αŸ†αžŽαž»αž…αž“αŸαŸ‡αž±αŸ’αž™αž”αžΆαž“αž›αŸ†αž’αž·αžαž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž”αž„αŸ’αž αžΆαž‰αžαžΆ αžŠαžΎαž˜αŸ’αž”αžΈαž—αžΆαž–αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž“αŸƒαž€αžΆαžšαž‚αžŽαž“αžΆ αžœαžΆαž‡αžΆαž‘αž˜αŸ’αž›αžΆαž”αŸ‹αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŠαžΆαž€αŸ‹αž‚αž˜αŸ’αž›αžΆαžαž–αžΈαž‚αŸ’αž“αžΆαž‡αžΆαž€αžΆαžšαŸ‰αŸαŸ”

αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž’αŸ’αžœαžΈαžŠαŸ‚αž›αžšαžΌαž”αž˜αž“αŸ’αžαž˜αžΎαž›αž‘αŸ…αžŠαžΌαž…αžŠαŸ‚αž›αž™αžΎαž„αž“αžΉαž„αž€αŸ†αžŽαžαŸ‹αž•αž›αž”αžΌαž€αžαž·αž…αž”αŸ†αž•αž»αžαž“αŸƒαž‚αž˜αŸ’αž›αžΆαžαž€αžΆαžšαŸ (αž€αŸ†αž αž»αžŸ):

αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰

αžŠαŸ‚αž›αž‡αžΆαž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž› αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ αž‚αžΊαž‡αžΆαž˜αž»αžαž„αžΆαžšαž“αŸƒαž€αžΆαžšαž”αŸ‰αžΆαž“αŸ‹αžŸαŸ’αž˜αžΆαž“αž…αž˜αŸ’αž›αžΎαž™αž–αž·αž (αž“αŸ„αŸ‡αž‚αžΊαž…αŸ†αžŽαžΌαž›αžŠαŸ‚αž›αž™αžΎαž„αž‚αžŽαž“αžΆ)

αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ αž‚αžΊαž‡αžΆαž…αž˜αŸ’αž›αžΎαž™αž–αž·αž (αž…αŸ†αžŽαžΌαž›αžŠαŸ‚αž›αž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž€αŸ’αž“αž»αž„αž‚αŸ†αžšαžΌ)

αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ αž‚αžΊαž‡αžΆαžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸαž‚αŸ†αžšαžΌ (αž…αŸ†αž“αž½αž“αžαŸ‚αžŠαŸ‚αž›αž‚αž˜αŸ’αž›αžΆαžαžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹)

αž…αžΌαžšαž™αžΎαž„αž”αŸ‚αž„αž…αŸ‚αž€αž˜αž»αžαž„αžΆαžš αž€αŸ†αžŽαžαŸ‹αžŸαž˜αžΈαž€αžΆαžšαžŒαžΈαž•αŸαžšαŸ‰αž„αŸ‹αžŸαŸ’αž™αŸ‚αž›αžŠαŸ„αž™αž•αŸ’αž“αŸ‚αž€ αž αžΎαž™αžαŸ’αžšαŸ€αž˜αžαŸ’αž›αž½αž“αžŠαžΎαž˜αŸ’αž”αžΈαž”αž“αŸ’αžαž‘αŸ…αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžœαž·αž—αžΆαž‚αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‡αžΆαžŠαŸ†αž”αžΌαž„ αž…αžΌαžšαž™αžΎαž„αž›αžΎαž€αž™αž€αžŠαŸ†αžŽαžΎαžšαž€αŸ†αžŸαžΆαž“αŸ’αžαžαŸ’αž›αžΈαž˜αž½αž™αž’αŸ†αž–αžΈαž—αžΆαž–αžαž»αžŸαž‚αŸ’αž“αžΆαž“αŸƒαž—αžΆαž–αžαž»αžŸαž‚αŸ’αž“αžΆ αž αžΎαž™αž…αž„αž…αžΆαŸ†αž’αžαŸ’αžαž“αŸαž™αž’αžšαžŽαžΈαž˜αžΆαžαŸ’αžšαž“αŸƒαžŠαŸαžšαžΈαžœαŸαŸ”

αž—αžΆαž–αžαž»αžŸαž‚αŸ’αž“αžΆ

αž—αžΆαž–αžαž»αžŸαž‚αŸ’αž“αžΆαž‚αžΊαž‡αžΆαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž“αŸƒαž€αžΆαžšαžŸαŸ’αžœαŸ‚αž„αžšαž€αžŠαŸαžšαžΈαžœαŸαž“αŸƒαž’αž“αž»αž‚αž˜αž“αŸαž˜αž½αž™αŸ”

αžαžΎαžŠαŸαžšαžΈαžœαŸαž”αŸ’αžšαžΎαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αžœαžΈ? αžŠαŸαžšαžΈαžœαŸαž“αŸƒαž’αž“αž»αž‚αž˜αž“αŸαž€αŸ†αžŽαžαŸ‹αž’αžαŸ’αžšαžΆαž“αŸƒαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž˜αž»αžαž„αžΆαžš αž“αž·αž„αž”αŸ’αžšαžΆαž”αŸ‹αž™αžΎαž„αž–αžΈαž‘αž·αžŸαžŠαŸ…αžšαž”αžŸαŸ‹αžœαžΆαŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžŠαŸαžšαžΈαžœαŸαž“αŸ…αž…αŸ†αžŽαž»αž…αž˜αž½αž™αž‚αžΊαžœαž·αž‡αŸ’αž‡αž˜αžΆαž“ αž“αŸ„αŸ‡αž˜αž»αžαž„αžΆαžšαž“αžΉαž„αž€αžΎαž“αž‘αžΎαž„ αž”αžΎαž˜αž·αž“αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž‘αŸ αž˜αž»αžαž„αžΆαžšαž“αžΉαž„αžαž™αž…αž»αŸ‡αŸ” αž αžΎαž™αžαž˜αŸ’αž›αŸƒαž€αžΆαž“αŸ‹αžαŸ‚αž’αŸ†αž“αŸƒαžŠαŸαžšαžΈαžœαŸαž“αŸƒαžŠαžΆαž…αŸ‹αžαžΆαž αž’αžαŸ’αžšαžΆαž“αŸƒαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžαž˜αŸ’αž›αŸƒαž˜αž»αžαž„αžΆαžšαž€αžΆαž“αŸ‹αžαŸ‚αžαŸ’αž–αžŸαŸ‹ αž€αŸαžŠαžΌαž…αž‡αžΆαž‡αž˜αŸ’αžšαžΆαž›αž“αŸƒαž€αŸ’αžšαžΆαž αŸ’αžœαž’αž“αž»αž‚αž˜αž“αŸαž€αžΆαž“αŸ‹αžαŸ‚αžαŸ’αž–αžŸαŸ‹αŸ”

αž§αž‘αžΆαž αžšαžŽαŸ αž“αŸ…αž€αŸ’αžšαŸ„αž˜αž›αž€αŸ’αžαžαžŽαŸ’αžŒαž“αŸƒαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž€αžΌαž’αžšαžŠαŸ„αž“αŸ Cartesian αžαž˜αŸ’αž›αŸƒαž“αŸƒαžŠαŸαžšαžΈαžœαŸαž“αŸ…αž…αŸ†αžŽαž»αž… M(0,0) αž‚αžΊαžŸαŸ’αž˜αžΎαž“αžΉαž„ +25 αž˜αžΆαž“β€‹αž“αŸαž™β€‹αžαžΆβ€‹αž“αŸ…β€‹αž…αŸ†αžŽαž»αž…β€‹αž˜αž½αž™β€‹αžŠαŸ‚αž›β€‹αž”αžΆαž“β€‹αž•αŸ’αžαž›αŸ‹β€‹αž±αŸ’αž™β€‹αž“αŸ…β€‹αž–αŸαž›β€‹αžŠαŸ‚αž›β€‹αžαž˜αŸ’αž›αŸƒβ€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž•αŸ’αž›αžΆαžŸαŸ‹β€‹αž”αŸ’αžαžΌβ€‹αžšβ€‹ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ αž‘αŸ…αžαžΆαž„αžŸαŸ’αžαžΆαŸ†αžŠαŸ„αž™αž―αž€αžαžΆαž’αž˜αŸ’αž˜αžαžΆ αžαž˜αŸ’αž›αŸƒ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ αž€αžΎαž“αž‘αžΎαž„ 25 αž―αž€αžαžΆαž’αž˜αŸ’αž˜αžαžΆαŸ” αž“αŸ…αž›αžΎαž€αŸ’αžšαžΆαž αŸ’αžœαžœαžΆαž˜αžΎαž›αž‘αŸ…αžŠαžΌαž…αž‡αžΆαž€αžΆαžšαž€αžΎαž“αž‘αžΎαž„αž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„αž“αŸƒαžαž˜αŸ’αž›αŸƒ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ αž–αžΈαž…αŸ†αžŽαž»αž…αžŠαŸ‚αž›αž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™αŸ”

αž§αž‘αžΆαž αžšαžŽαŸαž˜αž½αž™αž‘αŸ€αžαŸ” αžαž˜αŸ’αž›αŸƒαžŠαŸαžšαžΈαžœαŸαž‚αžΊαžŸαŸ’αž˜αžΎαž‚αŸ’αž“αžΆ -0,1 αž˜αžΆαž“αž“αŸαž™αžαžΆαž“αŸ…αž–αŸαž›αž•αŸ’αž›αžΆαžŸαŸ‹αž‘αžΈαž›αŸ†αž“αŸ… αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ αž€αŸ’αž“αž»αž„αž˜αž½αž™αž―αž€αžαžΆαž’αž˜αŸ’αž˜αžαžΆ αžαž˜αŸ’αž›αŸƒ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ αžαž™αž…αž»αŸ‡αžαŸ’αžšαžΉαž˜αžαŸ‚ 0,1 αž―αž€αžαžΆαž’αž˜αŸ’αž˜αžαžΆαŸ” αž€αŸ’αž“αž»αž„αž–αŸαž›αž‡αžΆαž˜αž½αž™αž‚αŸ’αž“αžΆαž“αŸαŸ‡ αž“αŸ…αž›αžΎαž€αŸ’αžšαžΆαž αŸ’αžœαž“αŸƒαž˜αž»αžαž„αžΆαžš αž™αžΎαž„αž’αžΆαž…αžŸαž„αŸ’αž€αŸαžαž˜αžΎαž›αž‡αž˜αŸ’αžšαžΆαž›αž…αž»αŸ‡αž€αŸ’αžšαŸ„αž˜αžŠαŸ‚αž›αž‚αž½αžšαž±αŸ’αž™αž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αŸ” αž‚αžΌαžšαž—αžΆαž–αžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαž‡αžΆαž˜αž½αž™αž—αŸ’αž“αŸ†αž˜αž½αž™ αžœαžΆαžŠαžΌαž…αž‡αžΆαž™αžΎαž„αž€αŸ†αž–αž»αž„αž…αž»αŸ‡αž‡αž˜αŸ’αžšαžΆαž›αžŠαŸαž‘αž“αŸ‹αž—αŸ’αž›αž“αŸ‹αž–αžΈαž—αŸ’αž“αŸ†αž˜αž½αž™ αž˜αž·αž“αžŠαžΌαž…αž§αž‘αžΆαž αžšαžŽαŸαž˜αž»αž“ αžŠαŸ‚αž›αž™αžΎαž„αžαŸ’αžšαžΌαžœαž‘αžΎαž„αž€αŸ†αž–αžΌαž›αž—αŸ’αž“αŸ†αžŠαŸαž…αŸ„αžαžαŸ’αž›αžΆαŸ†αž„ :)

αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž”αŸ‚αž„αž…αŸ‚αž€αž˜αž»αžαž„αžΆαžš αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ αžŠαŸ„αž™αž αžΆαž„αž†αŸαž„ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ ΠΈ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰αž™αžΎαž„αž€αŸ†αžŽαžαŸ‹αžŸαž˜αžΈαž€αžΆαžšαžŒαžΈαž•αŸαžšαŸ‰αž„αŸ‹αžŸαŸ’αž™αŸ‚αž›αž•αŸ’αž“αŸ‚αž€αž›αŸ†αžŠαžΆαž”αŸ‹αž‘αžΈ 1 αŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αŸ†αžŽαžαŸ‹αžŸαž˜αžΈαž€αžΆαžš αž™αžΎαž„αž“αžΉαž„αž‘αž‘αž½αž›αž”αžΆαž“αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž“αŸƒαžŸαž˜αžΈαž€αžΆαžšαž–αžΈαžš αžŠαŸ„αž™αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŠαŸ‚αž›αž™αžΎαž„αž“αžΉαž„αž’αžΆαž…αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαžαž˜αŸ’αž›αŸƒαž“αŸƒαž˜αŸαž‚αž»αžŽ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ ΠΈ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰αžŠαŸ‚αž›αžαž˜αŸ’αž›αŸƒαž“αŸƒαž“αž·αžŸαŸ’αžŸαž“αŸ’αž‘αžœαžαŸ’αžαž»αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαž“αŸ…αž…αŸ†αžŽαž»αž…αžŠαŸ‚αž›αž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžŠαŸ„αž™αž…αŸ†αž“αž½αž“αžαž·αž…αžαž½αž…αž”αŸ†αž•αž»αž αž αžΎαž™αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸƒαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžœαž·αž—αžΆαž‚αž˜αž·αž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‘αžΆαž›αŸ‹αžαŸ‚αžŸαŸ„αŸ‡αŸ” αž˜αŸ’αž™αŸ‰αžΆαž„αžœαž·αž‰αž‘αŸ€αž αž˜αž»αžαž„αžΆαžšαž€αŸ†αž αž»αžŸαž“αŸ…αž˜αŸαž‚αž»αžŽαžŠαŸ‚αž›αž”αžΆαž“αžšαž€αžƒαžΎαž‰αž“αžΉαž„αžˆαžΆαž“αžŠαž›αŸ‹αž€αž˜αŸ’αžšαž·αžαž’αž”αŸ’αž”αž”αžšαž˜αžΆ αžŠαŸ„αž™αž αŸαžαž»αžαžΆαžαž˜αŸ’αž›αŸƒαž“αŸƒαžŠαŸαžšαžΈαžœαŸαžŠαŸ„αž™αž•αŸ’αž“αŸ‚αž€αž“αŸ…αž…αŸ†αžŽαž»αž…αž‘αžΆαŸ†αž„αž“αŸαŸ‡αž“αžΉαž„αžŸαŸ’αž˜αžΎαž“αžΉαž„αžŸαžΌαž“αŸ’αž™αŸ”

αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž™αŸ„αž„αž‘αŸ…αžαžΆαž˜αž…αŸ’αž”αžΆαž”αŸ‹αž“αŸƒαž—αžΆαž–αžαž»αžŸαž‚αŸ’αž“αžΆ αžŸαž˜αžΈαž€αžΆαžšαžŠαŸαžšαžΈαžœαŸαžŠαŸ„αž™αž•αŸ’αž“αŸ‚αž€αž“αŸƒαž›αŸ†αžŠαžΆαž”αŸ‹αž‘αžΈ 1 αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αž˜αŸαž‚αž»αžŽ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ αž“αžΉαž„αž™αž€αž‘αž˜αŸ’αžšαž„αŸ‹αŸ–

αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰

αžŸαž˜αžΈαž€αžΆαžšαžŠαŸαžšαžΈαžœαŸαž—αžΆαž‚αž“αŸƒαž›αŸ†αžŠαžΆαž”αŸ‹αž‘αžΈ 1 αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ αž“αžΉαž„αž™αž€αž‘αž˜αŸ’αžšαž„αŸ‹αŸ–

αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰

αž‡αžΆαž›αž‘αŸ’αž’αž•αž› αž™αžΎαž„αž”αžΆαž“αž‘αž‘αž½αž›αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž“αŸƒαžŸαž˜αžΈαž€αžΆαžšαžŠαŸ‚αž›αž˜αžΆαž“αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžœαž·αž—αžΆαž‚αžŠαŸαžŸαžΆαž˜αž‰αŸ’αž‰αž˜αž½αž™αŸ–

αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜{αžŸαž˜αžΈαž€αžΆαžš*}
αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜{cases}
na + bsumlimits_{i=1}^nx_i β€” sumlimits_{i=1}^ny_i = 0

sumlimits_{i=1}^nx_i(a +bsumlimits_{i=1}^nx_i β€” sumlimits_{i=1}^ny_i) = 0
αž”αž‰αŸ’αž…αž”αŸ‹{cases}
αž”αž‰αŸ’αž…αž”αŸ‹{αžŸαž˜αžΈαž€αžΆαžš*}

αž˜αž»αž“αž“αžΉαž„αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžš αž…αžΌαžšαž™αžΎαž„αž•αŸ’αž‘αž»αž€αž‡αžΆαž˜αž»αž“ αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžαžΆαž€αžΆαžšαž•αŸ’αž‘αž»αž€αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ αž“αž·αž„αž’αŸ’αžœαžΎαž‘αŸ’αžšαž„αŸ‹αž‘αŸ’αžšαžΆαž™αž‘αž·αž“αŸ’αž“αž“αŸαž™αŸ”

αž€αŸ†αž–αž»αž„αž•αŸ’αž‘αž»αž€ αž“αž·αž„αž’αŸ’αžœαžΎαž‘αŸ’αžšαž„αŸ‹αž‘αŸ’αžšαžΆαž™αž‘αž·αž“αŸ’αž“αž“αŸαž™

αžœαžΆαž‚αž½αžšαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αžαžΆαžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž€αžΆαžšαž–αž·αžαžŠαŸ‚αž›αžαžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžœαž·αž—αžΆαž‚αž“αž·αž„αž‡αžΆαž”αž“αŸ’αžαž”αž“αŸ’αž‘αžΆαž”αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ gradient αž“αž·αž„ stochastic gradient descent αž™αžΎαž„αž“αžΉαž„αž”αŸ’αžšαžΎαž€αžΌαžŠαž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ†αžšαŸ‚αž”αŸ†αžšαž½αž›αž–αžΈαžš: αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž”αžŽαŸ’αžŽαžΆαž›αŸαž™ αžŽαžΆαŸ†αž—αžΈ αž αžΎαž™αžŠαŸ„αž™αž˜αž·αž“αž”αŸ’αžšαžΎαžœαžΆ αž“αŸ„αŸ‡αž™αžΎαž„αž“αžΉαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαž€αžΆαžšαž’αŸ’αžœαžΎαž‘αŸ’αžšαž„αŸ‹αž‘αŸ’αžšαžΆαž™αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŸαž˜αžŸαŸ’αžšαž” (αžŸαžΌαž˜αž˜αžΎαž›αž€αžΌαžŠ)αŸ”

αž€αžΌαžŠαž•αŸ’αž‘αž»αž€ αž“αž·αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™

# ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ всС Π½ΡƒΠΆΠ½Ρ‹Π΅ Π½Π°ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import math
import pylab as pl
import random

# Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΠΌ Π² Jupyter
%matplotlib inline

# ΡƒΠΊΠ°ΠΆΠ΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ²
from pylab import rcParams
rcParams['figure.figsize'] = 12, 6

# ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΠΌ прСдупрСТдСния Anaconda
import warnings
warnings.simplefilter('ignore')

# Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠΌ значСния
table_zero = pd.read_csv('data_example.txt', header=0, sep='t')

# посмотрим ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΈ Π½Π° саму Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ
print table_zero.info()
print '********************************************'
print table_zero
print '********************************************'

# ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠΌ Π΄Π°Π½Π½Ρ‹Π΅ Π±Π΅Π· использования NumPy

x_us = []
[x_us.append(float(i)) for i in table_zero['x']]
print x_us
print type(x_us)
print '********************************************'

y_us = []
[y_us.append(float(i)) for i in table_zero['y']]
print y_us
print type(y_us)
print '********************************************'

# ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠΌ Π΄Π°Π½Π½Ρ‹Π΅ с использованиСм NumPy

x_np = table_zero[['x']].values
print x_np
print type(x_np)
print x_np.shape
print '********************************************'

y_np = table_zero[['y']].values
print y_np
print type(y_np)
print y_np.shape
print '********************************************'

αž€αžΆαžšαž˜αžΎαž›αžƒαžΎαž‰

αž₯αž‘αžΌαžœαž“αŸαŸ‡ αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž™αžΎαž„αž”αžΆαž“αž•αŸ’αž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ†αž”αžΌαž„ αž‘αžΈαž–αžΈαžšαž–αž·αž“αž·αžαŸ’αž™αž—αžΆαž–αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž“αŸƒαž€αžΆαžšαž•αŸ’αž‘αž»αž€ αž αžΎαž™αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž’αŸ’αžœαžΎαž‘αŸ’αžšαž„αŸ‹αž‘αŸ’αžšαžΆαž™αž‘αž·αž“αŸ’αž“αž“αŸαž™ αž™αžΎαž„αž“αžΉαž„αž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαž˜αžΎαž›αžƒαžΎαž‰αžŠαŸ†αž”αžΌαž„αŸ” αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž‡αžΆαž‰αžΉαž€αž‰αžΆαž”αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž“αŸαŸ‡αž‚αžΊ αž‚αŸ’αžšαŸ„αž„αž‚αžΌ αž”αžŽαŸ’αžŽαžΆαž›αŸαž™ αžŸαŸαž”αžΆαž“. αž€αŸ’αž“αž»αž„β€‹αž§αž‘αžΆαž αžšαžŽαŸβ€‹αžšαž”αžŸαŸ‹β€‹αž™αžΎαž„ αžŠαŸ„αž™αžŸαžΆαžšβ€‹αž…αŸ†αž“αž½αž“β€‹αž˜αžΆαž“β€‹αž€αŸ†αžŽαžαŸ‹ αžœαžΆβ€‹αž‚αŸ’αž˜αžΆαž“β€‹αž…αŸ†αžŽαž»αž…β€‹αž€αŸ’αž“αž»αž„β€‹αž€αžΆαžšβ€‹αž”αŸ’αžšαžΎβ€‹αž”αžŽαŸ’αžŽαžΆαž›αŸαž™β€‹αž‘αŸαŸ” αžŸαŸαž”αžΆαž“. αž™αžΎαž„αž“αžΉαž„αž”αŸ’αžšαžΎαž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž’αž˜αŸ’αž˜αžαžΆαŸ” αž˜αŸ‰αžΆαžαŸ‹αž•αŸ’αž›αžΌαž›αžΈαž” αž αžΎαž™αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž›αž‚αŸ’αžšαŸ„αž„αŸ”

αž€αžΌαžŠ Scatterplot

print 'Π“Ρ€Π°Ρ„ΠΈΠΊ β„–1 "Π—Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Π²Ρ‹Ρ€ΡƒΡ‡ΠΊΠΈ ΠΎΡ‚ мСсяца Π³ΠΎΠ΄Π°"'

plt.plot(x_us,y_us,'o',color='green',markersize=16)
plt.xlabel('$Months$', size=16)
plt.ylabel('$Sales$', size=16)
plt.show()

αžαžΆαžšαžΆαž„αž‘αžΈ 1 "αž€αžΆαžšαž–αžΉαž„αž•αŸ’αž’αŸ‚αž€αž“αŸƒαž”αŸ’αžšαžΆαž€αŸ‹αž…αŸ†αžŽαžΌαž›αž”αŸ’αžšαž…αžΆαŸ†αžαŸ‚αž“αŸƒαž†αŸ’αž“αžΆαŸ†"

αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰

αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžœαž·αž—αžΆαž‚

αž…αžΌαžšαž™αžΎαž„αž”αŸ’αžšαžΎαž§αž”αž€αžšαžŽαŸαž‘αžΌαž‘αŸ…αž”αŸ†αž•αž»αžαž“αŸ…αž€αŸ’αž“αž»αž„ αž–αžŸαŸ‹αžαŸ’αž›αžΆαž“αŸ‹ αž“αž·αž„αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŸαž˜αžΈαž€αžΆαžšαŸ–

αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜{αžŸαž˜αžΈαž€αžΆαžš*}
αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜{cases}
na + bsumlimits_{i=1}^nx_i β€” sumlimits_{i=1}^ny_i = 0

sumlimits_{i=1}^nx_i(a +bsumlimits_{i=1}^nx_i β€” sumlimits_{i=1}^ny_i) = 0
αž”αž‰αŸ’αž…αž”αŸ‹{cases}
αž”αž‰αŸ’αž…αž”αŸ‹{αžŸαž˜αžΈαž€αžΆαžš*}

αž™αŸ„αž„αž‘αŸ…αžαžΆαž˜αž…αŸ’αž”αžΆαž”αŸ‹αžšαž”αžŸαŸ‹ Cramer αž™αžΎαž„αž“αžΉαž„αžšαž€αžƒαžΎαž‰αž€αžαŸ’αžαžΆαž€αŸ†αžŽαžαŸ‹αž‘αžΌαž‘αŸ… αž€αŸαžŠαžΌαž…αž‡αžΆαž€αžαŸ’αžαžΆαž€αŸ†αžŽαžαŸ‹αžŠαŸ„αž™ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ αž“αž·αž„αžŠαŸ„αž™ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž”αŸ‚αž„αž…αŸ‚αž€αž€αžαŸ’αžαžΆαž€αŸ†αžŽαžαŸ‹αžŠαŸ„αž™ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ αž‘αŸ…αž€αžαŸ’αžαžΆαž€αŸ†αžŽαžαŸ‹αž‘αžΌαž‘αŸ… - αžŸαŸ’αžœαŸ‚αž„αžšαž€αž˜αŸαž‚αž»αžŽ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰αžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαž“αŸαŸ‡αžŠαŸ‚αžš αž™αžΎαž„αžšαž€αžƒαžΎαž‰αž˜αŸαž‚αž»αžŽ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰.

αž€αžΌαžŠαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžœαž·αž—αžΆαž‚

# ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для расчСта коэффициСнтов a ΠΈ b ΠΏΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Ρƒ ΠšΡ€Π°ΠΌΠ΅Ρ€Π°
def Kramer_method (x,y):
        # сумма Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ (всС мСсяца)
    sx = sum(x)
        # сумма истинных ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² (Π²Ρ‹Ρ€ΡƒΡ‡ΠΊΠ° Π·Π° вСсь ΠΏΠ΅Ρ€ΠΈΠΎΠ΄)
    sy = sum(y)
        # сумма произвСдСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π½Π° истинныС ΠΎΡ‚Π²Π΅Ρ‚Ρ‹
    list_xy = []
    [list_xy.append(x[i]*y[i]) for i in range(len(x))]
    sxy = sum(list_xy)
        # сумма ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ
    list_x_sq = []
    [list_x_sq.append(x[i]**2) for i in range(len(x))]
    sx_sq = sum(list_x_sq)
        # количСство Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ
    n = len(x)
        # ΠΎΠ±Ρ‰ΠΈΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ
    det = sx_sq*n - sx*sx
        # ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ ΠΏΠΎ a
    det_a = sx_sq*sy - sx*sxy
        # искомый ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ a
    a = (det_a / det)
        # ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ ΠΏΠΎ b
    det_b = sxy*n - sy*sx
        # искомый ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ b
    b = (det_b / det)
        # ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ значСния (ΠΏΡ€ΠΎΠΎΠ²Π΅Ρ€ΠΊΠ°)
    check1 = (n*b + a*sx - sy)
    check2 = (b*sx + a*sx_sq - sxy)
    return [round(a,4), round(b,4)]

# запустим Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ запишСм ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹
ab_us = Kramer_method(x_us,y_us)
a_us = ab_us[0]
b_us = ab_us[1]
print ' 33[1m' + ' 33[4m' + "ΠžΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ значСния коэффициСнтов a ΠΈ b:"  + ' 33[0m' 
print 'a =', a_us
print 'b =', b_us
print

# ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для подсчСта суммы ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ² ошибок
def errors_sq_Kramer_method(answers,x,y):
    list_errors_sq = []
    for i in range(len(x)):
        err = (answers[0] + answers[1]*x[i] - y[i])**2
        list_errors_sq.append(err)
    return sum(list_errors_sq)

# запустим Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ запишСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ошибки
error_sq = errors_sq_Kramer_method(ab_us,x_us,y_us)
print ' 33[1m' + ' 33[4m' + "Π‘ΡƒΠΌΠΌΠ° ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ² ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠΉ" + ' 33[0m'
print error_sq
print

# Π·Π°ΠΌΠ΅Ρ€ΠΈΠΌ врСмя расчСта
# print ' 33[1m' + ' 33[4m' + "ВрСмя выполнСния расчСта суммы ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ² ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠΉ:" + ' 33[0m'
# % timeit error_sq = errors_sq_Kramer_method(ab,x_us,y_us)

αž“αŸαŸ‡αž‡αžΆαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž™αžΎαž„αž‘αž‘αž½αž›αž”αžΆαž“αŸ–

αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰

αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžαž˜αŸ’αž›αŸƒαž“αŸƒαž˜αŸαž‚αž»αžŽαžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αžƒαžΎαž‰αž•αž›αž”αžΌαž€αž“αŸƒαž‚αž˜αŸ’αž›αžΆαžαž€αžΆαžšαŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αŸ” αž…αžΌαžšαž‚αžΌαžšαž”αž“αŸ’αž‘αžΆαžαŸ‹αžαŸ’αžšαž„αŸ‹αž“αŸ…αž›αžΎαž’αŸŠαžΈαžŸαŸ’αžαžΌαž€αŸ’αžšαžΆαž˜αžŠαŸ‚αž›αžαŸ’αž…αžΆαžαŸ‹αžαŸ’αž…αžΆαž™αžŠαŸ„αž™αž’αž“αž»αž›αŸ„αž˜αžαžΆαž˜αž˜αŸαž‚αž»αžŽαžŠαŸ‚αž›αž”αžΆαž“αžšαž€αžƒαžΎαž‰αŸ”

αž€αžΌαžŠαž”αž“αŸ’αž‘αžΆαžαŸ‹αžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹

# ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для формирования массива рассчСтных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π²Ρ‹Ρ€ΡƒΡ‡ΠΊΠΈ
def sales_count(ab,x,y):
    line_answers = []
    [line_answers.append(ab[0]+ab[1]*x[i]) for i in range(len(x))]
    return line_answers

# построим Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ
print 'Π“Ρ€Ρ„ΠΈΠΊβ„–2 "ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΠΈ расчСтныС ΠΎΡ‚Π²Π΅Ρ‚Ρ‹"'
plt.plot(x_us,y_us,'o',color='green',markersize=16, label = '$True$ $answers$')
plt.plot(x_us, sales_count(ab_us,x_us,y_us), color='red',lw=4,
         label='$Function: a + bx,$ $where$ $a='+str(round(ab_us[0],2))+',$ $b='+str(round(ab_us[1],2))+'$')
plt.xlabel('$Months$', size=16)
plt.ylabel('$Sales$', size=16)
plt.legend(loc=1, prop={'size': 16})
plt.show()

αžαžΆαžšαžΆαž„αž‘αžΈ 2 β€œαž…αž˜αŸ’αž›αžΎαž™αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ αž“αž·αž„αž‚αžŽαž“αžΆβ€

αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰

αž’αŸ’αž“αž€αž’αžΆαž…αž˜αžΎαž›αž€αŸ’αžšαžΆαž αŸ’αžœαž‚αž˜αŸ’αž›αžΆαžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαŸ‚αž“αžΈαž˜αž½αž™αŸ—αŸ” αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžšαž”αžŸαŸ‹αž™αžΎαž„ αž™αžΎαž„αž“αžΉαž„αž˜αž·αž“αž‘αž‘αž½αž›αž”αžΆαž“αžαž˜αŸ’αž›αŸƒαž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„αžŸαŸ†αžαžΆαž“αŸ‹αŸ—αžŽαžΆαž˜αž½αž™αž–αžΈαžœαžΆαž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž™αžΎαž„αž“αžΉαž„αž”αŸ†αž–αŸαž‰αž€αžΆαžšαž…αž„αŸ‹αžŠαžΉαž„αž…αž„αŸ‹αžƒαžΎαž‰αžšαž”αžŸαŸ‹αž™αžΎαž„αž’αŸ†αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž›αžŸαž˜αžΈαž€αžΆαžšαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰αž€αŸ†αžŽαžαŸ‹αž›αž€αŸ’αžαžŽαŸˆαž“αŸƒαž€αžΆαžšαž–αžΉαž„αž•αŸ’αž’αŸ‚αž€αž“αŸƒαž”αŸ’αžšαžΆαž€αŸ‹αž…αŸ†αžŽαžΌαž›αž“αŸ…αž›αžΎαžαŸ‚αž“αŸƒαž†αŸ’αž“αžΆαŸ†αŸ”

αž€αžΌαžŠαž‚αŸ†αž“αžΌαžŸαžαžΆαž„αž‚αž˜αŸ’αž›αžΆαž

# ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для формирования массива ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠΉ Π² ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π°Ρ…
def error_per_month(ab,x,y):
    sales_c = sales_count(ab,x,y)
    errors_percent = []
    for i in range(len(x)):
        errors_percent.append(100*(sales_c[i]-y[i])/y[i])
    return errors_percent

# построим Π³Ρ€Π°Ρ„ΠΈΠΊ
print 'Π“Ρ€Π°Ρ„ΠΈΠΊβ„–3 "ΠžΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΡ ΠΏΠΎ-мСсячно, %"'
plt.gca().bar(x_us, error_per_month(ab_us,x_us,y_us), color='brown')
plt.xlabel('Months', size=16)
plt.ylabel('Calculation error, %', size=16)
plt.show()

αž‚αŸ†αž“αžΌαžŸαžαžΆαž„αž›αŸαž 3 β€œαž‚αž˜αŸ’αž›αžΆαž, %”

αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰

αž˜αž·αž“αž›αŸ’αž’αž₯αžαžαŸ’αž…αŸ„αŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž™αžΎαž„αž”αžΆαž“αž”αž‰αŸ’αž…αž”αŸ‹αž—αžΆαžšαž€αž·αž…αŸ’αž…αžšαž”αžŸαŸ‹αž™αžΎαž„αŸ”

αž…αžΌαžšαž™αžΎαž„αžŸαžšαžŸαŸαžšαž’αž“αž»αž‚αž˜αž“αŸαžŠαŸ‚αž›αžŠαžΎαž˜αŸ’αž”αžΈαž€αŸ†αžŽαžαŸ‹αž˜αŸαž‚αž»αžŽ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ ΠΈ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ αž”αŸ’αžšαžΎαž”αžŽαŸ’αžŽαžΆαž›αŸαž™ αžŽαžΆαŸ†αž—αžΈαž€αžΆαž“αŸ‹αžαŸ‚αž…αŸ’αž”αžΆαžŸαŸ‹ αž™αžΎαž„αž“αžΉαž„αžŸαžšαžŸαŸαžšαž˜αž»αžαž„αžΆαžšαž–αžΈαžšαŸ– αž˜αž½αž™αž”αŸ’αžšαžΎαž˜αŸ‰αžΆαž‘αŸ’αžšαžΈαžŸ pseudoinverse (αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŽαŸ‚αž“αžΆαŸ†αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž‘αŸ αžŠαŸ„αž™αžŸαžΆαžšαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‚αžΊαžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž€αŸ’αž“αž»αž„αž€αžΆαžšαž‚αžŽαž“αžΆ αž“αž·αž„αž˜αž·αž“αž˜αžΆαž“αžŸαŸ’αžαŸαžšαž—αžΆαž–) αž˜αž½αž™αž‘αŸ€αžαž”αŸ’αžšαžΎαžŸαž˜αžΈαž€αžΆαžšαž˜αŸ‰αžΆαž‘αŸ’αžšαžΈαžŸαŸ”

αž€αžΌαžŠαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžœαž·αž—αžΆαž‚ (NumPy)

# для Π½Π°Ρ‡Π°Π»Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ столбСц с Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠΌΡΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π² 1. 
# Π”Π°Π½Π½Ρ‹ΠΉ столбСц Π½ΡƒΠΆΠ΅Π½ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ коэффицСнт a
vector_1 = np.ones((x_np.shape[0],1))
x_np = table_zero[['x']].values # Π½Π° всякий случай ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ Π² ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π²Π΅ΠΊΡ‚ΠΎΡ€ x_np
x_np = np.hstack((vector_1,x_np))

# ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ всС сдСлали ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ
print vector_1[0:3]
print x_np[0:3]
print '***************************************'
print

# напишСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая опрСдСляСт значСния коэффициСнтов a ΠΈ b с использованиСм псСвдообратной ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹
def pseudoinverse_matrix(X, y):
    # Π·Π°Π΄Π°Π΅ΠΌ явный Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠ²
    X = np.matrix(X)
    # опрСдСляСм Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ
    XT = X.T
    # опрСдСляСм ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ
    XTX = XT*X
    # опрСдСляСм ΠΏΡΠ΅Π²Π΄ΠΎΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ
    inv = np.linalg.pinv(XTX)
    # Π·Π°Π΄Π°Π΅ΠΌ явный Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ²
    y = np.matrix(y)
    # Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ Π²Π΅ΠΊΡ‚ΠΎΡ€ вСсов
    return (inv*XT)*y

# запустим Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ
ab_np = pseudoinverse_matrix(x_np, y_np)
print ab_np
print '***************************************'
print

# напишСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΌΠ°Ρ‚Ρ€ΠΈΡ‡Π½ΠΎΠ΅ ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠ΅
def matrix_equation(X,y):
    a = np.dot(X.T, X)
    b = np.dot(X.T, y)
    return np.linalg.solve(a, b)

# запустим Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ
ab_np = matrix_equation(x_np,y_np)
print ab_np

αž…αžΌαžšαž™αžΎαž„αž”αŸ’αžšαŸ€αž”αž’αŸ€αž”αž–αŸαž›αžœαŸαž›αžΆαžŠαŸ‚αž›αž”αžΆαž“αž…αŸ†αžŽαžΆαž™αž›αžΎαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž˜αŸαž‚αž»αžŽ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ ΠΈ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰αž’αž“αž»αž›αŸ„αž˜αžαžΆαž˜αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž…αŸ†αž“αž½αž“ ៣ αžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αŸ”

αž›αŸαžαž€αžΌαžŠαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αžŽαž“αžΆαž–αŸαž›αžœαŸαž›αžΆαž‚αžŽαž“αžΆ

print ' 33[1m' + ' 33[4m' + "ВрСмя выполнСния расчСта коэффициСнтов Π±Π΅Π· использования Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ NumPy:" + ' 33[0m'
% timeit ab_us = Kramer_method(x_us,y_us)
print '***************************************'
print
print ' 33[1m' + ' 33[4m' + "ВрСмя выполнСния расчСта коэффициСнтов с использованиСм псСвдообратной ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹:" + ' 33[0m'
%timeit ab_np = pseudoinverse_matrix(x_np, y_np)
print '***************************************'
print
print ' 33[1m' + ' 33[4m' + "ВрСмя выполнСния расчСта коэффициСнтов с использованиСм ΠΌΠ°Ρ‚Ρ€ΠΈΡ‡Π½ΠΎΠ³ΠΎ уравнСния:" + ' 33[0m'
%timeit ab_np = matrix_equation(x_np, y_np)

αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰

αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž…αŸ†αž“αž½αž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžαž·αž…αžαž½αž… αž˜αž»αžαž„αžΆαžš "αžŸαžšαžŸαŸαžšαžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„" αž…αŸαž‰αž˜αž€αž˜αž»αž“ αžŠαŸ‚αž›αžšαž€αžƒαžΎαž‰αž˜αŸαž‚αž»αžŽαžŠαŸ„αž™αž”αŸ’αžšαžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαžšαž”αžŸαŸ‹ Cramer αŸ”

αž₯αž‘αžΌαžœαž“αŸαŸ‡αž’αŸ’αž“αž€αž’αžΆαž…αž”αž“αŸ’αžαž‘αŸ…αžœαž·αž’αžΈαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŠαžΎαž˜αŸ’αž”αžΈαžŸαŸ’αžœαŸ‚αž„αžšαž€αž˜αŸαž‚αž»αžŽ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ ΠΈ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰.

αž‡αž˜αŸ’αžšαžΆαž›αž‡αž˜αŸ’αžšαžΆαž›

αž‡αžΆαžŠαŸ†αž”αžΌαž„ αž…αžΌαžšαž™αžΎαž„αž€αŸ†αžŽαžαŸ‹αžαžΆαžαžΎαž‡αž˜αŸ’αžšαžΆαž›αž‚αžΊαž‡αžΆαž’αŸ’αžœαžΈαŸ” αž“αž·αž™αžΆαž™αž±αŸ’αž™αžŸαžΆαž˜αž‰αŸ’αž‰ αž‡αž˜αŸ’αžšαžΆαž›αž‚αžΊαž‡αžΆαž•αŸ’αž“αŸ‚αž€αžŠαŸ‚αž›αž”αž„αŸ’αž αžΆαž‰αž–αžΈαž‘αž·αžŸαžŠαŸ…αž“αŸƒαž€αžΆαžšαž›αžΌαžαž›αžΆαžŸαŸ‹αž’αžαž·αž”αžšαž˜αžΆαž“αŸƒαž˜αž»αžαž„αžΆαžšαž˜αž½αž™αŸ” αžŠαŸ„αž™αž—αžΆαž–αžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž‘αžΎαž„αž—αŸ’αž“αŸ† αžŠαŸ‚αž›αž‡αž˜αŸ’αžšαžΆαž›αž”αŸ‚αžšαž˜αž»αžαž‘αŸ…αž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž›αž…αŸ„αžαž”αŸ†αž•αž»αžαž‘αŸ…αž€αŸ†αž–αžΌαž›αž—αŸ’αž“αŸ†αŸ” αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž§αž‘αžΆαž αžšαžŽαŸαž‡αžΆαž˜αž½αž™αž—αŸ’αž“αŸ†αž™αžΎαž„αž…αž„αž…αžΆαŸ†αžαžΆαžαžΆαž˜αž–αž·αžαž™αžΎαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαž‡αž˜αŸ’αžšαžΆαž›αž—αŸ’αž“αŸ†αž”αŸ†αž•αž»αžαžŠαžΎαž˜αŸ’αž”αžΈαž‘αŸ…αžŠαž›αŸ‹αžŠαžΈαž‘αŸ†αž“αžΆαž”αž±αŸ’αž™αž”αžΆαž“αž›αžΏαž“αžαžΆαž˜αžŠαŸ‚αž›αž’αžΆαž…αž’αŸ’αžœαžΎαž‘αŸ…αž”αžΆαž“ αž“αŸ„αŸ‡αž‚αžΊαž’αž”αŸ’αž”αž”αžšαž˜αžΆ - αž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž›αž˜αž»αžαž„αžΆαžšαž˜αž·αž“αž€αžΎαž“αž‘αžΎαž„αž¬αžαž™αž…αž»αŸ‡αŸ” αž“αŸ…αž…αŸ†αžŽαž»αž…αž“αŸαŸ‡ αžŠαŸαžšαžΈαžœαŸαž“αžΉαž„αžŸαŸ’αž˜αžΎαž“αžΉαž„αžŸαžΌαž“αŸ’αž™αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡β€‹αž αžΎαž™ αž™αžΎαž„β€‹αž˜αž·αž“β€‹αžαŸ’αžšαžΌαžœβ€‹αž€αžΆαžšβ€‹αž–αžŽαŸŒβ€‹αž‡αž˜αŸ’αžšαžΆαž›β€‹αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αž‡αžΆβ€‹αž€αžΆαžšβ€‹αž”αŸ’αžšαž†αžΆαŸ†αž„β€‹αž“αžΉαž„β€‹αž–αžŽαŸŒβ€‹αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαžŸαŸ’αžœαŸ‚αž„αžšαž€ antigradient αž’αŸ’αž“αž€αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αžαŸ’αžšαžΌαžœαž‚αž»αžŽαž‡αž˜αŸ’αžšαžΆαž›αžŠαŸ„αž™ -1 (αžŠαž€αž˜αž½αž™) αŸ”

αž…αžΌαžšαž™αžΎαž„αž™αž€αž…αž·αžαŸ’αžαž‘αž»αž€αžŠαžΆαž€αŸ‹αž›αžΎαž€αžΆαžšαž–αž·αžαžŠαŸ‚αž›αžαžΆαž˜αž»αžαž„αžΆαžšαž˜αž½αž™αž’αžΆαž…αž˜αžΆαž“αž’αž”αŸ’αž”αžšαž˜αžΆαž‡αžΆαž…αŸ’αžšαžΎαž“ αž αžΎαž™αž”αžΆαž“αž…αž»αŸ‡αž‘αŸ…αž€αŸ’αž“αž»αž„αž˜αž½αž™αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αž–αž½αž€αžœαžΆαžŠαŸ„αž™αž”αŸ’αžšαžΎαž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŠαŸ‚αž›αž”αžΆαž“αžŸαŸ’αž“αžΎαž‘αžΎαž„αžαžΆαž„αž€αŸ’αžšαŸ„αž˜ αž™αžΎαž„αž“αžΉαž„αž˜αž·αž“αž’αžΆαž…αžŸαŸ’αžœαŸ‚αž„αžšαž€αž’αž”αŸ’αž”αž”αžšαž˜αžΆαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŠαŸ‚αž›αž’αžΆαž…αž‘αžΆαž”αž‡αžΆαž„αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž”αžΆαž“αžšαž€αžƒαžΎαž‰αž“αŸ„αŸ‡αž‘αŸαŸ” αžŸαž˜αŸ’αžšαžΆαž€β€‹αž…αž»αŸ‡ αž“αŸαŸ‡β€‹αž˜αž·αž“β€‹αž˜αŸ‚αž“β€‹αž‡αžΆβ€‹αž€αžΆαžšβ€‹αž‚αŸ†αžšαžΆαž˜β€‹αž€αŸ†αž αŸ‚αž„β€‹αžŠαž›αŸ‹β€‹αž™αžΎαž„β€‹αž‘αŸ! αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžšαž”αžŸαŸ‹αž™αžΎαž„ αž™αžΎαž„αž€αŸ†αž–αž»αž„αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž’αž”αŸ’αž”αž”αžšαž˜αžΆαžαŸ‚αž˜αž½αž™ αž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈαž˜αž»αžαž„αžΆαžšαžšαž”αžŸαŸ‹αž™αžΎαž„αŸ” αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ αž“αŸ…αž›αžΎαž€αŸ’αžšαžΆαž αŸ’αžœαž‚αžΊαž‡αžΆαž”αŸ‰αžΆαžšαŸ‰αžΆαž”αžΌαž‘αžΆαž’αž˜αŸ’αž˜αžαžΆαŸ” αž αžΎαž™αžŠαžΌαž…αžŠαŸ‚αž›αž™αžΎαž„αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‚αŸ’αž“αžΆαž‚αž½αžšαžαŸ‚αžŠαžΉαž„αž™αŸ‰αžΆαž„αž…αŸ’αž”αžΆαžŸαŸ‹αž–αžΈαžœαž‚αŸ’αž‚αžŸαž·αž€αŸ’αžŸαžΆαž‚αžŽαž·αžαžœαž·αž‘αŸ’αž™αžΆαžšαž”αžŸαŸ‹αžŸαžΆαž›αžΆαžšαž”αžŸαŸ‹αž™αžΎαž„ αž”αŸ‰αžΆαžšαŸ‰αžΆαž”αžΌαž‘αžΆαž˜αžΆαž“αž’αž”αŸ’αž”αž”αžšαž˜αžΆαžαŸ‚αž˜αž½αž™αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ”

αž”αž“αŸ’αž‘αžΆαž”αŸ‹β€‹αž–αžΈβ€‹αž™αžΎαž„β€‹αž”αžΆαž“β€‹αžšαž€β€‹αžƒαžΎαž‰β€‹αžαžΆβ€‹αž αŸαžαž»β€‹αž’αŸ’αžœαžΈβ€‹αž”αžΆαž“β€‹αž‡αžΆβ€‹αž™αžΎαž„β€‹αžαŸ’αžšαžΌαžœβ€‹αž€αžΆαžšβ€‹αž‡αž˜αŸ’αžšαžΆαž›β€‹αž˜αž½αž™ αž αžΎαž™β€‹αž€αŸβ€‹αžαžΆβ€‹αž‡αž˜αŸ’αžšαžΆαž›β€‹αž‚αžΊβ€‹αž‡αžΆβ€‹αž•αŸ’αž“αŸ‚αž€β€‹αž˜αž½αž™ αž“αŸ„αŸ‡β€‹αž‚αžΊβ€‹αž‡αžΆβ€‹αžœαŸ‰αž·αž…αž‘αŸαžšβ€‹αžŠαŸ‚αž›β€‹αž˜αžΆαž“β€‹αž€αžΌαž’αžšαžŠαŸ„αžŽαŸβ€‹αžŠαŸ‚αž›β€‹αž”αžΆαž“β€‹αž•αŸ’αžαž›αŸ‹β€‹αž±αŸ’αž™β€‹αžŠαŸ‚αž›β€‹αž‡αžΆβ€‹αž˜αŸαž‚αž»αžŽβ€‹αžŠαžΌαž…αž‚αŸ’αž“αžΆβ€‹αž™αŸ‰αžΆαž„β€‹αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αŸ” αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ ΠΈ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ αž™αžΎαž„αž’αžΆαž…αž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαž…αž»αŸ‡αž‡αž˜αŸ’αžšαžΆαž›αŸ”

αž˜αž»αž“αž–αŸαž›αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžαŸ’αž‰αž»αŸ†αžŸαŸ’αž“αžΎαž±αŸ’αž™αž’αžΆαž“αž”αŸ’αžšαž™αŸ„αž‚αž–αžΈαžšαž”αžΈαž’αŸ†αž–αžΈαž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž€αžΆαžšαž”αž“αŸ’αžαž–αžΌαž‡αŸ–

  • αž™αžΎαž„αž€αŸ†αžŽαžαŸ‹αž€αŸ’αž“αž»αž„αž›αž€αŸ’αžαžŽαŸˆ pseudo-αž…αŸƒαžŠαž“αŸ’αž™ αž€αžΌαž’αžšαžŠαŸ„αž“αŸαž“αŸƒαž˜αŸαž‚αž»αžŽ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ ΠΈ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰. αž€αŸ’αž“αž»αž„αž§αž‘αžΆαž αžšαžŽαŸαžšαž”αžŸαŸ‹αž™αžΎαž„ αž™αžΎαž„αž“αžΉαž„αž€αŸ†αžŽαžαŸ‹αž˜αŸαž‚αž»αžŽαž“αŸ…αž‡αž·αžαžŸαžΌαž“αŸ’αž™αŸ” αž“αŸαŸ‡β€‹αž‡αžΆβ€‹αž‘αž˜αŸ’αž›αžΆαž”αŸ‹β€‹αž’αž˜αŸ’αž˜αžαžΆ αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αž€αžšαžŽαžΈβ€‹αž“αžΈαž˜αž½αž™αŸ—β€‹αž’αžΆαž…β€‹αž˜αžΆαž“β€‹αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžβ€‹αžšαŸ€αž„αŸ—β€‹αžαŸ’αž›αž½αž“αŸ”
  • αž–αžΈαž€αžΌαž’αžšαžŠαŸ„αžŽαŸ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ αžŠαž€αžαž˜αŸ’αž›αŸƒαž“αŸƒαžŠαŸαžšαžΈαžœαŸαž—αžΆαž‚αž“αŸƒαž›αŸ†αžŠαžΆαž”αŸ‹αž‘αžΈ 1 αž“αŸ…αž…αŸ†αžŽαž»αž… αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰. αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžŠαŸαžšαžΈαžœαŸαž‚αžΊαžœαž·αž‡αŸ’αž‡αž˜αžΆαž“ αž“αŸ„αŸ‡αž˜αž»αžαž„αžΆαžšαž“αžΉαž„αž€αžΎαž“αž‘αžΎαž„αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžŠαŸ„αž™αž€αžΆαžšαžŠαž€αžαž˜αŸ’αž›αŸƒαž“αŸƒαžŠαŸαžšαžΈαžœαŸ αž™αžΎαž„αž“αžΉαž„αž•αŸ’αž›αžΆαžŸαŸ‹αž‘αžΈαž€αŸ’αž“αž»αž„αž‘αž·αžŸαžŠαŸ…αž•αŸ’αž‘αž»αž™αž“αŸƒαž€αžΆαžšαž›αžΌαžαž›αžΆαžŸαŸ‹ αž–αŸ„αž›αž‚αžΊαž€αŸ’αž“αž»αž„αž‘αž·αžŸαžŠαŸ…αž“αŸƒαžαŸ†αžŽαž–αžΌαž‡αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž“αž·αžŸαŸ’αžŸαž“αŸ’αž‘αžœαžαŸ’αžαž»αž’αžœαž·αž‡αŸ’αž‡αž˜αžΆαž“ αž“αŸ„αŸ‡αž˜αž»αžαž„αžΆαžšαž“αŸ…αž…αŸ†αžŽαž»αž…αž“αŸαŸ‡αžαž™αž…αž»αŸ‡ αž αžΎαž™αžŠαŸ„αž™αž€αžΆαžšαžŠαž€αžαž˜αŸ’αž›αŸƒαž“αŸƒαžŠαŸαžšαžΈαžœαŸαž‘αžΈαžœ αž™αžΎαž„αž•αŸ’αž›αžΆαžŸαŸ‹αž‘αžΈαž€αŸ’αž“αž»αž„αž‘αž·αžŸαžŠαŸ…αž“αŸƒαžαŸ†αžŽαž–αžΌαž‡αŸ”
  • αž™αžΎαž„αž’αž“αž»αžœαžαŸ’αžαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαž‡αžΆαž˜αž½αž™αž€αžΌαž’αžšαžŠαŸ„αž“αŸ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰αŸ– αžŠαž€αžαž˜αŸ’αž›αŸƒαž“αŸƒαžŠαŸαžšαžΈαžœαŸαžŠαŸ„αž™αž•αŸ’αž“αŸ‚αž€αž“αŸ…αž…αŸ†αžŽαž»αž… αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰.
  • αžŠαžΎαž˜αŸ’αž”αžΈαž€αž»αŸ†αž±αŸ’αž™αž›αŸ„αžαž–αžΈαž›αžΎαž’αž”αŸ’αž”αžšαž˜αžΆαž αžΎαž™αž αŸ„αŸ‡αž αžΎαžšαž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž›αŸ†αž αžŠαŸαž‡αŸ’αžšαŸ…αžœαžΆαž…αžΆαŸ†αž”αžΆαž…αŸ‹αžαŸ’αžšαžΌαžœαž€αŸ†αžŽαžαŸ‹αž‘αŸ†αž αŸ†αž‡αŸ†αž αžΆαž“αž€αŸ’αž“αž»αž„αž‘αž·αžŸαžŠαŸ…αž“αŸƒαž€αžΆαžšαž…αž»αŸ‡αŸ” αž‡αžΆαž‘αžΌαž‘αŸ… αž’αŸ’αž“αž€αž’αžΆαž…αžŸαžšαžŸαŸαžšαž’αžαŸ’αžαž”αž‘αž‘αžΆαŸ†αž„αž˜αžΌαž›αž’αŸ†αž–αžΈαžšαž”αŸ€αž”αž€αŸ†αžŽαžαŸ‹αž‡αŸ†αž αžΆαž“αž±αŸ’αž™αž”αžΆαž“αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ αž“αž·αž„αžšαž”αŸ€αž”αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžœαžΆαž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž…αž»αŸ‡αž€αŸ’αž“αž»αž„αž‚αŸ„αž›αž”αŸ†αžŽαž„αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž€αžΆαžšαž…αŸ†αžŽαžΆαž™αž›αžΎαž€αžΆαžšαž‚αžŽαž“αžΆαŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž₯αž‘αžΌαžœαž“αŸαŸ‡ αž™αžΎαž„αž˜αžΆαž“αž—αžΆαžšαž€αž·αž…αŸ’αž…αžαž»αžŸαž‚αŸ’αž“αžΆαž”αž“αŸ’αžαž·αž…αž”αž“αŸ’αžαž½αž… αž αžΎαž™αž™αžΎαž„αž“αžΉαž„αž”αž„αŸ’αž€αžΎαžαž‘αŸ†αž αŸ†αž‡αŸ†αž αžΆαž“αžŠαŸ„αž™αž”αŸ’αžšαžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαžœαž·αž‘αŸ’αž™αžΆαžŸαžΆαžŸαŸ’αžαŸ’αžšαž“αŸƒ "poke" αž¬αžŠαžΌαž…αžŠαŸ‚αž›αž–αž½αž€αž‚αŸαž“αž·αž™αžΆαž™αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž“αž·αž™αžΆαž™αž‘αžΌαž‘αŸ… αž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„αŸ”
  • αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž™αžΎαž„αž˜αž€αž–αžΈαž€αžΌαž’αžšαžŠαŸ„αž“αŸαžŠαŸ‚αž›αž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ ΠΈ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ αžŠαž€αžαž˜αŸ’αž›αŸƒαž“αŸƒαž“αž·αžŸαŸ’αžŸαž“αŸ’αž‘αžœαžαŸ’αžαž» αž™αžΎαž„αž‘αž‘αž½αž›αž”αžΆαž“αž€αžΌαž’αžšαžŠαŸ„αž“αŸαžαŸ’αž˜αžΈαŸ” αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ ΠΈ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰. αž™αžΎαž„αž’αž“αž»αžœαžαŸ’αžαž‡αŸ†αž αžΆαž“αž”αž“αŸ’αž‘αžΆαž”αŸ‹ (αžŠαž€) αžšαž½αž…αž αžΎαž™αž–αžΈαž€αžΌαž’αžšαžŠαŸ„αž“αŸαžŠαŸ‚αž›αž”αžΆαž“αž‚αžŽαž“αžΆαŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž αžΎαž™ αžœαžŠαŸ’αžαž“αŸαŸ‡αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž˜αŸ’αžαž„αž αžΎαž™αž˜αŸ’αžαž„αž‘αŸ€αž αžšαž αžΌαžαžŠαž›αŸ‹αž€αžΆαžšαž”αž„αŸ’αžšαž½αž”αž”αž„αŸ’αžšαž½αž˜αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αžΆαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αŸ”

αž‘αžΆαŸ†αž„αž’αžŸαŸ‹! αž₯αž‘αžΌαžœαž“αŸαŸ‡ αž™αžΎαž„αžαŸ’αžšαŸ€αž˜αžšαž½αž…αžšαžΆαž›αŸ‹αž αžΎαž™ αžŠαžΎαž˜αŸ’αž”αžΈαžŸαŸ’αžœαŸ‚αž„αžšαž€αž‡αŸ’αžšαž›αž„αž‡αŸ’αžšαŸ…αž”αŸ†αž•αž»αžαž“αŸƒαž‡αŸ’αžšαž›αž„ Mariana TrenchαŸ” αžαŸ„αŸ‡β€‹αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αŸ”

αž€αžΌαžŠαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž…αž»αŸ‡αž‡αž˜αŸ’αžšαžΆαž›

# напишСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π½ΠΎΠ³ΠΎ спуска Π±Π΅Π· использования Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ NumPy. 
# Ѐункция Π½Π° Π²Ρ…ΠΎΠ΄ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ x,y, Π΄Π»ΠΈΠ½Ρƒ шага (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ=0,1), Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΠΌΡƒΡŽ ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚ΡŒ(tolerance)
def gradient_descent_usual(x_us,y_us,l=0.1,tolerance=0.000000000001):
    # сумма Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ (всС мСсяца)
    sx = sum(x_us)
    # сумма истинных ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² (Π²Ρ‹Ρ€ΡƒΡ‡ΠΊΠ° Π·Π° вСсь ΠΏΠ΅Ρ€ΠΈΠΎΠ΄)
    sy = sum(y_us)
    # сумма произвСдСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π½Π° истинныС ΠΎΡ‚Π²Π΅Ρ‚Ρ‹
    list_xy = []
    [list_xy.append(x_us[i]*y_us[i]) for i in range(len(x_us))]
    sxy = sum(list_xy)
    # сумма ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ
    list_x_sq = []
    [list_x_sq.append(x_us[i]**2) for i in range(len(x_us))]
    sx_sq = sum(list_x_sq)
    # количСство Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ
    num = len(x_us)
    # Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ значСния коэффициСнтов, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ псСвдослучайным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ
    a = float(random.uniform(-0.5, 0.5))
    b = float(random.uniform(-0.5, 0.5))
    # создаСм массив с ошибками, для старта ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ значСния 1 ΠΈ 0
    # послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ спуска стартовыС значСния ΡƒΠ΄Π°Π»ΠΈΠΌ
    errors = [1,0]
    # запускаСм Ρ†ΠΈΠΊΠ» спуска
    # Ρ†ΠΈΠΊΠ» Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ послСднСй ошибки суммы ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ² ΠΎΡ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ, Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ мСньшС tolerance
    while abs(errors[-1]-errors[-2]) > tolerance:
        a_step = a - l*(num*a + b*sx - sy)/num
        b_step = b - l*(a*sx + b*sx_sq - sxy)/num
        a = a_step
        b = b_step
        ab = [a,b]
        errors.append(errors_sq_Kramer_method(ab,x_us,y_us))
    return (ab),(errors[2:])

# запишСм массив Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ 
list_parametres_gradient_descence = gradient_descent_usual(x_us,y_us,l=0.1,tolerance=0.000000000001)


print ' 33[1m' + ' 33[4m' + "ЗначСния коэффициСнтов a ΠΈ b:" + ' 33[0m'
print 'a =', round(list_parametres_gradient_descence[0][0],3)
print 'b =', round(list_parametres_gradient_descence[0][1],3)
print


print ' 33[1m' + ' 33[4m' + "Π‘ΡƒΠΌΠΌΠ° ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ² ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠΉ:" + ' 33[0m'
print round(list_parametres_gradient_descence[1][-1],3)
print



print ' 33[1m' + ' 33[4m' + "ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ Π² Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π½ΠΎΠΌ спускС:" + ' 33[0m'
print len(list_parametres_gradient_descence[1])
print

αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰

αž™αžΎαž„αž”αžΆαž“αž…αž»αŸ‡αž‘αŸ…αž”αžΆαžαž“αŸƒ Mariana Trench αž αžΎαž™αž“αŸ…αž‘αžΈαž“αŸ„αŸ‡αž™αžΎαž„αž”αžΆαž“αžšαž€αžƒαžΎαž‰αžαž˜αŸ’αž›αŸƒαž˜αŸαž‚αž»αžŽαžŠαžΌαž…αž‚αŸ’αž“αžΆαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ” αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ ΠΈ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰αžŠαŸ‚αž›αž‡αžΆαž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαžšαŸ†αž–αžΉαž„αž‘αž»αž€αŸ”

αžαŸ„αŸ‡αž‘αŸ…αž˜αž»αž‡αž˜αž½αž™αž‘αŸ€αž αž˜αžΆαž“αžαŸ‚αž›αžΎαž€αž“αŸαŸ‡αž‘αŸ αž™αžΆαž“αž‡αŸ†αž“αž·αŸ‡αž‘αžΉαž€αž‡αŸ’αžšαŸ…αžšαž”αžŸαŸ‹αž™αžΎαž„αž“αžΉαž„αž–αŸ„αžšαž–αŸαž‰αžŠαŸ„αž™αž”αž…αŸ’αž…αŸαž€αžœαž·αž‘αŸ’αž™αžΆαž•αŸ’αžŸαŸαž„αŸ— αž–αŸ„αž›αž‚αžΊαž”αžŽαŸ’αžŽαžΆαž›αŸαž™ αžŽαžΆαŸ†αž—αžΈ.

αž›αŸαžαž€αžΌαžŠαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž…αž»αŸ‡αž‡αž˜αŸ’αžšαžΆαž› (NumPy)

# ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π½ΠΎΠ³ΠΎ спуска с использованиСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ NumPy, 
# напишСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ опрСдСлСния суммы ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ² ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠΉ Ρ‚Π°ΠΊΠΆΠ΅ с использованиСм NumPy
def error_square_numpy(ab,x_np,y_np):
    y_pred = np.dot(x_np,ab)
    error = y_pred - y_np
    return sum((error)**2)

# напишСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π½ΠΎΠ³ΠΎ спуска с использованиСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ NumPy. 
# Ѐункция Π½Π° Π²Ρ…ΠΎΠ΄ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ x,y, Π΄Π»ΠΈΠ½Ρƒ шага (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ=0,1), Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΠΌΡƒΡŽ ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚ΡŒ(tolerance)
def gradient_descent_numpy(x_np,y_np,l=0.1,tolerance=0.000000000001):
    # сумма Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ (всС мСсяца)
    sx = float(sum(x_np[:,1]))
    # сумма истинных ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² (Π²Ρ‹Ρ€ΡƒΡ‡ΠΊΠ° Π·Π° вСсь ΠΏΠ΅Ρ€ΠΈΠΎΠ΄)
    sy = float(sum(y_np))
    # сумма произвСдСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π½Π° истинныС ΠΎΡ‚Π²Π΅Ρ‚Ρ‹
    sxy = x_np*y_np
    sxy = float(sum(sxy[:,1]))
    # сумма ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ
    sx_sq = float(sum(x_np[:,1]**2))
    # количСство Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ
    num = float(x_np.shape[0])
    # Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ значСния коэффициСнтов, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ псСвдослучайным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ
    a = float(random.uniform(-0.5, 0.5))
    b = float(random.uniform(-0.5, 0.5))
    # создаСм массив с ошибками, для старта ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ значСния 1 ΠΈ 0
    # послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ спуска стартовыС значСния ΡƒΠ΄Π°Π»ΠΈΠΌ
    errors = [1,0]
    # запускаСм Ρ†ΠΈΠΊΠ» спуска
    # Ρ†ΠΈΠΊΠ» Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ послСднСй ошибки суммы ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ² ΠΎΡ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ, Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ мСньшС tolerance
    while abs(errors[-1]-errors[-2]) > tolerance:
        a_step = a - l*(num*a + b*sx - sy)/num
        b_step = b - l*(a*sx + b*sx_sq - sxy)/num
        a = a_step
        b = b_step
        ab = np.array([[a],[b]])
        errors.append(error_square_numpy(ab,x_np,y_np))
    return (ab),(errors[2:])

# запишСм массив Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ 
list_parametres_gradient_descence = gradient_descent_numpy(x_np,y_np,l=0.1,tolerance=0.000000000001)

print ' 33[1m' + ' 33[4m' + "ЗначСния коэффициСнтов a ΠΈ b:" + ' 33[0m'
print 'a =', round(list_parametres_gradient_descence[0][0],3)
print 'b =', round(list_parametres_gradient_descence[0][1],3)
print


print ' 33[1m' + ' 33[4m' + "Π‘ΡƒΠΌΠΌΠ° ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ² ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠΉ:" + ' 33[0m'
print round(list_parametres_gradient_descence[1][-1],3)
print

print ' 33[1m' + ' 33[4m' + "ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ Π² Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π½ΠΎΠΌ спускС:" + ' 33[0m'
print len(list_parametres_gradient_descence[1])
print

αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰
αžαž˜αŸ’αž›αŸƒαž˜αŸαž‚αž»αžŽ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ ΠΈ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ αž˜αž·αž“αž’αžΆαž…αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž”αžΆαž“αŸ”

αžŸαžΌαž˜αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž›αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž›αž€αŸ†αž αž»αžŸαž”αžΆαž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž’αŸ†αž‘αž»αž„αž–αŸαž›αž…αž»αŸ‡αž‡αž˜αŸ’αžšαžΆαž› αž“αŸ„αŸ‡αž‚αžΊαžšαž”αŸ€αž”αžŠαŸ‚αž›αž•αž›αž”αžΌαž€αž“αŸƒαž‚αž˜αŸ’αž›αžΆαžαž€αžΆαžšαŸ‰αŸαž”αžΆαž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž‡αŸ†αž αžΆαž“αž“αžΈαž˜αž½αž™αŸ—αŸ”

αž€αžΌαžŠαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αžΌαžšαž•αž›αž”αžΌαž€αž“αŸƒαž‚αž˜αŸ’αž›αžΆαžαž€αžΆαžšαŸ‰αŸ

print 'Π“Ρ€Π°Ρ„ΠΈΠΊβ„–4 "Π‘ΡƒΠΌΠΌΠ° ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ² ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠΉ ΠΏΠΎ-шагово"'
plt.plot(range(len(list_parametres_gradient_descence[1])), list_parametres_gradient_descence[1], color='red', lw=3)
plt.xlabel('Steps (Iteration)', size=16)
plt.ylabel('Sum of squared deviations', size=16)
plt.show()

αž€αŸ’αžšαžΆαž αŸ’αžœαž›αŸαž 4 β€œαž•αž›αž”αžΌαž€αž“αŸƒαž‚αž˜αŸ’αž›αžΆαžαž€αžΆαžšαŸ‰αŸαž€αŸ†αž‘αž»αž„αž–αŸαž›αž…αž»αŸ‡αž‡αž˜αŸ’αžšαžΆαž›β€

αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰

αž“αŸ…αž›αžΎαž€αŸ’αžšαžΆαž αŸ’αžœ αž™αžΎαž„αžƒαžΎαž‰αžαžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž‡αŸ†αž αžΆαž“αž“αžΈαž˜αž½αž™αŸ— αž€αŸ†αž αž»αžŸαžαž™αž…αž»αŸ‡ αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž…αŸ†αž“αž½αž“αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž“αŸƒαž€αžΆαžšαž’αŸ’αžœαžΎαž˜αŸ’αžαž„αž‘αŸ€αž αž™αžΎαž„αžŸαž„αŸ’αž€αŸαžαž˜αžΎαž›αž”αž“αŸ’αž‘αžΆαžαŸ‹αžŸαŸ’αž‘αžΎαžšαžαŸ‚αž•αŸ’αžŠαŸαž€αŸ”

αž‡αžΆαž…αž»αž„αž€αŸ’αžšαŸ„αž™ αž…αžΌαžšαž™αžΎαž„αž”αŸ‰αžΆαž“αŸ‹αžŸαŸ’αž˜αžΆαž“αž—αžΆαž–αžαž»αžŸαž‚αŸ’αž“αžΆαž“αŸƒαž–αŸαž›αžœαŸαž›αžΆαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΌαžŠαŸ–

αž€αžΌαžŠαžŠαžΎαž˜αŸ’αž”αžΈαž€αŸ†αžŽαžαŸ‹αž–αŸαž›αžœαŸαž›αžΆαž‚αžŽαž“αžΆαž…αž»αŸ‡αž‡αž˜αŸ’αžšαžΆαž›αž‡αž˜αŸ’αžšαžΆαž›

print ' 33[1m' + ' 33[4m' + "ВрСмя выполнСния Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π½ΠΎΠ³ΠΎ спуска Π±Π΅Π· использования Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ NumPy:" + ' 33[0m'
%timeit list_parametres_gradient_descence = gradient_descent_usual(x_us,y_us,l=0.1,tolerance=0.000000000001)
print '***************************************'
print

print ' 33[1m' + ' 33[4m' + "ВрСмя выполнСния Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π½ΠΎΠ³ΠΎ спуска с использованиСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ NumPy:" + ' 33[0m'
%timeit list_parametres_gradient_descence = gradient_descent_numpy(x_np,y_np,l=0.1,tolerance=0.000000000001)

αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰

αž”αŸ’αžšαž αŸ‚αž›β€‹αž‡αžΆβ€‹αž™αžΎαž„β€‹αž€αŸ†αž–αž»αž„β€‹αž’αŸ’αžœαžΎβ€‹αž’αŸ’αžœαžΈβ€‹αž˜αž½αž™β€‹αžαž»αžŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αžœαžΆβ€‹αž‡αžΆβ€‹αž˜αž»αžαž„αžΆαžš "αžŸαžšαžŸαŸαžšβ€‹αžαžΆαž˜β€‹αž•αŸ’αž‘αŸ‡" αž’αž˜αŸ’αž˜αžαžΆβ€‹αžŠαŸ‚αž›β€‹αž˜αž·αž“β€‹αž”αŸ’αžšαžΎβ€‹αž”αžŽαŸ’αžŽαžΆαž›αŸαž™ αžŽαžΆαŸ†αž—αžΈ αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αžΎαžŸαž–αžΈαž–αŸαž›αžœαŸαž›αžΆαž‚αžŽαž“αžΆαž“αŸƒαž˜αž»αžαž„αžΆαžšαžŠαŸ„αž™αž”αŸ’αžšαžΎαž”αžŽαŸ’αžŽαžΆαž›αŸαž™ αžŽαžΆαŸ†αž—αžΈ.

αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž™αžΎαž„αž˜αž·αž“αžˆαžšαž“αŸ…αžŸαŸ’αž„αŸ€αž˜αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αŸ†αž–αž»αž„αž†αŸ’αž–αŸ„αŸ‡αž‘αŸ…αžšαž€αž€αžΆαžšαžŸαž·αž€αŸ’αžŸαžΆαžœαž·αž’αžΈαžŠαŸαž‚αž½αžšαž±αŸ’αž™αžšαŸ†αž—αžΎαž”αž˜αž½αž™αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰αŸ” αž‡αž½αž”αž‚αŸ’αž“αžΆ!

αž€αžΆαžšαž…αž»αŸ‡αž‡αž˜αŸ’αžšαžΆαž› Stochastic

αžŠαžΎαž˜αŸ’αž”αžΈαž™αž›αŸ‹αž–αžΈαž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž“αŸƒαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž“αŸƒαž‡αž˜αŸ’αžšαžΆαž›αž‡αž˜αŸ’αžšαžΆαž› stochastic αžœαžΆαž‡αžΆαž€αžΆαžšαž›αŸ’αž’αž”αŸ’αžšαžŸαžΎαžšαž‡αžΆαž„αž˜αž»αž“αžŠαžΎαž˜αŸ’αž”αžΈαž€αŸ†αžŽαžαŸ‹αž—αžΆαž–αžαž»αžŸαž‚αŸ’αž“αžΆαžšαž”αžŸαŸ‹αžœαžΆαž–αžΈαž€αžΆαžšαž…αž»αŸ‡αž‡αž˜αŸ’αžšαžΆαž›αž’αž˜αŸ’αž˜αžαžΆαŸ” αž™αžΎαž„αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸƒ gradient descent αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžŠαŸαžšαžΈαžœαŸαž“αŸƒ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ ΠΈ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ αž”αžΆαž“αž”αŸ’αžšαžΎαž•αž›αž”αžΌαž€αž“αŸƒαžαž˜αŸ’αž›αŸƒαž“αŸƒαž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαž‘αžΆαŸ†αž„αž’αžŸαŸ‹ αž“αž·αž„αž…αž˜αŸ’αž›αžΎαž™αž–αž·αžαžŠαŸ‚αž›αž˜αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αž‚αŸ†αžšαžΌ (αž“αŸ„αŸ‡αž‚αžΊαž•αž›αž”αžΌαž€αž“αŸƒαž‘αžΆαŸ†αž„αž’αžŸαŸ‹ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ ΠΈ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰) αž“αŸ…αž€αŸ’αž“αž»αž„ stochastic gradient descent αž™αžΎαž„αž“αžΉαž„αž˜αž·αž“αž”αŸ’αžšαžΎαžαž˜αŸ’αž›αŸƒαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αž˜αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αž‚αŸ†αžšαžΌαž“αŸ„αŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž•αŸ’αž‘αž»αž™αž‘αŸ…αžœαž·αž‰ pseudo-random αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž‚αŸαž αŸ…αžαžΆαžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸαž‚αŸ†αžšαžΌ αž αžΎαž™αž”αŸ’αžšαžΎαžαž˜αŸ’αž›αŸƒαžšαž”αžŸαŸ‹αžœαžΆαŸ”

αž§αž‘αžΆαž αžšαžŽαŸ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž‡αžΆαž›αŸαž 3 (αž”αžΈ) αž“αŸ„αŸ‡αž™αžΎαž„αž™αž€αžαž˜αŸ’αž›αŸƒ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ ΠΈ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž™αžΎαž„αž‡αŸ†αž“αž½αžŸαžαž˜αŸ’αž›αŸƒαž‘αŸ…αž€αŸ’αž“αž»αž„αžŸαž˜αžΈαž€αžΆαžšαžŠαŸαžšαžΈαžœαŸ αž“αž·αž„αž€αŸ†αžŽαžαŸ‹αž€αžΌαž’αžšαžŠαŸ„αžŽαŸαžαŸ’αž˜αžΈαŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ αžŠαŸ„αž™αž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž€αžΌαž’αžšαžŠαŸ„αžŽαŸ αž™αžΎαž„αž˜αŸ’αžαž„αž‘αŸ€αžαž€αŸ†αžŽαžαŸ‹αžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸαž‚αŸ†αžšαžΌαžŠαŸ„αž™αž…αŸƒαžŠαž“αŸ’αž™ αž‡αŸ†αž“αž½αžŸαžαž˜αŸ’αž›αŸƒαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαž“αžΉαž„αž›αž·αž”αž·αž€αŸ’αžšαž˜αž‘αŸ…αž€αŸ’αž“αž»αž„αžŸαž˜αžΈαž€αžΆαžšαžŒαžΈαž•αŸαžšαŸ‰αž„αŸ‹αžŸαŸ’αž™αŸ‚αž›αž•αŸ’αž“αŸ‚αž€ αž“αž·αž„αž€αŸ†αžŽαžαŸ‹αž€αžΌαž’αžšαžŠαŸ„αžŽαŸαžαžΆαž˜αžœαž·αž’αžΈαžαŸ’αž˜αžΈαž˜αž½αž™αŸ” αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ ΠΈ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ αž›αŸ” αžšαž αžΌαžαžŠαž›αŸ‹αž€αžΆαžšαž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆαž”αŸ’αžšαŸ‚αž‘αŸ…αž‡αžΆαž–αžŽαŸŒαž”αŸƒαžαž„αŸ” αž“αŸ… glance αžŠαŸ†αž”αžΌαž„ αžœαžΆαž’αžΆαž…αž αžΆαž€αŸ‹αžŠαžΌαž…αž‡αžΆαžœαžΆαž˜αž·αž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αžΆαž›αŸ‹αžαŸ‚αžŸαŸ„αŸ‡ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž’αŸ’αžœαžΎαž”αžΆαž“αŸ” αžœαžΆαž‡αžΆαž€αžΆαžšαž–αž·αžαžŠαŸ‚αž›αžαžΆαžœαžΆαž‚αž½αžšαž’αŸ„αž™αž€αžαŸ‹αžŸαŸ†αž‚αžΆαž›αŸ‹αžαžΆαž€αŸ†αž αž»αžŸαž˜αž·αž“αžαž™αž…αž»αŸ‡αž‡αžΆαž˜αž½αž™αž‚αŸ’αžšαž”αŸ‹αž‡αŸ†αž αžΆαž“αž‘αŸαž”αŸ‰αž»αž“αŸ’αžαŸ‚αž–αž·αžαž‡αžΆαž˜αžΆαž“αž‘αŸ†αž“αŸ„αžšαŸ”

αžαžΎαž’αŸ’αžœαžΈαž‘αŸ…αž‡αžΆαž‚αž»αžŽαžŸαž˜αŸ’αž”αžαŸ’αžαž·αž“αŸƒαž€αžΆαžšαž…αž»αŸ‡αž‡αž˜αŸ’αžšαžΆαž› stochastic αž‡αžΆαž„αž’αž˜αŸ’αž˜αžαžΆ? αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž‘αŸ†αž αŸ†αž‚αŸ†αžšαžΌαžšαž”αžŸαŸ‹αž™αžΎαž„αž˜αžΆαž“αž‘αŸ†αž αŸ†αž’αŸ†αžŽαžΆαžŸαŸ‹ αž αžΎαž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αžœαžΆαžŸαŸ‹αž‡αžΆαžαž˜αŸ’αž›αŸƒαžšαžΆαž”αŸ‹αž˜αŸ‰αžΊαž“ αž“αŸ„αŸ‡αžœαžΆαž€αžΆαž“αŸ‹αžαŸ‚αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž“αž·αž™αžΆαž™αžαžΆ αž˜αž½αž™αž–αžΆαž“αŸ‹αžŠαŸ„αž™αž…αŸƒαžŠαž“αŸ’αž™ αž‡αžΆαž‡αžΆαž„αž‚αŸ†αžšαžΌαž‘αžΆαŸ†αž„αž˜αžΌαž›αŸ” αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž›αž€αžΆαžšαž…αž»αŸ‡αž‡αž˜αŸ’αžšαžΆαž› stochastic αž…αžΌαž›αž˜αž€αž›αŸαž„αŸ” αž‡αžΆβ€‹αž€αžΆαžšβ€‹αž–αž·αžβ€‹αžŽαžΆαžŸαŸ‹β€‹αž€αŸ’αž“αž»αž„β€‹αž€αžšαžŽαžΈβ€‹αžšαž”αžŸαŸ‹β€‹αž™αžΎαž„ αž™αžΎαž„β€‹αž“αžΉαž„β€‹αž˜αž·αž“β€‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹β€‹αžƒαžΎαž‰β€‹αž–αžΈβ€‹αž—αžΆαž–β€‹αžαž»αžŸβ€‹αž‚αŸ’αž“αžΆβ€‹αž…αŸ’αžšαžΎαž“β€‹αž‘αŸαŸ”

αžαŸ„αŸ‡αž˜αžΎαž›αž€αžΌαžŠαŸ”

αž€αžΌαžŠαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž…αž»αŸ‡αž‡αž˜αŸ’αžšαžΆαž› stochastic

# ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ стох.Π³Ρ€Π°Π΄.шага
def stoch_grad_step_usual(vector_init, x_us, ind, y_us, l):
#     Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ икс, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ соотвСтствуСт случайному Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ind 
# (см.Ρ„-Ρ†ΠΈΡŽ stoch_grad_descent_usual)
    x = x_us[ind]
#     рассчитывыаСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ y (Π²Ρ‹Ρ€ΡƒΡ‡ΠΊΡƒ), которая соотвСтствуСт Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ x
    y_pred = vector_init[0] + vector_init[1]*x_us[ind]
#     вычисляСм ΠΎΡˆΠΈΠ±ΠΊΡƒ расчСтной Π²Ρ‹Ρ€ΡƒΡ‡ΠΊΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ прСдставлСнной Π² Π²Ρ‹Π±ΠΎΡ€ΠΊΠ΅
    error = y_pred - y_us[ind]
#     опрСдСляСм ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρƒ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π° ab
    grad_a = error
#     опрСдСляСм Π²Ρ‚ΠΎΡ€ΡƒΡŽ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρƒ ab
    grad_b = x_us[ind]*error
#     вычисляСм Π½ΠΎΠ²Ρ‹ΠΉ Π²Π΅ΠΊΡ‚ΠΎΡ€ коэффициСнтов
    vector_new = [vector_init[0]-l*grad_a, vector_init[1]-l*grad_b]
    return vector_new


# ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ стох.Π³Ρ€Π°Π΄.спуска
def stoch_grad_descent_usual(x_us, y_us, l=0.1, steps = 800):
#     для самого Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π°Π΄Π°Π΄ΠΈΠΌ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ значСния коэффициСнтов
    vector_init = [float(random.uniform(-0.5, 0.5)), float(random.uniform(-0.5, 0.5))]
    errors = []
#     запустим Ρ†ΠΈΠΊΠ» спуска
# Ρ†ΠΈΠΊΠ» расчитан Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ количСство шагов (steps)
    for i in range(steps):
        ind = random.choice(range(len(x_us)))
        new_vector = stoch_grad_step_usual(vector_init, x_us, ind, y_us, l)
        vector_init = new_vector
        errors.append(errors_sq_Kramer_method(vector_init,x_us,y_us))
    return (vector_init),(errors)


# запишСм массив Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ 
list_parametres_stoch_gradient_descence = stoch_grad_descent_usual(x_us, y_us, l=0.1, steps = 800)

print ' 33[1m' + ' 33[4m' + "ЗначСния коэффициСнтов a ΠΈ b:" + ' 33[0m'
print 'a =', round(list_parametres_stoch_gradient_descence[0][0],3)
print 'b =', round(list_parametres_stoch_gradient_descence[0][1],3)
print


print ' 33[1m' + ' 33[4m' + "Π‘ΡƒΠΌΠΌΠ° ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ² ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠΉ:" + ' 33[0m'
print round(list_parametres_stoch_gradient_descence[1][-1],3)
print

print ' 33[1m' + ' 33[4m' + "ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ Π² стохастичСском Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π½ΠΎΠΌ спускС:" + ' 33[0m'
print len(list_parametres_stoch_gradient_descence[1])

αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰

αž™αžΎαž„αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž›αž˜αŸαž‚αž»αžŽαžŠαŸ„αž™αž”αŸ’αžšαž»αž„αž”αŸ’αžšαž™αŸαžαŸ’αž“ αž αžΎαž™αž…αžΆαž”αŸ‹αžαŸ’αž›αž½αž“αž™αžΎαž„αžŠαŸ„αž™αžŸαž½αžšαžŸαŸ†αžŽαž½αžšαžαžΆ "αžαžΎαžœαžΆαž’αžΆαž…αž‘αŸ…αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆ?" αž™αžΎαž„αž‘αž‘αž½αž›αž”αžΆαž“αžαž˜αŸ’αž›αŸƒαž˜αŸαž‚αž»αžŽαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ” αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ ΠΈ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰. αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆ stochastic gradient descent αž”αžΆαž“αžšαž€αžƒαžΎαž‰αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž›αŸ’αž’αž”αŸ†αž•αž»αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαž˜αžΈαž€αžΆαžš? αž‡αžΆαž’αž€αž»αžŸαž›αž‘αŸαŸ” αžœαžΆαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹αž αžΎαž™αž€αŸ’αž“αž»αž„αž€αžΆαžšαž˜αžΎαž›αž•αž›αž”αžΌαž€αž“αŸƒαž‚αž˜αŸ’αž›αžΆαžαž€αžΆαžšαŸ‰αŸαž αžΎαž™αžƒαžΎαž‰αžαžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αžαž˜αŸ’αž›αŸƒαžαŸ’αž˜αžΈαž“αŸƒαž˜αŸαž‚αž»αžŽαž€αŸ†αž αž»αžŸαž‚αžΊαž’αŸ†αž‡αžΆαž„αŸ” αž™αžΎαž„αž˜αž·αž“αž”αŸ’αžšαž‰αžΆαž”αŸ‹αžŠαžΎαž˜αŸ’αž”αžΈαž’αžŸαŸ‹αžŸαž„αŸ’αžƒαžΉαž˜αž‘αŸαŸ” αž…αžΌαžšαž™αžΎαž„αž”αž„αŸ’αž€αžΎαžαž€αŸ’αžšαžΆαž αŸ’αžœαž“αŸƒαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž€αŸ†αž αž»αžŸαŸ”

αž€αžΌαžŠβ€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αž€αŸ†αžŽαžαŸ‹β€‹αž•αž›αž”αžΌαž€β€‹αž“αŸƒβ€‹αž‚αž˜αŸ’αž›αžΆαžβ€‹αž€αžΆαžšαŸ‰αŸβ€‹αž€αŸ’αž“αž»αž„β€‹αž€αžΆαžšβ€‹αž’αŸ’αž›αžΆαž€αŸ‹β€‹αž…αž»αŸ‡β€‹αž‡αž˜αŸ’αžšαžΆαž› stochastic

print 'Π“Ρ€Π°Ρ„ΠΈΠΊ β„–5 "Π‘ΡƒΠΌΠΌΠ° ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ² ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠΉ ΠΏΠΎ-шагово"'
plt.plot(range(len(list_parametres_stoch_gradient_descence[1])), list_parametres_stoch_gradient_descence[1], color='red', lw=2)
plt.xlabel('Steps (Iteration)', size=16)
plt.ylabel('Sum of squared deviations', size=16)
plt.show()

αž€αŸ’αžšαžΆαž αŸ’αžœαž›αŸαž 5 β€œαž•αž›αž”αžΌαž€αž“αŸƒαž‚αž˜αŸ’αž›αžΆαžαž€αžΆαžšαŸ‰αŸαž€αŸ†αž‘αž»αž„αž–αŸαž›αž…αž»αŸ‡αž‡αž˜αŸ’αžšαžΆαž› stochastic”

αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰

αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž›αž€αžΆαž›αžœαž·αž—αžΆαž‚αž’αŸ’αžœαžΈαŸ—αž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αž“αžΉαž„αž…αžΌαž›αž€αž“αŸ’αž›αŸ‚αž„αž αžΎαž™αž₯αž‘αžΌαžœαž“αŸαŸ‡αž™αžΎαž„αž“αžΉαž„αž‡αž½αžŸαž‡αž»αž›αž’αŸ’αžœαžΈαŸ—αž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αŸ”

αžŠαžΌαž…αŸ’αž“αŸαŸ‡β€‹αžαžΎβ€‹αž˜αžΆαž“β€‹αž’αŸ’αžœαžΈβ€‹αž”αžΆαž“β€‹αž€αžΎαžβ€‹αž‘αžΎαž„? αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž“αŸαŸ‡αž”αžΆαž“αž€αžΎαžαž‘αžΎαž„αŸ” αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž™αžΎαž„αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαžŠαŸ„αž™αž…αŸƒαžŠαž“αŸ’αž™αž˜αž½αž™αžαŸ‚ αž“αŸ„αŸ‡αžœαžΆαž‚αžΊαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαŸ‚αžŠαŸ‚αž›αž”αžΆαž“αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαžŠαŸ‚αž›αž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžšαž”αžŸαŸ‹αž™αžΎαž„αžŸαŸ’αžœαŸ‚αž„αžšαž€αžŠαžΎαž˜αŸ’αž”αžΈαž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž€αŸ†αž αž»αžŸαž€αŸ’αž“αž»αž„αž€αžΆαžšαž‚αžŽαž“αžΆαž”αŸ’αžšαžΆαž€αŸ‹αž…αŸ†αžŽαžΌαž›αŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž™αžΎαž„αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαžαŸ‚αž˜αž½αž™αž‘αŸ€αž αž αžΎαž™αž’αŸ’αžœαžΎαž€αžΆαžšαž‚αžŽαž“αžΆαž‘αžΎαž„αžœαž·αž‰ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž™αžΎαž„αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž€αŸ†αž αž»αžŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαŸ‚αžŠαŸ‚αž›αž”αžΆαž“αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž‘αžΈαž–αžΈαžšαŸ” αž₯αž‘αžΌαžœαž“αŸαŸ‡αžŸαžΌαž˜αž…αžΆαŸ†αžαžΆ αž–αžΈαžšαžαŸ‚αžŠαŸ†αž”αžΌαž„αž˜αžΆαž“αž‚αž˜αŸ’αž›αžΆαžαž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„αž–αžΈαž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαžŸαž˜αžΈαž€αžΆαžšαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰αŸ” αž“αŸαŸ‡αž˜αžΆαž“αž“αŸαž™αžαžΆαž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αžŽαžΆαž˜αž½αž™αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αž–αžΈαžšαžαŸ‚αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸ αžŠαŸ„αž™αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž€αŸ†αž αž»αžŸαž†αŸ’αž‚αž„αž“αžΈαž˜αž½αž™αŸ— αž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžšαž”αžŸαŸ‹αž™αžΎαž„αž“αžΉαž„αž”αž„αŸ’αž€αžΎαž“αž€αŸ†αž αž»αžŸαž™αŸ‰αžΆαž„αž’αŸ’αž„αž“αŸ‹αž’αŸ’αž„αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αŸ†αžšαžΌαž‘αžΆαŸ†αž„αž˜αžΌαž›αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžαžΎαžαŸ’αžšαžΌαžœαž’αŸ’αžœαžΎαž’αŸ’αžœαžΈ? αž…αž˜αŸ’αž›αžΎαž™αž‚αžΊαžŸαžΆαž˜αž‰αŸ’αž‰αŸ– αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž‡αŸ†αž αžΆαž“αž…αž»αŸ‡αŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž”αžΆαž“αž‘αžΆαŸ†αž„αž’αžŸαŸ‹ αžŠαŸ„αž™αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž‡αŸ†αž αžΆαž“αž…αž»αŸ‡ αž€αŸ†αž αž»αžŸαž€αŸαž“αžΉαž„αžˆαž”αŸ‹ "αž›αŸ„αž" αž‘αžΎαž„αž›αžΎαž…αž»αŸ‡αž€αŸ’αžšαŸ„αž˜αŸ” αž¬αž•αŸ’αž‘αž»αž™αž‘αŸ…αžœαž·αž‰ αž€αŸ†αž αž»αžŸ "αž›αŸ„αž" αž“αžΉαž„αž˜αž·αž“αžˆαž”αŸ‹αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž“αžΉαž„αž˜αž·αž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αžΏαž“αž‘αŸ :) αžŸαžΌαž˜αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αŸ”

αž€αžΌαžŠαžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžš SGD αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž€αžΎαž“αž‘αžΎαž„αžαž·αž…αžαž½αž…

# запустим Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΠ² шаг Π² 100 Ρ€Π°Π· ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ² количСство шагов ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΠ²ΡƒΡŽΡ‰Π΅ 
list_parametres_stoch_gradient_descence = stoch_grad_descent_usual(x_us, y_us, l=0.001, steps = 80000)

print ' 33[1m' + ' 33[4m' + "ЗначСния коэффициСнтов a ΠΈ b:" + ' 33[0m'
print 'a =', round(list_parametres_stoch_gradient_descence[0][0],3)
print 'b =', round(list_parametres_stoch_gradient_descence[0][1],3)
print


print ' 33[1m' + ' 33[4m' + "Π‘ΡƒΠΌΠΌΠ° ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ² ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠΉ:" + ' 33[0m'
print round(list_parametres_stoch_gradient_descence[1][-1],3)
print



print ' 33[1m' + ' 33[4m' + "ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ Π² стохастичСском Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π½ΠΎΠΌ спускС:" + ' 33[0m'
print len(list_parametres_stoch_gradient_descence[1])

print 'Π“Ρ€Π°Ρ„ΠΈΠΊ β„–6 "Π‘ΡƒΠΌΠΌΠ° ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ² ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠΉ ΠΏΠΎ-шагово"'
plt.plot(range(len(list_parametres_stoch_gradient_descence[1])), list_parametres_stoch_gradient_descence[1], color='red', lw=2)
plt.xlabel('Steps (Iteration)', size=16)
plt.ylabel('Sum of squared deviations', size=16)
plt.show()

αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰

αž€αŸ’αžšαžΆαž αŸ’αžœαž›αŸαž 6 "αž•αž›αž”αžΌαž€αž“αŸƒαž‚αž˜αŸ’αž›αžΆαžαž€αžΆαžšαŸ‰αŸαž€αŸ†αž‘αž»αž„αž–αŸαž›αž…αž»αŸ‡αž‡αž˜αŸ’αžšαžΆαž› stochastic (80 αž–αžΆαž“αŸ‹αž‡αŸ†αž αžΆαž“)"

αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰

αž˜αŸαž‚αž»αžŽαž˜αžΆαž“αž—αžΆαž–αž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸ…αžαŸ‚αž˜αž·αž“αžŸαž˜αžŸαŸ’αžšαž”αŸ” αžαžΆαž˜αžŸαž˜αŸ’αž˜αžαž·αž€αž˜αŸ’αž˜ αžœαžΆαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ‚αžαž˜αŸ’αžšαžΌαžœαžαžΆαž˜αžœαž·αž’αžΈαž“αŸαŸ‡αŸ” αž™αžΎαž„αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž§αž‘αžΆαž αžšαžŽαŸαž“αŸ…αž€αŸ’αž“αž»αž„ 1000 αž›αžΎαž€αž…αž»αž„αž€αŸ’αžšαŸ„αž™αžαž˜αŸ’αž›αŸƒαž“αŸƒαž˜αŸαž‚αž»αžŽαžŠαŸ‚αž›αž€αŸ†αž αž»αžŸαž’αž”αŸ’αž”αž”αžšαž˜αžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž‘αžΎαž„αŸ” αž–αž·αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαžΏαž„αž“αŸαŸ‡ αž™αžΎαž„αž€αŸαž“αžΉαž„αžαŸ’αžšαžΌαžœαžŸαžšαžŸαŸαžšαžαž˜αŸ’αž›αŸƒαž“αŸƒαž˜αŸαž‚αž»αžŽαžαŸ’αž›αž½αž“αž―αž„αž•αž„αžŠαŸ‚αžšαŸ” αž™αžΎαž„αž“αžΉαž„αž˜αž·αž“αž’αŸ’αžœαžΎαž”αŸ‚αž”αž“αŸαŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαŸ’αžšαžΌαžœαž™αž€αž…αž·αžαŸ’αžαž‘αž»αž€αžŠαžΆαž€αŸ‹αž›αžΎαž€αžΆαž›αžœαž·αž—αžΆαž‚αŸ” αžœαžΆαž˜αžΎαž›αž‘αŸ…αžšαž›αžΌαž“ αž αžΎαž™αž€αŸ†αž αž»αžŸαž αžΆαž€αŸ‹αžŠαžΌαž…αž‡αžΆαžαž™αž…αž»αŸ‡αžŸαŸ’αž˜αžΎαŸ—αž‚αŸ’αž“αžΆαŸ” αžαžΆαž˜αž–αž·αžαž“αŸαŸ‡αž˜αž·αž“αž–αž·αžαž‘αŸαŸ” αžŸαžΌαž˜αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž› 1000 αž›αžΎαž€αžŠαŸ†αž”αžΌαž„ αž αžΎαž™αž”αŸ’αžšαŸ€αž”αž’αŸ€αž”αžœαžΆαž‡αžΆαž˜αž½αž™αž…αž»αž„αž€αŸ’αžšαŸ„αž™αŸ”

αž›αŸαžαž€αžΌαžŠαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αŸ†αž“αžΌαžŸαžαžΆαž„ SGD (αž‡αŸ†αž αžΆαž“ 1000 αžŠαŸ†αž”αžΌαž„)

print 'Π“Ρ€Π°Ρ„ΠΈΠΊ β„–7 "Π‘ΡƒΠΌΠΌΠ° ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ² ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠΉ ΠΏΠΎ-шагово. ΠŸΠ΅Ρ€Π²Ρ‹Π΅ 1000 ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ"'
plt.plot(range(len(list_parametres_stoch_gradient_descence[1][:1000])), 
         list_parametres_stoch_gradient_descence[1][:1000], color='red', lw=2)
plt.xlabel('Steps (Iteration)', size=16)
plt.ylabel('Sum of squared deviations', size=16)
plt.show()

print 'Π“Ρ€Π°Ρ„ΠΈΠΊ β„–7 "Π‘ΡƒΠΌΠΌΠ° ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ² ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠΉ ΠΏΠΎ-шагово. ПослСдниС 1000 ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ"'
plt.plot(range(len(list_parametres_stoch_gradient_descence[1][-1000:])), 
         list_parametres_stoch_gradient_descence[1][-1000:], color='red', lw=2)
plt.xlabel('Steps (Iteration)', size=16)
plt.ylabel('Sum of squared deviations', size=16)
plt.show()

αž€αŸ’αžšαžΆαž αŸ’αžœαž›αŸαž 7 β€œαž•αž›αž”αžΌαž€αž“αŸƒαž‚αž˜αŸ’αž›αžΆαžαž€αžΆαžšαŸ SGD (αž‡αŸ†αž αžΆαž“αžŠαŸ†αž”αžΌαž„ 1000)”

αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰

αž€αŸ’αžšαžΆαž αŸ’αžœαž›αŸαž 8 β€œαž•αž›αž”αžΌαž€αž“αŸƒαž‚αž˜αŸ’αž›αžΆαžαž€αžΆαžšαŸ SGD (1000 αž‡αŸ†αž αžΆαž“αž…αž»αž„αž€αŸ’αžšαŸ„αž™)”

αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰

αž“αŸ…αžŠαžΎαž˜αžŠαŸ†αž”αžΌαž„αž“αŸƒαžαŸ†αžŽαž–αžΌαž‡ αž™αžΎαž„αžŸαž„αŸ’αž€αŸαžαžƒαžΎαž‰αž˜αžΆαž“αž€αŸ†αž αž»αžŸαžαž»αžŸαž”αŸ’αžšαž€αŸ’αžšαžαžΈ αž“αž·αž„αžαž™αž…αž»αŸ‡αž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„αŸ” αž“αŸ…β€‹αž€αŸ’αž“αž»αž„β€‹αž€αžΆαžšβ€‹αž’αŸ’αžœαžΎβ€‹αž‘αžΎαž„β€‹αžœαž·αž‰β€‹αž…αž»αž„β€‹αž€αŸ’αžšαŸ„αž™β€‹αž“αŸαŸ‡ αž™αžΎαž„β€‹αž˜αžΎαž›β€‹αžƒαžΎαž‰β€‹αžαžΆ error αž‘αŸ…β€‹αž‡αž»αŸ†αžœαž·αž‰β€‹αžαž˜αŸ’αž›αŸƒ 1,475 αž αžΎαž™β€‹αž“αŸ…β€‹αž–αŸαž›β€‹αžαŸ’αž›αŸ‡β€‹αžŸαžΌαž˜αŸ’αž”αžΈβ€‹αžαŸ‚β€‹αžŸαŸ’αž˜αžΎβ€‹αž“αžΉαž„β€‹αžαž˜αŸ’αž›αŸƒβ€‹αžŠαŸβ€‹αž”αŸ’αžšαžŸαžΎαžšβ€‹αž“αŸαŸ‡ αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αž”αž“αŸ’αž‘αžΆαž”αŸ‹β€‹αž˜αž€β€‹αžœαžΆβ€‹αž“αŸ…β€‹αžαŸ‚β€‹αž‘αžΎαž„... αžαŸ’αž‰αž»αŸ†β€‹αž“αž·αž™αžΆαž™β€‹αž˜αŸ’αžŠαž„β€‹αž‘αŸ€αž αž’αŸ’αž“αž€β€‹αž’αžΆαž…β€‹αžŸαžšαžŸαŸαžšβ€‹αž…αž»αŸ‡β€‹αžαž˜αŸ’αž›αŸƒβ€‹αž“αŸƒ αž˜αŸαž‚αž»αžŽ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ ΠΈ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰αž αžΎαž™β€‹αž”αž“αŸ’αž‘αžΆαž”αŸ‹β€‹αž˜αž€β€‹αž‡αŸ’αžšαžΎαžŸβ€‹αžšαžΎαžŸβ€‹αžŠαŸ‚αž›β€‹αž˜αžΆαž“β€‹αž€αŸ†αž αž»αžŸβ€‹αžαž·αž…β€‹αž”αŸ†αž•αž»αžαŸ” αž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž™αžΎαž„αž˜αžΆαž“αž”αž‰αŸ’αž αžΆαž’αŸ’αž„αž“αŸ‹αž’αŸ’αž„αžšαž‡αžΆαž„αž“αŸαŸ‡αŸ– αž™αžΎαž„αžαŸ’αžšαžΌαžœαž’αž“αž»αžœαžαŸ’αž 80 αž–αžΆαž“αŸ‹αž‡αŸ†αž αžΆαž“ (αžŸαžΌαž˜αž˜αžΎαž›αž€αžΌαžŠ) αžŠαžΎαž˜αŸ’αž”αžΈαž‘αž‘αž½αž›αž”αžΆαž“αžαž˜αŸ’αž›αŸƒαž‡αž·αžαž›αŸ’αž’αž”αŸ†αž•αž»αžαŸ” αž αžΎαž™αž“αŸαŸ‡αž•αŸ’αž‘αž»αž™αžŸαŸ’αžšαž‘αŸ‡αž–αžΈαž‚αŸ†αž“αž·αžαž“αŸƒαž€αžΆαžšαžŸαž“αŸ’αžŸαŸ†αž–αŸαž›αžœαŸαž›αžΆαž‚αžŽαž“αžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž’αŸ’αž›αžΆαž€αŸ‹αž…αž»αŸ‡αž‡αž˜αŸ’αžšαžΆαž› stochastic αž‘αžΆαž€αŸ‹αž‘αž„αž‘αŸ…αž“αžΉαž„αž€αžΆαžšαž…αž»αŸ‡αž‡αž˜αŸ’αžšαžΆαž›αŸ” αžαžΎβ€‹αž’αŸ’αžœαžΈβ€‹αžŠαŸ‚αž›β€‹αž’αžΆαž…β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž€αŸ‚β€‹αžαž˜αŸ’αžšαžΌαžœβ€‹αž“αž·αž„β€‹αž’αŸ’αžœαžΎβ€‹αž±αŸ’αž™β€‹αž”αŸ’αžšαžŸαžΎαžšβ€‹αž‘αžΎαž„? αžœαžΆαž˜αž·αž“αž–αž·αž”αžΆαž€αž‘αŸαž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αžαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž‡αŸ†αž αžΆαž“αžŠαŸ†αž”αžΌαž„ αž™αžΎαž„αž€αŸ†αž–αž»αž„αž’αŸ’αž›αžΆαž€αŸ‹αž…αž»αŸ‡αžŠαŸ„αž™αž‘αŸ†αž“αž»αž€αž…αž·αžαŸ’αž αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž αžΎαž™ αž™αžΎαž„αž‚αž½αžšαžαŸ‚αž…αžΆαž€αž…αŸαž‰αž–αžΈαž‡αŸ†αž αžΆαž“αžŠαŸαž’αŸ†αž˜αž½αž™αž“αŸ…αž€αŸ’αž“αž»αž„αž‡αŸ†αž αžΆαž“αžŠαŸ†αž”αžΌαž„ αž αžΎαž™αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž‡αŸ†αž αžΆαž“αž“αŸ…αž–αŸαž›αž™αžΎαž„αž†αŸ’αž–αŸ„αŸ‡αž‘αŸ…αž˜αž»αžαŸ” αž™αžΎαž„αž“αžΉαž„αž˜αž·αž“αž’αŸ’αžœαžΎαž”αŸ‚αž”αž“αŸαŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αž‘αŸ - αžœαžΆαžœαŸ‚αž„αž–αŸαž€αž αžΎαž™αŸ” αž’αŸ’αž“αž€β€‹αžŠαŸ‚αž›β€‹αž”αŸ’αžšαžΆαžαŸ’αž“αžΆβ€‹αž’αžΆαž…β€‹αž‚αž·αžβ€‹αžŠαŸ„αž™β€‹αžαŸ’αž›αž½αž“β€‹αž―αž„β€‹αžαžΆβ€‹αž’αŸ’αžœαžΎβ€‹αž™αŸ‰αžΆαž„β€‹αžŽαžΆβ€‹αž€αŸβ€‹αž˜αž·αž“β€‹αž–αž·αž”αžΆαž€β€‹αžŠαŸ‚αžš :)

αž₯αž‘αžΌαžœαž“αŸαŸ‡ αž…αžΌαžšαž™αžΎαž„αž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαž…αž»αŸ‡αž‡αž˜αŸ’αžšαžΆαž› stochastic αžŠαŸ„αž™αž”αŸ’αžšαžΎαž”αžŽαŸ’αžŽαžΆαž›αŸαž™ αžŽαžΆαŸ†αž—αžΈ (αž αžΎαž™β€‹αž™αžΎαž„β€‹αž€αž»αŸ†β€‹αž‡αŸ†αž–αž”αŸ‹β€‹αžŠαž½αž›β€‹αž›αžΎβ€‹αžαŸ’αž˜β€‹αžŠαŸ‚αž›β€‹αž™αžΎαž„β€‹αž”αžΆαž“β€‹αžšαž€β€‹αžƒαžΎαž‰β€‹αž˜αž»αž“β€‹αž“αŸαŸ‡)

αž€αžΌαžŠαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Stochastic Gradient Descent (NumPy)

# для Π½Π°Ρ‡Π°Π»Π° напишСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π½ΠΎΠ³ΠΎ шага
def stoch_grad_step_numpy(vector_init, X, ind, y, l):
    x = X[ind]
    y_pred = np.dot(x,vector_init)
    err = y_pred - y[ind]
    grad_a = err
    grad_b = x[1]*err
    return vector_init - l*np.array([grad_a, grad_b])

# ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ стохастичСского Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π½ΠΎΠ³ΠΎ спуска
def stoch_grad_descent_numpy(X, y, l=0.1, steps = 800):
    vector_init = np.array([[np.random.randint(X.shape[0])], [np.random.randint(X.shape[0])]])
    errors = []
    for i in range(steps):
        ind = np.random.randint(X.shape[0])
        new_vector = stoch_grad_step_numpy(vector_init, X, ind, y, l)
        vector_init = new_vector
        errors.append(error_square_numpy(vector_init,X,y))
    return (vector_init), (errors)

# запишСм массив Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ 
list_parametres_stoch_gradient_descence = stoch_grad_descent_numpy(x_np, y_np, l=0.001, steps = 80000)

print ' 33[1m' + ' 33[4m' + "ЗначСния коэффициСнтов a ΠΈ b:" + ' 33[0m'
print 'a =', round(list_parametres_stoch_gradient_descence[0][0],3)
print 'b =', round(list_parametres_stoch_gradient_descence[0][1],3)
print


print ' 33[1m' + ' 33[4m' + "Π‘ΡƒΠΌΠΌΠ° ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ² ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠΉ:" + ' 33[0m'
print round(list_parametres_stoch_gradient_descence[1][-1],3)
print



print ' 33[1m' + ' 33[4m' + "ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ Π² стохастичСском Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π½ΠΎΠΌ спускС:" + ' 33[0m'
print len(list_parametres_stoch_gradient_descence[1])
print

αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰

αžαž˜αŸ’αž›αŸƒαž”αžΆαž“αž”αŸ’αžšαŸ‚αž‘αŸ…αž‡αžΆαžŸαŸ’αž‘αžΎαžšαžαŸ‚αžŠαžΌαž…αž‚αŸ’αž“αžΆαž“αžΉαž„αž–αŸαž›αžŠαŸ‚αž›αž…αž»αŸ‡αž€αŸ’αžšαŸ„αž˜αžŠαŸ„αž™αž˜αž·αž“αž”αŸ’αžšαžΎ αžŽαžΆαŸ†αž—αžΈ. αž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž‘αžΌαž‡αžΈαžαž›αŸ”

αž…αžΌαžšαž™αžΎαž„αžŸαŸ’αžœαŸ‚αž„αž™αž›αŸ‹αžαžΆαžαžΎαž€αžΆαžšαž”αž“αŸ’αžαž–αžΌαž‡αž‡αž˜αŸ’αžšαžΆαž› stochastic αž”αžΆαž“αž…αŸ†αžŽαžΆαž™αž–αŸαž›αž”αŸ‰αž»αž“αŸ’αž˜αžΆαž“αŸ”

αž›αŸαžαž€αžΌαžŠαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αŸ†αžŽαžαŸ‹αž–αŸαž›αžœαŸαž›αžΆαž‚αžŽαž“αžΆ SGD (80 αž–αžΆαž“αŸ‹αž‡αŸ†αž αžΆαž“)

print ' 33[1m' + ' 33[4m' +
"ВрСмя выполнСния стохастичСского Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π½ΠΎΠ³ΠΎ спуска Π±Π΅Π· использования Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ NumPy:"
+ ' 33[0m'
%timeit list_parametres_stoch_gradient_descence = stoch_grad_descent_usual(x_us, y_us, l=0.001, steps = 80000)
print '***************************************'
print

print ' 33[1m' + ' 33[4m' +
"ВрСмя выполнСния стохастичСского Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π½ΠΎΠ³ΠΎ спуска с использованиСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ NumPy:"
+ ' 33[0m'
%timeit list_parametres_stoch_gradient_descence = stoch_grad_descent_numpy(x_np, y_np, l=0.001, steps = 80000)

αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰

αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž–αŸ’αžšαŸƒαž€αžΆαž“αŸ‹αžαŸ‚αž…αŸ’αžšαžΎαž“ αž–αž–αž€αž€αžΆαž“αŸ‹αžαŸ‚αž„αž„αžΉαžαŸ– αž‡αžΆαžαŸ’αž˜αžΈαž˜αŸ’αžαž„αž‘αŸ€αž αžšαžΌαž”αž˜αž“αŸ’αž "αžŸαžšαžŸαŸαžšαžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„" αž”αž„αŸ’αž αžΆαž‰αž›αž‘αŸ’αž’αž•αž›αž›αŸ’αž’αž”αŸ†αž•αž»αžαŸ” αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸαŸ‡αž”αž„αŸ’αž αžΆαž‰αžαžΆ αžαŸ’αžšαžΌαžœαžαŸ‚αž˜αžΆαž“αžœαž·αž’αžΈαž€αžΆαž“αŸ‹αžαŸ‚αž›αŸ’αž’αž·αžαž›αŸ’αž’αž“αŸ‹αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αž αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž”αžŽαŸ’αžŽαžΆαž›αŸαž™ αžŽαžΆαŸ†αž—αžΈαžŠαŸ‚αž›αž–αž·αžαž‡αžΆαž”αž„αŸ’αž€αžΎαž“αž›αŸ’αž”αžΏαž“αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž‚αžŽαž“αžΆαŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αž™αžΎαž„αž“αžΉαž„αž˜αž·αž“αžšαŸ€αž“αž’αŸ†αž–αžΈαž–αž½αž€αž‚αŸαž‘αŸαŸ” αž“αžΉαž„αž˜αžΆαž“αžšαžΏαž„αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αž·αžαž“αŸ…αž–αŸαž›αž‘αŸ†αž“αŸαžšαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ :)

αžŸαž„αŸ’αžαŸαž”αŸ”

αž˜αž»αž“αž“αžΉαž„αžŸαž„αŸ’αžαŸαž” αžαŸ’αž‰αž»αŸ†αž…αž„αŸ‹αž†αŸ’αž›αžΎαž™αžŸαŸ†αžŽαž½αžšαžŠαŸ‚αž›αž‘αŸ†αž“αž„αž€αžΎαžαž…αŸαž‰αž–αžΈαž’αŸ’αž“αž€αž’αžΆαž“αž‡αžΆαž‘αžΈαž‚αŸ„αžšαž–αžšαž”αžŸαŸ‹αž™αžΎαž„αŸ” αžαžΆαž˜αž–αž·αžαž αŸαžαž»αž’αŸ’αžœαžΈαž”αžΆαž“αž‡αžΆ "αž‘αžΆαžšαž»αžŽαž€αž˜αŸ’αž˜" αž”αŸ‚αž”αž“αŸαŸ‡αž‡αžΆαž˜αž½αž™αž€αžΌαž“αž…αŸ… αž αŸαžαž»αž’αŸ’αžœαžΈαž”αžΆαž“αž‡αžΆαž™αžΎαž„αžαŸ’αžšαžΌαžœαžŠαžΎαžšαž‘αžΎαž„αž›αžΎαž—αŸ’αž“αŸ† (αž—αžΆαž‚αž…αŸ’αžšαžΎαž“αž…αž»αŸ‡αž€αŸ’αžšαŸ„αž˜) αžŠαžΎαž˜αŸ’αž”αžΈαžŸαŸ’αžœαŸ‚αž„αžšαž€αžŠαžΈαž‘αŸ†αž“αžΆαž”αžŠαŸαž˜αžΆαž“αžαž˜αŸ’αž›αŸƒ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž™αžΎαž„αž˜αžΆαž“αž§αž”αž€αžšαžŽαŸαžŠαŸαž˜αžΆαž“αžαžΆαž˜αž–αž› αž“αž·αž„αžŸαžΆαž˜αž‰αŸ’αž‰αž”αŸ‚αž”αž“αŸαŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„αžŠαŸƒαžšαž”αžŸαŸ‹αž™αžΎαž„αŸ” αž‘αž˜αŸ’αžšαž„αŸ‹β€‹αž“αŸƒβ€‹αžŠαŸ†αžŽαŸ„αŸ‡β€‹αžŸαŸ’αžšαžΆαž™β€‹αžœαž·αž—αžΆαž‚β€‹αžŠαŸ‚αž›β€‹αž”αž‰αŸ’αž‡αžΌαž“β€‹αž™αžΎαž„β€‹αž‘αŸ…β€‹αž€αžΆαž“αŸ‹β€‹αž€αž“αŸ’αž›αŸ‚αž„β€‹αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ?

αž…αž˜αŸ’αž›αžΎαž™αž…αŸ†αž–αŸ„αŸ‡αžŸαŸ†αžŽαž½αžšαž“αŸαŸ‡αžŸαŸ’αžαž·αžαž“αŸ…αž›αžΎαž•αŸ’αž‘αŸƒαŸ” αž₯αž‘αžΌαžœαž“αŸαŸ‡ αž™αžΎαž„αž”αžΆαž“αž˜αžΎαž›αž§αž‘αžΆαž αžšαžŽαŸαžŠαŸαžŸαžΆαž˜αž‰αŸ’αž‰αž˜αž½αž™ αžŠαŸ‚αž›αž…αž˜αŸ’αž›αžΎαž™αž–αž·αžαž‚αžΊ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ αž’αžΆαžŸαŸ’αžšαŸαž™αž›αžΎαžŸαž‰αŸ’αž‰αžΆαž˜αž½αž™αŸ” αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαž“αŸƒαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰. αž’αŸ’αž“αž€αž˜αž·αž“αžƒαžΎαž‰αžšαžΏαž„αž“αŸαŸ‡αž‰αžΉαž€αž‰αžΆαž”αŸ‹αž‘αŸαž€αŸ’αž“αž»αž„αž‡αžΈαžœαž·αž αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžŸαžΌαž˜αžŸαŸ’αžšαž˜αŸƒαžαžΆαž™αžΎαž„αž˜αžΆαž“αžŸαž‰αŸ’αž‰αžΆ 2, 30, 50 αž¬αž…αŸ’αžšαžΎαž“αž‡αžΆαž„αž“αŸαŸ‡αŸ” αž…αžΌαžšαž”αž“αŸ’αžαŸ‚αž˜αžαž˜αŸ’αž›αŸƒαžšαžΆαž”αŸ‹αž–αžΆαž“αŸ‹αž“αŸαŸ‡ αž¬αžšαžΆαž”αŸ‹αž˜αŸ‰αžΊαž“αžαž˜αŸ’αž›αŸƒαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆαž“αžΈαž˜αž½αž™αŸ—αŸ” αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡ αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžœαž·αž—αžΆαž‚αž’αžΆαž…αž˜αž·αž“αž’αžΆαž…αž‘αž”αŸ‹αž‘αž›αŸ‹αž“αžΉαž„αž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ αž“αž·αž„αž”αžšαžΆαž‡αŸαž™αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αžœαŸαž“ αž€αžΆαžšαž…αž»αŸ‡αž‡αž˜αŸ’αžšαžΆαž› αž“αž·αž„αž€αžΆαžšαž”αŸ’αžšαŸ‚αž”αŸ’αžšαž½αž›αžšαž”αžŸαŸ‹αžœαžΆαž“αžΉαž„αž™αžΊαžαŸ— αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž…αŸ’αž”αžΆαžŸαŸ‹αž‡αžΆαž“αžΆαŸ†αž™αžΎαž„αžαž·αžαž‘αŸ…αž‡αž·αžαž‚αŸ„αž›αžŠαŸ… - αž’αž”αŸ’αž”αž”αžšαž˜αžΆαž“αŸƒαž˜αž»αžαž„αžΆαžšαŸ” αž αžΎαž™β€‹αž€αž»αŸ†β€‹αž”αžΆαžšαž˜αŸ’αž—β€‹αž’αŸ†αž–αžΈβ€‹αž›αŸ’αž”αžΏαž“ - αž™αžΎαž„β€‹αž”αŸ’αžšαž αŸ‚αž›β€‹αž‡αžΆβ€‹αž“αžΉαž„β€‹αž˜αžΎαž›β€‹αžœαž·αž’αžΈβ€‹αžŠαŸ‚αž›β€‹αž’αžΆαž…β€‹αž±αŸ’αž™β€‹αž™αžΎαž„β€‹αž€αŸ†αžŽαžαŸ‹β€‹αž“αž·αž„β€‹αž€αŸ†αžŽαžαŸ‹β€‹αž”αŸ’αžšαžœαŸ‚αž„β€‹αž‡αŸ†αž αžΆαž“ (αž“αŸ„αŸ‡β€‹αž‚αžΊβ€‹αž›αŸ’αž”αžΏαž“)αŸ”

αž αžΎαž™αž₯αž‘αžΌαžœαž“αŸαŸ‡αž€αžΆαžšαžŸαž„αŸ’αžαŸαž”αž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„αŸ”

αž‘αžΈαž˜αž½αž™ αžαŸ’αž‰αž»αŸ†αžŸαž„αŸ’αžƒαžΉαž˜αžαžΆ αžŸαž˜αŸ’αž—αžΆαžšαŸˆαžŠαŸ‚αž›αž”αž„αŸ’αž αžΆαž‰αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αž“αžΉαž„αž‡αž½αž™αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜ "αž’αŸ’αž“αž€αžœαž·αž‘αŸ’αž™αžΆαžŸαžΆαžŸαŸ’αžαŸ’αžšαž‘αž·αž“αŸ’αž“αž“αŸαž™" αž€αŸ’αž“αž»αž„αž€αžΆαžšαž™αž›αŸ‹αžŠαžΉαž„αž–αžΈαžšαž”αŸ€αž”αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ (αž“αž·αž„αž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ‚αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡) αŸ”

αž‘αžΈαž–αžΈαžš αž™αžΎαž„αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžœαž·αž’αžΈαž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαŸ” αž₯αž‘αžΌαžœαž“αŸαŸ‡αž’αžΆαžŸαŸ’αžšαŸαž™αž›αžΎαžŸαŸ’αžαžΆαž“αž—αžΆαž–αž™αžΎαž„αž’αžΆαž…αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž˜αž½αž™αžŠαŸ‚αž›αžŸαž˜αžŸαŸ’αžšαž”αž”αŸ†αž•αž»αžαžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆαŸ”

αž‘αžΈαž”αžΈ αž™αžΎαž„αž”αžΆαž“αžƒαžΎαž‰αžαžΆαž˜αž–αž›αž“αŸƒαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž”αž“αŸ’αžαŸ‚αž˜ αž–αŸ„αž›αž‚αžΊαž”αŸ’αžšαžœαŸ‚αž„αž‡αŸ†αž αžΆαž“αž…αž»αŸ‡αž‡αž˜αŸ’αžšαžΆαž›αŸ” αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž“αŸαŸ‡αž˜αž·αž“αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαŸαžŸαž”αŸ’αžšαž αŸ‚αžŸαž‘αŸαŸ” αžŠαžΌαž…αžŠαŸ‚αž›αž”αžΆαž“αž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αžαžΆαž„αž›αžΎαžŠαžΎαž˜αŸ’αž”αžΈαž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž€αžΆαžšαž…αŸ†αžŽαžΆαž™αž›αžΎαž€αžΆαžšαž‚αžŽαž“αžΆαž”αŸ’αžšαžœαŸ‚αž„αž‡αŸ†αž αžΆαž“αž‚αž½αžšαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αž…αž»αŸ‡αŸ”

αž‘αžΈαž”αž½αž“ αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžšαž”αžŸαŸ‹αž™αžΎαž„ αž˜αž»αžαž„αžΆαžš "αžŸαžšαžŸαŸαžšαžαžΆαž˜αž•αŸ’αž‘αŸ‡" αž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αž›αž‘αŸ’αž’αž•αž›αž–αŸαž›αžœαŸαž›αžΆαž›αŸ’αž’αž”αŸ†αž•αž»αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž‚αžŽαž“αžΆαŸ” αž“αŸαŸ‡αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‡αŸ†αž“αžΆαž‰αž”αŸ†αž•αž»αžαž“αŸƒαžŸαž˜αžαŸ’αžαž—αžΆαž–αžšαž”αžŸαŸ‹αž”αžŽαŸ’αžŽαžΆαž›αŸαž™ αžŽαžΆαŸ†αž—αžΈ. αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αžαŸ’αžšαžΌαžœβ€‹αžαžΆβ€‹αžαžΆαž˜β€‹αžŠαŸ‚αž›β€‹αžœαžΆβ€‹αž’αžΆαž…β€‹αž’αŸ’αžœαžΎβ€‹αž”αžΆαž“ αž€αžΆαžšβ€‹αžŸαž“αŸ’αž“αž·αžŠαŸ’αž‹αžΆαž“β€‹αžαžΆαž„β€‹αž€αŸ’αžšαŸ„αž˜β€‹αž”αž„αŸ’αž αžΆαž‰β€‹αžαŸ’αž›αž½αž“β€‹αž―αž„αŸ” αž˜αŸ‰αŸ’αž™αžΆαž„αžœαž·αž‰αž‘αŸ€αž αž‡αž½αž“αž€αžΆαž›αžœαžΆαž˜αžΆαž“αžαž˜αŸ’αž›αŸƒαž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαžΆαž€αžŸαž½αžšαž˜αžαž·αžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„ αž αžΎαž™αž˜αŸ’αž™αŸ‰αžΆαž„αžœαž·αž‰αž‘αŸ€αž αžœαžΆαž˜αž·αž“αžαŸ‚αž„αžαŸ‚αž˜αžΆαž“αžαž˜αŸ’αž›αŸƒαž’αŸ’αžœαžΎαž±αŸ’αž™αž’αŸ’αžœαžΈαŸ—αž˜αžΆαž“αž—αžΆαž–αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž“αŸ„αŸ‡αž‘αŸ αž•αŸ’αž‘αž»αž™αž‘αŸ…αžœαž·αž‰ αž‡αž½αž“αž€αžΆαž›αžœαž·αž’αžΈαžŸαžΆαž˜αž‰αŸ’αž‰αž‡αžΆαž„αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆαž‚αžΊαž˜αžΆαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž‡αžΆαž„αŸ” αž αžΎαž™αž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈαž‚αŸ„αž›αžŠαŸ…αžšαž”αžŸαŸ‹αž™αžΎαž„αž‚αžΊαžŠαžΎαž˜αŸ’αž”αžΈαžœαž·αž—αžΆαž‚αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž”αžΈαž€αŸ’αž“αž»αž„αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αžΈαž€αžΆαžšαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαžŸαžΆαž˜αž‰αŸ’αž‰ αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž˜αž»αžαž„αžΆαžš "αžŸαžšαžŸαŸαžšαžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„" αž‚αžΊαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž™αžΎαž„αŸ”

αž’αž€αŸ’αžŸαžšαžŸαžΆαžŸαŸ’αžαŸ’αžš (αž¬αž’αŸ’αžœαžΈαž˜αž½αž™αžŠαžΌαž…αž“αŸ„αŸ‡)

1. αžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž›αžΈαž“αŸαž’αŸŠαŸ‚αžš

http://statistica.ru/theory/osnovy-lineynoy-regressii/

2. αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž€αžΆαžšαŸαžαž·αž…αž”αŸ†αž•αž»αžαŸ”

mathprofi.ru/metod_naimenshih_kvadratov.html

3. ដេរីវេ

www.mathprofi.ru/chastnye_proizvodnye_primery.html

4. αž‡αž˜αŸ’αžšαžΆαž›

mathprofi.ru/proizvodnaja_po_napravleniju_i_gradient.html

5. αž‡αž˜αŸ’αžšαžΆαž›αž‡αž˜αŸ’αžšαžΆαž›

habr.com/en/post/471458

habr.com/en/post/307312

artemarakcheev.com//2017-12-31/linear_regression

6. αž”αžŽαŸ’αžŽαžΆαž›αŸαž™ NumPy

docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.linalg.solve.html

docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.linalg.pinv.html

pythonworld.ru/numpy/2.html

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹