306 lines
282 KiB
Plaintext
Raw Normal View History

2025-02-22 12:49:13 +04:00
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Лабораторная работа 7\n",
"Дата сет - продажа домов в округе Кинг"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['id', 'date', 'price', 'bedrooms', 'bathrooms', 'sqft_living',\n",
" 'sqft_lot', 'floors', 'waterfront', 'view', 'condition', 'grade',\n",
" 'sqft_above', 'sqft_basement', 'yr_built', 'yr_renovated', 'zipcode',\n",
" 'lat', 'long', 'sqft_living15', 'sqft_lot15'],\n",
" dtype='object')"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import numpy as np\n",
"import skfuzzy as fuzz\n",
"import matplotlib.pyplot as plt\n",
"import pandas as pd\n",
"\n",
"df_house = pd.read_csv(\".//static//csv//kc_house_data.csv\")\n",
"df_house.columns"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"from skfuzzy import control as ctrl\n",
"\n",
"# Определим входные и выходные переменные\n",
"sqft_living = ctrl.Antecedent(df_house['sqft_living'].sort_values(), \"sqft_living\")\n",
"bathrooms = ctrl.Antecedent(df_house['bathrooms'].sort_values(), \"bathrooms\")\n",
"price = ctrl.Consequent(df_house['price'].sort_values(), \"price\")"
]
},
{
"cell_type": "code",
2025-02-22 13:13:44 +04:00
"execution_count": null,
2025-02-22 12:49:13 +04:00
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 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"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
2025-02-22 13:13:44 +04:00
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
2025-02-22 12:49:13 +04:00
}
],
"source": [
"sqft_living['low'] = fuzz.zmf(sqft_living.universe, 0, 5000)\n",
"sqft_living['medium'] = fuzz.trapmf(sqft_living.universe, [3400, 5700, 7800, 9900])\n",
"sqft_living['high'] = fuzz.trimf(sqft_living.universe, [8000, 13580, 13580])\n",
"sqft_living.view()\n",
"\n",
"bathrooms['low'] = fuzz.zmf(bathrooms.universe, 0, 3)\n",
"bathrooms['medium'] = fuzz.trapmf(bathrooms.universe, [1, 3, 4, 6])\n",
"bathrooms['high'] = fuzz.trimf(bathrooms.universe, [5, 8, 8])\n",
"bathrooms.view()\n",
"\n",
"#price['low'] = fuzz.zmf(price.universe, 0, 2500000)\n",
"#price['medium'] = fuzz.trapmf(price.universe, [1500000, 3000000, 4000000, 5500000])\n",
"#price['high'] = fuzz.trimf(price.universe, [4000000, 9000000, 11000000])\n",
"\n",
2025-02-22 13:13:44 +04:00
"\n",
"\n",
2025-02-22 12:49:13 +04:00
"# Для более точного определения цены \n",
"price.automf(5, variable_type=\"quant\")\n",
2025-02-22 13:13:44 +04:00
"price.view()\n",
2025-02-22 12:49:13 +04:00
"\n",
2025-02-22 13:13:44 +04:00
"#price['low'] = fuzz.trimf(price.universe, [0, 0, 500000])\n",
"#price['medium'] = fuzz.trimf(price.universe, [250000, 750000, 1250000])\n",
"#price['high'] = fuzz.trimf(price.universe, [1000000, 1500000, 2000000])\n",
2025-02-22 12:49:13 +04:00
"\n",
2025-02-22 13:13:44 +04:00
"#price['medium'] = fuzz.trimf(price.universe, [2000000, 4000000, 6000000])\n",
"\n",
"#price['high'] = fuzz.trimf(price.universe, [4000000, 7000000, 11000000])\n",
"\n",
"#price.view()\n"
2025-02-22 12:49:13 +04:00
]
},
{
"cell_type": "code",
2025-02-22 13:13:44 +04:00
"execution_count": 51,
2025-02-22 12:49:13 +04:00
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Результаты оценки:\n",
"Sqft Living | Bathrooms | Actual Price | Inferred Price\n",
2025-02-22 13:13:44 +04:00
" 2000 | 2 | 300000 | 1984083.54\n",
" 4000 | 3 | 500000 | 4204191.69\n",
" 6000 | 4 | 700000 | 4097704.42\n",
" 8000 | 5 | 900000 | 4128330.12\n",
2025-02-22 12:49:13 +04:00
"\n",
2025-02-22 13:13:44 +04:00
"Средняя абсолютная ошибка (MAE): 3003577.44\n",
"Среднеквадратичная ошибка (RMSE): 3103372.52\n"
2025-02-22 12:49:13 +04:00
]
}
],
"source": [
"# Определение правил нечеткого вывода\n",
"rule1 = ctrl.Rule(sqft_living['low'] & bathrooms['low'], price['low'])\n",
"rule2 = ctrl.Rule(sqft_living['medium'] & bathrooms['medium'], price['medium'])\n",
"rule3 = ctrl.Rule(sqft_living['high'] & bathrooms['high'], price['high'])\n",
"rule4 = ctrl.Rule(sqft_living['low'] & bathrooms['high'], price['medium'])\n",
"rule5 = ctrl.Rule(sqft_living['high'] & bathrooms['low'], price['medium'])\n",
"\n",
"# Создание системы управления\n",
"price_ctrl = ctrl.ControlSystem([rule1, rule2, rule3, rule4, rule5])\n",
"price_sim = ctrl.ControlSystemSimulation(price_ctrl)\n",
"\n",
"# Функция для нечеткого вывода\n",
"def fuzzy_inference(sqft, bath):\n",
" price_sim.input['sqft_living'] = sqft\n",
" price_sim.input['bathrooms'] = bath\n",
" price_sim.compute()\n",
" return price_sim.output['price']\n",
"\n",
"# Тестовые данные\n",
"test_data = [\n",
" (2000, 2, 300000),\n",
" (4000, 3, 500000),\n",
" (6000, 4, 700000),\n",
" (8000, 5, 900000)\n",
"]\n",
"\n",
"# Оценка системы\n",
"results = []\n",
"for sqft, bath, actual_price in test_data:\n",
" try:\n",
" inferred_price = fuzzy_inference(sqft, bath)\n",
" results.append((sqft, bath, actual_price, inferred_price))\n",
" except ValueError as e:\n",
" print(f\"Ошибка для sqft_living={sqft}, bathrooms={bath}: {e}\")\n",
"\n",
"# Вывод результатов\n",
"print(\"\\nРезультаты оценки:\")\n",
"print(\"Sqft Living | Bathrooms | Actual Price | Inferred Price\")\n",
"for sqft, bath, actual_price, inferred_price in results:\n",
" print(f\"{sqft:11} | {bath:9} | {actual_price:12} | {inferred_price:.2f}\")\n",
"\n",
"# Вычисление метрик качества\n",
"if results:\n",
" actual_prices = [actual for _, _, actual, _ in results]\n",
" inferred_prices = [inferred for _, _, _, inferred in results]\n",
"\n",
" mae = np.mean(np.abs(np.array(actual_prices) - np.array(inferred_prices)))\n",
" rmse = np.sqrt(np.mean((np.array(actual_prices) - np.array(inferred_prices)) ** 2))\n",
"\n",
" print(f\"\\nСредняя абсолютная ошибка (MAE): {mae:.2f}\")\n",
" print(f\"Среднеквадратичная ошибка (RMSE): {rmse:.2f}\")\n",
"else:\n",
" print(\"Нет результатов для оценки.\")"
]
},
{
"cell_type": "code",
2025-02-22 13:13:44 +04:00
"execution_count": 52,
2025-02-22 12:49:13 +04:00
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Результаты оценки:\n",
"Sqft Living | Bathrooms | Actual Price | Inferred Price\n",
2025-02-22 13:13:44 +04:00
" 2000 | 2 | 300000 | 1984083.54\n",
" 4000 | 3 | 500000 | 4204191.69\n",
" 6000 | 4 | 700000 | 4097704.42\n",
" 8000 | 5 | 900000 | 4128330.12\n",
2025-02-22 12:49:13 +04:00
"\n",
2025-02-22 13:13:44 +04:00
"Средняя абсолютная ошибка (MAE): 3003577.44\n",
"Среднеквадратичная ошибка (RMSE): 3103372.52\n"
2025-02-22 12:49:13 +04:00
]
},
{
"data": {
2025-02-22 13:13:44 +04:00
"image/png": "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
2025-02-22 12:49:13 +04:00
"text/plain": [
"<Figure size 1000x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"\n",
"# Вывод результатов\n",
"print(\"\\nРезультаты оценки:\")\n",
"print(\"Sqft Living | Bathrooms | Actual Price | Inferred Price\")\n",
"for sqft, bath, actual_price, inferred_price in results:\n",
" print(f\"{sqft:11} | {bath:9} | {actual_price:12} | {inferred_price:.2f}\")\n",
"\n",
"# Вычисление метрик качества\n",
"if results:\n",
" actual_prices = [actual for _, _, actual, _ in results]\n",
" inferred_prices = [inferred for _, _, _, inferred in results]\n",
"\n",
" mae = np.mean(np.abs(np.array(actual_prices) - np.array(inferred_prices)))\n",
" rmse = np.sqrt(np.mean((np.array(actual_prices) - np.array(inferred_prices)) ** 2))\n",
"\n",
" print(f\"\\nСредняя абсолютная ошибка (MAE): {mae:.2f}\")\n",
" print(f\"Среднеквадратичная ошибка (RMSE): {rmse:.2f}\")\n",
"\n",
" # Построение графика\n",
" plt.figure(figsize=(10, 6))\n",
" plt.plot(actual_prices, label=\"Фактические значения\", marker='o', linestyle='-', color='blue')\n",
" plt.plot(inferred_prices, label=\"Предсказанные значения\", marker='x', linestyle='--', color='red')\n",
" plt.title(\"Сравнение фактических и предсказанных значений цены\")\n",
" plt.xlabel(\"Тестовые примеры\")\n",
" plt.ylabel(\"Цена\")\n",
" plt.legend()\n",
" plt.grid(True)\n",
" plt.show()\n",
"else:\n",
" print(\"Нет результатов для оценки.\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "aimenv",
"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.12.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}