рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдордирдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ

рд▓реЗрдЦрд▓реЗ рд╕рд░рд▓ (рдЬреЛрдбреА) рд░рд┐рдЧреНрд░реЗрд╕рди рд░реЗрдЦрд╛рдХреЛ рдЧрдгрд┐рддреАрдп рд╕рдореАрдХрд░рдг рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрди рдзреЗрд░реИ рддрд░рд┐рдХрд╛рд╣рд░реВ рдЫрд▓рдлрд▓ рдЧрд░реНрджрдЫред

рдпрд╣рд╛рдБ рдЫрд▓рдлрд▓ рдЧрд░рд┐рдПрдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрдиреЗ рд╕рдмреИ рд╡рд┐рдзрд┐рд╣рд░реВ рдиреНрдпреВрдирддрдо рд╡рд░реНрдЧ рд╡рд┐рдзрд┐рдорд╛ рдЖрдзрд╛рд░рд┐рдд рдЫрдиреНред рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╡рд┐рдзрд┐рд╣рд░реВ рдмреБрдЭреМрдВ:

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

рд╕реАрдзрд╛ рд░реЗрдЦрд╛рдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрдиреЗ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдзрд┐рдХреЛ рд▓рд╛рдЧрд┐, рд▓реЗрдЦрд▓реЗ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ, рдЬреБрди рдореБрдЦреНрдп рд░реВрдкрдорд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкреНрд░рдпреЛрдЧ рдирдЧрд░реА рд▓реЗрдЦрд┐рдПрдХрд╛рд╣рд░реВрдорд╛ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реБрдиреНрдЫрдиреНред рдирдореНрд░ рд░ рддреА рдЬреЛ рдЧрдгрдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫрдиреН рдирдореНрд░ред рдХреБрд╢рд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдЧрд░рд┐рдиреНрдЫ рдирдореНрд░ рдХрдореНрдкреНрдпреБрдЯрд┐рдЩ рд▓рд╛рдЧрдд рдШрдЯрд╛рдЙрдиреЗрдЫред

рд▓реЗрдЦрдорд╛ рджрд┐рдЗрдПрдХреЛ рд╕рдмреИ рдХреЛрдб рднрд╛рд╖рд╛рдорд╛ рд▓реЗрдЦрд┐рдПрдХреЛ рдЫ рдЕрдЬрдЧрд░ реи рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ Jupyter рдиреЛрдЯрдмреБрдХред рдирдореВрдирд╛ рдбреЗрдЯрд╛рдХреЛ рд╕рд╛рде рд╕реНрд░реЛрдд рдХреЛрдб рд░ рдлрд╛рдЗрд▓ рдкреЛрд╕реНрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫ Github

рдЖрд░реНрдЯрд┐рдлрд┐рд╢рд┐рдпрд▓ рдЗрдиреНрдЯреЗрд▓рд┐рдЬреЗрдиреНрд╕ - рдореЗрд╕рд┐рди рд▓рд░реНрдирд┐рдЩрдорд╛ рдзреЗрд░реИ рдлрд░рд╛рдХрд┐рд▓реЛ рдЦрдгреНрдбрдХреЛ рдЕрдзреНрдпрдпрдирдорд╛ рдмрд┐рд╕реНрддрд╛рд░реИ рдорд╛рд╕реНрдЯрд░ рдЧрд░реНрди рдерд╛рд▓реЗрдХрд╛рд╣рд░реВ рд░ рд╢реБрд░реБрдЖрддреАрд╣рд░реВ рджреБрд╡реИрд▓рд╛рдИ рд▓реЗрдЦ рдмрдвреА рд▓рдХреНрд╖рд┐рдд рдЫред

рд╕рд╛рдордЧреНрд░реА рдЪрд┐рддреНрд░рдг рдЧрд░реНрди, рд╣рд╛рдореА рдПрдХ рдзреЗрд░реИ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫреМрдВред

рдЙрджрд╛рд╣рд░рдг рд╕рд░реНрддрд╣рд░реВ

рд╣рд╛рдореАрд╕рдБрдЧ рдкрд╛рдБрдЪрд╡рдЯрд╛ рдорд╛рдирд╣рд░реВ рдЫрдиреН рдЬрд╕рд▓реЗ рдирд┐рд░реНрднрд░рддрд╛рд▓рд╛рдИ рдЪрд┐рддреНрд░рдг рдЧрд░реНрдЫ Y рджреЗрдЦрд┐ X (рддрд╛рд▓рд┐рдХрд╛ рдирдореНрдмрд░ рез):

рддрд╛рд▓рд┐рдХрд╛ рдирдореНрдмрд░ рез "рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд╕рд░реНрддрд╣рд░реВ"

рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдордирдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ

рд╣рд╛рдореА рдорд╛рдиреНрдиреЗрдЫреМрдВ рдХрд┐ рдорд╛рдирд╣рд░реВ рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдордирдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ рд╡рд░реНрд╖рдХреЛ рдорд╣рд┐рдирд╛ рд╣реЛ, рд░ рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдордирдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ - рдпреЛ рдорд╣рд┐рдирд╛ рд░рд╛рдЬрд╕реНрд╡ред рдЕрд░реНрдХреЛ рд╢рдмреНрджрдорд╛, рд░рд╛рдЬрд╕реНрд╡ рд╡рд░реНрд╖рдХреЛ рдорд╣рд┐рдирд╛рдорд╛ рдирд┐рд░реНрднрд░ рдЧрд░реНрджрдЫ, рд░ рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдордирдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ - рдПрдХ рдорд╛рддреНрд░ рдЪрд┐рдиреНрд╣ рдЬрд╕рдорд╛ рд░рд╛рдЬрд╕реНрд╡ рдирд┐рд░реНрднрд░ рд╣реБрдиреНрдЫред

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

рд╣рд╛рдореА рдорд╛рдиреМрдВ рдХрд┐ рдЙрджрд╛рд╣рд░рдгрдорд╛ рджрд┐рдЗрдПрдХреЛ рдирд┐рд░реНрднрд░рддрд╛ рдлрд╛рд░рдордХреЛ рд╕рд░рд▓ (рдЬреЛрдбреА рдЧрд░рд┐рдПрдХреЛ) рдкреНрд░рддрд┐рдЧрдорди рд░реЗрдЦрд╛рдХреЛ рдЧрдгрд┐рддреАрдп рд╕рдореАрдХрд░рдгрдмрд╛рдЯ рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рдЕрдиреБрдорд╛рди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ:

рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдордирдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ

рдЬрд╣рд╛рдБ рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдордирдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ рд░рд╛рдЬрд╕реНрд╡ рдкреНрд░рд╛рдкреНрдд рднрдПрдХреЛ рдорд╣рд┐рдирд╛ рд╣реЛ, рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдордирдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ - рдорд╣рд┐рдирд╛ рдЕрдиреБрд░реВрдк рд░рд╛рдЬрд╕реНрд╡, рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдордирдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ ╨╕ рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдордирдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ рдЕрдиреБрдорд╛рдирд┐рдд рд░реЗрдЦрд╛рдХреЛ рдкреНрд░рддрд┐рдЧрдорди рдЧреБрдгрд╛рдВрдХрд╣рд░реВ рд╣реБрдиреНред

рдзреНрдпрд╛рди рджрд┐рдиреБрд╣реЛрд╕реН рдХрд┐ рдЧреБрдгрд╛рдВрдХ рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдордирдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ рдкреНрд░рд╛рдпрдГ рдЕрдиреБрдорд╛рдирд┐рдд рд░реЗрдЦрд╛рдХреЛ рдврд▓рд╛рди рд╡рд╛ рдврд╛рдБрдЪрд╛ рднрдирд┐рдиреНрдЫ; рдЬрд╕рджреНрд╡рд╛рд░рд╛ рд░рдХрдо рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЧрд░реНрджрдЫ рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдордирдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ рдЬрдм рдпреЛ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдиреНрдЫ рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдордирдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ.

рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛, рдЙрджрд╛рд╣рд░рдгрдорд╛ рд╣рд╛рдореНрд░реЛ рдХрд╛рд░реНрдп рд╕рдореАрдХрд░рдгрдорд╛ рддреНрдпрд╕реНрддрд╛ рдЧреБрдгрд╛рдВрдХрд╣рд░реВ рдЪрдпрди рдЧрд░реНрдиреБ рд╣реЛ рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдордирдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ ╨╕ рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдордирдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ, рдЬрд╕рдорд╛ рд╕рд╛рдБрдЪреЛ рдЙрддреНрддрд░рд╣рд░реВрдмрд╛рдЯ рдорд╣рд┐рдирд╛рдХреЛ рдЖрдзрд╛рд░рдорд╛ рд╣рд╛рдореНрд░реЛ рдЧрдгрдирд╛ рдЧрд░рд┐рдПрдХреЛ рд░рд╛рдЬрд╕реНрд╡ рдорд╛рдирд╣рд░реВрдХреЛ рд╡рд┐рдЪрд▓рди, рдЕрд░реНрдерд╛рддреНред рдирдореВрдирд╛рдорд╛ рдкреНрд░рд╕реНрддреБрдд рдорд╛рдирд╣рд░реВ рдиреНрдпреВрдирддрдо рд╣реБрдиреЗрдЫрдиреНред

рдиреНрдпреВрдирддрдо рд╡рд░реНрдЧ рд╡рд┐рдзрд┐

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

рдпреЛ рд╕реВрддреНрд░ рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ рдЬрд╕рдХреЛ рд╕рд╛рде рд╣рд╛рдореА рд╡рд░реНрдЧ рд╡рд┐рдЪрд▓рди (рддреНрд░реБрдЯрд┐) рдХреЛ рдиреНрдпреВрдирддрдо рдпреЛрдЧрдлрд▓ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрдиреЗрдЫреМрдВ:

рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдордирдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ

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

рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдордирдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ рд╕рд╛рдБрдЪреЛ рдЬрд╡рд╛рдлрд╣рд░реВ рд╣реБрдиреН (рдирдореВрдирд╛рдорд╛ рдкреНрд░рджрд╛рди рдЧрд░рд┐рдПрдХреЛ рд░рд╛рдЬрд╕реНрд╡),

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

рдкреНрд░рдХрд╛рд░реНрдпрд▓рд╛рдИ рдлрд░рдХ рдкрд╛рд░реМрдВ, рдЖрдВрд╢рд┐рдХ рд╡рд┐рднреЗрджрдХ рд╕рдореАрдХрд░рдгрд╣рд░реВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реМрдВ, рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рддреНрдордХ рд╕рдорд╛рдзрд╛рдирдорд╛ рдЬрд╛рди рддрдпрд╛рд░ рд╣реБрдиреБрд╣реЛрд╕реНред рддрд░ рдкрд╣рд┐рд▓реЗ, рднрд┐рдиреНрдирддрд╛ рдХреЗ рд╣реЛ рднрдиреНрдиреЗ рдмрд╛рд░реЗ рдЫреЛрдЯреЛ рднреНрд░рдордг рдЧрд░реМрдВ рд░ рд╡реНрдпреБрддреНрдкрдиреНрдирдХреЛ рдЬреНрдпрд╛рдорд┐рддреАрдп рдЕрд░реНрде рд╕рдореНрдЭреМрдВред

рднрд┐рдиреНрдирддрд╛

рднрд┐рдиреНрдирддрд╛ рднрдиреЗрдХреЛ рдкреНрд░рдХрд╛рд░реНрдпрдХреЛ рд╡реНрдпреБрддреНрдкрдиреНрди рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрдиреЗ рдХрд╛рд░реНрдп рд╣реЛред

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

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

рдЕрд░реНрдХреЛ рдЙрджрд╛рд╣рд░рдгред рд╡реНрдпреБрддреНрдкрдиреНрди рдореВрд▓реНрдп рдмрд░рд╛рдмрд░ рдЫ -0,1 рд╡рд┐рд╕реНрдерд╛рдкрд┐рдд рд╣реБрдБрджрд╛ рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдордирдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ рдкреНрд░рддрд┐ рдПрдХ рдкрд░рдореНрдкрд░рд╛рдЧрдд рдПрдХрд╛рдЗ, рдореВрд▓реНрдп рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдордирдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ рдХреЗрд╡рд▓ 0,1 рдкрд░рдореНрдкрд░рд╛рдЧрдд рдПрдХрд╛рдЗрд▓реЗ рдШрдЯреНрдЫред рдПрдХреИ рд╕рдордпрдорд╛, рдкреНрд░рдХрд╛рд░реНрдпрдХреЛ рдЧреНрд░рд╛рдлрдорд╛, рд╣рд╛рдореА рдПрдХ рдореБрд╢реНрдХрд┐рд▓ рджреЗрдЦрд┐рдиреЗ рддрд▓рдХреЛ рдврд▓рд╛рди рдЕрд╡рд▓реЛрдХрди рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред рдкрд╣рд╛рдбрд╕рдБрдЧ рд╕рдорд╛рдирддрд╛ рдХреЛрд░реНрджреИ, рдпреЛ рдЬрд╕реНрддреЛ рдЫ рдХрд┐ рд╣рд╛рдореА рдзреЗрд░реИ рдмрд┐рд╕реНрддрд╛рд░реИ рдкрд╣рд╛рдбрдмрд╛рдЯ рд╣рд▓реНрдХрд╛ рдврд▓рд╛рди рдУрд░реНрд▓рд┐рд░рд╣реЗрдХрд╛ рдЫреМрдВ, рдЕрдШрд┐рд▓реНрд▓реЛ рдЙрджрд╛рд╣рд░рдгрдХреЛ рд╡рд┐рдкрд░реАрдд, рдЬрд╣рд╛рдБ рд╣рд╛рдореАрд▓реЗ рдзреЗрд░реИ рдард╛рдбреЛ рдЪреБрдЪреБрд░рд╛рд╣рд░реВ рдЪрдвреНрдиреБрдкрд░реНтАНрдпреЛ :)

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

рддреНрдпрд╕реЛрднрдП, рднрд┐рдиреНрдирддрд╛рдХрд╛ рдирд┐рдпрдорд╣рд░реВ рдЕрдиреБрд╕рд╛рд░, рдЧреБрдгрд╛рдВрдХрдХреЛ рд╕рдиреНрджрд░реНрднрдорд╛ рдкрд╣рд┐рд▓реЛ рдХреНрд░рдордХреЛ рдЖрдВрд╢рд┐рдХ рд╡реНрдпреБрддреНрдкрдиреНрди рд╕рдореАрдХрд░рдг рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдордирдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ рдлрд╛рд░рдо рд▓рд┐рдиреЗрдЫ:

рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдордирдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ

рдкрд╣рд┐рд▓реЛ рдХреНрд░рдо рдЖрдВрд╢рд┐рдХ рд╡реНрдпреБрддреНрдкрдиреНрди рд╕рдореАрдХрд░рдг рд╕рдореНрдмрдиреНрдзрдорд╛ рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдордирдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ рдлрд╛рд░рдо рд▓рд┐рдиреЗрдЫ:

рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдордирдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ

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

рд╕реБрд░реБ{рд╕рдореАрдХрд░рдг*}
рд╕реБрд░реБ {рдХреЗрд╕}
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) = реж
рдЕрдиреНрддреНрдп {рдХреЗрд╕}
рдЕрдиреНрддреНрдп{рд╕рдореАрдХрд░рдг*}

рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрдиреБ рдЕрдШрд┐, рдкреНрд░рд┐рд▓реЛрдб рдЧрд░реМрдВ, рд▓реЛрдбрд┐рдЩ рд╕рд╣реА рдЫ рдХрд┐ рдЫреИрди рдЬрд╛рдБрдЪ рдЧрд░реМрдВ, рд░ рдбреЗрдЯрд╛ рдврд╛рдБрдЪрд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рдбреЗрдЯрд╛ рд▓реЛрдб рд░ рдврд╛рдБрдЪрд╛

рдпреЛ рдзреНрдпрд╛рди рджрд┐рдиреБрдкрд░реНрдЫ рдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рддреНрдордХ рд╕рдорд╛рдзрд╛рдирдХреЛ рд▓рд╛рдЧрд┐, рд░ рдкрдЫрд┐ рдЧреНрд░реЗрдбрд┐рдпрдиреНрдЯ рд░ рд╕реНрдЯреЛрдХрд╛рд╕реНрдЯрд┐рдХ рдЧреНрд░реЗрдбрд┐рдпрдиреНрдЯ рдбрд┐рд╕реЗрдиреНрдЯрдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореА рдХреЛрдбрд▓рд╛рдИ рджреБрдИ рднрд┐рдиреНрдирддрд╛рд╣рд░реВрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВ: рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ред рдирдореНрд░ рд░ рдпрд╕рд▓рд╛рдИ рдкреНрд░рдпреЛрдЧ рдирдЧрд░реАрдХрди, рддрдм рд╣рд╛рдореАрд▓рд╛рдИ рдЙрдкрдпреБрдХреНрдд рдбрд╛рдЯрд╛ рдврд╛рдБрдЪрд╛ рдЪрд╛рд╣рд┐рдиреНрдЫ (рдХреЛрдб рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН)ред

рдбрд╛рдЯрд╛ рд▓реЛрдбрд┐рдЩ рд░ рдкреНрд░реЛрд╕реЗрд╕рд┐рдЩ рдХреЛрдб

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

рджреГрд╢реНрдп

рдЕрдм, рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЗ, рдбрд╛рдЯрд╛ рд▓реЛрдб рдЧрд░реЗрдкрдЫрд┐, рджреЛрд╕реНрд░реЛ, рд▓реЛрдбрд┐рдЩрдХреЛ рд╢реБрджреНрдзрддрд╛ рдЬрд╛рдБрдЪ рдЧрд░реЗрдкрдЫрд┐ рд░ рдЕрдиреНрддрдорд╛ рдбрд╛рдЯрд╛ рдврд╛рдБрдЪрд╛ рдЧрд░реЗрдкрдЫрд┐, рд╣рд╛рдореА рдкрд╣рд┐рд▓реЛ рднрд┐рдЬреБрдЕрд▓рд╛рдЗрдЬреЗрд╢рди рдЧрд░реНрдиреЗрдЫреМрдВред рдпрд╕рдХрд╛ рд▓рд╛рдЧрд┐ рдЕрдХреНрд╕рд░ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреЗ рд╡рд┐рдзрд┐ рд╣реЛ pairplot рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реБ рд╕рдореБрджреНрд░реАред рд╣рд╛рдореНрд░реЛ рдЙрджрд╛рд╣рд░рдгрдорд╛, рд╕реАрдорд┐рдд рд╕рдВрдЦреНрдпрд╛рдХреЛ рдХрд╛рд░рдгрд▓реЗ, рддреНрдпрд╣рд╛рдБ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдХреБрдиреИ рдорддрд▓рдм рдЫреИрди рд╕рдореБрджреНрд░реАред рд╣рд╛рдореА рдирд┐рдпрдорд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВ matplotlib рд░ рдХреЗрд╡рд▓ scatterplot рд╣реЗрд░реНрдиреБрд╣реЛрд╕реНред

рд╕реНрдХреНрдпрд╛рдЯрд░рдкреНрд▓рдЯ рдХреЛрдб

print '╨У╤А╨░╤Д╨╕╨║ тДЦ1 "╨Ч╨░╨▓╨╕╤Б╨╕╨╝╨╛╤Б╤В╤М ╨▓╤Л╤А╤Г╤З╨║╨╕ ╨╛╤В ╨╝╨╡╤Б╤П╤Ж╨░ ╨│╨╛╨┤╨░"'

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

рдЪрд╛рд░реНрдЯ рдирдореНрдмрд░ рез "рд╡рд░реНрд╖рдХреЛ рдорд╣рд┐рдирд╛рдорд╛ рд░рд╛рдЬрд╕реНрд╡рдХреЛ рдирд┐рд░реНрднрд░рддрд╛"

рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдордирдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ

рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рддреНрдордХ рд╕рдорд╛рдзрд╛рди

рдорд╛ рд╕рдмреИрднрдиреНрджрд╛ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдХрд░рдгрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реМрдВ рдЕрдЬрдЧрд░ рд░ рд╕рдореАрдХрд░рдг рдкреНрд░рдгрд╛рд▓реА рд╣рд▓ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

рд╕реБрд░реБ{рд╕рдореАрдХрд░рдг*}
рд╕реБрд░реБ {рдХреЗрд╕}
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) = реж
рдЕрдиреНрддреНрдп {рдХреЗрд╕}
рдЕрдиреНрддреНрдп{рд╕рдореАрдХрд░рдг*}

Cramer рдХреЛ рдирд┐рдпрдо рдЕрдиреБрд╕рд╛рд░ рд╣рд╛рдореАрд▓реЗ рд╕рд╛рдорд╛рдиреНрдп рдирд┐рд░реНрдзрд╛рд░рдХ, рд╕рд╛рдереИ рдирд┐рд░реНрдзрд╛рд░рдХрд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдиреЗрдЫреМрдВ рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдордирдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ рд░ рджреНрд╡рд╛рд░рд╛ рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдордирдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ, рдЬрд╕ рдкрдЫрд┐, рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рдХ рд╡рд┐рднрд╛рдЬрд┐рдд рдЧрд░реНрджреИ рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдордирдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ рд╕рд╛рдорд╛рдиреНрдп рдирд┐рд░реНрдзрд╛рд░рдХрдорд╛ - рдЧреБрдгрд╛рдВрдХ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдиреБрд╣реЛрд╕реН рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдордирдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ, рддреНрдпрд╕реИ рдЧрд░реА рд╣рд╛рдореА рдЧреБрдгрд╛рдВрдХ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдЫреМрдВ рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдордирдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ.

рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рддреНрдордХ рд╕рдорд╛рдзрд╛рди рдХреЛрдб

# ╨╛╨┐╤А╨╡╨┤╨╡╨╗╨╕╨╝ ╤Д╤Г╨╜╨║╤Ж╨╕╤О ╨┤╨╗╤П ╤А╨░╤Б╤З╨╡╤В╨░ ╨║╨╛╤Н╤Д╤Д╨╕╤Ж╨╕╨╡╨╜╤В╨╛╨▓ a ╨╕ b ╨┐╨╛ ╨┐╤А╨░╨▓╨╕╨╗╤Г ╨Ъ╤А╨░╨╝╨╡╤А╨░
def Kramer_method (x,y):
        # ╤Б╤Г╨╝╨╝╨░ ╨╖╨╜╨░╤З╨╡╨╜╨╕╨╣ (╨▓╤Б╨╡ ╨╝╨╡╤Б╤П╤Ж╨░)
    sx = sum(x)
        # ╤Б╤Г╨╝╨╝╨░ ╨╕╤Б╤В╨╕╨╜╨╜╤Л╤Е ╨╛╤В╨▓╨╡╤В╨╛╨▓ (╨▓╤Л╤А╤Г╤З╨║╨░ ╨╖╨░ ╨▓╨╡╤Б╤М ╨┐╨╡╤А╨╕╨╛╨┤)
    sy = sum(y)
        # ╤Б╤Г╨╝╨╝╨░ ╨┐╤А╨╛╨╕╨╖╨▓╨╡╨┤╨╡╨╜╨╕╤П ╨╖╨╜╨░╤З╨╡╨╜╨╕╨╣ ╨╜╨░ ╨╕╤Б╤В╨╕╨╜╨╜╤Л╨╡ ╨╛╤В╨▓╨╡╤В╤Л
    list_xy = []
    [list_xy.append(x[i]*y[i]) for i in range(len(x))]
    sxy = sum(list_xy)
        # ╤Б╤Г╨╝╨╝╨░ ╨║╨▓╨░╨┤╤А╨░╤В╨╛╨▓ ╨╖╨╜╨░╤З╨╡╨╜╨╕╨╣
    list_x_sq = []
    [list_x_sq.append(x[i]**2) for i in range(len(x))]
    sx_sq = sum(list_x_sq)
        # ╨║╨╛╨╗╨╕╤З╨╡╤Б╤В╨▓╨╛ ╨╖╨╜╨░╤З╨╡╨╜╨╕╨╣
    n = len(x)
        # ╨╛╨▒╤Й╨╕╨╣ ╨╛╨┐╤А╨╡╨┤╨╡╨╗╨╕╤В╨╡╨╗╤М
    det = sx_sq*n - sx*sx
        # ╨╛╨┐╤А╨╡╨┤╨╡╨╗╨╕╤В╨╡╨╗╤М ╨┐╨╛ a
    det_a = sx_sq*sy - sx*sxy
        # ╨╕╤Б╨║╨╛╨╝╤Л╨╣ ╨┐╨░╤А╨░╨╝╨╡╤В╤А a
    a = (det_a / det)
        # ╨╛╨┐╤А╨╡╨┤╨╡╨╗╨╕╤В╨╡╨╗╤М ╨┐╨╛ b
    det_b = sxy*n - sy*sx
        # ╨╕╤Б╨║╨╛╨╝╤Л╨╣ ╨┐╨░╤А╨░╨╝╨╡╤В╤А b
    b = (det_b / det)
        # ╨║╨╛╨╜╤В╤А╨╛╨╗╤М╨╜╤Л╨╡ ╨╖╨╜╨░╤З╨╡╨╜╨╕╤П (╨┐╤А╨╛╨╛╨▓╨╡╤А╨║╨░)
    check1 = (n*b + a*sx - sy)
    check2 = (b*sx + a*sx_sq - sxy)
    return [round(a,4), round(b,4)]

# ╨╖╨░╨┐╤Г╤Б╤В╨╕╨╝ ╤Д╤Г╨╜╨║╤Ж╨╕╤О ╨╕ ╨╖╨░╨┐╨╕╤И╨╡╨╝ ╨┐╤А╨░╨▓╨╕╨╗╤М╨╜╤Л╨╡ ╨╛╤В╨▓╨╡╤В╤Л
ab_us = Kramer_method(x_us,y_us)
a_us = ab_us[0]
b_us = ab_us[1]
print ' 33[1m' + ' 33[4m' + "╨Ю╨┐╤В╨╕╨╝╨░╨╗╤М╨╜╤Л╨╡ ╨╖╨╜╨░╤З╨╡╨╜╨╕╤П ╨║╨╛╤Н╤Д╤Д╨╕╤Ж╨╕╨╡╨╜╤В╨╛╨▓ a ╨╕ b:"  + ' 33[0m' 
print 'a =', a_us
print 'b =', b_us
print

# ╨╛╨┐╤А╨╡╨┤╨╡╨╗╨╕╨╝ ╤Д╤Г╨╜╨║╤Ж╨╕╤О ╨┤╨╗╤П ╨┐╨╛╨┤╤Б╤З╨╡╤В╨░ ╤Б╤Г╨╝╨╝╤Л ╨║╨▓╨░╨┤╤А╨░╤В╨╛╨▓ ╨╛╤И╨╕╨▒╨╛╨║
def errors_sq_Kramer_method(answers,x,y):
    list_errors_sq = []
    for i in range(len(x)):
        err = (answers[0] + answers[1]*x[i] - y[i])**2
        list_errors_sq.append(err)
    return sum(list_errors_sq)

# ╨╖╨░╨┐╤Г╤Б╤В╨╕╨╝ ╤Д╤Г╨╜╨║╤Ж╨╕╤О ╨╕ ╨╖╨░╨┐╨╕╤И╨╡╨╝ ╨╖╨╜╨░╤З╨╡╨╜╨╕╨╡ ╨╛╤И╨╕╨▒╨║╨╕
error_sq = errors_sq_Kramer_method(ab_us,x_us,y_us)
print ' 33[1m' + ' 33[4m' + "╨б╤Г╨╝╨╝╨░ ╨║╨▓╨░╨┤╤А╨░╤В╨╛╨▓ ╨╛╤В╨║╨╗╨╛╨╜╨╡╨╜╨╕╨╣" + ' 33[0m'
print error_sq
print

# ╨╖╨░╨╝╨╡╤А╨╕╨╝ ╨▓╤А╨╡╨╝╤П ╤А╨░╤Б╤З╨╡╤В╨░
# print ' 33[1m' + ' 33[4m' + "╨Т╤А╨╡╨╝╤П ╨▓╤Л╨┐╨╛╨╗╨╜╨╡╨╜╨╕╤П ╤А╨░╤Б╤З╨╡╤В╨░ ╤Б╤Г╨╝╨╝╤Л ╨║╨▓╨░╨┤╤А╨░╤В╨╛╨▓ ╨╛╤В╨║╨╗╨╛╨╜╨╡╨╜╨╕╨╣:" + ' 33[0m'
# % timeit error_sq = errors_sq_Kramer_method(ab,x_us,y_us)

рд╣рд╛рдореАрд▓реЗ рдкрд╛рдПрдХреЛ рдХреБрд░рд╛ рдпрд╣рд╛рдБ рдЫ:

рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдордирдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ

рддреНрдпрд╕реЛрднрдП, рдЧреБрдгрд╛рдВрдХрдХрд╛ рдорд╛рдирд╣рд░реВ рдлреЗрд▓рд╛ рдкрд░реЗрдХрд╛ рдЫрдиреН, рд╡рд░реНрдЧ рд╡рд┐рдЪрд▓рдирд╣рд░реВрдХреЛ рдпреЛрдЧ рд╕реНрдерд╛рдкрд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫред рдлреЗрд▓рд╛ рдкрд░реЗрдХреЛ рдЧреБрдгрд╛рдВрдХ рдЕрдиреБрд╕рд╛рд░ рд╕реНрдХреНрдпрд╛рдЯрд░рд┐рдЩ рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдордорд╛ рд╕реАрдзрд╛ рд░реЗрдЦрд╛ рдХреЛрд░реМрдВред

рд░рд┐рдЧреНрд░реЗрд╕рди рд▓рд╛рдЗрди рдХреЛрдб

# ╨╛╨┐╤А╨╡╨┤╨╡╨╗╨╕╨╝ ╤Д╤Г╨╜╨║╤Ж╨╕╤О ╨┤╨╗╤П ╤Д╨╛╤А╨╝╨╕╤А╨╛╨▓╨░╨╜╨╕╤П ╨╝╨░╤Б╤Б╨╕╨▓╨░ ╤А╨░╤Б╤Б╤З╨╡╤В╨╜╤Л╤Е ╨╖╨╜╨░╤З╨╡╨╜╨╕╨╣ ╨▓╤Л╤А╤Г╤З╨║╨╕
def sales_count(ab,x,y):
    line_answers = []
    [line_answers.append(ab[0]+ab[1]*x[i]) for i in range(len(x))]
    return line_answers

# ╨┐╨╛╤Б╤В╤А╨╛╨╕╨╝ ╨│╤А╨░╤Д╨╕╨║╨╕
print '╨У╤А╤Д╨╕╨║тДЦ2 "╨Я╤А╨░╨▓╨╕╨╗╤М╨╜╤Л╨╡ ╨╕ ╤А╨░╤Б╤З╨╡╤В╨╜╤Л╨╡ ╨╛╤В╨▓╨╡╤В╤Л"'
plt.plot(x_us,y_us,'o',color='green',markersize=16, label = '$True$ $answers$')
plt.plot(x_us, sales_count(ab_us,x_us,y_us), color='red',lw=4,
         label='$Function: a + bx,$ $where$ $a='+str(round(ab_us[0],2))+',$ $b='+str(round(ab_us[1],2))+'$')
plt.xlabel('$Months$', size=16)
plt.ylabel('$Sales$', size=16)
plt.legend(loc=1, prop={'size': 16})
plt.show()

рдЪрд╛рд░реНрдЯ рдирдореНрдмрд░ реи "рд╕рд╣реА рд░ рдЧрдгрдирд╛ рдЧрд░рд┐рдПрдХрд╛ рдЙрддреНрддрд░рд╣рд░реВ"

рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдордирдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ

рддрдкрд╛рдЗрдБ рдкреНрд░рддреНрдпреЗрдХ рдорд╣рд┐рдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рд╡рд┐рдЪрд▓рди рдЧреНрд░рд╛рдл рд╣реЗрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рд╣рд╛рдореНрд░реЛ рдорд╛рдорд▓рд╛рдорд╛, рд╣рд╛рдореА рдпрд╕рдмрд╛рдЯ рдХреБрдиреИ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджреИрдиреМрдВ, рддрд░ рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ рдЬрд┐рдЬреНрдЮрд╛рд╕рд╛рд▓рд╛рдИ рд╕рдиреНрддреБрд╖реНрдЯ рдЧрд░реНрдиреЗрдЫреМрдВ рдХрд┐ рд╕рд╛рдзрд╛рд░рдг рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдорди рд╕рдореАрдХрд░рдгрд▓реЗ рд╡рд░реНрд╖рдХреЛ рдорд╣рд┐рдирд╛рдорд╛ рд░рд╛рдЬрд╕реНрд╡рдХреЛ рдирд┐рд░реНрднрд░рддрд╛рд▓рд╛рдИ рдХрддреНрддрд┐рдХреЛ рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рдЪрд┐рддреНрд░рдг рдЧрд░реНрджрдЫред

рд╡рд┐рдЪрд▓рди рдЪрд╛рд░реНрдЯ рдХреЛрдб

# ╨╛╨┐╤А╨╡╨┤╨╡╨╗╨╕╨╝ ╤Д╤Г╨╜╨║╤Ж╨╕╤О ╨┤╨╗╤П ╤Д╨╛╤А╨╝╨╕╤А╨╛╨▓╨░╨╜╨╕╤П ╨╝╨░╤Б╤Б╨╕╨▓╨░ ╨╛╤В╨║╨╗╨╛╨╜╨╡╨╜╨╕╨╣ ╨▓ ╨┐╤А╨╛╤Ж╨╡╨╜╤В╨░╤Е
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()

рдЪрд╛рд░реНрдЯ рдирдореНрдмрд░ рей "рд╡рд┐рдЪрд▓рди,%"

рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдордирдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ

рдкреВрд░реНрдг рдЫреИрди, рддрд░ рд╣рд╛рдореАрд▓реЗ рд╣рд╛рдореНрд░реЛ рдХрд╛рд░реНрдп рдкреВрд░рд╛ рдЧрд░реНрдпреМрдВред

рдЧреБрдгрд╛рдВрдХ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрди рдПрдЙрдЯрд╛ рдкреНрд░рдХрд╛рд░реНрдп рд▓реЗрдЦреМрдВ рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдордирдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ ╨╕ рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдордирдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ рдирдореНрд░, рдЕрдЭ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛, рд╣рд╛рдореА рджреБрдИ рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рд▓реЗрдЦреНрдиреЗрдЫреМрдВ: рдПрдЙрдЯрд╛ рд╕реНрдпреВрдбреЛрдЗрдиреНрднрд░реНрд╕ рдореНрдпрд╛рдЯреНрд░рд┐рдХреНрд╕ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ (рдкреНрд░рдХреНрд░рд┐рдпрд╛рдорд╛ рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЧрд░рд┐рдПрдХреЛ рдЫреИрди, рдХрд┐рдирдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрдореНрдкреНрдпреБрдЯреЗрд╕рдирд▓реА рдЬрдЯрд┐рд▓ рд░ рдЕрд╕реНрдерд┐рд░ рдЫ), рдЕрд░реНрдХреЛ рдореНрдпрд╛рдЯреНрд░рд┐рдХреНрд╕ рд╕рдореАрдХрд░рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ред

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

рд╣рд╛рдореА рдпрд╕ рддрдереНрдпрдорд╛ рдзреНрдпрд╛рди рджрд┐рдФрдВ рдХрд┐ рдПрдХ рдкреНрд░рдХрд╛рд░реНрдпрдорд╛ рдзреЗрд░реИ рдорд┐рдирд┐рдорд╛ рд╣реБрди рд╕рдХреНрдЫ, рд░ рддрд▓ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рддреА рдордзреНрдпреЗ рдПрдЙрдЯрд╛рдорд╛ рдЭрд░реНрджрд╛, рд╣рд╛рдореА рдЕрд░реНрдХреЛ рдиреНрдпреВрдирддрдо рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХреНрд╖рдо рд╣реБрдиреЗ рдЫреИрдиреМрдВ, рдЬреБрди рдлреЗрд▓рд╛ рдкрд░реЗрдХреЛ рднрдиреНрджрд╛ рдХрдо рд╣реБрди рд╕рдХреНрдЫред рдЖрд░рд╛рдо рдЧрд░реМрдВ, рдпреЛ рд╣рд╛рдореНрд░реЛ рд▓рд╛рдЧрд┐ рдЦрддрд░рд╛ рд╣реЛрдЗрди! рд╣рд╛рдореНрд░реЛ рдорд╛рдорд▓рд╛ рдорд╛ рд╣рд╛рдореА рдПрдХрд▓ рдиреНрдпреВрдирддрдо рд╕рдВрдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдЧрд░реНрджреИрдЫреМрдВ, рд╣рд╛рдореНрд░реЛ рдкреНрд░рдХрд╛рд░реНрдп рджреЗрдЦрд┐ рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдордирдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ рдЧреНрд░рд╛рдл рдорд╛ рдПрдХ рдирд┐рдпрдорд┐рдд parabola рдЫред рд░ рд╣рд╛рдореА рд╕рдмреИрд▓рд╛рдИ рд╣рд╛рдореНрд░реЛ рд╕реНрдХреВрд▓рдХреЛ рдЧрдгрд┐рдд рдкрд╛рдареНрдпрдХреНрд░рдордмрд╛рдЯ рд░рд╛рдореНрд░рд░реА рдерд╛рд╣рд╛ рд╣реБрдиреБрдкрд░реНрджрдЫ, рдПрдХ рдкреНрдпрд╛рд░рд╛рдмреЛрд▓рд╛рдорд╛ рдПрдЙрдЯрд╛ рдорд╛рддреНрд░ рдиреНрдпреВрдирддрдо рд╣реБрдиреНрдЫред

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

рд╕реБрд░реБ рдЧрд░реНрдиреБ рдЕрдШрд┐, рдо рд╡рдВрд╢ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдордХреЛ рдмрд╛рд░реЗрдорд╛ рдХреЗрд╣реА рд╡рд╛рдХреНрдпрд╣рд░реВ рдкрдвреНрди рд╕реБрдЭрд╛рд╡ рджрд┐рдиреНрдЫреБ:

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

рд╕рдмреИ! рдЕрдм рд╣рд╛рдореА рдорд╛рд░рд┐рдпрд╛рдирд╛ рдЯреНрд░реЗрдиреНрдЪрдХреЛ рд╕рдмреИрднрдиреНрджрд╛ рдЧрд╣рд┐рд░реЛ рдЦрд╛рдбрд▓рдХреЛ рдЦреЛрдЬреАрдорд╛ рдЬрд╛рди рддрдпрд╛рд░ рдЫреМрдВред рд╕реБрд░реБ рдЧрд░реМрдВред

рдЧреНрд░реЗрдбрд┐рдпрдиреНрдЯ рдбрд┐рд╕реЗрдиреНрдЯрдХреЛ рд▓рд╛рдЧрд┐ рдХреЛрдб

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

рдЧреНрд░рд╛рдл рдирдореНрдмрд░ рек "рдЧреНрд░реЗрдбрд┐рдпрдиреНрдЯ рдбрд┐рд╕реЗрдиреНрдЯрдХреЛ рд╕рдордпрдорд╛ рд╡рд░реНрдЧ рд╡рд┐рдЪрд▓рдирдХреЛ рдпреЛрдЧ"

рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдордирдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ

рдЧреНрд░рд╛рдлрдорд╛ рд╣рд╛рдореА рджреЗрдЦреНрдЫреМрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдгрдХреЛ рд╕рд╛рде рддреНрд░реБрдЯрд┐ рдШрдЯреНрдЫ, рд░ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛рдХреЛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрдЫрд┐ рд╣рд╛рдореА рд▓рдЧрднрдЧ рддреЗрд░реНрд╕реЛ рд░реЗрдЦрд╛ рджреЗрдЦреНрдЫреМрдВред

рдЕрдиреНрддрдорд╛, рдХреЛрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рдордп рдорд╛ рднрд┐рдиреНрдирддрд╛ рдЕрдиреБрдорд╛рди рдЧрд░реМрдВ:

рдЧреНрд░реЗрдбрд┐рдпрдиреНрдЯ рдбрд┐рд╕реЗрдиреНрдЯ рдЧрдгрдирд╛ рд╕рдордп рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрди рдХреЛрдб

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()

рдЧреНрд░рд╛рдл рдирдореНрдмрд░ рел "рд╕реНрдЯреЛрдХрд╛рд╕реНрдЯрд┐рдХ рдЧреНрд░реЗрдбрд┐рдпрдиреНрдЯ рдбрд┐рд╕реЗрдиреНрдЯрдХреЛ рд╕рдордпрдорд╛ рд╡рд░реНрдЧ рд╡рд┐рдЪрд▓рдирдХреЛ рдпреЛрдЧ"

рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдордирдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ

рддрд╛рд▓рд┐рдХрд╛ рд╣реЗрд░реНрджрд╛, рд╕рдмреИ рдХреБрд░рд╛ рдард╛рдЙрдБрдорд╛ рдЦрд╕реНрдЫ рд░ рдЕрдм рд╣рд╛рдореА рд╕рдмреИ рдареАрдХ рдЧрд░реНрдиреЗрдЫреМрдВред

рддреНрдпрд╕реЛрднрдП рдХреЗ рднрдпреЛ? рдирд┐рдореНрди рдХреБрд░рд╛ рднрдпреЛред рдЬрдм рд╣рд╛рдореА рдЕрдирд┐рдпрдорд┐рдд рд░реВрдкрдорд╛ рдПрдХ рдорд╣рд┐рдирд╛ рдЪрдпрди рдЧрд░реНрдЫреМрдВ, рддрдм рдпреЛ рдЪрдпрди рдЧрд░рд┐рдПрдХреЛ рдорд╣рд┐рдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рд╣реЛ рдЬреБрди рд╣рд╛рдореНрд░реЛ рдПрд▓реНрдЧреЛрд░рд┐рджрдорд▓реЗ рд░рд╛рдЬрд╕реНрд╡ рдЧрдгрдирд╛рдорд╛ рддреНрд░реБрдЯрд┐ рдХрдо рдЧрд░реНрди рдЦреЛрдЬреНрдЫред рддреНрдпрд╕рдкрдЫрд┐ рд╣рд╛рдореА рдЕрд░реНрдХреЛ рдорд╣рд┐рдирд╛ рдЪрдпрди рдЧрд░реНрдЫреМрдВ рд░ рдЧрдгрдирд╛ рджреЛрд╣реЛрд░реНрдпрд╛рдЙрдБрдЫреМрдВ, рддрд░ рд╣рд╛рдореА рджреЛрд╕реНрд░реЛ рдЪрдпрди рдЧрд░рд┐рдПрдХреЛ рдорд╣рд┐рдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рддреНрд░реБрдЯрд┐ рдШрдЯрд╛рдЙрдБрдЫреМрдВред рдЕрдм рдпрд╛рдж рдЧрд░реНрдиреБрд╣реЛрд╕реН рдХрд┐ рдкрд╣рд┐рд▓реЛ рджреБрдИ рдорд╣рд┐рдирд╛ рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдорди рд╕рдореАрдХрд░рдгрдХреЛ рд░реЗрдЦрд╛рдмрд╛рдЯ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рд░реВрдкрдорд╛ рд╡рд┐рдЪрд▓рд┐рдд рд╣реБрдиреНрдЫред рдпрд╕рдХреЛ рдорддрд▓рдм рдпреЛ рд╣реЛ рдХрд┐ рдЬрдм рдпреА рджреБрдИ рдорд╣рд┐рдирд╛рд╣рд░реВ рдордзреНрдпреЗ рдХреБрдиреИ рдкрдирд┐ рдЪрдпрди рдЧрд░рд┐рдиреНрдЫ, рддрд┐рдиреАрд╣рд░реВрдордзреНрдпреЗ рдкреНрд░рддреНрдпреЗрдХрдХреЛ рддреНрд░реБрдЯрд┐ рдШрдЯрд╛рдПрд░, рд╣рд╛рдореНрд░реЛ рдПрд▓реНрдЧреЛрд░рд┐рджрдорд▓реЗ рд╕рдореНрдкреВрд░реНрдг рдирдореВрдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рддреНрд░реБрдЯрд┐рд▓рд╛рдИ рдЧрдореНрднреАрд░ рд░реВрдкрдорд╛ рдмрдврд╛рдЙрдБрдЫред рддреНрдпрд╕реЛрднрдП рдХреЗ рдЧрд░реНрдиреЗ? рдЬрд╡рд╛рдл рд╕рд░рд▓ рдЫ: рддрдкрд╛рдИрдВрд▓реЗ рд╡рдВрд╢ рдЪрд░рдг рдХрдо рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдЖрдЦрд┐рд░, рд╡рдВрд╢ рдЪрд░рдг рдШрдЯрд╛рдПрд░, рддреНрд░реБрдЯрд┐рд▓реЗ рдорд╛рдерд┐ рд░ рддрд▓ "рдЬрдореНрдкрд┐рдЩ" рдкрдирд┐ рд░реЛрдХреНрдиреЗрдЫред рд╡рд╛ рдмрд░реБ, "рдЬрдореНрдкрд┐рдЩ" рддреНрд░реБрдЯрд┐ рд░реЛрдХрд┐рдиреЗрдЫреИрди, рддрд░ рдпрд╕рд▓реЗ рдпрддрд┐ рдЪрд╛рдБрдбреЛ рдЧрд░реНрджреИрди :) рдЬрд╛рдБрдЪ рдЧрд░реМрдВред

рд╕рд╛рдиреЛ рд╡реГрджреНрдзрд┐ рд╕рдВрдЧ 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()

рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдордирдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ

рдЧреНрд░рд╛рдл рдирдореНрдмрд░ рем "рд╕реНрдЯреЛрдХрд╛рд╕реНрдЯрд┐рдХ рдЧреНрд░реЗрдбрд┐рдпрдиреНрдЯ рдбрд┐рд╕реЗрдиреНрдЯ (реореж рд╣рдЬрд╛рд░ рдкрд╛рдЗрд▓рд╛) рдХреЛ рд╕рдордпрдорд╛ рд╡рд░реНрдЧ рд╡рд┐рдЪрд▓рдирдХреЛ рдпреЛрдЧ"

рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдордирдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ

рдЧреБрдгрд╛рдВрдХ рд╕реБрдзрд╛рд░ рднрдПрдХреЛ рдЫ, рддрд░ рдЕрдЭреИ рдкрдирд┐ рдЖрджрд░реНрд╢ рдЫреИрдиред рдХрд╛рд▓реНрдкрдирд┐рдХ рд░реВрдкрдорд╛, рдпреЛ рдпрд╕ рддрд░рд┐рдХрд╛рд▓реЗ рд╕рдЪреНрдпрд╛рдЙрди рд╕рдХрд┐рдиреНрдЫред рд╣рд╛рдореА рдЪрдпрди рдЧрд░реНрдЫреМрдВ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдЕрдиреНрддрд┐рдо 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()

рдЧреНрд░рд╛рдл рдирдореНрдмрд░ рен "рд╡рд░реНрдЧ рд╡рд┐рдЪрд▓рдирдХреЛ рдпреЛрдЧрдлрд▓ SGD (рдкрд╣рд┐рд▓реЛ резрежрежреж рдЪрд░рдгрд╣рд░реВ)"

рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдордирдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ

рдЧреНрд░рд╛рдл рдирдореНрдмрд░ рео "рд╡рд░реНрдЧ рд╡рд┐рдЪрд▓рдирдХреЛ рдпреЛрдЧрдлрд▓ SGD (рдЕрдиреНрддрд┐рдо резрежрежреж рдЪрд░рдгрд╣рд░реВ)"

рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдордирдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ

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

рдЕрдм рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕реНрдЯреЛрдХрд╛рд╕реНрдЯрд┐рдХ рдЧреНрд░реЗрдбрд┐рдпрдиреНрдЯ рдбрд┐рд╕реЗрдиреНрдЯ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реМрдВ рдирдореНрд░ (рд░ рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЗ рдкрд╣рд┐рдЪрд╛рди рдЧрд░реЗрдХрд╛ рдвреБрдЩреНрдЧрд╛рд╣рд░реВрдорд╛ рдареЗрд╕ рдирдкрд╛рдФрдВ)

Stochastic Gradient Descent рдХреЛ рд▓рд╛рдЧрд┐ рдХреЛрдб (NumPy)

# ╨┤╨╗╤П ╨╜╨░╤З╨░╨╗╨░ ╨╜╨░╨┐╨╕╤И╨╡╨╝ ╤Д╤Г╨╜╨║╤Ж╨╕╤О ╨│╤А╨░╨┤╨╕╨╡╨╜╤В╨╜╨╛╨│╨╛ ╤И╨░╨│╨░
def stoch_grad_step_numpy(vector_init, X, ind, y, l):
    x = X[ind]
    y_pred = np.dot(x,vector_init)
    err = y_pred - y[ind]
    grad_a = err
    grad_b = x[1]*err
    return vector_init - l*np.array([grad_a, grad_b])

# ╨╛╨┐╤А╨╡╨┤╨╡╨╗╨╕╨╝ ╤Д╤Г╨╜╨║╤Ж╨╕╤О ╤Б╤В╨╛╤Е╨░╤Б╤В╨╕╤З╨╡╤Б╨║╨╛╨│╨╛ ╨│╤А╨░╨┤╨╕╨╡╨╜╤В╨╜╨╛╨│╨╛ ╤Б╨┐╤Г╤Б╨║╨░
def stoch_grad_descent_numpy(X, y, l=0.1, steps = 800):
    vector_init = np.array([[np.random.randint(X.shape[0])], [np.random.randint(X.shape[0])]])
    errors = []
    for i in range(steps):
        ind = np.random.randint(X.shape[0])
        new_vector = stoch_grad_step_numpy(vector_init, X, ind, y, l)
        vector_init = new_vector
        errors.append(error_square_numpy(vector_init,X,y))
    return (vector_init), (errors)

# ╨╖╨░╨┐╨╕╤И╨╡╨╝ ╨╝╨░╤Б╤Б╨╕╨▓ ╨╖╨╜╨░╤З╨╡╨╜╨╕╨╣ 
list_parametres_stoch_gradient_descence = stoch_grad_descent_numpy(x_np, y_np, l=0.001, steps = 80000)

print ' 33[1m' + ' 33[4m' + "╨Ч╨╜╨░╤З╨╡╨╜╨╕╤П ╨║╨╛╤Н╤Д╤Д╨╕╤Ж╨╕╨╡╨╜╤В╨╛╨▓ a ╨╕ b:" + ' 33[0m'
print 'a =', round(list_parametres_stoch_gradient_descence[0][0],3)
print 'b =', round(list_parametres_stoch_gradient_descence[0][1],3)
print


print ' 33[1m' + ' 33[4m' + "╨б╤Г╨╝╨╝╨░ ╨║╨▓╨░╨┤╤А╨░╤В╨╛╨▓ ╨╛╤В╨║╨╗╨╛╨╜╨╡╨╜╨╕╨╣:" + ' 33[0m'
print round(list_parametres_stoch_gradient_descence[1][-1],3)
print



print ' 33[1m' + ' 33[4m' + "╨Ъ╨╛╨╗╨╕╤З╨╡╤Б╤В╨▓╨╛ ╨╕╤В╨╡╤А╨░╤Ж╨╕╨╣ ╨▓ ╤Б╤В╨╛╤Е╨░╤Б╤В╨╕╤З╨╡╤Б╨║╨╛╨╝ ╨│╤А╨░╨┤╨╕╨╡╨╜╤В╨╜╨╛╨╝ ╤Б╨┐╤Г╤Б╨║╨╡:" + ' 33[0m'
print len(list_parametres_stoch_gradient_descence[1])
print

рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдордирдХреЛ рд╕рдореАрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ

рдорд╛рдирд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдирдЧрд░реА рдШрдЯреНрджрд╛ рд▓рдЧрднрдЧ рдЙрд╕реНрддреИ рднрдП рдирдореНрд░ред рдпрджреНрдпрдкрд┐, рдпреЛ рддрд╛рд░реНрдХрд┐рдХ рдЫред

рд╕реНрдЯреЛрдХрд╛рд╕реНрдЯрд┐рдХ рдЧреНрд░реЗрдбрд┐рдпрдиреНрдЯ рдбрд┐рд╕реЗрдиреНрдЯрд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ рдХрддрд┐ рд╕рдордп рд▓рд┐рдПрдХреЛ рдЫ рднрдиреА рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрдиреБрд╣реЛрд╕реНред

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди