{"id":343787,"date":"2023-01-11T09:03:33","date_gmt":"2023-01-11T09:03:33","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=343787"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=343787","title":{"rendered":"<span>\u0421\u0442\u0440\u043e\u0438\u043c \u0441\u0432\u043e\u0435 \u0431\u0443\u0434\u0443\u0449\u0435\u0435: \u043a\u0430\u043a \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u0443, \u043e\u043f\u0438\u0440\u0430\u044f\u0441\u044c \u043d\u0430 \u043c\u0435\u0442\u043e\u0434\u044b \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430?<\/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<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440!<\/p>\n<p>\u041c\u044b, \u041d\u043e\u0432\u0438\u0446\u043a\u0438\u0439 \u041d\u0438\u043a\u0438\u0442\u0430  \u0438 \u041c\u0438\u043a\u0432\u0435\u043b\u044c\u043c\u0430\u043d \u0414\u0430\u0440\u044c\u044f  \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u044b Data Engineer \u0438 \u044f\u0432\u043b\u044f\u0435\u043c\u0441\u044f \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c\u0438\u00a0<a href=\"https:\/\/newtechaudit.ru\/\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430 NTA<\/a>.  \u0420\u0430\u0441\u0441\u043a\u0430\u0436\u0435\u043c \u043a\u0430\u043a \u043d\u0430\u0439\u0442\u0438 \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u0443 \u043c\u0435\u0447\u0442\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6cc\/b31\/963\/6ccb31963f908fe09ec00c25730a5691.png\" width=\"626\" height=\"296\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6cc\/b31\/963\/6ccb31963f908fe09ec00c25730a5691.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0439\u0442\u0438 \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u0443 \u0441\u0435\u0431\u0435 \u043f\u043e \u0434\u0443\u0448\u0435 \u0441 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u044b\u043c \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c, \u043f\u043b\u043e\u0449\u0430\u0434\u044c\u044e \u0438 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 \u2013 \u043e\u0434\u043d\u0430 \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0438 \u0432 \u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447. \u041d\u0443\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u0432 \u2013 \u0438\u0437 \u043a\u0430\u043a\u0438\u0445 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u0438 \u043a\u0430\u043a \u0434\u0430\u0432\u043d\u043e \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d \u0434\u043e\u043c, \u0432 \u043a\u0430\u043a\u043e\u043c \u043e\u043d \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432 \u043d\u0435\u043c \u044d\u0442\u0430\u0436\u0435\u0439, \u0435\u0433\u043e \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0435\u0433\u043e \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c. \u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u043b\u043e\u0436\u0438\u0432\u0448\u0430\u044f\u0441\u044f \u0432 \u0441\u0442\u0440\u0430\u043d\u0435 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u043d\u0435 \u043f\u0440\u0435\u0434\u0432\u0435\u0449\u0430\u0435\u0442 \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u044f \u0446\u0435\u043d \u043d\u0430 \u043d\u0435\u0434\u0432\u0438\u0436\u0438\u043c\u043e\u0441\u0442\u044c. \u041d\u043e \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u044b \u043e\u0442 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d \u0434\u043e\u043c, \u0438\u043b\u0438 \u043e\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u044d\u0442\u0430\u0436\u0435\u0439 \u0432 \u043d\u0435\u043c \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u043e\u043d\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0438 \u0441\u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043d\u0435\u0434\u0432\u0438\u0436\u0438\u043c\u043e\u0441\u0442\u0438, \u043e\u043f\u0438\u0440\u0430\u044f\u0441\u044c \u043d\u0430 \u0438\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b?<\/p>\n<p>\u0414\u043b\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u043d\u0430 \u0440\u044b\u043d\u043a\u0435 \u043d\u0435\u0434\u0432\u0438\u0436\u0438\u043c\u043e\u0441\u0442\u0438 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u044b\u0439 <a href=\"https:\/\/www.kaggle.com\/datasets\/mrdaniilak\/russia-real-estate-20182021?resource=download\" rel=\"noopener noreferrer nofollow\">\u0434\u0430\u0442\u0430\u0441\u0435\u0442<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u043e\u0432 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u043f\u043e\u0440\u0442\u0430\u043b\u043e\u0432 \u043f\u043e \u043f\u0440\u043e\u0434\u0430\u0436\u0435 \u043d\u0435\u0434\u0432\u0438\u0436\u0438\u043c\u043e\u0441\u0442\u0438 \u0432 \u0420\u043e\u0441\u0441\u0438\u0438. \u041d\u0430\u0431\u043e\u0440 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043c\u0435\u0441\u0442\u043e\u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0434\u043e\u043c\u0430, \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0435, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043e\u043d \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d (\u043a\u0438\u0440\u043f\u0438\u0447\u043d\u044b\u0439, \u043f\u0430\u043d\u0435\u043b\u044c\u043d\u044b\u0439, \u0434\u0435\u0440\u0435\u0432\u044f\u043d\u043d\u044b\u0439 \u0438 \u0442.\u0434.), \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u044d\u0442\u0430\u0436\u0435\u0439, \u043f\u043b\u043e\u0449\u0430\u0434\u0438 \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u044b \u0438 \u0435\u0433\u043e \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438.<\/p>\n<p>\u041d\u0430\u0431\u043e\u0440 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 13 \u043f\u043e\u043b\u0435\u0439:<\/p>\n<ul>\n<li>\n<p><em>date<\/em> &#8212; \u0434\u0430\u0442\u0430 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f;<\/p>\n<\/li>\n<li>\n<p><em>time<\/em> \u2013 \u0432\u0440\u0435\u043c\u044f \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438;<\/p>\n<\/li>\n<li>\n<p><em>geo_lon<\/em> &#8212; \u0448\u0438\u0440\u043e\u0442\u0430<\/p>\n<\/li>\n<li>\n<p><em>geo_lat <\/em>&#8212; \u0434\u043e\u043b\u0433\u043e\u0442\u0430<\/p>\n<\/li>\n<li>\n<p><em>region<\/em> &#8212; \u0440\u0435\u0433\u0438\u043e\u043d<\/p>\n<\/li>\n<li>\n<p><em>building_type <\/em>&#8212; 0 &#8212; \u0414\u0440\u0443\u0433\u043e\u0439. 1 &#8212; \u041f\u0430\u043d\u0435\u043b\u044c\u043d\u044b\u0439. 2      &#8212; \u041c\u043e\u043d\u043e\u043b\u0438\u0442\u043d\u044b\u0439. 3 &#8212; \u041a\u0438\u0440\u043f\u0438\u0447\u043d\u044b\u0439. 4 &#8212; \u0411\u043b\u043e\u0447\u043d\u044b\u0439. 5 &#8212; \u0414\u0435\u0440\u0435\u0432\u044f\u043d\u043d\u044b\u0439<\/p>\n<\/li>\n<li>\n<p>object_type &#8212; \u0422\u0438\u043f \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u044b. 1 &#8212; \u0412\u0442\u043e\u0440\u0438\u0447\u043d\u044b\u0439      \u0440\u044b\u043d\u043e\u043a \u043d\u0435\u0434\u0432\u0438\u0436\u0438\u043c\u043e\u0441\u0442\u0438; 2 &#8212; \u041d\u043e\u0432\u043e\u0441\u0442\u0440\u043e\u0439\u043a\u0430;<\/p>\n<\/li>\n<li>\n<p><em>level<\/em> &#8212; \u044d\u0442\u0430\u0436 \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u044b<\/p>\n<\/li>\n<li>\n<p><em>levels<\/em> &#8212; \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u0442\u0430\u0436\u0435\u0439 \u0432 \u0434\u043e\u043c\u0435<\/p>\n<\/li>\n<li>\n<p><em>rooms<\/em> &#8212; \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0436\u0438\u043b\u044b\u0445 \u043a\u043e\u043c\u043d\u0430\u0442.      \u0415\u0441\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0432\u043d\u043e &#171;-1&#187;, \u0442\u043e \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 &#171;\u043e\u0434\u043d\u043e\u043a\u043e\u043c\u043d\u0430\u0442\u043d\u0430\u044f      \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u0430&#187;<\/p>\n<\/li>\n<li>\n<p><em>area<\/em> &#8212; \u043e\u0431\u0449\u0430\u044f \u043f\u043b\u043e\u0449\u0430\u0434\u044c \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u044b<\/p>\n<\/li>\n<li>\n<p><em>kitchen_area <\/em>&#8212; \u043f\u043b\u043e\u0449\u0430\u0434\u044c \u043a\u0443\u0445\u043d\u0438<\/p>\n<\/li>\n<li>\n<p><em>price<\/em> &#8212; \u0446\u0435\u043d\u0430 \u0432 \u0440\u0443\u0431\u043b\u044f\u0445<\/p>\n<\/li>\n<\/ul>\n<pre><code class=\"python\">from warnings import filterwarnings  import matplotlib.pyplot as plt import numpy as np import pandas as pd import seaborn as sns  filterwarnings('ignore') <\/code><\/pre>\n<p>\u041f\u0440\u043e\u0432\u0435\u0434\u0435\u043c \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u0443\u044e\u0449\u0443\u044e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432. <\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430, \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c, \u0435\u0441\u0442\u044c \u043b\u0438 \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u043c \u043d\u0430\u0431\u043e\u0440\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f:<\/p>\n<p>\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0430\u0448\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438:<\/p>\n<pre><code class=\"python\">for col in df.columns:     pct_missing = np.mean(df[col].isna())     print(f'{col} - {round(pct_missing * 100)}%') <\/code><\/pre>\n<pre><code class=\"python\">price - 0%  date - 0%  time - 0%  geo_lat - 0%  geo_lon - 0%  region - 0%  building_type - 0%  level - 0%  levels - 0%  rooms - 0%  area - 0%  kitchen_area - 0%  object_type - 0% <\/code><\/pre>\n<p>\u041f\u0440\u043e\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442.<\/p>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0448\u0430\u0433\u043e\u043c \u0443\u0434\u0430\u043b\u0438\u043c \u0438\u0437 \u0438\u043c\u0435\u044e\u0449\u0435\u0439\u0441\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0437\u0430\u043f\u0438\u0441\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0446\u0435\u043d\u0430 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u0442\u0430\u043a\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0435 \u043d\u0435\u0441\u0443\u0442 \u0437\u0430 \u0441\u043e\u0431\u043e\u0439 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0441\u043c\u044b\u0441\u043b\u0430. \u0422\u0430\u043a\u0436\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0442\u0430\u043a\u0438\u0445 \u0432\u0435\u043b\u0438\u0447\u0438\u043d, \u043a\u0430\u043a <em>area<\/em> \u2013 \u043e\u0442 20 \u0434\u043e 200 \u043a\u0432.\u043c., <em>kitchen<\/em> \u2013 \u043e\u0442 6 \u0434\u043e 30 \u043a\u0432.\u043c., \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u0434\u043b\u044f \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 \u0436\u0438\u043b\u044c\u044f \u2013 \u043e\u0442 1,5 \u0434\u043e 50 \u043c\u043b\u043d.\u0440\u0443\u0431, \u043e\u0445\u0432\u0430\u0442\u0438\u0432 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0440\u044b\u043d\u043a\u0430 \u043d\u0435\u0434\u0432\u0438\u0436\u0438\u043c\u043e\u0441\u0442\u0438.<\/p>\n<pre><code class=\"python\">MIN_AREA = 20  # \u0414\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0432\u044b\u0431\u0440\u043e\u0441\u043e\u0432 \u0434\u043b\u044f \u043f\u043b\u043e\u0449\u0430\u0434\u0438 \u043f\u043e\u043b\u0430 MAX_AREA = 200  MIN_KITCHEN = 6  # \u0414\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0432\u044b\u0431\u0440\u043e\u0441\u043e\u0432 \u0434\u043b\u044f \u043f\u043b\u043e\u0449\u0430\u0434\u0438 \u043a\u0443\u0445\u043d\u0438 MAX_KITCHEN = 30  MIN_PRICE = 1_500_000  # \u0414\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0432\u044b\u0431\u0440\u043e\u0441\u043e\u0432 \u0434\u043b\u044f \u0446\u0435\u043d\u044b \u043d\u0430 \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u0443 MAX_PRICE = 50_000_000<\/code><\/pre>\n<pre><code class=\"python\">def clean_data(df: pd.DataFrame) -> pd.DataFrame:     \"\"\"The function removes unnecessary data, handles outliers.\"\"\"     df.drop('time', axis=1, inplace=True)     df['date'] = pd.to_datetime(df['date'])          #  \u041a\u043e\u043b\u043e\u043d\u043a\u0430 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f -1 \u0438 -2, \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u043a\u043e\u043c\u043d\u0430\u0442\u043d\u044b\u0445 \u043a\u0432\u0430\u0440\u0442\u0438\u0440.     df['rooms'] = df['rooms'].apply(lambda x: 0 if x &lt; 0 else x)     df['price'] = df['price'].abs()  # \u0423\u0431\u0438\u0440\u0430\u0435\u043c \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f          # \u0423\u0431\u0438\u0440\u0430\u0435\u043c \u0432\u044b\u0431\u0440\u043e\u0441\u044b \u0432 \u0446\u0435\u043d\u0435 \u0438 \u043f\u043b\u043e\u0449\u0430\u0434\u0438     df = df[(df['area'] &lt;= MAX_AREA) &amp; (df['area'] >= MIN_AREA)]     df = df[(df['price'] &lt;= MAX_PRICE) &amp; (df['price'] >= MIN_PRICE)]          # \u0423\u0431\u0438\u0440\u0430\u0435\u043c \u0432\u044b\u0431\u0440\u043e\u0441\u044b \u0432 \u043a\u043e\u043b\u043e\u043d\u043a\u0435 \u0441 \u043f\u043b\u043e\u0449\u0430\u0434\u044c\u044e \u043a\u0443\u0445\u043d\u0438     # \u041d\u043e \u043f\u0435\u0440\u0435\u0434 \u044d\u0442\u0438\u043c \u0432\u0441\u0435 \"\u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0435\" \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043c\u044b \u0437\u0430\u043c\u0435\u043d\u0438\u043c \u043d\u0443\u043b\u044f\u043c\u0438     df.loc[(df['kitchen_area'] >= MAX_KITCHEN) | (df['area'] &lt;= MIN_AREA), 'kitchen_area'] = 0      # \u0420\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0435\u043c \u043f\u043b\u043e\u0449\u0430\u0434\u044c \u043a\u0443\u0445\u043d\u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u043b\u043e\u0449\u0430\u0434\u0438 \u043f\u043e\u043b\u0430, \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435 \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u043a\u043e\u043c\u043d\u0430\u0442\u043d\u044b\u0445 \u043a\u0432\u0430\u0440\u0442\u0438\u0440     erea_mean, kitchen_mean = df[['area', 'kitchen_area']].quantile(0.5)     kitchen_share = kitchen_mean \/ erea_mean     df.loc[(df['kitchen_area'] == 0) &amp; (df['rooms'] != 0), 'kitchen_area'] = \\         df.loc[(df['kitchen_area'] == 0) &amp; (df['rooms'] != 0), 'area'] * kitchen_share      return df <\/code><\/pre>\n<pre><code class=\"python\">def add_features(df: pd.DataFrame) -> pd.DataFrame:     # \u0417\u0430\u043c\u0435\u043d\u0438\u043c \"\u0434\u0430\u0442\u0443\" \u0447\u0438\u0441\u043b\u043e\u0432\u044b\u043c\u0438 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0430\u043c\u0438 \u0434\u043b\u044f \u0433\u043e\u0434\u0430 \u0438 \u043c\u0435\u0441\u044f\u0446\u0430.     df['year'] = df['date'].dt.year     df['month'] = df['date'].dt.month     df.drop('date', axis=1, inplace=True)     # \u042d\u0442\u0430\u0436 \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u044b \u043f\u043e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044e \u043a \u043e\u0431\u0449\u0435\u043c\u0443 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443 \u044d\u0442\u0430\u0436\u0435\u0439.     df['level_to_levels'] = df['level'] \/ df['levels']     # \u0421\u0440\u0435\u0434\u043d\u044f\u044f \u043f\u043b\u043e\u0449\u0430\u0434\u044c \u043a\u043e\u043c\u043d\u0430\u0442\u044b \u0432 \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u0435.     df['area_to_rooms'] = (df['area'] \/ df['rooms']).abs()     df.loc[df['area_to_rooms'] == np.inf, 'area_to_rooms'] = \\         df.loc[df['area_to_rooms'] == np.inf, 'area']     return df<\/code><\/pre>\n<pre><code class=\"python\">df = df.pipe(clean_data) df = df.pipe(add_features)<\/code><\/pre>\n<pre><code class=\"python\">df.head()<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/5b2\/50e\/b04\/5b250eb046bbf4e5e5dcf525bfbc1257.png\" width=\"624\" height=\"118\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5b2\/50e\/b04\/5b250eb046bbf4e5e5dcf525bfbc1257.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u043e\u0447\u0438\u0441\u0442\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0442\u0430\u043b\u043e \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u043b\u0443\u0447\u0448\u0435. \u041c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043a \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438.<\/p>\n<p>\u041f\u043e\u0441\u0442\u0440\u043e\u0438\u043c \u0433\u0440\u0430\u0444\u0438\u043a \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0446\u0435\u043d\u044b, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0430\u0439\u0434\u0435\u043c \u0441\u0440\u0435\u0434\u043d\u044e\u044e \u0438 \u043c\u0435\u0434\u0438\u0430\u043d\u043d\u0443\u044e \u0446\u0435\u043d\u044b \u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0435 \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u0435.<\/p>\n<pre><code class=\"python\">mean_price = int(df['price'].mean()) median_price = int(df['price'].median())  std = int(df['price'].std())  min_price = int(df['price'].min()) max_price = int(df['price'].max())  print(f'Price range: {min_price} - {max_price}') print(f'Mean price: {mean_price}\\nMedian price: {median_price}') print(f'Standard deviation: {std}')  plt.hist(df['price'], bins=20) plt.axvline(mean_price, label='Mean Price', color='green') plt.axvline(median_price, label='Median Price', color='red') plt.legend() plt.xlabel('Apartment Price, Rubles') plt.title('Price Distribution') plt.show() <\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6f8\/b0a\/e7a\/6f8b0ae7aaf1b282c6742f2231084705.png\" width=\"624\" height=\"607\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6f8\/b0a\/e7a\/6f8b0ae7aaf1b282c6742f2231084705.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u0440\u0435\u0434\u043d\u044e\u044e \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u044b \u2013 4,575,481 \u0440\u0443\u0431.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0441\u0442\u0440\u043e\u0438\u043c \u043c\u0430\u0442\u0440\u0438\u0446\u0443 \u043a\u043e\u0440\u0440\u0435\u043b\u044f\u0446\u0438\u0439, \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u043c\u0443\u043b\u044c\u0442\u0438\u043a\u043e\u043b\u043b\u0438\u043d\u0435\u0430\u0440\u043d\u043e\u0441\u0442\u0438 \u0432 \u0434\u0430\u043d\u043d\u044b\u0445, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0443\u0445\u0443\u0434\u0448\u0438\u0442\u044c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0431\u0443\u0434\u0443\u0449\u0435\u0439 \u043c\u043e\u0434\u0435\u043b\u0438.<\/p>\n<pre><code class=\"python\">plt.figure(figsize=(15, 10)) sns.heatmap(df.corr(), center=0, cmap='mako', annot=True) plt.title('Correlation Matrix') plt.show()<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d4e\/82f\/bb6\/d4e82fbb6bac5ea43b2143e39d9b444a.png\" width=\"624\" height=\"470\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d4e\/82f\/bb6\/d4e82fbb6bac5ea43b2143e39d9b444a.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0418\u0437 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043c\u0443\u043b\u044c\u0442\u0438\u043a\u043e\u043b\u043b\u0438\u043d\u0435\u0430\u0440\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442. \u041c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u043a \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044e \u043c\u043e\u0434\u0435\u043b\u0438.<\/p>\n<p>\u0417\u043d\u0430\u044f \u043e\u0441\u043d\u043e\u0432\u044b \u0446\u0435\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u0441\u0444\u0435\u0440\u0435 \u043d\u0435\u0434\u0432\u0438\u0436\u0438\u043c\u043e\u0441\u0442\u0438, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u043e \u0438 \u043d\u0435\u0440\u0430\u0437\u0443\u043c\u043d\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0435\u0434\u0438\u043d\u0443\u044e \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0440\u0435\u0433\u0438\u043e\u043d\u043e\u0432. \u0412\u0435\u0434\u044c \u0442\u0430\u043a\u0438\u0435 \u0444\u0430\u043a\u0442\u043e\u0440\u044b, \u043a\u0430\u043a \u0440\u0435\u0433\u0438\u043e\u043d, \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u043c\u0435\u0441\u0442\u043d\u043e\u0433\u043e \u0440\u044b\u043d\u043a\u0430, \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438 \u0438 \u0442.\u0434. \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u0438\u043b\u044c\u043d\u043e\u0435 \u0432\u043b\u0438\u044f\u043d\u0438\u0435 \u043d\u0430 \u0446\u0435\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u0440\u044b\u043d\u043a\u0435 \u043d\u0435\u0434\u0432\u0438\u0436\u0438\u043c\u043e\u0441\u0442\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0446\u0435\u043d\u044b \u043d\u0430 \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u044b \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0433\u043e\u0440\u043e\u0434\u0430\u0445 \u0438 \u0440\u0435\u0433\u0438\u043e\u043d\u0430\u0445 \u043c\u043e\u0433\u0443\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437.<\/p>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u043d\u0430\u0431\u043e\u0440\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0440\u044f\u0434 \u0432\u0430\u0436\u043d\u044b\u0445 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a, \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043e\u0448\u0438\u0431\u043a\u0430\u043c \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438 \u0438 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u043c\u043e\u0434\u0435\u043b\u0438, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e:<\/p>\n<ul>\n<li>\n<p> \u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435: \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0435 \u043f\u043e \u043f\u043b\u043e\u0449\u0430\u0434\u0438 \u0438 \u043c\u0435\u0441\u0442\u043e\u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u044b \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u0432 \u0446\u0435\u043d\u0435, \u0435\u0441\u043b\u0438 \u043e\u0434\u043d\u0430 \u0438\u0437 \u043d\u0438\u0445 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043c\u0435\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0438 \u0432 \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438, \u0430 \u0434\u0440\u0443\u0433\u0430\u044f \u2013 \u043d\u0430\u043f\u0440\u043e\u0442\u0438\u0432, \u0431\u0435\u0437 \u043e\u0442\u0434\u0435\u043b\u043a\u0438 \u0438\u043b\u0438 \u0431\u0435\u0437 \u043c\u0435\u0431\u0435\u043b\u0438<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u0441\u043e\u0442\u0430 \u043f\u043e\u0442\u043e\u043b\u043a\u043e\u0432<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u043b\u0438\u0447\u0438\u0435 \u0431\u0430\u043b\u043a\u043e\u043d\u0430, \u0442\u0435\u0440\u0440\u0430\u0441\u044b \u0438\u043b\u0438 \u0432\u044b\u0445\u043e\u0434\u0430 \u043d\u0430 \u043a\u0440\u044b\u0448\u0443<\/p>\n<\/li>\n<li>\n<p>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430, \u043e\u0431\u044b\u0447\u043d\u043e \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c\u044b\u0435 \u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u044b, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u0434\u044b\u043c\u043e\u0445\u043e\u0434\u044b \u0438\u043b\u0438 \u043f\u043e\u0434\u0437\u0435\u043c\u043d\u044b\u0435 \u043f\u0430\u0440\u043a\u043e\u0432\u043e\u0447\u043d\u044b\u0435 \u043c\u0435\u0441\u0442\u0430, \u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430 \u0446\u0435\u043d\u0443.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0440\u0438\u043d\u0438\u043c\u0430\u044f \u044d\u0442\u043e \u0432\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u043c\u044b \u043f\u043e\u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u0446\u0435\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u043a\u0432\u0430\u0440\u0442\u0438\u0440, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0432 \u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433\u0435.<\/p>\n<p>\u0412\u044b\u0431\u0435\u0440\u0435\u043c \u0438\u0437 \u043d\u0430\u0431\u043e\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435 \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433\u0435, \u0438 \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044e \u043c\u043e\u0434\u0435\u043b\u0438.<\/p>\n<pre><code>df = df.loc[df['region'] == 2661]<\/code><\/pre>\n<p>\u0414\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0446\u0435\u043d\u044b \u043d\u0430 \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u0443 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e &#8212; \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043d\u044b\u0439 \u0431\u0443\u0441\u0442\u0438\u043d\u0433. \u0414\u0430\u043d\u043d\u044b\u0439 \u0442\u0438\u043f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0440\u0430\u0439\u043d\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u0432 \u0437\u0430\u0434\u0430\u0447\u0430\u0445 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438\u043b\u0438 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438: \u043e\u043d \u0441\u0442\u0440\u043e\u0438\u0442 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0432 \u0432\u0438\u0434\u0435 \u0430\u043d\u0441\u0430\u043c\u0431\u043b\u044f \u0441\u043b\u0430\u0431\u044b\u0445 \u0434\u0435\u0440\u0435\u0432\u044c\u0435\u0432 \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u0430 \u0437\u0430\u0442\u0435\u043c \u0441\u043b\u0430\u0431\u044b\u0435 \u0434\u0435\u0440\u0435\u0432\u044c\u044f \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u0443 \u0441\u0438\u043b\u044c\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c. \u041d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0431\u0443\u0441\u0442\u0438\u043d\u0433\u0430 &#8212; XGBoost, LightGBM &amp; CatBoost. \u041d\u043e \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c\u0441\u044f \u043d\u0430 XGBoost.<\/p>\n<pre><code class=\"python\">import xgboost as xgb from sklearn.metrics import r2_score from sklearn.model_selection import train_test_split <\/code><\/pre>\n<pre><code class=\"python\">X, y = df.drop('price', axis=1), df['price'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, shuffle=True, random_state=1)  model = xgb.XGBRegressor() model.fit(X_train, y_train) predictions = model.predict(X_test) <\/code><\/pre>\n<p>\u0427\u0442\u043e\u0431\u044b \u043e\u0446\u0435\u043d\u0438\u0442\u044c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0430\u0431\u043e\u0442\u044b \u0431\u0443\u0434\u0443\u0449\u0435\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u0440\u0438\u043a\u0443 R<sup>2<\/sup>, \u0438\u043b\u0438 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u0446\u0438\u0438:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/412\/83b\/6e3\/41283b6e31d41e335accb9d3916dcaa7.png\" width=\"346\" height=\"83\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/412\/83b\/6e3\/41283b6e31d41e335accb9d3916dcaa7.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0414\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u0438\u0437\u043c\u0435\u0440\u044f\u0435\u0442 \u0434\u043e\u043b\u044e \u0434\u0438\u0441\u043f\u0435\u0440\u0441\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u044b\u043b\u0430 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0430 \u043c\u043e\u0434\u0435\u043b\u044c\u044e \u0432 \u043e\u0431\u0449\u0435\u0439 \u0434\u0438\u0441\u043f\u0435\u0440\u0441\u0438\u0438 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439. \u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u0434\u0430\u043d\u043d\u0430\u044f \u043c\u0435\u0442\u0440\u0438\u043a\u0430 \u2014 \u044d\u0442\u043e \u043d\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0441\u0440\u0435\u0434\u043d\u0435\u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0438\u0447\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430. \u0415\u0441\u043b\u0438 \u0434\u0430\u043d\u043d\u0430\u044f \u043c\u0435\u0442\u0440\u0438\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u0431\u043b\u0438\u0437\u043a\u0430 \u043a \u0435\u0434\u0438\u043d\u0438\u0446\u0435, \u0442\u043e \u043c\u043e\u0434\u0435\u043b\u044c \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435, \u0435\u0441\u043b\u0438 \u0436\u0435 \u043e\u043d\u0430 \u0431\u043b\u0438\u0437\u043a\u0430 \u043a \u043d\u0443\u043b\u044e, \u0442\u043e \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u044b \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043c\u044b \u043f\u043e \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0443 \u0441 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043d\u044b\u043c \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c.<\/p>\n<pre><code class=\"python\">print(f'R^2 score: {r2_score(y_test, predictions):.3f}')<\/code><\/pre>\n<pre><code class=\"python\">R^2 score: 0.809<\/code><\/pre>\n<p>\u041c\u043e\u0434\u0435\u043b\u044c \u0441\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0443\u0436\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043d\u0435\u043f\u043b\u043e\u0445\u043e\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u043d\u043e \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0443\u043b\u0443\u0447\u0448\u0438\u043c \u0435\u0433\u043e.<\/p>\n<p>\u0414\u043b\u044f \u043f\u043e\u0434\u0431\u043e\u0440\u0430 \u0433\u0438\u043f\u0435\u0440\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 Optuna, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0431\u0430\u0439\u0435\u0441\u043e\u0432\u0441\u043a\u0438\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430\u0434 \u0433\u0438\u043f\u0435\u0440\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438.<\/p>\n<pre><code class=\"python\">import optuna<\/code><\/pre>\n<pre><code class=\"python\">def objective(trial):     params = {         'tree_method':'gpu_hist',         'sampling_method': 'gradient_based',         'lambda': trial.suggest_loguniform('lambda', 7.0, 17.0),         'alpha': trial.suggest_loguniform('alpha', 7.0, 17.0),         'eta': trial.suggest_categorical('eta', [0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]),         'gamma': trial.suggest_categorical('gamma', [18, 19, 20, 21, 22, 23, 24, 25]),         'learning_rate': trial.suggest_categorical('learning_rate', [0.01,0.012,0.014,0.016,0.018, 0.02]),         'colsample_bytree': trial.suggest_categorical('colsample_bytree', [0.3,0.4,0.5,0.6,0.7,0.8,0.9, 1.0]),         'colsample_bynode': trial.suggest_categorical('colsample_bynode', [0.3,0.4,0.5,0.6,0.7,0.8,0.9, 1.0]),         'n_estimators': trial.suggest_int('n_estimators', 400, 1000),         'min_child_weight': trial.suggest_int('min_child_weight', 8, 600),           'max_depth': trial.suggest_categorical('max_depth', [3, 4, 5, 6, 7]),           'subsample': trial.suggest_categorical('subsample', [0.5,0.6,0.7,0.8,1.0]),         'random_state': 42     }      model = xgb.XGBRegressor(**params)       model.fit(X_train, y_train)     predictions = model.predict(X_test)     return r2_score(y_test, predictions) <\/code><\/pre>\n<pre><code class=\"python\">study = optuna.create_study(direction=\"maximize\") study.optimize(objective, n_trials=25)<\/code><\/pre>\n<pre><code class=\"python\">print(\"Number of finished trials: {}\".format(len(study.trials))) print(\"Best trial:\") trial = study.best_trial  print(\"Value: {}\".format(trial.value))  print(\"Params: \") for key, value in trial.params.items():     print(\"{}: {}\".format(key, value)) <\/code><\/pre>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/979\/9f8\/2e9\/9799f82e9d2678248c8bad3d4fbc0b74.png\" width=\"161\" height=\"307\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/979\/9f8\/2e9\/9799f82e9d2678248c8bad3d4fbc0b74.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e\u0434\u0431\u043e\u0440 \u0433\u0438\u043f\u0435\u0440\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u044b \u043d\u0430\u0438\u043b\u0443\u0447\u0448\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043b\u044f \u043c\u043e\u0434\u0435\u043b\u0438 \u0438 \u043d\u0430\u0438\u043b\u0443\u0447\u0448\u0438\u0439 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u0446\u0438\u0438. \u041d\u0430\u0441\u0442\u0430\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0443\u0447\u0438\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u0441 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u043a \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0430\u0441\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0448\u0435\u0439 \u043c\u043e\u0434\u0435\u043b\u0438.<\/p>\n<pre><code class=\"python\">best_model = xgb.XGBRegressor(**study.best_params) best_model.fit(X_train, y_train) predictions_best = best_model.predict(X_test) print(f'R^2 score: {r2_score(y_test, predictions_best):.3f}') <\/code><\/pre>\n<pre><code>R^2 score: 0.879<\/code><\/pre>\n<p>\u0418\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432, \u043e\u0447\u0435\u0432\u0438\u0434\u0435\u043d \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u0438\u0440\u043e\u0441\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043c\u043e\u0434\u0435\u043b\u0438, \u0430 \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u043b\u0443\u0447\u0448\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435, \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0438 \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u043d\u0430\u044f \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u044b \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u0435\u0435.<\/p>\n<p>\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u043c\u0435\u0442\u043e\u0434 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0446\u0435\u043d \u043d\u0430 \u0440\u044b\u043d\u043a\u0435 \u043d\u0435\u0434\u0432\u0438\u0436\u0438\u043c\u043e\u0441\u0442\u0438 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0433.\u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0431\u0443\u0441\u0442\u0438\u043d\u0433\u0430. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0438, \u0447\u0442\u043e \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0438\u043c\u0435\u0435\u0442 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u0446\u0438\u0438, \u0431\u043b\u0438\u0437\u043a\u0438\u0439 \u043a \u0435\u0434\u0438\u043d\u0438\u0446\u0435, \u0447\u0442\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0446\u0435\u043d \u043d\u0430 \u043d\u0435\u0434\u0432\u0438\u0436\u0438\u043c\u043e\u0441\u0442\u044c. <\/p>\n<\/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\/post\/710000\/\"> https:\/\/habr.com\/ru\/post\/710000\/<\/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<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440!<\/p>\n<p>\u041c\u044b, \u041d\u043e\u0432\u0438\u0446\u043a\u0438\u0439 \u041d\u0438\u043a\u0438\u0442\u0430  \u0438 \u041c\u0438\u043a\u0432\u0435\u043b\u044c\u043c\u0430\u043d \u0414\u0430\u0440\u044c\u044f  \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u044b Data Engineer \u0438 \u044f\u0432\u043b\u044f\u0435\u043c\u0441\u044f \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c\u0438\u00a0<a href=\"https:\/\/newtechaudit.ru\/\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430 NTA<\/a>.  \u0420\u0430\u0441\u0441\u043a\u0430\u0436\u0435\u043c \u043a\u0430\u043a \u043d\u0430\u0439\u0442\u0438 \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u0443 \u043c\u0435\u0447\u0442\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0439\u0442\u0438 \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u0443 \u0441\u0435\u0431\u0435 \u043f\u043e \u0434\u0443\u0448\u0435 \u0441 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u044b\u043c \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c, \u043f\u043b\u043e\u0449\u0430\u0434\u044c\u044e \u0438 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 \u2013 \u043e\u0434\u043d\u0430 \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0438 \u0432 \u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447. \u041d\u0443\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u0432 \u2013 \u0438\u0437 \u043a\u0430\u043a\u0438\u0445 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u0438 \u043a\u0430\u043a \u0434\u0430\u0432\u043d\u043e \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d \u0434\u043e\u043c, \u0432 \u043a\u0430\u043a\u043e\u043c \u043e\u043d \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432 \u043d\u0435\u043c \u044d\u0442\u0430\u0436\u0435\u0439, \u0435\u0433\u043e \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0435\u0433\u043e \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c. \u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u043b\u043e\u0436\u0438\u0432\u0448\u0430\u044f\u0441\u044f \u0432 \u0441\u0442\u0440\u0430\u043d\u0435 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u043d\u0435 \u043f\u0440\u0435\u0434\u0432\u0435\u0449\u0430\u0435\u0442 \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u044f \u0446\u0435\u043d \u043d\u0430 \u043d\u0435\u0434\u0432\u0438\u0436\u0438\u043c\u043e\u0441\u0442\u044c. \u041d\u043e \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u044b \u043e\u0442 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d \u0434\u043e\u043c, \u0438\u043b\u0438 \u043e\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u044d\u0442\u0430\u0436\u0435\u0439 \u0432 \u043d\u0435\u043c \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u043e\u043d\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0438 \u0441\u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043d\u0435\u0434\u0432\u0438\u0436\u0438\u043c\u043e\u0441\u0442\u0438, \u043e\u043f\u0438\u0440\u0430\u044f\u0441\u044c \u043d\u0430 \u0438\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b?<\/p>\n<p>\u0414\u043b\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u043d\u0430 \u0440\u044b\u043d\u043a\u0435 \u043d\u0435\u0434\u0432\u0438\u0436\u0438\u043c\u043e\u0441\u0442\u0438 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u044b\u0439 <a href=\"https:\/\/www.kaggle.com\/datasets\/mrdaniilak\/russia-real-estate-20182021?resource=download\" rel=\"noopener noreferrer nofollow\">\u0434\u0430\u0442\u0430\u0441\u0435\u0442<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u043e\u0432 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u043f\u043e\u0440\u0442\u0430\u043b\u043e\u0432 \u043f\u043e \u043f\u0440\u043e\u0434\u0430\u0436\u0435 \u043d\u0435\u0434\u0432\u0438\u0436\u0438\u043c\u043e\u0441\u0442\u0438 \u0432 \u0420\u043e\u0441\u0441\u0438\u0438. \u041d\u0430\u0431\u043e\u0440 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043c\u0435\u0441\u0442\u043e\u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0434\u043e\u043c\u0430, \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0435, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043e\u043d \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d (\u043a\u0438\u0440\u043f\u0438\u0447\u043d\u044b\u0439, \u043f\u0430\u043d\u0435\u043b\u044c\u043d\u044b\u0439, \u0434\u0435\u0440\u0435\u0432\u044f\u043d\u043d\u044b\u0439 \u0438 \u0442.\u0434.), \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u044d\u0442\u0430\u0436\u0435\u0439, \u043f\u043b\u043e\u0449\u0430\u0434\u0438 \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u044b \u0438 \u0435\u0433\u043e \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438.<\/p>\n<p>\u041d\u0430\u0431\u043e\u0440 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 13 \u043f\u043e\u043b\u0435\u0439:<\/p>\n<ul>\n<li>\n<p><em>date<\/em> &#8212; \u0434\u0430\u0442\u0430 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f;<\/p>\n<\/li>\n<li>\n<p><em>time<\/em> \u2013 \u0432\u0440\u0435\u043c\u044f \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438;<\/p>\n<\/li>\n<li>\n<p><em>geo_lon<\/em> &#8212; \u0448\u0438\u0440\u043e\u0442\u0430<\/p>\n<\/li>\n<li>\n<p><em>geo_lat <\/em>&#8212; \u0434\u043e\u043b\u0433\u043e\u0442\u0430<\/p>\n<\/li>\n<li>\n<p><em>region<\/em> &#8212; \u0440\u0435\u0433\u0438\u043e\u043d<\/p>\n<\/li>\n<li>\n<p><em>building_type <\/em>&#8212; 0 &#8212; \u0414\u0440\u0443\u0433\u043e\u0439. 1 &#8212; \u041f\u0430\u043d\u0435\u043b\u044c\u043d\u044b\u0439. 2      &#8212; \u041c\u043e\u043d\u043e\u043b\u0438\u0442\u043d\u044b\u0439. 3 &#8212; \u041a\u0438\u0440\u043f\u0438\u0447\u043d\u044b\u0439. 4 &#8212; \u0411\u043b\u043e\u0447\u043d\u044b\u0439. 5 &#8212; \u0414\u0435\u0440\u0435\u0432\u044f\u043d\u043d\u044b\u0439<\/p>\n<\/li>\n<li>\n<p>object_type &#8212; \u0422\u0438\u043f \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u044b. 1 &#8212; \u0412\u0442\u043e\u0440\u0438\u0447\u043d\u044b\u0439      \u0440\u044b\u043d\u043e\u043a \u043d\u0435\u0434\u0432\u0438\u0436\u0438\u043c\u043e\u0441\u0442\u0438; 2 &#8212; \u041d\u043e\u0432\u043e\u0441\u0442\u0440\u043e\u0439\u043a\u0430;<\/p>\n<\/li>\n<li>\n<p><em>level<\/em> &#8212; \u044d\u0442\u0430\u0436 \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u044b<\/p>\n<\/li>\n<li>\n<p><em>levels<\/em> &#8212; \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u0442\u0430\u0436\u0435\u0439 \u0432 \u0434\u043e\u043c\u0435<\/p>\n<\/li>\n<li>\n<p><em>rooms<\/em> &#8212; \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0436\u0438\u043b\u044b\u0445 \u043a\u043e\u043c\u043d\u0430\u0442.      \u0415\u0441\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0432\u043d\u043e &#171;-1&#187;, \u0442\u043e \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 &#171;\u043e\u0434\u043d\u043e\u043a\u043e\u043c\u043d\u0430\u0442\u043d\u0430\u044f      \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u0430&#187;<\/p>\n<\/li>\n<li>\n<p><em>area<\/em> &#8212; \u043e\u0431\u0449\u0430\u044f \u043f\u043b\u043e\u0449\u0430\u0434\u044c \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u044b<\/p>\n<\/li>\n<li>\n<p><em>kitchen_area <\/em>&#8212; \u043f\u043b\u043e\u0449\u0430\u0434\u044c \u043a\u0443\u0445\u043d\u0438<\/p>\n<\/li>\n<li>\n<p><em>price<\/em> &#8212; \u0446\u0435\u043d\u0430 \u0432 \u0440\u0443\u0431\u043b\u044f\u0445<\/p>\n<\/li>\n<\/ul>\n<pre><code class=\"python\">from warnings import filterwarnings  import matplotlib.pyplot as plt import numpy as np import pandas as pd import seaborn as sns  filterwarnings('ignore') <\/code><\/pre>\n<p>\u041f\u0440\u043e\u0432\u0435\u0434\u0435\u043c \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u0443\u044e\u0449\u0443\u044e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432. <\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430, \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c, \u0435\u0441\u0442\u044c \u043b\u0438 \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u043c \u043d\u0430\u0431\u043e\u0440\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f:<\/p>\n<p>\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0430\u0448\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438:<\/p>\n<pre><code class=\"python\">for col in df.columns:     pct_missing = np.mean(df[col].isna())     print(f'{col} - {round(pct_missing * 100)}%') <\/code><\/pre>\n<pre><code class=\"python\">price - 0%  date - 0%  time - 0%  geo_lat - 0%  geo_lon - 0%  region - 0%  building_type - 0%  level - 0%  levels - 0%  rooms - 0%  area - 0%  kitchen_area - 0%  object_type - 0% <\/code><\/pre>\n<p>\u041f\u0440\u043e\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442.<\/p>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0448\u0430\u0433\u043e\u043c \u0443\u0434\u0430\u043b\u0438\u043c \u0438\u0437 \u0438\u043c\u0435\u044e\u0449\u0435\u0439\u0441\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0437\u0430\u043f\u0438\u0441\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0446\u0435\u043d\u0430 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u0442\u0430\u043a\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0435 \u043d\u0435\u0441\u0443\u0442 \u0437\u0430 \u0441\u043e\u0431\u043e\u0439 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0441\u043c\u044b\u0441\u043b\u0430. \u0422\u0430\u043a\u0436\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0442\u0430\u043a\u0438\u0445 \u0432\u0435\u043b\u0438\u0447\u0438\u043d, \u043a\u0430\u043a <em>area<\/em> \u2013 \u043e\u0442 20 \u0434\u043e 200 \u043a\u0432.\u043c., <em>kitchen<\/em> \u2013 \u043e\u0442 6 \u0434\u043e 30 \u043a\u0432.\u043c., \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u0434\u043b\u044f \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 \u0436\u0438\u043b\u044c\u044f \u2013 \u043e\u0442 1,5 \u0434\u043e 50 \u043c\u043b\u043d.\u0440\u0443\u0431, \u043e\u0445\u0432\u0430\u0442\u0438\u0432 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0440\u044b\u043d\u043a\u0430 \u043d\u0435\u0434\u0432\u0438\u0436\u0438\u043c\u043e\u0441\u0442\u0438.<\/p>\n<pre><code class=\"python\">MIN_AREA = 20  # \u0414\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0432\u044b\u0431\u0440\u043e\u0441\u043e\u0432 \u0434\u043b\u044f \u043f\u043b\u043e\u0449\u0430\u0434\u0438 \u043f\u043e\u043b\u0430 MAX_AREA = 200  MIN_KITCHEN = 6  # \u0414\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0432\u044b\u0431\u0440\u043e\u0441\u043e\u0432 \u0434\u043b\u044f \u043f\u043b\u043e\u0449\u0430\u0434\u0438 \u043a\u0443\u0445\u043d\u0438 MAX_KITCHEN = 30  MIN_PRICE = 1_500_000  # \u0414\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0432\u044b\u0431\u0440\u043e\u0441\u043e\u0432 \u0434\u043b\u044f \u0446\u0435\u043d\u044b \u043d\u0430 \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u0443 MAX_PRICE = 50_000_000<\/code><\/pre>\n<pre><code class=\"python\">def clean_data(df: pd.DataFrame) -> pd.DataFrame:     \"\"\"The function removes unnecessary data, handles outliers.\"\"\"     df.drop('time', axis=1, inplace=True)     df['date'] = pd.to_datetime(df['date'])          #  \u041a\u043e\u043b\u043e\u043d\u043a\u0430 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f -1 \u0438 -2, \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u043a\u043e\u043c\u043d\u0430\u0442\u043d\u044b\u0445 \u043a\u0432\u0430\u0440\u0442\u0438\u0440.     df['rooms'] = df['rooms'].apply(lambda x: 0 if x &lt; 0 else x)     df['price'] = df['price'].abs()  # \u0423\u0431\u0438\u0440\u0430\u0435\u043c \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f          # \u0423\u0431\u0438\u0440\u0430\u0435\u043c \u0432\u044b\u0431\u0440\u043e\u0441\u044b \u0432 \u0446\u0435\u043d\u0435 \u0438 \u043f\u043b\u043e\u0449\u0430\u0434\u0438     df = df[(df['area'] &lt;= MAX_AREA) &amp; (df['area'] >= MIN_AREA)]     df = df[(df['price'] &lt;= MAX_PRICE) &amp; (df['price'] >= MIN_PRICE)]          # \u0423\u0431\u0438\u0440\u0430\u0435\u043c \u0432\u044b\u0431\u0440\u043e\u0441\u044b \u0432 \u043a\u043e\u043b\u043e\u043d\u043a\u0435 \u0441 \u043f\u043b\u043e\u0449\u0430\u0434\u044c\u044e \u043a\u0443\u0445\u043d\u0438     # \u041d\u043e \u043f\u0435\u0440\u0435\u0434 \u044d\u0442\u0438\u043c \u0432\u0441\u0435 \"\u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0435\" \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043c\u044b \u0437\u0430\u043c\u0435\u043d\u0438\u043c \u043d\u0443\u043b\u044f\u043c\u0438     df.loc[(df['kitchen_area'] >= MAX_KITCHEN) | (df['area'] &lt;= MIN_AREA), 'kitchen_area'] = 0      # \u0420\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0435\u043c \u043f\u043b\u043e\u0449\u0430\u0434\u044c \u043a\u0443\u0445\u043d\u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u043b\u043e\u0449\u0430\u0434\u0438 \u043f\u043e\u043b\u0430, \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435 \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u043a\u043e\u043c\u043d\u0430\u0442\u043d\u044b\u0445 \u043a\u0432\u0430\u0440\u0442\u0438\u0440     erea_mean, kitchen_mean = df[['area', 'kitchen_area']].quantile(0.5)     kitchen_share = kitchen_mean \/ erea_mean     df.loc[(df['kitchen_area'] == 0) &amp; (df['rooms'] != 0), 'kitchen_area'] = \\         df.loc[(df['kitchen_area'] == 0) &amp; (df['rooms'] != 0), 'area'] * kitchen_share      return df <\/code><\/pre>\n<pre><code class=\"python\">def add_features(df: pd.DataFrame) -> pd.DataFrame:     # \u0417\u0430\u043c\u0435\u043d\u0438\u043c \"\u0434\u0430\u0442\u0443\" \u0447\u0438\u0441\u043b\u043e\u0432\u044b\u043c\u0438 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0430\u043c\u0438 \u0434\u043b\u044f \u0433\u043e\u0434\u0430 \u0438 \u043c\u0435\u0441\u044f\u0446\u0430.     df['year'] = df['date'].dt.year     df['month'] = df['date'].dt.month     df.drop('date', axis=1, inplace=True)     # \u042d\u0442\u0430\u0436 \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u044b \u043f\u043e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044e \u043a \u043e\u0431\u0449\u0435\u043c\u0443 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443 \u044d\u0442\u0430\u0436\u0435\u0439.     df['level_to_levels'] = df['level'] \/ df['levels']     # \u0421\u0440\u0435\u0434\u043d\u044f\u044f \u043f\u043b\u043e\u0449\u0430\u0434\u044c \u043a\u043e\u043c\u043d\u0430\u0442\u044b \u0432 \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u0435.     df['area_to_rooms'] = (df['area'] \/ df['rooms']).abs()     df.loc[df['area_to_rooms'] == np.inf, 'area_to_rooms'] = \\         df.loc[df['area_to_rooms'] == np.inf, 'area']     return df<\/code><\/pre>\n<pre><code class=\"python\">df = df.pipe(clean_data) df = df.pipe(add_features)<\/code><\/pre>\n<pre><code class=\"python\">df.head()<\/code><\/pre>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u043e\u0447\u0438\u0441\u0442\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0442\u0430\u043b\u043e \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u043b\u0443\u0447\u0448\u0435. \u041c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043a \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438.<\/p>\n<p>\u041f\u043e\u0441\u0442\u0440\u043e\u0438\u043c \u0433\u0440\u0430\u0444\u0438\u043a \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0446\u0435\u043d\u044b, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0430\u0439\u0434\u0435\u043c \u0441\u0440\u0435\u0434\u043d\u044e\u044e \u0438 \u043c\u0435\u0434\u0438\u0430\u043d\u043d\u0443\u044e \u0446\u0435\u043d\u044b \u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0435 \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u0435.<\/p>\n<pre><code class=\"python\">mean_price = int(df['price'].mean()) median_price = int(df['price'].median())  std = int(df['price'].std())  min_price = int(df['price'].min()) max_price = int(df['price'].max())  print(f'Price range: {min_price} - {max_price}') print(f'Mean price: {mean_price}\\nMedian price: {median_price}') print(f'Standard deviation: {std}')  plt.hist(df['price'], bins=20) plt.axvline(mean_price, label='Mean Price', color='green') plt.axvline(median_price, label='Median Price', color='red') plt.legend() plt.xlabel('Apartment Price, Rubles') plt.title('Price Distribution') plt.show() <\/code><\/pre>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u0440\u0435\u0434\u043d\u044e\u044e \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u044b \u2013 4,575,481 \u0440\u0443\u0431.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0441\u0442\u0440\u043e\u0438\u043c \u043c\u0430\u0442\u0440\u0438\u0446\u0443 \u043a\u043e\u0440\u0440\u0435\u043b\u044f\u0446\u0438\u0439, \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u043c\u0443\u043b\u044c\u0442\u0438\u043a\u043e\u043b\u043b\u0438\u043d\u0435\u0430\u0440\u043d\u043e\u0441\u0442\u0438 \u0432 \u0434\u0430\u043d\u043d\u044b\u0445, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0443\u0445\u0443\u0434\u0448\u0438\u0442\u044c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0431\u0443\u0434\u0443\u0449\u0435\u0439 \u043c\u043e\u0434\u0435\u043b\u0438.<\/p>\n<pre><code class=\"python\">plt.figure(figsize=(15, 10)) sns.heatmap(df.corr(), center=0, cmap='mako', annot=True) plt.title('Correlation Matrix') plt.show()<\/code><\/pre>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0418\u0437 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043c\u0443\u043b\u044c\u0442\u0438\u043a\u043e\u043b\u043b\u0438\u043d\u0435\u0430\u0440\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442. \u041c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u043a \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044e \u043c\u043e\u0434\u0435\u043b\u0438.<\/p>\n<p>\u0417\u043d\u0430\u044f \u043e\u0441\u043d\u043e\u0432\u044b \u0446\u0435\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u0441\u0444\u0435\u0440\u0435 \u043d\u0435\u0434\u0432\u0438\u0436\u0438\u043c\u043e\u0441\u0442\u0438, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u043e \u0438 \u043d\u0435\u0440\u0430\u0437\u0443\u043c\u043d\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0435\u0434\u0438\u043d\u0443\u044e \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0440\u0435\u0433\u0438\u043e\u043d\u043e\u0432. \u0412\u0435\u0434\u044c \u0442\u0430\u043a\u0438\u0435 \u0444\u0430\u043a\u0442\u043e\u0440\u044b, \u043a\u0430\u043a \u0440\u0435\u0433\u0438\u043e\u043d, \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u043c\u0435\u0441\u0442\u043d\u043e\u0433\u043e \u0440\u044b\u043d\u043a\u0430, \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438 \u0438 \u0442.\u0434. \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u0438\u043b\u044c\u043d\u043e\u0435 \u0432\u043b\u0438\u044f\u043d\u0438\u0435 \u043d\u0430 \u0446\u0435\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u0440\u044b\u043d\u043a\u0435 \u043d\u0435\u0434\u0432\u0438\u0436\u0438\u043c\u043e\u0441\u0442\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0446\u0435\u043d\u044b \u043d\u0430 \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u044b \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0433\u043e\u0440\u043e\u0434\u0430\u0445 \u0438 \u0440\u0435\u0433\u0438\u043e\u043d\u0430\u0445 \u043c\u043e\u0433\u0443\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437.<\/p>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u043d\u0430\u0431\u043e\u0440\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0440\u044f\u0434 \u0432\u0430\u0436\u043d\u044b\u0445 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a, \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043e\u0448\u0438\u0431\u043a\u0430\u043c \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438 \u0438 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u043c\u043e\u0434\u0435\u043b\u0438, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e:<\/p>\n<ul>\n<li>\n<p> \u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435: \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0435 \u043f\u043e \u043f\u043b\u043e\u0449\u0430\u0434\u0438 \u0438 \u043c\u0435\u0441\u0442\u043e\u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u044b \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u0432 \u0446\u0435\u043d\u0435, \u0435\u0441\u043b\u0438 \u043e\u0434\u043d\u0430 \u0438\u0437 \u043d\u0438\u0445 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043c\u0435\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0438 \u0432 \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438, \u0430 \u0434\u0440\u0443\u0433\u0430\u044f \u2013 \u043d\u0430\u043f\u0440\u043e\u0442\u0438\u0432, \u0431\u0435\u0437 \u043e\u0442\u0434\u0435\u043b\u043a\u0438 \u0438\u043b\u0438 \u0431\u0435\u0437 \u043c\u0435\u0431\u0435\u043b\u0438<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u0441\u043e\u0442\u0430 \u043f\u043e\u0442\u043e\u043b\u043a\u043e\u0432<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u043b\u0438\u0447\u0438\u0435 \u0431\u0430\u043b\u043a\u043e\u043d\u0430, \u0442\u0435\u0440\u0440\u0430\u0441\u044b \u0438\u043b\u0438 \u0432\u044b\u0445\u043e\u0434\u0430 \u043d\u0430 \u043a\u0440\u044b\u0448\u0443<\/p>\n<\/li>\n<li>\n<p>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430, \u043e\u0431\u044b\u0447\u043d\u043e \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c\u044b\u0435 \u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u044b, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u0434\u044b\u043c\u043e\u0445\u043e\u0434\u044b \u0438\u043b\u0438 \u043f\u043e\u0434\u0437\u0435\u043c\u043d\u044b\u0435 \u043f\u0430\u0440\u043a\u043e\u0432\u043e\u0447\u043d\u044b\u0435 \u043c\u0435\u0441\u0442\u0430, \u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430 \u0446\u0435\u043d\u0443.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0440\u0438\u043d\u0438\u043c\u0430\u044f \u044d\u0442\u043e \u0432\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u043c\u044b \u043f\u043e\u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u0446\u0435\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u043a\u0432\u0430\u0440\u0442\u0438\u0440, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0432 \u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433\u0435.<\/p>\n<p>\u0412\u044b\u0431\u0435\u0440\u0435\u043c \u0438\u0437 \u043d\u0430\u0431\u043e\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435 \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433\u0435, \u0438 \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044e \u043c\u043e\u0434\u0435\u043b\u0438.<\/p>\n<pre><code>df = df.loc[df['region'] == 2661]<\/code><\/pre>\n<p>\u0414\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0446\u0435\u043d\u044b \u043d\u0430 \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u0443 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e &#8212; \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043d\u044b\u0439 \u0431\u0443\u0441\u0442\u0438\u043d\u0433. \u0414\u0430\u043d\u043d\u044b\u0439 \u0442\u0438\u043f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0440\u0430\u0439\u043d\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u0432 \u0437\u0430\u0434\u0430\u0447\u0430\u0445 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438\u043b\u0438 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438: \u043e\u043d \u0441\u0442\u0440\u043e\u0438\u0442 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0432 \u0432\u0438\u0434\u0435 \u0430\u043d\u0441\u0430\u043c\u0431\u043b\u044f \u0441\u043b\u0430\u0431\u044b\u0445 \u0434\u0435\u0440\u0435\u0432\u044c\u0435\u0432 \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u0430 \u0437\u0430\u0442\u0435\u043c \u0441\u043b\u0430\u0431\u044b\u0435 \u0434\u0435\u0440\u0435\u0432\u044c\u044f \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u0443 \u0441\u0438\u043b\u044c\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c. \u041d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0431\u0443\u0441\u0442\u0438\u043d\u0433\u0430 &#8212; XGBoost, LightGBM &amp; CatBoost. \u041d\u043e \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c\u0441\u044f \u043d\u0430 XGBoost.<\/p>\n<pre><code class=\"python\">import xgboost as xgb from sklearn.metrics import r2_score from sklearn.model_selection import train_test_split <\/code><\/pre>\n<pre><code class=\"python\">X, y = df.drop('price', axis=1), df['price'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, shuffle=True, random_state=1)  model = xgb.XGBRegressor() model.fit(X_train, y_train) predictions = model.predict(X_test) <\/code><\/pre>\n<p>\u0427\u0442\u043e\u0431\u044b \u043e\u0446\u0435\u043d\u0438\u0442\u044c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0430\u0431\u043e\u0442\u044b \u0431\u0443\u0434\u0443\u0449\u0435\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u0440\u0438\u043a\u0443 R<sup>2<\/sup>, \u0438\u043b\u0438 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u0446\u0438\u0438:<\/p>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p>\u0414\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u0438\u0437\u043c\u0435\u0440\u044f\u0435\u0442 \u0434\u043e\u043b\u044e \u0434\u0438\u0441\u043f\u0435\u0440\u0441\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u044b\u043b\u0430 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0430 \u043c\u043e\u0434\u0435\u043b\u044c\u044e \u0432 \u043e\u0431\u0449\u0435\u0439 \u0434\u0438\u0441\u043f\u0435\u0440\u0441\u0438\u0438 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439. \u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u0434\u0430\u043d\u043d\u0430\u044f \u043c\u0435\u0442\u0440\u0438\u043a\u0430 \u2014 \u044d\u0442\u043e \u043d\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0441\u0440\u0435\u0434\u043d\u0435\u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0438\u0447\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430. \u0415\u0441\u043b\u0438 \u0434\u0430\u043d\u043d\u0430\u044f \u043c\u0435\u0442\u0440\u0438\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u0431\u043b\u0438\u0437\u043a\u0430 \u043a \u0435\u0434\u0438\u043d\u0438\u0446\u0435, \u0442\u043e \u043c\u043e\u0434\u0435\u043b\u044c \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435, \u0435\u0441\u043b\u0438 \u0436\u0435 \u043e\u043d\u0430 \u0431\u043b\u0438\u0437\u043a\u0430 \u043a \u043d\u0443\u043b\u044e, \u0442\u043e \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u044b \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043c\u044b \u043f\u043e \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0443 \u0441 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043d\u044b\u043c \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c.<\/p>\n<pre><code class=\"python\">print(f'R^2 score: {r2_score(y_test, predictions):.3f}')<\/code><\/pre>\n<pre><code class=\"python\">R^2 score: 0.809<\/code><\/pre>\n<p>\u041c\u043e\u0434\u0435\u043b\u044c \u0441\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0443\u0436\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043d\u0435\u043f\u043b\u043e\u0445\u043e\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u043d\u043e \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0443\u043b\u0443\u0447\u0448\u0438\u043c \u0435\u0433\u043e.<\/p>\n<p>\u0414\u043b\u044f \u043f\u043e\u0434\u0431\u043e\u0440\u0430 \u0433\u0438\u043f\u0435\u0440\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 Optuna, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0431\u0430\u0439\u0435\u0441\u043e\u0432\u0441\u043a\u0438\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430\u0434 \u0433\u0438\u043f\u0435\u0440\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438.<\/p>\n<pre><code class=\"python\">import optuna<\/code><\/pre>\n<pre><code class=\"python\">def objective(trial):     params = {         'tree_method':'gpu_hist',         'sampling_method': 'gradient_based',         'lambda': trial.suggest_loguniform('lambda', 7.0, 17.0),         'alpha': trial.suggest_loguniform('alpha', 7.0, 17.0),         'eta': trial.suggest_categorical('eta', [0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]),         'gamma': trial.suggest_categorical('gamma', [18, 19, 20, 21, 22, 23, 24, 25]),         'learning_rate': trial.suggest_categorical('learning_rate', [0.01,0.012,0.014,0.016,0.018, 0.02]),         'colsample_bytree': trial.suggest_categorical('colsample_bytree', [0.3,0.4,0.5,0.6,0.7,0.8,0.9, 1.0]),         'colsample_bynode': trial.suggest_categorical('colsample_bynode', [0.3,0.4,0.5,0.6,0.7,0.8,0.9, 1.0]),         'n_estimators': trial.suggest_int('n_estimators', 400, 1000),         'min_child_weight':<\/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-343787","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/343787","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=343787"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/343787\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=343787"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=343787"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=343787"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}