{"id":372288,"date":"2024-05-21T05:08:39","date_gmt":"2024-05-21T05:08:39","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=372288"},"modified":"-0001-11-30T00:00:00","modified_gmt":"2024-05-21T05:08:39","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=372288","title":{"rendered":"<span>\u041b\u0438\u043d\u0435\u0439\u043d\u0430\u044f \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044f. \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0438\u0434\u0435\u044f, \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441 \u043d\u0443\u043b\u044f \u043d\u0430 Python<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"float full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/561\/59d\/615\/56159d6158cee1f6e9f9a5b131b4b612.png\" width=\"769\" height=\"441\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/561\/59d\/615\/56159d6158cee1f6e9f9a5b131b4b612.png\"\/><\/figure>\n<p>\u0412 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u043c \u0438 \u0433\u043b\u0443\u0431\u043e\u043a\u043e\u043c \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438 \u043b\u0438\u043d\u0435\u0439\u043d\u0430\u044f \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044f \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043e\u0441\u043e\u0431\u043e\u0435 \u043c\u0435\u0441\u0442\u043e, \u044f\u0432\u043b\u044f\u044f\u0441\u044c \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c, \u043d\u043e \u0430 \u0442\u0430\u043a\u0436\u0435 \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u043c \u0434\u043b\u044f \u043c\u043d\u043e\u0433\u0438\u0445 \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0439. \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u0440\u0430\u0431\u043e\u0442\u044b \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438 \u0441 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0441 \u043d\u0443\u043b\u044f \u043d\u0430 Python, \u043d\u043e \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0435\u0451 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438 \u043f\u0440\u043e\u0432\u0435\u0434\u0451\u043d \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0446\u0438\u0438. \u041f\u043e\u043c\u0438\u043c\u043e \u044d\u0442\u043e\u0433\u043e, \u0432 \u043a\u043e\u043d\u0446\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u044b \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438 \u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0433\u043b\u0443\u0431\u043e\u043a\u043e\u0433\u043e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u043b\u0435\u043d\u0438\u044f.  <\/p>\n<blockquote>\n<p><em>\u041d\u043e\u0443\u0442\u0431\u0443\u043a \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043d\u0430\u00a0<\/em><a href=\"https:\/\/www.kaggle.com\/code\/egazakharenko\/linear-regression-from-scratch-its-types\" rel=\"noopener noreferrer nofollow\"><strong><em>Kaggle<\/em><\/strong><\/a><em>\u00a0(eng) \u0438\u00a0<\/em><a href=\"https:\/\/github.com\/egaoharu-kensei\/ML-algorithms-from-scratch.-Course-for-beginners\/blob\/main\/Notebooks%20%5Brus%5D\/ML-%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B%20%D1%81%20%D0%BD%D1%83%D0%BB%D1%8F\/01%29%20%D0%9B%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D0%B0%D1%8F%20%D1%80%D0%B5%D0%B3%D1%80%D0%B5%D1%81%D1%81%D0%B8%D1%8F%20%D0%B8%20%D0%B5%D1%91%20%D0%B2%D0%B8%D0%B4%D1%8B.ipynb\" rel=\"noopener noreferrer nofollow\"><strong><em>GitHub<\/em><\/strong><\/a><em>\u00a0(rus).<\/em><\/p>\n<\/blockquote>\n<h3>\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435<\/h3>\n<ul>\n<li>\n<p><a href=\"#definition\" rel=\"noopener noreferrer nofollow\">\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438<\/a> <\/p>\n<\/li>\n<li>\n<p><a href=\"#polynomial\" rel=\"noopener noreferrer nofollow\">\u041f\u043e\u043b\u0438\u043d\u043e\u043c\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044f<\/a> <\/p>\n<\/li>\n<li>\n<p><a href=\"#regularization\" rel=\"noopener noreferrer nofollow\">\u0420\u0435\u0433\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438 (Ridge, Lasso, ElasticNet)<\/a> <\/p>\n<\/li>\n<li>\n<p><a href=\"#pros_and_cons\" rel=\"noopener noreferrer nofollow\">\u041f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438 \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438<\/a> <\/p>\n<\/li>\n<li>\n<p><a href=\"#additional_sources\" rel=\"noopener noreferrer nofollow\">\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438<\/a> <\/p>\n<\/li>\n<\/ul>\n<p><a class=\"anchor\" name=\"definition\" id=\"definition\"><\/a><\/p>\n<h3>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438<\/h3>\n<p>\u041b\u0438\u043d\u0435\u0439\u043d\u0430\u044f \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044f (Linear regression) \u2014 \u043e\u0434\u0438\u043d \u0438\u0437 \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043e\u0442 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0430 \u0432 \u0432\u0438\u0434\u0435 \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"y = kx + b\" alt=\"y = kx + b\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a87\/73e\/ef8\/a8773eef8adef2bb888e9c7eb94a1b79.svg\" width=\"88\" height=\"20\"\/>. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0431\u044b\u043b\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0438\u043b\u0438 \u043f\u0430\u0440\u043d\u0430\u044f \u043b\u0438\u043d\u0435\u0439\u043d\u0430\u044f \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044f, \u0430 \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0432\u0438\u0434\u0430\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"f_{w, b}(x) = w_0x_0 + w_1x_1 +... + w_{n}x_{n} + b = w \\cdot x + b\" alt=\"f_{w, b}(x) = w_0x_0 + w_1x_1 +... + w_{n}x_{n} + b = w \\cdot x + b\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1f8\/0c3\/89c\/1f80c389cd28240f6d32b6c3ae50e16d.svg\" width=\"420\" height=\"23\"\/>\u00a0\u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0435\u0439, \u0433\u0434\u0435\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"b\" alt=\"b\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e42\/aa2\/f10\/e42aa2f10563d71f9d78a47c1e79523a.svg\" width=\"8\" height=\"17\"\/>\u00a0\u2014 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438,\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"w\" alt=\"w\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/685\/17b\/d7c\/68517bd7c94dda8e6282f3b614f284d1.svg\" width=\"14\" height=\"12\"\/> \u2014 \u0432\u0435\u043a\u0442\u043e\u0440 \u0435\u0451 \u0432\u0435\u0441\u043e\u0432, \u0430\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"x\" alt=\"x\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/166\/33b\/449\/16633b449e01799ab895ea85e2d538b8.svg\" width=\"11\" height=\"12\"\/>\u00a0\u2014 \u0432\u0435\u043a\u0442\u043e\u0440 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u0432 \u043e\u0434\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0435\u0433\u043e \u043e\u0431\u0440\u0430\u0437\u0446\u0430.<\/p>\n<p>\u041a \u0434\u0440\u0443\u0433\u0438\u043c \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438 \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u0433\u043e\u043c\u043e\u0441\u043a\u0435\u0434\u0430\u0441\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u044c (\u0434\u0438\u0441\u043f\u0435\u0440\u0441\u0438\u044f \u043e\u0441\u0442\u0430\u0442\u043a\u043e\u0432 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u0430 \u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u0430), \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043c\u0438\u043b\u044c\u0442\u0438\u043a\u043e\u043b\u043b\u0438\u043d\u0435\u0430\u0440\u043d\u043e\u0441\u0442\u0438 (\u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0430\u043c\u0438).<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/640\/d26\/1da\/640d261da224aee8ee030c83644c8c88.png\" alt=\"\u0418\u043d\u0442\u0443\u0438\u0446\u0438\u044f \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438\" title=\"\u0418\u043d\u0442\u0443\u0438\u0446\u0438\u044f \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438\" width=\"529\" height=\"449\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/640\/d26\/1da\/640d261da224aee8ee030c83644c8c88.png\"\/><\/p>\n<div><figcaption><strong>\u0418\u043d\u0442\u0443\u0438\u0446\u0438\u044f \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438<\/strong><\/figcaption><\/div>\n<\/figure>\n<h4>\u041c\u0435\u0442\u043e\u0434 \u043d\u0430\u0438\u043c\u0435\u043d\u044c\u0448\u0438\u0445 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043e\u0432 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u0442\u0435\u0440\u044c<\/h4>\n<p>\u0412\u044b\u0431\u043e\u0440 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u043e\u043d\u043d\u043e\u0439 \u043b\u0438\u043d\u0438\u0438 (\u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438), \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0435\u0439 \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u044c \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u0438\u043b\u0443\u0447\u0448\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u0442\u0435\u0440\u044c\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"J\" alt=\"J\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1fc\/e8c\/4b3\/1fce8c4b390d9b8ef33f1f980a182d39.svg\" width=\"12\" height=\"17\"\/>, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0432 \u0432\u0438\u0434\u0435 \u0441\u0440\u0435\u0434\u043d\u0435\u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0438\u0447\u043d\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u0438. \u041f\u0440\u043e\u0449\u0435 \u0433\u043e\u0432\u043e\u0440\u044f, \u043b\u0438\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u0434\u0430\u043d\u043d\u044b\u0435 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0432 \u0441\u0440\u0435\u0434\u043d\u0435\u043c \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043e\u0432 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0445 \u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0431\u044b\u043b\u0430 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430. \u0414\u0430\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u043d\u0430\u0438\u043c\u0435\u043d\u044c\u0448\u0438\u0445 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043e\u0432.<\/p>\n<p>\u041f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0436\u0435 \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0432\u044b\u0431\u0440\u043e\u0441\u043e\u0432 \u0432 \u0434\u0430\u043d\u043d\u044b\u0445, \u0431\u043e\u043b\u0435\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u043c\u043e\u0436\u0435\u0442 \u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043c\u0435\u0442\u043e\u0434 \u043d\u0430\u0438\u043c\u0435\u043d\u044c\u0448\u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u043e\u0434\u043d\u0430\u043a\u043e \u0443 \u043d\u0435\u0433\u043e \u0435\u0441\u0442\u044c \u043e\u0434\u0438\u043d \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u044b\u0439 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a: \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043c\u043e\u0434\u0443\u043b\u044f \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u0432 \u0442\u043e\u0447\u043a\u0435\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"x=0\" alt=\"x=0\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4cb\/422\/990\/4cb4229904f50c407719019098fc5ef1.svg\" width=\"46\" height=\"16\"\/>, \u0447\u0442\u043e \u0432 \u0440\u044f\u0434\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0442\u0440\u0443\u0434\u043d\u0438\u0442\u044c \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e \u043e\u0448\u0438\u0431\u043a\u0438 \u043c\u043e\u0434\u0435\u043b\u0438. \u0421\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u0442\u0435\u043e\u0440\u0435\u043c\u044b <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%93%D0%B0%D1%83%D1%81%D1%81%D0%B0_%E2%80%94_%D0%9C%D0%B0%D1%80%D0%BA%D0%BE%D0%B2%D0%B0\" rel=\"noopener noreferrer nofollow\">\u0413\u0430\u0443\u0441\u0441\u0430-\u041c\u0430\u0440\u043a\u043e\u0432\u0430<\/a>, \u043c\u0435\u0442\u043e\u0434 \u043d\u0430\u0438\u043c\u0435\u043d\u044c\u0448\u0438\u0445 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043e\u0432 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043e\u0446\u0435\u043d\u043a\u043e\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043c\u043e\u0434\u0435\u043b\u0438 \u0441\u0440\u0435\u0434\u0438 \u0432\u0441\u0435\u0445 \u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0445 \u0438 \u043d\u0435\u0441\u043c\u0435\u0449\u0451\u043d\u043d\u044b\u0445 \u043e\u0446\u0435\u043d\u043e\u043a \u0437\u0430 \u0441\u0447\u0451\u0442 \u043c\u0435\u043d\u044c\u0448\u0435\u0439 \u0434\u0438\u0441\u043f\u0435\u0440\u0441\u0438\u0438.<\/p>\n<p><strong>\u0412\u044b\u0432\u043e\u0434 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f (least squares normal equation)<\/strong>  <\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"J(w, X, y) = \\frac{1}{2n} \\sum\\limits_{i = 1}^{n} (w^T x_i - y_i)^2 = \\frac{1}{2n} ||X w - y||^{2} = \\frac{1}{2n} (X w - y)^T (X w - y) = \\\\ = \\frac{1}{2n} ((X w)^T X w - (X w)^T y - y^T X w + y^T y) = |(X w)^T y = y^T X w| = \\\\ = \\frac{1}{2n} (w^T X^T X w - 2 y^T X w + y^T y)\" alt=\"J(w, X, y) = \\frac{1}{2n} \\sum\\limits_{i = 1}^{n} (w^T x_i - y_i)^2 = \\frac{1}{2n} ||X w - y||^{2} = \\frac{1}{2n} (X w - y)^T (X w - y) = \\\\ = \\frac{1}{2n} ((X w)^T X w - (X w)^T y - y^T X w + y^T y) = |(X w)^T y = y^T X w| = \\\\ = \\frac{1}{2n} (w^T X^T X w - 2 y^T X w + y^T y)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/707\/063\/e37\/707063e37ea50e234b83e27543a1cceb.svg\" width=\"697\" height=\"152\"\/><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"\\frac{\\partial J}{\\partial w} = 0 \\ \\ \\Rightarrow \\ \\ \\frac{1}{2n} (2X^TX w - 2X^T y) = 0 \\ \\ \\Rightarrow \\ \\ X^TX w = X^T y \\ \\ \\Rightarrow \\ \\ \\\\ \\Rightarrow w = (X^TX)^{-1} X^T y\" alt=\"\\frac{\\partial J}{\\partial w} = 0 \\ \\ \\Rightarrow \\ \\ \\frac{1}{2n} (2X^TX w - 2X^T y) = 0 \\ \\ \\Rightarrow \\ \\ X^TX w = X^T y \\ \\ \\Rightarrow \\ \\ \\\\ \\Rightarrow w = (X^TX)^{-1} X^T y\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/92a\/cdc\/dee\/92acdcdee6edbdabcedeafb2d5aab2b9.svg\" width=\"697\" height=\"74\"\/><\/p>\n<h4>\u041f\u0440\u0438\u043d\u0446\u0438\u043f \u0440\u0430\u0431\u043e\u0442\u044b \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438<\/h4>\n<p>\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 2 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438:<\/p>\n<ul>\n<li>\n<p>1) \u041f\u0440\u044f\u043c\u043e\u0435 (\u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0435) \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0432 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0432\u0438\u0434\u0435\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"w = (X^{T}X)^{-1}X^{T} y\" alt=\"w = (X^{T}X)^{-1}X^{T} y\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/606\/be9\/7b1\/606be97b154cbf5bc5f330cb5b725c8c.svg\" width=\"156\" height=\"25\"\/>, \u0433\u0434\u0435 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"w\" alt=\"w\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c4f\/160\/732\/c4f1607328e8dba4f91d99ebab4a3040.svg\" width=\"14\" height=\"12\"\/>\u00a0\u2014 \u0432\u0435\u043a\u0442\u043e\u0440 \u0432\u0435\u0441\u043e\u0432, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"b\" alt=\"b\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/54f\/2e3\/177\/54f2e3177e18bff81ba718aef1c6e2ee.svg\" width=\"8\" height=\"17\"\/>. \u0413\u043b\u0430\u0432\u043d\u044b\u0439 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438 \u0431\u043e\u043b\u044c\u0448\u043e\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u0432.<\/p>\n<\/li>\n<li>\n<p>2) \u0418\u0442\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0441 \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u044b\u043c \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u0435\u043c \u043e\u0448\u0438\u0431\u043a\u0438 \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0441\u043f\u0443\u0441\u043a\u0430 \u0438 \u0435\u0433\u043e \u0440\u0430\u0437\u043d\u043e\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u0435\u0439. <em>\u0418\u043c\u0435\u043d\u043d\u043e \u0434\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435<\/em>.<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u041b\u0438\u043d\u0435\u0439\u043d\u0430\u044f \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0441\u043f\u0443\u0441\u043a\u0430 \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c<\/strong>:<\/p>\n<ul>\n<li>\n<p>1) \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0443\u043b\u0435\u0432\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0432\u0435\u0441\u043e\u0432, \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0438 \u0438\u0445 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>2) \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0433\u043d\u043e\u0437;<\/p>\n<\/li>\n<li>\n<p>3) \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0430 \u043f\u0435\u0440\u0435\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432\u0435\u0441\u043e\u0432 \u0438 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u0435 \u0438\u0445 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043e\u0432 (\u0440\u0430\u0437\u043d\u043e\u0441\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044f\u0445);<\/p>\n<\/li>\n<li>\n<p>4) \u0448\u0430\u0433\u0438 2-3 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0442\u0441\u044f \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u0435 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043e\u0432 \u043d\u0435 \u0441\u0442\u0430\u043d\u0435\u0442 \u043c\u0435\u043d\u044c\u0448\u0435 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0440\u043e\u0433\u043e\u0432\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f;<\/p>\n<\/li>\n<li>\n<p>5) \u0438\u0442\u043e\u0433\u043e\u0432\u044b\u043c \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u043b\u0438\u043d\u0435\u0439\u043d\u0430\u044f \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0432\u0435\u0441\u043e\u0432 + \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0438 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u0432 \u043d\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u0435.<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0424\u043e\u0440\u043c\u0443\u043b\u044b \u0434\u043b\u044f \u0440\u0430\u0441\u0447\u0451\u0442\u043e\u0432<\/strong>  <\/p>\n<p>\u0413\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u044b \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0438 \u0432\u0435\u0441\u043e\u0432:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"\\begin{align} \\frac{\\partial J(\\Theta)}{\\partial b}  &amp;= \\frac{1}{n} \\sum\\limits_{i = 1}^{n} (f_{w ,b}(x_i) - y_i) \\\\ \\frac{\\partial J(\\Theta)}{\\partial w}  &amp;= \\frac{1}{n} \\sum\\limits_{i = 1}^{n} (f_{w ,b}(x_i) - y_i) x_i \\\\ \\end{align}\" alt=\"\\begin{align} \\frac{\\partial J(\\Theta)}{\\partial b}  &amp;= \\frac{1}{n} \\sum\\limits_{i = 1}^{n} (f_{w ,b}(x_i) - y_i) \\\\ \\frac{\\partial J(\\Theta)}{\\partial w}  &amp;= \\frac{1}{n} \\sum\\limits_{i = 1}^{n} (f_{w ,b}(x_i) - y_i) x_i \\\\ \\end{align}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/149\/338\/510\/149338510349e48343c5360971734d85.svg\" width=\"277\" height=\"115\"\/><\/p>\n<p>\u041f\u0440\u0430\u0432\u0438\u043b\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0438 \u0432\u0435\u0441\u043e\u0432 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0441\u043f\u0443\u0441\u043a\u0430:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"\\begin{align} \\text{repeat}&amp;\\text{ until convergence:} \\; \\lbrace \\newline\\; &amp; b_j = b_{j-1} - \\alpha \\frac{\\partial J(\\Theta)}{\\partial b_j} \\\\ &amp; w_j = w_{j-1} - \\alpha \\frac{\\partial J(\\Theta)}{\\partial w_j} \\newline \\rbrace \\end{align}\" alt=\"\\begin{align} \\text{repeat}&amp;\\text{ until convergence:} \\; \\lbrace \\newline\\; &amp; b_j = b_{j-1} - \\alpha \\frac{\\partial J(\\Theta)}{\\partial b_j} \\\\ &amp; w_j = w_{j-1} - \\alpha \\frac{\\partial J(\\Theta)}{\\partial w_j} \\newline \\rbrace \\end{align}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/599\/7e9\/69f\/5997e969f5125e431ecaaa1e13e06487.svg\" width=\"241\" height=\"156\"\/><\/p>\n<p>\u0413\u0434\u0435:<\/p>\n<ul>\n<li>\n<p> <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\alpha\" alt=\"\\alpha\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cc8\/e14\/122\/cc8e141229bbdccb6dacd136ad6c54d4.svg\" width=\"12\" height=\"12\"\/> \u2014 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f;<\/p>\n<\/li>\n<li>\n<p> <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"j\" alt=\"j\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9d0\/1ea\/d1d\/9d01ead1dd3708f3ac21889a0bf4a2d8.svg\" width=\"8\" height=\"19\"\/> \u2014 \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0438 \u0432\u0435\u0441\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p> <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\Theta\" alt=\"\\Theta\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e10\/3b2\/d88\/e103b2d88c6e5c544751d0791d05a117.svg\" width=\"15\" height=\"17\"\/> \u2014 \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432.<\/p>\n<\/li>\n<\/ul>\n<h4>\u0418\u043c\u043f\u043e\u0440\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a<\/h4>\n<pre><code class=\"python\">import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.datasets import make_regression from sklearn.model_selection import train_test_split from sklearn.preprocessing import scale, PolynomialFeatures from sklearn.linear_model import LinearRegression, Ridge, Lasso, ElasticNet from sklearn.metrics import mean_absolute_percentage_error, mean_squared_error, r2_score<\/code><\/pre>\n<h4>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0430 Python \u0441 \u043d\u0443\u043b\u044f<\/h4>\n<p><strong>\u041b\u0438\u043d\u0435\u0439\u043d\u0430\u044f \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043c\u0430\u0442\u0440\u0438\u0447\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430<\/strong><\/p>\n<pre><code class=\"python\">class MatrixLinearRegression:      def fit(self, X, y):         X = np.insert(X, 0, 1, axis=1)   # add ones vector         XT_X_inv = np.linalg.inv(X.T @ X)   # (X.T * X) ** (-1) inverse matrix         weights = np.linalg.multi_dot([XT_X_inv, X.T, y])   # XT_X_inv * X.T * y         self.bias, self.weights = weights[0], weights[1:]      def predict(self, X_test):         return X_test @ self.weights + self.bias<\/code><\/pre>\n<p><strong>\u041b\u0438\u043d\u0435\u0439\u043d\u0430\u044f \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u0430\u043a\u0435\u0442\u043d\u043e\u0433\u043e \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0441\u043f\u0443\u0441\u043a\u0430<\/strong><\/p>\n<pre><code class=\"python\">class GDLinearRegression:     def __init__(self, learning_rate=0.01, tolerance=1e-8):         self.learning_rate = learning_rate         self.tolerance = tolerance      def fit(self, X, y):         n_samples, n_features = X.shape         self.bias, self.weights = 0, np.zeros(n_features)         previous_db, previous_dw = 0, np.zeros(n_features)          while True:             y_pred = X @ self.weights + self.bias             db = 1 \/ n_samples * np.sum(y_pred - y)             dw = 1 \/ n_samples * X.T @ (y_pred - y)             self.bias -= self.learning_rate * db             self.weights -= self.learning_rate * dw              abs_db_reduction = np.abs(db - previous_db)             abs_dw_reduction = np.abs(dw - previous_dw)              if abs_db_reduction &lt; self.tolerance:                 if abs_dw_reduction.all() &lt; self.tolerance:                     break              previous_db = db             previous_dw = dw      def predict(self, X_test):         return X_test @ self.weights + self.bias<\/code><\/pre>\n<h4>\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430<\/h4>\n<p>\u0414\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d <a href=\"https:\/\/www.kaggle.com\/datasets\/hussainnasirkhan\/multiple-linear-regression-dataset\" rel=\"noopener noreferrer nofollow\">Multiple Linear Regression Dataset<\/a>, \u0433\u0434\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u0445\u043e\u0434 \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u043e\u0432 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0438\u0445 \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430 \u0438 \u043e\u043f\u044b\u0442\u0430.  <\/p>\n<pre><code class=\"python\">df_path = \"\/content\/drive\/MyDrive\/income.csv\" income = pd.read_csv(df_path) X1, y1 = income.iloc[:, :-1].values, income.iloc[:, -1].values X1_scaled = scale(X1) X1_train, X1_test, y1_train, y1_test = train_test_split(X1, y1, random_state=0) X1_train_s, X1_test_s, y1_train, y1_test = train_test_split(X1_scaled, y1, random_state=0) print(income)  correlation_matrix = income.corr() correlation_matrix.style.background_gradient(cmap='coolwarm')       age  experience  income 0    25           1   30450 1    30           3   35670 2    47           2   31580 3    32           5   40130 4    43          10   47830 5    51           7   41630 6    28           5   41340 7    33           4   37650 8    37           5   40250 9    39           8   45150 10   29           1   27840 11   47           9   46110 12   54           5   36720 13   51           4   34800 14   44          12   51300 15   41           6   38900 16   58          17   63600 17   23           1   30870 18   44           9   44190 19   37          10   48700                  age     experience    income age          1.000000    0.615165    0.532204 experience   0.615165    1.000000    0.984227 income       0.532204    0.984227    1.000000<\/code><\/pre>\n<h4>\u041e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0438 \u043e\u0446\u0435\u043d\u043a\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432<\/h4>\n<p>\u041a\u0430\u043a \u0438 \u043e\u0436\u0438\u0434\u0430\u043b\u043e\u0441\u044c, \u043b\u0438\u043d\u0435\u0439\u043d\u0430\u044f \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044f \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430 \u0445\u043e\u0440\u043e\u0448\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0432 \u0441\u0432\u044f\u0437\u0438 \u0441 \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c\u044e \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. \u041d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0435 \u0442\u0430\u043a\u0436\u0435 \u0432\u0438\u0434\u043d\u043e \u043a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0430\u044f \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c \u0445\u043e\u0440\u043e\u0448\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043b\u0438\u043d\u0435\u0439\u043d\u0443\u044e \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u044c \u0432 \u0434\u0430\u043d\u043d\u044b\u0445. \u0421\u0442\u043e\u0438\u0442 \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c, \u0447\u0442\u043e \u0432 \u043c\u043d\u043e\u0433\u043e\u043c\u0435\u0440\u043d\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u0432\u043c\u0435\u0441\u0442\u043e \u043b\u0438\u043d\u0438\u0438 \u0438\u043b\u0438 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438 \u0441\u0432\u044f\u0437\u044c \u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0433\u0438\u043f\u0435\u0440\u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c\u044e \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c\u044e\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"n\u22121\" alt=\"n\u22121\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f4c\/8ae\/e84\/f4c8aee84d37e91e01f83a81ffc530be.svg\" width=\"45\" height=\"17\"\/>.  <\/p>\n<p><strong>Linear regression (matrix method)<\/strong>  <\/p>\n<pre><code class=\"python\">matrix_linear_regression = MatrixLinearRegression() matrix_linear_regression.fit(X1_train_s, y1_train) matrix_lr_pred_res = matrix_linear_regression.predict(X1_test_s) matrix_lr_r2 = r2_score(y1_test, matrix_lr_pred_res) matrix_lr_mape = mean_absolute_percentage_error(y1_test, matrix_lr_pred_res)  print(f'Matrix Linear regression  R2 score: {matrix_lr_r2}') print(f'Matrix Linear regression MAPE: {matrix_lr_mape}', '\\n')  print(f'weights: {matrix_linear_regression.bias, *matrix_linear_regression.weights}') print(f'prediction: {matrix_lr_pred_res}')   Matrix Linear regression  R2 score: 0.9307237996010834 Matrix Linear regression MAPE: 0.04666577176525877   weights: (40922.38666080836, -1049.7866043343445, 8718.76435636617) prediction: [46528.00800666 35018.47848628 49448.73803373 38604.36954966  30788.13913983]<\/code><\/pre>\n<p><strong>Linear regression<\/strong>  <\/p>\n<pre><code class=\"python\">linear_regression = GDLinearRegression() linear_regression.fit(X1_train_s, y1_train) pred_res = linear_regression.predict(X1_test_s) r2 = r2_score(y1_test, pred_res) mape = mean_absolute_percentage_error(y1_test, pred_res)  print(f'Linear regression R2 score: {r2}') print(f'Linear regression MAPE: {mape}', '\\n')  print(f'weights: {linear_regression.bias, *linear_regression.weights}') print(f'prediction: {pred_res}')   Linear regression R2 score: 0.9307237996010985 Linear regression MAPE: 0.04666577176525461   weights: (40922.386660807955, -1049.7866043338142, 8718.76435636563) prediction: [46528.00800666 35018.47848628 49448.73803373 38604.36954966  30788.13913983]<\/code><\/pre>\n<p><strong>Linear regression (scikit-learn)<\/strong><\/p>\n<p>\u041a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438\u0441\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u0432\u0435\u0441\u0430 \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043c\u043e\u0434\u0435\u043b\u0438 \u043e\u0431\u0443\u0447\u0430\u043b\u0438\u0441\u044c \u043d\u0430 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0430\u0445. \u0415\u0441\u043b\u0438 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u043e\u0431\u0443\u0447\u0438\u0442\u044c \u043d\u0430 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0430\u0445, \u0442\u043e \u0432\u0435\u0441\u0430 \u0431\u0443\u0434\u0443\u0442 \u0442\u0430\u043a\u0438\u0435 \u0436\u0435 \u043a\u0430\u043a \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0432\u044b\u0448\u0435.<\/p>\n<pre><code class=\"python\">sk_linear_regression = LinearRegression() sk_linear_regression.fit(X1_train, y1_train)  sk_lr_pred_res = sk_linear_regression.predict(X1_test) sk_lr_r2 = r2_score(y1_test, sk_lr_pred_res) sk_lr_mape = mean_absolute_percentage_error(y1_test, sk_lr_pred_res)  print(f'Scikit-learn Linear regression R2 score: {sk_lr_r2}') print(f'Scikit-learn Linear regression MAPE: {sk_lr_mape}', '\\n')  print(f'weights: {sk_linear_regression.intercept_, *sk_linear_regression.coef_}') print(f'prediction: {sk_lr_pred_res}', '\\n')  sk_linear_regression.fit(X1_train_s, y1_train) print(f'scaled weights: {sk_linear_regression.intercept_, *sk_linear_regression.coef_}')   Scikit-learn Linear regression R2 score: 0.9307237996010832 Scikit-learn Linear regression MAPE: 0.046665771765258775   weights: (31734.098811233787, -107.40804717984585, 2168.8736968153985) prediction: [46528.00800666 35018.47848628 49448.73803373 38604.36954966  30788.13913983]   scaled weights: (40922.38666080837, -1049.7866043343417, 8718.764356366162)<\/code><\/pre>\n<p><strong>\u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438 \u0441 2 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0430\u043c\u0438<\/strong>  <\/p>\n<pre><code class=\"python\">feature1, feature2 = X1[:, 0], X1[:, 1] X1_linspace = np.linspace(feature1.min(), feature1.max()) X2_linspace = np.linspace(feature2.min(), feature2.max()) X1_surface, X2_surface = np.meshgrid(X1_linspace, X2_linspace) X_surfaces = np.array([X1_surface.ravel(), X2_surface.ravel()]).T  sk_linear_regression = LinearRegression() sk_linear_regression.fit(X1_train, y1_train) y_surface = sk_linear_regression.predict(X_surfaces).reshape(X1_surface.shape)  fig = plt.figure(figsize=(9, 7)) ax = plt.axes(projection='3d') ax.scatter(feature1, feature2, y1, color='red', marker='o') ax.plot_surface(X1_surface, X2_surface, y_surface, color='black', alpha=0.6) plt.title('Fitted linear regression surface') ax.set_xlabel('Age') ax.set_ylabel('Experience') ax.set_zlabel('Income') ax.view_init(20, 10) plt.show()<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b5d\/090\/89d\/b5d09089d4cee2eb13cb427590c84293.png\" alt=\"\u041f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c \u043e\u0431\u0443\u0447\u0435\u043d\u043d\u043e\u0439 \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438, \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0449\u0430\u044f \u0447\u0435\u0440\u0435\u0437 \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0439 \u043d\u0430\u0431\u043e\u0440\" title=\"\u041f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c \u043e\u0431\u0443\u0447\u0435\u043d\u043d\u043e\u0439 \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438, \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0449\u0430\u044f \u0447\u0435\u0440\u0435\u0437 \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0439 \u043d\u0430\u0431\u043e\u0440\" width=\"559\" height=\"581\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b5d\/090\/89d\/b5d09089d4cee2eb13cb427590c84293.png\"\/><\/p>\n<div><figcaption><strong>\u041f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c \u043e\u0431\u0443\u0447\u0435\u043d\u043d\u043e\u0439 \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438, \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0449\u0430\u044f \u0447\u0435\u0440\u0435\u0437 \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0439 \u043d\u0430\u0431\u043e\u0440<\/strong><\/figcaption><\/div>\n<\/figure>\n<p><a class=\"anchor\" name=\"polynomial\" id=\"polynomial\"><\/a><\/p>\n<h3>\u041f\u043e\u043b\u0438\u043d\u043e\u043c\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044f<\/h3>\n<p>\u041b\u0438\u043d\u0435\u0439\u043d\u0443\u044e \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044e \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u043a \u0434\u0430\u043d\u043d\u044b\u043c \u0441 \u043d\u0435\u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c\u044e, \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0430 \u0432 \u0432\u0438\u0434\u0435 \u043d\u043e\u0432\u044b\u0445 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u0432 \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435\u043c \u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u043c \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0435. \u0422\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u043b\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0435 \u0441\u0432\u044f\u0437\u0438 \u0432 \u043c\u043d\u043e\u0433\u043e\u043c\u0435\u0440\u043d\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u0432 \u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f\u00a0<strong>\u043f\u043e\u043b\u0438\u043d\u043e\u043c\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0435\u0439<\/strong>, \u0430 \u0434\u043b\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u0432 \u0432 \u043f\u043e\u043b\u0438\u043d\u043e\u043c \u0441\u0442\u0435\u043f\u0435\u043d\u0438 <em>n<\/em> \u0432 scikit-learn \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043a\u043b\u0430\u0441\u0441 PolynomialFeatures, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u0440\u043e\u043c\u0435 \u0441\u0442\u0435\u043f\u0435\u043d\u0435\u0439 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0430 \u0435\u0449\u0451 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0445 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 \u0434\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u0432\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"a\" alt=\"a\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1ff\/c04\/d1a\/1ffc04d1a71c1da77118c2f9b60c2241.svg\" width=\"10\" height=\"12\"\/>\u00a0\u0438\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"b\" alt=\"b\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/971\/65b\/aad\/97165baad25f233f069b56fdd4049652.svg\" width=\"8\" height=\"17\"\/>\u00a0\u0441\u043e \u0441\u0442\u0435\u043f\u0435\u043d\u044c\u044e 3 \u043a\u0440\u043e\u043c\u0435\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"a^2,\u00a0a^3\" alt=\"a^2,\u00a0a^3\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/283\/93e\/3e8\/28393e3e821420ae239257be9c162309.svg\" width=\"46\" height=\"24\"\/>\u00a0\u0438\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"b^2,\u00a0b^3\" alt=\"b^2,\u00a0b^3\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4e4\/499\/f90\/4e4499f9083c62f82482589552d2a804.svg\" width=\"43\" height=\"24\"\/>\u00a0\u0431\u0443\u0434\u0443\u0442 \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u0438\u0445 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 \u0432 \u0432\u0438\u0434\u0435\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"ab,\u00a0a^2b\u00a0\" alt=\"ab,\u00a0a^2b\u00a0\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6a1\/aa3\/d1e\/6a1aa3d1e829d900466a370485bd37f0.svg\" width=\"54\" height=\"24\"\/> \u0438\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"ab^2\" alt=\"ab^2\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/13b\/111\/d77\/13b111d77b1f6719bbd1b08708594319.svg\" width=\"27\" height=\"21\"\/>.<\/p>\n<blockquote>\n<p><em>\u0421\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043f\u043e\u043b\u0438\u043d\u043e\u043c\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044f \u0432\u0441\u0451 \u0435\u0449\u0451 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439, \u043e\u0434\u043d\u0430\u043a\u043e \u043d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0435 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u0432 \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0432 \u0432\u0438\u0434\u0435 \u043a\u0440\u0438\u0432\u043e\u0439, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0430\u044f \u0433\u0438\u043f\u0435\u0440\u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c \u0432 \u043c\u043d\u043e\u0433\u043e\u043c\u0435\u0440\u043d\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u043a\u0440\u0438\u0432\u043e\u0439 \u043b\u0438\u043d\u0438\u0438 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435.<\/em><\/p>\n<\/blockquote>\n<h4>\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430<\/h4>\n<p>\u0414\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d <a href=\"https:\/\/www.kaggle.com\/datasets\/mirajdeepbhandari\/polynomial-regression\" rel=\"noopener noreferrer nofollow\">Ice Cream Selling dataset<\/a> \u0433\u0434\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0434\u0430\u0436 \u043c\u043e\u0440\u043e\u0436\u0435\u043d\u043e\u0433\u043e \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0435.<\/p>\n<pre><code class=\"python\">df_path = \"\/content\/drive\/MyDrive\/ice_cream_selling.csv\" ice_cream = pd.read_csv(df_path) X2, y2 = ice_cream.iloc[:, :-1], ice_cream.iloc[:, -1] X2_train, X2_test, y2_train, y2_test = train_test_split(X2, y2, random_state=0) print(ice_cream.head())      Temperature (\u00b0C)  Ice Cream Sales (units) 0         -4.662263                41.842986 1         -4.316559                34.661120 2         -4.213985                39.383001 3         -3.949661                37.539845 4         -3.578554                32.284531<\/code><\/pre>\n<h4>\u041e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0438\u043d\u043e\u043c\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438 \u0438 \u043e\u0446\u0435\u043d\u043a\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432<\/h4>\n<p>\u041a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043b\u0438\u043d\u0435\u0439\u043d\u0430\u044f \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044f \u043d\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u0430 \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u044c \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043e\u043b\u0436\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0438 \u0438\u043c\u0435\u0435\u0442 \u0432\u044b\u0441\u043e\u043a\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443, \u043e\u0434\u043d\u0430\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0438\u043d\u043e\u043c\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0445\u043e\u0440\u043e\u0448\u0438\u043c.<\/p>\n<p>\u0421 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0435\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0438\u043d\u043e\u043c \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438, \u0442\u043e \u043c\u043e\u0434\u0435\u043b\u044c \u0431\u0443\u0434\u0435\u0442 \u044f\u0432\u043d\u043e \u043f\u0435\u0440\u0435\u043e\u0431\u0443\u0447\u0435\u043d\u0430, \u0430 \u0435\u0441\u043b\u0438 \u043d\u0438\u0437\u043a\u043e\u0439, \u0442\u043e \u043d\u0435\u0434\u043e\u043e\u0431\u0443\u0447\u0435\u043d\u0430. \u0414\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0431\u043e\u0440 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u043e\u043b\u0438\u043d\u043e\u043c\u043e\u0432 \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u044b \u043b\u0438\u043d\u0438\u0438, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0435\u0439 \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u044c \u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u0438\u043b\u0443\u0447\u0448\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c.<\/p>\n<pre><code class=\"python\">feature_name, target_name = ice_cream.columns poly_features = PolynomialFeatures(degree=8, include_bias=True) X2_poly = poly_features.fit_transform(X2) X2_poly_train, X2_poly_test = train_test_split(X2_poly, random_state=0)  sk_linear_regression = LinearRegression() sk_linear_regression.fit(X2_train, y2_train) sk_lr_pred_res = sk_linear_regression.predict(X2_test) sk_lr_pred_all_data_res = sk_linear_regression.predict(X2)  sk_polynomial_regression = LinearRegression() sk_polynomial_regression.fit(X2_poly_train, y2_train) sk_poly_lr_pred_res = sk_polynomial_regression.predict(X2_poly_test) sk_poly_lr_pred_all_data_res = sk_polynomial_regression.predict(X2_poly)  linear_regression_r2 = r2_score(y2_test, sk_lr_pred_res) polynomial_regression_r2 = r2_score(y2_test, sk_poly_lr_pred_res)  linear_regression_mse = mean_squared_error(y2_test, sk_lr_pred_res) polynomial_regression_mse = mean_squared_error(y2_test, sk_poly_lr_pred_res)  linear_regression_mape = mean_absolute_percentage_error(y2_test, sk_lr_pred_res) polynomial_regression_mape = mean_absolute_percentage_error(y2_test, sk_poly_lr_pred_res)  print(f'R2 score (Linear regression): {linear_regression_r2}') print(f'R2 score (Polynomial regression): {polynomial_regression_r2}', '\\n')  print(f'MSE (Linear regression): {linear_regression_mse}') print(f'MSE (Polynomial regression): {polynomial_regression_mse}', '\\n')  print(f'MAPE (Linear regression): {linear_regression_mape}') print(f'MAPE (Polynomial regression): {polynomial_regression_mape}')  plt.scatter(X2, y2) plt.plot(X2, sk_lr_pred_all_data_res, color='darkorange', label='Linear Regression') plt.plot(X2, sk_poly_lr_pred_all_data_res, color='green', label='Polynomial Regression') plt.title('Polynomial vs Linear regression') plt.xlabel(feature_name) plt.ylabel(target_name) plt.legend() plt.show()   R2 score (Linear regression): -0.17464074069095403 R2 score (Polynomial regression): 0.926383512778148   MSE (Linear regression): 104.58329195064105 MSE (Polynomial regression): 6.554390894849093   MAPE (Linear regression): 3.6799207393653273 MAPE (Polynomial regression): 0.4288439423788508<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/7a4\/9c3\/092\/7a49c309222afd287863875f4debc5f4.png\" width=\"562\" height=\"455\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7a4\/9c3\/092\/7a49c309222afd287863875f4debc5f4.png\"\/><\/figure>\n<p><a class=\"anchor\" name=\"regularization\" id=\"regularization\"><\/a><\/p>\n<h3>\u0420\u0435\u0433\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438 (Ridge, Lasso, ElasticNet)<\/h3>\n<p>\u0415\u0441\u043b\u0438 \u0432 \u043f\u043e\u043b\u0438\u043d\u043e\u043c\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u0443 \u043b\u0438\u043d\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043f\u043e\u043b\u0438\u043d\u043e\u043c\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u0435\u043f\u0435\u043d\u0435\u0439, \u0442\u043e \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0435\u0439 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u0432 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u043d\u0430\u043a\u043b\u043e\u043d\u0430 \u043b\u0438\u043d\u0438\u0438 \u043f\u0443\u0442\u0451\u043c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0432\u0435\u0441\u043e\u0432 \u043c\u043e\u0434\u0435\u043b\u0438, \u043e\u0431\u043c\u0435\u043d\u0438\u0432\u0430\u044f \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0435 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043d\u0430 \u043d\u0438\u0437\u043a\u0443\u044e \u0434\u0438\u0441\u043f\u0435\u0440\u0441\u0438\u044e.<\/p>\n<p><strong>\u0413\u0440\u0435\u0431\u043d\u0435\u0432\u0430\u044f \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044f (Ridge regression)<\/strong>\u00a0\u0438\u043b\u0438\u00a0<em>\u0440\u0435\u0433\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0422\u0438\u0445\u043e\u043d\u043e\u0432\u0430<\/em>\u00a0\u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u0443\u043b\u044c\u0442\u0438\u043a\u043e\u043b\u043b\u0438\u043d\u0435\u0430\u0440\u043d\u043e\u0441\u0442\u0438 \u0447\u0435\u0440\u0435\u0437 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 L2-\u0440\u0435\u0433\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043a \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u0442\u0435\u0440\u044c \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0438 \u0441\u0438\u043b\u044c\u043d\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u0437\u0430\u043d\u0438\u0436\u0430\u0435\u0442 \u0432\u0435\u0441\u0430 \u0434\u043b\u044f \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u0432 \u0441 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u043a\u043e\u0440\u0440\u0435\u043b\u044f\u0446\u0438\u0435\u0439: \u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0430\u0442\u044c\u0441\u044f \u043a \u043d\u0443\u043b\u044e, \u043d\u043e \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u0435\u0433\u043e \u043d\u0435 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442. \u041b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0433\u0440\u0435\u0431\u043d\u0435\u0432\u0443\u044e \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044e \u043f\u043e\u0441\u043b\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u0432.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"J += \\alpha \\sum \\limits_{i=1}^{n} w_i^2\" alt=\"J += \\alpha \\sum \\limits_{i=1}^{n} w_i^2\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/334\/62f\/b20\/33462fb20da27d5419d19f5d1d8dba1f.svg\" width=\"122\" height=\"57\"\/><\/p>\n<p><strong>\u041b\u0430\u0441\u0441\u043e-\u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044f (Lasso regression \u0438\u043b\u0438 Least Absolute Shrinkage &amp; Selection Operator)<\/strong>\u00a0\u043e\u0431\u044b\u0447\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043e\u0442\u0431\u043e\u0440\u0430 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 L1-\u0440\u0435\u0433\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043a \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u0442\u0435\u0440\u044c \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f. \u041f\u0440\u043e\u0449\u0435 \u0433\u043e\u0432\u043e\u0440\u044f, \u043b\u0430\u0441\u0441\u043e-\u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044f \u0441\u0442\u0440\u0435\u043c\u0438\u0442\u0441\u044f \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u0447\u0438\u0441\u043b\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u0443\u0442\u0435\u043c \u0437\u0430\u043d\u0443\u043b\u0435\u043d\u0438\u044f \u0432\u0435\u0441\u043e\u0432 \u0434\u043b\u044f \u043d\u0435\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u0438 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u044b\u0445 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u0432, \u0447\u0442\u043e \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u0434\u0430\u0441\u0442 \u0440\u0430\u0437\u0440\u0435\u0436\u0435\u043d\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c (\u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0447\u0438\u0441\u043b\u043e\u043c \u043d\u0435\u043d\u0443\u043b\u0435\u0432\u044b\u0445 \u0432\u0435\u0441\u043e\u0432 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u0432).  <\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"J += \\alpha \\sum \\limits_{i=1}^{n} |w_i|\" alt=\"J += \\alpha \\sum \\limits_{i=1}^{n} |w_i|\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/de7\/986\/b65\/de7986b6553ae35e0b488d022af906ba.svg\" width=\"131\" height=\"57\"\/><\/p>\n<p><strong>\u042d\u043b\u0430\u0441\u0442\u0438\u0447\u043d\u0430\u044f \u0441\u0435\u0442\u044c (ElasticNet)<\/strong>\u00a0\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044e L1 \u0438 L2-\u0440\u0435\u0433\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0446\u0438\u0439 \u0447\u0435\u0440\u0435\u0437 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0438\u0445 \u0441\u043c\u0435\u0441\u0438\u00a0<em>r<\/em>, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u043d\u0435\u0441\u0442\u0438 \u043e\u0441\u043e\u0431\u0443\u044e \u043f\u043e\u043b\u044c\u0437\u0443 \u0432 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f\u0445, \u043a\u043e\u0433\u0434\u0430 \u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043e\u0442\u0431\u043e\u0440 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u0432 \u0438 \u0431\u043e\u0440\u043e\u0442\u044c\u0441\u044f \u0441 \u043c\u0443\u043b\u044c\u0442\u0438\u043a\u043e\u043b\u043b\u0438\u043d\u0435\u0430\u0440\u043d\u043e\u0441\u0442\u044c\u044e. \u0412 Scikit-Learn \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043c\u0435\u0441\u044c\u044e Ridge \u0438 Lasso \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f &#171;l1_ratio&#187;.  <\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"J = MSE(w) + r\\alpha \\sum \\limits_{i=1}^{n} |w_i| + \\frac{1 - r}{2} \\alpha \\sum \\limits_{i=1}^{n} w_i^2\" alt=\"J = MSE(w) + r\\alpha \\sum \\limits_{i=1}^{n} |w_i| + \\frac{1 - r}{2} \\alpha \\sum \\limits_{i=1}^{n} w_i^2\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c64\/b3e\/de1\/c64b3ede11eb9692184600db4c0d5afc.svg\" width=\"366\" height=\"57\"\/><\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438 \u0435\u0449\u0451 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u00a0<strong><em>\u0440\u0430\u043d\u043d\u044e\u044e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 (early stopping)<\/em><\/strong>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f \u0432 \u043f\u0440\u0435\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439 \u0438\u043b\u0438 \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u043e\u0448\u0438\u0431\u043a\u0438 \u043d\u0430 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u0435. \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u0442\u043e\u0445\u0430\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u043b\u0438 \u043c\u0438\u043d\u0438-\u043f\u0430\u043a\u0435\u0442\u043d\u043e\u0433\u043e \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0441\u043f\u0443\u0441\u043a\u0430 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0438 \u0432 \u043f\u043e\u0438\u0441\u043a\u0435 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438\u0437-\u0437\u0430 \u043c\u0435\u043d\u0435\u0435 \u0433\u043b\u0430\u0434\u043a\u0438\u0445 \u043a\u0440\u0438\u0432\u044b\u0445 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f.<\/p>\n<blockquote>\n<p><em>\u0421\u0442\u043e\u0438\u0442 \u0442\u0430\u043a\u0436\u0435 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0435 \u0432\u044b\u0448\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0435\u0440\u0435\u0434\u043a\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u043f\u0440\u0438\u0440\u043e\u0441\u0442 \u0432 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u043d\u0430 \u0437\u0430\u0448\u0443\u043c\u043b\u0435\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u0430 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u043f\u043e\u043b\u0438\u043d\u043e\u043c\u0438\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0430\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0441\u0442\u0438\u0447\u044c \u0447\u0443\u0442\u044c \u043c\u0435\u043d\u044c\u0448\u0435\u0433\u043e \u0438\u0441\u043a\u0440\u0438\u0432\u043b\u0435\u043d\u0438\u044f \u043b\u0438\u043d\u0438\u0438, \u0447\u0442\u043e \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043e\u0431\u043e\u0431\u0449\u0430\u044e\u0449\u0443\u044e \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u0438.<\/em><\/p>\n<\/blockquote>\n<h4>\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430<\/h4>\n<pre><code class=\"python\">X3, y3 = make_regression(n_samples=14, n_features=1, noise=2, random_state=0) X3_train, X3_test, y3_train, y3_test = train_test_split(X3, y3, random_state=0) print('X3', X3, sep='\\n') print('y3', y3, sep='\\n')   X3 [[ 0.12167502]  [-0.10321885]  [-0.15135721]  [ 2.2408932 ]  [ 0.40015721]  [ 0.14404357]  [ 1.45427351]  [ 0.95008842]  [ 0.4105985 ]  [-0.97727788]  [ 1.86755799]  [ 0.76103773]  [ 1.76405235]  [ 0.97873798]] y3 [ 3.89311392 -0.66634818 -0.321328   18.73883123  4.00084003 -2.10376463   9.19719051  4.82754439  4.2778644  -6.3918002  12.51745243  4.92181298  13.49975682  6.58940369]<\/code><\/pre>\n<h4>\u041e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0438 \u043e\u0446\u0435\u043d\u043a\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432<\/h4>\n<p>\u041a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 ElasticNet \u0438\u043c\u0435\u0435\u0442 \u0441\u0430\u043c\u0443\u044e \u0432\u044b\u0441\u043e\u043a\u0443\u044e \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0441\u0440\u0435\u0434\u0438 \u0432\u0441\u0435\u0445 \u0432\u0438\u0434\u043e\u0432 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0446\u0438\u0438, \u0447\u0442\u043e \u043e\u0431\u0443\u0441\u043b\u043e\u0432\u043b\u0435\u043d\u043e \u043b\u0443\u0447\u0448\u0438\u043c \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435\u043c \u043e\u0431\u043e\u0431\u0449\u0430\u044e\u0449\u0435\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0437\u0430 \u0441\u0447\u0451\u0442 \u0431\u043e\u043b\u0435\u0435 \u0441\u0438\u043b\u044c\u043d\u044b\u0445 \u0448\u0442\u0440\u0430\u0444\u043e\u0432 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f. \u041d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0435 \u043d\u0438\u0436\u0435 \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u044d\u0442\u043e \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442\u0441\u044f \u0437\u0430 \u0441\u0447\u0451\u0442 \u0431\u043e\u043b\u0435\u0435 \u0441\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u043d\u0430\u043a\u043b\u043e\u043d\u0430 \u043a\u0440\u0430\u0441\u043d\u043e\u0439 \u043b\u0438\u043d\u0438\u0438.<\/p>\n<p><strong>Linear regression (scikit-learn)<\/strong>  <\/p>\n<pre><code class=\"python\">sk_linear_regression = LinearRegression() sk_linear_regression.fit(X3_train, y3_train)  sk_lr_pred_res = sk_linear_regression.predict(X3_test) sk_lr_pred_train_res = sk_linear_regression.predict(X3_train)  sk_lr_r2 = r2_score(y3_test, sk_lr_pred_res) sk_lr_train_r2 = r2_score(y3_train, sk_lr_pred_train_res)  sk_lr_mse = mean_squared_error(y3_test, sk_lr_pred_res) sk_lr_train_mse = mean_squared_error(y3_train, sk_lr_pred_train_res)  sk_lr_mape = mean_absolute_percentage_error(y3_test, sk_lr_pred_res) sk_lr_train_mape = mean_absolute_percentage_error(y3_train, sk_lr_pred_train_res)  print(f'Linear regression R2 score: {sk_lr_r2}') print(f'Linear regression train R2 score: {sk_lr_train_r2}', '\\n')  print(f'Linear regression MSE: {sk_lr_mse}') print(f'Linear regression train MSE: {sk_lr_train_mse}', '\\n')  print(f'Linear regression MAPE: {sk_lr_mape}') print(f'Linear regression train MAPE: {sk_lr_train_mape}', '\\n')  print(f'prediction: {sk_lr_pred_res}')   Linear regression R2 score: 0.6982257627953212 Linear regression train R2 score: 0.9427934415059153   Linear regression MSE: 1.335733574978215 Linear regression train MSE: 3.214557953209687   Linear regression MAPE: 0.21244193731317745 Linear regression train MAPE: 0.5606808073073533   prediction: [ 3.05512157 10.71540836  2.97848536  5.62724885]<\/code><\/pre>\n<p><strong>Ridge regression (scikit-learn)<\/strong>  <\/p>\n<pre><code class=\"python\">sk_ridge_regression = Ridge() sk_ridge_regression.fit(X3_train, y3_train)  sk_ridge_pred_res = sk_ridge_regression.predict(X3_test) sk_ridge_pred_train_res = sk_ridge_regression.predict(X3_train)  sk_ridge_r2 = r2_score(y3_test, sk_ridge_pred_res) sk_ridge_train_r2 = r2_score(y3_train, sk_ridge_pred_train_res)  sk_ridge_mse = mean_squared_error(y3_test, sk_ridge_pred_res) sk_ridge_train_mse = mean_squared_error(y3_train, sk_ridge_pred_train_res)  sk_ridge_mape = mean_absolute_percentage_error(y3_test, sk_ridge_pred_res) sk_ridge_train_mape = mean_absolute_percentage_error(y3_train, sk_ridge_pred_train_res)  print(f'Ridge R2 score: {sk_ridge_r2}') print(f'Ridge train R2 score: {sk_ridge_train_r2}', '\\n')  print(f'Ridge MSE: {sk_ridge_mse}') print(f'Ridge train MSE: {sk_ridge_train_mse}', '\\n')  print(f'Ridge MAPE: {sk_ridge_mape}') print(f'Ridge train MAPE: {sk_ridge_train_mape}', '\\n')  print(f'prediction: {sk_ridge_pred_res}')   Ridge R2 score: 0.8201023267367127 Ridge train R2 score: 0.9347612375917475   Ridge MSE: 0.7962752700962114 Ridge train MSE: 3.665904540974796   Ridge MAPE: 0.17278003508553688 Ridge train MAPE: 0.44961917938852436   prediction: [ 3.24001681 10.1932471   3.17045424  5.5747327 ]<\/code><\/pre>\n<p><strong>Lasso regression (scikit-learn)<\/strong>  <\/p>\n<pre><code class=\"python\">sk_lasso_regression = Lasso() sk_lasso_regression.fit(X3_train, y3_train)  sk_lasso_pred_res = sk_lasso_regression.predict(X3_test) sk_lasso_pred_train_res = sk_lasso_regression.predict(X3_train)  sk_lasso_r2 = r2_score(y3_test, sk_lasso_pred_res) sk_lasso_train_r2 = r2_score(y3_train, sk_lasso_pred_train_res)  sk_lasso_mse = mean_squared_error(y3_test, sk_lasso_pred_res) sk_lasso_train_mse = mean_squared_error(y3_train, sk_lasso_pred_train_res)  sk_lasso_mape = mean_absolute_percentage_error(y3_test, sk_lasso_pred_res) sk_lasso_train_mape = mean_absolute_percentage_error(y3_train, sk_lasso_pred_train_res)  print(f'Lasso R2 score: {sk_lasso_r2}') print(f'Lasso train R2 score: {sk_lasso_train_r2}', '\\n')  print(f'Lasso MSE: {sk_lasso_mse}') print(f'Lasso train MSE: {sk_lasso_train_mse}', '\\n')  print(f'Lasso MAPE: {sk_lasso_mape}') print(f'Lasso train MAPE: {sk_lasso_train_mape}', '\\n')  print(f'prediction: {sk_lasso_pred_res}')   Lasso R2 score: 0.8664469300530337 Lasso train R2 score: 0.9246970466502308   Lasso MSE: 0.5911416468881094 Lasso train MSE: 4.231432793072299   Lasso MAPE: 0.1529096993850169 Lasso train MAPE: 0.47581220410842373   prediction: [3.33264803 9.93164796 3.2666293  5.54842248]<\/code><\/pre>\n<p><strong>ElasticNet regression (scikit-learn)<\/strong>  <\/p>\n<pre><code class=\"python\">sk_elastic_net_regression = ElasticNet() sk_elastic_net_regression.fit(X3_train, y3_train)  sk_elastic_net_pred_res = sk_elastic_net_regression.predict(X3_test) sk_elastic_net_pred_train_res = sk_elastic_net_regression.predict(X3_train)  sk_elastic_net_r2 = r2_score(y3_test, sk_elastic_net_pred_res) sk_elastic_net_train_r2 = r2_score(y3_train, sk_elastic_net_pred_train_res)  sk_elastic_net_mse = mean_squared_error(y3_test, sk_elastic_net_pred_res) sk_elastic_net_train_mse = mean_squared_error(y3_train, sk_elastic_net_pred_train_res)  sk_elastic_net_mape = mean_absolute_percentage_error(y3_test, sk_elastic_net_pred_res) sk_elastic_net_train_mape = mean_absolute_percentage_error(y3_train, sk_elastic_net_pred_train_res)  print(f'ElasticNet R2 score: {sk_elastic_net_r2}') print(f'ElasticNet train R2 score: {sk_elastic_net_train_r2}', '\\n')  print(f'ElasticNet MSE: {sk_elastic_net_mse}') print(f'ElasticNet train MSE: {sk_elastic_net_train_mse}', '\\n')  print(f'ElasticNet MAPE: {sk_elastic_net_mape}') print(f'ElasticNet train MAPE: {sk_elastic_net_train_mape}', '\\n')  print(f'prediction: {sk_elastic_net_pred_res}')   ElasticNet R2 score: 0.9482289494488992 ElasticNet train R2 score: 0.8045065979219737   ElasticNet MSE: 0.2291525316195137 ElasticNet train MSE: 10.985189233414891   ElasticNet MAPE: 0.0831221231617497 ElasticNet train MAPE: 1.2542789122808766   prediction: [3.82230425 8.54881346 3.77501858 5.40934447]<\/code><\/pre>\n<p><strong>\u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u044f \u043e\u0448\u0438\u0431\u043e\u043a \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438 \u0438 \u0435\u0451 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0446\u0438\u0439<\/strong>  <\/p>\n<pre><code class=\"python\">train_r2_scores = [sk_lr_train_r2, sk_ridge_train_r2, sk_lasso_train_r2, sk_elastic_net_train_r2] test_r2_scores = [sk_lr_r2, sk_ridge_r2, sk_lasso_r2, sk_elastic_net_r2]  train_mses = [sk_lr_train_mse, sk_ridge_train_mse, sk_lasso_train_mse, sk_elastic_net_train_mse] test_mses = [sk_lr_mse, sk_ridge_mse, sk_lasso_mse, sk_elastic_net_mse]  fig = plt.figure() ax1 = fig.add_subplot(221) ax1.title.set_text('R2 reduction') ax1.set_xlabel('R2 train') ax1.set_ylabel('test') ax1.scatter(train_r2_scores, test_r2_scores, color='red') ax1.plot(train_r2_scores, test_r2_scores)  ax2 = fig.add_subplot(222) ax2.title.set_text('MSE reduction') ax2.set_xlabel('MSE train') ax2.scatter(train_mses, test_mses, color='red') ax2.plot(train_mses, test_mses)<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/3cf\/042\/18b\/3cf04218b396926d696c49f7a87aa566.png\" width=\"576\" height=\"253\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3cf\/042\/18b\/3cf04218b396926d696c49f7a87aa566.png\"\/><\/figure>\n<p><strong>\u0413\u0440\u0430\u0444\u0438\u043a\u0438 \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438 \u0438 \u0435\u0451 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0446\u0438\u0439<\/strong><\/p>\n<pre><code class=\"python\">sk_linear_regression_pred_all_data_res = sk_linear_regression.predict(X3) sk_ridge_regression_pred_all_data_res = sk_ridge_regression.predict(X3) sk_lasso_regression_pred_all_data_res = sk_lasso_regression.predict(X3) sk_elastic_net_regression_all_data_pred_res = sk_elastic_net_regression.predict(X3)  plt.scatter(X3, y3, color='black') plt.plot(X3, sk_linear_regression_pred_all_data_res, label='Linear regression') plt.plot(X3, sk_ridge_regression_pred_all_data_res, label='Ridge') plt.plot(X3, sk_lasso_regression_pred_all_data_res, label='Lasso') plt.plot(X3, sk_elastic_net_regression_all_data_pred_res, label='ElasticNet') plt.title('Regression regularizations comparison') plt.xlabel('X3') plt.ylabel('y3') plt.legend() plt.show()<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/09c\/804\/84b\/09c80484b888ab3cc9114ddbe5d84c85.png\" width=\"565\" height=\"455\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/09c\/804\/84b\/09c80484b888ab3cc9114ddbe5d84c85.png\"\/><\/figure>\n<p><a class=\"anchor\" name=\"pros_and_cons\" id=\"pros_and_cons\"><\/a><\/p>\n<h3>\u041f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438 \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438<\/h3>\n<p><em><u>\u041f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430<\/u><\/em>:<\/p>\n<ul>\n<li>\n<p>\u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0430 \u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0446\u0438\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0432\u044b\u0441\u043e\u043a\u0430\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c\u044e \u0432 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<\/li>\n<\/ul>\n<p><em><u>\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438<\/u><\/em>:<\/p>\n<ul>\n<li>\n<p>\u043d\u0438\u0437\u043a\u0430\u044f \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u044c \u0438 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0438\u0437-\u0437\u0430 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043e \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0445;<\/p>\n<\/li>\n<li>\n<p>\u043d\u0438\u0437\u043a\u0430\u044f \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u044b, \u0447\u0442\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u043f\u0443\u043d\u043a\u0442\u0430;<\/p>\n<\/li>\n<li>\n<p>\u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043a \u0448\u0443\u043c\u0443 \u0438 \u0432\u044b\u0431\u0440\u043e\u0441\u0430\u043c.<\/p>\n<\/li>\n<\/ul>\n<blockquote>\n<p><em>\u0421\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438 \u043a\u0430\u0441\u0430\u044e\u0442\u0441\u044f \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u044f \u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u043b\u0438\u0431\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u044b\u0448\u0435\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432. \u041e\u0434\u043d\u0430\u043a\u043e \u043d\u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0438\u0439 \u0434\u0435\u043d\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0440\u044f\u0434 \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432, \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u0445 \u0432 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u043c \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438.<\/em><\/p>\n<\/blockquote>\n<p><a class=\"anchor\" name=\"additional_sources\" id=\"additional_sources\"><\/a><\/p>\n<h3>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438<\/h3>\n<p>\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/scikit-learn.org\/stable\/modules\/linear_model.html#\" rel=\"noopener noreferrer nofollow\">\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439<\/a>;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/scikit-learn.org\/stable\/modules\/generated\/sklearn.linear_model.LinearRegression.html\" rel=\"noopener noreferrer nofollow\">LinearRegression<\/a>;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/scikit-learn.org\/stable\/modules\/generated\/sklearn.linear_model.Ridge.html#sklearn.linear_model.Ridge\" rel=\"noopener noreferrer nofollow\">Ridge<\/a>;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/scikit-learn.org\/stable\/modules\/generated\/sklearn.linear_model.Lasso.html#sklearn.linear_model.Lasso\" rel=\"noopener noreferrer nofollow\">Lasso\u00a0<\/a>;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/scikit-learn.org\/stable\/modules\/generated\/sklearn.linear_model.ElasticNet.html#sklearn.linear_model.ElasticNet\" rel=\"noopener noreferrer nofollow\">ElasticNet<\/a>.<\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u0438\u0434\u0435\u043e \u043f\u0440\u043e \u043b\u0438\u043d\u0435\u0439\u043d\u0443\u044e \u0438 \u043f\u043e\u043b\u0438\u043d\u043e\u043c\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438: <a href=\"https:\/\/www.youtube.com\/watch?v=HxXxVuG0xSA\" rel=\"noopener noreferrer nofollow\">\u043e\u0434\u0438\u043d<\/a>, <a href=\"https:\/\/www.youtube.com\/watch?v=7ArmBVF2dCs\" rel=\"noopener noreferrer nofollow\">\u0434\u0432\u0430<\/a>, <a href=\"https:\/\/www.youtube.com\/watch?v=efpARWCsuFo\" rel=\"noopener noreferrer nofollow\">\u0442\u0440\u0438<\/a>.<\/p>\n<p>\u0412\u0438\u0434\u0435\u043e \u043f\u0440\u043e \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0446\u0438\u044e: <a href=\"https:\/\/www.youtube.com\/watch?v=7WTMcm7QobQ\" rel=\"noopener noreferrer nofollow\">\u043e\u0434\u0438\u043d<\/a>, <a href=\"https:\/\/www.youtube.com\/watch?v=Q81RR3yKn30\" rel=\"noopener noreferrer nofollow\">\u0434\u0432\u0430<\/a>, <a href=\"https:\/\/www.youtube.com\/watch?v=NGf0voTMlcs\" rel=\"noopener noreferrer nofollow\">\u0442\u0440\u0438<\/a>, <a href=\"https:\/\/www.youtube.com\/watch?v=1dKRdX9bfIo\" rel=\"noopener noreferrer nofollow\">\u0447\u0435\u0442\u044b\u0440\u0435<\/a>, <a href=\"https:\/\/www.youtube.com\/watch?v=7WTMcm7QobQ\" rel=\"noopener noreferrer nofollow\">\u043f\u044f\u0442\u044c<\/a>.<\/p>\n<hr\/>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/803397\/\" rel=\"noopener noreferrer nofollow\"><strong>\u041b\u043e\u0433\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0438 Softmax-\u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438 ?<\/strong><\/a><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/804135\/\"> https:\/\/habr.com\/ru\/articles\/804135\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"float full-width\"><\/figure>\n<p>\u0412 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u043c \u0438 \u0433\u043b\u0443\u0431\u043e\u043a\u043e\u043c \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438 \u043b\u0438\u043d\u0435\u0439\u043d\u0430\u044f \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044f \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043e\u0441\u043e\u0431\u043e\u0435 \u043c\u0435\u0441\u0442\u043e, \u044f\u0432\u043b\u044f\u044f\u0441\u044c \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c, \u043d\u043e \u0430 \u0442\u0430\u043a\u0436\u0435 \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u043c \u0434\u043b\u044f \u043c\u043d\u043e\u0433\u0438\u0445 \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0439. \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u0440\u0430\u0431\u043e\u0442\u044b \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438 \u0441 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0441 \u043d\u0443\u043b\u044f \u043d\u0430 Python, \u043d\u043e \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0435\u0451 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438 \u043f\u0440\u043e\u0432\u0435\u0434\u0451\u043d \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0446\u0438\u0438. \u041f\u043e\u043c\u0438\u043c\u043e \u044d\u0442\u043e\u0433\u043e, \u0432 \u043a\u043e\u043d\u0446\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u044b \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438 \u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0433\u043b\u0443\u0431\u043e\u043a\u043e\u0433\u043e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u043b\u0435\u043d\u0438\u044f.  <\/p>\n<blockquote>\n<p><em>\u041d\u043e\u0443\u0442\u0431\u0443\u043a \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043d\u0430\u00a0<\/em><a href=\"https:\/\/www.kaggle.com\/code\/egazakharenko\/linear-regression-from-scratch-its-types\" rel=\"noopener noreferrer nofollow\"><strong><em>Kaggle<\/em><\/strong><\/a><em>\u00a0(eng) \u0438\u00a0<\/em><a href=\"https:\/\/github.com\/egaoharu-kensei\/ML-algorithms-from-scratch.-Course-for-beginners\/blob\/main\/Notebooks%20%5Brus%5D\/ML-%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B%20%D1%81%20%D0%BD%D1%83%D0%BB%D1%8F\/01%29%20%D0%9B%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D0%B0%D1%8F%20%D1%80%D0%B5%D0%B3%D1%80%D0%B5%D1%81%D1%81%D0%B8%D1%8F%20%D0%B8%20%D0%B5%D1%91%20%D0%B2%D0%B8%D0%B4%D1%8B.ipynb\" rel=\"noopener noreferrer nofollow\"><strong><em>GitHub<\/em><\/strong><\/a><em>\u00a0(rus).<\/em><\/p>\n<\/blockquote>\n<h3>\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435<\/h3>\n<ul>\n<li>\n<p><a href=\"#definition\" rel=\"noopener noreferrer nofollow\">\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438<\/a> <\/p>\n<\/li>\n<li>\n<p><a href=\"#polynomial\" rel=\"noopener noreferrer nofollow\">\u041f\u043e\u043b\u0438\u043d\u043e\u043c\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044f<\/a> <\/p>\n<\/li>\n<li>\n<p><a href=\"#regularization\" rel=\"noopener noreferrer nofollow\">\u0420\u0435\u0433\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438 (Ridge, Lasso, ElasticNet)<\/a> <\/p>\n<\/li>\n<li>\n<p><a href=\"#pros_and_cons\" rel=\"noopener noreferrer nofollow\">\u041f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438 \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438<\/a> <\/p>\n<\/li>\n<li>\n<p><a href=\"#additional_sources\" rel=\"noopener noreferrer nofollow\">\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438<\/a> <\/p>\n<\/li>\n<\/ul>\n<p><a class=\"anchor\" name=\"definition\" id=\"definition\"><\/a><\/p>\n<h3>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438<\/h3>\n<p>\u041b\u0438\u043d\u0435\u0439\u043d\u0430\u044f \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044f (Linear regression) \u2014 \u043e\u0434\u0438\u043d \u0438\u0437 \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043e\u0442 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0430 \u0432 \u0432\u0438\u0434\u0435 \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 . \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0431\u044b\u043b\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0438\u043b\u0438 \u043f\u0430\u0440\u043d\u0430\u044f \u043b\u0438\u043d\u0435\u0439\u043d\u0430\u044f \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044f, \u0430 \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0432\u0438\u0434\u0430\u00a0\u00a0\u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0435\u0439, \u0433\u0434\u0435\u00a0\u00a0\u2014 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438,\u00a0 \u2014 \u0432\u0435\u043a\u0442\u043e\u0440 \u0435\u0451 \u0432\u0435\u0441\u043e\u0432, \u0430\u00a0\u00a0\u2014 \u0432\u0435\u043a\u0442\u043e\u0440 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u0432 \u043e\u0434\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0435\u0433\u043e \u043e\u0431\u0440\u0430\u0437\u0446\u0430.<\/p>\n<p>\u041a \u0434\u0440\u0443\u0433\u0438\u043c \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438 \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u0433\u043e\u043c\u043e\u0441\u043a\u0435\u0434\u0430\u0441\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u044c (\u0434\u0438\u0441\u043f\u0435\u0440\u0441\u0438\u044f \u043e\u0441\u0442\u0430\u0442\u043a\u043e\u0432 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u0430 \u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u0430), \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043c\u0438\u043b\u044c\u0442\u0438\u043a\u043e\u043b\u043b\u0438\u043d\u0435\u0430\u0440\u043d\u043e\u0441\u0442\u0438 (\u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0430\u043c\u0438).<\/p>\n<figure class=\"full-width\">\n<div><figcaption><strong>\u0418\u043d\u0442\u0443\u0438\u0446\u0438\u044f \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438<\/strong><\/figcaption><\/div>\n<\/figure>\n<h4>\u041c\u0435\u0442\u043e\u0434 \u043d\u0430\u0438\u043c\u0435\u043d\u044c\u0448\u0438\u0445 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043e\u0432 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u0442\u0435\u0440\u044c<\/h4>\n<p>\u0412\u044b\u0431\u043e\u0440 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u043e\u043d\u043d\u043e\u0439 \u043b\u0438\u043d\u0438\u0438 (\u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438), \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0435\u0439 \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u044c \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u0438\u043b\u0443\u0447\u0448\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u0442\u0435\u0440\u044c\u00a0, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0432 \u0432\u0438\u0434\u0435 \u0441\u0440\u0435\u0434\u043d\u0435\u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0438\u0447\u043d\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u0438. \u041f\u0440\u043e\u0449\u0435 \u0433\u043e\u0432\u043e\u0440\u044f, \u043b\u0438\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u0434\u0430\u043d\u043d\u044b\u0435 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0432 \u0441\u0440\u0435\u0434\u043d\u0435\u043c \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043e\u0432 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0445 \u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0431\u044b\u043b\u0430 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430. \u0414\u0430\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u043d\u0430\u0438\u043c\u0435\u043d\u044c\u0448\u0438\u0445 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043e\u0432.<\/p>\n<p>\u041f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0436\u0435 \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0432\u044b\u0431\u0440\u043e\u0441\u043e\u0432 \u0432 \u0434\u0430\u043d\u043d\u044b\u0445, \u0431\u043e\u043b\u0435\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u043c\u043e\u0436\u0435\u0442 \u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043c\u0435\u0442\u043e\u0434 \u043d\u0430\u0438\u043c\u0435\u043d\u044c\u0448\u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u043e\u0434\u043d\u0430\u043a\u043e \u0443 \u043d\u0435\u0433\u043e \u0435\u0441\u0442\u044c \u043e\u0434\u0438\u043d \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u044b\u0439 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a: \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043c\u043e\u0434\u0443\u043b\u044f \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u0432 \u0442\u043e\u0447\u043a\u0435\u00a0, \u0447\u0442\u043e \u0432 \u0440\u044f\u0434\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0442\u0440\u0443\u0434\u043d\u0438\u0442\u044c \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e \u043e\u0448\u0438\u0431\u043a\u0438 \u043c\u043e\u0434\u0435\u043b\u0438. \u0421\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u0442\u0435\u043e\u0440\u0435\u043c\u044b <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%93%D0%B0%D1%83%D1%81%D1%81%D0%B0_%E2%80%94_%D0%9C%D0%B0%D1%80%D0%BA%D0%BE%D0%B2%D0%B0\" rel=\"noopener noreferrer nofollow\">\u0413\u0430\u0443\u0441\u0441\u0430-\u041c\u0430\u0440\u043a\u043e\u0432\u0430<\/a>, \u043c\u0435\u0442\u043e\u0434 \u043d\u0430\u0438\u043c\u0435\u043d\u044c\u0448\u0438\u0445 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043e\u0432 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043e\u0446\u0435\u043d\u043a\u043e\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043c\u043e\u0434\u0435\u043b\u0438 \u0441\u0440\u0435\u0434\u0438 \u0432\u0441\u0435\u0445 \u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0445 \u0438 \u043d\u0435\u0441\u043c\u0435\u0449\u0451\u043d\u043d\u044b\u0445 \u043e\u0446\u0435\u043d\u043e\u043a \u0437\u0430 \u0441\u0447\u0451\u0442 \u043c\u0435\u043d\u044c\u0448\u0435\u0439 \u0434\u0438\u0441\u043f\u0435\u0440\u0441\u0438\u0438.<\/p>\n<p><strong>\u0412\u044b\u0432\u043e\u0434 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f (least squares normal equation)<\/strong>  <\/p>\n<h4>\u041f\u0440\u0438\u043d\u0446\u0438\u043f \u0440\u0430\u0431\u043e\u0442\u044b \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438<\/h4>\n<p>\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 2 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438:<\/p>\n<ul>\n<li>\n<p>1) \u041f\u0440\u044f\u043c\u043e\u0435 (\u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0435) \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0432 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0432\u0438\u0434\u0435\u00a0, \u0433\u0434\u0435 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435\u00a0\u00a0\u2014 \u0432\u0435\u043a\u0442\u043e\u0440 \u0432\u0435\u0441\u043e\u0432, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435\u00a0. \u0413\u043b\u0430\u0432\u043d\u044b\u0439 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438 \u0431\u043e\u043b\u044c\u0448\u043e\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u0432.<\/p>\n<\/li>\n<li>\n<p>2) \u0418\u0442\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0441 \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u044b\u043c \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u0435\u043c \u043e\u0448\u0438\u0431\u043a\u0438 \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0441\u043f\u0443\u0441\u043a\u0430 \u0438 \u0435\u0433\u043e \u0440\u0430\u0437\u043d\u043e\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u0435\u0439. <em>\u0418\u043c\u0435\u043d\u043d\u043e \u0434\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435<\/em>.<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u041b\u0438\u043d\u0435\u0439\u043d\u0430\u044f \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0441\u043f\u0443\u0441\u043a\u0430 \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c<\/strong>:<\/p>\n<ul>\n<li>\n<p>1) \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0443\u043b\u0435\u0432\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0432\u0435\u0441\u043e\u0432, \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0438 \u0438\u0445 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>2) \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0433\u043d\u043e\u0437;<\/p>\n<\/li>\n<li>\n<p>3) \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0430 \u043f\u0435\u0440\u0435\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432\u0435\u0441\u043e\u0432 \u0438 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u0435 \u0438\u0445 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043e\u0432 (\u0440\u0430\u0437\u043d\u043e\u0441\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044f\u0445);<\/p>\n<\/li>\n<li>\n<p>4) \u0448\u0430\u0433\u0438 2-3 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0442\u0441\u044f \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u0435 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043e\u0432 \u043d\u0435 \u0441\u0442\u0430\u043d\u0435\u0442 \u043c\u0435\u043d\u044c\u0448\u0435 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0440\u043e\u0433\u043e\u0432\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f;<\/p>\n<\/li>\n<li>\n<p>5) \u0438\u0442\u043e\u0433\u043e\u0432\u044b\u043c \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u043b\u0438\u043d\u0435\u0439\u043d\u0430\u044f \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0432\u0435\u0441\u043e\u0432 + \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0438 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u0432 \u043d\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u0435.<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0424\u043e\u0440\u043c\u0443\u043b\u044b \u0434\u043b\u044f \u0440\u0430\u0441\u0447\u0451\u0442\u043e\u0432<\/strong>  <\/p>\n<p>\u0413\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u044b \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0438 \u0432\u0435\u0441\u043e\u0432:<\/p>\n<p>\u041f\u0440\u0430\u0432\u0438\u043b\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0438 \u0432\u0435\u0441\u043e\u0432 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0441\u043f\u0443\u0441\u043a\u0430:<\/p>\n<p>\u0413\u0434\u0435:<\/p>\n<ul>\n<li>\n<p>  \u2014 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f;<\/p>\n<\/li>\n<li>\n<p>  \u2014 \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0438 \u0432\u0435\u0441\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>  \u2014 \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432.<\/p>\n<\/li>\n<\/ul>\n<h4>\u0418\u043c\u043f\u043e\u0440\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a<\/h4>\n<pre><code class=\"python\">import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.datasets import make_regression from sklearn.model_selection import train_test_split from sklearn.preprocessing import scale, PolynomialFeatures from sklearn.linear_model import LinearRegression, Ridge, Lasso, ElasticNet from sklearn.metrics import mean_absolute_percentage_error, mean_squared_error, r2_score<\/code><\/pre>\n<h4>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0430 Python \u0441 \u043d\u0443\u043b\u044f<\/h4>\n<p><strong>\u041b\u0438\u043d\u0435\u0439\u043d\u0430\u044f \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043c\u0430\u0442\u0440\u0438\u0447\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430<\/strong><\/p>\n<pre><code class=\"python\">class MatrixLinearRegression:      def fit(self, X, y):         X = np.insert(X, 0, 1, axis=1)   # add ones vector         XT_X_inv = np.linalg.inv(X.T @ X)   # (X.T * X) ** (-1) inverse matrix         weights = np.linalg.multi_dot([XT_X_inv, X.T, y])   # XT_X_inv * X.T * y         self.bias, self.weights = weights[0], weights[1:]      def predict(self, X_test):         return X_test @ self.weights + self.bias<\/code><\/pre>\n<p><strong>\u041b\u0438\u043d\u0435\u0439\u043d\u0430\u044f \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u0430\u043a\u0435\u0442\u043d\u043e\u0433\u043e \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0441\u043f\u0443\u0441\u043a\u0430<\/strong><\/p>\n<pre><code class=\"python\">class GDLinearRegression:     def __init__(self, learning_rate=0.01, tolerance=1e-8):         self.learning_rate = learning_rate         self.tolerance = tolerance      def fit(self, X, y):         n_samples, n_features = X.shape         self.bias, self.weights = 0, np.zeros(n_features)         previous_db, previous_dw = 0, np.zeros(n_features)          while True:             y_pred = X @ self.weights + self.bias             db = 1 \/ n_samples * np.sum(y_pred - y)             dw = 1 \/ n_samples * X.T @ (y_pred - y)             self.bias -= self.learning_rate * db             self.weights -= self.learning_rate * dw              abs_db_reduction = np.abs(db - previous_db)             abs_dw_reduction = np.abs(dw - previous_dw)              if abs_db_reduction &lt; self.tolerance:                 if abs_dw_reduction.all() &lt; self.tolerance:                     break              previous_db = db             previous_dw = dw      def predict(self, X_test):         return X_test @ self.weights + self.bias<\/code><\/pre>\n<h4>\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430<\/h4>\n<p>\u0414\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d <a href=\"https:\/\/www.kaggle.com\/datasets\/hussainnasirkhan\/multiple-linear-regression-dataset\" rel=\"noopener noreferrer nofollow\">Multiple Linear Regression Dataset<\/a>, \u0433\u0434\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u0445\u043e\u0434 \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u043e\u0432 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0438\u0445 \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430 \u0438 \u043e\u043f\u044b\u0442\u0430.  <\/p>\n<pre><code class=\"python\">df_path = \"\/content\/drive\/MyDrive\/income.csv\" income = pd.read_csv(df_path) X1, y1 = income.iloc[:, :-1].values, income.iloc[:, -1].values X1_scaled = scale(X1) X1_train, X1_test, y1_train, y1_test = train_test_split(X1, y1, random_state=0) X1_train_s, X1_test_s, y1_train, y1_test = train_test_split(X1_scaled, y1, random_state=0) print(income)  correlation_matrix = income.corr() correlation_matrix.style.background_gradient(cmap='coolwarm')       age  experience  income 0    25           1   30450 1    30           3   35670 2    47           2   31580 3    32           5   40130 4    43          10   47830 5    51           7   41630 6    28           5   41340 7    33           4   37650 8    37           5   40250 9    39           8   45150 10   29           1   27840 11   47           9   46110 12   54           5   36720 13   51           4   34800 14   44          12   51300 15   41           6   38900 16   58          17   63600 17   23           1   30870 18   44           9   44190 19   37          10   48700                  age     experience    income age          1.000000    0.615165    0.532204 experience   0.615165    1.000000    0.984227 income       0.532204    0.984227    1.000000<\/code><\/pre>\n<h4>\u041e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0438 \u043e\u0446\u0435\u043d\u043a\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432<\/h4>\n<p>\u041a\u0430\u043a \u0438 \u043e\u0436\u0438\u0434\u0430\u043b\u043e\u0441\u044c, \u043b\u0438\u043d\u0435\u0439\u043d\u0430\u044f \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044f \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430 \u0445\u043e\u0440\u043e\u0448\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0432 \u0441\u0432\u044f\u0437\u0438 \u0441 \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c\u044e \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. \u041d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0435 \u0442\u0430\u043a\u0436\u0435 \u0432\u0438\u0434\u043d\u043e \u043a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0430\u044f \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c \u0445\u043e\u0440\u043e\u0448\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043b\u0438\u043d\u0435\u0439\u043d\u0443\u044e \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u044c \u0432 \u0434\u0430\u043d\u043d\u044b\u0445. \u0421\u0442\u043e\u0438\u0442 \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c, \u0447\u0442\u043e \u0432 \u043c\u043d\u043e\u0433\u043e\u043c\u0435\u0440\u043d\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u0432\u043c\u0435\u0441\u0442\u043e \u043b\u0438\u043d\u0438\u0438 \u0438\u043b\u0438 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438 \u0441\u0432\u044f\u0437\u044c \u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0433\u0438\u043f\u0435\u0440\u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c\u044e \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c\u044e\u00a0.  <\/p>\n<p><strong>Linear regression (matrix method)<\/strong>  <\/p>\n<pre><code class=\"python\">matrix_linear_regression = MatrixLinearRegression() matrix_linear_regression.fit(X1_train_s, y1_train) matrix_lr_pred_res = matrix_linear_regression.predict(X1_test_s) matrix_lr_r2 = r2_score(y1_test, matrix_lr_pred_res) matrix_lr_mape = mean_absolute_percentage_error(y1_test, matrix_lr_pred_res)  print(f'Matrix Linear regression  R2 score: {matrix_lr_r2}') print(f'Matrix Linear regression MAPE: {matrix_lr_mape}', '\\n')  print(f'weights: {matrix_linear_regression.bias, *matrix_linear_regression.weights}') print(f'prediction: {matrix_lr_pred_res}')   Matrix Linear regression  R2 score: 0.9307237996010834 Matrix Linear regression MAPE: 0.04666577176525877   weights: (40922.38666080836, -1049.7866043343445, 8718.76435636617) prediction: [46528.00800666 35018.47848628 49448.73803373 38604.36954966  30788.13913983]<\/code><\/pre>\n<p><strong>Linear regression<\/strong>  <\/p>\n<pre><code class=\"python\">linear_regression = GDLinearRegression() linear_regression.fit(X1_train_s, y1_train) pred_res = linear_regression.predict(X1_test_s) r2 = r2_score(y1_test, pred_res) mape = mean_absolute_percentage_error(y1_test, pred_res)  print(f'Linear regression R2 score: {r2}') print(f'Linear regression MAPE: {mape}', '\\n')  print(f'weights: {linear_regression.bias, *linear_regression.weights}') print(f'prediction: {pred_res}')   Linear regression R2 score: 0.9307237996010985 Linear regression MAPE: 0.04666577176525461   weights: (40922.386660807955, -1049.7866043338142, 8718.76435636563) prediction: [46528.00800666 35018.47848628 49448.73803373 38604.36954966  30788.13913983]<\/code><\/pre>\n<p><strong>Linear regression (scikit-learn)<\/strong><\/p>\n<p>\u041a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438\u0441\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u0432\u0435\u0441\u0430 \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043c\u043e\u0434\u0435\u043b\u0438 \u043e\u0431\u0443\u0447\u0430\u043b\u0438\u0441\u044c \u043d\u0430 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0430\u0445. \u0415\u0441\u043b\u0438 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u043e\u0431\u0443\u0447\u0438\u0442\u044c \u043d\u0430 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0430\u0445, \u0442\u043e \u0432\u0435\u0441\u0430 \u0431\u0443\u0434\u0443\u0442 \u0442\u0430\u043a\u0438\u0435 \u0436\u0435 \u043a\u0430\u043a \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0432\u044b\u0448\u0435.<\/p>\n<pre><code class=\"python\">sk_linear_regression = LinearRegression() sk_linear_regression.fit(X1_train, y1_train)  sk_lr_pred_res = sk_linear_regression.predict(X1_test) sk_lr_r2 = r2_score(y1_test, sk_lr_pred_res) sk_lr_mape = mean_absolute_percentage_error(y1_test, sk_lr_pred_res)  print(f'Scikit-learn Linear regression R2 score: {sk_lr_r2}') print(f'Scikit-learn Linear regression MAPE: {sk_lr_mape}', '\\n')  print(f'weights: {sk_linear_regression.intercept_, *sk_linear_regression.coef_}') print(f'prediction: {sk_lr_pred_res}', '\\n')  sk_linear_regression.fit(X1_train_s, y1_train) print(f'scaled weights: {sk_linear_regression.intercept_, *sk_linear_regression.coef_}')   Scikit-learn Linear regression R2 score:<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-372288","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/372288","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=372288"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/372288\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=372288"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=372288"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=372288"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}