{"id":371898,"date":"2024-05-21T04:59:24","date_gmt":"2024-05-21T04:59:24","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=371898"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=371898","title":{"rendered":"<span>\u041a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u044d\u043a\u0437\u043e\u043f\u043b\u0430\u043d\u0435\u0442 (\u0447\u0430\u0441\u0442\u044c II \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0435\u0439)<\/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<h4>\u042d\u0442\u043e \u0432\u0442\u043e\u0440\u0430\u044f \u0438 \u0437\u0430\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c \u0437\u0430\u0434\u0430\u0447\u0443 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u044d\u043a\u0437\u043e\u043f\u043b\u0430\u043d\u0435\u0442. \u0415\u0441\u043b\u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u0431\u044b\u043b\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u043e \u043f\u0440\u0435\u0434\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0434\u0430\u043d\u043d\u044b\u0445, \u0442\u043e \u0437\u0434\u0435\u0441\u044c \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u0438, \u043e\u0442\u0431\u0438\u0440\u0430\u0442\u044c \u043b\u0443\u0447\u0448\u0438\u0435 \u0438 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c. <\/h4>\n<h4>P.S. \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043d\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043b\u0443\u0447\u0448\u0435 \u043d\u0430\u0447\u0430\u0442\u044c \u0441 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438: https:\/\/habr.com\/ru\/articles\/800999\/<\/h4>\n<p>\u0418\u0442\u0430\u043a \u044f \u043d\u0430\u0434\u0435\u044e\u0441\u044c \u0447\u0442\u043e \u0432\u0441\u0435 \u043a\u0442\u043e \u0445\u043e\u0442\u0435\u043b, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u043f\u0435\u0440\u0432\u0443\u044e \u0447\u0430\u0441\u0442\u044c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c.<\/p>\n<h2>\u0421\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u041b\u0435\u0441<\/h2>\n<p>\u0412 \u0442\u043e\u0442 \u0440\u0430\u0437 \u043c\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u043b\u0438 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u043c Gain, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u043b\u0435\u0441, \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u0431\u044b\u043b\u043e \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c, \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0432 \u0435\u0449\u0435 \u043e\u0434\u043d\u0443 \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0433\u043e \u043b\u0435\u0441\u0430.<\/p>\n<pre><code class=\"python\">rfi = RandomForestClassifier(max_depth=2, random_state=42) rfi.fit(X_train[['koi_fpflag_nt', 'koi_fpflag_ss', 'koi_fpflag_co', 'koi_fpflag_ec',        'koi_depth', 'koi_prad', 'koi_prad_err1', 'koi_prad_err2', 'koi_teq',        'koi_insol_err1', 'koi_insol_err2', 'koi_model_snr', 'koi_steff_err1',        'koi_steff_err2']], y_train) rfi_pred_train=rfi.predict(X_train[['koi_fpflag_nt', 'koi_fpflag_ss', 'koi_fpflag_co', 'koi_fpflag_ec',        'koi_depth', 'koi_prad', 'koi_prad_err1', 'koi_prad_err2', 'koi_teq',        'koi_insol_err1', 'koi_insol_err2', 'koi_model_snr', 'koi_steff_err1',        'koi_steff_err2']]) rfi_pred_test=rfi.predict(X_test[['koi_fpflag_nt', 'koi_fpflag_ss', 'koi_fpflag_co', 'koi_fpflag_ec',        'koi_depth', 'koi_prad', 'koi_prad_err1', 'koi_prad_err2', 'koi_teq',        'koi_insol_err1', 'koi_insol_err2', 'koi_model_snr', 'koi_steff_err1',        'koi_steff_err2']])<\/code><\/pre>\n<p>\u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043a\u0440\u0430\u0441\u043e\u0447\u043d\u043e \u0442\u0430\u0441\u043a\u0430\u0442\u044c \u0441 \u0441\u043e\u0431\u043e\u0439 \u044d\u0442\u043e\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0437 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u0432, \u043d\u043e \u044f \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u043b\u0435\u043d\u0438\u0432\u044b\u0439, \u0443\u0432\u0438\u0434\u0435\u043b \u0432\u044b\u0432\u043e\u0434 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u0432 \u0432 Feature Selection, \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043b, \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0441\u043a\u043e\u0431\u043e\u0447\u043a\u0438 [\u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u044b\u0435] \u0438 \u0432\u043f\u0435\u0440\u0435\u0434. <\/p>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043c\u0435\u0442\u0440\u0438\u043a\u0438<\/p>\n<pre><code class=\"python\">metrics(y_test,rfi_pred_test)<\/code><\/pre>\n<p>accuracy: 0.9456351280710925 <br \/>f1: 0.94831013916501 <br \/>roc auc: 0.9462939057241274   <\/p>\n<p>\u0410 \u0447\u0435 \u044d\u0442\u043e \u0437\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0442\u0430\u043a\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u0441\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u043f\u0435\u0440\u0435\u0448\u0435\u043b \u043d\u0430 \u043f\u0435\u0440\u0432\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0438 \u043f\u043e\u043b\u0435\u043d\u0438\u043b\u0441\u044f. \u041d\u0435 \u043e\u0441\u0443\u0436\u0434\u0430\u044e. \u042d\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0438 \u0432\u043e\u0442 \u043e\u043d\u0430: <\/p>\n<pre><code class=\"python\">def metrics(y_true,y_pred):     acc=accuracy_score(y_true, y_pred)     f1=f1_score(y_true, y_pred)     roc_auc=roc_auc_score(y_true, y_pred)     print(f'accuracy: {acc}\\nf1: {f1}\\nroc auc: {roc_auc} ')<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0447\u0435\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0442\u0430\u043a\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u043d\u0430\u043c \u0436\u0438\u0437\u043d\u044c, \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c)<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043c \u043f\u0440\u043e \u0442\u043e, \u0447\u0442\u043e \u0435\u0449\u0435 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 F-\u0442\u0435\u0441\u0442 \u0434\u043b\u044f \u043e\u0442\u0431\u043e\u0440\u0430 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u0432, \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0442\u0430\u043a\u043e\u0439 \u0441\u043f\u0438\u0441\u043e\u043a:  [&#8216;koi_fpflag_nt&#8217;, &#8216;koi_fpflag_ss&#8217;, &#8216;koi_fpflag_co&#8217;, &#8216;koi_fpflag_ec&#8217;, &#8216;koi_depth&#8217;, &#8216;koi_teq&#8217;, &#8216;koi_steff_err1&#8217;, &#8216;koi_steff_err2&#8217;] , \u0441 \u043d\u0435\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u0431\u0438\u0440\u0430\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e X_f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u043b\u0430\u0441\u044c \u0432 \u043a\u043e\u0434\u0435 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438<\/p>\n<pre><code class=\"python\">y_f=y X_f_train, X_f_test, y_f_train, y_f_test = train_test_split(X_f, y_f, test_size=0.2, random_state=42) model_f=RandomForestClassifier(max_depth=2, random_state=42) model_f.fit(X_f_train, y_f_train) f_pred=model_f.predict(X_f_test) metrics(y_f_test, f_pred)<\/code><\/pre>\n<p>accuracy: 0.9790904338734971 <br \/>f1: 0.9801192842942346 <br \/>roc auc: 0.9798926657489797   <\/p>\n<p>\u041f\u043e\u043a\u0430 \u0447\u0442\u043e F-test \u044d\u0442\u043e \u0441\u0430\u043c\u043e\u0435 \u043b\u0443\u0447\u0448\u0435\u0435 \u0447\u0442\u043e \u0441\u043b\u0443\u0447\u0430\u043b\u043e\u0441\u044c \u0441 \u044d\u0442\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u043c\u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043d\u0440\u0430\u0432\u044f\u0442\u0441\u044f \u0442\u0430\u043a\u0438\u0435 \u043c\u0435\u0442\u0440\u0438\u043a\u0438, \u043d\u043e \u043c\u044b \u043d\u0430 \u044d\u0442\u043e\u043c \u043d\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c\u0441\u044f. <\/p>\n<h2>XGBoost<\/h2>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/845\/f94\/a3e\/845f94a3e8cdc85399f6b5accd8eeab6.png\" alt=\"\u043c\u0435\u043c\u0447\u0438\u043a \u0441 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0431\u044b\u043b\u043e \u0441\u043a\u0443\u0447\u043d\u043e\" title=\"\u043c\u0435\u043c\u0447\u0438\u043a \u0441 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0431\u044b\u043b\u043e \u0441\u043a\u0443\u0447\u043d\u043e\" width=\"1116\" height=\"720\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/845\/f94\/a3e\/845f94a3e8cdc85399f6b5accd8eeab6.png\"\/><\/p>\n<div><figcaption>\u043c\u0435\u043c\u0447\u0438\u043a \u0441 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0431\u044b\u043b\u043e \u0441\u043a\u0443\u0447\u043d\u043e<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c XGBoost, \u043f\u0440\u043e\u0433\u043e\u043d\u0438\u043c \u0435\u0433\u043e \u0447\u0435\u0440\u0435\u0437 GridSearchCV, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0435\u0442 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e. \u042f \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u043c\u0435\u0447\u0443, \u0447\u0442\u043e \u0447\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0432\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u043f\u0440\u043e\u0433\u043d\u0430\u0442\u044c, \u0442\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u044d\u0442\u043e \u0437\u0430\u0439\u043c\u0435\u0442. <\/p>\n<p>GridSearchCV \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0442\u044c \u043b\u0443\u0447\u0448\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438, \u043f\u043e \u043c\u043e\u0438\u043c \u043e\u0449\u0443\u0449\u0435\u043d\u0438\u044f\u043c \u0443 XGBoost \u0434\u0430\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0447\u0435\u043c \u0443 Catboost, \u043a\u0430\u043a \u0438 \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u044f \u043d\u0435 \u043f\u0440\u0430\u0432, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0441\u043b\u0438 \u0443 \u043a\u043e\u0433\u043e \u0442\u043e \u0435\u0441\u0442\u044c \u043c\u044b\u0441\u043b\u0438 \u043d\u0430 \u044d\u0442\u043e\u0442 \u0441\u0447\u0435\u0442, \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0438\u0445 \u043f\u043e\u0441\u043b\u0443\u0448\u0430\u0442\u044c.<br \/>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441:<\/p>\n<pre><code class=\"python\">from xgboost import XGBClassifier from sklearn.model_selection import GridSearchCV xgbmodel = XGBClassifier() parameters = {'learning_rate': [0.03, 0.1],               'max_depth': [2,3.5, 10],               'colsample_bytree': [0.7, 0.5, 1],               'n_estimators': [0,150,10]}  xgb_grid = GridSearchCV(xgbmodel,                         parameters,                         cv = 2,                         n_jobs = 5,                         verbose=True)  xgb_grid.fit(X,y)  print(xgb_grid.best_score_) print(xgb_grid.best_params_)<\/code><\/pre>\n<p>\u041d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0442\u0430\u043a\u043e\u0435:<br \/>Fitting 2 folds for each of 54 candidates, totalling 108 fits 0.9807611877875366 {&#8216;colsample_bytree&#8217;: 1, &#8216;learning_rate&#8217;: 0.03, &#8216;max_depth&#8217;: 2, &#8216;n_estimators&#8217;: 150} <\/p>\n<p>\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u044d\u0442\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432 \u043d\u0430\u0448\u0443 \u043c\u043e\u0434\u0435\u043b\u044c XGBoost<\/p>\n<pre><code class=\"python\">xgb=XGBClassifier(n_estimators=150, learning_rate=0.1, max_depth=2, colsample_bytree=0.7 ,randomstate=0) xgb.fit(X_f_train, y_f_train) metrics(y_test, xgb.predict(X_f_test))<\/code><\/pre>\n<p>accuracy: 0.9822268687924726 <br \/>f1: 0.9831516352824579 <br \/>roc auc: 0.982836728555653   <\/p>\n<p>\u041c\u0435\u0442\u0440\u0438\u043a\u0438 \u043b\u0443\u0447\u0448\u0435, \u0447\u0435\u043c \u0443 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0433\u043e \u043b\u0435\u0441\u0430, \u043f\u0440\u0438\u0447\u0435\u043c \u0432\u043e \u0432\u0441\u0435\u0445 3-\u0445 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u0435\u0433\u043e \u0432\u0430\u0440\u0438\u0430\u0446\u0438\u044f\u0445.<br \/>\u041c\u043e\u0436\u043d\u043e \u0441\u0432\u0435\u0440\u0445\u0443 \u043d\u0430\u043a\u0438\u043d\u0443\u0442\u044c Gain \u0438 \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u0432\u044b\u0431\u043e\u0440\u043a\u0443, \u043d\u043e \u043a\u0430\u043a \u043f\u043e \u043c\u043d\u0435 8 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0438 \u0442\u0430\u043a\u0438\u0435 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u044d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u0435\u0435 \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435. \u0415\u0441\u043b\u0438 \u0443 \u043a\u043e\u0433\u043e- \u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0436\u0435\u043b\u0430\u043d\u0438\u0435, \u0434\u0443\u043c\u0430\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434 Gain \u043f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438 \u0441 Random-Forest (\u0441\u043d\u043e\u0432\u0430 \u0436\u0435 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f) \u043d\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442 \u0442\u0440\u0443\u0434\u0430. <\/p>\n<p>\u0410 \u043c\u044b \u0434\u0435\u043b\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0448\u0430\u0433<\/p>\n<h2>CatBoost<\/h2>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/7cb\/b99\/fee\/7cbb99feed99cfefc7c546585ee9e6bd.jpg\" alt=\"\" title=\"\" width=\"225\" height=\"225\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7cb\/b99\/fee\/7cbb99feed99cfefc7c546585ee9e6bd.jpg\" data-blurred=\"true\"\/><\/figure>\n<p>\u041e\u0442\u0431\u043e\u0440 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438 \u0447\u0435\u0440\u0435\u0437 Catboost, \u043a \u0442\u043e\u043c\u0443 \u0436\u0435 \u0443 \u043d\u0435\u0433\u043e \u0435\u0441\u0442\u044c \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u0432\u043e\u0439 \u043c\u0435\u0442\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0435\u0449\u0435 \u0438 \u0433\u0440\u0430\u0444\u0438\u043a \u043f\u0440\u0438\u043a\u043e\u043b\u044c\u043d\u044b\u0439 \u0441\u0442\u0440\u043e\u0438\u0442, \u043d\u043e \u0432\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0436\u0434\u0430\u0442\u044c, \u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b XGBoost \u0443 \u043d\u0430\u0441 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0438 \u0434\u0443\u043c\u0430\u044e \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0442\u0438\u0432, \u0435\u0441\u043b\u0438 \u043c\u044b \u0438\u0445 \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u0443\u0435\u043c \u0432 Catboost \u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c\u0438:<\/p>\n<pre><code class=\"python\">from catboost import CatBoostClassifier cat=CatBoostClassifier(n_estimators=150, learning_rate=0.1, max_depth=2,bootstrap_type='Bayesian', task_type='GPU') cat.fit(X_f_train,y_f_train, verbose=False) cat_pred=cat.predict(X_f_test) metrics(y_test, cat_pred)<\/code><\/pre>\n<p>\u041c\u0435\u0442\u0440\u0438\u043a\u0438: <br \/>accuracy: 0.9822268687924726 <br \/>f1: 0.9831516352824579 <br \/>roc auc: 0.982836728555653  <\/p>\n<p>\u0418\u0442\u0430\u043a, \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e ML \u043c\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043a\u0430\u043a \u0438 \u043e\u0436\u0438\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043b\u0443\u0447\u0448\u0438\u0435 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u043d\u0430 \u043c\u043e\u0434\u0435\u043b\u044f\u0445 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0431\u0443\u0441\u0442\u0438\u043d\u0433\u0430.<\/p>\n<h2>\u041d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u044c \u043d\u0430 tensorflow<\/h2>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0442\u0435\u0437\u0438\u0441 \u0432 I \u0447\u0430\u0441\u0442\u0438 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u044d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443 \u0440\u0435\u0448\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u0443\u044e \u0441\u0435\u0442\u044c. <\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f<\/p>\n<pre><code class=\"python\">mean=X_train.mean(axis=0) std=X_train.std(axis=0) X_train-= mean X_train\/= std X_test-= mean X_test\/= std #\u0437\u0430\u043f\u0440\u0438\u043d\u0442\u0438\u043c \u0447\u0442\u043e \u043c\u044b \u0441\u0434\u0435\u043b\u0430\u043b\u0438 print('train mean',X_train.mean(axis=0)[:5])  print('test mean',X_test.mean(axis=0)[:5])  print('train std',X_train.std(axis=0)[:5]) print('train std',X_test.std(axis=0)[:5])<\/code><\/pre>\n<p>std- \u0441\u0440\u0435\u0434\u043d\u0435\u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0438\u0447\u043d\u043e\u0435 \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u0435 <br \/>mean- \u0441\u0440\u0435\u0434\u043d\u0435\u0435<\/p>\n<p>\u041a\u0441\u0442\u0430\u0442\u0438 std \u0431\u0443\u0434\u0435\u0442 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0440\u0430\u0432\u043d\u043e 1 \u0432 print-\u0435<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e00\/326\/99e\/e0032699e4a0ef87605dd0c54f727d5f.png\" width=\"456\" height=\"533\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e00\/326\/99e\/e0032699e4a0ef87605dd0c54f727d5f.png\"\/><\/figure>\n<h2>\u041d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043e\u0442\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435<\/h2>\n<p>\u0414\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u041d\u0421 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c tensorflow, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0441\u043b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 2.11 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 GPU \u043d\u0430 Windows, \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043d\u0430 \u0438\u0445 \u0441\u0430\u0439\u0442\u0435: <a href=\"https:\/\/www.tensorflow.org\/install\/pip?hl=ru#windows-native_1\" rel=\"noopener noreferrer nofollow\">https:\/\/www.tensorflow.org\/install\/pip?hl=ru#windows-native_1<\/a><br \/>\u0427\u0442\u043e\u0431\u044b \u0440\u0435\u0448\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u0443\u044e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c python \u0432\u0435\u0440\u0441\u0438\u0438 3.9 (\u0443 \u043c\u0435\u043d\u044f 3.9.18), \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043f\u0430\u0439\u0442\u043e\u043d \u043d\u0435 \u043d\u0443\u0436\u043d\u043e, \u043d\u043e \u0434\u043b\u044f \u0432\u0435\u0440\u0441\u0438\u0438 3.9 \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0440\u0435\u0434\u0443, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0447\u0435\u0440\u0435\u0437 miniconda, \u0441\u043a\u0430\u0447\u0430\u0442\u044c CUDA \u0438 CUDNN \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 NVidia, \u043d\u0430\u0441\u0447\u0435\u0442 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432 \u043d\u0435 \u0437\u043d\u0430\u044e, \u0442\u0430\u043a \u043a\u0430\u043a \u0443 \u0441\u0430\u043c\u043e\u0433\u043e Nvidia. \u0412\u0441\u0435 \u0432\u0435\u0441\u0435\u043b\u044c\u0435 \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u0442\u043e\u043c \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u0438 \u0432\u0441\u0435\u0445 \u044d\u0442\u0438\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 tensorflow. \u041d\u0430 \u044d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0443\u0439\u0442\u0438 \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0435\u0441\u043b\u0438 \u0440\u0430\u043d\u0435\u0435 \u0432\u044b \u043d\u0438\u0447\u0435\u0433\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u043b\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043c\u043e\u0447\u044c \u044d\u0442\u043e\u0442 \u043f\u0430\u0440\u0435\u043d\u044c \u0441 \u044e\u0442\u0443\u0431\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043c\u043e\u0440\u043e\u0447\u0438\u043b\u0441\u044f \u0438 \u0441\u0434\u0435\u043b\u0430\u043b \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0443\u044e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0432\u0441\u0435\u0445 Cuda \u0438 Cudnn: <a href=\"https:\/\/www.youtube.com\/watch?v=xTF_n1jp9n8\" rel=\"noopener noreferrer nofollow\">https:\/\/www.youtube.com\/watch?v=xTF_n1jp9n8<\/a><br \/>\u041e\u0434\u043d\u0430\u043a\u043e \u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043d\u043e\u0432\u043e\u0439 Venv ( \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u044b) \u043e\u043d \u0432\u0440\u043e\u0434\u0435 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u043b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0442\u0435\u043c \u043a\u0442\u043e \u0438\u0449\u0435\u0442 \u0433\u0443\u0433\u043b \u0432 \u043f\u043e\u043c\u043e\u0449\u044c. <\/p>\n<p>\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0430 \u0432\u0441\u0435\u043c\u0443 \u044d\u0442\u043e\u043c\u0443 \u043b\u0438\u0431\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 CPU \u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0430 \u043e\u0431\u044b\u0447\u043d\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0435, \u043b\u0438\u0431\u043e \u0436\u0435 google Colab, \u0433\u0434\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043d\u0430 \u0447\u0435\u043c \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432\u0430\u0448\u0430 \u0441\u0440\u0435\u0434\u0430 \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043b\u044e\u0448\u043a\u0430\u043c\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430. \u0414\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u0438\u0445 \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0435\u0439 \u0434\u043e\u043b\u0436\u043d\u043e \u0445\u0432\u0430\u0442\u0438\u0442\u044c. <\/p>\n<p>\u041e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 GPU \u044f\u0432\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0447\u0435\u043c \u043d\u0430 CPU, \u043f\u0440\u0438\u0440\u043e\u0441\u0442 \u0432 1.5-2 \u0440\u0430\u0437\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u043e\u0447\u043d\u043e.<\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043c \u043e\u0442\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435<\/p>\n<p>\u0417\u0430\u0434\u0430\u0434\u0438\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043c\u043e\u0434\u0435\u043b\u0438, \u0430 \u043f\u0435\u0440\u0435\u0434 \u044d\u0442\u0438\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043b\u0438 GPU <\/p>\n<pre><code class=\"python\">import tensorflow as tf  physical_devices = tf.config.list_physical_devices('GPU') print(\"Num GPUs:\", len(physical_devices)) #output: 1  \u0435\u0441\u043b\u0438 gpu \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442  model = tf.keras.Sequential([     tf.keras.layers.Dense(32, activation='relu', input_shape=(X_train.shape[1],)),     tf.keras.layers.Dense(16, activation='relu' ),                          tf.keras.layers.Dense(1, activation='sigmoid') ]) model.summary()  # Model: \"sequential\" # _________________________________________________________________ #  Layer (type)                Output Shape              Param #    # ================================================================= #  dense (Dense)               (None, 32)                1376                                                                         #  dense_1 (Dense)             (None, 16)                528                                                                          #  dense_2 (Dense)             (None, 1)                 17                                                                           # ================================================================= # Total params: 1,921 # Trainable params: 1,921 # Non-trainable params: 0 # _________________________________________________________________<\/code><\/pre>\n<p>\u041e\u0431\u0443\u0447\u0430\u0435\u043c \u0438 \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 loss\u044b<\/p>\n<pre><code class=\"python\"> model.compile(optimizer='adam', loss='binary_crossentropy')  history = model.fit(X_train, y_train, epochs=16, verbose=1)  # \u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f plt.plot(history.history['loss']) plt.xlim(-0.5,20) plt.title('Loss') plt.xlabel('Epoch') plt.ylabel('Loss') plt.show()<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/cb5\/139\/0ba\/cb51390ba4eda8c78a785141446151f6.png\" alt=\"model loss\" title=\"model loss\" width=\"592\" height=\"457\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cb5\/139\/0ba\/cb51390ba4eda8c78a785141446151f6.png\"\/><\/p>\n<div><figcaption>model loss<\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f Datagenerator\u043e\u043c, \u043f\u043e\u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0443 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u0440\u0430 \u0441 youtube: <a href=\"https:\/\/www.youtube.com\/watch?v=PLlic60dgS4&amp;list=PLkJJmZ1EJno4lRvtQjQrNNACpeMLOd-SD&amp;index=7\" rel=\"noopener noreferrer nofollow\">https:\/\/www.youtube.com\/watch?v=PLlic60dgS4&amp;list=PLkJJmZ1EJno4lRvtQjQrNNACpeMLOd-SD&amp;index=7<\/a><\/p>\n<p>\u0412 \u043d\u0435\u043c \u0437\u0430\u0434\u0430\u0435\u0442\u0441\u044f batch_size, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u043e\u0441\u043a\u043e\u0440\u0435\u0435, \u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u044c\u0442\u0435 \u0435\u0433\u043e \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043e 16, 32 \u0438\u043b\u0438 48 \u0438 \u0442.\u0434. \u041a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u043c\u043e\u0434\u0435\u043b\u0438 \u0443\u043f\u0430\u0434\u0435\u0442, \u043d\u043e \u0437\u0430\u0442\u043e \u043e\u043d\u0430 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f.<\/p>\n<pre><code class=\"python\">import numpy as np from tensorflow.keras.utils import Sequence   class DataGenerator(Sequence):     def __init__(self, data, labels, batch_size=1):         self.batch_size = batch_size         self.data = data         self.labels = labels              def __len__(self):         return int(np.round(len(self.data) \/ self.batch_size))      def __getitem__(self, index):         X = self.data[index * self.batch_size : (index+1) * self.batch_size]         y = self.labels[index * self.batch_size : (index+1) * self.batch_size]          return X, y train_datagen = DataGenerator(X_train, y_train) test_datagen = DataGenerator(X_test, y_test) print(len(train_datagen)) print(len(test_datagen))<\/code><\/pre>\n<p>\u041e\u0431\u0443\u0447\u0438\u043c \u0435\u0449\u0435 \u043e\u0434\u043d\u0443 \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0443 \u0441 \u043e\u0446\u0435\u043d\u043a\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438<\/p>\n<pre><code class=\"python\">from tensorflow.keras.callbacks import ModelCheckpoint  # \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043a\u043e\u043b\u043b\u0431\u044d\u043a \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u0446\u0435\u043d\u043a\u0438 \u043d\u0430 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 checkpoint = ModelCheckpoint(filepath='best_model.h5', save_best_only=True, save_weights_only=True) # \u041e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0441 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c \u043e\u0446\u0435\u043d\u043a\u0438 \u043d\u0430 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 history = model.fit(train_datagen, epochs=16, batch_size=100, validation_data=test_datagen, callbacks=[checkpoint])  # \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043b\u0443\u0447\u0448\u0438\u0445 \u0432\u0435\u0441\u043e\u0432 \u043c\u043e\u0434\u0435\u043b\u0438 model.load_weights('best_model.h5')  plt.plot(history.history['loss'], label='train loss') plt.plot(history.history['val_loss'], label='validation loss') plt.legend( );<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/99d\/444\/8a7\/99d4448a75edbfff0363939dc502497c.png\" width=\"556\" height=\"413\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/99d\/444\/8a7\/99d4448a75edbfff0363939dc502497c.png\"\/><\/figure>\n<p>\u041d\u0443 \u0442\u0430\u043a\u043e\u0435 \u0441\u0435\u0431\u0435, \u0432\u0438\u0434\u0438\u043c\u043e \u043d\u0435 \u0441\u0435\u0433\u043e\u0434\u043d\u044f, tensorflow.<\/p>\n<p>\u041c\u043e\u0436\u043d\u043e \u043f\u043e\u043a\u0440\u0443\u0442\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043c\u043e\u0434\u0435\u043b\u0438 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0439\u0442\u0438 \u043d\u0430 \u043d\u0435\u043f\u043b\u043e\u0445\u0438\u0435 \u043c\u0435\u0442\u0440\u0438\u043a\u0438, \u043d\u043e \u044d\u0442\u0430 \u0438\u0433\u0440\u0430 \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u0441\u0432\u0435\u0447. <\/p>\n<h2>\u0411\u043e\u043d\u0443\u0441. Isolation Forest<\/h2>\n<p>\u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b \u043c\u044b \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0432\u0441\u0435 \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438 \u043f\u043e\u0441\u043b\u0435 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0431\u0443\u0441\u0442\u0438\u043d\u0433\u0430 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u0438 \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0447\u0442\u043e \u043c\u043e\u0434\u0435\u043b\u044c \u0433\u043e\u0442\u043e\u0432\u0430, \u043d\u043e \u0440\u0430\u0434\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0430 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c Isolation Forest. \u042d\u0442\u043e \u043c\u0435\u0442\u043e\u0434 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0431\u0435\u0437 \u0443\u0447\u0438\u0442\u0435\u043b\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0437\u0430\u0434\u0430\u0447\u0430\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u043f\u043e\u0438\u0441\u043a\u0430 \u0430\u043d\u043e\u043c\u0430\u043b\u0438\u0439. <\/p>\n<pre><code class=\"python\">from sklearn.ensemble import IsolationForest clf = IsolationForest(max_samples=50, random_state=0) clf.fit(X_f) pred=clf.predict(X_f_test) # \u043d\u0430 \u0432\u044b\u0445\u043e\u0434 \u043c\u043e\u0434\u0435\u043b\u044c \u0432\u044b\u0434\u0430\u0435\u0442 \u043b\u0438\u0431\u043e 1 \u043b\u0438\u0431\u043e -1, \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043a \u043d\u0430\u0448\u0438\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c, \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f: pred_processed = np.where(pred == -1, 0, pred)  pred_counts = pd.Series(pred_processed).value_counts()  # \u0421\u0442\u0440\u043e\u0438\u043c \u0433\u0440\u0430\u0444\u0438\u043a pred_counts.plot(kind='barh', color=sns.palettes.mpl_palette('Dark2')) plt.gca().spines[['top', 'right']].set_visible(False) plt.title('Isolation Forest') plt.xlim(0, pred_counts.max())  plt.show()<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/13e\/f6a\/5a4\/13ef6a5a4169238d6db51dcba1fefd38.png\" width=\"535\" height=\"436\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/13e\/f6a\/5a4\/13ef6a5a4169238d6db51dcba1fefd38.png\"\/><\/figure>\n<pre><code class=\"python\">zeros_count = y_test[y_test == 0].count() ones_count = y_test[y_test == 1].count()  print(\"\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043d\u0443\u043b\u0435\u0439 \u0432 y_test:\", zeros_count) print(\"\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0435\u0434\u0438\u043d\u0438\u0446 \u0432 y_test:\", ones_count)<\/code><\/pre>\n<p>\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043d\u0443\u043b\u0435\u0439 \u0432 y_test: koi_pdisposition    894 dtype: int64 <br \/>\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0435\u0434\u0438\u043d\u0438\u0446 \u0432 y_test: koi_pdisposition    1019 dtype: int64  <\/p>\n<p>\u041c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0433\u043d\u0430\u0442\u044c \u0435\u0433\u043e \u0447\u0435\u0440\u0435\u0437 \u043c\u0435\u0442\u0440\u0438\u043a\u0438, \u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043e\u0441\u043e\u0431\u043e\u0433\u043e \u0441\u043c\u044b\u0441\u043b\u0430, \u0432\u0435\u0434\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e 0 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043d\u0430 150-200 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0432\u044b\u0448\u0435, \u0447\u0435\u043c \u0443 \u043c\u043e\u0434\u0435\u043b\u0438, \u0434\u0430 \u0438 \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u043f\u043e\u0434\u0445\u043e\u0434 \u043c\u0435\u0442\u0440\u0438\u043a \u043a \u0437\u0430\u0434\u0430\u0447\u0430\u043c \u0431\u0435\u0437 \u0443\u0447\u0438\u0442\u0435\u043b\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u043e\u043c\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439. \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u0442\u043e, \u0447\u0442\u043e \u0438\u0441\u043a\u0430\u043b\u0438. <\/p>\n<h2>\u0412\u044b\u0432\u043e\u0434<\/h2>\n<p>\u0413\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043d\u044b\u0439 \u0431\u0443\u0441\u0442\u0438\u043d\u0433 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0433\u0440\u043e\u0437\u043e\u0439 Kaggle \u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u044c\u044e \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043f\u0440\u0430\u0432\u0438\u043b\u0430\u0441\u044c \u043b\u0443\u0447\u0448\u0435 \u0447\u0435\u043c \u041d\u0421. \u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u043a\u0430\u043a \u043c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0438 \u043d\u0443\u0436\u043d\u043e \u043d\u0430 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0431\u043e\u043b\u044c\u0448\u0435 \u0438 \u0442\u043e\u0433\u0434\u0430 \u043e\u043d\u0430 \u043f\u043e \u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u0437\u0430\u0438\u0433\u0440\u0430\u0435\u0442 \u0438 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043e\u043a\u0443\u043f\u0438\u0442\u0441\u044f. \u042f \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 2 \u0441\u0442\u0430\u0442\u044c\u0438 \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043b\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u043a\u0440\u0443\u0433 \u043b\u044e\u0434\u0435\u0439, \u043a\u0430\u043a \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432, \u0442\u0430\u043a \u0438 \u0431\u043e\u043b\u0435\u0435 \u043e\u043f\u044b\u0442\u043d\u044b\u0445 \u0432 data science, \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0444\u0438\u0434\u0431\u044d\u043a \u043f\u043e \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0435, \u0438\u043b\u0438 \u043a\u0430\u043a\u0438\u0435 \u0442\u043e \u0441\u043e\u0432\u0435\u0442\u044b \u043f\u043e \u0442\u043e\u043c\u0443, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043c\u043e\u0434\u0435\u043b\u0435\u0439. <\/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\/803117\/\"> https:\/\/habr.com\/ru\/articles\/803117\/<\/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<h4>\u042d\u0442\u043e \u0432\u0442\u043e\u0440\u0430\u044f \u0438 \u0437\u0430\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c \u0437\u0430\u0434\u0430\u0447\u0443 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u044d\u043a\u0437\u043e\u043f\u043b\u0430\u043d\u0435\u0442. \u0415\u0441\u043b\u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u0431\u044b\u043b\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u043e \u043f\u0440\u0435\u0434\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0434\u0430\u043d\u043d\u044b\u0445, \u0442\u043e \u0437\u0434\u0435\u0441\u044c \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u0438, \u043e\u0442\u0431\u0438\u0440\u0430\u0442\u044c \u043b\u0443\u0447\u0448\u0438\u0435 \u0438 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c. <\/h4>\n<h4>P.S. \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043d\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043b\u0443\u0447\u0448\u0435 \u043d\u0430\u0447\u0430\u0442\u044c \u0441 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438: https:\/\/habr.com\/ru\/articles\/800999\/<\/h4>\n<p>\u0418\u0442\u0430\u043a \u044f \u043d\u0430\u0434\u0435\u044e\u0441\u044c \u0447\u0442\u043e \u0432\u0441\u0435 \u043a\u0442\u043e \u0445\u043e\u0442\u0435\u043b, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u043f\u0435\u0440\u0432\u0443\u044e \u0447\u0430\u0441\u0442\u044c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c.<\/p>\n<h2>\u0421\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u041b\u0435\u0441<\/h2>\n<p>\u0412 \u0442\u043e\u0442 \u0440\u0430\u0437 \u043c\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u043b\u0438 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u043c Gain, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u043b\u0435\u0441, \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u0431\u044b\u043b\u043e \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c, \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0432 \u0435\u0449\u0435 \u043e\u0434\u043d\u0443 \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0433\u043e \u043b\u0435\u0441\u0430.<\/p>\n<pre><code class=\"python\">rfi = RandomForestClassifier(max_depth=2, random_state=42) rfi.fit(X_train[['koi_fpflag_nt', 'koi_fpflag_ss', 'koi_fpflag_co', 'koi_fpflag_ec',        'koi_depth', 'koi_prad', 'koi_prad_err1', 'koi_prad_err2', 'koi_teq',        'koi_insol_err1', 'koi_insol_err2', 'koi_model_snr', 'koi_steff_err1',        'koi_steff_err2']], y_train) rfi_pred_train=rfi.predict(X_train[['koi_fpflag_nt', 'koi_fpflag_ss', 'koi_fpflag_co', 'koi_fpflag_ec',        'koi_depth', 'koi_prad', 'koi_prad_err1', 'koi_prad_err2', 'koi_teq',        'koi_insol_err1', 'koi_insol_err2', 'koi_model_snr', 'koi_steff_err1',        'koi_steff_err2']]) rfi_pred_test=rfi.predict(X_test[['koi_fpflag_nt', 'koi_fpflag_ss', 'koi_fpflag_co', 'koi_fpflag_ec',        'koi_depth', 'koi_prad', 'koi_prad_err1', 'koi_prad_err2', 'koi_teq',        'koi_insol_err1', 'koi_insol_err2', 'koi_model_snr', 'koi_steff_err1',        'koi_steff_err2']])<\/code><\/pre>\n<p>\u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043a\u0440\u0430\u0441\u043e\u0447\u043d\u043e \u0442\u0430\u0441\u043a\u0430\u0442\u044c \u0441 \u0441\u043e\u0431\u043e\u0439 \u044d\u0442\u043e\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0437 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u0432, \u043d\u043e \u044f \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u043b\u0435\u043d\u0438\u0432\u044b\u0439, \u0443\u0432\u0438\u0434\u0435\u043b \u0432\u044b\u0432\u043e\u0434 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u0432 \u0432 Feature Selection, \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043b, \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0441\u043a\u043e\u0431\u043e\u0447\u043a\u0438 [\u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u044b\u0435] \u0438 \u0432\u043f\u0435\u0440\u0435\u0434. <\/p>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043c\u0435\u0442\u0440\u0438\u043a\u0438<\/p>\n<pre><code class=\"python\">metrics(y_test,rfi_pred_test)<\/code><\/pre>\n<p>accuracy: 0.9456351280710925 <br \/>f1: 0.94831013916501 <br \/>roc auc: 0.9462939057241274   <\/p>\n<p>\u0410 \u0447\u0435 \u044d\u0442\u043e \u0437\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0442\u0430\u043a\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u0441\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u043f\u0435\u0440\u0435\u0448\u0435\u043b \u043d\u0430 \u043f\u0435\u0440\u0432\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0438 \u043f\u043e\u043b\u0435\u043d\u0438\u043b\u0441\u044f. \u041d\u0435 \u043e\u0441\u0443\u0436\u0434\u0430\u044e. \u042d\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0438 \u0432\u043e\u0442 \u043e\u043d\u0430: <\/p>\n<pre><code class=\"python\">def metrics(y_true,y_pred):     acc=accuracy_score(y_true, y_pred)     f1=f1_score(y_true, y_pred)     roc_auc=roc_auc_score(y_true, y_pred)     print(f'accuracy: {acc}\\nf1: {f1}\\nroc auc: {roc_auc} ')<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0447\u0435\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0442\u0430\u043a\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u043d\u0430\u043c \u0436\u0438\u0437\u043d\u044c, \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c)<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043c \u043f\u0440\u043e \u0442\u043e, \u0447\u0442\u043e \u0435\u0449\u0435 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 F-\u0442\u0435\u0441\u0442 \u0434\u043b\u044f \u043e\u0442\u0431\u043e\u0440\u0430 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u0432, \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0442\u0430\u043a\u043e\u0439 \u0441\u043f\u0438\u0441\u043e\u043a:  [&#8216;koi_fpflag_nt&#8217;, &#8216;koi_fpflag_ss&#8217;, &#8216;koi_fpflag_co&#8217;, &#8216;koi_fpflag_ec&#8217;, &#8216;koi_depth&#8217;, &#8216;koi_teq&#8217;, &#8216;koi_steff_err1&#8217;, &#8216;koi_steff_err2&#8217;] , \u0441 \u043d\u0435\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u0431\u0438\u0440\u0430\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e X_f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u043b\u0430\u0441\u044c \u0432 \u043a\u043e\u0434\u0435 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438<\/p>\n<pre><code class=\"python\">y_f=y X_f_train, X_f_test, y_f_train, y_f_test = train_test_split(X_f, y_f, test_size=0.2, random_state=42) model_f=RandomForestClassifier(max_depth=2, random_state=42) model_f.fit(X_f_train, y_f_train) f_pred=model_f.predict(X_f_test) metrics(y_f_test, f_pred)<\/code><\/pre>\n<p>accuracy: 0.9790904338734971 <br \/>f1: 0.9801192842942346 <br \/>roc auc: 0.9798926657489797   <\/p>\n<p>\u041f\u043e\u043a\u0430 \u0447\u0442\u043e F-test \u044d\u0442\u043e \u0441\u0430\u043c\u043e\u0435 \u043b\u0443\u0447\u0448\u0435\u0435 \u0447\u0442\u043e \u0441\u043b\u0443\u0447\u0430\u043b\u043e\u0441\u044c \u0441 \u044d\u0442\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u043c\u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043d\u0440\u0430\u0432\u044f\u0442\u0441\u044f \u0442\u0430\u043a\u0438\u0435 \u043c\u0435\u0442\u0440\u0438\u043a\u0438, \u043d\u043e \u043c\u044b \u043d\u0430 \u044d\u0442\u043e\u043c \u043d\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c\u0441\u044f. <\/p>\n<h2>XGBoost<\/h2>\n<figure class=\"full-width\">\n<div><figcaption>\u043c\u0435\u043c\u0447\u0438\u043a \u0441 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0431\u044b\u043b\u043e \u0441\u043a\u0443\u0447\u043d\u043e<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c XGBoost, \u043f\u0440\u043e\u0433\u043e\u043d\u0438\u043c \u0435\u0433\u043e \u0447\u0435\u0440\u0435\u0437 GridSearchCV, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0435\u0442 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e. \u042f \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u043c\u0435\u0447\u0443, \u0447\u0442\u043e \u0447\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0432\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u043f\u0440\u043e\u0433\u043d\u0430\u0442\u044c, \u0442\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u044d\u0442\u043e \u0437\u0430\u0439\u043c\u0435\u0442. <\/p>\n<p>GridSearchCV \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0442\u044c \u043b\u0443\u0447\u0448\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438, \u043f\u043e \u043c\u043e\u0438\u043c \u043e\u0449\u0443\u0449\u0435\u043d\u0438\u044f\u043c \u0443 XGBoost \u0434\u0430\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0447\u0435\u043c \u0443 Catboost, \u043a\u0430\u043a \u0438 \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u044f \u043d\u0435 \u043f\u0440\u0430\u0432, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0441\u043b\u0438 \u0443 \u043a\u043e\u0433\u043e \u0442\u043e \u0435\u0441\u0442\u044c \u043c\u044b\u0441\u043b\u0438 \u043d\u0430 \u044d\u0442\u043e\u0442 \u0441\u0447\u0435\u0442, \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0438\u0445 \u043f\u043e\u0441\u043b\u0443\u0448\u0430\u0442\u044c.<br \/>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441:<\/p>\n<pre><code class=\"python\">from xgboost import XGBClassifier from sklearn.model_selection import GridSearchCV xgbmodel = XGBClassifier() parameters = {'learning_rate': [0.03, 0.1],               'max_depth': [2,3.5, 10],               'colsample_bytree': [0.7, 0.5, 1],               'n_estimators': [0,150,10]}  xgb_grid = GridSearchCV(xgbmodel,                         parameters,                         cv = 2,                         n_jobs = 5,                         verbose=True)  xgb_grid.fit(X,y)  print(xgb_grid.best_score_) print(xgb_grid.best_params_)<\/code><\/pre>\n<p>\u041d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0442\u0430\u043a\u043e\u0435:<br \/>Fitting 2 folds for each of 54 candidates, totalling 108 fits 0.9807611877875366 {&#8216;colsample_bytree&#8217;: 1, &#8216;learning_rate&#8217;: 0.03, &#8216;max_depth&#8217;: 2, &#8216;n_estimators&#8217;: 150} <\/p>\n<p>\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u044d\u0442\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432 \u043d\u0430\u0448\u0443 \u043c\u043e\u0434\u0435\u043b\u044c XGBoost<\/p>\n<pre><code class=\"python\">xgb=XGBClassifier(n_estimators=150, learning_rate=0.1, max_depth=2, colsample_bytree=0.7 ,randomstate=0) xgb.fit(X_f_train, y_f_train) metrics(y_test, xgb.predict(X_f_test))<\/code><\/pre>\n<p>accuracy: 0.9822268687924726 <br \/>f1: 0.9831516352824579 <br \/>roc auc: 0.982836728555653   <\/p>\n<p>\u041c\u0435\u0442\u0440\u0438\u043a\u0438 \u043b\u0443\u0447\u0448\u0435, \u0447\u0435\u043c \u0443 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0433\u043e \u043b\u0435\u0441\u0430, \u043f\u0440\u0438\u0447\u0435\u043c \u0432\u043e \u0432\u0441\u0435\u0445 3-\u0445 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u0435\u0433\u043e \u0432\u0430\u0440\u0438\u0430\u0446\u0438\u044f\u0445.<br \/>\u041c\u043e\u0436\u043d\u043e \u0441\u0432\u0435\u0440\u0445\u0443 \u043d\u0430\u043a\u0438\u043d\u0443\u0442\u044c Gain \u0438 \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u0432\u044b\u0431\u043e\u0440\u043a\u0443, \u043d\u043e \u043a\u0430\u043a \u043f\u043e \u043c\u043d\u0435 8 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0438 \u0442\u0430\u043a\u0438\u0435 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u044d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u0435\u0435 \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435. \u0415\u0441\u043b\u0438 \u0443 \u043a\u043e\u0433\u043e- \u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0436\u0435\u043b\u0430\u043d\u0438\u0435, \u0434\u0443\u043c\u0430\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434 Gain \u043f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438 \u0441 Random-Forest (\u0441\u043d\u043e\u0432\u0430 \u0436\u0435 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f) \u043d\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442 \u0442\u0440\u0443\u0434\u0430. <\/p>\n<p>\u0410 \u043c\u044b \u0434\u0435\u043b\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0448\u0430\u0433<\/p>\n<h2>CatBoost<\/h2>\n<figure class=\"\"><\/figure>\n<p>\u041e\u0442\u0431\u043e\u0440 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438 \u0447\u0435\u0440\u0435\u0437 Catboost, \u043a \u0442\u043e\u043c\u0443 \u0436\u0435 \u0443 \u043d\u0435\u0433\u043e \u0435\u0441\u0442\u044c \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u0432\u043e\u0439 \u043c\u0435\u0442\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0435\u0449\u0435 \u0438 \u0433\u0440\u0430\u0444\u0438\u043a \u043f\u0440\u0438\u043a\u043e\u043b\u044c\u043d\u044b\u0439 \u0441\u0442\u0440\u043e\u0438\u0442, \u043d\u043e \u0432\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0436\u0434\u0430\u0442\u044c, \u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b XGBoost \u0443 \u043d\u0430\u0441 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0438 \u0434\u0443\u043c\u0430\u044e \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0442\u0438\u0432, \u0435\u0441\u043b\u0438 \u043c\u044b \u0438\u0445 \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u0443\u0435\u043c \u0432 Catboost \u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c\u0438:<\/p>\n<pre><code class=\"python\">from catboost import CatBoostClassifier cat=CatBoostClassifier(n_estimators=150, learning_rate=0.1, max_depth=2,bootstrap_type='Bayesian', task_type='GPU') cat.fit(X_f_train,y_f_train, verbose=False) cat_pred=cat.predict(X_f_test) metrics(y_test, cat_pred)<\/code><\/pre>\n<p>\u041c\u0435\u0442\u0440\u0438\u043a\u0438: <br \/>accuracy: 0.9822268687924726 <br \/>f1: 0.9831516352824579 <br \/>roc auc: 0.982836728555653  <\/p>\n<p>\u0418\u0442\u0430\u043a, \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e ML \u043c\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043a\u0430\u043a \u0438 \u043e\u0436\u0438\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043b\u0443\u0447\u0448\u0438\u0435 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u043d\u0430 \u043c\u043e\u0434\u0435\u043b\u044f\u0445 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0431\u0443\u0441\u0442\u0438\u043d\u0433\u0430.<\/p>\n<h2>\u041d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u044c \u043d\u0430 tensorflow<\/h2>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0442\u0435\u0437\u0438\u0441 \u0432 I \u0447\u0430\u0441\u0442\u0438 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u044d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443 \u0440\u0435\u0448\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u0443\u044e \u0441\u0435\u0442\u044c. <\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f<\/p>\n<pre><code class=\"python\">mean=X_train.mean(axis=0) std=X_train.std(axis=0) X_train-= mean X_train\/= std X_test-= mean X_test\/= std #\u0437\u0430\u043f\u0440\u0438\u043d\u0442\u0438\u043c \u0447\u0442\u043e \u043c\u044b \u0441\u0434\u0435\u043b\u0430\u043b\u0438 print('train mean',X_train.mean(axis=0)[:5])  print('test mean',X_test.mean(axis=0)[:5])  print('train std',X_train.std(axis=0)[:5]) print('train std',X_test.std(axis=0)[:5])<\/code><\/pre>\n<p>std- \u0441\u0440\u0435\u0434\u043d\u0435\u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0438\u0447\u043d\u043e\u0435 \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u0435 <br \/>mean- \u0441\u0440\u0435\u0434\u043d\u0435\u0435<\/p>\n<p>\u041a\u0441\u0442\u0430\u0442\u0438 std \u0431\u0443\u0434\u0435\u0442 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0440\u0430\u0432\u043d\u043e 1 \u0432 print-\u0435<\/p>\n<figure class=\"\"><\/figure>\n<h2>\u041d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043e\u0442\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435<\/h2>\n<p>\u0414\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u041d\u0421 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c tensorflow, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0441\u043b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 2.11 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 GPU \u043d\u0430 Windows, \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043d\u0430 \u0438\u0445 \u0441\u0430\u0439\u0442\u0435: <a href=\"https:\/\/www.tensorflow.org\/install\/pip?hl=ru#windows-native_1\" rel=\"noopener noreferrer nofollow\">https:\/\/www.tensorflow.org\/install\/pip?hl=ru#windows-native_1<\/a><br \/>\u0427\u0442\u043e\u0431\u044b \u0440\u0435\u0448\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u0443\u044e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c python \u0432\u0435\u0440\u0441\u0438\u0438 3.9 (\u0443 \u043c\u0435\u043d\u044f 3.9.18), \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043f\u0430\u0439\u0442\u043e\u043d \u043d\u0435 \u043d\u0443\u0436\u043d\u043e, \u043d\u043e \u0434\u043b\u044f \u0432\u0435\u0440\u0441\u0438\u0438 3.9 \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0440\u0435\u0434\u0443, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0447\u0435\u0440\u0435\u0437 miniconda, \u0441\u043a\u0430\u0447\u0430\u0442\u044c CUDA \u0438 CUDNN \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 NVidia, \u043d\u0430\u0441\u0447\u0435\u0442 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432 \u043d\u0435 \u0437\u043d\u0430\u044e, \u0442\u0430\u043a \u043a\u0430\u043a \u0443 \u0441\u0430\u043c\u043e\u0433\u043e Nvidia. \u0412\u0441\u0435 \u0432\u0435\u0441\u0435\u043b\u044c\u0435 \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u0442\u043e\u043c \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u0438 \u0432\u0441\u0435\u0445 \u044d\u0442\u0438\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 tensorflow. \u041d\u0430 \u044d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0443\u0439\u0442\u0438 \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0435\u0441\u043b\u0438 \u0440\u0430\u043d\u0435\u0435 \u0432\u044b \u043d\u0438\u0447\u0435\u0433\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u043b\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043c\u043e\u0447\u044c \u044d\u0442\u043e\u0442 \u043f\u0430\u0440\u0435\u043d\u044c \u0441 \u044e\u0442\u0443\u0431\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043c\u043e\u0440\u043e\u0447\u0438\u043b\u0441\u044f \u0438 \u0441\u0434\u0435\u043b\u0430\u043b \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0443\u044e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0432\u0441\u0435\u0445 Cuda \u0438 Cudnn: <a href=\"https:\/\/www.youtube.com\/watch?v=xTF_n1jp9n8\" rel=\"noopener noreferrer nofollow\">https:\/\/www.youtube.com\/watch?v=xTF_n1jp9n8<\/a><br \/>\u041e\u0434\u043d\u0430\u043a\u043e \u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043d\u043e\u0432\u043e\u0439 Venv ( \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u044b) \u043e\u043d \u0432\u0440\u043e\u0434\u0435 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u043b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0442\u0435\u043c \u043a\u0442\u043e \u0438\u0449\u0435\u0442 \u0433\u0443\u0433\u043b \u0432 \u043f\u043e\u043c\u043e\u0449\u044c. <\/p>\n<p>\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0430 \u0432\u0441\u0435\u043c\u0443 \u044d\u0442\u043e\u043c\u0443 \u043b\u0438\u0431\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 CPU \u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0430 \u043e\u0431\u044b\u0447\u043d\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0435, \u043b\u0438\u0431\u043e \u0436\u0435 google Colab, \u0433\u0434\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043d\u0430 \u0447\u0435\u043c \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432\u0430\u0448\u0430 \u0441\u0440\u0435\u0434\u0430 \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043b\u044e\u0448\u043a\u0430\u043c\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430. \u0414\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u0438\u0445 \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0435\u0439 \u0434\u043e\u043b\u0436\u043d\u043e \u0445\u0432\u0430\u0442\u0438\u0442\u044c. <\/p>\n<p>\u041e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 GPU \u044f\u0432\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0447\u0435\u043c \u043d\u0430 CPU, \u043f\u0440\u0438\u0440\u043e\u0441\u0442 \u0432 1.5-2 \u0440\u0430\u0437\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u043e\u0447\u043d\u043e.<\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043c \u043e\u0442\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435<\/p>\n<p>\u0417\u0430\u0434\u0430\u0434\u0438\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043c\u043e\u0434\u0435\u043b\u0438, \u0430 \u043f\u0435\u0440\u0435\u0434 \u044d\u0442\u0438\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043b\u0438 GPU <\/p>\n<pre><code class=\"python\">import tensorflow as tf  physical_devices = tf.config.list_physical_devices('GPU') print(\"Num GPUs:\", len(physical_devices)) #output: 1  \u0435\u0441\u043b\u0438 gpu \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442  model = tf.keras.Sequential([     tf.keras.layers.Dense(32, activation='relu', input_shape=(X_train.shape[1],)),     tf.keras.layers.Dense(16, activation='relu' ),                          tf.keras.layers.Dense(1, activation='sigmoid') ]) model.summary()  # Model: \"sequential\" # _________________________________________________________________ #  Layer (type)                Output Shape              Param #    # ================================================================= #  dense (Dense)               (None, 32)                1376                                                                         #  dense_1 (Dense)             (None, 16)                528                                                                          #  dense_2 (Dense)             (None, 1)                 17                                                                           # ================================================================= # Total params: 1,921 # Trainable params: 1,921 # Non-trainable params: 0 # _________________________________________________________________<\/code><\/pre>\n<p>\u041e\u0431\u0443\u0447\u0430\u0435\u043c \u0438 \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 loss\u044b<\/p>\n<pre><code class=\"python\"> model.compile(optimizer='adam', loss='binary_crossentropy')  history = model.fit(X_train, y_train, epochs=16, verbose=1)  # \u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f plt.plot(history.history['loss']) plt.xlim(-0.5,20) plt.title('Loss') plt.xlabel('Epoch') plt.ylabel('Loss') plt.show()<\/code><\/pre>\n<figure class=\"full-width\">\n<div><figcaption>model loss<\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f Datagenerator\u043e\u043c, \u043f\u043e\u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0443 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u0440\u0430 \u0441 youtube: <a href=\"https:\/\/www.youtube.com\/watch?v=PLlic60dgS4&amp;list=PLkJJmZ1EJno4lRvtQjQrNNACpeMLOd-SD&amp;index=7\" rel=\"noopener noreferrer nofollow\">https:\/\/www.youtube.com\/watch?v=PLlic60dgS4&amp;list=PLkJJmZ1EJno4lRvtQjQrNNACpeMLOd-SD&amp;index=7<\/a><\/p>\n<p>\u0412 \u043d\u0435\u043c \u0437\u0430\u0434\u0430\u0435\u0442\u0441\u044f batch_size, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u043e\u0441\u043a\u043e\u0440\u0435\u0435, \u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u044c\u0442\u0435 \u0435\u0433\u043e \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043e 16, 32 \u0438\u043b\u0438 48 \u0438 \u0442.\u0434. \u041a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u043c\u043e\u0434\u0435\u043b\u0438 \u0443\u043f\u0430\u0434\u0435\u0442, \u043d\u043e \u0437\u0430\u0442\u043e \u043e\u043d\u0430 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f.<\/p>\n<pre><code class=\"python\">import numpy as np from tensorflow.keras.utils import Sequence   class DataGenerator(Sequence):     def __init__(self, data, labels, batch_size=1):         self.batch_size =<\/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-371898","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/371898","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=371898"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/371898\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=371898"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=371898"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=371898"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}