2025-02-07 18:39:13 +04:00
{
"cells": [
{
"cell_type": "code",
2025-02-07 18:42:54 +04:00
"execution_count": null,
2025-02-07 18:39:13 +04:00
"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": 119,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas as pd\n",
"\n",
"df = pd.read_csv(\"../data/kc_house_data.csv\")\n",
"df = df[~df['bedrooms'].between(10, 34)]\n",
"\n",
"df.columns"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Определим входные и выходные переменные\n",
"\n",
"Входные Х : col_bedrooms(кол-во спален) и sqft_living(жилплощадь)\n",
"\n",
"Выходные Y: price(цена дома)\n",
"\n",
"#### Создадим лингвистические переменные"
]
},
{
"cell_type": "code",
"execution_count": 120,
"metadata": {},
"outputs": [],
"source": [
"import skfuzzy as fuzz\n",
"from skfuzzy import control as ctrl\n",
"\n",
"col_bedrooms = ctrl.Antecedent(df[\"bedrooms\"].sort_values(), \"col_bedrooms\")\n",
"sqft_living = ctrl.Antecedent(df[\"sqft_living\"].sort_values(), \"sqft_living\")\n",
"price = ctrl.Consequent(df[\"price\"].sort_values(), \"price\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Формирование нечетких переменных для лингвистических переменных и их визуализация"
]
},
{
"cell_type": "code",
"execution_count": 121,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"d:\\Study\\3 курс 5 семестр\\AIM\\AIM-PIbd-31-Yakovlev-M-G\\kernel\\Lib\\site-packages\\skfuzzy\\control\\fuzzyvariable.py:125: UserWarning: FigureCanvasAgg is non-interactive, and thus cannot be shown\n",
" fig.show()\n"
]
},
{
"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"
}
],
"source": [
"col_bedrooms['low'] = fuzz.zmf(col_bedrooms.universe, 0,4)\n",
"col_bedrooms['medium'] = fuzz.trapmf(col_bedrooms.universe, [1, 4, 5, 8])\n",
"col_bedrooms['high'] = fuzz.trimf(col_bedrooms.universe, [5,9,9])\n",
"col_bedrooms.view()\n",
"\n",
"sqft_living['low'] = fuzz.zmf(sqft_living.universe, 0, 6000)\n",
"sqft_living['medium'] = fuzz.trapmf(sqft_living.universe, [3400, 5500, 7800, 9640])\n",
"sqft_living['high'] = fuzz.trimf(sqft_living.universe, [8000, 13540,13540])\n",
"sqft_living.view()\n",
"\n",
"# price['low'] = fuzz.zmf(price.universe, 0, 2000000)\n",
"# price['medium'] = fuzz.trapmf(price.universe, [2000000, 3000000, 4000000, 5500000])\n",
"# price['high'] = fuzz.smf(price.universe, 5000000, 7700000)\n",
"price.automf(5, variable_type=\"quant\")\n",
"price.view()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Формирование и визуализация базы нечетких правил"
]
},
{
"cell_type": "code",
"execution_count": 122,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(<Figure size 640x480 with 1 Axes>, <Axes: >)"
]
},
"execution_count": 122,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#col_bedrooms sqft_living price\n",
"rule1 = ctrl.Rule(col_bedrooms['low'] & sqft_living['low'], price['lower'])\n",
"rule2 = ctrl.Rule(col_bedrooms['low'] & sqft_living['medium'], price['low'])\n",
"rule3 = ctrl.Rule(col_bedrooms['low'] & sqft_living['high'], price['average'])\n",
"rule4 = ctrl.Rule(col_bedrooms['medium'] & sqft_living['low'], price['lower'])\n",
"rule5 = ctrl.Rule(col_bedrooms['medium'] & sqft_living['medium'], price['average'])\n",
"rule6 = ctrl.Rule(col_bedrooms['medium'] & sqft_living['high'], price['high'])\n",
"rule7 = ctrl.Rule(col_bedrooms['high'] & sqft_living['low'], price['average'])\n",
"rule8 = ctrl.Rule(col_bedrooms['high'] & sqft_living['medium'], price['high'])\n",
"rule9 = ctrl.Rule(col_bedrooms['high'] & sqft_living['high'], price['higher'])\n",
"\n",
"rule1.view()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Создание нечеткой системы и добавление нечетких правил в базу знаний нечеткой системы"
]
},
{
"cell_type": "code",
"execution_count": 123,
"metadata": {},
"outputs": [],
"source": [
"price_ctrl = ctrl.ControlSystem(\n",
" [\n",
" rule1,\n",
" rule2,\n",
" rule3,\n",
" rule4,\n",
" rule5,\n",
" rule6,\n",
" rule7,\n",
" rule8,\n",
" rule9,\n",
" ]\n",
")\n",
"\n",
"prices = ctrl.ControlSystemSimulation(price_ctrl)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Пример расчета выходной переменной price на основе входных переменных col_bedrooms и sqft_living"
]
},
{
"cell_type": "code",
"execution_count": 124,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"=============\n",
" Antecedents \n",
"=============\n",
"Antecedent: col_bedrooms = 3\n",
" - low : 0.125\n",
" - medium : 0.6666666666666666\n",
" - high : 0.0\n",
"Antecedent: sqft_living = 2570\n",
" - low : 0.6330611111111111\n",
" - medium : 0.0\n",
" - high : 0.0\n",
"\n",
"=======\n",
" Rules \n",
"=======\n",
"RULE #0:\n",
" IF col_bedrooms[low] AND sqft_living[low] THEN price[lower]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - col_bedrooms[low] : 0.125\n",
" - sqft_living[low] : 0.6330611111111111\n",
" col_bedrooms[low] AND sqft_living[low] = 0.125\n",
" Activation (THEN-clause):\n",
" price[lower] : 0.125\n",
"\n",
"RULE #1:\n",
" IF col_bedrooms[low] AND sqft_living[medium] THEN price[low]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - col_bedrooms[low] : 0.125\n",
" - sqft_living[medium] : 0.0\n",
" col_bedrooms[low] AND sqft_living[medium] = 0.0\n",
" Activation (THEN-clause):\n",
" price[low] : 0.0\n",
"\n",
"RULE #2:\n",
" IF col_bedrooms[low] AND sqft_living[high] THEN price[average]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - col_bedrooms[low] : 0.125\n",
" - sqft_living[high] : 0.0\n",
" col_bedrooms[low] AND sqft_living[high] = 0.0\n",
" Activation (THEN-clause):\n",
" price[average] : 0.0\n",
"\n",
"RULE #3:\n",
" IF col_bedrooms[medium] AND sqft_living[low] THEN price[lower]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - col_bedrooms[medium] : 0.6666666666666666\n",
" - sqft_living[low] : 0.6330611111111111\n",
" col_bedrooms[medium] AND sqft_living[low] = 0.6330611111111111\n",
" Activation (THEN-clause):\n",
" price[lower] : 0.6330611111111111\n",
"\n",
"RULE #4:\n",
" IF col_bedrooms[medium] AND sqft_living[medium] THEN price[average]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - col_bedrooms[medium] : 0.6666666666666666\n",
" - sqft_living[medium] : 0.0\n",
" col_bedrooms[medium] AND sqft_living[medium] = 0.0\n",
" Activation (THEN-clause):\n",
" price[average] : 0.0\n",
"\n",
"RULE #5:\n",
" IF col_bedrooms[medium] AND sqft_living[high] THEN price[high]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - col_bedrooms[medium] : 0.6666666666666666\n",
" - sqft_living[high] : 0.0\n",
" col_bedrooms[medium] AND sqft_living[high] = 0.0\n",
" Activation (THEN-clause):\n",
" price[high] : 0.0\n",
"\n",
"RULE #6:\n",
" IF col_bedrooms[high] AND sqft_living[low] THEN price[average]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - col_bedrooms[high] : 0.0\n",
" - sqft_living[low] : 0.6330611111111111\n",
" col_bedrooms[high] AND sqft_living[low] = 0.0\n",
" Activation (THEN-clause):\n",
" price[average] : 0.0\n",
"\n",
"RULE #7:\n",
" IF col_bedrooms[high] AND sqft_living[medium] THEN price[high]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - col_bedrooms[high] : 0.0\n",
" - sqft_living[medium] : 0.0\n",
" col_bedrooms[high] AND sqft_living[medium] = 0.0\n",
" Activation (THEN-clause):\n",
" price[high] : 0.0\n",
"\n",
"RULE #8:\n",
" IF col_bedrooms[high] AND sqft_living[high] THEN price[higher]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - col_bedrooms[high] : 0.0\n",
" - sqft_living[high] : 0.0\n",
" col_bedrooms[high] AND sqft_living[high] = 0.0\n",
" Activation (THEN-clause):\n",
" price[higher] : 0.0\n",
"\n",
"\n",
"==============================\n",
" Intermediaries and Conquests \n",
"==============================\n",
"Consequent: price = 773008.5246688315\n",
" lower:\n",
" Accumulate using accumulation_max : 0.6330611111111111\n",
" low:\n",
" Accumulate using accumulation_max : 0.0\n",
" average:\n",
" Accumulate using accumulation_max : 0.0\n",
" high:\n",
" Accumulate using accumulation_max : 0.0\n",
" higher:\n",
" Accumulate using accumulation_max : 0.0\n",
"\n",
"773008.5246688315\n"
]
}
],
"source": [
"prices.input['col_bedrooms'] = 3\n",
"prices.input['sqft_living'] = 2570\n",
"prices.compute()\n",
"prices.print_state()\n",
"print(prices.output['price'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Тестирование нечеткой системы"
]
},
{
"cell_type": "code",
"execution_count": 125,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>bedrooms</th>\n",
" <th>sqft_living</th>\n",
" <th>price</th>\n",
" <th>Pred</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>3</td>\n",
" <td>1180</td>\n",
" <td>221900.0</td>\n",
" <td>7.633710e+05</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>3</td>\n",
" <td>2570</td>\n",
" <td>538000.0</td>\n",
" <td>7.730085e+05</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2</td>\n",
" <td>770</td>\n",
" <td>180000.0</td>\n",
" <td>8.163228e+05</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4</td>\n",
" <td>1960</td>\n",
" <td>604000.0</td>\n",
" <td>7.342715e+05</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>3</td>\n",
" <td>1680</td>\n",
" <td>510000.0</td>\n",
" <td>7.633710e+05</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>4</td>\n",
" <td>5420</td>\n",
" <td>1225000.0</td>\n",
" <td>3.907144e+06</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>3</td>\n",
" <td>1715</td>\n",
" <td>257500.0</td>\n",
" <td>7.633710e+05</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>3</td>\n",
" <td>1060</td>\n",
" <td>291850.0</td>\n",
" <td>7.633710e+05</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>3</td>\n",
" <td>1780</td>\n",
" <td>229500.0</td>\n",
" <td>7.633710e+05</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>3</td>\n",
" <td>1890</td>\n",
" <td>323000.0</td>\n",
" <td>7.633710e+05</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>3</td>\n",
" <td>3560</td>\n",
" <td>662500.0</td>\n",
" <td>2.194984e+06</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>2</td>\n",
" <td>1160</td>\n",
" <td>468000.0</td>\n",
" <td>8.163228e+05</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>3</td>\n",
" <td>1430</td>\n",
" <td>310000.0</td>\n",
" <td>7.633710e+05</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>3</td>\n",
" <td>1370</td>\n",
" <td>400000.0</td>\n",
" <td>7.633710e+05</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>5</td>\n",
" <td>1810</td>\n",
" <td>530000.0</td>\n",
" <td>7.282272e+05</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" bedrooms sqft_living price Pred\n",
"0 3 1180 221900.0 7.633710e+05\n",
"1 3 2570 538000.0 7.730085e+05\n",
"2 2 770 180000.0 8.163228e+05\n",
"3 4 1960 604000.0 7.342715e+05\n",
"4 3 1680 510000.0 7.633710e+05\n",
"5 4 5420 1225000.0 3.907144e+06\n",
"6 3 1715 257500.0 7.633710e+05\n",
"7 3 1060 291850.0 7.633710e+05\n",
"8 3 1780 229500.0 7.633710e+05\n",
"9 3 1890 323000.0 7.633710e+05\n",
"10 3 3560 662500.0 2.194984e+06\n",
"11 2 1160 468000.0 8.163228e+05\n",
"12 3 1430 310000.0 7.633710e+05\n",
"13 3 1370 400000.0 7.633710e+05\n",
"14 5 1810 530000.0 7.282272e+05"
]
},
"execution_count": 125,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def fuzzy_pred(row):\n",
" prices.input['col_bedrooms'] = row['bedrooms']\n",
" prices.input['sqft_living'] = row['sqft_living']\n",
" prices.compute()\n",
" return prices.output['price']\n",
"\n",
"res = df[['bedrooms', 'sqft_living', 'price']].head(100)\n",
"\n",
"res['Pred'] = res.apply(fuzzy_pred, axis=1)\n",
"\n",
"res.head(15)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Оценка результатов на основе метрик для задачи регрессии"
]
},
{
"cell_type": "code",
"execution_count": 126,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'RMSE': 648551.3362363386,\n",
" 'RMAE': 675.5893884070558,\n",
" 'R2': -3.582200641088188}"
]
},
"execution_count": 126,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import math\n",
"from sklearn import metrics\n",
"\n",
"\n",
"rmetrics = {}\n",
"rmetrics[\"RMSE\"] = math.sqrt(metrics.mean_squared_error(res['price'], res['Pred']))\n",
"rmetrics[\"RMAE\"] = math.sqrt(metrics.mean_absolute_error(res['price'], res['Pred']))\n",
"rmetrics[\"R2\"] = metrics.r2_score(res['price'], res['Pred'])\n",
"\n",
"rmetrics"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "kernel",
"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.13.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}