355 lines
224 KiB
Plaintext
Raw Normal View History

2024-12-21 15:33:58 +04:00
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Пропуски не обнаружены.\n",
"Результаты для задачи регрессии:\n",
"Model: Linear Regression\n",
"Best Parameters: {}\n",
"MAE: 4165.371459891892\n",
"MSE: 39957124.62099743\n",
"RMSE: 6321.164815205931\n",
"R²: 0.7396607021732446\n",
"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"c:\\Users\\Админ\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\sklearn\\metrics\\_regression.py:492: FutureWarning: 'squared' is deprecated in version 1.4 and will be removed in 1.6. To calculate the root mean squared error, use the function'root_mean_squared_error'.\n",
" warnings.warn(\n",
"c:\\Users\\Админ\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\sklearn\\metrics\\_regression.py:492: FutureWarning: 'squared' is deprecated in version 1.4 and will be removed in 1.6. To calculate the root mean squared error, use the function'root_mean_squared_error'.\n",
" warnings.warn(\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: Random Forest Regression\n",
"Best Parameters: {'model__max_depth': None, 'model__n_estimators': 100}\n",
"MAE: 1302.9076843493865\n",
"MSE: 7348419.262303609\n",
"RMSE: 2710.796794727264\n",
"R²: 0.9521216221379603\n",
"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"c:\\Users\\Админ\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\sklearn\\metrics\\_regression.py:492: FutureWarning: 'squared' is deprecated in version 1.4 and will be removed in 1.6. To calculate the root mean squared error, use the function'root_mean_squared_error'.\n",
" warnings.warn(\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: Gradient Boosting Regression\n",
"Best Parameters: {'model__learning_rate': 0.1, 'model__max_depth': 5, 'model__n_estimators': 200}\n",
"MAE: 1557.7396658099947\n",
"MSE: 9302598.170553016\n",
"RMSE: 3050.016093490822\n",
"R²: 0.9393892353702158\n",
"\n",
"Результаты для задачи классификации:\n",
"Model: Logistic Regression\n",
"Best Parameters: {'model__C': 10, 'model__solver': 'liblinear'}\n",
"Accuracy: 0.8864864864864865\n",
"Precision: 1.0\n",
"Recall: 0.6204819277108434\n",
"F1-score: 0.7657992565055762\n",
"AUC: 0.8852866478768545\n",
"MAE: 0.17141106227002562\n",
"MSE: 0.0889310663866395\n",
"RMSE: 0.29821312242528747\n",
"R²: 0.5757891454185178\n",
"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"c:\\Users\\Админ\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\sklearn\\metrics\\_regression.py:492: FutureWarning: 'squared' is deprecated in version 1.4 and will be removed in 1.6. To calculate the root mean squared error, use the function'root_mean_squared_error'.\n",
" warnings.warn(\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAkIAAAHHCAYAAABTMjf2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB1HUlEQVR4nO3dd3zM9x8H8FcS2RMZEkJI7RkhimqKEJSapWZstapC1Y7RJtoYUaOKErMxihptbErsEVusqJUgRobIvM/vj+8vx8mQi7t8k9zr+XjcI/l+7jved98k985n6gkhBIiIiIh0kL7cARARERHJhYkQERER6SwmQkRERKSzmAgRERGRzmIiRERERDqLiRARERHpLCZCREREpLOYCBEREZHOYiJEREREOouJEBG9V2BgICpUqAADAwPUqVNH7nC0Qk9PD9OmTdPIue7evQs9PT0EBwdr5HwEHDp0CHp6ejh06JDcoVARw0SICrzg4GDo6ekpH8WKFUPp0qXRt29fPHz4MMtjhBBYs2YNPv30U9jY2MDMzAw1a9bEjBkz8OrVq2yvtXXrVrRu3Rq2trYwMjKCk5MTunbtigMHDuQq1qSkJMybNw8NGjSAtbU1TExMUKlSJYwYMQI3btzI0+uX2549ezBu3Dg0btwYK1euhL+/v1av17dvX1hYWGj1Gpqyfv16BAUFafUaGUlVxkNfXx8lSpRA69atcfz4ca1em0gX6HGtMSrogoOD0a9fP8yYMQPly5dHUlISTpw4geDgYLi4uODy5cswMTFR7p+eno4ePXpg48aNaNKkCTp16gQzMzMcOXIE69evR7Vq1bBv3z44ODgojxFCoH///ggODoabmxu6dOmCUqVKISoqClu3bsXZs2cRFhaGRo0aZRtnTEwMWrVqhbNnz6Jt27bw8vKChYUFIiIiEBISgujoaKSkpGj1vdKG8ePHIzAwEK9fv4aRkZHWr9e3b19s3rwZCQkJWr/W25KSklCsWDEUK1Ys18e0bdsWly9fxt27d1XKhRBITk6GoaEhDAwMPiiuu3fvonz58ujevTvatGmD9PR03LhxA4sXL8br169x+vRp1KxZ84OuURgoFAqkpKTAyMgI+vr8H540SBAVcCtXrhQAxOnTp1XKv//+ewFAbNiwQaXc399fABBjx47NdK7t27cLfX190apVK5XywMBAAUB8++23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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: Random Forest Classification\n",
"Best Parameters: {'model__max_depth': 20, 'model__n_estimators': 200}\n",
"Accuracy: 0.9765765765765766\n",
"Precision: 0.9872611464968153\n",
"Recall: 0.9337349397590361\n",
"F1-score: 0.9597523219814241\n",
"AUC: 0.9887183696224487\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: Gradient Boosting Classification\n",
"Best Parameters: {'model__learning_rate': 0.1, 'model__max_depth': 5, 'model__n_estimators': 200}\n",
"Accuracy: 0.9621621621621622\n",
"Precision: 0.9738562091503268\n",
"Recall: 0.8975903614457831\n",
"F1-score: 0.9341692789968652\n",
"AUC: 0.9855592033945552\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"from sklearn.model_selection import train_test_split, GridSearchCV\n",
"from sklearn.preprocessing import StandardScaler\n",
"from sklearn.linear_model import LinearRegression, LogisticRegression\n",
"from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier\n",
"from sklearn.ensemble import GradientBoostingRegressor, GradientBoostingClassifier\n",
"from sklearn.pipeline import Pipeline\n",
"from sklearn.compose import ColumnTransformer\n",
"from sklearn.preprocessing import OneHotEncoder\n",
"from sklearn.metrics import (mean_absolute_error, mean_squared_error, r2_score, \n",
" accuracy_score, precision_score, recall_score, \n",
" f1_score, confusion_matrix, ConfusionMatrixDisplay, \n",
" roc_curve, auc)\n",
"\n",
"# Загружаем набор данных\n",
"df = pd.read_csv(\"data/Medical_insurance.csv\")\n",
"\n",
"# Проверка наличия пропусков\n",
"if df.isnull().sum().any():\n",
" print(\"Пропуски обнаружены в следующих столбцах:\")\n",
" print(df.isnull().sum())\n",
"else:\n",
" print(\"Пропуски не обнаружены.\")\n",
"\n",
"# Определяем категориальные и числовые столбцы\n",
"categorical_cols = ['sex', 'smoker', 'region']\n",
"numerical_cols = ['age', 'bmi', 'children']\n",
"\n",
"# Создаем преобразователь для категориальных и числовых столбцов\n",
"preprocessor = ColumnTransformer(\n",
" transformers=[\n",
" ('cat', OneHotEncoder(), categorical_cols),\n",
" ('num', StandardScaler(), numerical_cols)\n",
" ])\n",
"\n",
"# Список моделей и их гиперпараметров для задачи регрессии\n",
"models_reg = {\n",
" \"Linear Regression\": (LinearRegression(), {}),\n",
" \"Random Forest Regression\": (RandomForestRegressor(), {\n",
" 'model__n_estimators': [100, 200],\n",
" 'model__max_depth': [None, 10, 20]\n",
" }),\n",
" \"Gradient Boosting Regression\": (GradientBoostingRegressor(), {\n",
" 'model__n_estimators': [100, 200],\n",
" 'model__learning_rate': [0.01, 0.1],\n",
" 'model__max_depth': [3, 5]\n",
" })\n",
"}\n",
"\n",
"# Распределяем данные на признаки и целевую переменную для задачи регрессии\n",
"X_reg = df[categorical_cols + numerical_cols]\n",
"y_reg = df['charges']\n",
"\n",
"# Разделяем данные на обучающую и тестовую выборки для задачи регрессии\n",
"X_train_reg, X_test_reg, y_train_reg, y_test_reg = train_test_split(X_reg, y_reg, test_size=0.2, random_state=42)\n",
"\n",
"# Обучаем и оцениваем модели для задачи регрессии\n",
"print(\"Результаты для задачи регрессии:\")\n",
"for name, (model, params) in models_reg.items():\n",
" pipeline = Pipeline(steps=[('preprocessor', preprocessor), ('model', model)])\n",
" grid_search = GridSearchCV(pipeline, params, cv=5, scoring='neg_mean_absolute_error')\n",
" grid_search.fit(X_train_reg, y_train_reg)\n",
" best_model = grid_search.best_estimator_\n",
" y_pred_reg = best_model.predict(X_test_reg)\n",
" mae = mean_absolute_error(y_test_reg, y_pred_reg)\n",
" mse = mean_squared_error(y_test_reg, y_pred_reg)\n",
" rmse = mean_squared_error(y_test_reg, y_pred_reg, squared=False)\n",
" r2 = r2_score(y_test_reg, y_pred_reg)\n",
" print(f\"Model: {name}\")\n",
" print(f\"Best Parameters: {grid_search.best_params_}\")\n",
" print(f\"MAE: {mae}\")\n",
" print(f\"MSE: {mse}\")\n",
" print(f\"RMSE: {rmse}\")\n",
" print(f\"R²: {r2}\\n\")\n",
"\n",
"# Список моделей и их гиперпараметров для задачи классификации\n",
"models_class = {\n",
" \"Logistic Regression\": (LogisticRegression(max_iter=1000), {\n",
" 'model__C': [0.1, 1, 10],\n",
" 'model__solver': ['liblinear', 'lbfgs']\n",
" }),\n",
" \"Random Forest Classification\": (RandomForestClassifier(), {\n",
" 'model__n_estimators': [100, 200],\n",
" 'model__max_depth': [None, 10, 20]\n",
" }),\n",
" \"Gradient Boosting Classification\": (GradientBoostingClassifier(), {\n",
" 'model__n_estimators': [100, 200],\n",
" 'model__learning_rate': [0.01, 0.1],\n",
" 'model__max_depth': [3, 5]\n",
" })\n",
"}\n",
"\n",
"# Разделяем данные на признаки и целевую переменную для задачи классификации\n",
"X_class = df[categorical_cols + numerical_cols]\n",
"y_class = (df['charges'] > df['charges'].mean()).astype(int)\n",
"\n",
"# Разделяем данные на обучающую и тестовую выборки для задачи классификации\n",
"X_train_class, X_test_class, y_train_class, y_test_class = train_test_split(X_class, y_class, test_size=0.2, random_state=42)\n",
"\n",
"# Обучаем и оцениваем модели для задачи классификации\n",
"print(\"Результаты для задачи классификации:\")\n",
"for name, (model, params) in models_class.items():\n",
" pipeline = Pipeline(steps=[('preprocessor', preprocessor), ('model', model)])\n",
" grid_search = GridSearchCV(pipeline, params, cv=5, scoring='accuracy')\n",
" grid_search.fit(X_train_class, y_train_class)\n",
" best_model = grid_search.best_estimator_\n",
" y_pred_class = best_model.predict(X_test_class)\n",
" y_pred_prob = best_model.predict_proba(X_test_class)[:, 1] # Предсказанные вероятности для позитива\n",
" accuracy = accuracy_score(y_test_class, y_pred_class)\n",
" precision = precision_score(y_test_class, y_pred_class)\n",
" recall = recall_score(y_test_class, y_pred_class)\n",
" f1 = f1_score(y_test_class, y_pred_class)\n",
" roc_auc = auc(*roc_curve(y_test_class, y_pred_prob)[:2]) # Добавляем вычисление AUC\n",
"\n",
" print(f\"Model: {name}\")\n",
" print(f\"Best Parameters: {grid_search.best_params_}\")\n",
" print(f\"Accuracy: {accuracy}\")\n",
" print(f\"Precision: {precision}\")\n",
" print(f\"Recall: {recall}\")\n",
" print(f\"F1-score: {f1}\")\n",
" print(f\"AUC: {roc_auc}\")\n",
"\n",
" # Вычисляем метрики MAE, MSE, RMSE и R² для логистической регрессии\n",
" if name == \"Logistic Regression\":\n",
" mae = mean_absolute_error(y_test_class, y_pred_prob)\n",
" mse = mean_squared_error(y_test_class, y_pred_prob)\n",
" rmse = mean_squared_error(y_test_class, y_pred_prob, squared=False)\n",
" r2 = r2_score(y_test_class, y_pred_prob)\n",
" print(f\"MAE: {mae}\")\n",
" print(f\"MSE: {mse}\")\n",
" print(f\"RMSE: {rmse}\")\n",
" print(f\"R²: {r2}\\n\")\n",
"\n",
" # Визуализация матрицы ошибок\n",
" cm = confusion_matrix(y_test_class, y_pred_class)\n",
" disp = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=['Less', 'More'])\n",
" disp.plot(cmap=plt.cm.Blues)\n",
" plt.title(f'Confusion Matrix for {name}')\n",
" plt.show()\n",
"\n",
" # ROC-кривая\n",
" fpr, tpr, thresholds = roc_curve(y_test_class, y_pred_prob)\n",
" plt.figure()\n",
" plt.plot(fpr, tpr, color='blue', label=f'ROC curve (area = {roc_auc:.2f})')\n",
" plt.plot([0, 1], [0, 1], color='red', linestyle='--')\n",
" plt.xlim([0.0, 1.0])\n",
" plt.ylim([0.0, 1.05])\n",
" plt.xlabel('False Positive Rate')\n",
" plt.ylabel('True Positive Rate')\n",
" plt.title(f'ROC Curve for {name}')\n",
" plt.legend(loc=\"lower right\")\n",
" plt.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}