рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ

рд▓реЗрдЦ рдПрдХрд╛ рд╕рд╛рдзреНрдпрд╛ (рдЬреЛрдбрд▓реЗрд▓реНрдпрд╛) рдкреНрд░рддрд┐рдЧрдорди рд░реЗрд╖реЗрдЪреЗ рдЧрдгрд┐рддреАрдп рд╕рдореАрдХрд░рдг рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдЕрдиреЗрдХ рдорд╛рд░реНрдЧрд╛рдВрд╡рд░ рдЪрд░реНрдЪрд╛ рдХрд░рддреЛ.

рдпреЗрдереЗ рдЪрд░реНрдЪрд╛ рдХреЗрд▓реЗрд▓реЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреНрдпрд╛рдЪреНрдпрд╛ рд╕рд░реНрд╡ рдкрджреНрдзрддреА рдХрд┐рдорд╛рди рд╡рд░реНрдЧ рдкрджреНрдзрддреАрд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдЖрд╣реЗрдд. рдЪрд▓рд╛ рдЦрд╛рд▓реАрд▓ рдкрджреНрдзрддреА рджрд░реНрд╢рд╡реВрдпрд╛:

  • рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рддреНрдордХ рдЙрдкрд╛рдп
  • рдЧреНрд░реЗрдбрд┐рдпрдВрдЯ рдбрд┐рд╕реЗрдВрдЯ
  • рд╕реНрдЯреЛрдХрд╛рд╕реНрдЯрд┐рдХ рдЧреНрд░реЗрдбрд┐рдпрдВрдЯ рдбрд┐рд╕реЗрдВрдЯ

рд╕рд░рд│ рд░реЗрд╖реЗрдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреНрдпрд╛рдЪреНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдкрджреНрдзрддреАрд╕рд╛рдареА, рд▓реЗрдЦ рд╡рд┐рд╡рд┐рдз рдлрдВрдХреНрд╢рдиреНрд╕ рдкреНрд░рджрд╛рди рдХрд░рддреЛ, рдЬреЗ рдкреНрд░рд╛рдореБрдЦреНрдпрд╛рдиреЗ рд▓рд╛рдпрдмреНрд░рд░реА рди рд╡рд╛рдкрд░рддрд╛ рд▓рд┐рд╣рд┐рд▓реЗрд▓реНрдпрд╛рдВрдордзреНрдпреЗ рд╡рд┐рднрд╛рдЧрд▓реЗ рдЬрд╛рддрд╛рдд. рд╕реБрдиреНрди рдЖрдгрд┐ рдЬреЗ рдЧрдгрдиреЗрд╕рд╛рдареА рд╡рд╛рдкрд░рддрд╛рдд рд╕реБрдиреНрди. рдЕрд╕рд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдЖрд╣реЗ рдХреА рдХреБрд╢рд▓ рд╡рд╛рдкрд░ рд╕реБрдиреНрди рд╕рдВрдЧрдгрдХреАрдп рдЦрд░реНрдЪ рдХрдореА рдХрд░реЗрд▓.

рд▓реЗрдЦрд╛рдд рджрд┐рд▓реЗрд▓реЗ рд╕рд░реНрд╡ рдХреЛрдб рд▓рд┐рд╣рд┐рд▓реЗрд▓реЗ рдЖрд╣реЗрдд рдЕрдЬрдЧрд░ 2.7 рд╡рд╛рдкрд░рдд рдЖрд╣реЗ рдЬреНрдпреБрдкрд┐рдЯрд░ рдиреЛрдЯрдмреБрдХ. рдирдореБрдирд╛ рдбреЗрдЯрд╛рд╕рд╣ рд╕реНрддреНрд░реЛрдд рдХреЛрдб рдЖрдгрд┐ рдлрд╛рдЗрд▓ рд╡рд░ рдкреЛрд╕реНрдЯ рдХреЗрд▓реА рдЖрд╣реЗ рдЧрд┐рдереБрдм

рдЖрд░реНрдЯрд┐рдлрд┐рд╢рд┐рдпрд▓ рдЗрдВрдЯреЗрд▓рд┐рдЬреЗрдВрд╕ - рдорд╢рд┐рди рд▓рд░реНрдирд┐рдВрдЧ рдпрд╛ рдЕрддреНрдпрдВрдд рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рднрд╛рдЧрд╛рдЪреНрдпрд╛ рдЕрднреНрдпрд╛рд╕рд╛рдд рд╣рд│реВрд╣рд│реВ рдкреНрд░рднреБрддреНрд╡ рдорд┐рд│рд╡реВ рд▓рд╛рдЧрд▓реЗрд▓реНрдпрд╛ рдирд╡рд╢рд┐рдХреНрдпрд╛рдВрд╕рд╛рдареА рдЖрдгрд┐ рдЬреНрдпрд╛рдВрдиреА рд╣рд│реВрд╣рд│реВ рдкреНрд░рд╛рд╡реАрдгреНрдп рдорд┐рд│рд╡рд╛рдпрд▓рд╛ рд╕реБрд░реБрд╡рд╛рдд рдХреЗрд▓реА рдЖрд╣реЗ рдЕрд╢рд╛ рджреЛрдШрд╛рдВрд╕рд╛рдареА рд╣рд╛ рд▓реЗрдЦ рдЕрдзрд┐рдХ рдЖрд╣реЗ.

рд╕рд╛рдордЧреНрд░реА рд╕реНрдкрд╖реНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА рдПрдХ рдЕрддрд┐рд╢рдп рд╕рд╛рдзреЗ рдЙрджрд╛рд╣рд░рдг рд╡рд╛рдкрд░рддреЛ.

рдЙрджрд╛рд╣рд░рдг рдкрд░рд┐рд╕реНрдерд┐рддреА

рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдкрд╛рдЪ рдореВрд▓реНрдпреЗ рдЖрд╣реЗрдд рдЬреА рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡ рджрд░реНрд╢рд╡рддрд╛рдд Y рдкрд╛рд╕реВрди X (рддрдХреНрддрд╛ рдХреНрд░. рез):

рддрдХреНрддрд╛ рдХреНрд░рдорд╛рдВрдХ 1 тАЬрдЙрджрд╛рд╣рд░рдг рдЕрдЯреАтАЭ

рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ

рдЖрдкрдг рдореВрд▓реНрдпреЗ рдЧреГрд╣реАрдд рдзрд░реВ рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ рд╡рд░реНрд╖рд╛рдЪрд╛ рдорд╣рд┐рдирд╛ рдЖрд╣реЗ, рдЖрдгрд┐ рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ - рдпрд╛ рдорд╣рд┐рдиреНрдпрд╛рдд рдорд╣рд╕реВрд▓. рджреБрд╕рд▒реНрдпрд╛ рд╢рдмреНрджрд╛рдВрдд, рдорд╣рд╕реВрд▓ рд╡рд░реНрд╖рд╛рдЪреНрдпрд╛ рдорд╣рд┐рдиреНрдпрд╛рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдЕрд╕рддреЛ рдЖрдгрд┐ рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ - рдПрдХрдорд╛рддреНрд░ рдЪрд┐рдиреНрд╣ рдЬреНрдпрд╛рд╡рд░ рдорд╣рд╕реВрд▓ рдЕрд╡рд▓рдВрдмреВрди рдЖрд╣реЗ.

рд╡рд░реНрд╖рд╛рдЪреНрдпрд╛ рдорд╣рд┐рдиреНрдпрд╛рд╡рд░реАрд▓ рдХрдорд╛рдИрдЪреНрдпрд╛ рд╕рд╢рд░реНрдд рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡рд╛рдЪреНрдпрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдирд╛рддреВрди рдЖрдгрд┐ рдореВрд▓реНрдпрд╛рдВрдЪреНрдпрд╛ рд╕рдВрдЦреНрдпреЗрдЪреНрдпрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдирд╛рддреВрди, рдЙрджрд╛рд╣рд░рдг рдЕрд╕реЗрдЪ рдЖрд╣реЗ - рддреНрдпрд╛рдкреИрдХреА рдлрд╛рд░рдЪ рдХрдореА рдЖрд╣реЗрдд. рддрдерд╛рдкрд┐, рдЕрд╢рд╛ рд╕рд░рд▓реАрдХрд░рдгрд╛рдореБрд│реЗ рддреЗ рд╢рдХреНрдп рд╣реЛрдИрд▓, рдЬрд╕реЗ рддреЗ рдореНрд╣рдгрддрд╛рдд, рдирд╡рд╢рд┐рдХреНрдпрд╛ рдЖрддреНрдорд╕рд╛рдд рдХрд░рдгрд╛рд░реА рд╕рд╛рдордЧреНрд░реА рдиреЗрд╣рдореА рд╕рд╣рдЬрддреЗрдиреЗ рдирд╛рд╣реА рд╣реЗ рд╕реНрдкрд╖реНрдЯ рдХрд░рдгреЗ. рдЖрдгрд┐ рд╕рдВрдЦреНрдпрд╛рдВрдЪреА рд╕рд╛рдзреЗрдкрдгрд╛ рджреЗрдЦреАрд▓ рдЬреНрдпрд╛рдВрдирд╛ рд▓рдХреНрд╖рдгреАрдп рд╢реНрд░рдо рдЦрд░реНрдЪрд╛рд╢рд┐рд╡рд╛рдп рдХрд╛рдЧрджрд╛рд╡рд░ рдЙрджрд╛рд╣рд░рдг рд╕реЛрдбрд╡рд╛рдпрдЪреЗ рдЖрд╣реЗ рддреНрдпрд╛рдВрдирд╛ рдЕрдиреБрдорддреА рджреЗрдИрд▓.

рдЙрджрд╛рд╣рд░рдгрд╛рдд рджрд┐рд▓реЗрд▓реЗ рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡ рдлреЙрд░реНрдордЪреНрдпрд╛ рд╕рд╛рдзреНрдпрд╛ (рдЬреЛрдбрд▓реЗрд▓реНрдпрд╛) рдкреНрд░рддрд┐рдЧрдорди рд░реЗрд╖реЗрдЪреНрдпрд╛ рдЧрдгрд┐рддреАрдп рд╕рдореАрдХрд░рдгрд╛рджреНрд╡рд╛рд░реЗ рдЕрдВрджрд╛рдЬреЗ рдЪрд╛рдВрдЧрд▓реЗ рдард░рд╡рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ рдЕрд╕реЗ рдЧреГрд╣реАрдд рдзрд░реВ рдпрд╛:

рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ

рдЬреЗрдереЗ рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ рдЬреНрдпрд╛ рдорд╣рд┐рдиреНрдпрд╛рдд рдорд╣рд╕реВрд▓ рдкреНрд░рд╛рдкреНрдд рдЭрд╛рд▓рд╛ рддреЛ рдорд╣рд┐рдирд╛ рдЖрд╣реЗ, рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ - рдорд╣рд┐рдиреНрдпрд╛рд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдорд╣рд╕реВрд▓, рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ ╨╕ рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ рдЕрдВрджрд╛рдЬрд┐рдд рд░реЗрд╖реЗрдЪреЗ рдкреНрд░рддрд┐рдЧрдорди рдЧреБрдгрд╛рдВрдХ рдЖрд╣реЗрдд.

рдЧреБрдгрд╛рдВрдХ рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛ рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ рд╕рд╣рд╕рд╛ рдЕрдВрджрд╛рдЬреЗ рд░реЗрд╖реЗрдЪрд╛ рдЙрддрд╛рд░ рдХрд┐рдВрд╡рд╛ рдЧреНрд░реЗрдбрд┐рдпрдВрдЯ рдореНрд╣рдгрддрд╛рдд; рддреА рд░рдХреНрдХрдо рджрд░реНрд╢рд╡рддреЗ рдЬреНрдпрд╛рджреНрд╡рд╛рд░реЗ рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ рдЬреЗрд╡реНрд╣рд╛ рддреЗ рдмрджрд▓рддреЗ рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ.

рд╕рд╛рд╣рдЬрд┐рдХрдЪ, рдЙрджрд╛рд╣рд░рдгрд╛рддреАрд▓ рдЖрдордЪреЗ рдХрд╛рд░реНрдп рд╕рдореАрдХрд░рдгрд╛рддреАрд▓ рдЕрд╕реЗ рдЧреБрдгрд╛рдВрдХ рдирд┐рд╡рдбрдгреЗ рдЖрд╣реЗ рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ ╨╕ рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ, рдЬреНрдпрд╛рд╡рд░ рдЦрд▒реНрдпрд╛ рдЙрддреНрддрд░рд╛рдВрдкрд╛рд╕реВрди рдорд╣рд┐рдиреНрдпрд╛рдиреБрд╕рд╛рд░ рдЖрдордЪреНрдпрд╛ рдЧрдгрдирд╛ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдорд╣рд╕реВрд▓ рдореВрд▓реНрдпрд╛рдВрдЪреЗ рд╡рд┐рдЪрд▓рди, рдЙрджрд╛. рдирдореБрдиреНрдпрд╛рдд рд╕рд╛рджрд░ рдХреЗрд▓реЗрд▓реА рдореВрд▓реНрдпреЗ рдХрд┐рдорд╛рди рдЕрд╕рддреАрд▓.

рдХрд┐рдорд╛рди рдЪреМрд░рд╕ рдкрджреНрдзрдд

рдХрд┐рдорд╛рди рд╡рд░реНрдЧ рдкрджреНрдзрддреАрдиреБрд╕рд╛рд░, рд╡рд┐рдЪрд▓рдирд╛рдЪреЗ рд╡рд░реНрдЧреАрдХрд░рдг рдХрд░реВрди рдореЛрдЬрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ. рд╣реЗ рддрдВрддреНрд░ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рд╡рд┐рдЪрд▓рдирд╛рдВрдЪреЗ рдкрд░рд╕реНрдкрд░ рд░рджреНрджреАрдХрд░рдг рдЯрд╛рд│рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ рдЬрд░ рддреНрдпрд╛рдВрдЪреНрдпрд╛рдд рд╡рд┐рд░реБрджреНрдз рдЪрд┐рдиреНрд╣реЗ рдЕрд╕рддреАрд▓. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЬрд░ рдПрдХрд╛ рдмрд╛рдмрддреАрдд, рд╡рд┐рдЪрд▓рди рдЖрд╣реЗ +5 (рдЕрдзрд┐рдХ рдкрд╛рдЪ), рдЖрдгрд┐ рдЗрддрд░ рдордзреНрдпреЗ -5 (рд╡рдЬрд╛ рдкрд╛рдЪ), рдирдВрддрд░ рд╡рд┐рдЪрд▓рдирд╛рдВрдЪреА рдмреЗрд░реАрдЬ рдПрдХрдореЗрдХрд╛рдВрдирд╛ рд░рджреНрдж рдХрд░реЗрд▓ рдЖрдгрд┐ 0 (рд╢реВрдиреНрдп) рд╣реЛрдИрд▓. рд╡рд┐рдЪрд▓рдирд╛рдЪреЗ рд╡рд░реНрдЧреАрдХрд░рдг рдХрд░рдгреЗ рд╢рдХреНрдп рдирд╛рд╣реА, рдкрд░рдВрддреБ рдореЙрдбреНрдпреВрд▓рд╕рдЪреНрдпрд╛ рдЧреБрдгрдзрд░реНрдорд╛рдЪрд╛ рд╡рд╛рдкрд░ рдХрд░рдгреЗ рд╢рдХреНрдп рдЖрд╣реЗ рдЖрдгрд┐ рдирдВрддрд░ рд╕рд░реНрд╡ рд╡рд┐рдЪрд▓рди рд╕рдХрд╛рд░рд╛рддреНрдордХ рдЕрд╕рддреАрд▓ рдЖрдгрд┐ рдЬрдорд╛ рд╣реЛрддреАрд▓. рдЖрдореНрд╣реА рдпрд╛ рдореБрджреНрджреНрдпрд╛рд╡рд░ рддрдкрд╢реАрд▓рд╡рд╛рд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдгрд╛рд░ рдирд╛рд╣реА, рдкрд░рдВрддреБ рдлрдХреНрдд рдЕрд╕реЗ рд╕реВрдЪрд┐рдд рдХрд░рддреЛ рдХреА рдЧрдгрдиреЗрдЪреНрдпрд╛ рд╕реЛрдпреАрд╕рд╛рдареА, рд╡рд┐рдЪрд▓рдирд╛рдЪреЗ рд╡рд░реНрдЧреАрдХрд░рдг рдХрд░рдгреНрдпрд╛рдЪреА рдкреНрд░рдерд╛ рдЖрд╣реЗ.

рд╣реЗ рд╕реВрддреНрд░ рдЕрд╕реЗ рджрд┐рд╕рддреЗ рдЬреНрдпрд╛рджреНрд╡рд╛рд░реЗ рдЖрдкрдг рд╡рд░реНрдЧ рд╡рд┐рдЪрд▓рдирд╛рдЪреА рдХрд┐рдорд╛рди рдмреЗрд░реАрдЬ (рддреНрд░реБрдЯреА) рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реВ:

рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ

рдЬреЗрдереЗ рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ рдЦрд▒реНрдпрд╛ рдЙрддреНрддрд░рд╛рдВрдЪреНрдпрд╛ рдЕрдВрджрд╛рдЬрд╛рдЪреЗ рдХрд╛рд░реНрдп рдЖрд╣реЗ (рдореНрд╣рдгрдЬреЗ, рдЖрдореНрд╣реА рдЧрдгрдирд╛ рдХреЗрд▓реЗрд▓реА рдХрдорд╛рдИ),

рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ рдЦрд░реА рдЙрддреНрддрд░реЗ рдЖрд╣реЗрдд (рдирдореБрдиреНрдпрд╛рдд рджрд┐рд▓реЗрд▓рд╛ рдорд╣рд╕реВрд▓),

рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ рдирдореБрдирд╛ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдЖрд╣реЗ (рдЬреНрдпрд╛ рдорд╣рд┐рдиреНрдпрд╛рддреАрд▓ рд╡рд┐рдЪрд▓рди рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддреЗ рддреНрдпрд╛ рдорд╣рд┐рдиреНрдпрд╛рдЪреА рд╕рдВрдЦреНрдпрд╛)

рдЪрд▓рд╛ рдлрдВрдХреНрд╢рди рд╡реЗрдЧрд│реЗ рдХрд░реВ, рдЖрдВрд╢рд┐рдХ рд╡рд┐рднреЗрджрдХ рд╕рдореАрдХрд░рдгреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реВ рдЖрдгрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рддреНрдордХ рд╕рдорд╛рдзрд╛рдирд╛рдХрдбреЗ рдЬрд╛рдгреНрдпрд╛рд╕рд╛рдареА рддрдпрд╛рд░ рд╣реЛрдК. рдкрд░рдВрддреБ рдкреНрд░рдердо, рднрд┐рдиреНрдирддрд╛ рдореНрд╣рдгрдЬреЗ рдХрд╛рдп рдпрд╛рдмрджреНрджрд▓ рдПрдХ рд▓рд╣рд╛рди рднреНрд░рдордг рдХрд░реВрдпрд╛ рдЖрдгрд┐ рд╡реНрдпреБрддреНрдкрдиреНрдирд╛рдЪрд╛ рднреМрдорд┐рддреАрдп рдЕрд░реНрде рд▓рдХреНрд╖рд╛рдд рдареЗрд╡реВрдпрд╛.

рднреЗрдж

рднрд┐рдиреНрдирддрд╛ рдореНрд╣рдгрдЬреЗ рдлрдВрдХреНрд╢рдирдЪреЗ рд╡реНрдпреБрддреНрдкрдиреНрди рд╢реЛрдзрдгреНрдпрд╛рдЪреЗ рдСрдкрд░реЗрд╢рди.

рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд╢рд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ? рдлрдВрдХреНрд╢рдирдЪреЗ рд╡реНрдпреБрддреНрдкрдиреНрди рдлрдВрдХреНрд╢рдирдЪреНрдпрд╛ рдмрджрд▓рд╛рдЪрд╛ рджрд░ рджрд░реНрд╢рд╡рд┐рддреЗ рдЖрдгрд┐ рддреНрдпрд╛рдЪреА рджрд┐рд╢рд╛ рд╕рд╛рдВрдЧрддреЗ. рдЬрд░ рджрд┐рд▓реЗрд▓реНрдпрд╛ рдмрд┐рдВрджреВрд╡рд░ рд╡реНрдпреБрддреНрдкрдиреНрди рд╕рдХрд╛рд░рд╛рддреНрдордХ рдЕрд╕реЗрд▓ рддрд░ рдХрд╛рд░реНрдп рд╡рд╛рдврддреЗ рдЕрдиреНрдпрдерд╛, рдХрд╛рд░реНрдп рдХрдореА рд╣реЛрддреЗ; рдЖрдгрд┐ рдирд┐рд░рдкреЗрдХреНрд╖ рд╡реНрдпреБрддреНрдкрдиреНрдирд╛рдЪреЗ рдореВрд▓реНрдп рдЬрд┐рддрдХреЗ рдЬрд╛рд╕реНрдд рдЕрд╕реЗрд▓ рддрд┐рддрдХрд╛ рдлрдВрдХреНрд╢рди рд╡реНрд╣реЕрд▓реНрдпреВрдЬрдЪреНрдпрд╛ рдмрджрд▓рд╛рдЪрд╛ рджрд░ рдЬрд╛рд╕реНрдд рдЕрд╕реЗрд▓, рддрд╕реЗрдЪ рдлрдВрдХреНрд╢рди рдЖрд▓реЗрдЦрд╛рдЪрд╛ рдЙрддрд╛рд░ рдЬрд╛рд╕реНрдд рдЕрд╕реЗрд▓.

рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдХрд╛рд░реНрдЯреЗрд╢рд┐рдпрди рдХреЛрдСрд░реНрдбрд┐рдиреЗрдЯ рд╕рд┐рд╕реНрдЯрдордЪреНрдпрд╛ рдкрд░рд┐рд╕реНрдерд┐рддреАрдиреБрд╕рд╛рд░, M(0,0) рдмрд┐рдВрджреВрд╡рд░реАрд▓ рд╡реНрдпреБрддреНрдкрдиреНрдирд╛рдЪреЗ рдореВрд▓реНрдп + 25 рдореНрд╣рдгрдЬреЗ рджрд┐рд▓реЗрд▓реНрдпрд╛ рдмрд┐рдВрджреВрд╡рд░, рдЬреЗрд╡реНрд╣рд╛ рдореВрд▓реНрдп рд╕реНрдерд▓рд╛рдВрддрд░рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддреЗ рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ рдкрд╛рд░рдВрдкрд╛рд░рд┐рдХ рдПрдХрдХрд╛рджреНрд╡рд╛рд░реЗ рдЙрдЬрд╡реАрдХрдбреЗ, рдореВрд▓реНрдп рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ 25 рдкрд╛рд░рдВрдкрд╛рд░рд┐рдХ рдпреБрдирд┐рдЯреНрд╕рдиреЗ рд╡рд╛рдврддреЗ. рдЖрд▓реЗрдЦрд╛рд╡рд░ рддреЗ рдореВрд▓реНрдпрд╛рдВрдордзреНрдпреЗ рдмрд▒реНрдпрд╛рдкреИрдХреА рд╡рд╛рдврд▓реЗрд▓реЗ рджрд┐рд╕рддреЗ рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ рджрд┐рд▓реЗрд▓реНрдпрд╛ рдмрд┐рдВрджреВрдкрд╛рд╕реВрди.

рджреБрд╕рд░реЗ рдЙрджрд╛рд╣рд░рдг. рд╡реНрдпреБрддреНрдкрдиреНрди рдореВрд▓реНрдп рд╕рдорд╛рди рдЖрд╣реЗ -0,1 рдореНрд╣рдгрдЬреЗ рд╡рд┐рд╕реНрдерд╛рдкрд┐рдд рдЭрд╛рд▓реНрдпрд╛рд╡рд░ рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ рдкреНрд░рддрд┐ рдПрдХ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдпреБрдирд┐рдЯ, рдореВрд▓реНрдп рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ рдХреЗрд╡рд│ 0,1 рдкрд╛рд░рдВрдкрд╛рд░рд┐рдХ рдпреБрдирд┐рдЯрдиреЗ рдХрдореА рд╣реЛрддреЗ. рддреНрдпрд╛рдЪ рд╡реЗрд│реА, рдлрдВрдХреНрд╢рдирдЪреНрдпрд╛ рдЖрд▓реЗрдЦрд╛рд╡рд░, рдЖрдкрдг рдХрдореА рд▓рдХреНрд╖рд╛рдд рдпреЗрдгреНрдпрд╛рдЬреЛрдЧрд╛ рдЙрддрд╛рд░ рдкрд╛рд╣реВ рд╢рдХрддреЛ. рдбреЛрдВрдЧрд░рд╛рд╢реА рд╕рд╛рдзрд░реНрдореНрдп рд░реЗрдЦрд╛рдЯрдгреЗ, рдЬрдгреВ рдХрд╛рд╣реА рдЖрдкрдг рдбреЛрдВрдЧрд░рд╛рд╡рд░реВрди рд╣рд│реВрд╡рд╛рд░ рдЙрддрд╛рд░ рдЙрддрд░рдд рдЖрд╣реЛрдд, рдорд╛рдЧреАрд▓ рдЙрджрд╛рд╣рд░рдгрд╛рдкреЗрдХреНрд╖рд╛, рдЬрд┐рдереЗ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдЦреВрдк рдЙрдВрдЪ рд╢рд┐рдЦрд░реЗ рдЪрдврд╛рд╡реА рд▓рд╛рдЧрд▓реА рд╣реЛрддреА :)

рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ, рдлрдВрдХреНрд╢рди рд╡реЗрдЧрд│реЗ рдХреЗрд▓реНрдпрд╛рдирдВрддрд░ рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ рд╡рд┐рд╖рдорддреЗрдиреЗ рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ ╨╕ рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ, рдЖрдореНрд╣реА 1рд▓реА рдСрд░реНрдбрд░ рдЖрдВрд╢рд┐рдХ рднрд┐рдиреНрди рд╕рдореАрдХрд░рдгреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЛ. рд╕рдореАрдХрд░рдгреЗ рдирд┐рд╢реНрдЪрд┐рдд рдХреЗрд▓реНрдпрд╛рдирдВрддрд░, рдЖрдореНрд╣рд╛рд▓рд╛ рджреЛрди рд╕рдореАрдХрд░рдгрд╛рдВрдЪреА рдПрдХ рдкреНрд░рдгрд╛рд▓реА рдкреНрд░рд╛рдкреНрдд рд╣реЛрдИрд▓, рдЬреНрдпрд╛рдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░реВрди рдЖрдореНрд╣реА рдЧреБрдгрд╛рдВрдХрд╛рдВрдЪреА рдЕрд╢реА рдореВрд▓реНрдпреЗ рдирд┐рд╡рдбрдгреНрдпрд╛рд╕ рд╕рдХреНрд╖рдо рд╣реЛрдК. рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ ╨╕ рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ, рдЬреНрдпрд╛рд╕рд╛рдареА рджрд┐рд▓реЗрд▓реНрдпрд╛ рдмрд┐рдВрджреВрдВрд╡рд░реАрд▓ рд╕рдВрдмрдВрдзрд┐рдд рдбреЗрд░рд┐рд╡реНрд╣реЗрдЯрд┐рд╡реНрд╣реНрдЬрдЪреА рдореВрд▓реНрдпреЗ рдЦреВрдк рдХрдореА рдкреНрд░рдорд╛рдгрд╛рдд рдмрджрд▓рддрд╛рдд рдЖрдгрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рддреНрдордХ рд╕рдорд╛рдзрд╛рдирд╛рдЪреНрдпрд╛ рдмрд╛рдмрддреАрдд рдЕрдЬрд┐рдмрд╛рдд рдмрджрд▓рдд рдирд╛рд╣реАрдд. рджреБрд╕-рдпрд╛ рд╢рдмреНрджрд╛рдд, рдЖрдврд│рд▓реЗрд▓реНрдпрд╛ рдЧреБрдгрд╛рдВрдХрд╛рдВрд╡рд░ рддреНрд░реБрдЯреА рдХрд╛рд░реНрдп рдХрд┐рдорд╛рди рдкреЛрд╣реЛрдЪреЗрд▓, рдХрд╛рд░рдг рдпрд╛ рдмрд┐рдВрджреВрдВрд╡рд░реАрд▓ рдЖрдВрд╢рд┐рдХ рдбреЗрд░рд┐рд╡реНрд╣реЗрдЯрд┐рд╡реНрд╣реНрдЬрдЪреА рдореВрд▓реНрдпреЗ рд╢реВрдиреНрдп рд╕рдорд╛рди рдЕрд╕рддреАрд▓.

рддрд░, рднрд┐рдиреНрдирддреЗрдЪреНрдпрд╛ рдирд┐рдпрдорд╛рдВрдиреБрд╕рд╛рд░, рдЧреБрдгрд╛рдВрдХрд╛рдЪреНрдпрд╛ рд╕рдВрджрд░реНрднрд╛рдд 1рд▓реНрдпрд╛ рдХреНрд░рдорд╛рдЪреЗ рдЖрдВрд╢рд┐рдХ рд╡реНрдпреБрддреНрдкрдиреНрди рд╕рдореАрдХрд░рдг рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ рдлреЙрд░реНрдо рдШреЗрдИрд▓:

рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ

рд╕рдВрджрд░реНрднрд╛рдд рдкреНрд░рдердо рдХреНрд░рдо рдЖрдВрд╢рд┐рдХ рд╡реНрдпреБрддреНрдкрдиреНрди рд╕рдореАрдХрд░рдг рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ рдлреЙрд░реНрдо рдШреЗрдИрд▓:

рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ

рдкрд░рд┐рдгрд╛рдореА, рдЖрдореНрд╣рд╛рд▓рд╛ рд╕рдореАрдХрд░рдгрд╛рдВрдЪреА рдПрдХ рдкреНрд░рдгрд╛рд▓реА рдкреНрд░рд╛рдкреНрдд рдЭрд╛рд▓реА рдЬреНрдпрд╛рдордзреНрдпреЗ рдЕрдЧрджреА рд╕реЛрдкреНрдпрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рддреНрдордХ рд╕рдорд╛рдзрд╛рди рдЖрд╣реЗ:

рд╕реБрд░реБрд╡рд╛рдд{рд╕рдореАрдХрд░рдг*}
рд╕реБрд░реБрд╡рд╛рдд{рдХреЗрд╕реЗрд╕}
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
рд╢реЗрд╡рдЯ{рдХреЗрд╕}
рд╢реЗрд╡рдЯ{рд╕рдореАрдХрд░рдг*}

рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреНрдпрд╛рдкреВрд░реНрд╡реА, рдкреНрд░реАрд▓реЛрдб рдХрд░реВ, рд▓реЛрдбрд┐рдВрдЧ рдмрд░реЛрдмрд░ рдЖрд╣реЗ рдХрд╛ рддреЗ рддрдкрд╛рд╕рд╛ рдЖрдгрд┐ рдбреЗрдЯрд╛ рдлреЙрд░рдореЕрдЯ рдХрд░реВ.

рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рдгреЗ рдЖрдгрд┐ рд╕реНрд╡рд░реВрдкрд┐рдд рдХрд░рдгреЗ

рд╣реЗ рд▓рдХреНрд╖рд╛рдд рдШреЗрддрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ рдХреА рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рддреНрдордХ рд╕реЛрд▓реНрдпреВрд╢рдирд╕рд╛рдареА рдЖрдгрд┐ рдирдВрддрд░ рдЧреНрд░реЗрдбрд┐рдпрдВрдЯ рдЖрдгрд┐ рд╕реНрдЯреЛрдХрд╛рд╕реНрдЯрд┐рдХ рдЧреНрд░реЗрдбрд┐рдпрдВрдЯ рдбрд┐рд╕реЗрдВрдЯрд╕рд╛рдареА, рдЖрдореНрд╣реА рдХреЛрдб рджреЛрди рднрд┐рдиреНрдирддреЗрдордзреНрдпреЗ рд╡рд╛рдкрд░реВ: рд▓рд╛рдпрдмреНрд░рд░реА рд╡рд╛рдкрд░рдгреЗ рд╕реБрдиреНрди рдЖрдгрд┐ рддреЗ рди рд╡рд╛рдкрд░рддрд╛, рдЖрдореНрд╣рд╛рд▓рд╛ рдпреЛрдЧреНрдп рдбреЗрдЯрд╛ рд╕реНрд╡рд░реВрдкрди рдЖрд╡рд╢реНрдпрдХ рдЕрд╕реЗрд▓ (рдХреЛрдб рдкрд╣рд╛).

рдбреЗрдЯрд╛ рд▓реЛрдбрд┐рдВрдЧ рдЖрдгрд┐ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЛрдб

# ╨╕╨╝╨┐╨╛╤А╤В╨╕╤А╤Г╨╡╨╝ ╨▓╤Б╨╡ ╨╜╤Г╨╢╨╜╤Л╨╡ ╨╜╨░╨╝ ╨▒╨╕╨▒╨╗╨╕╨╛╤В╨╡╨║╨╕
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 '********************************************'

рд╡реНрд╣рд┐рдЬреНрдпреБрдЕрд▓рд╛рдпрдЭреЗрд╢рди

рдЖрддрд╛, рдЖрдореНрд╣реА рдкреНрд░рдердо, рдбреЗрдЯрд╛ рд▓реЛрдб рдХреЗрд▓реНрдпрд╛рдирдВрддрд░, рджреБрд╕рд░реЗ рдореНрд╣рдгрдЬреЗ, рд▓реЛрдбрд┐рдВрдЧрдЪреА рд╢реБрджреНрдзрддрд╛ рддрдкрд╛рд╕рд▓реНрдпрд╛рдирдВрддрд░ рдЖрдгрд┐ рд╢реЗрд╡рдЯреА рдбреЗрдЯрд╛рдЪреЗ рд╕реНрд╡рд░реВрдкрди рдХреЗрд▓реНрдпрд╛рдирдВрддрд░, рдЖрдореНрд╣реА рдкреНрд░рдердо рд╡реНрд╣рд┐рдЬреНрдпреБрдЕрд▓рд╛рдпрдЭреЗрд╢рди рдкрд╛рд░ рдкрд╛рдбреВ. рдпрд╛рд╕рд╛рдареА рдЕрдиреЗрдХрджрд╛ рд╡рд╛рдкрд░рд▓реЗрд▓реА рдкрджреНрдзрдд рдЖрд╣реЗ рдкреЗрдЕрд░рдкреНрд▓реЙрдЯ рдЧреНрд░рдВрдерд╛рд▓рдпреЗ рд╕реАрдмреЙрд░реНрди. рдЖрдордЪреНрдпрд╛ рдЙрджрд╛рд╣рд░рдгрд╛рдд, рдорд░реНрдпрд╛рджрд┐рдд рд╕рдВрдЦреНрдпреЗрдореБрд│реЗ, рд▓рд╛рдпрдмреНрд░рд░реА рд╡рд╛рдкрд░рдгреНрдпрд╛рдд рдХрд╛рд╣реА рдЕрд░реНрде рдирд╛рд╣реА рд╕реАрдмреЙрд░реНрди. рдЖрдореНрд╣реА рдирд┐рдпрдорд┐рдд рд▓рд╛рдпрдмреНрд░рд░реА рд╡рд╛рдкрд░реВ рдореЕрдЯрдкреНрд▓реЛрдЯрд▓рд┐рдм рдЖрдгрд┐ рдлрдХреНрдд рд╕реНрдХреЕрдЯрд░рдкреНрд▓реЙрдЯ рдкрд╣рд╛.

рд╕реНрдХреЕрдЯрд░рдкреНрд▓реЙрдЯ рдХреЛрдб

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}^ny_i = 0

sumlimits_{i=1}^nx_i(a +bsumlimits_{i=1}^nx_i тАФ sumlimits_{i=1}^ny_i) = 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 тАЬрд╡рд┐рдЪрд▓рди, %тАЭ

рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ

рдкрд░рд┐рдкреВрд░реНрдг рдирд╛рд╣реА, рдкрд░рдВрддреБ рдЖрдореНрд╣реА рдЖрдордЪреЗ рдХрд╛рд░реНрдп рдкреВрд░реНрдг рдХреЗрд▓реЗ.

рдЧреБрдгрд╛рдВрдХ рдард░рд╡рдгреНрдпрд╛рд╕рд╛рдареА рдлрдВрдХреНрд╢рди рд▓рд┐рд╣реВ рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ ╨╕ рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ рд▓рд╛рдпрдмреНрд░рд░реА рд╡рд╛рдкрд░рддреЗ рд╕реБрдиреНрди, рдЕрдзрд┐рдХ рддрдВрддреЛрддрдВрдд, рдЖрдореНрд╣реА рджреЛрди рдлрдВрдХреНрд╢рдиреНрд╕ рд▓рд┐рд╣реВ: рдПрдХ рд╕реНрдпреВрдбреЛрдЗрдирд╡реНрд╣рд░реНрд╕ рдореЕрдЯреНрд░рд┐рдХреНрд╕ рд╡рд╛рдкрд░реВрди (рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдВрдЧрдгрдХреАрдпрджреГрд╖реНрдЯреНрдпрд╛ рдЬрдЯрд┐рд▓ рдЖрдгрд┐ рдЕрд╕реНрдерд┐рд░ рдЕрд╕рд▓реНрдпрд╛рдиреЗ, рд╡реНрдпрд╡рд╣рд╛рд░рд╛рдд рд╢рд┐рдлрд╛рд░рд╕ рдХреЗрд▓реЗрд▓реА рдирд╛рд╣реА), рджреБрд╕рд░реА рдореЕрдЯреНрд░рд┐рдХреНрд╕ рд╕рдореАрдХрд░рдг рд╡рд╛рдкрд░реВрди.

рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рддреНрдордХ рд╕рдорд╛рдзрд╛рди рдХреЛрдб (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

рдЧреБрдгрд╛рдВрдХ рдард░рд╡рдгреНрдпрд╛рд╕рд╛рдареА рдШрд╛рд▓рд╡рд▓реЗрд▓реНрдпрд╛ рд╡реЗрд│реЗрдЪреА рддреБрд▓рдирд╛ рдХрд░реВрдпрд╛ рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ ╨╕ рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ, 3 рд╕рд╛рджрд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкрджреНрдзрддреАрдВрдиреБрд╕рд╛рд░.

рдЧрдгрдирд╛ рд╡реЗрд│ рдореЛрдЬрдгреНрдпрд╛рд╕рд╛рдареА рдХреЛрдб

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)

рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ

рдереЛрдбреНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рдбреЗрдЯрд╛рд╕рд╣, "рд╕реНрд╡рдпрдВ-рд▓рд┐рдЦрд┐рдд" рдлрдВрдХреНрд╢рди рдкреБрдвреЗ рдпреЗрддреЗ, рдЬреЗ рдХреНрд░реЕрдорд░рдЪреА рдкрджреНрдзрдд рд╡рд╛рдкрд░реВрди рдЧреБрдгрд╛рдВрдХ рд╢реЛрдзрддреЗ.

рдЖрддрд╛ рддреБрдореНрд╣реА рдЧреБрдгрд╛рдВрдХ рд╢реЛрдзрдгреНрдпрд╛рд╕рд╛рдареА рдЗрддрд░ рдорд╛рд░реНрдЧрд╛рдВрд╡рд░ рдЬрд╛рдК рд╢рдХрддрд╛ рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ ╨╕ рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ.

рдЧреНрд░реЗрдбрд┐рдпрдВрдЯ рдбрд┐рд╕реЗрдВрдЯ

рдкреНрд░рдердо, рдЧреНрд░реЗрдбрд┐рдпрдВрдЯ рдореНрд╣рдгрдЬреЗ рдХрд╛рдп рддреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реВрдпрд╛. рд╕реЛрдкреНрдпрд╛ рднрд╛рд╖реЗрдд рд╕рд╛рдВрдЧрд╛рдпрдЪреЗ рддрд░, рдЧреНрд░реЗрдбрд┐рдпрдВрдЯ рд╣рд╛ рдПрдХ рд╡рд┐рднрд╛рдЧ рдЖрд╣реЗ рдЬреЛ рдлрдВрдХреНрд╢рдирдЪреНрдпрд╛ рдХрдорд╛рд▓ рд╡рд╛рдвреАрдЪреА рджрд┐рд╢рд╛ рджрд░реНрд╢рд╡рддреЛ. рдбреЛрдВрдЧрд░рд╛рд╡рд░ рдЪрдврдгреНрдпрд╛рд╢реА рд╕рд╛рдзрд░реНрдореНрдп рд╕рд╛рдзреВрди, рдЬреЗрдереЗ рдЧреНрд░реЗрдбрд┐рдпрдВрдЯ рдЪреЗрд╣рд░реНрдпрд╛рдЪрд╛ рднрд╛рдЧ рдЖрд╣реЗ рдЬреЗрдереЗ рдкрд░реНрд╡рддрд╛рдЪреНрдпрд╛ рд╢рд┐рдЦрд░рд╛рд╡рд░ рд╕рд░реНрд╡рд╛рдд рдЬрд╛рд╕реНрдд рдЪрдврд╛рдИ рдЖрд╣реЗ. рдбреЛрдВрдЧрд░рд╛рд╕рд╣ рдЙрджрд╛рд╣рд░рдг рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддрд╛рдирд╛, рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рд▓рдХреНрд╖рд╛рдд рдпреЗрддреЗ рдХреА рд╢рдХреНрдп рддрд┐рддрдХреНрдпрд╛ рд▓рд╡рдХрд░ рд╕рдЦрд▓ рдкреНрд░рджреЗрд╢рд╛рдд рдкреЛрд╣реЛрдЪрдгреНрдпрд╛рд╕рд╛рдареА рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рд╕рд░реНрд╡рд╛рдд рдЙрдВрдЪ рдЙрддрд╛рд░рд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ, рдореНрд╣рдгрдЬреЗ, рдХрд┐рдорд╛рди - рдЬреЗрдереЗ рдХрд╛рд░реНрдп рд╡рд╛рдврдд рдХрд┐рдВрд╡рд╛ рдХрдореА рд╣реЛрдд рдирд╛рд╣реА. рдпрд╛ рдЯрдкреНрдкреНрдпрд╛рд╡рд░ рд╡реНрдпреБрддреНрдкрдиреНрди рд╢реВрдиреНрдп рдЕрд╕реЗрд▓. рдореНрд╣рдгреВрди, рдЖрдореНрд╣рд╛рд▓рд╛ рдЧреНрд░реЗрдбрд┐рдпрдВрдЯрдЪреА рдЧрд░рдЬ рдирд╛рд╣реА, рдкрд░рдВрддреБ рдЕрдБрдЯреАрдЧреНрд░реЗрдбрд┐рдпрдВрдЯрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ. рдЕрдБрдЯреАрдЧреНрд░реЗрдбрд┐рдпрдВрдЯ рд╢реЛрдзрдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣рд╛рд▓рд╛ рдлрдХреНрдд рдЧреНрд░реЗрдбрд┐рдпрдВрдЯрдиреЗ рдЧреБрдгрд╛рдХрд╛рд░ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ -1 (рд╡рдЬрд╛ рдПрдХ).

рдЖрдкрдг рдпрд╛ рд╡рд╕реНрддреБрд╕реНрдерд┐рддреАрдХрдбреЗ рд▓рдХреНрд╖ рджреЗрдК рдпрд╛ рдХреА рдлрдВрдХреНрд╢рдирдордзреНрдпреЗ рдЕрдиреЗрдХ рдорд┐рдирд┐рдордо рдЕрд╕реВ рд╢рдХрддрд╛рдд рдЖрдгрд┐ рдЦрд╛рд▓реА рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рд╡рд╛рдкрд░реВрди рддреНрдпрд╛рдкреИрдХреА рдПрдХрд╛рдордзреНрдпреЗ рдЙрддрд░рд▓реНрдпрд╛рдирдВрддрд░, рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдЖрдгрдЦреА рдПрдХ рдХрд┐рдорд╛рди рд╢реЛрдзрдгреЗ рд╢рдХреНрдп рд╣реЛрдгрд╛рд░ рдирд╛рд╣реА, рдЬреЗ рд╕рд╛рдкрдбрд▓реЗрд▓реНрдпрд╛рдкреЗрдХреНрд╖рд╛ рдХрдореА рдЕрд╕реВ рд╢рдХрддреЗ. рдЪрд▓рд╛ рдЖрд░рд╛рдо рдХрд░реВрдпрд╛, рд╣рд╛ рдЖрдореНрд╣рд╛рд▓рд╛ рдзреЛрдХрд╛ рдирд╛рд╣реА! рдЖрдордЪреНрдпрд╛ рдмрд╛рдмрддреАрдд рдЖрдореНрд╣реА рдЖрдордЪреНрдпрд╛ рдлрдВрдХреНрд╢рдирдкрд╛рд╕реВрди рдПрдХрдЪ рдХрд┐рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдд рдЖрд╣реЛрдд рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ рдЖрд▓реЗрдЦрд╛рд╡рд░ рдПрдХ рдирд┐рдпрдорд┐рдд рдкреЕрд░рд╛рдмреЛрд▓рд╛ рдЖрд╣реЗ. рдЖрдгрд┐ рдЖрдкрд▓реНрдпрд╛ рд╕рд░реНрд╡рд╛рдВрдирд╛ рдЖрдкрд▓реНрдпрд╛ рд╢рд╛рд▓реЗрдп рдЧрдгрд┐рддрд╛рдЪреНрдпрд╛ рдЕрднреНрдпрд╛рд╕рдХреНрд░рдорд╛рддреВрди рдЪрд╛рдВрдЧрд▓реЗ рдорд╛рд╣рд┐рдд рдЕрд╕рд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ, рдкреЕрд░рд╛рдмреЛрд▓рд╛рдордзреНрдпреЗ рдлрдХреНрдд рдПрдХ рдХрд┐рдорд╛рди рдЕрд╕рддреЛ.

рдЖрдореНрд╣рд╛рд▓рд╛ рдЧреНрд░реЗрдбрд┐рдпрдВрдЯрдЪреА рдЧрд░рдЬ рдХрд╛ рдЖрд╣реЗ рд╣реЗ рдЖрдореНрд╣рд╛рд▓рд╛ рд╕рдордЬрд▓реНрдпрд╛рдирдВрддрд░ рдЖрдгрд┐ рдЧреНрд░реЗрдбрд┐рдпрдВрдЯ рд╣рд╛ рдПрдХ рд╡рд┐рднрд╛рдЧ рдЖрд╣реЗ, рдореНрд╣рдгрдЬреЗ рджрд┐рд▓реЗрд▓реНрдпрд╛ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХрд╛рдВрд╕рд╣ рд╡реЗрдХреНрдЯрд░, рдЬреЗ рддрдВрддреЛрддрдВрдд рд╕рдорд╛рди рдЧреБрдгрд╛рдВрдХ рдЖрд╣реЗрдд рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ ╨╕ рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ рдЖрдореНрд╣реА рдЧреНрд░реЗрдбрд┐рдпрдВрдЯ рдбрд┐рд╕реЗрдВрдЯ рд▓рд╛рдЧреВ рдХрд░реВ рд╢рдХрддреЛ.

рд╕реБрд░реВ рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА, рдореА рдбрд┐рд╕реЗрдВрдЯ рдЕрд▓реНрдЧреЛрд░рд┐рджрдордмрджреНрджрд▓ рдлрдХреНрдд рдХрд╛рд╣реА рд╡рд╛рдХреНрдпреЗ рд╡рд╛рдЪрдгреНрдпрд╛рдЪрд╛ рд╕рд▓реНрд▓рд╛ рджреЗрддреЛ:

  • рдЖрдореНрд╣реА рдЧреБрдгрд╛рдВрдХрд╛рдВрдЪреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдЫрджреНрдо-рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкрджреНрдзрддреАрдиреЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЛ рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ ╨╕ рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ. рдЖрдордЪреНрдпрд╛ рдЙрджрд╛рд╣рд░рдгрд╛рдд, рдЖрдореНрд╣реА рд╢реВрдиреНрдп рдЬрд╡рд│ рдЧреБрдгрд╛рдВрдХ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реВ. рд╣реА рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдерд╛ рдЖрд╣реЗ, рдкрд░рдВрддреБ рдкреНрд░рддреНрдпреЗрдХ рдХреЗрд╕рдЪреА рд╕реНрд╡рддрдГрдЪреА рдкреНрд░рдерд╛ рдЕрд╕реВ рд╢рдХрддреЗ.
  • рд╕рдордиреНрд╡рдпрд╛рддреВрди рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ рдмрд┐рдВрджреВрд╡рд░ 1рд▓реНрдпрд╛ рдСрд░реНрдбрд░рдЪреНрдпрд╛ рдЖрдВрд╢рд┐рдХ рдбреЗрд░рд┐рд╡реНрд╣реЗрдЯрд┐рд╡реНрд╣рдЪреЗ рдореВрд▓реНрдп рд╡рдЬрд╛ рдХрд░рд╛ рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ. рддрд░, рдЬрд░ рд╡реНрдпреБрддреНрдкрдиреНрди рд╕рдХрд╛рд░рд╛рддреНрдордХ рдЕрд╕реЗрд▓ рддрд░ рдХрд╛рд░реНрдп рд╡рд╛рдврддреЗ. рдореНрд╣рдгреВрди, рдбреЗрд░рд┐рд╡реНрд╣реЗрдЯрд┐рд╡реНрд╣рдЪреЗ рдореВрд▓реНрдп рд╡рдЬрд╛ рдХрд░реВрди, рдЖрдкрдг рд╡рд╛рдвреАрдЪреНрдпрд╛ рд╡рд┐рд░реБрджреНрдз рджрд┐рд╢реЗрдиреЗ, рдореНрд╣рдгрдЬреЗ, рдЙрддрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рджрд┐рд╢реЗрдиреЗ рдЬрд╛рдК. рдЬрд░ рд╡реНрдпреБрддреНрдкрдиреНрди рдЛрдг рдЕрд╕реЗрд▓, рддрд░ рдпрд╛ рдЯрдкреНрдкреНрдпрд╛рд╡рд░рдЪреЗ рдХрд╛рд░реНрдп рдХрдореА рд╣реЛрддреЗ рдЖрдгрд┐ рд╡реНрдпреБрддреНрдкрдиреНрдирд╛рдЪреЗ рдореВрд▓реНрдп рд╡рдЬрд╛ рдХрд░реВрди рдЖрдкрдг рдЙрддрд░рддреНрдпрд╛ рджрд┐рд╢реЗрдиреЗ рдЬрд╛рдК.
  • рдЖрдореНрд╣реА рд╕рдордиреНрд╡рдпрд╛рд╕рд╣ рд╕рдорд╛рди рдСрдкрд░реЗрд╢рди рдХрд░рддреЛ рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ: рдмрд┐рдВрджреВрд╡рд░реАрд▓ рдЖрдВрд╢рд┐рдХ рд╡реНрдпреБрддреНрдкрдиреНрдирд╛рдЪреЗ рдореВрд▓реНрдп рд╡рдЬрд╛ рдХрд░рд╛ рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ.
  • рдХрд┐рдорд╛рди рд╡рд░ рдЙрдбреА рдорд╛рд░рдгреЗ рдЖрдгрд┐ рдЦреЛрд▓ рдЬрд╛рдЧреЗрдд рдЙрдбреНрдбрд╛рдг рди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдкрд╛рдпрд░реАрдЪрд╛ рдЖрдХрд╛рд░ рдЙрддрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рджрд┐рд╢реЗрдиреЗ рд╕реЗрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ, рдЖрдкрдг рдЧрдгрдирд╛рддреНрдордХ рдЦрд░реНрдЪ рдХрдореА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкрд╛рдпрд░реА рдпреЛрдЧреНрдпрд░рд┐рддреНрдпрд╛ рдХрд╢реА рд╕реЗрдЯ рдХрд░рд╛рд╡реА рдЖрдгрд┐ рдЙрддрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпреЗрджрд░рдореНрдпрд╛рди рддреЗ рдХрд╕реЗ рдмрджрд▓рд╛рд╡реЗ рдпрд╛рдмрджреНрджрд▓ рд╕рдВрдкреВрд░реНрдг рд▓реЗрдЦ рд▓рд┐рд╣реВ рд╢рдХрддрд╛. рдкрд░рдВрддреБ рдЖрддрд╛ рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдереЛрдбреЗрд╕реЗ рд╡реЗрдЧрд│реЗ рдХрд╛рд░реНрдп рдЖрд╣реЗ рдЖрдгрд┐ рдЖрдореНрд╣реА "рдкреЛрдХ" рдЪреНрдпрд╛ рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рдкрджреНрдзрддреАрдЪрд╛ рд╡рд╛рдкрд░ рдХрд░реВрди рдХрд┐рдВрд╡рд╛ рдЬрд╕реЗ рддреЗ рд╕рд╛рдорд╛рдиреНрдп рднрд╛рд╖реЗрдд рдореНрд╣рдгрддрд╛рдд, рдЕрдиреБрднрд╡рд╛рдиреБрд╕рд╛рд░ рдкрд╛рдпрд░реА рдЖрдХрд╛рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реВ.
  • рдПрдХрджрд╛ рдЖрдкрдг рджрд┐рд▓реЗрд▓реНрдпрд╛ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХрд╛рддреВрди рдЖрд▓реЛ рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ ╨╕ рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ рдбреЗрд░рд┐рд╡реНрд╣реЗрдЯрд┐рд╡реНрд╣реНрдЬрдЪреА рдореВрд▓реНрдпреЗ рд╡рдЬрд╛ рдХрд░рд╛, рдЖрдореНрд╣рд╛рд▓рд╛ рдирд╡реАрди рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдорд┐рд│рддрд╛рдд рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ ╨╕ рд╕рд╛рдзреНрдпрд╛ рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдордирд╛рдЪреЗ рд╕рдореАрдХрд░рдг рд╕реЛрдбрд╡рдгреЗ. рдЖрдореНрд╣реА рдЧрдгрдирд╛ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХрд╛рдВрдордзреВрди рдкреБрдвреАрд▓ рдЪрд░рдг (рд╡рдЬрд╛рдмрд╛рдХреА) рдШреЗрддреЛ. рдЖрдгрд┐ рдореНрд╣рдгреВрди рдЖрд╡рд╢реНрдпрдХ рдЕрднрд┐рд╕рд░рдг рдкреНрд░рд╛рдкреНрдд рд╣реЛрдИрдкрд░реНрдпрдВрдд рдЪрдХреНрд░ рдкреБрдиреНрд╣рд╛ рдкреБрдиреНрд╣рд╛ рд╕реБрд░реВ рд╣реЛрддреЗ.

рд╕рд░реНрд╡! рдЖрддрд╛ рдЖрдореНрд╣реА рдорд╛рд░рд┐рдпрд╛рдирд╛ рдЦрдВрджрдХрд╛рдЪреНрдпрд╛ рд╕рд░реНрд╡рд╛рдд рдЦреЛрд▓ рдШрд╛рдЯрд╛рдЪреНрдпрд╛ рд╢реЛрдзрд╛рдд рдЬрд╛рдгреНрдпрд╛рд╕рд╛рдареА рддрдпрд╛рд░ рдЖрд╣реЛрдд. рдЪрд▓рд╛ рд╕реБрд░реВ рдХрд░реБрдпрд╛.

рдЧреНрд░реЗрдбрд┐рдпрдВрдЯ рдбрд┐рд╕реЗрдВрдЯрд╕рд╛рдареА рдХреЛрдб

# ╨╜╨░╨┐╨╕╤И╨╡╨╝ ╤Д╤Г╨╜╨║╤Ж╨╕╤О ╨│╤А╨░╨┤╨╕╨╡╨╜╤В╨╜╨╛╨│╨╛ ╤Б╨┐╤Г╤Б╨║╨░ ╨▒╨╡╨╖ ╨╕╤Б╨┐╨╛╨╗╤М╨╖╨╛╨▓╨░╨╜╨╕╤П ╨▒╨╕╨▒╨╗╨╕╨╛╤В╨╡╨║╨╕ 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/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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛