ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ

ื“ืขืจ ืึทืจื˜ื™ืงืœ ื“ื™ืกืงืึทืกื˜ ืขื˜ืœืขื›ืข ื•ื•ืขื’ืŸ ืฆื• ื‘ืึทืฉืœื™ืกืŸ ื“ื™ ืžืึทื˜ืึทืžืึทื˜ื™ืงืึทืœ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืึท ืคึผืฉื•ื˜ (ืคึผืขืจื“) ืจืึทื’ืจืขืฉืึทืŸ ืฉื•ืจื”.

ืึทืœืข ืžืขื˜ื”ืึธื“ืก ืคื•ืŸ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ื“ื™ืกืงืึทืกื˜ ื“ืึธ ื–ืขื ืขืŸ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื“ืขืจ ืงืœืขื ืกื˜ืขืจ ืกืงื•ื•ืขืจื– ืื•ืคึฟืŸ. ื–ืืœ ืก ืึธื ื•ื•ื™ื™ึทื–ืŸ ื“ื™ ืžืขื˜ื”ืึธื“ืก ื•ื•ื™ ื’ื™ื™ื˜:

  • ืึทื ืึทืœื™ื˜ื™ืฉ ืœื™ื™ื–ื•ื ื’
  • ื’ืจืึทื“ื™ืขื ื˜ ืึทืจืึธืคึผื’ืึทื ื’
  • ืกื˜ืึธื˜ืฉืึทืกื˜ื™ืง ื’ืจืึทื“ื™ืขื ื˜ ืึทืจืึธืคึผื’ืึทื ื’

ืคืืจ ื™ืขื“ืŸ ืžืขื˜ืื“ ืฆื• ืœื™ื™ื–ืŸ ื“ื™ ื’ืœื™ื™ื›ื•ื ื’ ืคื•ืŸ ื ื’ืœื™ื™ื›ืขืจ ืœื™ื ื™ืข ื’ื™ื˜ ื“ืขืจ ืืจื˜ื™ืงืœ ืคืืจืฉื™ื™ื“ืขื ืข ืคื•ื ืงืฆื™ืขืก, ื•ื•ืขืœื›ืข ื–ืขื ืขืŸ ื‘ืขื™ืงืจ ืฆืขื˜ื™ื™ืœื˜ ืื™ืŸ ื“ื™ ื•ื•ืืก ื•ื•ืขืจืŸ ื’ืขืฉืจื™ื‘ืŸ ืืŸ ื ื™ืฆืŸ ื“ื™ ื‘ื™ื‘ืœื™ืื˜ืขืง ื ื•ืžืคึผื™ ืื•ืŸ ื“ื™ ื•ื•ืึธืก ื ื•ืฆืŸ ืคึฟืึทืจ ื—ืฉื‘ื•ื ื•ืช ื ื•ืžืคึผื™. ืขืก ืื™ื– ื’ืขื’ืœื•ื™ื‘ื˜ ืึทื– ื‘ืขืจื™ื™ืฉ ื ื•ืฆืŸ ื ื•ืžืคึผื™ ื•ื•ืขื˜ ืจืขื“ื•ืฆื™ืจืŸ ืงืึทืžืคึผื™ื•ื˜ื™ื ื’ ืงืึธืก.

ื›ืœ ืงืึธื“ ืื™ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ ืื™ื– ื’ืขืฉืจื™ื‘ืŸ ืื™ืŸ ื“ืขืจ ืฉืคึผืจืึทืš ืคึผื™ื˜ื”ืึธืŸ 2.7 ื ื™ืฆืŸ ื“ื–ืฉื•ืคึผื™ื˜ืขืจ ื ืึธื•ื˜ื‘ื•ืง. ื“ืขืจ ืžืงื•ืจ ืงืึธื“ ืื•ืŸ ื˜ืขืงืข ืžื™ื˜ ืžื•ืกื˜ืขืจ ื“ืึทื˜ืŸ ื–ืขื ืขืŸ ืึทืจื™ื™ึทื ื’ืขืฉื™ืงื˜ ืื•ื™ืฃ ื’ื™ื˜ื”ื•ื‘

ื“ืขืจ ืึทืจื˜ื™ืงืœ ืื™ื– ืžืขืจ ืึทื™ืžืขื“ ืฆื• ื‘ื™ื™ื“ืข ื‘ื™ื’ื™ื ืขืจื– ืื•ืŸ ื“ื™ ื•ื•ืืก ื”ืึธื‘ืŸ ืฉื•ื™ืŸ ื‘ื™ืกืœืขื›ื•ื•ื™ื™ึทื– ืื ื’ืขื”ื•ื™ื‘ืŸ ืฆื• ื‘ืขืœ ื“ื™ ืœืขืจื ืขืŸ ืคื•ืŸ ืึท ื–ื™ื™ืขืจ ื‘ืจื™ื™ื˜ ืึธืคึผื˜ื™ื™ืœื•ื ื’ ืื™ืŸ ืงื™ื ืกื˜ืœืขืš ืกื™ื™ื›ืœ - ืžืึทืฉื™ืŸ ืœืขืจื ืขืŸ.

ืฆื• ืื™ืœื•ืกื˜ืจื™ืจืŸ ื“ืขื ืžืึทื˜ืขืจื™ืึทืœ, ืžื™ืจ ื ื•ืฆืŸ ืึท ื–ื™ื™ืขืจ ืคึผืฉื•ื˜ ื‘ื™ื™ึทืฉืคึผื™ืœ.

ื‘ื™ื™ึทืฉืคึผื™ืœ ื‘ืื“ื™ื ื’ื•ื ื’ืขืŸ

ืžื™ืจ ื”ืึธื‘ืŸ ืคื™ื ืฃ ื•ื•ืึทืœื•ืขืก ื•ื•ืึธืก ืงืขืจืึทืงื˜ืขืจื™ื™ื– ืึธืคืขื ื’ื™ืงื™ื™ึทื˜ Y ืคื•ืŸ X (ื˜ืึทื‘ืœืข ื ื•ืž 1):

ื˜ื™ืฉ ื ื•ืžืขืจ 1 "ื‘ื™ื™ึทืฉืคึผื™ืœ ื˜ื ืึธื™ื"

ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ

ืžื™ืจ ื•ื•ืขืœืŸ ื™ื‘ืขืจื ืขืžืขืŸ ืึทื– ื“ื™ ื•ื•ืึทืœื•ืขืก ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ืื™ื– ื“ืขืจ ื—ื•ื“ืฉ ืคื•ืŸ ื™ืึธืจ, ืื•ืŸ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ โ€” ืจืขื•ื•ืขืš ื“ืขื ื—ื•ื“ืฉ. ืื™ืŸ ืื ื“ืขืจืข ื•ื•ืขืจื˜ืขืจ, ืจืขื•ื•ืขืš ื“ืขืคึผืขื ื“ืก ืื•ื™ืฃ ื“ื™ ื—ื•ื“ืฉ ืคื•ืŸ ื“ื™ ื™ืึธืจ, ืื•ืŸ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ - ื“ืขืจ ื‘ืœื•ื™ื– ืฆื™ื™ื›ืŸ ืื•ื™ืฃ ื•ื•ืึธืก ืจืขื•ื•ืขืš ื“ืขืคึผืขื ื“ืก.

ื“ืขืจ ื‘ื™ื™ืฉืคึผื™ืœ ืื™ื– ืึทื–ื•ื™-ืึทื–ื•ื™, ื‘ื™ื™ื“ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืคื•ื ื˜ ืคื•ืŸ ืžื™ื™ื ื•ื ื’ ืคื•ืŸ ื“ื™ ืงืึทื ื“ื™ืฉืึทื ืึทืœ ืึธืคืขื ื’ื™ืงื™ื™ึทื˜ ืคื•ืŸ ืจืขื•ื•ืขืš ืื•ื™ืฃ ื“ื™ ื—ื•ื“ืฉ ืคื•ืŸ ื“ื™ ื™ืึธืจ, ืื•ืŸ ืคื•ืŸ ื“ื™ ืคื•ื ื˜ ืคื•ืŸ ืžื™ื™ื ื•ื ื’ ืคื•ืŸ ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ื•ื•ืึทืœื•ืขืก - ืขืก ื–ืขื ืขืŸ ื–ื™ื™ืขืจ ื•ื•ื™ื™ื ื™ืง ืคื•ืŸ ื–ื™ื™. ืึธื‘ืขืจ, ืึทื–ืึท ืกื™ืžืคึผืœืึทืคื™ืงื™ื™ืฉืึทืŸ ื•ื•ืขื˜ ืžืึทื›ืŸ ืขืก ืžืขื’ืœืขืš, ื•ื•ื™ ื–ื™ื™ ื–ืึธื’ืŸ, ืฆื• ื“ืขืจืงืœืขืจืŸ, ื ื™ื˜ ืฉื˜ืขื ื“ื™ืง ืžื™ื˜ ื™ื–, ื“ื™ ืžืึทื˜ืขืจื™ืึทืœ ื•ื•ืึธืก ื‘ื™ื’ื™ื ืขืจื– ืึทืกื™ืžื™ืœื™ืจืŸ. ืื•ืŸ ืื•ื™ืš ื“ื™ ืคึผืึทืฉื˜ืขืก ืคื•ืŸ ื“ื™ ื ื•ืžืขืจืŸ ื•ื•ืขื˜ ืœืึธื–ืŸ ื“ื™ ื•ื•ืืก ื•ื•ื™ืœืŸ ืฆื• ืกืึธืœื•ื•ืข ื“ืขื ื‘ื™ื™ึทืฉืคึผื™ืœ ืื•ื™ืฃ ืคึผืึทืคึผื™ืจ ืึธืŸ ื‘ืึทื˜ื™ื™ึทื˜ื™ืง ืึทืจื‘ืขื˜ ืงืึธืก.

ื–ืืœ ืื•ื ื“ื– ื™ื‘ืขืจื ืขืžืขืŸ ืึทื– ื“ื™ ืึธืคืขื ื’ื™ืงื™ื™ึทื˜ ื’ืขื’ืขื‘ืŸ ืื™ืŸ ื“ืขื ื‘ื™ื™ึทืฉืคึผื™ืœ ืงืขื ืขืŸ ื–ื™ื™ืŸ ืึทืคึผืจืึทืงืกืึทืžื™ื™ื˜ื™ื“ ื’ืึทื ืฅ ื’ื•ื˜ ื“ื•ืจืš ื“ื™ ืžืึทื˜ืึทืžืึทื˜ื™ืงืึทืœ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืึท ืคึผืฉื•ื˜ (ืคึผืขืจื“) ืจืึทื’ืจืขืฉืึทืŸ ืฉื•ืจื” ืคื•ืŸ ื“ื™ ืคืึธืจืขื:

ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ

ื•ื•ื• ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ืื™ื– ื“ืขืจ ื—ื•ื“ืฉ ืื™ืŸ ื•ื•ืึธืก ื“ื™ ืจืขื•ื•ืขืš ืื™ื– ื‘ืืงื•ืžืขืŸ, ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ - ืจืขื•ื•ืขืš ืงืึธืจืึทืกืคึผืึทื ื“ื™ื ื’ ืฆื• ื“ื™ ื—ื•ื“ืฉ, ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ะธ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ื–ืขื ืขืŸ ื“ื™ ืจืึทื’ืจืขืฉืึทืŸ ืงืึธื•ืึทืคื™ืฉืึทื ืฅ ืคื•ืŸ ื“ื™ ืขืกื˜ื™ืžืึทื˜ืขื“ ืฉื•ืจื”.

ื‘ืึทืžืขืจืงื•ื ื’ ืึทื– ื“ื™ ืงืึธื•ืึทืคื™ืฉืึทื ื˜ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ืึธืคื˜ ื’ืขืจื•ืคืŸ ื“ื™ ืฉื™ืคึผื•ืข ืึธื“ืขืจ ื’ืจืึทื“ื™ืขื ื˜ ืคื•ืŸ ื“ื™ ืขืกื˜ื™ืžืึทื˜ืขื“ ืฉื•ืจื”; ืจืขืคึผืจืึทื–ืขื ืฅ ื“ื™ ืกื•ืžืข ื“ื•ืจืš ื•ื•ืึธืก ื“ื™ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ื•ื•ืขืŸ ืขืก ืขื ื“ืขืจื•ื ื’ืขืŸ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ.

ื“ืึธืš, ืื•ื ื“ื–ืขืจ ืึทืจื‘ืขื˜ ืื™ืŸ ื“ืขื ื‘ื™ื™ึทืฉืคึผื™ืœ ืื™ื– ืฆื• ืื•ื™ืกืงืœื™ื™ึทื‘ืŸ ืึทื–ืึท ืงืึธื•ืึทืคื™ืฉืึทื ืฅ ืื™ืŸ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ะธ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ, ืื™ืŸ ื•ื•ืึธืก ื“ื™ ื“ื™ื•ื•ื™ื™ื™ืฉืึทื ื– ืคื•ืŸ ืื•ื ื“ื–ืขืจ ืงืึทืœืงื™ืึทืœื™ื™ื˜ื™ื“ ืจืขื•ื•ืขืš ื•ื•ืึทืœื•ืขืก ื“ื•ืจืš ื—ื•ื“ืฉ ืคื•ืŸ ื“ื™ ืืžืช ืขื ื˜ืคึฟืขืจืก, ื™.ืข. ื•ื•ืึทืœื•ืขืก ื“ืขืจืœืื ื’ื˜ ืื™ืŸ ื“ืขืจ ืžื•ืกื˜ืขืจ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืžื™ื ื™ืžืึทืœ.

ืงืœืขื ืกื˜ืขืจ ืงื•ื•ืึทื“ืจืึทื˜ ืื•ืคึฟืŸ

ืœื•ื™ื˜ ื“ื™ ืงืœืขื ืกื˜ืขืจ ืกืงื•ื•ืขืจื– ืื•ืคึฟืŸ, ื“ื™ ื“ื™ื•ื•ื™ื™ื™ืฉืึทืŸ ื–ืึธืœ ื–ื™ื™ืŸ ืงืึทืœืงื™ืึทืœื™ื™ื˜ื™ื“ ื“ื•ืจืš ืกืงื•ื•ืขืจื™ื ื’ ืขืก. ื“ืขื ื˜ืขื›ื ื™ืง ืึทืœืึทื•ื– ืื™ืจ ืฆื• ื•ื™ืกืžื™ื™ื“ืŸ ืงืขื’ื ืฆื™ื™ึทื˜ื™ืง ืงืึทื ืกืึทืœื™ื™ืฉืึทืŸ ืคื•ืŸ ื“ื™ื•ื•ื™ื™ื™ืฉืึทื ื– ืื•ื™ื‘ ื–ื™ื™ ื”ืึธื‘ืŸ ืคืึทืจืงืขืจื˜ ื•ื•ืื•ื ื“ืขืจ. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืื•ื™ื‘ ืื™ืŸ ืื™ื™ืŸ ืคืึทืœ, ื“ื™ ื“ื™ื•ื•ื™ื™ื™ืฉืึทืŸ ืื™ื– +5 (ืคึผืœื•ืก ืคื™ื ืฃ), ืื•ืŸ ืื™ืŸ ื“ื™ ืื ื“ืขืจืข -5 (ืžื™ื ื•ืก ืคื™ื ืฃ), ื“ืขืžืึธืœื˜ ื“ื™ ืกืึทื›ืึทืงืœ ืคื•ืŸ ื“ื™ ื“ื™ื•ื•ื™ื™ื™ืฉืึทื ื– ื•ื•ืขื˜ ื‘ืึธื˜ืœ ืžืึทื›ืŸ ื™ืขื“ืขืจ ืื ื“ืขืจืขืจ ืื•ืŸ ืกื•ืžืข ืฆื• 0 (ื ื•ืœ). ืขืก ืื™ื– ืžืขื’ืœืขืš ื ื™ืฉื˜ ืฆื• ืงื•ื•ืึทื“ืจืึทื˜ ื“ื™ ื“ื™ื•ื•ื™ื™ื™ืฉืึทืŸ, ืึธื‘ืขืจ ืฆื• ื ื•ืฆืŸ ื“ื™ ืคืึทืจืžืึธื’ ืคื•ืŸ ื“ื™ ืžืึธื“ื•ืœื•ืก ืื•ืŸ ื“ืึทืŸ ืึทืœืข ื“ื™ ื“ื™ื•ื•ื™ื™ื™ืฉืึทื ื– ื•ื•ืขื˜ ื–ื™ื™ืŸ positive ืื•ืŸ ื•ื•ืขื˜ ืึธื ืงืœื™ื™ึทื‘ืŸ. ืžื™ืจ ื•ื•ืขืœืŸ ื ื™ืฉื˜ ื•ื•ื•ื™ื ืขืŸ ืื•ื™ืฃ ื“ืขื ืคื•ื ื˜ ืื™ืŸ ื“ืขื˜ืึทืœ, ืึธื‘ืขืจ ื ืึธืจ ืึธื ื•ื•ื™ื™ึทื–ืŸ ืึทื– ืคึฟืึทืจ ื“ื™ ืงืึทื ื•ื•ื™ื ื™ืึทื ืก ืคื•ืŸ ื—ืฉื‘ื•ื ื•ืช, ืขืก ืื™ื– ืงืึทืกื˜ืึทืžืขืจื™ ืฆื• ืงื•ื•ืึทื“ืจืึทื˜ ื“ื™ ื“ื™ื•ื•ื™ื™ื™ืฉืึทืŸ.

ื“ืึธืก ืื™ื– ื•ื•ื™ ื“ื™ ืคืึธืจืžื•ืœืข ืงื•ืงื˜ ื•ื•ื™ ืžื™ื˜ ื•ื•ืึธืก ืžื™ืจ ื•ื•ืขืœืŸ ื‘ืึทืฉืœื™ืกืŸ ื“ื™ ืงืœืขื ืกื˜ืขืจ ืกืึทื›ืึทืงืœ ืคื•ืŸ ืกืงื•ื•ืขืจื“ ื“ื™ื•ื•ื™ื™ื™ืฉืึทื ื– (ืขืจืจืึธืจืก):

ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ

ื•ื•ื• ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ืื™ื– ืึท ืคื•ื ืงืฆื™ืข ืคื•ืŸ โ€‹โ€‹ื“ืขืจื ืขื ื˜ืขืจื  ื–ื™ืš ืคื•ืŸ ืืžืช ืขื ื˜ืคึฟืขืจืก (ื“ืึธืก ืื™ื– ื“ื™ ืจืขื•ื•ืขืš ื•ื•ืึธืก ืžื™ืจ ืงืึทืœืงื™ืึทืœื™ื™ื˜ื™ื“),

ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ื–ืขื ืขืŸ ื“ื™ ืืžืช ืขื ื˜ืคึฟืขืจืก (ืจืขื•ื•ืขืš ืฆื•ื’ืขืฉื˜ืขืœื˜ ืื™ืŸ ื“ืขืจ ืžื•ืกื˜ืขืจ),

ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ืื™ื– ื“ืขืจ ืžื•ืกื˜ืขืจ ืื™ื ื“ืขืงืก (ื ื•ืžืขืจ ืคื•ืŸ ื“ื™ ื—ื•ื“ืฉ ืื™ืŸ ื•ื•ืึธืก ื“ื™ ื“ื™ื•ื•ื™ื™ื™ืฉืึทืŸ ืื™ื– ื‘ืืฉืœืืกืŸ)

ื–ืืœ ืก ื“ื™ืคืขืจืขื ืฉื™ื™ื™ื˜ ื“ื™ ืคึฟื•ื ืงืฆื™ืข, ื“ืขืคื™ื ื™ืจืŸ ื“ื™ ืคึผืึทืจื˜ื™ื™ื™ืฉ ื“ื™ืคืขืจืขื ื˜ืฉืึทืœ ื™ืงื•ื•ื™ื™ื–ืฉืึทื ื–, ืื•ืŸ ื–ื™ื™ืŸ ื’ืจื™ื™ื˜ ืฆื• ืžืึทืš ืื•ื™ืฃ ืฆื• ื“ื™ ืึทื ืึทืœื™ืกื™ืก ืœื™ื™ื–ื•ื ื’. ืื‘ืขืจ ืขืจืฉื˜ืขืจ, ืœืึธื–ืŸ ืื•ื ื“ื– ื ืขืžืขืŸ ืึท ืงื•ืจืฅ ืฉืคึผืึทืฆื™ืจ ื•ื•ืขื’ืŸ ื•ื•ืึธืก ื“ื™ืคืขืจืขื ืฉื™ื™ื™ืฉืึทืŸ ืื™ื– ืื•ืŸ ื’ืขื“ืขื ืงืขืŸ ื“ื™ ื“ื–ืฉื™ืึทืžืขื˜ืจื™ืง ื˜ื™ื™ึทื˜ืฉ ืคื•ืŸ ื“ืขืจ ื“ืขืจื™ื•ื•ืึทื˜.

ื“ื™ืคืคืขืจืขื ื˜ื™ืืฆื™ืข

ื“ื™ืคืขืจืขื ื˜ืฉื™ื™ื™ืฉืึทืŸ ืื™ื– ื“ื™ ืึธืคึผืขืจืึทืฆื™ืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹ื’ืขืคื™ื ืขืŸ ื“ื™ ื“ืขืจื™ื•ื•ืึทื˜ ืคื•ืŸ ืึท ืคึฟื•ื ืงืฆื™ืข.

ื•ื•ืึธืก ืื™ื– ื“ืขืจ ื“ืขืจื™ื•ื•ืึทื˜ ื’ืขื ื™ืฆื˜ ืคึฟืึทืจ? ื“ื™ ื“ืขืจื™ื•ื•ืึทื˜ ืคื•ืŸ ืึท ืคึฟื•ื ืงืฆื™ืข ืงืขืจืึทืงื˜ืขืจื™ื™ื–ืึทื– ื“ื™ ืงื•ืจืก ืคื•ืŸ ื˜ื•ื™ืฉืŸ ืคื•ืŸ ื“ื™ ืคึฟื•ื ืงืฆื™ืข ืื•ืŸ ื“ืขืจืฆื™ื™ืœื˜ ืื•ื ื“ื– ื–ื™ื™ึทืŸ ืจื™ื›ื˜ื•ื ื’. ืื•ื™ื‘ ื“ื™ ื“ืขืจื™ื•ื•ืึทื˜ ืื™ืŸ ืึท ื’ืขื’ืขื‘ืŸ ืคื•ื ื˜ ืื™ื– positive, ื“ื™ ืคึฟื•ื ืงืฆื™ืข ื™ื ืงืจื™ืกื™ื–; ืึทื ื“ืขืจืฉ, ื“ื™ ืคึฟื•ื ืงืฆื™ืข ื“ื™ืงืจื™ืกืึทื–. ืื•ืŸ ื“ื™ ื’ืจืขืกืขืจ ื“ื™ ื•ื•ืขืจื˜ ืคื•ืŸ ื“ื™ ืึทื‘ืกืึธืœื•ื˜ ื“ืขืจื™ื•ื•ืึทื˜, ื“ื™ ื”ืขื›ืขืจ ื“ื™ ืงื•ืจืก ืคื•ืŸ ืขื ื“ืขืจื•ื ื’ ืคื•ืŸ ื“ื™ ืคึฟื•ื ืงืฆื™ืข ื•ื•ืึทืœื•ืขืก, ื•ื•ื™ ืื•ื™ืš ื“ื™ ืกื˜ื™ืคึผืขืจ ื“ื™ ืฉื™ืคึผื•ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืคึฟื•ื ืงืฆื™ืข ื’ืจืึทืคื™ืง.

ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืื•ื ื˜ืขืจ ื“ื™ ื‘ืื“ื™ื ื’ื•ื ื’ืขืŸ ืคื•ืŸ ืึท ืงืึทืจื˜ืขืกื™ืึทืŸ ืงืึธื•ืึธืจื“ืึทื ืึทื˜ ืกื™ืกื˜ืขื, ื“ื™ ื•ื•ืขืจื˜ ืคื•ืŸ ื“ืขืจ ื“ืขืจื™ื•ื•ืึทื˜ ืื™ืŸ ื“ื™ ืคื•ื ื˜ ืž(0,0) ืื™ื– ื’ืœื™ื™ึทืš ืฆื• +25 ืžื™ื˜ืœ ืึทื– ืื™ืŸ ืึท ื’ืขื’ืขื‘ืŸ ืคื•ื ื˜, ื•ื•ืขืŸ ื“ื™ ื•ื•ืขืจื˜ ืื™ื– ืฉื™ืคื˜ื™ื“ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ืฆื• ื“ื™ ืจืขื›ื˜ ื“ื•ืจืš ืึท ืงืึทื ื•ื•ืขื ืฉืึทื ืึทืœ ืึทืคึผืึทืจืึทื˜, ื•ื•ืขืจื˜ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ื™ื ืงืจื™ืกืึทื– ื“ื•ืจืš 25 ืงืึทื ื•ื•ืขื ืฉืึทื ืึทืœ ื•ื ื™ืฅ. ืื•ื™ืฃ ื“ื™ ื’ืจืึทืคื™ืง ืขืก ืงื•ืงื˜ ื•ื•ื™ ืึท ืคืขืจืœื™ ืึทืจืึธืคืึทื ื’ ื”ืขื›ืขืจื•ื ื’ ืื™ืŸ ื•ื•ืึทืœื•ืขืก ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ืคื•ืŸ ืึท ื’ืขื’ืขื‘ืŸ ืคื•ื ื˜.

ืืŸ ืื ื“ืขืจ ื‘ื™ื™ึทืฉืคึผื™ืœ. ื“ืขืจ ื“ืขืจื™ื•ื•ืึทื˜ ื•ื•ืขืจื˜ ืื™ื– ื’ืœื™ื™ึทืš -ืงืกื ื•ืžืงืก ืžื™ื˜ืœ ืึทื– ื•ื•ืขืŸ ื“ื™ืกืคึผืœื™ื™ืกื˜ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ืคึผืขืจ ืื™ื™ืŸ ืงืึทื ื•ื•ืขื ืฉืึทื ืึทืœ ืึทืคึผืึทืจืึทื˜, ื•ื•ืขืจื˜ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ื“ื™ืงืจื™ืกืึทื– ืžื™ื˜ ื‘ืœื•ื™ื– 0,1 ืงืึทื ื•ื•ืขื ืฉืึทื ืึทืœ ืึทืคึผืึทืจืึทื˜. ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืฆื™ื™ื˜, ืื•ื™ืฃ ื“ื™ ื’ืจืึทืคื™ืง ืคื•ืŸ ื“ื™ ืคึฟื•ื ืงืฆื™ืข, ืžื™ืจ ืงืขื ืขืŸ ืึธื‘ืกืขืจื•ื•ื™ืจืŸ ืึท ืงื•ื™ื ื‘ืืžืขืจืงื˜ ื“ืึทื•ื ื•ื•ืขืจื“ ืฉื™ืคึผื•ืข. ืฆื™ื™ื›ืขื ื•ื ื’ ืึทืŸ ืึทื ืึทืœืึทื“ื–ืฉื™ ืžื™ื˜ ืึท ื‘ืึทืจื’, ืขืก ืื™ื– ื•ื•ื™ ืื•ื™ื‘ ืžื™ืจ ื–ืขื ืขืŸ ื–ื™ื™ืขืจ ืกืœืึธื•ืœื™ ืึทืจืึธืคึผื’ื™ื™ืŸ ืึท ืžื™ืœื“ ืฉื™ืคึผื•ืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹ืึท ื‘ืึทืจื’, ื ื™ื˜ ืขื ืœืขืš ื“ืขื ืคืจื™ืขืจื“ื™ืงืŸ ื‘ื™ื™ึทืฉืคึผื™ืœ, ื•ื•ื• ืžื™ืจ ื”ืึธื‘ืŸ ืฆื• ืงืจื™ื›ืŸ ื–ื™ื™ืขืจ ืึทืจืึธืคืึทื ื’ ืคึผื™ืงืก :)

ืื–ื•ื™, ื ืึธืš ื“ื™ืคืขืจืขื ืฉื™ื™ื™ื˜ื™ื ื’ ื“ื™ ืคึฟื•ื ืงืฆื™ืข ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ื“ื•ืจืš ืฉืึทื ืกืŸ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ะธ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ, ืžื™ืจ ื“ืขืคื™ื ื™ืจืŸ 1ืกื˜ ืกื“ืจ ืคึผืึทืจื˜ื™ื™ื™ืฉ ื“ื™ืคืขืจืขื ื˜ืฉืึทืœ ื™ืงื•ื•ื™ื™ื–ืฉืึทื ื–. ื ืึธืš ื“ื™ื˜ืขืจืžืึทื ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทื ื–, ืžื™ืจ ื•ื•ืขืœืŸ ื‘ืึทืงื•ืžืขืŸ ืึท ืกื™ืกื˜ืขื ืคื•ืŸ ืฆื•ื•ื™ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทื ื–, ื“ื•ืจืš ืกืึทืœื•ื•ื™ื ื’ ื•ื•ืึธืก ืžื™ืจ ืงืขื ืขืŸ ืื•ื™ืกืงืœื™ื™ึทื‘ืŸ ืึทื–ืึท ื•ื•ืึทืœื•ืขืก ืคื•ืŸ ืงืึธื•ืึทืคื™ืฉืึทื ืฅ. ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ะธ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ, ืคึฟืึทืจ ื•ื•ืึธืก ื“ื™ ื•ื•ืึทืœื•ืขืก ืคื•ืŸ ื“ื™ ืงืึธืจืึทืกืคึผืึทื ื“ื™ื ื’ ื“ืขืจื™ื•ื•ืึทื˜ื™ื•ื•ื– ื‘ื™ื™ึท ื’ืขื’ืขื‘ืŸ ื•ื•ื™ื™ื–ื˜ ื˜ื•ื™ืฉืŸ ื–ื™ื™ืขืจ, ื–ื™ื™ืขืจ ืงืœื™ื™ืŸ ืกื•ืžืข, ืื•ืŸ ืื™ืŸ ื“ื™ ืคืึทืœ ืคื•ืŸ ืึทืŸ ืึทื ืึทืœื™ืกื™ืก ืœื™ื™ื–ื•ื ื’ ื˜ืึธืŸ ื ื™ื˜ ื˜ื•ื™ืฉืŸ ืื™ืŸ ืึทืœืข. ืื™ืŸ ืื ื“ืขืจืข ื•ื•ืขืจื˜ืขืจ, ื“ื™ ื˜ืขื•ืช ืคื•ื ืงืฆื™ืึธื ื™ืจืŸ ืื™ืŸ ื“ื™ ื’ืขืคึฟื•ื ืขืŸ ืงืึธื•ืึทืคื™ืฉืึทื ืฅ ื•ื•ืขื˜ ื“ืขืจื’ืจื™ื™ื›ืŸ ืึท ืžื™ื ื™ืžื•ื, ื•ื•ื™ื™ึทืœ ื“ื™ ื•ื•ืึทืœื•ืขืก ืคื•ืŸ ื“ื™ ืคึผืึทืจื˜ื™ื™ื™ืฉ ื“ืขืจื™ื•ื•ืึทื˜ื™ื•ื•ื– ืื™ืŸ ื“ื™ ืคื•ื ืงื˜ืŸ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืœื™ื™ึทืš ืฆื• ื ื•ืœ.

ืึทื–ื•ื™, ืœื•ื™ื˜ ื“ื™ ื›ึผืœืœื™ื ืคื•ืŸ ื“ื™ืคืขืจืขื ืฉื™ื™ื™ืฉืึทืŸ, ื“ื™ ืคึผืึทืจื˜ื™ื™ื™ืฉ ื“ืขืจื™ื•ื•ืึทื˜ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ื“ื™ 1 ืกื“ืจ ืžื™ื˜ ืจืขืกืคึผืขืงื˜ ืฆื• ื“ื™ ืงืึธื•ืึทืคื™ืฉืึทื ื˜. ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ื•ื•ืขื˜ ื ืขืžืขืŸ ื“ื™ ืคืึธืจืขื:

ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ

1 ืกื“ืจ ืคึผืึทืจื˜ื™ื™ื™ืฉ ื“ืขืจื™ื•ื•ืึทื˜ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืžื™ื˜ ืจืขืกืคึผืขืงื˜ ืฆื• ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ื•ื•ืขื˜ ื ืขืžืขืŸ ื“ื™ ืคืึธืจืขื:

ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ

ื•ื•ื™ ืึท ืจืขื–ื•ืœื˜ืึทื˜, ืžื™ืจ ื‘ืืงื•ืžืขืŸ ืึท ืกื™ืกื˜ืขื ืคื•ืŸ ื™ืงื•ื•ื™ื™ื–ืฉืึทื ื– ื•ื•ืึธืก ื”ืื˜ ืึท ื’ืึทื ืฅ ืคึผืฉื•ื˜ ืึทื ืึทืœื™ืกื™ืก ืœื™ื™ื–ื•ื ื’:

ืึธื ื”ื™ื™ื‘ืŸ {ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ*}
ืึธื ื”ื™ื™ื‘ืŸ{ ืงืึทืกืขืก}
na + bsumlimits_{i=1}^nx_i โ€” sumlimits_{i=1}^ื ื™_ื™ = 0

sumlimits_{i=1}^nx_i(ืึท +ื‘ืกื•ืžืœื™ืžื™ืฅ_{i=1}^nx_i โ€” sumlimits_{i=1}^ื ื™_ื™) = 0
ืกื•ืฃ {ืคืืœืŸ}
ืกื•ืฃ {ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ*}

ืื™ื™ื“ืขืจ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ, ืœืึธื–ืŸ ืื•ื ื“ื– ืคึผืจืขืœืึธืึทื“, ืงืึธื ื˜ืจืึธืœื™ืจืŸ ืึทื– ื“ื™ ืœืึธื•ื“ื™ื ื’ ืื™ื– ืจื™ื›ื˜ื™ืง ืื•ืŸ ืคึฟืึธืจืžืึทื˜ ื“ื™ ื“ืึทื˜ืŸ.

ืœืึธื•ื“ื™ื ื’ ืื•ืŸ ืคืึธืจืžืึทื˜ื˜ื™ื ื’ ื“ืึทื˜ืŸ

ืขืก ื–ืึธืœ ื–ื™ื™ืŸ ืื ื’ืขื•ื•ื™ื–ืŸ ืึทื– ืจืขื›ื˜ ืฆื• ื“ืขื ืคืึทืงื˜ ืึทื– ืคึฟืึทืจ ื“ื™ ืึทื ืึทืœื™ืกื™ืก ืœื™ื™ื–ื•ื ื’, ืื•ืŸ ื“ืขืจื ืึธืš ืคึฟืึทืจ ื’ืจืึทื“ื™ืขื ื˜ ืื•ืŸ ืกื˜ืึธื˜ืฉืึทืกื˜ื™ืง ื’ืจืึทื“ื™ืขื ื˜ ืึทืจืึธืคึผื’ืึทื ื’, ืžื™ืจ ื•ื•ืขืœืŸ ื ื•ืฆืŸ ื“ื™ ืงืึธื“ ืื™ืŸ ืฆื•ื•ื™ื™ ื•ื•ืขืจื™ื™ื™ืฉืึทื ื–: ื ื™ืฆืŸ ื“ื™ ื‘ื™ื‘ืœื™ืึธื˜ืขืง ื ื•ืžืคึผื™ ืื•ืŸ ืึธืŸ ื ื™ืฆืŸ ืขืก, ืžื™ืจ ื•ื•ืขืœืŸ ื“ืึทืจืคึฟืŸ ืฆื•ื ืขืžืขืŸ ื“ืึทื˜ืŸ ืคืึธืจืžืึทื˜ื˜ื™ื ื’ (ื–ืขืŸ ืงืึธื“).

ื“ืึทื˜ืึท ืœืึธื•ื“ื™ื ื’ ืื•ืŸ ืคึผืจืึทืกืขืกื™ื ื’ ืงืึธื“

# ะธะผะฟะพั€ั‚ะธั€ัƒะตะผ ะฒัะต ะฝัƒะถะฝั‹ะต ะฝะฐะผ ะฑะธะฑะปะธะพั‚ะตะบะธ
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 '********************************************'

ื•ื•ื™ืกื•ืึทืœื™ื–ืึทื˜ื™ืึธืŸ

ืื™ืฆื˜, ื ืึธืš ืžื™ืจ ื”ืึธื‘ืŸ, ืขืจืฉื˜ืขืจ, ืœืึธื•ื“ื™ื“ ื“ื™ ื“ืึทื˜ืŸ, ืฆื•ื•ื™ื™ื˜ื ืก, ืึธืคึผื’ืขืฉื˜ืขืœื˜ ื“ื™ ืงืขืจืขืงื˜ื ืึทืก ืคื•ืŸ ื“ื™ ืœืึธื•ื“ื™ื ื’ ืื•ืŸ ืœืขืกืึธืฃ ืคืึธืจืžืึทื˜ื˜ืขื“ ื“ื™ ื“ืึทื˜ืŸ, ืžื™ืจ ื•ื•ืขืœืŸ ื“ื•ืจื›ืคื™ืจืŸ ื“ื™ ืขืจืฉื˜ืขืจ ื•ื•ื™ื–ืฉื•ื•ืึทืœืึทื–ื™ื™ืฉืึทืŸ. ื“ืขืจ ืื•ืคึฟืŸ ืึธืคื˜ ื’ืขื ื™ืฆื˜ ืคึฟืึทืจ ื“ืขื ืื™ื– ืคึผืึธืจืคึผืœืึทืฅ ืœื™ื™ื‘ืจืขืจื™ื– Seaborn. ืื™ืŸ ืื•ื ื“ื–ืขืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ื•ื•ื™ื™ึทืœ ืคื•ืŸ ื“ื™ ืœื™ืžื™ื˜ืขื“ ื ื•ืžืขืจืŸ, ืขืก ืื™ื– ืงื™ื™ืŸ ืคื•ื ื˜ ืฆื• ื ื•ืฆืŸ ื“ื™ ื‘ื™ื‘ืœื™ืึธื˜ืขืง Seaborn. ืžื™ืจ ื•ื•ืขืœืŸ ื ื•ืฆืŸ ื“ื™ ืจืขื’ื•ืœืขืจ ื‘ื™ื‘ืœื™ืึธื˜ืขืง matplotlib ืื•ืŸ ืงื•ืง ื ืึธืจ ืื•ื™ืฃ ื“ื™ ืฆืขื•ื•ืึธืจืคืŸ ืคึผืœืึทื˜.

ืฆืขื•ื•ืึธืจืคืŸ ืงืึธื“

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 "ืึธืคืขื ื’ื™ืงื™ื™ึทื˜ ืคื•ืŸ ืจืขื•ื•ืขืš ืื•ื™ืฃ ื“ื™ ื—ื•ื“ืฉ ืคื•ืŸ ื“ื™ ื™ืึธืจ"

ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ

ืึทื ืึทืœื™ื˜ื™ืฉ ืœื™ื™ื–ื•ื ื’

ืœืึธืžื™ืจ ื ื•ืฆืŸ ื“ื™ ืžืขืจืกื˜ ืคึผืจืึธืกื˜ ืžื›ืฉื™ืจื™ื ืื™ืŸ ืคึผื™ื˜ื”ืึธืŸ ืื•ืŸ ืกืึธืœื•ื•ืข ื“ื™ ืกื™ืกื˜ืขื ืคื•ืŸ ื™ืงื•ื•ื™ื™ื–ืฉืึทื ื–:

ืึธื ื”ื™ื™ื‘ืŸ {ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ*}
ืึธื ื”ื™ื™ื‘ืŸ{ ืงืึทืกืขืก}
na + bsumlimits_{i=1}^nx_i โ€” sumlimits_{i=1}^ื ื™_ื™ = 0

sumlimits_{i=1}^nx_i(ืึท +ื‘ืกื•ืžืœื™ืžื™ืฅ_{i=1}^nx_i โ€” sumlimits_{i=1}^ื ื™_ื™) = 0
ืกื•ืฃ {ืคืืœืŸ}
ืกื•ืฃ {ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ*}

ืœื•ื™ื˜ ืงืจืึทืžืขืจ ืก ื”ืขืจืฉืŸ ืžื™ืจ ื•ื•ืขืœืŸ ื’ืขืคึฟื™ื ืขืŸ ื“ื™ ืึทืœื’ืขืžื™ื™ื ืข ื“ื™ื˜ืขืจืžืึทื ืึทื ื˜, ื•ื•ื™ ื’ืขื–ื•ื ื˜ ื•ื•ื™ ื“ื™ื˜ืขืจืžืึทื ืึทื ืฅ ื“ื•ืจืš ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ืื•ืŸ ื‘ื™ื™ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ, ื ืึธืš ื•ื•ืึธืก, ื“ื™ื˜ื™ื™ืœื“ ื“ื™ ื“ื™ื˜ืขืจืžืึทื ืึทื ื˜ ื“ื•ืจืš ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ืฆื• ื“ืขืจ ื’ืขื ืขืจืึทืœ ื“ื™ื˜ืขืจืžืึทื ืึทื ื˜ - ื’ืขืคึฟื™ื ืขืŸ ื“ื™ ืงืึธื•ืึทืคื™ืฉืึทื ื˜ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ, ืกื™ืžื™ืœืึทืจืœื™ ืžื™ืจ ื’ืขืคึฟื™ื ืขืŸ ื“ื™ ืงืึธื•ืึทืคื™ืฉืึทื ื˜ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ.

ืึทื ืึทืœื™ื˜ื™ืงืึทืœ ืœื™ื™ื–ื•ื ื’ ืงืึธื“

# ะพะฟั€ะตะดะตะปะธะผ ั„ัƒะฝะบั†ะธัŽ ะดะปั ั€ะฐัั‡ะตั‚ะฐ ะบะพัั„ั„ะธั†ะธะตะฝั‚ะพะฒ 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 "ื“ื™ื•ื•ื™ื™ื™ืฉืึทื ื–, %"

ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ

ื ื™ื˜ ื’ืื ืฅ, ืึธื‘ืขืจ ืžื™ืจ ื’ืขืขื ื“ื™ืงื˜ ืื•ื ื“ื–ืขืจ ืึทืจื‘ืขื˜.

ื–ืืœ ืก ืฉืจื™ื™ึทื‘ืŸ ืึท ืคึฟื•ื ืงืฆื™ืข ืึทื–, ืฆื• ื‘ืึทืฉื˜ื™ืžืขืŸ ื“ื™ ืงืึธื•ืึทืคื™ืฉืึทื ืฅ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ะธ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ื ื™ืฆื˜ ื“ื™ ื‘ื™ื‘ืœื™ืึธื˜ืขืง ื ื•ืžืคึผื™, ืžืขืจ ื’ืขื ื•ื™, ืžื™ืจ ื•ื•ืขืœืŸ ืฉืจื™ื™ึทื‘ืŸ ืฆื•ื•ื™ื™ ืคืึทื ื’ืงืฉืึทื ื–: ืื™ื™ื ืขืจ ื ื™ืฆืŸ ืึท ืคึผืกืขื•ื“ืึธื™ื ื•ื•ืขืจืกืข ืžืึทื˜ืจื™ืฅ (ื ื™ื˜ ืจืขืงืึทืžืขื ื“ื™ื“ ืื™ืŸ ืคื™ืจ, ื•ื•ื™ื™ึทืœ ื“ืขืจ ืคึผืจืึธืฆืขืก ืื™ื– ืงืึทืžืคึผื™ื•ื˜ื™ืฉืึทื ืึทืœื™ ืงืึธืžืคึผืœื™ืฆื™ืจื˜ ืื•ืŸ ืึทื ืกื˜ื™ื™ื‘ืึทืœ), ื“ื™ ืื ื“ืขืจืข ื ื™ืฆืŸ ืึท ืžืึทื˜ืจื™ืฅ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ.

Analytical Solution Code (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 ืก ืื•ืคึฟืŸ.

ืื™ืฆื˜ ืื™ืจ ืงืขื ืขืŸ ืžืึทืš ืื•ื™ืฃ ืฆื• ืื ื“ืขืจืข ื•ื•ืขื’ืŸ ืฆื• ื’ืขืคึฟื™ื ืขืŸ ืงืึธื•ืึทืคื™ืฉืึทื ืฅ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ะธ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ.

ื’ืจืึทื“ื™ืขื ื˜ ืึทืจืึธืคึผื’ืึทื ื’

ืขืจืฉื˜ืขืจ, ืœืึธืžื™ืจ ื“ืขืคื™ื ื™ืจืŸ ื•ื•ืึธืก ืึท ื’ืจืึทื“ื™ืขื ื˜ ืื™ื–. ืคืฉื•ื˜, ื“ื™ ื’ืจืึทื“ื™ืขื ื˜ ืื™ื– ืึท ืึธืคึผืฉื ื™ื˜ ื•ื•ืึธืก ื™ื ื“ื™ืงื™ื™ืฅ ื“ื™ ืจื™ื›ื˜ื•ื ื’ ืคื•ืŸ ืžืึทืงืกื™ืžื•ื ื•ื•ื•ึผืงืก ืคื•ืŸ ืึท ืคึฟื•ื ืงืฆื™ืข. ื“ื•ืจืš ืึทื ืึทืœืึทื“ื–ืฉื™ ืžื™ื˜ ืงืœื™ื™ืžื™ื ื’ ืึท ื‘ืึทืจื’, ื•ื•ื• ื“ื™ ื’ืจืึทื“ื™ืขื ื˜ ืคื ื™ืžืขืจ ืื™ื– ื•ื•ื• ื“ื™ ืกื˜ื™ืคึผืึทืกื˜ ืงืจื™ื›ืŸ ืฆื• ื“ื™ ืฉืคึผื™ืฅ ืคื•ืŸ ื“ืขื ื‘ืึทืจื’ ืื™ื–. ื“ืขื•ื•ืขืœืึธืคึผื™ื ื’ ื“ืขื ื‘ื™ื™ึทืฉืคึผื™ืœ ืžื™ื˜ ื“ืขื ื‘ืึทืจื’, ืžื™ืจ ื’ืขื“ืขื ืงืขืŸ ืึทื– ืื™ืŸ ืคืึทืงื˜, ืžื™ืจ ื“ืึทืจืคึฟืŸ ื“ื™ ืกื˜ื™ืคึผืึทืกื˜ ืึทืจืึธืคึผื’ืึทื ื’ ืฆื• ื“ืขืจื’ืจื™ื™ื›ืŸ ื“ื™ ืœืึธื•ืœืึทื ื“ ื•ื•ื™ ื’ืขืฉื•ื•ื™ื ื“ ื•ื•ื™ ืžืขื’ืœืขืš, ื“ืึธืก ืื™ื– ื“ื™ ืžื™ื ื™ืžื•ื - ื“ืขืจ ืึธืจื˜ ื•ื•ื• ื“ื™ ืคึฟื•ื ืงืฆื™ืข ื˜ื•ื˜ ื ื™ืฉื˜ ืคืึทืจื’ืจืขืกืขืจืŸ ืึธื“ืขืจ ืคืึทืจืžื™ื ืขืจืŸ. ืื™ืŸ ื“ืขื ืคื•ื ื˜ ื“ื™ ื“ืขืจื™ื•ื•ืึทื˜ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืœื™ื™ึทืš ืฆื• ื ื•ืœ. ื“ืขืจื™ื‘ืขืจ, ืžื™ืจ ื˜ืึธืŸ ื ื™ื˜ ื“ืึทืจืคึฟืŸ ืึท ื’ืจืึทื“ื™ืขื ื˜, ืึธื‘ืขืจ ืึทืŸ ืึทื ื˜ื™ื’ืจืึทื“ื™ืขื ื˜. ืฆื• ื’ืขืคึฟื™ื ืขืŸ ื“ื™ ืึทื ื˜ื™ื’ืจืึทื“ื™ืขื ื˜ ืื™ืจ ื ืึธืจ ื“ืึทืจืคึฟืŸ ืฆื• ืžืขืจืŸ ื“ื™ ื’ืจืึทื“ื™ืขื ื˜ ืžื™ื˜ -1 (ืžื™ื ื•ืก ืื™ื™ืŸ).

ืœืึธืžื™ืจ ื‘ืึทืฆืึธืœืŸ ื•ืคืžืขืจืงื–ืึทืžืงื™ื™ื˜ ืฆื• ื“ืขื ืคืึทืงื˜ ืึทื– ืึท ืคึฟื•ื ืงืฆื™ืข ืงืขืŸ ื”ืึธื‘ืŸ ืขื˜ืœืขื›ืข ืžื™ื ื™ืžืึท, ืื•ืŸ ื ืึธืš ืึทืจืึธืคึผื’ื™ื™ืŸ ืื™ืŸ ืื™ื™ื ืขืจ ืคื•ืŸ ื–ื™ื™ ืžื™ื˜ ื“ื™ ืึทืœื’ืขืจื™ื“ืึทื ืคืืจื’ืขืœื™ื™ื’ื˜ ืื•ื ื˜ืŸ, ืžื™ืจ ื•ื•ืขืœืŸ ื ื™ืฉื˜ ืงืขื ืขืŸ ืฆื• ื’ืขืคึฟื™ื ืขืŸ ืืŸ ืื ื“ืขืจ ืžื™ื ื™ืžื•ื, ื•ื•ืึธืก ืงืขืŸ ื–ื™ื™ืŸ ื ื™ื“ืขืจื™ืงืขืจ ื•ื•ื™ ื“ืขืจ ื’ืขืคึฟื•ื ืขืŸ. ื–ืืœ ืก ืึธืคึผืจื•ืขืŸ, ื“ืึธืก ืื™ื– ื ื™ืฉื˜ ืึท ืกืึทืงืึธื ืข ืคึฟืึทืจ ืื•ื ื“ื–! ืื™ืŸ ืื•ื ื“ื–ืขืจ ืคืึทืœ ืžื™ืจ ื–ืขื ืขืŸ ื“ื™ืœื™ื ื’ ืžื™ื˜ ืึท ืื™ื™ืŸ ืžื™ื ื™ืžื•ื, ื–ื™ื ื˜ ืื•ื ื“ื–ืขืจ ืคึฟื•ื ืงืฆื™ืข ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ืื•ื™ืฃ ื“ื™ ื’ืจืึทืคื™ืง ืื™ื– ืึท ืจืขื’ื•ืœืขืจ ืคึผืึทืจืึทื‘ืึธืœืึท. ืื•ืŸ ื•ื•ื™ ืžื™ืจ ืึทืœืข ื–ืึธืœ ื•ื•ื™ืกืŸ ื–ื™ื™ืขืจ ื’ื•ื˜ ืคื•ืŸ ืื•ื ื“ื–ืขืจ ืฉื•ืœืข ืžืื˜ืขืžืื˜ื™ืง ืงื•ืจืก, ืึท ืคึผืึทืจืึทื‘ืึธืœืึท ื”ืื˜ ื‘ืœื•ื™ื– ืื™ื™ืŸ ืžื™ื ื™ืžื•ื.

ื ืื›ื“ืขื ื•ื•ืืก ืžื™ืจ ื”ืื‘ืŸ ืื•ื™ืกื’ืขืคื•ื ืขืŸ ืคืืจื•ื•ืืก ืžื™ืจ ื“ืืจืคืŸ ื”ืื‘ืŸ ื ื’ืจืื“ื™ืขื ื˜, ืื•ืŸ ืื•ื™ืš ืื– ื“ืขืจ ื’ืจืื“ื™ืขื ื˜ ืื™ื– ื ืกืขื’ืžืขื ื˜, ื“ืืก ื”ื™ื™ืกื˜ ื ื•ื•ืขืงื˜ืึธืจ ืžื™ื˜ ื’ืขื’ืขื‘ืขื ืข ืงืืืจื“ื™ื ืึทื˜ืขืก, ื•ื•ืขืœื›ืข ื–ืขื ืขืŸ ื’ืขื ื•ื™ ื“ื™ ื–ืขืœื‘ืข ืงืืืคื™ืฆื™ืื ื˜ืŸ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ะธ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ืžื™ืจ ืงืขื ืขืŸ ื™ื ืกื˜ืจื•ืžืขื ื˜ ื’ืจืึทื“ื™ืขื ื˜ ืึทืจืึธืคึผื’ืึทื ื’.

ืื™ื™ื“ืขืจ ืื™ืš ืึธื ื”ื™ื™ื‘ืŸ, ืื™ืš ืคึฟืึธืจืฉืœืึธื’ืŸ ืœื™ื™ืขื ืขืŸ ื‘ืœื•ื™ื– ืึท ื‘ื™ืกืœ ื–ืืฆืŸ ื•ื•ืขื’ืŸ ื“ื™ ืึทืจืึธืคึผื’ืึทื ื’ ืึทืœื’ืขืจื™ื“ืึทื:

  • ืžื™ืจ ื‘ืึทืฉื˜ื™ืžืขืŸ ืื•ื™ืฃ ืึท ืคึผืกืขื•ื•ื“ืึธ-ืจืึทื ื“ืึธื ืฉื˜ื™ื™ื’ืขืจ ื“ื™ ืงืึธื•ืึธืจื“ืึทื ืึทืฅ ืคื•ืŸ ื“ื™ ืงืึธื•ืึทืคื™ืฉืึทื ืฅ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ะธ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ. ืื™ืŸ ืื•ื ื“ื–ืขืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืžื™ืจ ื•ื•ืขืœืŸ ื“ืขืคื™ื ื™ืจืŸ ืงืึธื•ืึทืคื™ืฉืึทื ืฅ ืœืขื‘ืŸ ื ื•ืœ. ื“ืึธืก ืื™ื– ืึท ืคึผืจืึธืกื˜ ืคื™ืจ, ืึธื‘ืขืจ ื™ืขื“ืขืจ ืคืึทืœ ืงืขืŸ ื”ืึธื‘ืŸ ื–ื™ื™ืŸ ืื™ื™ื’ืขื ืข ืคื™ืจ.
  • ืคื•ืŸ ืงืึธื•ืึธืจื“ืึทื ืึทื˜ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ืึทืจืึธืคึผืจืขื›ืขื ืขืŸ ื“ื™ ื•ื•ืขืจื˜ ืคื•ืŸ ื“ื™ 1 ืกื“ืจ ืคึผืึทืจื˜ื™ื™ื™ืฉ ื“ืขืจื™ื•ื•ืึทื˜ ืื™ืŸ ื“ื™ ืคื•ื ื˜ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ. ืึทื–ื•ื™, ืื•ื™ื‘ ื“ื™ ื“ืขืจื™ื•ื•ืึทื˜ ืื™ื– positive, ื“ื™ ืคึฟื•ื ืงืฆื™ืข ื™ื ืงืจื™ืกื™ื–. ื“ืขืจื™ื‘ืขืจ, ื“ื•ืจืš ืึทืจืึธืคึผืจืขื›ืขื ืขืŸ ื“ื™ ื•ื•ืขืจื˜ ืคื•ืŸ ื“ืขืจ ื“ืขืจื™ื•ื•ืึทื˜, ืžื™ืจ ื•ื•ืขืœืŸ ืžืึทืš ืื™ืŸ ื“ื™ ืคืึทืจืงืขืจื˜ ืจื™ื›ื˜ื•ื ื’ ืคื•ืŸ ื•ื•ื•ึผืงืก, ื“ืึธืก ืื™ื–, ืื™ืŸ ื“ืขืจ ืจื™ื›ื˜ื•ื ื’ ืคื•ืŸ ืึทืจืึธืคึผื’ืึทื ื’. ืื•ื™ื‘ ื“ื™ ื“ืขืจื™ื•ื•ืึทื˜ ืื™ื– ื ืขื’ืึทื˜ื™ื•ื•, ื“ื™ ืคึฟื•ื ืงืฆื™ืข ืื™ืŸ ื“ืขื ืคื•ื ื˜ ื“ื™ืงืจื™ืกืึทื– ืื•ืŸ ื“ื•ืจืš ืึทืจืึธืคึผืจืขื›ืขื ืขืŸ ื“ื™ ื•ื•ืขืจื˜ ืคื•ืŸ ื“ืขืจ ื“ืขืจื™ื•ื•ืึทื˜ ืžื™ืจ ืžืึทืš ืื™ืŸ ื“ืขืจ ืจื™ื›ื˜ื•ื ื’ ืคื•ืŸ ืึทืจืึธืคึผื’ืึทื ื’.
  • ืžื™ืจ ื“ื•ืจื›ืคื™ืจืŸ ืึท ืขื ืœืขืš ืึธืคึผืขืจืึทืฆื™ืข ืžื™ื˜ ื“ื™ ืงืึธื•ืึธืจื“ืึทื ืึทื˜ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ: ืึทืจืึธืคึผืจืขื›ืขื ืขืŸ ื“ื™ ื•ื•ืขืจื˜ ืคื•ืŸ ื“ื™ ืคึผืึทืจื˜ื™ื™ื™ืฉ ื“ืขืจื™ื•ื•ืึทื˜ ืื™ืŸ ื“ื™ ืคื•ื ื˜ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ.
  • ืื™ืŸ ืกื“ืจ ื ื™ืฉื˜ ืฆื• ืฉืคึผืจื™ื ื’ืขืŸ ืื™ื‘ืขืจ ื“ื™ ืžื™ื ื™ืžื•ื ืื•ืŸ ืคืœื™ืขืŸ ืื™ืŸ ื˜ื™ืฃ ืคึผืœืึทืฅ, ืขืก ืื™ื– ื ื™ื™ื˜ื™ืง ืฆื• ืฉื˜ืขืœืŸ ื“ื™ ืฉืจื™ื˜ ื’ืจื™ื™ืก ืื™ืŸ ื“ืขืจ ืจื™ื›ื˜ื•ื ื’ ืคื•ืŸ ืึทืจืึธืคึผื’ืึทื ื’. ืื™ืŸ ืึทืœื’ืขืžื™ื™ืŸ, ืื™ืจ ืงืขืŸ ืฉืจื™ื™ึทื‘ืŸ ืึท ื’ืึทื ืฅ ืึทืจื˜ื™ืงืœ ื•ื•ืขื’ืŸ ื•ื•ื™ ืฆื• ืฉื˜ืขืœืŸ ื“ืขื ืฉืจื™ื˜ ืจื™ื›ื˜ื™ืง ืื•ืŸ ื•ื•ื™ ืฆื• ื˜ื•ื™ืฉืŸ ืขืก ื‘ืขืฉืึทืก ื“ื™ ืึทืจืึธืคึผื’ืึทื ื’ ืคึผืจืึธืฆืขืก ืฆื• ืจืขื“ื•ืฆื™ืจืŸ ืงืึทืžืคึผื™ื•ื˜ื™ื™ืฉืึทื ืึทืœ ืงืึธืก. ืื‘ืขืจ ืื™ืฆื˜ ืžื™ืจ ื”ืึธื‘ืŸ ืึท ื‘ื™ืกืœ ืึทื ื“ืขืจืฉ ืึทืจื‘ืขื˜ ืคืึธืจื•ื™ืก ืคื•ืŸ ืื•ื ื“ื–, ืื•ืŸ ืžื™ืจ ื•ื•ืขืœืŸ ืคืขืกื˜ืฉื˜ืขืœืŸ ื“ื™ ืฉืจื™ื˜ ื’ืจื™ื™ืก ืžื™ื˜ ื“ื™ ื•ื•ื™ืกื ืฉืืคื˜ืœืขื›ืข ืื•ืคึฟืŸ ืคื•ืŸ "ืคึผืึธืงืข" ืึธื“ืขืจ, ื•ื•ื™ ื–ื™ื™ ื–ืึธื’ืŸ ืื™ืŸ ืคึผืจืึธืกื˜ ืคึผืึทืจืœืึทื ืก, ืขืžืคึผื™ืจื™ืงืึทืœืœื™.
  • ืึทืžืึธืœ ืžื™ืจ ื–ืขื ืขืŸ ืคื•ืŸ ื“ื™ ื’ืขื’ืขื‘ืŸ ืงืึธื•ืึธืจื“ืึทื ืึทืฅ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ะธ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ืึทืจืึธืคึผืจืขื›ืขื ืขืŸ ื“ื™ ื•ื•ืึทืœื•ืขืก ืคื•ืŸ ื“ื™ ื“ืขืจื™ื•ื•ืึทื˜ื™ื•ื•ื–, ืžื™ืจ ื‘ืึทืงื•ืžืขืŸ ื ื™ื™ึท ืงืึธื•ืึธืจื“ืึทื ืึทืฅ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ะธ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ. ืžื™ืจ ื ืขืžืขืŸ ื“ื™ ื•ื•ื™ื™ึทื˜ืขืจ ืฉืจื™ื˜ (ื›ื™ืกืขืจ), ืฉื•ื™ืŸ ืคื•ืŸ ื“ื™ ืงืึทืœืงื™ืึทืœื™ื™ื˜ื™ื“ ืงืึธื•ืึธืจื“ืึทื ืึทืฅ. ืื•ืŸ ืึทื–ื•ื™ ื“ืขืจ ืฆื™ืงืœ ืกื˜ืึทืจืฅ ื•ื•ื™ื“ืขืจ ืื•ืŸ ื•ื•ื™ื“ืขืจ, ื‘ื™ื– ื“ื™ ืคืืจืœืื ื’ื˜ ืงืึทื ื•ื•ืขืจื“ื–ืฉืึทื ืก ืื™ื– ืึทื˜ืฉื™ื•ื•ื“.

ืึทืœืข! ืื™ืฆื˜ ืžื™ืจ ื–ืขื ืขืŸ ื’ืจื™ื™ื˜ ืฆื• ื–ื•ื›ืŸ ื“ื™ ื“ื™ืคึผืึทืกื˜ ื”ืขืงืœ ืคื•ืŸ ื“ื™ ืžืึทืจื™ืึทื ืึท ื˜ืจืขื ื˜ืฉ. ืœืืžื™ืจ ืื ื”ื™ื™ื‘ืขืŸ.

ืงืึธื“ ืคึฟืึทืจ ื’ืจืึทื“ื™ืขื ื˜ ืึทืจืึธืคึผื’ืึทื ื’

# ะฝะฐะฟะธัˆะตะผ ั„ัƒะฝะบั†ะธัŽ ะณั€ะฐะดะธะตะฝั‚ะฝะพะณะพ ัะฟัƒัะบะฐ ะฑะตะท ะธัะฟะพะปัŒะทะพะฒะฐะฝะธั ะฑะธะฑะปะธะพั‚ะตะบะธ 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

ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ

ืžื™ืจ ื“ื™ื™ื•ื•ื“ ืฆื• ื“ื™ ื“ื ืึธ ืคื•ืŸ ื“ื™ ืžืึทืจื™ืึทื ืึท ื˜ืจืขื ื˜ืฉ ืื•ืŸ ื“ืึธืจื˜ ืžื™ืจ ื’ืขืคึฟื•ื ืขืŸ ืึทืœืข ื“ื™ ื–ืขืœื‘ืข ืงืึธื•ืึทืคื™ืฉืึทื ื˜ ื•ื•ืึทืœื•ืขืก ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ะธ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ, ืฐื ืก ืื™ ื– ื’ืขื ื•ื™ , ืฐื ืก ืื™ ื– ื’ืขืฐืข ืŸ ืฆ ื• ื“ืขืจืฐืืจื˜ืŸ .

ืœืึธืžื™ืจ ื ืขืžืขืŸ ื ืึธืš ืึท ื•ื ื˜ืขืจื˜ื•ืงื  ื–ื™ืš, ื ืึธืจ ื“ืึธืก ืžืึธืœ ืื•ื ื“ื–ืขืจ ื˜ื™ืฃ-ื™ื ืคืึธืจืžื™ื˜ืœ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืึธื ื’ืขืคื™ืœื˜ ืžื™ื˜ ืื ื“ืขืจืข ื˜ืขืงื ืึทืœืึทื“ื–ืฉื™ื–, ื ื™ื™ืžืœื™ ืึท ื‘ื™ื‘ืœื™ืึธื˜ืขืง ื ื•ืžืคึผื™.

ืงืึธื“ ืคึฟืึทืจ ื’ืจืึทื“ื™ืขื ื˜ ืึทืจืึธืคึผื’ืึทื ื’ (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)

ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ

ื˜ืึธืžืขืจ ืžื™ืจ ื˜ืึธืŸ ืขืคึผืขืก ืคืึทืœืฉ, ืึธื‘ืขืจ ื•ื•ื™ื“ืขืจ ืขืก ืื™ื– ืึท ืคึผืฉื•ื˜ "ื”ื™ื™ื-ื’ืขืฉืจื™ื‘ืŸ" ืคึฟื•ื ืงืฆื™ืข ื•ื•ืึธืก ื˜ื•ื˜ ื ื™ืฉื˜ ื ื•ืฆืŸ ื“ื™ ื‘ื™ื‘ืœื™ืึธื˜ืขืง ื ื•ืžืคึผื™ ืึทื•ื˜ืคึผืขืจืคืึธืจืžื– ื“ื™ ื›ืขื–ืฉื‘ืŸ ืฆื™ื™ื˜ ืคื•ืŸ ืึท ืคึฟื•ื ืงืฆื™ืข ื ื™ืฆืŸ ื“ื™ ื‘ื™ื‘ืœื™ืึธื˜ืขืง ื ื•ืžืคึผื™.

ืึธื‘ืขืจ ืžื™ืจ ื–ืขื ืขืŸ ื ื™ืฉื˜ ืฉื˜ื™ื™ืขื ื“ื™ืง, ืึธื‘ืขืจ ืžื™ืจ ืžืึทืš ืฆื• ืœืขืจื ืขืŸ ืืŸ ืื ื“ืขืจ ื™ืงืกื™ื™ื˜ื™ื ื’ ื•ื•ืขื’ ืฆื• ืกืึธืœื•ื•ืข ื“ื™ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ. ื˜ืจืขืคืŸ!

ืกื˜ืึธื˜ืฉืึทืกื˜ื™ืง ื’ืจืึทื“ื™ืขื ื˜ ืึทืจืึธืคึผื’ืึทื ื’

ืื™ืŸ ืกื“ืจ ืฆื• ื’ืขืฉื•ื•ื™ื ื“ ืคึฟืึทืจืฉื˜ื™ื™ืŸ ื“ืขื ืคึผืจื™ื ืฆื™ืคึผ ืคื•ืŸ ืึธืคึผืขืจืึทืฆื™ืข ืคื•ืŸ โ€‹โ€‹ืกื˜ืึธื˜ืฉืึทืกื˜ื™ืง ื’ืจืึทื“ื™ืขื ื˜ ืึทืจืึธืคึผื’ืึทื ื’, ืขืก ืื™ื– ื‘ืขืกืขืจ ืฆื• ื‘ืึทืฉื˜ื™ืžืขืŸ ื–ื™ื™ึทืŸ ื“ื™ืคืขืจืึทื ืกื™ื– ืคื•ืŸ ืคึผืจืึธืกื˜ ื’ืจืึทื“ื™ืขื ื˜ ืึทืจืึธืคึผื’ืึทื ื’. ืžื™ืจ, ืื™ืŸ ื“ืขื ืคืึทืœ ืคื•ืŸ ื’ืจืึทื“ื™ืขื ื˜ ืึทืจืึธืคึผื’ืึทื ื’, ืื™ืŸ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทื ื– ืคื•ืŸ ื“ืขืจื™ื•ื•ืึทื˜ื™ื•ื•ื– ืคื•ืŸ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ะธ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ื’ืขื•ื•ื™ื™ื ื˜ ื“ื™ ืกืึทืžื– ืคื•ืŸ ื“ื™ ื•ื•ืึทืœื•ืขืก ืคื•ืŸ ืึทืœืข ืคึฟืขื™ึดืงื™ื™ื˜ืŸ ืื•ืŸ ืืžืช ืขื ื˜ืคึฟืขืจืก ื‘ื ื™ืžืฆื ืื™ืŸ ื“ืขืจ ืžื•ืกื˜ืขืจ (ื“ืึธืก ืื™ื–, ื“ื™ ืกืึทืžื– ืคื•ืŸ ืึทืœืข ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ะธ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ). ืื™ืŸ ืกื˜ืึธื˜ืฉืึทืกื˜ื™ืง ื’ืจืึทื“ื™ืขื ื˜ ืึทืจืึธืคึผื’ืึทื ื’, ืžื™ืจ ื•ื•ืขืœืŸ ื ื™ืฉื˜ ื ื•ืฆืŸ ืึทืœืข ื“ื™ ื•ื•ืึทืœื•ืขืก ืคืึธืจืฉื˜ืขืœืŸ ืื™ืŸ ื“ืขืจ ืžื•ืกื˜ืขืจ, ืึธื‘ืขืจ ืึทื ืฉื˜ืึธื˜, ืคึผืกืขื•ื•ื“ืึธ-ืจืึทื ื“ืึทืžืœื™ ืื•ื™ืกืงืœื™ื™ึทื‘ืŸ ื“ื™ ืึทื–ื•ื™-ื’ืขืจื•ืคึฟืŸ ืžื•ืกื˜ืขืจ ืื™ื ื“ืขืงืก ืื•ืŸ ื ื•ืฆืŸ ื–ื™ื™ึทืŸ ื•ื•ืึทืœื•ืขืก.

ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืื•ื™ื‘ ื“ืขืจ ืื™ื ื“ืขืงืก ืื™ื– ื‘ืืฉืœืืกืŸ ืฆื• ื–ื™ื™ืŸ ื ื•ืžืขืจ 3 (ื“ืจื™ื™ึท), ืžื™ืจ ื ืขืžืขืŸ ื“ื™ ื•ื•ืึทืœื•ืขืก ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ะธ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ, ื“ืขืžืึธืœื˜ ืžื™ืจ ืคืึทืจื‘ื™ื™ึทื˜ืŸ ื“ื™ ื•ื•ืึทืœื•ืขืก ืื™ืŸ ื“ื™ ื“ืขืจื™ื•ื•ืึทื˜ ื™ืงื•ื•ื™ื™ื–ืฉืึทื ื– ืื•ืŸ ื‘ืึทืฉื˜ื™ืžืขืŸ ื ื™ื™ึท ืงืึธื•ืึธืจื“ืึทื ืึทืฅ. ื“ืขืจื ืึธืš, ื ืึธืš ื‘ืืฉืœืืกืŸ ื“ื™ ืงืึธื•ืึธืจื“ืึทื ืึทืฅ, ืžื™ืจ ื•ื•ื™ื“ืขืจ ืคึผืกืขื•ื•ื“ืึธ-ืจืึทื ื“ืึทืžืœื™ ื‘ืึทืฉื˜ื™ืžืขืŸ ื“ื™ ืžื•ืกื˜ืขืจ ืื™ื ื“ืขืงืก, ืคืึทืจื‘ื™ื™ึทื˜ืŸ ื“ื™ ื•ื•ืึทืœื•ืขืก ืงืึธืจืึทืกืคึผืึทื ื“ื™ื ื’ ืฆื• ื“ื™ ืื™ื ื“ืขืงืก ืื™ืŸ ืคึผืึทืจื˜ื™ื™ื™ืฉ ื“ื™ืคืขืจืขื ื˜ืฉืึทืœ ื™ืงื•ื•ื™ื™ื–ืฉืึทื ื–, ืื•ืŸ ื‘ืึทืฉื˜ื™ืžืขืŸ ื“ื™ ืงืึธื•ืึธืจื“ืึทื ืึทืฅ ืื•ื™ืฃ ืึท ื ื™ื™ึทืข ื•ื•ืขื’. ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ะธ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ืืื–"ื• ื• ื‘ื™ื– ื“ื™ ืงืึทื ื•ื•ืขืจื“ื–ืฉืึทื ืก ื˜ื•ืจื ืก ื’ืจื™ืŸ. ืื™ืŸ ืขืจืฉื˜ืขืจ ื‘ืœื™ืง, ืขืก ืงืขืŸ ื ื™ืฉื˜ ื•ื™ืกืงื•ืžืขืŸ ื•ื•ื™ ื“ืึธืก ืงืขืŸ ืึทืจื‘ืขื˜ ื‘ื™ื™ึท ืึทืœืข, ืึธื‘ืขืจ ืขืก ื˜ื•ื˜. ืขืก ืื™ื– ืืžืช ืึทื– ืขืก ืื™ื– ื›ื“ืื™ ืฆื• ื‘ืืžืขืจืงืŸ ืึทื– ื“ืขืจ ื˜ืขื•ืช ื˜ื•ื˜ ื ื™ืฉื˜ ืคืึทืจืžื™ื ืขืจืŸ ืžื™ื˜ ื™ืขื“ืขืจ ืฉืจื™ื˜, ืึธื‘ืขืจ ืขืก ืื™ื– ื–ื™ื›ืขืจ ืึท ื˜ืขื ื“ืขื ืฅ.

ื•ื•ืึธืก ื–ืขื ืขืŸ ื“ื™ ืึทื“ื•ื•ืึทื ื˜ื™ื“ื–ืฉื™ื– ืคื•ืŸ ืกื˜ืึธื˜ืฉืึทืกื˜ื™ืง ื’ืจืึทื“ื™ืขื ื˜ ืึทืจืึธืคึผื’ืึทื ื’ ืื™ื‘ืขืจ ืงืึทื ื•ื•ืขื ืฉืึทื ืึทืœ? ืื•ื™ื‘ ืื•ื ื“ื–ืขืจ ืžื•ืกื˜ืขืจ ื’ืจื™ื™ืก ืื™ื– ื–ื™ื™ืขืจ ื’ืจื•ื™ืก ืื•ืŸ ื’ืขืžืืกื˜ืŸ ืื™ืŸ ื˜ืขื ืก ืคื•ืŸ ื˜ื•ื™ื–ื ื˜ืขืจ ืคื•ืŸ ื•ื•ืึทืœื•ืขืก, ืขืก ืื™ื– ืคื™ืœ ื’ืจื™ื ื’ืขืจ ืฆื• ืคึผืจืึธืฆืขืก, ื–ืึธื’ืŸ, ืึท ื˜ืจืึทืค - ื˜ื•ื™ื–ื ื˜ ืคื•ืŸ ื–ื™ื™, ืืœื ื•ื•ื™ ื“ื™ ื’ืื ืฆืข ืžื•ืกื˜ืขืจ. ื“ืึธืก ืื™ื– ื•ื•ื• ืกื˜ืึธื˜ืฉืึทืกื˜ื™ืง ื’ืจืึทื“ื™ืขื ื˜ ืึทืจืึธืคึผื’ืึทื ื’ ืงื•ืžื˜ ืื™ืŸ ืฉืคึผื™ืœ. ืื™ืŸ ืื•ื ื“ื–ืขืจ ืคืึทืœ, ืคื•ืŸ ืงื•ืจืก, ืžื™ืจ ื•ื•ืขืœืŸ ื ื™ืฉื˜ ื‘ืึทืžืขืจืงืŸ ืคื™ืœ ืคื•ืŸ ืึท ื—ื™ืœื•ืง.

ื–ืืœ ืก ืงื•ืง ืื™ืŸ ื“ื™ ืงืึธื“.

ืงืึธื“ ืคึฟืึทืจ ืกื˜ืึธื˜ืฉืึทืกื˜ื™ืง ื’ืจืึทื“ื™ืขื ื˜ ืึทืจืึธืคึผื’ืึทื ื’

# ะพะฟั€ะตะดะตะปะธะผ ั„ัƒะฝะบั†ะธัŽ ัั‚ะพั….ะณั€ะฐะด.ัˆะฐะณะฐ
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])

ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ

ืžื™ืจ ืงื•ืงืŸ ืงืขืจืคืึทืœื™ ืื•ื™ืฃ ื“ื™ ืงืึธื•ืึทืคื™ืฉืึทื ืฅ ืื•ืŸ ื›ืึทืคึผืŸ ื–ื™ืš ืฆื• ืคืจืขื’ืŸ ื“ื™ ืงืฉื™ื "ื•ื•ื™ ืงืขืŸ ื“ืึธืก ื–ื™ื™ืŸ?" ืžื™ืจ ื”ืึธื‘ืŸ ืื ื“ืขืจืข ืงืึธื•ืึทืคื™ืฉืึทื ื˜ ื•ื•ืึทืœื•ืขืก ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ะธ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ. ืืคึฟืฉืจ ืกื˜ืึธื˜ืฉืึทืกื˜ื™ืง ื’ืจืึทื“ื™ืขื ื˜ ืึทืจืึธืคึผื’ืึทื ื’ ื”ืื˜ ื’ืขืคึฟื•ื ืขืŸ ืžืขืจ ืึธืคึผื˜ื™ืžืึทืœ ืคึผืึทืจืึทืžืขื˜ืขืจืก ืคึฟืึทืจ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ? ืœื™ื™ื“ืขืจ ื ื™ื™ืŸ. ืขืก ืื™ื– ื’ืขื ื•ื’ ืฆื• ืงื•ืงืŸ ืื™ืŸ ื“ื™ ืกืึทื›ืึทืงืœ ืคื•ืŸ ืกืงื•ื•ืขืจื“ ื“ื™ื•ื•ื™ื™ื™ืฉืึทื ื– ืื•ืŸ ื–ืขืŸ ืึทื– ืžื™ื˜ ื ื™ื™ึทืข ืงืึธื•ืึทืคื™ืฉืึทื ืฅ ื•ื•ืึทืœื•ืขืก, ื“ืขืจ ื˜ืขื•ืช ืื™ื– ื’ืจืขืกืขืจ. ืžื™ืจ ื–ืขื ืขืŸ ืื™ืŸ ืงื™ื™ืŸ ื™ื™ึทืœืŸ ืฆื• ืคืึทืจืฆื•ื•ื™ื™ืคืœื•ื ื’. ื–ืืœ ืก ื‘ื•ื™ืขืŸ ืึท ื’ืจืึทืคื™ืง ืคื•ืŸ ื“ื™ ื˜ืขื•ืช ืขื ื“ืขืจื•ื ื’.

ืงืึธื“ ืคึฟืึทืจ ืคึผืœืึทื˜ื™ื ื’ ื“ื™ ืกืึทื›ืึทืงืœ ืคื•ืŸ ืกืงื•ื•ืขืจื“ ื“ื™ื•ื•ื™ื™ื™ืฉืึทื ื– ืื™ืŸ ืกื˜ืึธื˜ืฉืึทืกื˜ื™ืง ื’ืจืึทื“ื™ืขื ื˜ ืึทืจืึธืคึผื’ืึทื ื’

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 "ืกืึทื›ืึทืงืœ ืคื•ืŸ ืกืงื•ื•ืขืจื“ ื“ื™ื•ื•ื™ื™ื™ืฉืึทื ื– ื‘ืขืฉืึทืก ืกื˜ืึธื˜ืฉืึทืกื˜ื™ืง ื’ืจืึทื“ื™ืขื ื˜ ืึทืจืึธืคึผื’ืึทื ื’"

ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ

ืงื•ืงืŸ ืื™ืŸ ื“ื™ ืคึผืœืึทืŸ, ืึทืœืฅ ืคืืœืก ืื™ืŸ ืคึผืœืึทืฅ ืื•ืŸ ืื™ืฆื˜ ืžื™ืจ ื•ื•ืขืœืŸ ืคืึทืจืจื™ื›ื˜ืŸ ืึทืœืฅ.

ืึทื–ื•ื™ ื•ื•ืึธืก ืื™ื– ื’ืขืฉืขืŸ? ื“ื™ ืคืืœื’ืขื ื“ืข ื’ืขื˜ืจืืคืŸ. ื•ื•ืขืŸ ืžื™ืจ ืจืึทื ื“ืึทืžืœื™ ืกืขืœืขืงื˜ื™ืจืŸ ืึท ื—ื•ื“ืฉ, ืขืก ืื™ื– ืคึฟืึทืจ ื“ื™ ืื•ื™ืกื’ืขืงืœื™ื‘ืŸ ื—ื•ื“ืฉ ืึทื– ืื•ื ื“ื–ืขืจ ืึทืœื’ืขืจื™ื“ืึทื ื–ื•ื›ื˜ ืฆื• ืจืขื“ื•ืฆื™ืจืŸ ื“ื™ ื˜ืขื•ืช ืื™ืŸ ืงืึทืœืงื™ืึทืœื™ื™ื˜ื™ื ื’ ืจืขื•ื•ืขืš. ื“ืขืจื ืึธืš ืžื™ืจ ืื•ื™ืกืงืœื™ื™ึทื‘ืŸ ืืŸ ืื ื“ืขืจ ื—ื•ื“ืฉ ืื•ืŸ ืื™ื‘ืขืจื—ื–ืจืŸ ื“ื™ ื›ืขื–ืฉื‘ืŸ, ืึธื‘ืขืจ ืžื™ืจ ืจืขื“ื•ืฆื™ืจืŸ ื“ื™ ื˜ืขื•ืช ืคึฟืึทืจ ื“ื™ ืจื’ืข ืื•ื™ืกื’ืขืงืœื™ื‘ืŸ ื—ื•ื“ืฉ. ืื™ืฆื˜ ื’ืขื“ืขื ืงืขืŸ ืึทื– ื“ื™ ืขืจืฉื˜ืขืจ ืฆื•ื•ื™ื™ ื—ื“ืฉื™ื ืึธืคึผื ื™ื™ื’ืŸ ื‘ืื˜ื™ื™ื˜ื™ืง ืคื•ืŸ ื“ื™ ืฉื•ืจื” ืคื•ืŸ ื“ื™ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ. ื“ืขื ืžื™ื˜ืœ ืึทื– ื•ื•ืขืŸ ืื™ื™ื ืขืจ ืคื•ืŸ ื“ื™ ืฆื•ื•ื™ื™ ื—ื“ืฉื™ื ืื™ื– ืื•ื™ืกื’ืขืงืœื™ื‘ืŸ, ื“ื•ืจืš ืจื™ื“ื•ืกื™ื ื’ ื“ื™ ื˜ืขื•ืช ืคื•ืŸ ื™ืขื“ืขืจ ืคื•ืŸ ื–ื™ื™, ืื•ื ื“ื–ืขืจ ืึทืœื’ืขืจื™ื“ืึทื ืขืžืขืก ื™ื ืงืจื™ืกื™ื– ื“ื™ ื˜ืขื•ืช ืคึฟืึทืจ ื“ื™ ื’ืื ืฆืข ืžื•ืกื˜ืขืจ. ืึทื–ื•ื™ ื•ื•ืึธืก ืฆื• ื˜ืึธืŸ? ื“ืขืจ ืขื ื˜ืคืขืจ ืื™ื– ืคึผืฉื•ื˜: ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืจืขื“ื•ืฆื™ืจืŸ ื“ื™ ืึทืจืึธืคึผื’ืึทื ื’ ืฉืจื™ื˜. ื ืึธืš ืึทืœืข, ื“ื•ืจืš ืจื™ื“ื•ืกื™ื ื’ ื“ื™ ืึทืจืึธืคึผื’ืึทื ื’ ืฉืจื™ื˜, ื“ืขืจ ื˜ืขื•ืช ื•ื•ืขื˜ ืื•ื™ืš ื”ืึทืœื˜ืŸ "ืฉืคึผืจื™ื ื’ืขืŸ" ืึทืจื•ื™ืฃ ืื•ืŸ ืึทืจืึธืคึผ. ืึธื“ืขืจ ื’ืึทื ืฅ, ื“ื™ "ืฉืคึผืจื™ื ื’ืขืŸ" ื˜ืขื•ืช ื•ื•ืขื˜ ื ื™ืฉื˜ ื”ืึทืœื˜ืŸ, ืึธื‘ืขืจ ืขืก ื•ื•ืขื˜ ื ื™ืฉื˜ ื˜ืึธืŸ ืึทื–ื•ื™ ื’ืขืฉื•ื•ื™ื ื“ :) ื–ืืœ โ€‹โ€‹ืก ื˜ืฉืขืง.

ืงืึธื“ ืฆื• ืœื•ื™ืคืŸ 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 "ืกืึทื›ืึทืงืœ ืคื•ืŸ ืกืงื•ื•ืขืจื“ ื“ื™ื•ื•ื™ื™ื™ืฉืึทื ื– ื‘ืขืฉืึทืก ืกื˜ืึธื˜ืฉืึทืกื˜ื™ืง ื’ืจืึทื“ื™ืขื ื˜ ืึทืจืึธืคึผื’ืึทื ื’ (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 ืกื˜ืขืคึผืก)"

ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ

ืื™ืŸ ื“ื™ ืึธื ื”ื™ื™ื‘ ืคื•ืŸ ื“ื™ ืึทืจืึธืคึผื’ืึทื ื’, ืžื™ืจ ืึธื‘ืกืขืจื•ื•ื™ืจืŸ ืึท ืคืขืจืœื™ ืžื•ื ื“ื™ืจ ืื•ืŸ ืึทืจืึธืคืึทื ื’ ืคืึทืจืงืœืขื ืขืจืŸ ืื™ืŸ ื˜ืขื•ืช. ืื™ืŸ ื“ื™ ืœืขืฆื˜ืข ื™ื˜ืขืจื™ื™ืฉืึทื ื–, ืžื™ืจ ื–ืขืŸ ืึทื– ื“ืขืจ ื˜ืขื•ืช ื’ื™ื™ื˜ ืึทืจื•ื ืื•ืŸ ืึทืจื•ื ื“ื™ ื•ื•ืขืจื˜ ืคื•ืŸ 1,475 ืื•ืŸ ืื™ืŸ ืขื˜ืœืขื›ืข ืžืึธื•ืžืึทื ืฅ ืืคื™ืœื• ื™ืงื•ื•ืึทืœื– ื“ืขื ืึธืคึผื˜ื™ืžืึทืœ ื•ื•ืขืจื˜, ืึธื‘ืขืจ ื“ืขืžืึธืœื˜ ืขืก ื ืึธืš ื’ื™ื™ื˜ ืึทืจื•ื™ืฃ ... ืื™ืš ืื™ื‘ืขืจื—ื–ืจืŸ, ืื™ืจ ืงืขื ืขืŸ ืฉืจื™ื™ึทื‘ืŸ ืึทืจืึธืคึผ ื“ื™ ื•ื•ืึทืœื•ืขืก ืคื•ืŸ ื“ื™ ืงืึธื•ืึทืคื™ืฉืึทื ืฅ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ ะธ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ, ืื•ืŸ ื“ืขืžืึธืœื˜ ืื•ื™ืกืงืœื™ื™ึทื‘ืŸ ื“ื™ ืคึฟืึทืจ ื•ื•ืึธืก ื“ื™ ื˜ืขื•ืช ืื™ื– ืžื™ื ื™ืžืึทืœ. ืึธื‘ืขืจ, ืžื™ืจ ื”ืึธื‘ืŸ ืึท ืžืขืจ ืขืจื ืกื˜ ืคึผืจืึธื‘ืœืขื: ืžื™ืจ ื”ืึธื‘ืŸ ืฆื• ื ืขืžืขืŸ 80 ื˜ื•ื™ื–ื ื˜ ืกื˜ืขืคึผืก (ื–ืขืŸ ืงืึธื“) ืฆื• ื‘ืึทืงื•ืžืขืŸ ื•ื•ืึทืœื•ืขืก ื ืึธืขื ื˜ ืฆื• ืึธืคึผื˜ื™ืžืึทืœ. ืื•ืŸ ื“ืึธืก ืื™ื– ืฉื•ื™ืŸ ืงืึทื ื˜ืจืึทื“ื™ืงืฅ ื“ืขื ื’ืขื“ืึทื ืง ืคื•ืŸ ืฉืคึผืึธืจืŸ ืงืึทืžืคึผื™ืึทื˜ื™ื™ืฉืึทืŸ ืฆื™ื™ื˜ ืžื™ื˜ ืกื˜ืึธื˜ืฉืึทืกื˜ื™ืง ื’ืจืึทื“ื™ืขื ื˜ ืึทืจืึธืคึผื’ืึทื ื’ ืงืึธืจืขื•ื• ืฆื• ื’ืจืึทื“ื™ืขื ื˜ ืึทืจืึธืคึผื’ืึทื ื’. ื•ื•ืึธืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ืงืขืจืขืงื˜ืึทื“ ืื•ืŸ ื™ืžืคึผืจื•ื•ื•ื“? ืขืก ืื™ื– ื ื™ืฉื˜ ืฉื•ื•ืขืจ ืฆื• ื‘ืึทืžืขืจืงืŸ ืึทื– ืื™ืŸ ื“ื™ ืขืจืฉื˜ืขืจ ื™ื˜ืขืจื™ื™ืฉืึทื ื– ืžื™ืจ ื–ืขื ืขืŸ ื–ื™ื›ืขืจ ืึทืจืึธืคึผ ืื•ืŸ ื“ืขืจื™ื‘ืขืจ, ืžื™ืจ ื–ืึธืœ ืœืึธื–ืŸ ืึท ื’ืจื•ื™ืก ืฉืจื™ื˜ ืื™ืŸ ื“ื™ ืขืจืฉื˜ืขืจ ื™ื˜ืขืจื™ื™ืฉืึทื ื– ืื•ืŸ ืจืขื“ื•ืฆื™ืจืŸ ื“ื™ ืฉืจื™ื˜ ื•ื•ืขืŸ ืžื™ืจ ื’ื™ื™ืŸ ืคืึธืจื•ื™ืก. ืžื™ืจ ื•ื•ืขืœืŸ ื ื™ืฉื˜ ื˜ืึธืŸ ื“ืึธืก ืื™ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ - ืขืก ืื™ื– ืฉื•ื™ืŸ ืฆื• ืœืึทื ื’. ื“ื™ ื•ื•ืืก ื•ื•ื™ืœืŸ ืงืขื ืขืŸ ื˜ืจืึทื›ื˜ืŸ ืคึฟืึทืจ ื–ื™ืš ื•ื•ื™ ืฆื• ื˜ืึธืŸ ื“ืึธืก, ื“ืึธืก ืื™ื– ื ื™ืฉื˜ ืฉื•ื•ืขืจ :)

ืื™ืฆื˜ ืœืึธื–ืŸ ืื•ื ื“ื– ื“ื•ืจื›ืคื™ืจืŸ ืกื˜ืึธื˜ืฉืึทืกื˜ื™ืง ื’ืจืึทื“ื™ืขื ื˜ ืึทืจืึธืคึผื’ืึทื ื’ ื ื™ืฆืŸ ื“ื™ ื‘ื™ื‘ืœื™ืึธื˜ืขืง ื ื•ืžืคึผื™ (ืื•ืŸ ืœืืžื™ืจ ื–ื™ืš ื ื™ืฉื˜ ืฉื˜ืจื•ื™ื›ืœืขืŸ ืื™ื‘ืขืจ ื“ื™ ืฉื˜ื™ื™ื ืขืจ ื•ื•ืืก ืžื™ืจ ื”ืื‘ืŸ ืคืจื™ืขืจ ืื™ื“ืขื ื˜ื™ืคื™ืฆื™ืจื˜)

ืงืึธื“ ืคึฟืึทืจ ืกื˜ืึธื˜ืฉืึทืกื˜ื™ืง ื’ืจืึทื“ื™ืขื ื˜ ืึทืจืึธืคึผื’ืึทื ื’ (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

ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื™ืงื•ื•ื™ื™ื–ืฉืึทืŸ ืคื•ืŸ ืคึผืฉื•ื˜ ืœื™ื ืขืึทืจ ืจืึทื’ืจืขืฉืึทืŸ

ื“ื™ ื•ื•ืึทืœื•ืขืก ื–ืขื ืขืŸ ื›ึผืžืขื˜ ื“ื™ ื–ืขืœื‘ืข ื•ื•ื™ ื•ื•ืขืŸ ืื™ืจ ืึทืจืึธืคึผื’ื™ื™ืŸ ืึธืŸ ื ื•ืฆืŸ ื ื•ืžืคึผื™. ืึธื‘ืขืจ, ื“ืึธืก ืื™ื– ืœืึทื“ื–ืฉื™ืงืึทืœ.

ืœืึธืžื™ืจ ื’ืขืคึฟื™ื ืขืŸ ืื•ื™ืก ื•ื•ื™ ืœืึทื ื’ ืกื˜ืึธื˜ืฉืึทืกื˜ื™ืง ื’ืจืึทื“ื™ืขื ื˜ ื“ื™ืกืขื ืฅ ื’ืขื ื•ืžืขืŸ ืื•ื ื“ื–.

ืงืึธื•ื“ ืคึฟืึทืจ ื“ื™ื˜ืขืจืžืึทื ื™ื ื’ 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/ru/post/471458

habr.com/ru/post/307312

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

6. ื ื•ืžืคึผื™ ื‘ื™ื‘ืœื™ืึธื˜ืขืง

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

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’