diff --git a/Lab_4/Lab4.ipynb b/Lab_4/Lab4.ipynb index 63637f8..74d6a34 100644 --- a/Lab_4/Lab4.ipynb +++ b/Lab_4/Lab4.ipynb @@ -10,7 +10,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -248,7 +248,7 @@ "[90836 rows x 10 columns]" ] }, - "execution_count": 2, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -300,7 +300,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -1063,36 +1063,47 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "from sklearn.base import BaseEstimator, TransformerMixin\n", "from sklearn.compose import ColumnTransformer\n", - "from sklearn.discriminant_analysis import StandardScaler\n", + "from sklearn.preprocessing import StandardScaler\n", "from sklearn.impute import SimpleImputer\n", "from sklearn.pipeline import Pipeline\n", "from sklearn.preprocessing import OneHotEncoder\n", + "from sklearn.ensemble import RandomForestRegressor # Пример регрессионной модели\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.pipeline import make_pipeline\n", "\n", - "class EarthObjectsFeatures(BaseEstimator, TransformerMixin):\n", + "class StarbucksFeatures(BaseEstimator, TransformerMixin):\n", " def __init__(self):\n", " pass\n", + " \n", " def fit(self, X, y=None):\n", " return self\n", + "\n", " def transform(self, X, y=None):\n", + " # Преобразование категориальных столбцов в числовые 1/0\n", + " X[\"hazardous\"] = X[\"hazardous\"].astype(int)\n", + " X[\"sentry_object\"] = X[\"sentry_object\"].astype(int)\n", " X[\"Length_to_Width_Ratio\"] = X[\"x\"] / X[\"y\"]\n", " return X\n", + "\n", " def get_feature_names_out(self, features_in):\n", " return np.append(features_in, [\"Length_to_Width_Ratio\"], axis=0)\n", - " \n", "\n", + "# Указываем столбцы, которые нужно удалить и обрабатывать\n", "columns_to_drop = [\"name\", \"orbiting_body\"]\n", "num_columns = [\"est_diameter_min\", \"est_diameter_max\",\n", - " \"relative_velocity\", \"miss_distance\", \"sentry_object\",\n", - " \"absolute_magnitude\", \"hazardous\"]\n", - "cat_columns = []\n", + " \"relative_velocity\", \"miss_distance\", \"sentry_object\",\n", + " \"absolute_magnitude\", \"hazardous\"]\n", + "cat_columns = [\"sentry_object\", \"hazardous\"]\n", + " \n", "\n", + "# Определяем предобработку для численных данных\n", "num_imputer = SimpleImputer(strategy=\"median\")\n", "num_scaler = StandardScaler()\n", "preprocessing_num = Pipeline(\n", @@ -1102,6 +1113,7 @@ " ]\n", ")\n", "\n", + "# Определяем предобработку для категориальных данных\n", "cat_imputer = SimpleImputer(strategy=\"constant\", fill_value=\"unknown\")\n", "cat_encoder = OneHotEncoder(handle_unknown=\"ignore\", sparse_output=False, drop=\"first\")\n", "preprocessing_cat = Pipeline(\n", @@ -1111,16 +1123,17 @@ " ]\n", ")\n", "\n", + "# Подготовка признаков с использованием ColumnTransformer\n", "features_preprocessing = ColumnTransformer(\n", " verbose_feature_names_out=False,\n", " transformers=[\n", - " (\"prepocessing_num\", preprocessing_num, num_columns),\n", - " (\"prepocessing_cat\", preprocessing_cat, cat_columns),\n", + " (\"preprocessing_num\", preprocessing_num, num_columns),\n", + " (\"preprocessing_cat\", preprocessing_cat, cat_columns),\n", " ],\n", " remainder=\"passthrough\"\n", ")\n", "\n", - "\n", + "# Удаление нежелательных столбцов\n", "drop_columns = ColumnTransformer(\n", " verbose_feature_names_out=False,\n", " transformers=[\n", @@ -1129,21 +1142,27 @@ " remainder=\"passthrough\",\n", ")\n", "\n", + "# Постобработка признаков\n", "features_postprocessing = ColumnTransformer(\n", " verbose_feature_names_out=False,\n", " transformers=[\n", - " (\"prepocessing_cat\", preprocessing_cat, [\"Cabin_type\"]),\n", + " (\"preprocessing_cat\", preprocessing_cat, [\"Cabin_type\"]), \n", " ],\n", " remainder=\"passthrough\",\n", ")\n", "\n", - "pipeline_end = Pipeline(\n", + "# Создание окончательного конвейера\n", + "pipeline = Pipeline(\n", " [\n", " (\"features_preprocessing\", features_preprocessing),\n", " (\"drop_columns\", drop_columns),\n", + " (\"model\", RandomForestRegressor()) # Выбор модели для обучения\n", " ]\n", ")\n", - "\n" + "\n", + "# Использование конвейера\n", + "def train_pipeline(X, y):\n", + " pipeline.fit(X, y)" ] }, { @@ -1155,7 +1174,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -1346,7 +1365,7 @@ "[72668 rows x 8 columns]" ] }, - "execution_count": 19, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -1385,7 +1404,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 23, "metadata": {}, "outputs": [], "source": [ @@ -1428,7 +1447,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 24, "metadata": {}, "outputs": [ { @@ -1534,7 +1553,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 25, "metadata": {}, "outputs": [ { @@ -1579,197 +1598,197 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 Precision_trainPrecision_testRecall_trainRecall_testAccuracy_trainAccuracy_testF1_trainF1_testPrecision_trainPrecision_testRecall_trainRecall_testAccuracy_trainAccuracy_testF1_trainF1_test
logistic1.0000001.0000001.0000001.0000001.0000001.0000001.0000001.000000logistic1.0000001.0000001.0000001.0000001.0000001.0000001.0000001.000000
decision_tree1.0000001.0000001.0000001.0000001.0000001.0000001.0000001.000000decision_tree1.0000001.0000001.0000001.0000001.0000001.0000001.0000001.000000
random_forest1.0000001.0000001.0000001.0000001.0000001.0000001.0000001.000000random_forest1.0000001.0000001.0000001.0000001.0000001.0000001.0000001.000000
gradient_boosting1.0000001.0000001.0000001.0000001.0000001.0000001.0000001.000000gradient_boosting1.0000001.0000001.0000001.0000001.0000001.0000001.0000001.000000
knn0.8845960.8263740.7446270.6380090.9656930.9517280.8085990.720077knn0.8845960.8263740.7446270.6380090.9656930.9517280.8085990.720077
naive_bayes0.0000000.0000000.0000000.0000000.9026810.9026860.0000000.000000naive_bayes0.0000000.0000000.0000000.0000000.9026810.9026860.0000000.000000
mlp0.0000000.0000000.0000000.0000000.9026810.9026860.0000000.000000mlp0.0000000.0000000.0000000.0000000.9026810.9026860.0000000.000000
ridge0.4157800.4212531.0000001.0000000.8632550.8663030.5873510.592791ridge0.4157800.4212531.0000001.0000000.8632550.8663030.5873510.592791
\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 24, + "execution_count": 26, "metadata": {}, "output_type": "execute_result" } @@ -1819,154 +1838,154 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 Accuracy_testF1_testROC_AUC_testCohen_kappa_testMCC_testAccuracy_testF1_testROC_AUC_testCohen_kappa_testMCC_test
logistic1.0000001.0000001.0000001.0000001.000000logistic1.0000001.0000001.0000001.0000001.000000
decision_tree1.0000001.0000001.0000001.0000001.000000decision_tree1.0000001.0000001.0000001.0000001.000000
random_forest1.0000001.0000001.0000001.0000001.000000random_forest1.0000001.0000001.0000001.0000001.000000
gradient_boosting1.0000001.0000001.0000001.0000001.000000gradient_boosting1.0000001.0000001.0000001.0000001.000000
ridge0.8663030.5927910.9956750.5281800.599051ridge0.8663030.5927910.9956750.5281800.599051
knn0.9517280.7200770.9534050.6941410.701100knn0.9517280.7200770.9534050.6941410.701100
naive_bayes0.9026860.0000000.7663410.0000000.000000naive_bayes0.9026860.0000000.7663410.0000000.000000
mlp0.9026860.0000000.5000000.0000000.000000mlp0.9026860.0000000.5000000.0000000.000000
\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 25, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } @@ -2010,7 +2029,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 28, "metadata": {}, "outputs": [ { @@ -2038,7 +2057,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 29, "metadata": {}, "outputs": [ { @@ -2095,7 +2114,7 @@ "Index: []" ] }, - "execution_count": 28, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } @@ -2127,7 +2146,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 30, "metadata": {}, "outputs": [ { @@ -2296,7 +2315,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 31, "metadata": {}, "outputs": [ { @@ -2316,7 +2335,7 @@ " 'model__n_estimators': 50}" ] }, - "execution_count": 38, + "execution_count": 31, "metadata": {}, "output_type": "execute_result" } @@ -2351,7 +2370,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 38, "metadata": {}, "outputs": [], "source": [ @@ -2423,7 +2442,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 39, "metadata": {}, "outputs": [], "source": [ @@ -2447,42 +2466,42 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -2498,35 +2517,35 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 Precision_trainPrecision_testRecall_trainRecall_testAccuracy_trainAccuracy_testF1_trainF1_testPrecision_trainPrecision_testRecall_trainRecall_testAccuracy_trainAccuracy_testF1_trainF1_test
Name
Old1.0000001.0000001.0000001.0000001.0000001.0000001.0000001.000000Old1.0000001.0000001.0000001.0000001.0000001.0000001.0000001.000000
New0.8331910.8625000.1384330.1561090.9134560.9154560.2374200.264368New0.8331910.8625000.1384330.1561090.9134560.9154560.2374200.264368
\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 50, + "execution_count": 40, "metadata": {}, "output_type": "execute_result" } @@ -2563,39 +2582,39 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -2608,29 +2627,29 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 Accuracy_testF1_testROC_AUC_testCohen_kappa_testMCC_testAccuracy_testF1_testROC_AUC_testCohen_kappa_testMCC_test
Name
Old1.0000001.0000001.0000001.0000001.000000Old1.0000001.0000001.0000001.0000001.000000
New0.9154560.2643680.9274930.2417510.345694New0.9154560.2643680.9274930.2417510.345694
\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 51, + "execution_count": 41, "metadata": {}, "output_type": "execute_result" } @@ -2666,7 +2685,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 42, "metadata": {}, "outputs": [ { @@ -2712,17 +2731,14 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 201, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Index(['id', 'name', 'est_diameter_min', 'est_diameter_max',\n", - " 'relative_velocity', 'miss_distance', 'orbiting_body', 'sentry_object',\n", - " 'absolute_magnitude', 'hazardous'],\n", - " dtype='object')\n" + "(5000, 6)\n" ] }, { @@ -2747,82 +2763,58 @@ " \n", " \n", " id\n", - " name\n", " est_diameter_min\n", " est_diameter_max\n", " relative_velocity\n", " miss_distance\n", - " orbiting_body\n", - " sentry_object\n", " absolute_magnitude\n", - " hazardous\n", " \n", " \n", " \n", " \n", " 0\n", - " 2162635\n", - " 162635 (2000 SS164)\n", - " 1.198271\n", - " 2.679415\n", - " 13569.249224\n", - " 5.483974e+07\n", - " Earth\n", - " False\n", - " 16.73\n", - " False\n", + " 3943344\n", + " 0.024241\n", + " 0.054205\n", + " 22148.962596\n", + " 5.028574e+07\n", + " 25.20\n", " \n", " \n", " 1\n", - " 2277475\n", - " 277475 (2005 WK4)\n", - " 0.265800\n", - " 0.594347\n", - " 73588.726663\n", - " 6.143813e+07\n", - " Earth\n", - " False\n", - " 20.00\n", - " True\n", + " 3879239\n", + " 0.012722\n", + " 0.028447\n", + " 26477.211836\n", + " 1.683201e+06\n", + " 26.60\n", " \n", " \n", " 2\n", - " 2512244\n", - " 512244 (2015 YE18)\n", - " 0.722030\n", - " 1.614507\n", - " 114258.692129\n", - " 4.979872e+07\n", - " Earth\n", - " False\n", - " 17.83\n", - " False\n", + " 3879244\n", + " 0.013322\n", + " 0.029788\n", + " 33770.201397\n", + " 3.943220e+06\n", + " 26.50\n", " \n", " \n", " 3\n", - " 3596030\n", - " (2012 BV13)\n", - " 0.096506\n", - " 0.215794\n", - " 24764.303138\n", - " 2.543497e+07\n", - " Earth\n", - " False\n", - " 22.20\n", - " False\n", + " 2481965\n", + " 0.193444\n", + " 0.432554\n", + " 43599.575296\n", + " 7.346837e+07\n", + " 20.69\n", " \n", " \n", " 4\n", - " 3667127\n", - " (2014 GE35)\n", - " 0.255009\n", - " 0.570217\n", - " 42737.733765\n", - " 4.627557e+07\n", - " Earth\n", - " False\n", - " 20.09\n", - " True\n", + " 3789471\n", + " 0.044112\n", + " 0.098637\n", + " 36398.080883\n", + " 6.352916e+07\n", + " 23.90\n", " \n", " \n", " ...\n", @@ -2832,125 +2824,88 @@ " ...\n", " ...\n", " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", " \n", " \n", - " 90831\n", - " 3763337\n", - " (2016 VX1)\n", - " 0.026580\n", - " 0.059435\n", - " 52078.886692\n", - " 1.230039e+07\n", - " Earth\n", - " False\n", - " 25.00\n", - " False\n", + " 4995\n", + " 3468663\n", + " 0.006677\n", + " 0.014929\n", + " 20300.398051\n", + " 1.700006e+06\n", + " 28.00\n", " \n", " \n", - " 90832\n", - " 3837603\n", - " (2019 AD3)\n", - " 0.016771\n", - " 0.037501\n", - " 46114.605073\n", - " 5.432121e+07\n", - " Earth\n", - " False\n", - " 26.00\n", - " False\n", + " 4996\n", + " 3620670\n", + " 0.105817\n", + " 0.236614\n", + " 36514.062162\n", + " 6.945396e+07\n", + " 22.00\n", " \n", " \n", - " 90833\n", - " 54017201\n", - " (2020 JP3)\n", - " 0.031956\n", - " 0.071456\n", - " 7566.807732\n", - " 2.840077e+07\n", - " Earth\n", - " False\n", - " 24.60\n", - " False\n", + " 4997\n", + " 3562321\n", + " 0.192555\n", + " 0.430566\n", + " 68895.907750\n", + " 5.209557e+07\n", + " 20.70\n", " \n", " \n", - " 90834\n", - " 54115824\n", - " (2021 CN5)\n", - " 0.007321\n", - " 0.016370\n", - " 69199.154484\n", - " 6.869206e+07\n", - " Earth\n", - " False\n", - " 27.80\n", - " False\n", + " 4998\n", + " 3440771\n", + " 0.253837\n", + " 0.567597\n", + " 61336.513568\n", + " 5.037204e+07\n", + " 20.10\n", " \n", " \n", - " 90835\n", - " 54205447\n", - " (2021 TW7)\n", - " 0.039862\n", - " 0.089133\n", - " 27024.455553\n", - " 5.977213e+07\n", - " Earth\n", - " False\n", - " 24.12\n", - " False\n", + " 4999\n", + " 54065901\n", + " 0.015295\n", + " 0.034201\n", + " 18389.028188\n", + " 5.627145e+07\n", + " 26.20\n", " \n", " \n", "\n", - "

90836 rows × 10 columns

\n", + "

5000 rows × 6 columns

\n", "" ], "text/plain": [ - " id name est_diameter_min est_diameter_max \\\n", - "0 2162635 162635 (2000 SS164) 1.198271 2.679415 \n", - "1 2277475 277475 (2005 WK4) 0.265800 0.594347 \n", - "2 2512244 512244 (2015 YE18) 0.722030 1.614507 \n", - "3 3596030 (2012 BV13) 0.096506 0.215794 \n", - "4 3667127 (2014 GE35) 0.255009 0.570217 \n", - "... ... ... ... ... \n", - "90831 3763337 (2016 VX1) 0.026580 0.059435 \n", - "90832 3837603 (2019 AD3) 0.016771 0.037501 \n", - "90833 54017201 (2020 JP3) 0.031956 0.071456 \n", - "90834 54115824 (2021 CN5) 0.007321 0.016370 \n", - "90835 54205447 (2021 TW7) 0.039862 0.089133 \n", + " id est_diameter_min est_diameter_max relative_velocity \\\n", + "0 3943344 0.024241 0.054205 22148.962596 \n", + "1 3879239 0.012722 0.028447 26477.211836 \n", + "2 3879244 0.013322 0.029788 33770.201397 \n", + "3 2481965 0.193444 0.432554 43599.575296 \n", + "4 3789471 0.044112 0.098637 36398.080883 \n", + "... ... ... ... ... \n", + "4995 3468663 0.006677 0.014929 20300.398051 \n", + "4996 3620670 0.105817 0.236614 36514.062162 \n", + "4997 3562321 0.192555 0.430566 68895.907750 \n", + "4998 3440771 0.253837 0.567597 61336.513568 \n", + "4999 54065901 0.015295 0.034201 18389.028188 \n", "\n", - " relative_velocity miss_distance orbiting_body sentry_object \\\n", - "0 13569.249224 5.483974e+07 Earth False \n", - "1 73588.726663 6.143813e+07 Earth False \n", - "2 114258.692129 4.979872e+07 Earth False \n", - "3 24764.303138 2.543497e+07 Earth False \n", - "4 42737.733765 4.627557e+07 Earth False \n", - "... ... ... ... ... \n", - "90831 52078.886692 1.230039e+07 Earth False \n", - "90832 46114.605073 5.432121e+07 Earth False \n", - "90833 7566.807732 2.840077e+07 Earth False \n", - "90834 69199.154484 6.869206e+07 Earth False \n", - "90835 27024.455553 5.977213e+07 Earth False \n", + " miss_distance absolute_magnitude \n", + "0 5.028574e+07 25.20 \n", + "1 1.683201e+06 26.60 \n", + "2 3.943220e+06 26.50 \n", + "3 7.346837e+07 20.69 \n", + "4 6.352916e+07 23.90 \n", + "... ... ... \n", + "4995 1.700006e+06 28.00 \n", + "4996 6.945396e+07 22.00 \n", + "4997 5.209557e+07 20.70 \n", + "4998 5.037204e+07 20.10 \n", + "4999 5.627145e+07 26.20 \n", "\n", - " absolute_magnitude hazardous \n", - "0 16.73 False \n", - "1 20.00 True \n", - "2 17.83 False \n", - "3 22.20 False \n", - "4 20.09 True \n", - "... ... ... \n", - "90831 25.00 False \n", - "90832 26.00 False \n", - "90833 24.60 False \n", - "90834 27.80 False \n", - "90835 24.12 False \n", - "\n", - "[90836 rows x 10 columns]" + "[5000 rows x 6 columns]" ] }, - "execution_count": 2, + "execution_count": 201, "metadata": {}, "output_type": "execute_result" } @@ -2966,10 +2921,67 @@ "random_state=42\n", "set_config(transform_output=\"pandas\")\n", "df = pd.read_csv(\".//static//csv//neo.csv\")\n", - "print(df.columns)\n", + "# Удаление столбцов \"sentry_object\" и \"hazardous\"\n", + "df = df.drop(columns=[\"sentry_object\", \"hazardous\", \"orbiting_body\", \"name\"])\n", + "\n", + "# Ограничение количества записей до 5,000\n", + "df = df.sample(n=5000, random_state=random_state).reset_index(drop=True)\n", + "\n", + "# Проверка итогового DataFrame\n", + "print(df.shape) # Убедитесь, что размер 5,000 строк\n", "df" ] }, + { + "cell_type": "code", + "execution_count": 202, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " est_diameter_min est_diameter_max relative_velocity miss_distance \\\n", + "0 1.198271 2.679415 13569.249224 5.483974e+07 \n", + "1 0.265800 0.594347 73588.726663 6.143813e+07 \n", + "2 0.722030 1.614507 114258.692129 4.979872e+07 \n", + "3 0.096506 0.215794 24764.303138 2.543497e+07 \n", + "4 0.255009 0.570217 42737.733765 4.627557e+07 \n", + "\n", + " impact_damage_index \n", + "0 0.000480 \n", + "1 0.000515 \n", + "2 0.002680 \n", + "3 0.000152 \n", + "4 0.000381 \n" + ] + } + ], + "source": [ + "import pandas as pd\n", + "\n", + "# Загрузка данных (замените путь на актуальный, если требуется)\n", + "df = pd.read_csv(\".//static//csv//neo.csv\")\n", + "\n", + "# Убедитесь, что столбцы в данных содержат необходимые характеристики\n", + "required_columns = [\"est_diameter_min\", \"est_diameter_max\", \"relative_velocity\", \"miss_distance\"]\n", + "missing_columns = [col for col in required_columns if col not in df.columns]\n", + "if missing_columns:\n", + " raise ValueError(f\"Отсутствуют столбцы: {missing_columns}\")\n", + "\n", + "# Создание переменной \"impact_damage_index\"\n", + "# Формула, используемая ниже, условная и может быть скорректирована в зависимости от анализа\n", + "# Пример: чем больше средний диаметр и скорость, тем выше ущерб. Чем больше расстояние, тем ниже ущерб.\n", + "df[\"impact_damage_index\"] = (\n", + " (df[\"est_diameter_min\"] + df[\"est_diameter_max\"]) / 2 # Средний диаметр\n", + " * df[\"relative_velocity\"] # Скорость\n", + " / df[\"miss_distance\"] # Обратная зависимость от расстояния\n", + ")\n", + "\n", + "# Проверка новых данных\n", + "print(df[[\"est_diameter_min\", \"est_diameter_max\", \"relative_velocity\", \"miss_distance\", \"impact_damage_index\"]].head())" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -2979,7 +2991,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 203, "metadata": {}, "outputs": [ { @@ -3013,76 +3025,58 @@ " \n", " \n", " id\n", - " name\n", " est_diameter_min\n", " est_diameter_max\n", " relative_velocity\n", - " orbiting_body\n", - " sentry_object\n", + " miss_distance\n", " absolute_magnitude\n", - " hazardous\n", " \n", " \n", " \n", " \n", " 35538\n", " 3826685\n", - " (2018 PR10)\n", " 0.038420\n", " 0.085909\n", " 91103.489666\n", - " Earth\n", - " False\n", + " 6.350550e+07\n", " 24.20\n", - " False\n", " \n", " \n", " 40393\n", " 2277830\n", - " 277830 (2006 HR29)\n", " 0.192555\n", " 0.430566\n", " 28359.611312\n", - " Earth\n", - " False\n", + " 2.868167e+07\n", " 20.70\n", - " False\n", " \n", " \n", " 58540\n", " 3638201\n", - " (2013 HT25)\n", " 0.004619\n", " 0.010329\n", " 107351.426865\n", - " Earth\n", - " False\n", + " 5.388098e+04\n", " 28.80\n", - " False\n", " \n", " \n", " 61670\n", " 3836282\n", - " (2018 WR)\n", " 0.015295\n", " 0.034201\n", " 21423.536884\n", - " Earth\n", - " False\n", + " 5.103884e+07\n", " 26.20\n", - " False\n", " \n", " \n", " 11435\n", " 3802002\n", - " (2018 FU1)\n", " 0.011603\n", " 0.025944\n", " 69856.053840\n", - " Earth\n", - " False\n", + " 7.360836e+07\n", " 26.80\n", - " False\n", " \n", " \n", " ...\n", @@ -3092,116 +3086,85 @@ " ...\n", " ...\n", " ...\n", - " ...\n", - " ...\n", - " ...\n", " \n", " \n", " 6265\n", " 2530151\n", - " 530151 (2011 AW55)\n", " 0.211132\n", " 0.472106\n", " 88209.754856\n", - " Earth\n", - " False\n", + " 4.034289e+07\n", " 20.50\n", - " False\n", " \n", " \n", " 54886\n", " 3831736\n", - " (2018 TD5)\n", " 0.035039\n", " 0.078350\n", " 58758.452153\n", - " Earth\n", - " False\n", + " 4.389994e+06\n", " 24.40\n", - " False\n", " \n", " \n", " 76820\n", " 2512234\n", - " 512234 (2015 VO66)\n", " 0.211132\n", " 0.472106\n", " 52355.509176\n", - " Earth\n", - " False\n", + " 4.380532e+07\n", " 20.50\n", - " True\n", " \n", " \n", " 860\n", " 54054466\n", - " (2020 SG1)\n", " 0.282199\n", " 0.631015\n", " 50527.379563\n", - " Earth\n", - " False\n", + " 5.837007e+07\n", " 19.87\n", - " False\n", " \n", " \n", " 15795\n", " 3773929\n", - " (2017 GL7)\n", " 0.075258\n", " 0.168283\n", " 22527.647871\n", - " Earth\n", - " False\n", + " 2.281469e+07\n", " 22.74\n", - " False\n", " \n", " \n", "\n", - "

72668 rows × 9 columns

\n", + "

72668 rows × 6 columns

\n", "" ], "text/plain": [ - " id name est_diameter_min est_diameter_max \\\n", - "35538 3826685 (2018 PR10) 0.038420 0.085909 \n", - "40393 2277830 277830 (2006 HR29) 0.192555 0.430566 \n", - "58540 3638201 (2013 HT25) 0.004619 0.010329 \n", - "61670 3836282 (2018 WR) 0.015295 0.034201 \n", - "11435 3802002 (2018 FU1) 0.011603 0.025944 \n", - "... ... ... ... ... \n", - "6265 2530151 530151 (2011 AW55) 0.211132 0.472106 \n", - "54886 3831736 (2018 TD5) 0.035039 0.078350 \n", - "76820 2512234 512234 (2015 VO66) 0.211132 0.472106 \n", - "860 54054466 (2020 SG1) 0.282199 0.631015 \n", - "15795 3773929 (2017 GL7) 0.075258 0.168283 \n", + " id est_diameter_min est_diameter_max relative_velocity \\\n", + "35538 3826685 0.038420 0.085909 91103.489666 \n", + "40393 2277830 0.192555 0.430566 28359.611312 \n", + "58540 3638201 0.004619 0.010329 107351.426865 \n", + "61670 3836282 0.015295 0.034201 21423.536884 \n", + "11435 3802002 0.011603 0.025944 69856.053840 \n", + "... ... ... ... ... \n", + "6265 2530151 0.211132 0.472106 88209.754856 \n", + "54886 3831736 0.035039 0.078350 58758.452153 \n", + "76820 2512234 0.211132 0.472106 52355.509176 \n", + "860 54054466 0.282199 0.631015 50527.379563 \n", + "15795 3773929 0.075258 0.168283 22527.647871 \n", "\n", - " relative_velocity orbiting_body sentry_object absolute_magnitude \\\n", - "35538 91103.489666 Earth False 24.20 \n", - "40393 28359.611312 Earth False 20.70 \n", - "58540 107351.426865 Earth False 28.80 \n", - "61670 21423.536884 Earth False 26.20 \n", - "11435 69856.053840 Earth False 26.80 \n", - "... ... ... ... ... \n", - "6265 88209.754856 Earth False 20.50 \n", - "54886 58758.452153 Earth False 24.40 \n", - "76820 52355.509176 Earth False 20.50 \n", - "860 50527.379563 Earth False 19.87 \n", - "15795 22527.647871 Earth False 22.74 \n", + " miss_distance absolute_magnitude \n", + "35538 6.350550e+07 24.20 \n", + "40393 2.868167e+07 20.70 \n", + "58540 5.388098e+04 28.80 \n", + "61670 5.103884e+07 26.20 \n", + "11435 7.360836e+07 26.80 \n", + "... ... ... \n", + "6265 4.034289e+07 20.50 \n", + "54886 4.389994e+06 24.40 \n", + "76820 4.380532e+07 20.50 \n", + "860 5.837007e+07 19.87 \n", + "15795 2.281469e+07 22.74 \n", "\n", - " hazardous \n", - "35538 False \n", - "40393 False \n", - "58540 False \n", - "61670 False \n", - "11435 False \n", - "... ... \n", - "6265 False \n", - "54886 False \n", - "76820 True \n", - "860 False \n", - "15795 False \n", - "\n", - "[72668 rows x 9 columns]" + "[72668 rows x 6 columns]" ] }, "metadata": {}, @@ -3237,29 +3200,29 @@ " \n", " \n", " \n", - " miss_distance\n", + " impact_damage_index\n", " \n", " \n", " \n", " \n", " 35538\n", - " 6.350550e+07\n", + " 0.000089\n", " \n", " \n", " 40393\n", - " 2.868167e+07\n", + " 0.000308\n", " \n", " \n", " 58540\n", - " 5.388098e+04\n", + " 0.014891\n", " \n", " \n", " 61670\n", - " 5.103884e+07\n", + " 0.000010\n", " \n", " \n", " 11435\n", - " 7.360836e+07\n", + " 0.000018\n", " \n", " \n", " ...\n", @@ -3267,23 +3230,23 @@ " \n", " \n", " 6265\n", - " 4.034289e+07\n", + " 0.000747\n", " \n", " \n", " 54886\n", - " 4.389994e+06\n", + " 0.000759\n", " \n", " \n", " 76820\n", - " 4.380532e+07\n", + " 0.000408\n", " \n", " \n", " 860\n", - " 5.837007e+07\n", + " 0.000395\n", " \n", " \n", " 15795\n", - " 2.281469e+07\n", + " 0.000120\n", " \n", " \n", "\n", @@ -3291,18 +3254,18 @@ "" ], "text/plain": [ - " miss_distance\n", - "35538 6.350550e+07\n", - "40393 2.868167e+07\n", - "58540 5.388098e+04\n", - "61670 5.103884e+07\n", - "11435 7.360836e+07\n", - "... ...\n", - "6265 4.034289e+07\n", - "54886 4.389994e+06\n", - "76820 4.380532e+07\n", - "860 5.837007e+07\n", - "15795 2.281469e+07\n", + " impact_damage_index\n", + "35538 0.000089\n", + "40393 0.000308\n", + "58540 0.014891\n", + "61670 0.000010\n", + "11435 0.000018\n", + "... ...\n", + "6265 0.000747\n", + "54886 0.000759\n", + "76820 0.000408\n", + "860 0.000395\n", + "15795 0.000120\n", "\n", "[72668 rows x 1 columns]" ] @@ -3341,76 +3304,58 @@ " \n", " \n", " id\n", - " name\n", " est_diameter_min\n", " est_diameter_max\n", " relative_velocity\n", - " orbiting_body\n", - " sentry_object\n", + " miss_distance\n", " absolute_magnitude\n", - " hazardous\n", " \n", " \n", " \n", " \n", " 20406\n", " 3943344\n", - " (2019 YT1)\n", " 0.024241\n", " 0.054205\n", " 22148.962596\n", - " Earth\n", - " False\n", + " 5.028574e+07\n", " 25.20\n", - " False\n", " \n", " \n", " 74443\n", " 3879239\n", - " (2019 US)\n", " 0.012722\n", " 0.028447\n", " 26477.211836\n", - " Earth\n", - " False\n", + " 1.683201e+06\n", " 26.60\n", - " False\n", " \n", " \n", " 74306\n", " 3879244\n", - " (2019 UU)\n", " 0.013322\n", " 0.029788\n", " 33770.201397\n", - " Earth\n", - " False\n", + " 3.943220e+06\n", " 26.50\n", - " False\n", " \n", " \n", " 45943\n", " 2481965\n", - " 481965 (2009 EB1)\n", " 0.193444\n", " 0.432554\n", " 43599.575296\n", - " Earth\n", - " False\n", + " 7.346837e+07\n", " 20.69\n", - " False\n", " \n", " \n", " 62859\n", " 3789471\n", - " (2017 WJ1)\n", " 0.044112\n", " 0.098637\n", " 36398.080883\n", - " Earth\n", - " False\n", + " 6.352916e+07\n", " 23.90\n", - " False\n", " \n", " \n", " ...\n", @@ -3420,116 +3365,85 @@ " ...\n", " ...\n", " ...\n", - " ...\n", - " ...\n", - " ...\n", " \n", " \n", " 51634\n", " 3694131\n", - " (2014 UF56)\n", " 0.008801\n", " 0.019681\n", " 57414.305699\n", - " Earth\n", - " False\n", + " 1.987273e+07\n", " 27.40\n", - " False\n", " \n", " \n", " 85083\n", " 54235475\n", - " (2022 AG1)\n", " 0.024920\n", " 0.055724\n", " 50882.935767\n", - " Earth\n", - " False\n", + " 3.119646e+07\n", " 25.14\n", - " False\n", " \n", " \n", " 38905\n", " 3775176\n", - " (2017 LD)\n", " 0.008405\n", " 0.018795\n", " 24954.754212\n", - " Earth\n", - " False\n", + " 1.111942e+07\n", " 27.50\n", - " False\n", " \n", " \n", " 16144\n", " 2434734\n", - " 434734 (2006 FX)\n", " 0.265800\n", " 0.594347\n", " 57455.404666\n", - " Earth\n", - " False\n", + " 8.501684e+06\n", " 20.00\n", - " True\n", " \n", " \n", " 54508\n", " 3170208\n", - " (2003 YG136)\n", " 0.023150\n", " 0.051765\n", " 72602.093427\n", - " Earth\n", - " False\n", + " 4.624727e+07\n", " 25.30\n", - " False\n", " \n", " \n", "\n", - "

18168 rows × 9 columns

\n", + "

18168 rows × 6 columns

\n", "" ], "text/plain": [ - " id name est_diameter_min est_diameter_max \\\n", - "20406 3943344 (2019 YT1) 0.024241 0.054205 \n", - "74443 3879239 (2019 US) 0.012722 0.028447 \n", - "74306 3879244 (2019 UU) 0.013322 0.029788 \n", - "45943 2481965 481965 (2009 EB1) 0.193444 0.432554 \n", - "62859 3789471 (2017 WJ1) 0.044112 0.098637 \n", - "... ... ... ... ... \n", - "51634 3694131 (2014 UF56) 0.008801 0.019681 \n", - "85083 54235475 (2022 AG1) 0.024920 0.055724 \n", - "38905 3775176 (2017 LD) 0.008405 0.018795 \n", - "16144 2434734 434734 (2006 FX) 0.265800 0.594347 \n", - "54508 3170208 (2003 YG136) 0.023150 0.051765 \n", + " id est_diameter_min est_diameter_max relative_velocity \\\n", + "20406 3943344 0.024241 0.054205 22148.962596 \n", + "74443 3879239 0.012722 0.028447 26477.211836 \n", + "74306 3879244 0.013322 0.029788 33770.201397 \n", + "45943 2481965 0.193444 0.432554 43599.575296 \n", + "62859 3789471 0.044112 0.098637 36398.080883 \n", + "... ... ... ... ... \n", + "51634 3694131 0.008801 0.019681 57414.305699 \n", + "85083 54235475 0.024920 0.055724 50882.935767 \n", + "38905 3775176 0.008405 0.018795 24954.754212 \n", + "16144 2434734 0.265800 0.594347 57455.404666 \n", + "54508 3170208 0.023150 0.051765 72602.093427 \n", "\n", - " relative_velocity orbiting_body sentry_object absolute_magnitude \\\n", - "20406 22148.962596 Earth False 25.20 \n", - "74443 26477.211836 Earth False 26.60 \n", - "74306 33770.201397 Earth False 26.50 \n", - "45943 43599.575296 Earth False 20.69 \n", - "62859 36398.080883 Earth False 23.90 \n", - "... ... ... ... ... \n", - "51634 57414.305699 Earth False 27.40 \n", - "85083 50882.935767 Earth False 25.14 \n", - "38905 24954.754212 Earth False 27.50 \n", - "16144 57455.404666 Earth False 20.00 \n", - "54508 72602.093427 Earth False 25.30 \n", + " miss_distance absolute_magnitude \n", + "20406 5.028574e+07 25.20 \n", + "74443 1.683201e+06 26.60 \n", + "74306 3.943220e+06 26.50 \n", + "45943 7.346837e+07 20.69 \n", + "62859 6.352916e+07 23.90 \n", + "... ... ... \n", + "51634 1.987273e+07 27.40 \n", + "85083 3.119646e+07 25.14 \n", + "38905 1.111942e+07 27.50 \n", + "16144 8.501684e+06 20.00 \n", + "54508 4.624727e+07 25.30 \n", "\n", - " hazardous \n", - "20406 False \n", - "74443 False \n", - "74306 False \n", - "45943 False \n", - "62859 False \n", - "... ... \n", - "51634 False \n", - "85083 False \n", - "38905 False \n", - "16144 True \n", - "54508 False \n", - "\n", - "[18168 rows x 9 columns]" + "[18168 rows x 6 columns]" ] }, "metadata": {}, @@ -3565,29 +3479,29 @@ " \n", " \n", " \n", - " miss_distance\n", + " impact_damage_index\n", " \n", " \n", " \n", " \n", " 20406\n", - " 5.028574e+07\n", + " 0.000017\n", " \n", " \n", " 74443\n", - " 1.683201e+06\n", + " 0.000324\n", " \n", " \n", " 74306\n", - " 3.943220e+06\n", + " 0.000185\n", " \n", " \n", " 45943\n", - " 7.346837e+07\n", + " 0.000186\n", " \n", " \n", " 62859\n", - " 6.352916e+07\n", + " 0.000041\n", " \n", " \n", " ...\n", @@ -3595,23 +3509,23 @@ " \n", " \n", " 51634\n", - " 1.987273e+07\n", + " 0.000041\n", " \n", " \n", " 85083\n", - " 3.119646e+07\n", + " 0.000066\n", " \n", " \n", " 38905\n", - " 1.111942e+07\n", + " 0.000031\n", " \n", " \n", " 16144\n", - " 8.501684e+06\n", + " 0.002906\n", " \n", " \n", " 54508\n", - " 4.624727e+07\n", + " 0.000059\n", " \n", " \n", "\n", @@ -3619,18 +3533,18 @@ "" ], "text/plain": [ - " miss_distance\n", - "20406 5.028574e+07\n", - "74443 1.683201e+06\n", - "74306 3.943220e+06\n", - "45943 7.346837e+07\n", - "62859 6.352916e+07\n", - "... ...\n", - "51634 1.987273e+07\n", - "85083 3.119646e+07\n", - "38905 1.111942e+07\n", - "16144 8.501684e+06\n", - "54508 4.624727e+07\n", + " impact_damage_index\n", + "20406 0.000017\n", + "74443 0.000324\n", + "74306 0.000185\n", + "45943 0.000186\n", + "62859 0.000041\n", + "... ...\n", + "51634 0.000041\n", + "85083 0.000066\n", + "38905 0.000031\n", + "16144 0.002906\n", + "54508 0.000059\n", "\n", "[18168 rows x 1 columns]" ] @@ -3647,7 +3561,7 @@ "\n", "def split_into_train_test(\n", " df_input: DataFrame,\n", - " target_colname: str = \"miss_distance\",\n", + " target_colname: str = \"impact_damage_index\",\n", " frac_train: float = 0.8,\n", " random_state: int = None,\n", ") -> Tuple[DataFrame, DataFrame, DataFrame, DataFrame]:\n", @@ -3663,6 +3577,10 @@ " X = df_input.drop(columns=[target_colname]) # Признаки\n", " y = df_input[[target_colname]] # Целевая переменная\n", "\n", + " # Удаляем указанные столбцы из X\n", + " columns_to_remove = [\"sentry_object\", \"hazardous\", \"orbiting_body\", \"name\"]\n", + " X = X.drop(columns=columns_to_remove, errors='ignore') # Игнорировать ошибку, если столбцы не найдены\n", + "\n", " # Разделяем данные на обучающую и тестовую выборки\n", " X_train, X_test, y_train, y_test = train_test_split(\n", " X, y,\n", @@ -3675,7 +3593,7 @@ "# Применение функции для разделения данных\n", "X_train, X_test, y_train, y_test = split_into_train_test(\n", " df, \n", - " target_colname=\"miss_distance\", \n", + " target_colname=\"impact_damage_index\", \n", " frac_train=0.8, \n", " random_state=42\n", ")\n", @@ -3693,119 +3611,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### Формирование конвейера для решения задачи регрессии" + "#### Определение перечня алгоритмов решения задачи аппроксимации (регрессии)" ] }, { "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "from sklearn.base import BaseEstimator, TransformerMixin\n", - "from sklearn.compose import ColumnTransformer\n", - "from sklearn.preprocessing import StandardScaler\n", - "from sklearn.impute import SimpleImputer\n", - "from sklearn.pipeline import Pipeline\n", - "from sklearn.preprocessing import OneHotEncoder\n", - "from sklearn.ensemble import RandomForestRegressor # Пример регрессионной модели\n", - "from sklearn.model_selection import train_test_split\n", - "from sklearn.pipeline import make_pipeline\n", - "\n", - "class EarthObjectsFeatures(BaseEstimator, TransformerMixin):\n", - " def __init__(self):\n", - " pass\n", - " \n", - " def fit(self, X, y=None):\n", - " return self\n", - "\n", - " def transform(self, X, y=None):\n", - " X[\"Length_to_Width_Ratio\"] = X[\"x\"] / X[\"y\"]\n", - " return X\n", - "\n", - " def get_feature_names_out(self, features_in):\n", - " return np.append(features_in, [\"Length_to_Width_Ratio\"], axis=0)\n", - "\n", - "# Указываем столбцы, которые нужно удалить и обрабатывать\n", - "columns_to_drop = [\"name\", \"orbiting_body\"]\n", - "num_columns = [\"est_diameter_min\", \"est_diameter_max\",\n", - " \"relative_velocity\", \"sentry_object\",\n", - " \"absolute_magnitude\", \"hazardous\"]\n", - "cat_columns = [] \n", - "\n", - "# Определяем предобработку для численных данных\n", - "num_imputer = SimpleImputer(strategy=\"median\")\n", - "num_scaler = StandardScaler()\n", - "preprocessing_num = Pipeline(\n", - " [\n", - " (\"imputer\", num_imputer),\n", - " (\"scaler\", num_scaler),\n", - " ]\n", - ")\n", - "\n", - "# Определяем предобработку для категориальных данных\n", - "cat_imputer = SimpleImputer(strategy=\"constant\", fill_value=\"unknown\")\n", - "cat_encoder = OneHotEncoder(handle_unknown=\"ignore\", sparse_output=False, drop=\"first\")\n", - "preprocessing_cat = Pipeline(\n", - " [\n", - " (\"imputer\", cat_imputer),\n", - " (\"encoder\", cat_encoder),\n", - " ]\n", - ")\n", - "\n", - "# Подготовка признаков с использованием ColumnTransformer\n", - "features_preprocessing = ColumnTransformer(\n", - " verbose_feature_names_out=False,\n", - " transformers=[\n", - " (\"preprocessing_num\", preprocessing_num, num_columns),\n", - " (\"preprocessing_cat\", preprocessing_cat, cat_columns),\n", - " ],\n", - " remainder=\"passthrough\"\n", - ")\n", - "\n", - "# Удаление нежелательных столбцов\n", - "drop_columns = ColumnTransformer(\n", - " verbose_feature_names_out=False,\n", - " transformers=[\n", - " (\"drop_columns\", \"drop\", columns_to_drop),\n", - " ],\n", - " remainder=\"passthrough\",\n", - ")\n", - "\n", - "# Постобработка признаков\n", - "features_postprocessing = ColumnTransformer(\n", - " verbose_feature_names_out=False,\n", - " transformers=[\n", - " (\"preprocessing_cat\", preprocessing_cat, [\"Cabin_type\"]), \n", - " ],\n", - " remainder=\"passthrough\",\n", - ")\n", - "\n", - "# Создание окончательного конвейера\n", - "pipeline = Pipeline(\n", - " [\n", - " (\"features_preprocessing\", features_preprocessing),\n", - " (\"drop_columns\", drop_columns),\n", - " (\"model\", RandomForestRegressor()) # Выбор модели для обучения\n", - " ]\n", - ")\n", - "\n", - "# Использование конвейера\n", - "def train_pipeline(X, y):\n", - " pipeline.fit(X, y)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Формирование набора моделей для регрессии" - ] - }, - { - "cell_type": "code", - "execution_count": 6, + "execution_count": 204, "metadata": {}, "outputs": [], "source": [ @@ -3851,33 +3662,30 @@ "}" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Формирование набора моделей для регрессии" + ] + }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 205, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Model: linear\n" - ] - }, - { - "ename": "ValueError", - "evalue": "could not convert string to float: '(2018 PR10)'", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[9], line 8\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m model_name \u001b[38;5;129;01min\u001b[39;00m models\u001b[38;5;241m.\u001b[39mkeys():\n\u001b[0;32m 6\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mModel: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mmodel_name\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m----> 8\u001b[0m fitted_model \u001b[38;5;241m=\u001b[39m \u001b[43mmodels\u001b[49m\u001b[43m[\u001b[49m\u001b[43mmodel_name\u001b[49m\u001b[43m]\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mmodel\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfit\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 9\u001b[0m \u001b[43m \u001b[49m\u001b[43mX_train\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mvalues\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43my_train\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mvalues\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mravel\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 10\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 11\u001b[0m y_train_pred \u001b[38;5;241m=\u001b[39m fitted_model\u001b[38;5;241m.\u001b[39mpredict(X_train\u001b[38;5;241m.\u001b[39mvalues)\n\u001b[0;32m 12\u001b[0m y_test_pred \u001b[38;5;241m=\u001b[39m fitted_model\u001b[38;5;241m.\u001b[39mpredict(X_test\u001b[38;5;241m.\u001b[39mvalues)\n", - "File \u001b[1;32mc:\\Users\\Admin\\StudioProjects\\AIM-PIbd-31-Alekseev-I-S\\aimenv\\Lib\\site-packages\\sklearn\\base.py:1473\u001b[0m, in \u001b[0;36m_fit_context..decorator..wrapper\u001b[1;34m(estimator, *args, **kwargs)\u001b[0m\n\u001b[0;32m 1466\u001b[0m estimator\u001b[38;5;241m.\u001b[39m_validate_params()\n\u001b[0;32m 1468\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m config_context(\n\u001b[0;32m 1469\u001b[0m skip_parameter_validation\u001b[38;5;241m=\u001b[39m(\n\u001b[0;32m 1470\u001b[0m prefer_skip_nested_validation \u001b[38;5;129;01mor\u001b[39;00m global_skip_validation\n\u001b[0;32m 1471\u001b[0m )\n\u001b[0;32m 1472\u001b[0m ):\n\u001b[1;32m-> 1473\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfit_method\u001b[49m\u001b[43m(\u001b[49m\u001b[43mestimator\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[1;32mc:\\Users\\Admin\\StudioProjects\\AIM-PIbd-31-Alekseev-I-S\\aimenv\\Lib\\site-packages\\sklearn\\linear_model\\_base.py:609\u001b[0m, in \u001b[0;36mLinearRegression.fit\u001b[1;34m(self, X, y, sample_weight)\u001b[0m\n\u001b[0;32m 605\u001b[0m n_jobs_ \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mn_jobs\n\u001b[0;32m 607\u001b[0m accept_sparse \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpositive \u001b[38;5;28;01melse\u001b[39;00m [\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcsr\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcsc\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcoo\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n\u001b[1;32m--> 609\u001b[0m X, y \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_validate_data\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 610\u001b[0m \u001b[43m \u001b[49m\u001b[43mX\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 611\u001b[0m \u001b[43m \u001b[49m\u001b[43my\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 612\u001b[0m \u001b[43m \u001b[49m\u001b[43maccept_sparse\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43maccept_sparse\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 613\u001b[0m \u001b[43m \u001b[49m\u001b[43my_numeric\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[0;32m 614\u001b[0m \u001b[43m \u001b[49m\u001b[43mmulti_output\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[0;32m 615\u001b[0m \u001b[43m \u001b[49m\u001b[43mforce_writeable\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[0;32m 616\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 618\u001b[0m has_sw \u001b[38;5;241m=\u001b[39m sample_weight \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m 619\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m has_sw:\n", - "File \u001b[1;32mc:\\Users\\Admin\\StudioProjects\\AIM-PIbd-31-Alekseev-I-S\\aimenv\\Lib\\site-packages\\sklearn\\base.py:650\u001b[0m, in \u001b[0;36mBaseEstimator._validate_data\u001b[1;34m(self, X, y, reset, validate_separately, cast_to_ndarray, **check_params)\u001b[0m\n\u001b[0;32m 648\u001b[0m y \u001b[38;5;241m=\u001b[39m check_array(y, input_name\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124my\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mcheck_y_params)\n\u001b[0;32m 649\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m--> 650\u001b[0m X, y \u001b[38;5;241m=\u001b[39m \u001b[43mcheck_X_y\u001b[49m\u001b[43m(\u001b[49m\u001b[43mX\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43my\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mcheck_params\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 651\u001b[0m out \u001b[38;5;241m=\u001b[39m X, y\n\u001b[0;32m 653\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m no_val_X \u001b[38;5;129;01mand\u001b[39;00m check_params\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mensure_2d\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mTrue\u001b[39;00m):\n", - "File \u001b[1;32mc:\\Users\\Admin\\StudioProjects\\AIM-PIbd-31-Alekseev-I-S\\aimenv\\Lib\\site-packages\\sklearn\\utils\\validation.py:1301\u001b[0m, in \u001b[0;36mcheck_X_y\u001b[1;34m(X, y, accept_sparse, accept_large_sparse, dtype, order, copy, force_writeable, force_all_finite, ensure_2d, allow_nd, multi_output, ensure_min_samples, ensure_min_features, y_numeric, estimator)\u001b[0m\n\u001b[0;32m 1296\u001b[0m estimator_name \u001b[38;5;241m=\u001b[39m _check_estimator_name(estimator)\n\u001b[0;32m 1297\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[0;32m 1298\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mestimator_name\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m requires y to be passed, but the target y is None\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 1299\u001b[0m )\n\u001b[1;32m-> 1301\u001b[0m X \u001b[38;5;241m=\u001b[39m \u001b[43mcheck_array\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 1302\u001b[0m \u001b[43m \u001b[49m\u001b[43mX\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1303\u001b[0m \u001b[43m \u001b[49m\u001b[43maccept_sparse\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43maccept_sparse\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1304\u001b[0m \u001b[43m \u001b[49m\u001b[43maccept_large_sparse\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43maccept_large_sparse\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1305\u001b[0m \u001b[43m \u001b[49m\u001b[43mdtype\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdtype\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1306\u001b[0m \u001b[43m \u001b[49m\u001b[43morder\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43morder\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1307\u001b[0m \u001b[43m \u001b[49m\u001b[43mcopy\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcopy\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1308\u001b[0m \u001b[43m \u001b[49m\u001b[43mforce_writeable\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mforce_writeable\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1309\u001b[0m \u001b[43m \u001b[49m\u001b[43mforce_all_finite\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mforce_all_finite\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1310\u001b[0m \u001b[43m \u001b[49m\u001b[43mensure_2d\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mensure_2d\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1311\u001b[0m \u001b[43m \u001b[49m\u001b[43mallow_nd\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mallow_nd\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1312\u001b[0m \u001b[43m \u001b[49m\u001b[43mensure_min_samples\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mensure_min_samples\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1313\u001b[0m \u001b[43m \u001b[49m\u001b[43mensure_min_features\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mensure_min_features\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1314\u001b[0m \u001b[43m \u001b[49m\u001b[43mestimator\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mestimator\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1315\u001b[0m \u001b[43m \u001b[49m\u001b[43minput_name\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mX\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1316\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 1318\u001b[0m y \u001b[38;5;241m=\u001b[39m _check_y(y, multi_output\u001b[38;5;241m=\u001b[39mmulti_output, y_numeric\u001b[38;5;241m=\u001b[39my_numeric, estimator\u001b[38;5;241m=\u001b[39mestimator)\n\u001b[0;32m 1320\u001b[0m check_consistent_length(X, y)\n", - "File \u001b[1;32mc:\\Users\\Admin\\StudioProjects\\AIM-PIbd-31-Alekseev-I-S\\aimenv\\Lib\\site-packages\\sklearn\\utils\\validation.py:1012\u001b[0m, in \u001b[0;36mcheck_array\u001b[1;34m(array, accept_sparse, accept_large_sparse, dtype, order, copy, force_writeable, force_all_finite, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, estimator, input_name)\u001b[0m\n\u001b[0;32m 1010\u001b[0m array \u001b[38;5;241m=\u001b[39m xp\u001b[38;5;241m.\u001b[39mastype(array, dtype, copy\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m)\n\u001b[0;32m 1011\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m-> 1012\u001b[0m array \u001b[38;5;241m=\u001b[39m \u001b[43m_asarray_with_order\u001b[49m\u001b[43m(\u001b[49m\u001b[43marray\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43morder\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43morder\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdtype\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdtype\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mxp\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mxp\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 1013\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m ComplexWarning \u001b[38;5;28;01mas\u001b[39;00m complex_warning:\n\u001b[0;32m 1014\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[0;32m 1015\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mComplex data not supported\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;132;01m{}\u001b[39;00m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;241m.\u001b[39mformat(array)\n\u001b[0;32m 1016\u001b[0m ) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mcomplex_warning\u001b[39;00m\n", - "File \u001b[1;32mc:\\Users\\Admin\\StudioProjects\\AIM-PIbd-31-Alekseev-I-S\\aimenv\\Lib\\site-packages\\sklearn\\utils\\_array_api.py:745\u001b[0m, in \u001b[0;36m_asarray_with_order\u001b[1;34m(array, dtype, order, copy, xp, device)\u001b[0m\n\u001b[0;32m 743\u001b[0m array \u001b[38;5;241m=\u001b[39m numpy\u001b[38;5;241m.\u001b[39marray(array, order\u001b[38;5;241m=\u001b[39morder, dtype\u001b[38;5;241m=\u001b[39mdtype)\n\u001b[0;32m 744\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m--> 745\u001b[0m array \u001b[38;5;241m=\u001b[39m \u001b[43mnumpy\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43masarray\u001b[49m\u001b[43m(\u001b[49m\u001b[43marray\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43morder\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43morder\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdtype\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdtype\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 747\u001b[0m \u001b[38;5;66;03m# At this point array is a NumPy ndarray. We convert it to an array\u001b[39;00m\n\u001b[0;32m 748\u001b[0m \u001b[38;5;66;03m# container that is consistent with the input's namespace.\u001b[39;00m\n\u001b[0;32m 749\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m xp\u001b[38;5;241m.\u001b[39masarray(array)\n", - "\u001b[1;31mValueError\u001b[0m: could not convert string to float: '(2018 PR10)'" + "Model: linear\n", + "Model: linear_poly\n", + "Model: linear_interact\n", + "Model: ridge\n", + "Model: decision_tree\n", + "Model: knn\n", + "Model: random_forest\n", + "Model: mlp\n" ] } ], @@ -3908,6 +3716,378 @@ " )\n", " models[model_name][\"R2_test\"] = metrics.r2_score(y_test, y_test_pred)" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Вывод результатов оценки" + ] + }, + { + "cell_type": "code", + "execution_count": 206, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 RMSE_trainRMSE_testRMAE_testR2_test
random_forest0.0004090.0007110.0125930.852564
decision_tree0.0005110.0010310.0151700.689858
linear_poly0.0012170.0014760.0180010.364795
linear_interact0.0012630.0015000.0182350.343354
knn0.0012060.0016110.0192450.243014
linear0.0013820.0016290.0197240.225851
mlp0.0016100.0018520.023283-0.000074
ridge2.2518262.2483011.349327-1474534.430780
\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 206, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "reg_metrics = pd.DataFrame.from_dict(models, \"index\")[\n", + " [\"RMSE_train\", \"RMSE_test\", \"RMAE_test\", \"R2_test\"]\n", + "]\n", + "reg_metrics.sort_values(by=\"RMSE_test\").style.background_gradient(\n", + " cmap=\"viridis\", low=1, high=0.3, subset=[\"RMSE_train\", \"RMSE_test\"]\n", + ").background_gradient(cmap=\"plasma\", low=0.3, high=1, subset=[\"RMAE_test\", \"R2_test\"])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Вывод реального и \"спрогнозированного\" результата для обучающей и тестовой выборок\n", + "\n", + "Получение лучшей модели" + ] + }, + { + "cell_type": "code", + "execution_count": 207, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'random_forest'" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "best_model = str(reg_metrics.sort_values(by=\"RMSE_test\").iloc[0].name)\n", + "\n", + "display(best_model)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Подбор гиперпараметров методом поиска по сетке" + ] + }, + { + "cell_type": "code", + "execution_count": 209, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fitting 3 folds for each of 8 candidates, totalling 24 fits\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\Admin\\StudioProjects\\AIM-PIbd-31-Alekseev-I-S\\aimenv\\Lib\\site-packages\\sklearn\\base.py:1473: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", + " return fit_method(estimator, *args, **kwargs)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Лучшие параметры: {'max_depth': 10, 'min_samples_split': 5, 'n_estimators': 50}\n", + "Лучший результат (MSE): 5.418559949534169e-07\n" + ] + } + ], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from sklearn import metrics\n", + "from sklearn.pipeline import Pipeline\n", + "from sklearn.model_selection import train_test_split, GridSearchCV\n", + "from sklearn.ensemble import RandomForestRegressor # Используем регрессор\n", + "from sklearn.preprocessing import StandardScaler\n", + "\n", + "\n", + "df.dropna(inplace=True) \n", + "# Предикторы и целевая переменная\n", + "X = df[[\"est_diameter_min\", \"est_diameter_max\", \"relative_velocity\", \"miss_distance\", \"absolute_magnitude\"]]\n", + "y = df['impact_damage_index'] # Целевая переменная для регрессии\n", + "\n", + "\n", + "model = RandomForestRegressor() \n", + "\n", + "param_grid = {\n", + " 'n_estimators': [50, 100], \n", + " 'max_depth': [10, 20], \n", + " 'min_samples_split': [5, 10] \n", + "}\n", + "\n", + "# 3. Подбор гиперпараметров с помощью Grid Search\n", + "grid_search = GridSearchCV(estimator=model, param_grid=param_grid,\n", + " scoring='neg_mean_squared_error', cv=3, n_jobs=-1, verbose=2)\n", + "\n", + "# Обучение модели на тренировочных данных\n", + "grid_search.fit(X_train, y_train)\n", + "\n", + "# 4. Результаты подбора гиперпараметров\n", + "print(\"Лучшие параметры:\", grid_search.best_params_)\n", + "print(\"Лучший результат (MSE):\", -grid_search.best_score_)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Обучение модели с новыми гиперпараметрами и сравнение новых и старых данных" + ] + }, + { + "cell_type": "code", + "execution_count": 210, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fitting 3 folds for each of 8 candidates, totalling 24 fits\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\Admin\\StudioProjects\\AIM-PIbd-31-Alekseev-I-S\\aimenv\\Lib\\site-packages\\sklearn\\base.py:1473: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", + " return fit_method(estimator, *args, **kwargs)\n", + "c:\\Users\\Admin\\StudioProjects\\AIM-PIbd-31-Alekseev-I-S\\aimenv\\Lib\\site-packages\\sklearn\\base.py:1473: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", + " return fit_method(estimator, *args, **kwargs)\n", + "c:\\Users\\Admin\\StudioProjects\\AIM-PIbd-31-Alekseev-I-S\\aimenv\\Lib\\site-packages\\sklearn\\base.py:1473: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", + " return fit_method(estimator, *args, **kwargs)\n", + "c:\\Users\\Admin\\StudioProjects\\AIM-PIbd-31-Alekseev-I-S\\aimenv\\Lib\\site-packages\\sklearn\\base.py:1473: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", + " return fit_method(estimator, *args, **kwargs)\n", + "c:\\Users\\Admin\\StudioProjects\\AIM-PIbd-31-Alekseev-I-S\\aimenv\\Lib\\site-packages\\sklearn\\base.py:1473: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", + " return fit_method(estimator, *args, **kwargs)\n", + "c:\\Users\\Admin\\StudioProjects\\AIM-PIbd-31-Alekseev-I-S\\aimenv\\Lib\\site-packages\\sklearn\\base.py:1473: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", + " return fit_method(estimator, *args, **kwargs)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Старые параметры: {'max_depth': 20, 'min_samples_split': 5, 'n_estimators': 50}\n", + "Лучший результат (MSE) на старых параметрах: 5.299415148966497e-07\n", + "\n", + "Новые параметры: {'max_depth': 20, 'min_samples_split': 10, 'n_estimators': 100}\n", + "Лучший результат (MSE) на новых параметрах: 5.355742455463778e-07\n", + "Среднеквадратическая ошибка (MSE) на тестовых данных: 4.772832137780905e-07\n", + "Корень среднеквадратичной ошибки (RMSE) на тестовых данных: 0.0006908568692414446\n" + ] + } + ], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from sklearn import metrics\n", + "from sklearn.ensemble import RandomForestRegressor\n", + "from sklearn.model_selection import train_test_split, GridSearchCV\n", + "import matplotlib.pyplot as plt\n", + "\n", + "\n", + "old_param_grid = {\n", + " 'n_estimators': [50, 100], # Количество деревьев\n", + " 'max_depth': [ 10, 20], # Максимальная глубина дерева\n", + " 'min_samples_split': [5, 10] # Минимальное количество образцов для разбиения узла\n", + "}\n", + "\n", + "old_grid_search = GridSearchCV(estimator=RandomForestRegressor(), \n", + " param_grid=old_param_grid,\n", + " scoring='neg_mean_squared_error', cv=3, n_jobs=-1, verbose=2)\n", + "\n", + "old_grid_search.fit(X_train, y_train)\n", + "\n", + "old_best_params = old_grid_search.best_params_\n", + "old_best_mse = -old_grid_search.best_score_ # Меняем знак, так как берем отрицательное значение MSE\n", + "\n", + "new_param_grid = {\n", + " 'n_estimators': [100],\n", + " 'max_depth': [20],\n", + " 'min_samples_split': [10]\n", + "}\n", + "\n", + "new_grid_search = GridSearchCV(estimator=RandomForestRegressor(), \n", + " param_grid=new_param_grid,\n", + " scoring='neg_mean_squared_error', cv=2)\n", + "\n", + "new_grid_search.fit(X_train, y_train)\n", + "\n", + "new_best_params = new_grid_search.best_params_\n", + "new_best_mse = -new_grid_search.best_score_ # Меняем знак, так как берем отрицательное значение MSE\n", + "\n", + "model_best = RandomForestRegressor(**new_best_params)\n", + "model_best.fit(X_train, y_train)\n", + "\n", + "model_oldbest = RandomForestRegressor(**old_best_params)\n", + "model_oldbest.fit(X_train, y_train)\n", + "\n", + "y_pred = model_best.predict(X_test)\n", + "y_oldpred = model_oldbest.predict(X_test)\n", + "\n", + "mse = metrics.mean_squared_error(y_test, y_pred)\n", + "rmse = np.sqrt(mse)\n", + "\n", + "print(\"Старые параметры:\", old_best_params)\n", + "print(\"Лучший результат (MSE) на старых параметрах:\", old_best_mse)\n", + "print(\"\\nНовые параметры:\", new_best_params)\n", + "print(\"Лучший результат (MSE) на новых параметрах:\", new_best_mse)\n", + "print(\"Среднеквадратическая ошибка (MSE) на тестовых данных:\", mse)\n", + "print(\"Корень среднеквадратичной ошибки (RMSE) на тестовых данных:\", rmse)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Попробуем визуализировать" + ] + }, + { + "cell_type": "code", + "execution_count": 212, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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i2PHjmH06NGllmndujX27dtn0oXrQaNHj8arr76Kfv36ISQkBDExMYiIiACgT97QrVs3vPbaa8by5loC6tati7p16yIoKAjbt2/Hjz/+iKeeesri7aVSqcmx1q9fv0QZR0dHkzIpKSklyojFYmOZgIAAPPvsszh9+nSJ4Co0NBQJCQllnt927dohISHBZJkl57M06enpuHjxIr788kt0794dgD6phjlHjhwxds8sLCzEyZMnTcaDAfpub+7u7mjevDmGDh2KuLi4EvsJDQ3Fjz/+CH9/f6tmq7P0dT1z5gzu379vDEqPHDkCV1dX+Pr6lut8AMDEiRPRtm1b1K1bF88++6xJcOXl5YWGDRvi6tWrGDVq1CMdm7XOvcH58+fxwgsvPFKdHobdAomIiKhyiMX6dOseHkBCApCZCRQW6v9NSNAvDw/Xl7MhBwcHTJkyBUePHsXJkycRGRmJLl26GIOtefPm4dtvv8WCBQtw4cIFKJVKbN68Ge+++y4A/Z36efPmAQCefPJJpKWlIS0tDffv30deXp6xm9Ls2bNx/PhxvPbaazh79iwSExOxZs0ak2xxhmyGjRs3xtKlS/Gf//zHOIA/ICAAJ06cwO+//45Lly5h7ty5OH78uMmxrF69GhcuXEBSUhI2btyIvXv3ol27dhZvb225ubm4f/8+Tp48iYMHD5qM3TGYNWsWDh8+jMmTJ+P06dO4fPkyfvrpJ5OL6LCwMMTFxZkk/7DkfJamTp06qFevHtauXYsrV67gzz//xPTp082W/eyzzxATE4PExES8/vrruHfvHl5++WWTMnl5ecjNzUViYiJ+++03s8f5+uuv4+7duxg5ciSOHz+Of//9F7///jvGjRtnNqmJpSx9XfPz8zF+/HgkJCTg119/xfz58zF58mSIxeJynQ9AH9B88skn+PzzzyE28/ldsGABlixZgujoaFy6dAnnzp3D+vXryz3PlLXOPaDPdpiamloiuLc2BldERERUeRQKICoKaNcOSE8HLl3S/xsaql9eifNcWcrFxQWzZs3Ciy++iCeeeAKurq7YsmWLcX1YWBh27dqFPXv2oGPHjujSpQs+/fRTNG7cGADw8ccfY+nSpdBoNGjevDkaNGiABg0aYOvWrdi9ezfeeOMNAECLFi2wZ88enDlzBp06dULXrl3x008/ldqKMWnSJISEhGDKlCnGx4MHD8bw4cPRuXNnpKenm7RWAMAvv/yCXr16ISgoCAsWLMCcOXOMF6OWbG9NmZmZcHZ2hlQqxcCBAxEREWH2gr1169b466+/cOnSJXTv3h3t2rXDvHnz0LBhQ2OZfv36wd7eHn/88YdxWXnPZ3FisRibN2/GyZMnERISgmnTpmHp0qVmy3744Yf48MMP0aZNGxw8eBA7d+6Eh4eHSRlvb284Ozuje/fuaNOmDZYsWVJiPw0bNsShQ4dQVFSEPn36oFWrVpg6dSrc3d3NBiiWsvR1feaZZxAQEIAePXpg+PDheO655/Dee++V+3wYjB8/HmFhYWbXTZgwAevWrcP69evRqlUr9OzZExs2bCiz26w51jr3APDDDz+gT58+xs9tZREJgiBU6jNUQ1lZWZDL5cjMzCxzYCoREVFNlpubi2vXrqFJkyYlkgmUm06nzwqo0ejHWPn52bzFCtDPIzR16lSzc+VYynCBavi3uNjYWMTGxmLDhg0V3j/pffbZZ9i5cyd+//33x/J8SUlJaNKkCeLj40vM61XdREZGIiMjA7GxsbauikWsfe7z8/MREBCA77//Hk888YTZMmV935UnNuCYKyIiIqp8YrFN061XJldX11LXSSQSY0pwejSTJk1CRkYGNBoNZFU8CQpVLSqVCnPmzCk1sLImBldEREREj2DGjBmlruvbty/69u37GGtTc9nb2+Odd96xdTWoGmrevHmZCVOsid0CzWC3QCIiIit3CyQiqsKs1S3Q9p2diYiIiIiIagAGV0RERFQmdnIhoprOWt9zDK6IiIjILAcHBwBATk6OjWtCRFS5DN9zhu+9imJCCyIiIjLLzs4O7u7uuH37NgD9fFAikcjGtSIish5BEJCTk4Pbt2/D3d0ddnZ2j7Q/BldERERUKm9vbwAwBlhERDWRu7u78fvuUTC4IiIiolKJRCI0aNAA9evXR0FBga2rQ0RkdQ4ODo/cYmXA4IqIiIgeys7OzmoXH0RENRUTWhAREREREVkBgysiIiIiIiIrYHBFRERERERkBQyuiIiIiIiIrIDBFRERERERkRUwuCIiIiIiIrICBldERERERERWwOCKiIiIiIjIChhcERERERERWQGDKyIiIiIiIitgcEVERERERGQFDK6IiIiIiIisgMEVERERERGRFTC4IiIiIiIisgIGV0RERERERFbA4IqIiIiIiMgKGFwRERERERFZAYMrIiIiIiIiK2BwRUREREREZAUMroiIiIiIiKyAwRUREREREZEVMLgiIiIiIiKyAgZXREREREREVsDgioiIiIiIyAoYXBEREREREVkBgysiIiIiIiIrYHBFRERERERkBQyuiIiIiIiIrIDBFRERERERkRUwuCIiIiIiIrICmwdXn332Gfz9/SGRSNC5c2ccO3aszPLbtm1DUFAQJBIJWrVqhV9//dVkfXZ2NiZPngwfHx84OzsjODgYn3/+eWUeAhERERERkW2Dqy1btmD69OmYP38+Tp06hTZt2iAsLAy3b982W/7w4cMYOXIkxo8fj/j4eISHhyM8PBznz583lpk+fTp2796NjRs3QqlUYurUqZg8eTJ27tz5uA6LiIiIiIhqIZEgCIKtnrxz587o2LEjVq1aBQDQ6XTw9fXFlClT8Pbbb5coP3z4cGi1Wuzatcu4rEuXLmjbtq2xdSokJATDhw/H3LlzjWXat2+Pfv364f3337eoXllZWZDL5cjMzISbm9ujHCIREREREVVj5YkNbNZylZ+fj5MnT6J3797/q4xYjN69eyMuLs7sNnFxcSblASAsLMykfLdu3bBz506kpqZCEATs378fly5dQp8+fUqtS15eHrKyskz+iIiIiIiIysNmwZVarUZRURG8vLxMlnt5eSEtLc3sNmlpaQ8tv3LlSgQHB8PHxweOjo7o27cvPvvsM/To0aPUuixZsgRyudz45+vr+whHRkREREREtZHNE1pY28qVK3HkyBHs3LkTJ0+exLJly/D666/jjz/+KHWb2bNnIzMz0/iXnJz8GGtMREREREQ1gb2tntjDwwN2dna4deuWyfJbt27B29vb7Dbe3t5llr9//z7mzJmDmJgYDBgwAADQunVrnD59Gh9//HGJLoUGTk5OcHJyetRDIiIiIiKiWsxmLVeOjo5o37499u3bZ1ym0+mwb98+dO3a1ew2Xbt2NSkPAHv37jWWLygoQEFBAcRi08Oys7ODTqez8hEQERERERH9j81argB92vSxY8eiQ4cO6NSpE5YvXw6tVotx48YBAMaMGYNGjRphyZIlAIA33ngDPXv2xLJlyzBgwABs3rwZJ06cwNq1awEAbm5u6NmzJ2bOnAlnZ2c0btwYf/31F7799lt88sknNjtOIiIiIiKq+WwaXA0fPhx3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6K6qFAZXRBWk0wEffgjExwPBwUDxCY0FQZ8yMDQUmDWLA7CIiIioWihPbFChboEGfn5+lZ7amYiqEZVK3xXQ19c0sAL0j3189C1bKhVg666LRERERFZWoeBq+vTpZa7/5JNPKlQZIqrmNBr9GCup1Px6qRRITdWXIyIiIqphKhRcxcfHmzw+ePAg2rdvD2dnZ4gevFtNRLWHTKZPXqHVAuaazbVa/XqZ7PHXjYiIiKiSVSi42r9/v8ljmUyG77//Hk2bNrVKpYiomvLz02cFLG3MVUqKfswVuxMTERFRDWSVEeWPkBODiGoSsVifbt3DQ5+8IjMTKCzU/5uQoF8eHs5kFkRERFQjPfIVzo4dO5Cbm4v69etboz5EVN0pFPp06+3aAenpwKVL+n9DQ5mGnYiIiGq0CnULrFOnDkQiEXJzc5GXl4dZs2bB1dXV2nUjoupKoQACA/VZATUa/RgrPz+2WBEREVGNVqHgavny5QAAZ2dntGzZEi1btrRmnYioJhCLmW6diIiIapUKBVdjx461dj2IiIiIiIiqtUeaRDghIQEqlQr5+fkmy5977rlHqhQREREREVF1U6Hg6urVq4iIiMC5c+cgEomM2QINc1wVFRVZr4ZERERERETVQIVGl7/xxhto0qQJbt++DRcXF1y4cAF///03OnTogAMHDli5ikRERERERFVfhVqu4uLi8Oeff8LDwwNisRhisRhPPvkklixZgqioKMTHx1u7nkRERERERFVahVquioqKIJPJAAAeHh64ceMGAKBx48a4ePGi9WpHRERERERUTVSo5SokJARnzpxBkyZN0LlzZ/zf//0fHB0dsXbtWjRt2tTadSQiIiIiIqryKhRcvfvuu9BqtQCAhQsXYuDAgejevTvq1auHLVu2WLWCRERERERE1YFIMKT6e0R3795FnTp1jBkDq7OsrCzI5XJkZmbCzc3N1tUhIiIiIiIbKU9s8EjzXBVXt25da+2KiIiIiIio2qlQcDV48OAy1+/YsaNClSEiIiIiIqquKpQtUC6XG/9++eUXiMVik2VERERERES1zSOPuZLJZDhz5kyNyhLIMVdERERERASULzaoUMsVERERERERmWJwRUREREREZAUVSmgRHR1t/H9hYSE2bNgADw8P47KoqKhHrxkREREREVE1UqExV02aNCl9hyIRrl69+kiVsjWOuSIiIiIiIuAxzHN17dq1ClWMiIiIiIiopir3mKu1a9fipZdewqZNm4yPW7RogebNm2PZsmVWryAREREREVF1UK6Wq02bNuHNN99Enz59MHPmTFy5cgXLly/HjBkzoNPpsHDhQjRp0uShkwwTERERERHVNOUKrlavXo01a9bgpZdewsmTJ9G5c2esWbMGEydOBAA0bNgQK1euZHBFRERERES1Trm6BSqVSnTt2hUA0L59e4jFYnTu3Nm4vkePHjh37px1a0hERERERFQNlCu4ysvLg4uLi/Gxk5MTXF1djY+dnZ1RVFRkvdoRERERERFVE+UKrho1aoQrV64YH2/cuBENGjQwPr548SL8/f2tVjkiIiIiIqLqolzBVc+ePfHrr78aHz///PNwdnY2Pl67di26detmvdoRERERERFVExWaRLg0Go0GEokEDg4O1tqlTXASYSIiIiIiAh7DJMKlkclk1twdERERERFRtVHuSYSJiIiIiIioJAZXREREREREVsDgioiIiIiIyAoYXBEREREREVkBgysiIiIiIiIrqBLB1WeffQZ/f39IJBJ07twZx44dK7P8tm3bEBQUBIlEglatWpnMvfWgV199FSKRCMuXL7dyrYmIiIiIiP7H5sHVli1bMH36dMyfPx+nTp1CmzZtEBYWhtu3b5stf/jwYYwcORLjx49HfHw8wsPDER4ejvPnz5coGxMTgyNHjqBhw4aVfRhERERERFTL2Ty4+uSTTzBx4kSMGzcOwcHB+Pzzz+Hi4oKvv/7abPkVK1agb9++mDlzJhQKBRYtWoTQ0FCsWrXKpFxqaiqmTJmCTZs2VftJjYmIiIiIqOqzaXCVn5+PkydPonfv3sZlYrEYvXv3RlxcnNlt4uLiTMoDQFhYmEl5nU6H0aNHY+bMmWjZsuVD65GXl4esrCyTPyIiIiIiovKwaXClVqtRVFQELy8vk+VeXl5IS0szu01aWtpDy3/00Uewt7dHVFSURfVYsmQJ5HK58c/X17ecR0JERERERLWdzbsFWtvJkyexYsUKbNiwASKRyKJtZs+ejczMTONfcnJyJdeSiIiIiIhqGpsGVx4eHrCzs8OtW7dMlt+6dQve3t5mt/H29i6z/D///IPbt2/Dz88P9vb2sLe3x/Xr1/Hmm2/C39/f7D6dnJzg5uZm8kdERERERFQeNg2uHB0d0b59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iy9mypQp7Nixg29+85tccMEFLF++HIfDIdvBO8wf//hHQqEQF1988bDjsh0cGlK4krznuOaaa9iwYQOvvPLKsOOf+9znSn/Pnz+furo6zjvvPHbs2MG0adPe6Wz+3XHBBReU/j722GNZuHAhkyZN4s9//rOccE8Ad9xxBxdccAH19fWlY7INSN7LFAoFLrnkEoQQ3H777cPOXX/99aW/jz32WNxuN5///Oe55ZZb8Hg873RW/+74xCc+Ufp7/vz5HHvssUybNo0XXniB8847bwJz9t7kD3/4A5dddhler3fYcdkODg3pFniUUllZicPh2C9aWnd3N7W1tROUq3c/X/7yl3nsscdYunQpjY2NB0y7cOFCALZv3w5AbW3tqPVRPHegNOFwWAoQI4hGo8ycOZPt27dTW1uLpmnEYrFhaYZ+77L8x489e/bw7LPP8tnPfvaA6WQbOLIUy+xA/XxtbS09PT3Dzuu6zsDAwLi0DTmeWBQFqz179vDMM88Ms1qNxsKFC9F1nd27dwOyDsabqVOnUllZOazvke3gneHll19my5YtBx0fQLaDsZDC1VGK2+3mxBNP5LnnnisdM02T5557jkWLFk1gzt6dCCH48pe/zMMPP8zzzz+/n9l6NNasWQNAXV0dAIsWLWL9+vXDOvjiIHzMMceU0gyts2IaWWf7k0ql2LFjB3V1dZx44om4XK5hZbdlyxZaW1tLZSfLf/y48847qa6u5kMf+tAB08k2cGSZMmUKtbW1w8orkUiwcuXKYd99LBZj1apVpTTPP/88pmmWhN9Fixbx0ksvUSgUSmmeeeYZZs2aRVlZWSmNrJfRKQpW27Zt49lnn6WiouKg16xZswZVVUuuarIOxpf29nb6+/uH9T2yHbwz3HHHHZx44oksWLDgoGllOxiDiY6oIRmb++67T3g8HnHXXXeJTZs2ic997nMiGo0Oi9QlOTS++MUvikgkIl544YVhIUQzmYwQQojt27eL733ve+KNN94Qu3btEo8++qiYOnWqOOuss0r3KIah/sAHPiDWrFkjnnrqKVFVVTVqGOobbrhBtLS0iF/+8pfv6TDUQ/na174mXnjhBbFr1y6xbNkysXjxYlFZWSl6enqEEFYo9ubmZvH888+LN954QyxatEgsWrSodL0s//HBMAzR3NwsbrzxxmHHZRs4MiSTSbF69WqxevVq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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(10, 5))\n", + "plt.scatter(range(len(y_test)), y_test, label=\"Актуалочка\", color=\"black\", alpha=0.5)\n", + "plt.scatter(range(len(y_test)), y_pred, label=\"Предсказанные(новые параметры)\", color=\"blue\", alpha=0.5)\n", + "plt.scatter(range(len(y_test)), y_oldpred, label=\"Предсказанные(старые параметры)\", color=\"red\", alpha=0.5)\n", + "plt.xlabel(\"Выборка\")\n", + "plt.ylabel(\"Значения\")\n", + "plt.legend()\n", + "plt.title(\"Актуалочка vs Предсказанных значений (Новые and Старые Параметры)\")\n", + "plt.show()" + ] } ], "metadata": {