diff --git a/lab_3/lab3.ipynb b/lab_3/lab3.ipynb index 024426d..337db01 100644 --- a/lab_3/lab3.ipynb +++ b/lab_3/lab3.ipynb @@ -45,7 +45,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -65,9 +65,466 @@ "import matplotlib.pyplot as plt\n", "import matplotlib\n", "import matplotlib.ticker as ticker\n", - "df = pn.read_csv(\".//static//csv//car_price_prediction.csv\").head(15000)\n", + "df = pn.read_csv(\".//static//csv//car_price_prediction.csv\")\n", "print(df.columns)" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Разделим на 3 выборки\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Размер обучающей выборки: 12311\n", + "Размер контрольной выборки: 3078\n", + "Размер тестовой выборки: 3848\n" + ] + } + ], + "source": [ + "from sklearn.model_selection import train_test_split\n", + "\n", + "# Разделение данных на обучающую и тестовую выборки (80% - обучение, 20% - тест)\n", + "train_data, test_data = train_test_split(df, test_size=0.2, random_state=42)\n", + "\n", + "# Разделение обучающей выборки на обучающую и контрольную (80% - обучение, 20% - контроль)\n", + "train_data, val_data = train_test_split(train_data, test_size=0.2, random_state=42)\n", + "\n", + "print(\"Размер обучающей выборки:\", len(train_data))\n", + "print(\"Размер контрольной выборки:\", len(val_data))\n", + "print(\"Размер тестовой выборки:\", len(test_data))" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkQAAAHHCAYAAABeLEexAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABI9UlEQVR4nO3deVxVdf7H8fdlVxRckK1IERVzNysHHbdCFJdyssylxMbSccAWW4yZTLQF08bMdHSaUmu0sWyxpmks3LKS1FTcM3Uw0wR3rmKiwPf3hz/ueL2gQsIFz+v5eJzHg3PO95zzOd+7vTnLvTZjjBEAAICFebi7AAAAAHcjEAEAAMsjEAEAAMsjEAEAAMsjEAEAAMsjEAEAAMsjEAEAAMsjEAEAAMsjEAGAm5w4cUK7d+9Wfn6+u0vBVWSM0bFjx7Rr1y53l4JSIBABQAU5d+6cJk+erNatW8vX11e1a9dW48aNtWzZMneXViVs3bpVixcvdoxnZGTo3//+t/sKusDJkyf1zDPPKDo6Wj4+Pqpbt66aNGminTt3urs0XCEvdxeAymHevHl64IEHHOO+vr664YYbFBcXp3HjxikkJMSN1QFVX15enuLi4vTtt9/qD3/4g5577jlVr15dnp6eateunbvLqxJOnjypkSNHKjQ0VHXr1tUjjzyi+Ph49e7d2611HT16VF26dNG+ffs0evRodezYUT4+PvL29laDBg3cWhuuHIEITiZOnKjIyEidOXNGX3/9tWbNmqXPPvtMW7duVfXq1d1dHlBlvfTSS1qzZo0+//xzde3a1d3lVEkxMTGOQZKaNGmihx56yM1VSU8++aQOHjyo9PR0NW/e3N3loIwIRHASHx+vm2++WZL04IMPqm7dupo6dao+/vhjDRo0yM3VAVVTfn6+pk2bpscff5ww9CstXrxY27dv1y+//KKWLVvKx8fHrfUcOnRIb731lmbPnk0YquK4hgiXdNttt0mSMjMzJUnHjh3TE088oZYtW6pGjRoKCAhQfHy8Nm3a5LLsmTNnlJKSoiZNmsjPz09hYWG66667tGfPHknS3r17ZbPZShwu/OBYuXKlbDab3n33Xf3pT39SaGio/P39dccdd+inn35y2faaNWvUs2dPBQYGqnr16urSpYu++eabYvexa9euxW4/JSXFpe38+fPVrl07VatWTXXq1NHAgQOL3f6l9u1ChYWFmjZtmpo3by4/Pz+FhIRo5MiROn78uFO7Bg0aqE+fPi7bSUpKcllncbVPmTLFpU+l86dxxo8fr0aNGsnX11cRERF66qmnlJeXV2xfXahr165q0aKFy/SXX35ZNptNe/fudZp+4sQJPfroo4qIiJCvr68aNWqkl156SYWFhY42Rf328ssvu6y3RYsWxT4n3n///RJrHDZs2BWdsmjQoIHj8fHw8FBoaKjuvfde7du377LLStJf//pXNW/eXL6+vgoPD1diYqJOnDjhmL9z504dP35cNWvWVJcuXVS9enUFBgaqT58+2rp1q6PdihUrZLPZ9NFHH7ls45133pHNZlN6erqj5mHDhjm1KeqTlStXOqZ99dVXuueee3TDDTc4HuPHHntMv/zyi9OyKSkpLs+lBQsWqE2bNvLz81PdunU1aNAglz4ZNmyYatSo4TTt/fffd6lDkmrUqOFSs3Rlr6uuXbs6Hv9mzZqpXbt22rRpU7Gvq+Jc/DoPCgpS7969nfpfOv/6SUpKKnE98+bNc3p+r1u3ToWFhTp79qxuvvnmS/aVJC1fvlydOnWSv7+/atWqpTvvvFM7duxwalP0WHz//fcaMGCAAgICHKcIz5w541Lvha/3/Px89erVS3Xq1NH27dud2l7p+5dVcYQIl1QUXurWrStJ+u9//6vFixfrnnvuUWRkpLKzs/W3v/1NXbp00fbt2xUeHi5JKigoUJ8+fbRs2TINHDhQjzzyiE6ePKm0tDRt3bpVUVFRjm0MGjRIvXr1ctpucnJysfW88MILstlsGjt2rA4dOqRp06YpNjZWGRkZqlatmqTzbzjx8fFq166dxo8fLw8PD82dO1e33XabvvrqK916660u673++uuVmpoqSTp16pRGjRpV7LbHjRunAQMG6MEHH9Thw4f12muvqXPnztq4caNq1arlssyIESPUqVMnSdKHH37o8kE3cuRIx/VbDz/8sDIzMzVjxgxt3LhR33zzjby9vYvth9I4ceKEY98uVFhYqDvuuENff/21RowYoRtvvFFbtmzRK6+8oh9++MHp4tVf6/Tp0+rSpYsOHDigkSNH6oYbbtDq1auVnJysgwcPatq0aVdtW2XVqVMnjRgxQoWFhdq6daumTZumn3/+WV999dUll0tJSdGECRMUGxurUaNGaefOnZo1a5bWrVvneAyP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EcA3bdqkJ554wtFmy5Yt+uGHH/TWW29p6NChjulpaWkl9kNsbKwCAwP17LPPlljv1fqywdK+rqTzd/QdOnSo2LtAL6d27dpOj3HXrl0VHh6uuXPnOt3Icf311zu1q1GjhoYMGVLsKcYLH9ui081FLuyrC58rF/v+++8VFBTk8hzftWuXY/2StHv3bhUWFrr0f/fu3TVr1iydOXNGixcv1ogRIxx3HEpl62cr4hoilIqnp6eMMU7TFi1apAMHDjhN69+/v44cOeLyX60kl+VL4+2339bJkycd4++//74OHjyo+Ph4SVK7du0UFRWll19+WadOnXJZ/vDhwy61e3p6FntL+4XuuusueXp6asKECS71G2Mcd5pI5297/eCDD3Trrbde8j+vAQMGqKCgQM8995zLvPz8/F91TUx6ero+/vhjTZo0qcSwM2DAAB04cEB///vfXeb98ssvys3NLfP2i9tWenq6Pv/8c5d5J06cuKq/5VVYWCgPD49fHfKKbku/1FcQxMbGysfHR9OnT3d6Xrz55pvKyclxfINyvXr1dPPNN+utt95yOm21Z88effLJJ4qPj3f6zz0oKEjx8fGaP3++FixYoJ49exZ7V5eHh4datGih2NhYxcbGunzjddE6L6zNGKNXX331kvvepk0bhYSE6O9//7tOnz7tmP7VV1/pu+++u+zr5UqV5nUlnb9e7IUXXtBjjz12yaOvV+pKHmPpf0eeizu60rZtW4WGhmr27NlO67m4r8LCwtSmTRu99dZbTq/trVu36osvvnC501Y6fwnDhV577TVJcrzfFenQoYM8PT3l7++v2bNna9WqVU6v69L2s1VxhAil0qdPH02cOFEPPPCAOnTooC1btmjBggVO/x1L5w/5v/322xozZozWrl2rTp06KTc3V0uXLtUf//hHl4v+rlSdOnX029/+Vg888ICys7M1bdo0NWrUyHE6xcPDQ2+88Ybi4+PVvHlzPfDAA7ruuut04MABrVixQgEBAfrXv/6l3NxczZw5U9OnT1eTJk2cvi+lKEht3rxZ6enpiomJUVRUlJ5//nklJydr79696tevn2rWrKnMzEx99NFHGjFihJ544gktXbpU48aN0+bNm/Wvf/3rkvvSpUsXjRw5UqmpqcrIyFBcXJy8vb21a9cuLVq0SK+++qruvvvuMvXTF198oe7du1/yiMz999+v9957T3/4wx+0YsUKdezYUQUFBfr+++/13nvv6fPPP7/skbNTp05pyZIlTtOK/gP+8ssv5e3treuuu05PPvmkPvnkE/Xp00fDhg1Tu3btlJubqy1btuj999/X3r17y3wbd0ZGhmrUqKH8/HytX79eb7/9tu68885iP7wu5b///a/mz58v6fzF6DNmzFBAQMAlL6yuV6+ekpOTNWHCBPXs2VN33HGHdu7cqb/+9a+65ZZbnC6Cnjx5suLi4hQTE6MHH3zQcdu9n5+fXnjhBZd1Dx061PH4Fxear0TTpk0VFRWlJ554QgcOHFBAQIA++OADl2uJLubt7a2XXnpJw4YNU8eOHZWQkKBjx47p1Vdf1XXXXedyu3tBQYHT8yAjI0PS+VM5F174X1BQoAMHDmjt2rW69dZbr/h1VWTDhg0KCgoq8dTr5WRnZzse4yNHjuhvf/ubvLy8XALevn37tGTJEscpsxdeeEH169dX27ZtXY5Se3l5afLkyRo6dKg6deqkIUOGOE7HXX/99U59NWXKFMXHxysmJkbDhw933HYfGBhY7BGvzMxM3XHHHerZs6fS09M1f/58DR48WK1bty5xH3v06KH77rtPTz31lPr27auwsLBS97NlVeQtbai8im4dXbdu3SXbnTlzxjz++OMmLCzMVKtWzXTs2NGkp6cXe0vr6dOnzZ///GcTGRlpvL29TWhoqLn77rvNnj17jDFlu8X6n//8p0lOTjbBwcGmWrVqpnfv3k63DhfZuHGjueuuu0zdunWNr6+vqV+/vhkwYIBZtmyZ07YvN1x8K/YHH3xgfvvb3xp/f3/j7+9vmjZtahITE83OnTuNMcaMHj3adO7c2SxZssSlpotvuy/y+uuvm3bt2plq1aqZmjVrmpYtW5qnnnrK/Pzzz442pb3t3mazmfXr1ztNL+4xOnv2rHnppZdM8+bNja+vr6ldu7Zp166dmTBhgsnJyXHZ3sXru1z/zZ0719H+5MmTJjk52TRq1Mj4+PiYoKAg06FDB/Pyyy+bs2fPGmPK9pwoGry8vEz9+vXNww8/bI4fP26MKd1t9xeuKygoyMTFxZn09PTLLmvM+dvsmzZtary9vU1ISIgZNWqUo4YLLVu2zHTs2NFUq1bNBAQEmN69e5stW7YUu868vDxTu3ZtExgYaH755ZcrqqO42+63b99uYmNjTY0aNUxQUJB56KGHzKZNm1wen+KenwsXLjRt2rRxPDfuvfdes3fvXqc2CQkJV/RaunC4+Hl4udeVMf97vr3yyitOy5b0urrYxc/XWrVqmY4dO5rPPvvMqd2FbWw2mwkNDTV33XWX2bFjhzHG9bb7Iu+9955p27at8fX1NXXq1DGDBg0q9r1p6dKlTs+Bvn37mu3btxe7T9u3bzd33323qVmzpqldu7ZJSkpyeS7ooq/ZMMaYI0eOmHr16pnf/e53TtOvpJ+tzGbMrzh/AVSQlStXqlu3blq0aFGZj5pcaO/evYqMjFRmZmaJ10OkpKRo7969mjdv3q/enhU1aNBAKSkpxX4zMS4vPz9f4eHh6tu3r8s1e1XZvHnzNG/ePJdvscb/FH3Z5+HDh6/aF2Di8riGCAAqocWLF+vw4cNOF0MDKD9cQwRLKrpr5FIXPbdq1crxUyQovS5duji+0BNXbs2aNdq8ebOee+45tW3bVl26dHF3SVfVddddV+zP5wDuRiCCJQUFBTkurizJXXfdVUHVXJveeustd5dQJc2aNUvz589XmzZtrsnTtd27d7/s934B7sA1RAAAwPK4hggAAFgegQgAAFge1xBdgcLCQv3888+qWbNmuf/EAQAAuDqMMTp58qTCw8Odfqi8OASiK/Dzzz9f1R+6BAAAFeenn37S9ddff8k2BKIrULNmTUnnOzQgIMDN1QAAgCtht9sVERHh+By/FALRFSg6TRYQEEAgAgCgirmSy124qBoAAFgegQgAAFgegQgAAFgegQgAAFgegQgAAFgegQgAAFgegQgAAFgegQgAAFgegQgAAFgegQgAAFgegQgAAFgegQgAAFgegQgAAFgegQgAAFgegQgAAFgegQgAAFgegQgAAFgegQgAAFgegQgAAFgegQgAAFgegQgAAFgegQgAAFgegQgAAFgegQgAAFgegQgAAFgegQgAAFgegQgAAFgegQgAAFgegQgAAFgegQgAAFgegQgAAFieWwPRqlWr1LdvX4WHh8tms2nx4sVO8202W7HDlClTHG0aNGjgMn/SpElO69m8ebM6deokPz8/RUREaPLkyRWxewAAoIpwayDKzc1V69atNXPmzGLnHzx40GmYM2eObDab+vfv79Ru4sSJTu1Gjx7tmGe32xUXF6f69etr/fr1mjJlilJSUvT666+X674BAICqw8ud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jR49WmPHjr3iOu12uwIDA5WTk3PZU3YAAKByKM3nt1sDUVVBIAIAoOopzed3pb6GCAAAoCIQiAAAgOURiAAAgOURiAAAgOURiAAAgOURiAAAgOURiAAAgOURiAAAgOURiAAAgOURiAAAgOURiAAAgOURiAAAgOURiAAAgOURiAAAgOURiAAAgOURiAAAgOURiAAAgOURiAAAgOURiAAAgOURiAAAgOURiAAAgOURiAAAgOURiAAAgOURiAAAgOURiAAAgOURiAAAgOURiAAAgOWVKRA1bNhQR48edZl+4sQJNWzY8FcXBQAAUJHKFIj27t2rgoICl+l5eXk6cODAry4KAACgInmVpvEnn3zi+Pvzzz9XYGCgY7ygoEDLli1TgwYNrlpxAAAAFaFUgahfv36SJJvNpoSEBKd53t7eatCggf7yl79cteIAAAAqQqkCUWFhoSQpMjJS69atU1BQULkUBQAAUJFKFYiKZGZmXu06AAAA3KZMgUiSli1bpmXLlunQoUOOI0dF5syZ86sLAwAAqChlCkQTJkzQxIkTdfPNNyssLEw2m+1q1wUAAFBhyhSIZs+erXnz5un++++/2vUAAABUuDJ9D9HZs2fVoUOHX73xVatWqW/fvgoPD5fNZtPixYud5htj9OyzzyosLEzVqlVTbGysdu3a5dTm2LFjGjJkiAICAlSrVi0NHz5cp06dcmqzefNmderUSX5+foqIiNDkyZN/de0AAODaUaZA9OCDD+qdd9751RvPzc1V69atNXPmzGLnT548WdOnT9fs2bO1Zs0a+fv7q0ePHjpz5oyjzZAhQ7Rt2zalpaXp008/1apVqzRixAjHfLvdrri4ONWvX1/r16/XlClTlJKSotdff/1X1w8AAK4NNmOMKe1CjzzyiN5++221atVKrVq1kre3t9P8qVOnlr4Qm00fffSR47uOjDEKDw/X448/rieeeEKSlJOTo5CQEM2bN08DBw7Ujh071KxZM61bt04333yzJGnJkiXq1auX9u/fr/DwcM2aNUt//vOflZWVJR8fH0nS008/rcWLF+v777+/otrsdrsCAwOVk5OjgICAUu8bAACoeKX5/C7TEaLNmzerTZs28vDw0NatW7Vx40bHkJGRUZZVusjMzFRWVpZiY2Md0wIDA9W+fXulp6dLktLT01WrVi1HGJKk2NhYeXh4aM2a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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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OxEREXUuLdrjYzQaccMNN7RKAf369UNSUhL279+PWbNmYcqUKUhNTW2VZTcmNjYWxcXF0uPs2bNtuj4iIiLqGFoUfB599FF8/vnnrVKAVqtFYGAgwsLCsGTJEgwePBhvvfUWDAYDjEYjioqKrNrn5OTAYDAAAAwGQ72rvCzDljYN0el00pVklgcRERF1fS061FVZWYkPPvgA27ZtQ2hoKDQajdX0ZcuWtbggy6XxYWFh0Gg0iI+Px6RJkwAAaWlpyMzMRHh4OAAgPDwcr7zyCnJzc+Hp6QkA2Lp1K/R6PQYMGNDiGoiIiKhralHwSU5OxpAhQwAAKSkpVtMUCkWTlxMbG4uoqCj06tULpaWl+Pzzz7Fz507prtDTpk3DvHnz4ObmBr1ejzlz5iA8PBwjR44EAIwbNw4DBgzAQw89hNdffx3Z2dl44YUXEBMTA51O15JNIyIioi6sRcFnx44drbLy3NxcPPzww7hw4QKcnZ0RGhqKLVu24LbbbgMAvPnmm1AqlZg0aRKqqqoQGRmJVatWSfOrVCps3LgRs2bNQnh4OBwdHTFlyhQsXry4VeojIiKirqXF9/HpSngfHyIios6nJd/fLdrjc8stt1zxkNb27dtbslgiIiKiNtWi4GM5v8eiuroaSUlJSElJqffjpUREREQdRYuCz5tvvtng+IULF6KsrOyaCiIiIiJqKy26j09j/va3v13T73QRERERtaVWDT4JCQmws7NrzUUSERERtZoWHeqaOHGi1bAQAhcuXMDBgwfx4osvtkphRERERK2tRcHH2dnZalipVKJfv35YvHgxxo0b1yqFEREREbW2FgWf1atXt3YdRERERG2uRcHHIjExEceOHQMADBw4ENddd12rFEVERETUFloUfHJzc3H//fdj586dcHFxAQAUFRXhlltuwbp169C9e/fWrJGIiIioVbToqq45c+agtLQUR48eRWFhIQoLC5GSkoKSkhI8/vjjrV0jERERUato0R6fzZs3Y9u2bejfv780bsCAAVi5ciVPbiYiIqIOq0V7fMxmMzQaTb3xGo0GZrP5mosiIiIiagstCj633nornnjiCZw/f14al5WVhblz52Ls2LGtVhwRERFRa2pR8HnnnXdQUlICf39/9OnTB3369EFAQABKSkqwYsWK1q6RiIiIqFW06BwfX19f/Pbbb9i2bRuOHz8O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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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iRPtsUtERETUTNj1Z1/eeecd+Pv7Y9WqVdK0oKAg6W8hBJYsWYLXXnsNDz74IADgiy++gMFgwIYNG/Doo4/ixIkT2Lp1Kw4ePIiePXsCAD788EPce++9ePfdd+Hn51e/O0VERETNgl2PRP3000/o2bMn/vnPf8LHxwe33XYb/vOf/0jzU1JSkJ6ejvDwcGmam5sb+vTpg+joaABAdHQ03N3dpQAFAOHh4VAqlThw4ECl2y0uLobJZLJ5EBEREdWEXUPUqVOnsGLFCrRv3x7btm3D5MmT8dxzz2HNmjUAgPT0dACAwWCwWc5gMEjz0tPT4ePjYzNfrVbD09NTanO9BQsWwM3NTXr4+/vX9q4RERFRE2fXEGW1WnH77bfjrbfewm233YaJEydiwoQJWLlyZZ1uNzIyEnl5edLj7Nmzdbo9IiIianrsGqJ8fX0REhJiM61Tp05ITU0FABiNRgBARkaGTZuMjAxpntFoRGZmps18s9mMnJwcqc31dDod9Hq9zYOIiIioJuwaou644w4kJCTYTEtMTERgYCCAskHmRqMRUVFR0nyTyYQDBw4gLCwMABAWFobc3FzExMRIbXbu3Amr1Yo+ffrUw14QERFRc2TXq/OmT5+Ofv364a233sLDDz+MP//8E5988gk++eQTAIBCocC0adPw5ptvon379ggKCsLrr78OPz8/PPTQQwDKjlwNGzZMOg1YWlqKKVOm4NFHH+WVeURERFRn7BqievXqhfXr1yMyMhLz589HUFAQlixZgjFjxkhtZs2ahcLCQkycOBG5ubm48847sXXrVjg4OEhtvv76a0yZMgWDBw+GUqnEqFGjsHTpUnvsEhERETUTCiGEsHcR9mYymeDm5oa8vLxaHR8VHx+PNftOwxjYDulnkjGuX+sKY8CIiIhInrr6/q4uu//sCxEREVFjxBBFREREJANDFBEREZEMDFFEREREMjBEEREREcnAEEVEREQkA0MUERERkQwMUUREREQyMEQRERERycAQRURERCQDQxQRERGRDAxRRERERDIwRBERERHJwBBFREREJANDFBEREZEMDFFEREREMjBEEREREcnAEEVEREQkA0MUERERkQwMUUREREQyMEQRERERycAQRURERCQDQxQRERGRDAxRRERERDIwRBERERHJwBBFREREJANDFBEREZEMDFFEREREMjBEEREREcnAEEVEREQkA0MUERERkQwMUUREREQyMEQRERERycAQRURERCQDQxQRERGRDAxRRERERDIwRBERERHJwBBFREREJANDFBEREZEMDFFEREREMjBEEREREcnAEEVEREQkA0MUERERkQwMUUREREQyMEQRERERycAQRURERCSDXUPU3LlzoVAobB4dO3aU5hcVFSEiIgItWrSAi4sLRo0ahYyMDJt1pKamYsSIEXBycoKPjw9mzpwJs9lc37tCREREzYza3gV07twZO3bskJ6r1f8rafr06fjll1+wbt06uLm5YcqUKRg5ciT++OMPAIDFYsGIESNgNBqxb98+XLhwAU8++SQ0Gg3eeuutet8XIiIiaj7sHqLUajWMRmOF6Xl5efjss8/wzTff4O677wYArFq1Cp06dcL+/fvRt29f/Prrr4iPj8eOHTtgMBjQo0cPvPHGG3jppZcwd+5caLXa+t4dIiIiaibsPiYqKSkJfn5+aNOmDcaMGYPU1FQAQExMDEpLSxEeHi617dixIwICAhAdHQ0AiI6ORteuXWEwGKQ2Q4cOhclkwvHjx6vcZnFxMUwmk82DiIiIqCbsGqL69OmD1atXY+vWrVixYgVSUlLQv39/5OfnIz09HVqtFu7u7jbLGAwGpKenAwDS09NtAlT5/PJ5VVmwYAHc3Nykh7+/f+3uGBERETV5dj2dN3z4cOnvbt26oU+fPggMDMR3330HR0fHOttuZGQkZsyYIT03mUwMUkRERFQjdj+ddy13d3cEBwcjOTkZRqMRJSUlyM3NtWmTkZEhjaEyGo0VrtYrf17ZOKtyOp0Oer3e5kFERERUEw0qRBUUFODkyZPw9fVFaGgoNBoNoqKipPkJCQlITU1FWFgYACAsLAzHjh1DZmam1Gb79u3Q6/UICQmp9/qJiIio+bDr6bwXX3wR999/PwIDA3H+/HnMmTMHKpUKjz32GNzc3DB+/HjMmDEDnp6e0Ov1mDp1KsLCwtC3b18AwJAhQxASEoKxY8di4cKFSE9Px2uvvYaIiAjodDp77hoRERE1cXYNUefOncNjjz2GixcvwtvbG3feeSf2798Pb29vAMDixYuhVCoxatQoFBcXY+jQofjoo4+k5VUqFTZt2oTJkycjLCwMzs7OGDduHObPn2+vXSIiIqJmQiGEEPYuwt5MJhPc3NyQl5dXq+Oj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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Пример оценки сбалансированности целевой переменной (цена автомобиля)\n", + "import seaborn as sns\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# Гистограмма распределения цены в обучающей выборке\n", + "sns.histplot(train_data['Price'], kde=True)\n", + "plt.title('Распределение цены в обучающей выборке')\n", + "plt.show()\n", + "\n", + "# Гистограмма распределения цены в контрольной выборке\n", + "sns.histplot(val_data['Price'], kde=True)\n", + "plt.title('Распределение цены в контрольной выборке')\n", + "plt.show()\n", + "\n", + "# Гистограмма распределения цены в тестовой выборке\n", + "sns.histplot(test_data['Price'], kde=True)\n", + "plt.title('Распределение цены в тестовой выборке')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Процесс конструирования признаков\n", + "Задача 1: Прогнозирование цен на автомобили\n", + "Цель технического проекта: Разработка модели машинного обучения для точного прогнозирования рыночной стоимости автомобилей.\n", + "\n", + "Задача 2: Оптимизация рекламных бюджетов\n", + "Цель технического проекта: Использование прогнозов цен на автомобили для оптимизации таргетинга рекламы и повышения конверсии на онлайн-площадках.\n", + "\n", + "\n", + "### Унитарное кодирование категориальных признаков (one-hot encoding)\n", + "\n", + "One-hot encoding: Преобразование категориальных признаков в бинарные векторы." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " ID Price Levy Manufacturer Prod. year Engine volume \\\n", + "3438 45793776 13485 781 VOLKSWAGEN 2012 2.5 \n", + "3185 45760664 314 781 SUBARU 2012 2.5 \n", + "5529 45777845 5645 5908 BMW 1999 2.5 \n", + "7891 45651201 7997 1850 LEXUS 2008 3.5 \n", + "12167 45798755 15681 765 VOLKSWAGEN 2015 2 \n", + "... ... ... ... ... ... ... \n", + "2750 45656065 941 1055 LEXUS 2013 3.5 \n", + "17390 45785069 12000 - FORD 1998 2.5 \n", + "5563 45815001 941 777 TOYOTA 2014 2.5 \n", + "3813 45809829 54850 831 HONDA 2018 1.5 \n", + "6041 45397141 9095 - FORD 2003 1.7 \n", + "\n", + " Mileage Cylinders Drive wheels Doors ... Fuel type_Hybrid \\\n", + "3438 160000 km 4.0 Rear 04-May ... False \n", + "3185 204579 km 4.0 4x4 04-May ... False \n", + "5529 0 km 6.0 Rear 04-May ... False \n", + "7891 244731 km 6.0 Front 04-May ... True \n", + "12167 103000 km 4.0 Front 04-May ... False \n", + "... ... ... ... ... ... ... \n", + "2750 361603 km 6.0 Front 04-May ... True \n", + "17390 220000 km 4.0 Rear 04-May ... False \n", + "5563 202355 km 4.0 Front 04-May ... False \n", + "3813 13048 km 4.0 Front 04-May ... False \n", + "6041 159000 km 4.0 Front 04-May ... False \n", + "\n", + " Fuel type_LPG Fuel type_Petrol Fuel type_Plug-in Hybrid \\\n", + "3438 False True False \n", + "3185 False True False \n", + "5529 False True False \n", + "7891 False False False \n", + "12167 False True False \n", + "... ... ... ... \n", + "2750 False False False \n", + "17390 False False False \n", + "5563 False True False \n", + "3813 False True False \n", + "6041 False False False \n", + "\n", + " Gear box type_Automatic Gear box type_Manual Gear box type_Tiptronic \\\n", + "3438 True False False \n", + "3185 True False False \n", + "5529 False False True \n", + "7891 True False False \n", + "12167 False False True \n", + "... ... ... ... \n", + "2750 True False False \n", + "17390 False True False \n", + "5563 True False False \n", + "3813 True False False \n", + "6041 False True False \n", + "\n", + " Gear box type_Variator Leather interior_No Leather interior_Yes \n", + "3438 False False True \n", + "3185 False False True \n", + "5529 False True False \n", + "7891 False False True \n", + "12167 False True False \n", + "... ... ... ... \n", + "2750 False False True \n", + "17390 False True False \n", + "5563 False False True \n", + "3813 False False True \n", + "6041 False True False \n", + "\n", + "[12311 rows x 1247 columns]\n" + ] + } + ], + "source": [ + "import pandas as pd\n", + "\n", + "# Пример категориальных признаков\n", + "categorical_features = ['Model', 'Category', 'Fuel type', 'Gear box type', 'Leather interior']\n", + "\n", + "# Применение one-hot encoding\n", + "train_data_encoded = pd.get_dummies(train_data, columns=categorical_features)\n", + "val_data_encoded = pd.get_dummies(val_data, columns=categorical_features)\n", + "test_data_encoded = pd.get_dummies(test_data, columns=categorical_features)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Дискретизация числовых признаков \n", + "это процесс преобразования непрерывных числовых значений в дискретные категории или интервалы (бины). Этот процесс может быть полезен по нескольким причинам" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " ID Price Levy Manufacturer Prod. year Engine volume \\\n", + "736 45753963 27284 259 CHEVROLET 2014 1.4 \n", + "8674 45786053 10349 - MERCEDES-BENZ 1997 2.9 Turbo \n", + "5971 45757478 40769 - MERCEDES-BENZ 1996 1.8 \n", + "1957 45732345 38737 639 HYUNDAI 2014 2 \n", + "11075 45729790 42102 831 SSANGYONG 2017 1.6 \n", + "... ... ... ... ... ... ... \n", + "12026 45786994 12231 650 CHEVROLET 2016 1.4 Turbo \n", + "17893 45756187 15681 - FORD 2003 2.4 Turbo \n", + "5339 45769967 314 2410 MERCEDES-BENZ 2010 6.2 \n", + "11859 45801865 14069 687 HYUNDAI 2010 1.6 \n", + "9276 45803366 15681 891 HYUNDAI 2016 2 \n", + "\n", + " Mileage Cylinders Drive wheels Doors ... Fuel type_LPG \\\n", + "736 65000 km 4.0 Front 04-May ... False \n", + "8674 3333 km 6.0 Rear 02-Mar ... False \n", + "5971 212485 km 8.0 Rear 04-May ... False \n", + "1957 132756 km 4.0 Front 04-May ... False \n", + "11075 50750 km 4.0 Front 04-May ... False \n", + "... ... ... ... ... ... ... \n", + "12026 9000 km 4.0 Front 04-May ... False \n", + "17893 250000 km 4.0 Rear 04-May ... False \n", + "5339 274771 km 8.0 Rear 04-May ... False \n", + "11859 100403 km 4.0 Front 04-May ... False \n", + "9276 322292 km 4.0 Front 04-May ... True \n", + "\n", + " Fuel type_Petrol Fuel type_Plug-in Hybrid Gear box type_Automatic \\\n", + "736 False True True \n", + "8674 False False False \n", + "5971 True False False \n", + "1957 False False True \n", + "11075 True False True \n", + "... ... ... ... \n", + "12026 True False False \n", + "17893 False False False \n", + "5339 True False True \n", + "11859 True False True \n", + "9276 False False True \n", + "\n", + " Gear box type_Manual Gear box type_Tiptronic Gear box type_Variator \\\n", + "736 False False False \n", + "8674 True False False \n", + "5971 True False False \n", + "1957 False False False \n", + "11075 False False False \n", + "... ... ... ... \n", + "12026 False True False \n", + "17893 True False False \n", + "5339 False False False \n", + "11859 False False False \n", + "9276 False False False \n", + "\n", + " Leather interior_No Leather interior_Yes Year bin \n", + "736 True False 4 \n", + "8674 False True 3 \n", + "5971 True False 3 \n", + "1957 False True 4 \n", + "11075 False True 4 \n", + "... ... ... ... \n", + "12026 True False 4 \n", + "17893 True False 3 \n", + "5339 False True 4 \n", + "11859 False True 4 \n", + "9276 False True 4 \n", + "\n", + "[3848 rows x 658 columns]\n" + ] + } + ], + "source": [ + "# Пример дискретизации признака 'year'\n", + "train_data_encoded['Year bin'] = pd.cut(train_data_encoded['Prod. year'], bins=5, labels=False)\n", + "val_data_encoded['Year bin'] = pd.cut(val_data_encoded['Prod. year'], bins=5, labels=False)\n", + "test_data_encoded['Year bin'] = pd.cut(test_data_encoded['Prod. year'], bins=5, labels=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Ручной синтез\n", + "Создание новых признаков на основе экспертных знаний и логики предметной области. Например, для данных о продаже автомобилей можно создать признак \"возраст автомобиля\" как разницу между текущим годом и годом выпуска." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " ID Price Levy Manufacturer Prod. year Engine volume \\\n", + "3438 45793776 13485 781 VOLKSWAGEN 2012 2.5 \n", + "3185 45760664 314 781 SUBARU 2012 2.5 \n", + "5529 45777845 5645 5908 BMW 1999 2.5 \n", + "7891 45651201 7997 1850 LEXUS 2008 3.5 \n", + "12167 45798755 15681 765 VOLKSWAGEN 2015 2 \n", + "... ... ... ... ... ... ... \n", + "2750 45656065 941 1055 LEXUS 2013 3.5 \n", + "17390 45785069 12000 - FORD 1998 2.5 \n", + "5563 45815001 941 777 TOYOTA 2014 2.5 \n", + "3813 45809829 54850 831 HONDA 2018 1.5 \n", + "6041 45397141 9095 - FORD 2003 1.7 \n", + "\n", + " Mileage Cylinders Drive wheels Doors ... Fuel type_Petrol \\\n", + "3438 160000 km 4.0 Rear 04-May ... True \n", + "3185 204579 km 4.0 4x4 04-May ... True \n", + "5529 0 km 6.0 Rear 04-May ... True \n", + "7891 244731 km 6.0 Front 04-May ... False \n", + "12167 103000 km 4.0 Front 04-May ... True \n", + "... ... ... ... ... ... ... \n", + "2750 361603 km 6.0 Front 04-May ... False \n", + "17390 220000 km 4.0 Rear 04-May ... False \n", + "5563 202355 km 4.0 Front 04-May ... True \n", + "3813 13048 km 4.0 Front 04-May ... True \n", + "6041 159000 km 4.0 Front 04-May ... False \n", + "\n", + " Fuel type_Plug-in Hybrid Gear box type_Automatic Gear box type_Manual \\\n", + "3438 False True False \n", + "3185 False True False \n", + "5529 False False False \n", + "7891 False True False \n", + "12167 False False False \n", + "... ... ... ... \n", + "2750 False True False \n", + "17390 False False True \n", + "5563 False True False \n", + "3813 False True False \n", + "6041 False False True \n", + "\n", + " Gear box type_Tiptronic Gear box type_Variator Leather interior_No \\\n", + "3438 False False False \n", + "3185 False False False \n", + "5529 True False True \n", + "7891 False False False \n", + "12167 True False True \n", + "... ... ... ... \n", + "2750 False False False \n", + "17390 False False True \n", + "5563 False False False \n", + "3813 False False False \n", + "6041 False False True \n", + "\n", + " Leather interior_Yes Year bin Age \n", + "3438 True 4 12 \n", + "3185 True 4 12 \n", + "5529 False 3 25 \n", + "7891 True 4 16 \n", + "12167 False 4 9 \n", + "... ... ... ... \n", + "2750 True 4 11 \n", + "17390 False 3 26 \n", + "5563 True 4 10 \n", + "3813 True 4 6 \n", + "6041 False 3 21 \n", + "\n", + "[12311 rows x 1249 columns]\n" + ] + } + ], + "source": [ + "# Пример синтеза признака \"возраст автомобиля\"\n", + "train_data_encoded['Age'] = 2024 - train_data_encoded['Prod. year']\n", + "val_data_encoded['Age'] = 2024 - val_data_encoded['Prod. year']\n", + "test_data_encoded['Age'] = 2024 - test_data_encoded['Prod. year']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Масштабирование признаков - это процесс преобразования числовых признаков таким образом, чтобы они имели одинаковый масштаб. Это важно для многих алгоритмов машинного обучения, которые чувствительны к масштабу признаков, таких как линейная регрессия, метод опорных векторов (SVM) и нейронные сети." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.preprocessing import StandardScaler, MinMaxScaler\n", + "\n", + "# Пример масштабирования числовых признаков\n", + "numerical_features = ['Airbags', 'Age']\n", + "\n", + "scaler = StandardScaler()\n", + "train_data_encoded[numerical_features] = scaler.fit_transform(train_data_encoded[numerical_features])\n", + "val_data_encoded[numerical_features] = scaler.transform(val_data_encoded[numerical_features])\n", + "test_data_encoded[numerical_features] = scaler.transform(test_data_encoded[numerical_features])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Конструирование признаков с применением фреймворка Featuretools" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "ename": "ModuleNotFoundError", + "evalue": "No module named 'pkg_resources'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[25], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mfeaturetools\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mft\u001b[39;00m\n\u001b[0;32m 3\u001b[0m \u001b[38;5;66;03m# Определение сущностей\u001b[39;00m\n\u001b[0;32m 4\u001b[0m es \u001b[38;5;241m=\u001b[39m ft\u001b[38;5;241m.\u001b[39mEntitySet(\u001b[38;5;28mid\u001b[39m\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mcar_data\u001b[39m\u001b[38;5;124m'\u001b[39m)\n", + "File \u001b[1;32mc:\\Users\\Egor\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\featuretools\\__init__.py:4\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mfeaturetools\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mversion\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m __version__\n\u001b[0;32m 3\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mfeaturetools\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mconfig_init\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m config\n\u001b[1;32m----> 4\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mfeaturetools\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mentityset\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mapi\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;241m*\u001b[39m\n\u001b[0;32m 5\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mfeaturetools\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m primitives\n\u001b[0;32m 6\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mfeaturetools\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01msynthesis\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mapi\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;241m*\u001b[39m\n", + "File \u001b[1;32mc:\\Users\\Egor\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\featuretools\\entityset\\__init__.py:2\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;66;03m# flake8: noqa\u001b[39;00m\n\u001b[1;32m----> 2\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mfeaturetools\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mentityset\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mapi\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;241m*\u001b[39m\n", + "File \u001b[1;32mc:\\Users\\Egor\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\featuretools\\entityset\\api.py:2\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;66;03m# flake8: noqa\u001b[39;00m\n\u001b[1;32m----> 2\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mfeaturetools\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mentityset\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mdeserialize\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m read_entityset\n\u001b[0;32m 3\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mfeaturetools\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mentityset\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mentityset\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m EntitySet\n\u001b[0;32m 4\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mfeaturetools\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mentityset\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mrelationship\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m Relationship\n", + "File \u001b[1;32mc:\\Users\\Egor\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\featuretools\\entityset\\deserialize.py:8\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01minspect\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m getfullargspec\n\u001b[0;32m 7\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mpandas\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mpd\u001b[39;00m\n\u001b[1;32m----> 8\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mwoodwork\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mtype_sys\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mtype_system\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mww_type_system\u001b[39;00m\n\u001b[0;32m 9\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mwoodwork\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mdeserialize\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m read_woodwork_table\n\u001b[0;32m 11\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mfeaturetools\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mentityset\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mrelationship\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m Relationship\n", + "File \u001b[1;32mc:\\Users\\Egor\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\woodwork\\__init__.py:2\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;66;03m# flake8: noqa\u001b[39;00m\n\u001b[1;32m----> 2\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mpkg_resources\u001b[39;00m\n\u001b[0;32m 3\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01msys\u001b[39;00m\n\u001b[0;32m 4\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mwarnings\u001b[39;00m\n", + "\u001b[1;31mModuleNotFoundError\u001b[0m: No module named 'pkg_resources'" + ] + } + ], + "source": [ + "import featuretools as ft\n", + "\n", + "# Определение сущностей\n", + "es = ft.EntitySet(id='car_data')\n", + "es = es.entity_from_dataframe(entity_id='cars', dataframe=train_data_encoded, index='id')\n", + "\n", + "# Определение связей между сущностями (если есть)\n", + "# es = es.add_relationship(...)\n", + "\n", + "# Генерация признаков\n", + "feature_matrix, feature_defs = ft.dfs(entityset=es, target_entity='cars', max_depth=2)\n", + "\n", + "# Преобразование признаков для контрольной и тестовой выборок\n", + "val_feature_matrix = ft.calculate_feature_matrix(features=feature_defs, entityset=es, instance_ids=val_data_encoded.index)\n", + "test_feature_matrix = ft.calculate_feature_matrix(features=feature_defs, entityset=es, instance_ids=test_data_encoded.index)" + ] } ], "metadata": {