1341 lines
303 KiB
Plaintext
1341 lines
303 KiB
Plaintext
|
{
|
|||
|
"cells": [
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"# импортируем либы"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 221,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"import pandas as pd\n",
|
|||
|
"import re\n",
|
|||
|
"import numpy as np\n",
|
|||
|
"import skfuzzy as fuzz\n",
|
|||
|
"import skfuzzy.control as ctrl\n",
|
|||
|
"import matplotlib.pyplot as plt"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"# загржаем данные"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 222,
|
|||
|
"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>ID</th>\n",
|
|||
|
" <th>Price</th>\n",
|
|||
|
" <th>Levy</th>\n",
|
|||
|
" <th>Manufacturer</th>\n",
|
|||
|
" <th>Model</th>\n",
|
|||
|
" <th>Prod. year</th>\n",
|
|||
|
" <th>Category</th>\n",
|
|||
|
" <th>Leather interior</th>\n",
|
|||
|
" <th>Fuel type</th>\n",
|
|||
|
" <th>Engine volume</th>\n",
|
|||
|
" <th>Mileage</th>\n",
|
|||
|
" <th>Cylinders</th>\n",
|
|||
|
" <th>Gear box type</th>\n",
|
|||
|
" <th>Drive wheels</th>\n",
|
|||
|
" <th>Doors</th>\n",
|
|||
|
" <th>Wheel</th>\n",
|
|||
|
" <th>Color</th>\n",
|
|||
|
" <th>Airbags</th>\n",
|
|||
|
" </tr>\n",
|
|||
|
" </thead>\n",
|
|||
|
" <tbody>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>0</th>\n",
|
|||
|
" <td>45654403</td>\n",
|
|||
|
" <td>13328</td>\n",
|
|||
|
" <td>1399</td>\n",
|
|||
|
" <td>LEXUS</td>\n",
|
|||
|
" <td>RX 450</td>\n",
|
|||
|
" <td>2010</td>\n",
|
|||
|
" <td>Jeep</td>\n",
|
|||
|
" <td>Yes</td>\n",
|
|||
|
" <td>Hybrid</td>\n",
|
|||
|
" <td>3.5</td>\n",
|
|||
|
" <td>186005 km</td>\n",
|
|||
|
" <td>6.0</td>\n",
|
|||
|
" <td>Automatic</td>\n",
|
|||
|
" <td>4x4</td>\n",
|
|||
|
" <td>04-May</td>\n",
|
|||
|
" <td>Left wheel</td>\n",
|
|||
|
" <td>Silver</td>\n",
|
|||
|
" <td>12</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>1</th>\n",
|
|||
|
" <td>44731507</td>\n",
|
|||
|
" <td>16621</td>\n",
|
|||
|
" <td>1018</td>\n",
|
|||
|
" <td>CHEVROLET</td>\n",
|
|||
|
" <td>Equinox</td>\n",
|
|||
|
" <td>2011</td>\n",
|
|||
|
" <td>Jeep</td>\n",
|
|||
|
" <td>No</td>\n",
|
|||
|
" <td>Petrol</td>\n",
|
|||
|
" <td>3</td>\n",
|
|||
|
" <td>192000 km</td>\n",
|
|||
|
" <td>6.0</td>\n",
|
|||
|
" <td>Tiptronic</td>\n",
|
|||
|
" <td>4x4</td>\n",
|
|||
|
" <td>04-May</td>\n",
|
|||
|
" <td>Left wheel</td>\n",
|
|||
|
" <td>Black</td>\n",
|
|||
|
" <td>8</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>2</th>\n",
|
|||
|
" <td>45774419</td>\n",
|
|||
|
" <td>8467</td>\n",
|
|||
|
" <td>-</td>\n",
|
|||
|
" <td>HONDA</td>\n",
|
|||
|
" <td>FIT</td>\n",
|
|||
|
" <td>2006</td>\n",
|
|||
|
" <td>Hatchback</td>\n",
|
|||
|
" <td>No</td>\n",
|
|||
|
" <td>Petrol</td>\n",
|
|||
|
" <td>1.3</td>\n",
|
|||
|
" <td>200000 km</td>\n",
|
|||
|
" <td>4.0</td>\n",
|
|||
|
" <td>Variator</td>\n",
|
|||
|
" <td>Front</td>\n",
|
|||
|
" <td>04-May</td>\n",
|
|||
|
" <td>Right-hand drive</td>\n",
|
|||
|
" <td>Black</td>\n",
|
|||
|
" <td>2</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>3</th>\n",
|
|||
|
" <td>45769185</td>\n",
|
|||
|
" <td>3607</td>\n",
|
|||
|
" <td>862</td>\n",
|
|||
|
" <td>FORD</td>\n",
|
|||
|
" <td>Escape</td>\n",
|
|||
|
" <td>2011</td>\n",
|
|||
|
" <td>Jeep</td>\n",
|
|||
|
" <td>Yes</td>\n",
|
|||
|
" <td>Hybrid</td>\n",
|
|||
|
" <td>2.5</td>\n",
|
|||
|
" <td>168966 km</td>\n",
|
|||
|
" <td>4.0</td>\n",
|
|||
|
" <td>Automatic</td>\n",
|
|||
|
" <td>4x4</td>\n",
|
|||
|
" <td>04-May</td>\n",
|
|||
|
" <td>Left wheel</td>\n",
|
|||
|
" <td>White</td>\n",
|
|||
|
" <td>0</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>4</th>\n",
|
|||
|
" <td>45809263</td>\n",
|
|||
|
" <td>11726</td>\n",
|
|||
|
" <td>446</td>\n",
|
|||
|
" <td>HONDA</td>\n",
|
|||
|
" <td>FIT</td>\n",
|
|||
|
" <td>2014</td>\n",
|
|||
|
" <td>Hatchback</td>\n",
|
|||
|
" <td>Yes</td>\n",
|
|||
|
" <td>Petrol</td>\n",
|
|||
|
" <td>1.3</td>\n",
|
|||
|
" <td>91901 km</td>\n",
|
|||
|
" <td>4.0</td>\n",
|
|||
|
" <td>Automatic</td>\n",
|
|||
|
" <td>Front</td>\n",
|
|||
|
" <td>04-May</td>\n",
|
|||
|
" <td>Left wheel</td>\n",
|
|||
|
" <td>Silver</td>\n",
|
|||
|
" <td>4</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" </tbody>\n",
|
|||
|
"</table>\n",
|
|||
|
"</div>"
|
|||
|
],
|
|||
|
"text/plain": [
|
|||
|
" ID Price Levy Manufacturer Model Prod. year Category \\\n",
|
|||
|
"0 45654403 13328 1399 LEXUS RX 450 2010 Jeep \n",
|
|||
|
"1 44731507 16621 1018 CHEVROLET Equinox 2011 Jeep \n",
|
|||
|
"2 45774419 8467 - HONDA FIT 2006 Hatchback \n",
|
|||
|
"3 45769185 3607 862 FORD Escape 2011 Jeep \n",
|
|||
|
"4 45809263 11726 446 HONDA FIT 2014 Hatchback \n",
|
|||
|
"\n",
|
|||
|
" Leather interior Fuel type Engine volume Mileage Cylinders \\\n",
|
|||
|
"0 Yes Hybrid 3.5 186005 km 6.0 \n",
|
|||
|
"1 No Petrol 3 192000 km 6.0 \n",
|
|||
|
"2 No Petrol 1.3 200000 km 4.0 \n",
|
|||
|
"3 Yes Hybrid 2.5 168966 km 4.0 \n",
|
|||
|
"4 Yes Petrol 1.3 91901 km 4.0 \n",
|
|||
|
"\n",
|
|||
|
" Gear box type Drive wheels Doors Wheel Color Airbags \n",
|
|||
|
"0 Automatic 4x4 04-May Left wheel Silver 12 \n",
|
|||
|
"1 Tiptronic 4x4 04-May Left wheel Black 8 \n",
|
|||
|
"2 Variator Front 04-May Right-hand drive Black 2 \n",
|
|||
|
"3 Automatic 4x4 04-May Left wheel White 0 \n",
|
|||
|
"4 Automatic Front 04-May Left wheel Silver 4 "
|
|||
|
]
|
|||
|
},
|
|||
|
"execution_count": 222,
|
|||
|
"metadata": {},
|
|||
|
"output_type": "execute_result"
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"df = pd.read_csv(\"..//static//csv//car_price_prediction.csv\", sep=\",\")\n",
|
|||
|
"df.head()"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"# небольшая обработка данных"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 223,
|
|||
|
"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>ID</th>\n",
|
|||
|
" <th>Price</th>\n",
|
|||
|
" <th>Levy</th>\n",
|
|||
|
" <th>Manufacturer</th>\n",
|
|||
|
" <th>Model</th>\n",
|
|||
|
" <th>Prod. year</th>\n",
|
|||
|
" <th>Category</th>\n",
|
|||
|
" <th>Leather interior</th>\n",
|
|||
|
" <th>Fuel type</th>\n",
|
|||
|
" <th>Engine volume</th>\n",
|
|||
|
" <th>Mileage</th>\n",
|
|||
|
" <th>Cylinders</th>\n",
|
|||
|
" <th>Gear box type</th>\n",
|
|||
|
" <th>Drive wheels</th>\n",
|
|||
|
" <th>Doors</th>\n",
|
|||
|
" <th>Wheel</th>\n",
|
|||
|
" <th>Color</th>\n",
|
|||
|
" <th>Airbags</th>\n",
|
|||
|
" </tr>\n",
|
|||
|
" </thead>\n",
|
|||
|
" <tbody>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>0</th>\n",
|
|||
|
" <td>45654403</td>\n",
|
|||
|
" <td>13328</td>\n",
|
|||
|
" <td>1399</td>\n",
|
|||
|
" <td>LEXUS</td>\n",
|
|||
|
" <td>RX 450</td>\n",
|
|||
|
" <td>2010</td>\n",
|
|||
|
" <td>Jeep</td>\n",
|
|||
|
" <td>Yes</td>\n",
|
|||
|
" <td>Hybrid</td>\n",
|
|||
|
" <td>3.5</td>\n",
|
|||
|
" <td>186005</td>\n",
|
|||
|
" <td>6.0</td>\n",
|
|||
|
" <td>Automatic</td>\n",
|
|||
|
" <td>4x4</td>\n",
|
|||
|
" <td>04-May</td>\n",
|
|||
|
" <td>Left wheel</td>\n",
|
|||
|
" <td>Silver</td>\n",
|
|||
|
" <td>12</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>1</th>\n",
|
|||
|
" <td>44731507</td>\n",
|
|||
|
" <td>16621</td>\n",
|
|||
|
" <td>1018</td>\n",
|
|||
|
" <td>CHEVROLET</td>\n",
|
|||
|
" <td>Equinox</td>\n",
|
|||
|
" <td>2011</td>\n",
|
|||
|
" <td>Jeep</td>\n",
|
|||
|
" <td>No</td>\n",
|
|||
|
" <td>Petrol</td>\n",
|
|||
|
" <td>3.0</td>\n",
|
|||
|
" <td>192000</td>\n",
|
|||
|
" <td>6.0</td>\n",
|
|||
|
" <td>Tiptronic</td>\n",
|
|||
|
" <td>4x4</td>\n",
|
|||
|
" <td>04-May</td>\n",
|
|||
|
" <td>Left wheel</td>\n",
|
|||
|
" <td>Black</td>\n",
|
|||
|
" <td>8</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>2</th>\n",
|
|||
|
" <td>45774419</td>\n",
|
|||
|
" <td>8467</td>\n",
|
|||
|
" <td>-</td>\n",
|
|||
|
" <td>HONDA</td>\n",
|
|||
|
" <td>FIT</td>\n",
|
|||
|
" <td>2006</td>\n",
|
|||
|
" <td>Hatchback</td>\n",
|
|||
|
" <td>No</td>\n",
|
|||
|
" <td>Petrol</td>\n",
|
|||
|
" <td>1.3</td>\n",
|
|||
|
" <td>200000</td>\n",
|
|||
|
" <td>4.0</td>\n",
|
|||
|
" <td>Variator</td>\n",
|
|||
|
" <td>Front</td>\n",
|
|||
|
" <td>04-May</td>\n",
|
|||
|
" <td>Right-hand drive</td>\n",
|
|||
|
" <td>Black</td>\n",
|
|||
|
" <td>2</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>3</th>\n",
|
|||
|
" <td>45769185</td>\n",
|
|||
|
" <td>3607</td>\n",
|
|||
|
" <td>862</td>\n",
|
|||
|
" <td>FORD</td>\n",
|
|||
|
" <td>Escape</td>\n",
|
|||
|
" <td>2011</td>\n",
|
|||
|
" <td>Jeep</td>\n",
|
|||
|
" <td>Yes</td>\n",
|
|||
|
" <td>Hybrid</td>\n",
|
|||
|
" <td>2.5</td>\n",
|
|||
|
" <td>168966</td>\n",
|
|||
|
" <td>4.0</td>\n",
|
|||
|
" <td>Automatic</td>\n",
|
|||
|
" <td>4x4</td>\n",
|
|||
|
" <td>04-May</td>\n",
|
|||
|
" <td>Left wheel</td>\n",
|
|||
|
" <td>White</td>\n",
|
|||
|
" <td>0</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>4</th>\n",
|
|||
|
" <td>45809263</td>\n",
|
|||
|
" <td>11726</td>\n",
|
|||
|
" <td>446</td>\n",
|
|||
|
" <td>HONDA</td>\n",
|
|||
|
" <td>FIT</td>\n",
|
|||
|
" <td>2014</td>\n",
|
|||
|
" <td>Hatchback</td>\n",
|
|||
|
" <td>Yes</td>\n",
|
|||
|
" <td>Petrol</td>\n",
|
|||
|
" <td>1.3</td>\n",
|
|||
|
" <td>91901</td>\n",
|
|||
|
" <td>4.0</td>\n",
|
|||
|
" <td>Automatic</td>\n",
|
|||
|
" <td>Front</td>\n",
|
|||
|
" <td>04-May</td>\n",
|
|||
|
" <td>Left wheel</td>\n",
|
|||
|
" <td>Silver</td>\n",
|
|||
|
" <td>4</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" </tbody>\n",
|
|||
|
"</table>\n",
|
|||
|
"</div>"
|
|||
|
],
|
|||
|
"text/plain": [
|
|||
|
" ID Price Levy Manufacturer Model Prod. year Category \\\n",
|
|||
|
"0 45654403 13328 1399 LEXUS RX 450 2010 Jeep \n",
|
|||
|
"1 44731507 16621 1018 CHEVROLET Equinox 2011 Jeep \n",
|
|||
|
"2 45774419 8467 - HONDA FIT 2006 Hatchback \n",
|
|||
|
"3 45769185 3607 862 FORD Escape 2011 Jeep \n",
|
|||
|
"4 45809263 11726 446 HONDA FIT 2014 Hatchback \n",
|
|||
|
"\n",
|
|||
|
" Leather interior Fuel type Engine volume Mileage Cylinders Gear box type \\\n",
|
|||
|
"0 Yes Hybrid 3.5 186005 6.0 Automatic \n",
|
|||
|
"1 No Petrol 3.0 192000 6.0 Tiptronic \n",
|
|||
|
"2 No Petrol 1.3 200000 4.0 Variator \n",
|
|||
|
"3 Yes Hybrid 2.5 168966 4.0 Automatic \n",
|
|||
|
"4 Yes Petrol 1.3 91901 4.0 Automatic \n",
|
|||
|
"\n",
|
|||
|
" Drive wheels Doors Wheel Color Airbags \n",
|
|||
|
"0 4x4 04-May Left wheel Silver 12 \n",
|
|||
|
"1 4x4 04-May Left wheel Black 8 \n",
|
|||
|
"2 Front 04-May Right-hand drive Black 2 \n",
|
|||
|
"3 4x4 04-May Left wheel White 0 \n",
|
|||
|
"4 Front 04-May Left wheel Silver 4 "
|
|||
|
]
|
|||
|
},
|
|||
|
"execution_count": 223,
|
|||
|
"metadata": {},
|
|||
|
"output_type": "execute_result"
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"df['Mileage'] = df['Mileage'].str.replace(' km', '').str.replace(',', '')\n",
|
|||
|
"df['Mileage'] = df['Mileage'].astype(int)\n",
|
|||
|
"df['Engine volume'] = df['Engine volume'].apply(lambda x: float(re.match(r'\\d+(\\.\\d+)?', x).group()) if isinstance(x, str) else x)\n",
|
|||
|
"df.head()"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"# Выбор входных и выходных переменных\n",
|
|||
|
"Перед тем как строить нечеткую систему, нужно определить, какие переменные будут входными, а какие – выходными. \n",
|
|||
|
" \n",
|
|||
|
"### Входные переменные (fuzzy inputs):\n",
|
|||
|
"- Prod. year (год выпуска) – влияет на цену машины.\n",
|
|||
|
"- Mileage (пробег) – чем выше пробег, тем дешевле машина.\n",
|
|||
|
" \n",
|
|||
|
"### Выходная переменная (fuzzy output):\n",
|
|||
|
"- Price (цена) – оцениваемая стоимость автомобиля."
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"# Настройка лингвистических переменных \n",
|
|||
|
"Определяем, какие термы будут у каждой переменной, их тип (например, треугольные или гауссовые функции принадлежности) и параметры. \n",
|
|||
|
" \n",
|
|||
|
"### Продолжительность эксплуатации (Prod. year)\n",
|
|||
|
"- Старый (Old)\n",
|
|||
|
"- Средний (Medium)\n",
|
|||
|
"- Новый (New)\n",
|
|||
|
" \n",
|
|||
|
"### Пробег (Mileage)\n",
|
|||
|
"- Маленький (Low)\n",
|
|||
|
"- Средний (Medium)\n",
|
|||
|
"- Большой (High)\n",
|
|||
|
" \n",
|
|||
|
"### Цена (Price)\n",
|
|||
|
"- Дешевая (Cheap)\n",
|
|||
|
"- Средняя (Medium)\n",
|
|||
|
"- Дорогая (Expensive)"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 224,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"pryMin, pryMax = df['Prod. year'].quantile(0.01), df['Prod. year'].quantile(0.97)\n",
|
|||
|
"milMin, milMax = df['Mileage'].quantile(0.01), df['Mileage'].quantile(0.80)\n",
|
|||
|
"priMin, priMax = df['Price'].quantile(0.01), df['Price'].quantile(0.97)\n",
|
|||
|
"\n",
|
|||
|
"# Определяем диапазоны переменных\n",
|
|||
|
"prod_year = np.arange(pryMin, pryMax, 1) # Годы выпуска\n",
|
|||
|
"mileage = np.arange(milMin, milMax, 1) # Пробег\n",
|
|||
|
"price = np.arange(priMin, priMax, 1) # Цена\n",
|
|||
|
"\n",
|
|||
|
"# Определение переменных\n",
|
|||
|
"prod_year_ctrl = ctrl.Antecedent(prod_year, 'prod_year')\n",
|
|||
|
"mileage_ctrl = ctrl.Antecedent(mileage, 'mileage')\n",
|
|||
|
"price_ctrl = ctrl.Consequent(price, 'price')"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"# Настраиваем функции принадлежности"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 225,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stderr",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"d:\\МИИ\\AIM-PIbd-31-Kouvshinoff-T-A\\laba\\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": [
|
|||
|
"# Функции принадлежности\n",
|
|||
|
"pryMid = (pryMin+pryMax)/2\n",
|
|||
|
"prod_year_ctrl['old'] = fuzz.trimf(prod_year, [pryMin, pryMin, pryMax])\n",
|
|||
|
"prod_year_ctrl['medium'] = fuzz.trimf(prod_year, [pryMin, pryMid, pryMax])\n",
|
|||
|
"prod_year_ctrl['new'] = fuzz.trimf(prod_year, [pryMin, pryMax, pryMax])\n",
|
|||
|
"\n",
|
|||
|
"milMid = (milMin+milMax)/2\n",
|
|||
|
"mileage_ctrl['low'] = fuzz.trimf(mileage, [milMin, milMin, milMax])\n",
|
|||
|
"mileage_ctrl['medium'] = fuzz.trimf(mileage, [milMin, milMid, milMax])\n",
|
|||
|
"mileage_ctrl['high'] = fuzz.trimf(mileage, [milMin, milMax, milMax])\n",
|
|||
|
"\n",
|
|||
|
"priMid = (priMin+priMax)/2\n",
|
|||
|
"price_ctrl['cheap'] = fuzz.trimf(price, [priMin, priMin, priMax])\n",
|
|||
|
"price_ctrl['medium'] = fuzz.trimf(price, [priMin, priMid, priMax])\n",
|
|||
|
"price_ctrl['expensive'] = fuzz.trimf(price, [priMin, priMax, priMax])\n",
|
|||
|
"\n",
|
|||
|
"# визуализируем\n",
|
|||
|
"prod_year_ctrl.view()\n",
|
|||
|
"mileage_ctrl.view()\n",
|
|||
|
"price_ctrl.view()"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"# Формирование базы нечетких правил\n",
|
|||
|
"Создаем логические зависимости между входными и выходными переменными. \n",
|
|||
|
" \n",
|
|||
|
"### правила: \n",
|
|||
|
"1. Если машина старая и пробег высокий, то цена дешевая.\n",
|
|||
|
"2. Если машина средняя по возрасту и пробег средний, то цена средняя.\n",
|
|||
|
"3. Если машина новая и пробег маленький, то цена дорогая."
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 226,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"# Определение правил\n",
|
|||
|
"rule1 = ctrl.Rule(prod_year_ctrl['old'] & mileage_ctrl['high'], price_ctrl['cheap'])\n",
|
|||
|
"rule2 = ctrl.Rule(prod_year_ctrl['medium'] & mileage_ctrl['medium'], price_ctrl['medium'])\n",
|
|||
|
"rule3 = ctrl.Rule(prod_year_ctrl['new'] & mileage_ctrl['low'], price_ctrl['expensive'])\n",
|
|||
|
"\n",
|
|||
|
"# Создаем систему\n",
|
|||
|
"price_control = ctrl.ControlSystem([rule1, rule2, rule3])\n",
|
|||
|
"price_simulation = ctrl.ControlSystemSimulation(price_control)"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 227,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stderr",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"d:\\МИИ\\AIM-PIbd-31-Kouvshinoff-T-A\\laba\\Lib\\site-packages\\skfuzzy\\control\\controlsystem.py:135: 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"
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"price_control.view()"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"# Оценка качества нечеткой системы\n",
|
|||
|
"Чтобы проверить работу модели, можно подать тестовые данные и посмотреть, как система определяет цену. \n"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 228,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"=============\n",
|
|||
|
" Antecedents \n",
|
|||
|
"=============\n",
|
|||
|
"Antecedent: prod_year = 2014\n",
|
|||
|
" - old : 0.17391304347826086\n",
|
|||
|
" - medium : 0.34782608695652173\n",
|
|||
|
" - new : 0.8260869565217391\n",
|
|||
|
"Antecedent: mileage = 65000\n",
|
|||
|
" - low : 0.6826171875\n",
|
|||
|
" - medium : 0.634765625\n",
|
|||
|
" - high : 0.3173828125\n",
|
|||
|
"\n",
|
|||
|
"=======\n",
|
|||
|
" Rules \n",
|
|||
|
"=======\n",
|
|||
|
"RULE #0:\n",
|
|||
|
" IF prod_year[old] AND mileage[high] THEN price[cheap]\n",
|
|||
|
"\tAND aggregation function : fmin\n",
|
|||
|
"\tOR aggregation function : fmax\n",
|
|||
|
"\n",
|
|||
|
" Aggregation (IF-clause):\n",
|
|||
|
" - prod_year[old] : 0.17391304347826086\n",
|
|||
|
" - mileage[high] : 0.3173828125\n",
|
|||
|
" prod_year[old] AND mileage[high] = 0.17391304347826086\n",
|
|||
|
" Activation (THEN-clause):\n",
|
|||
|
" price[cheap] : 0.17391304347826086\n",
|
|||
|
"\n",
|
|||
|
"RULE #1:\n",
|
|||
|
" IF prod_year[medium] AND mileage[medium] THEN price[medium]\n",
|
|||
|
"\tAND aggregation function : fmin\n",
|
|||
|
"\tOR aggregation function : fmax\n",
|
|||
|
"\n",
|
|||
|
" Aggregation (IF-clause):\n",
|
|||
|
" - prod_year[medium] : 0.34782608695652173\n",
|
|||
|
" - mileage[medium] : 0.634765625\n",
|
|||
|
" prod_year[medium] AND mileage[medium] = 0.34782608695652173\n",
|
|||
|
" Activation (THEN-clause):\n",
|
|||
|
" price[medium] : 0.34782608695652173\n",
|
|||
|
"\n",
|
|||
|
"RULE #2:\n",
|
|||
|
" IF prod_year[new] AND mileage[low] THEN price[expensive]\n",
|
|||
|
"\tAND aggregation function : fmin\n",
|
|||
|
"\tOR aggregation function : fmax\n",
|
|||
|
"\n",
|
|||
|
" Aggregation (IF-clause):\n",
|
|||
|
" - prod_year[new] : 0.8260869565217391\n",
|
|||
|
" - mileage[low] : 0.6826171875\n",
|
|||
|
" prod_year[new] AND mileage[low] = 0.6826171875\n",
|
|||
|
" Activation (THEN-clause):\n",
|
|||
|
" price[expensive] : 0.6826171875\n",
|
|||
|
"\n",
|
|||
|
"\n",
|
|||
|
"==============================\n",
|
|||
|
" Intermediaries and Conquests \n",
|
|||
|
"==============================\n",
|
|||
|
"Consequent: price = 34672.486956500354\n",
|
|||
|
" cheap:\n",
|
|||
|
" Accumulate using accumulation_max : 0.17391304347826086\n",
|
|||
|
" medium:\n",
|
|||
|
" Accumulate using accumulation_max : 0.34782608695652173\n",
|
|||
|
" expensive:\n",
|
|||
|
" Accumulate using accumulation_max : 0.6826171875\n",
|
|||
|
"\n",
|
|||
|
"=============\n",
|
|||
|
" Antecedents \n",
|
|||
|
"=============\n",
|
|||
|
"Antecedent: prod_year = 1997\n",
|
|||
|
" - old : 0.9130434782608695\n",
|
|||
|
" - medium : 0.17391304347826086\n",
|
|||
|
" - new : 0.08695652173913043\n",
|
|||
|
"Antecedent: mileage = 3333\n",
|
|||
|
" - low : 0.9837255859375\n",
|
|||
|
" - medium : 0.032548828125\n",
|
|||
|
" - high : 0.0162744140625\n",
|
|||
|
"\n",
|
|||
|
"=======\n",
|
|||
|
" Rules \n",
|
|||
|
"=======\n",
|
|||
|
"RULE #0:\n",
|
|||
|
" IF prod_year[old] AND mileage[high] THEN price[cheap]\n",
|
|||
|
"\tAND aggregation function : fmin\n",
|
|||
|
"\tOR aggregation function : fmax\n",
|
|||
|
"\n",
|
|||
|
" Aggregation (IF-clause):\n",
|
|||
|
" - prod_year[old] : 0.9130434782608695\n",
|
|||
|
" - mileage[high] : 0.0162744140625\n",
|
|||
|
" prod_year[old] AND mileage[high] = 0.0162744140625\n",
|
|||
|
" Activation (THEN-clause):\n",
|
|||
|
" price[cheap] : 0.0162744140625\n",
|
|||
|
"\n",
|
|||
|
"RULE #1:\n",
|
|||
|
" IF prod_year[medium] AND mileage[medium] THEN price[medium]\n",
|
|||
|
"\tAND aggregation function : fmin\n",
|
|||
|
"\tOR aggregation function : fmax\n",
|
|||
|
"\n",
|
|||
|
" Aggregation (IF-clause):\n",
|
|||
|
" - prod_year[medium] : 0.17391304347826086\n",
|
|||
|
" - mileage[medium] : 0.032548828125\n",
|
|||
|
" prod_year[medium] AND mileage[medium] = 0.032548828125\n",
|
|||
|
" Activation (THEN-clause):\n",
|
|||
|
" price[medium] : 0.032548828125\n",
|
|||
|
"\n",
|
|||
|
"RULE #2:\n",
|
|||
|
" IF prod_year[new] AND mileage[low] THEN price[expensive]\n",
|
|||
|
"\tAND aggregation function : fmin\n",
|
|||
|
"\tOR aggregation function : fmax\n",
|
|||
|
"\n",
|
|||
|
" Aggregation (IF-clause):\n",
|
|||
|
" - prod_year[new] : 0.08695652173913043\n",
|
|||
|
" - mileage[low] : 0.9837255859375\n",
|
|||
|
" prod_year[new] AND mileage[low] = 0.08695652173913043\n",
|
|||
|
" Activation (THEN-clause):\n",
|
|||
|
" price[expensive] : 0.08695652173913043\n",
|
|||
|
"\n",
|
|||
|
"\n",
|
|||
|
"==============================\n",
|
|||
|
" Intermediaries and Conquests \n",
|
|||
|
"==============================\n",
|
|||
|
"Consequent: price = 29886.929593320383\n",
|
|||
|
" cheap:\n",
|
|||
|
" Accumulate using accumulation_max : 0.0162744140625\n",
|
|||
|
" medium:\n",
|
|||
|
" Accumulate using accumulation_max : 0.032548828125\n",
|
|||
|
" expensive:\n",
|
|||
|
" Accumulate using accumulation_max : 0.08695652173913043\n",
|
|||
|
"\n",
|
|||
|
"=============\n",
|
|||
|
" Antecedents \n",
|
|||
|
"=============\n",
|
|||
|
"Antecedent: prod_year = 1996\n",
|
|||
|
" - old : 0.9565217391304348\n",
|
|||
|
" - medium : 0.08695652173913043\n",
|
|||
|
" - new : 0.043478260869565216\n",
|
|||
|
"Antecedent: mileage = 204799.0\n",
|
|||
|
" - low : 4.8828125e-06\n",
|
|||
|
" - medium : 9.765625e-06\n",
|
|||
|
" - high : 0.9999951171875\n",
|
|||
|
"\n",
|
|||
|
"=======\n",
|
|||
|
" Rules \n",
|
|||
|
"=======\n",
|
|||
|
"RULE #0:\n",
|
|||
|
" IF prod_year[old] AND mileage[high] THEN price[cheap]\n",
|
|||
|
"\tAND aggregation function : fmin\n",
|
|||
|
"\tOR aggregation function : fmax\n",
|
|||
|
"\n",
|
|||
|
" Aggregation (IF-clause):\n",
|
|||
|
" - prod_year[old] : 0.9565217391304348\n",
|
|||
|
" - mileage[high] : 0.9999951171875\n",
|
|||
|
" prod_year[old] AND mileage[high] = 0.9565217391304348\n",
|
|||
|
" Activation (THEN-clause):\n",
|
|||
|
" price[cheap] : 0.9565217391304348\n",
|
|||
|
"\n",
|
|||
|
"RULE #1:\n",
|
|||
|
" IF prod_year[medium] AND mileage[medium] THEN price[medium]\n",
|
|||
|
"\tAND aggregation function : fmin\n",
|
|||
|
"\tOR aggregation function : fmax\n",
|
|||
|
"\n",
|
|||
|
" Aggregation (IF-clause):\n",
|
|||
|
" - prod_year[medium] : 0.08695652173913043\n",
|
|||
|
" - mileage[medium] : 9.765625e-06\n",
|
|||
|
" prod_year[medium] AND mileage[medium] = 9.765625e-06\n",
|
|||
|
" Activation (THEN-clause):\n",
|
|||
|
" price[medium] : 9.765625e-06\n",
|
|||
|
"\n",
|
|||
|
"RULE #2:\n",
|
|||
|
" IF prod_year[new] AND mileage[low] THEN price[expensive]\n",
|
|||
|
"\tAND aggregation function : fmin\n",
|
|||
|
"\tOR aggregation function : fmax\n",
|
|||
|
"\n",
|
|||
|
" Aggregation (IF-clause):\n",
|
|||
|
" - prod_year[new] : 0.043478260869565216\n",
|
|||
|
" - mileage[low] : 4.8828125e-06\n",
|
|||
|
" prod_year[new] AND mileage[low] = 4.8828125e-06\n",
|
|||
|
" Activation (THEN-clause):\n",
|
|||
|
" price[expensive] : 4.8828125e-06\n",
|
|||
|
"\n",
|
|||
|
"\n",
|
|||
|
"==============================\n",
|
|||
|
" Intermediaries and Conquests \n",
|
|||
|
"==============================\n",
|
|||
|
"Consequent: price = 19231.588786899956\n",
|
|||
|
" cheap:\n",
|
|||
|
" Accumulate using accumulation_max : 0.9565217391304348\n",
|
|||
|
" medium:\n",
|
|||
|
" Accumulate using accumulation_max : 9.765625e-06\n",
|
|||
|
" expensive:\n",
|
|||
|
" Accumulate using accumulation_max : 4.8828125e-06\n",
|
|||
|
"\n",
|
|||
|
"=============\n",
|
|||
|
" Antecedents \n",
|
|||
|
"=============\n",
|
|||
|
"Antecedent: prod_year = 2014\n",
|
|||
|
" - old : 0.17391304347826086\n",
|
|||
|
" - medium : 0.34782608695652173\n",
|
|||
|
" - new : 0.8260869565217391\n",
|
|||
|
"Antecedent: mileage = 132756\n",
|
|||
|
" - low : 0.35177734375\n",
|
|||
|
" - medium : 0.7035546875\n",
|
|||
|
" - high : 0.64822265625\n",
|
|||
|
"\n",
|
|||
|
"=======\n",
|
|||
|
" Rules \n",
|
|||
|
"=======\n",
|
|||
|
"RULE #0:\n",
|
|||
|
" IF prod_year[old] AND mileage[high] THEN price[cheap]\n",
|
|||
|
"\tAND aggregation function : fmin\n",
|
|||
|
"\tOR aggregation function : fmax\n",
|
|||
|
"\n",
|
|||
|
" Aggregation (IF-clause):\n",
|
|||
|
" - prod_year[old] : 0.17391304347826086\n",
|
|||
|
" - mileage[high] : 0.64822265625\n",
|
|||
|
" prod_year[old] AND mileage[high] = 0.17391304347826086\n",
|
|||
|
" Activation (THEN-clause):\n",
|
|||
|
" price[cheap] : 0.17391304347826086\n",
|
|||
|
"\n",
|
|||
|
"RULE #1:\n",
|
|||
|
" IF prod_year[medium] AND mileage[medium] THEN price[medium]\n",
|
|||
|
"\tAND aggregation function : fmin\n",
|
|||
|
"\tOR aggregation function : fmax\n",
|
|||
|
"\n",
|
|||
|
" Aggregation (IF-clause):\n",
|
|||
|
" - prod_year[medium] : 0.34782608695652173\n",
|
|||
|
" - mileage[medium] : 0.7035546875\n",
|
|||
|
" prod_year[medium] AND mileage[medium] = 0.34782608695652173\n",
|
|||
|
" Activation (THEN-clause):\n",
|
|||
|
" price[medium] : 0.34782608695652173\n",
|
|||
|
"\n",
|
|||
|
"RULE #2:\n",
|
|||
|
" IF prod_year[new] AND mileage[low] THEN price[expensive]\n",
|
|||
|
"\tAND aggregation function : fmin\n",
|
|||
|
"\tOR aggregation function : fmax\n",
|
|||
|
"\n",
|
|||
|
" Aggregation (IF-clause):\n",
|
|||
|
" - prod_year[new] : 0.8260869565217391\n",
|
|||
|
" - mileage[low] : 0.35177734375\n",
|
|||
|
" prod_year[new] AND mileage[low] = 0.35177734375\n",
|
|||
|
" Activation (THEN-clause):\n",
|
|||
|
" price[expensive] : 0.35177734375\n",
|
|||
|
"\n",
|
|||
|
"\n",
|
|||
|
"==============================\n",
|
|||
|
" Intermediaries and Conquests \n",
|
|||
|
"==============================\n",
|
|||
|
"Consequent: price = 30570.849313951137\n",
|
|||
|
" cheap:\n",
|
|||
|
" Accumulate using accumulation_max : 0.17391304347826086\n",
|
|||
|
" medium:\n",
|
|||
|
" Accumulate using accumulation_max : 0.34782608695652173\n",
|
|||
|
" expensive:\n",
|
|||
|
" Accumulate using accumulation_max : 0.35177734375\n",
|
|||
|
"\n",
|
|||
|
"=============\n",
|
|||
|
" Antecedents \n",
|
|||
|
"=============\n",
|
|||
|
"Antecedent: prod_year = 2017\n",
|
|||
|
" - old : 0.043478260869565216\n",
|
|||
|
" - medium : 0.08695652173913043\n",
|
|||
|
" - new : 0.9565217391304348\n",
|
|||
|
"Antecedent: mileage = 50750\n",
|
|||
|
" - low : 0.752197265625\n",
|
|||
|
" - medium : 0.49560546875\n",
|
|||
|
" - high : 0.247802734375\n",
|
|||
|
"\n",
|
|||
|
"=======\n",
|
|||
|
" Rules \n",
|
|||
|
"=======\n",
|
|||
|
"RULE #0:\n",
|
|||
|
" IF prod_year[old] AND mileage[high] THEN price[cheap]\n",
|
|||
|
"\tAND aggregation function : fmin\n",
|
|||
|
"\tOR aggregation function : fmax\n",
|
|||
|
"\n",
|
|||
|
" Aggregation (IF-clause):\n",
|
|||
|
" - prod_year[old] : 0.043478260869565216\n",
|
|||
|
" - mileage[high] : 0.247802734375\n",
|
|||
|
" prod_year[old] AND mileage[high] = 0.043478260869565216\n",
|
|||
|
" Activation (THEN-clause):\n",
|
|||
|
" price[cheap] : 0.043478260869565216\n",
|
|||
|
"\n",
|
|||
|
"RULE #1:\n",
|
|||
|
" IF prod_year[medium] AND mileage[medium] THEN price[medium]\n",
|
|||
|
"\tAND aggregation function : fmin\n",
|
|||
|
"\tOR aggregation function : fmax\n",
|
|||
|
"\n",
|
|||
|
" Aggregation (IF-clause):\n",
|
|||
|
" - prod_year[medium] : 0.08695652173913043\n",
|
|||
|
" - mileage[medium] : 0.49560546875\n",
|
|||
|
" prod_year[medium] AND mileage[medium] = 0.08695652173913043\n",
|
|||
|
" Activation (THEN-clause):\n",
|
|||
|
" price[medium] : 0.08695652173913043\n",
|
|||
|
"\n",
|
|||
|
"RULE #2:\n",
|
|||
|
" IF prod_year[new] AND mileage[low] THEN price[expensive]\n",
|
|||
|
"\tAND aggregation function : fmin\n",
|
|||
|
"\tOR aggregation function : fmax\n",
|
|||
|
"\n",
|
|||
|
" Aggregation (IF-clause):\n",
|
|||
|
" - prod_year[new] : 0.9565217391304348\n",
|
|||
|
" - mileage[low] : 0.752197265625\n",
|
|||
|
" prod_year[new] AND mileage[low] = 0.752197265625\n",
|
|||
|
" Activation (THEN-clause):\n",
|
|||
|
" price[expensive] : 0.752197265625\n",
|
|||
|
"\n",
|
|||
|
"\n",
|
|||
|
"==============================\n",
|
|||
|
" Intermediaries and Conquests \n",
|
|||
|
"==============================\n",
|
|||
|
"Consequent: price = 37229.16578375575\n",
|
|||
|
" cheap:\n",
|
|||
|
" Accumulate using accumulation_max : 0.043478260869565216\n",
|
|||
|
" medium:\n",
|
|||
|
" Accumulate using accumulation_max : 0.08695652173913043\n",
|
|||
|
" expensive:\n",
|
|||
|
" Accumulate using accumulation_max : 0.752197265625\n",
|
|||
|
"\n",
|
|||
|
"=============\n",
|
|||
|
" Antecedents \n",
|
|||
|
"=============\n",
|
|||
|
"Antecedent: prod_year = 2016\n",
|
|||
|
" - old : 0.08695652173913043\n",
|
|||
|
" - medium : 0.17391304347826086\n",
|
|||
|
" - new : 0.9130434782608695\n",
|
|||
|
"Antecedent: mileage = 57793\n",
|
|||
|
" - low : 0.7178076171875\n",
|
|||
|
" - medium : 0.564384765625\n",
|
|||
|
" - high : 0.2821923828125\n",
|
|||
|
"\n",
|
|||
|
"=======\n",
|
|||
|
" Rules \n",
|
|||
|
"=======\n",
|
|||
|
"RULE #0:\n",
|
|||
|
" IF prod_year[old] AND mileage[high] THEN price[cheap]\n",
|
|||
|
"\tAND aggregation function : fmin\n",
|
|||
|
"\tOR aggregation function : fmax\n",
|
|||
|
"\n",
|
|||
|
" Aggregation (IF-clause):\n",
|
|||
|
" - prod_year[old] : 0.08695652173913043\n",
|
|||
|
" - mileage[high] : 0.2821923828125\n",
|
|||
|
" prod_year[old] AND mileage[high] = 0.08695652173913043\n",
|
|||
|
" Activation (THEN-clause):\n",
|
|||
|
" price[cheap] : 0.08695652173913043\n",
|
|||
|
"\n",
|
|||
|
"RULE #1:\n",
|
|||
|
" IF prod_year[medium] AND mileage[medium] THEN price[medium]\n",
|
|||
|
"\tAND aggregation function : fmin\n",
|
|||
|
"\tOR aggregation function : fmax\n",
|
|||
|
"\n",
|
|||
|
" Aggregation (IF-clause):\n",
|
|||
|
" - prod_year[medium] : 0.17391304347826086\n",
|
|||
|
" - mileage[medium] : 0.564384765625\n",
|
|||
|
" prod_year[medium] AND mileage[medium] = 0.17391304347826086\n",
|
|||
|
" Activation (THEN-clause):\n",
|
|||
|
" price[medium] : 0.17391304347826086\n",
|
|||
|
"\n",
|
|||
|
"RULE #2:\n",
|
|||
|
" IF prod_year[new] AND mileage[low] THEN price[expensive]\n",
|
|||
|
"\tAND aggregation function : fmin\n",
|
|||
|
"\tOR aggregation function : fmax\n",
|
|||
|
"\n",
|
|||
|
" Aggregation (IF-clause):\n",
|
|||
|
" - prod_year[new] : 0.9130434782608695\n",
|
|||
|
" - mileage[low] : 0.7178076171875\n",
|
|||
|
" prod_year[new] AND mileage[low] = 0.7178076171875\n",
|
|||
|
" Activation (THEN-clause):\n",
|
|||
|
" price[expensive] : 0.7178076171875\n",
|
|||
|
"\n",
|
|||
|
"\n",
|
|||
|
"==============================\n",
|
|||
|
" Intermediaries and Conquests \n",
|
|||
|
"==============================\n",
|
|||
|
"Consequent: price = 36495.78569319686\n",
|
|||
|
" cheap:\n",
|
|||
|
" Accumulate using accumulation_max : 0.08695652173913043\n",
|
|||
|
" medium:\n",
|
|||
|
" Accumulate using accumulation_max : 0.17391304347826086\n",
|
|||
|
" expensive:\n",
|
|||
|
" Accumulate using accumulation_max : 0.7178076171875\n",
|
|||
|
"\n",
|
|||
|
"=============\n",
|
|||
|
" Antecedents \n",
|
|||
|
"=============\n",
|
|||
|
"Antecedent: prod_year = 2012\n",
|
|||
|
" - old : 0.2608695652173913\n",
|
|||
|
" - medium : 0.5217391304347826\n",
|
|||
|
" - new : 0.7391304347826086\n",
|
|||
|
"Antecedent: mileage = 127000\n",
|
|||
|
" - low : 0.3798828125\n",
|
|||
|
" - medium : 0.759765625\n",
|
|||
|
" - high : 0.6201171875\n",
|
|||
|
"\n",
|
|||
|
"=======\n",
|
|||
|
" Rules \n",
|
|||
|
"=======\n",
|
|||
|
"RULE #0:\n",
|
|||
|
" IF prod_year[old] AND mileage[high] THEN price[cheap]\n",
|
|||
|
"\tAND aggregation function : fmin\n",
|
|||
|
"\tOR aggregation function : fmax\n",
|
|||
|
"\n",
|
|||
|
" Aggregation (IF-clause):\n",
|
|||
|
" - prod_year[old] : 0.2608695652173913\n",
|
|||
|
" - mileage[high] : 0.6201171875\n",
|
|||
|
" prod_year[old] AND mileage[high] = 0.2608695652173913\n",
|
|||
|
" Activation (THEN-clause):\n",
|
|||
|
" price[cheap] : 0.2608695652173913\n",
|
|||
|
"\n",
|
|||
|
"RULE #1:\n",
|
|||
|
" IF prod_year[medium] AND mileage[medium] THEN price[medium]\n",
|
|||
|
"\tAND aggregation function : fmin\n",
|
|||
|
"\tOR aggregation function : fmax\n",
|
|||
|
"\n",
|
|||
|
" Aggregation (IF-clause):\n",
|
|||
|
" - prod_year[medium] : 0.5217391304347826\n",
|
|||
|
" - mileage[medium] : 0.759765625\n",
|
|||
|
" prod_year[medium] AND mileage[medium] = 0.5217391304347826\n",
|
|||
|
" Activation (THEN-clause):\n",
|
|||
|
" price[medium] : 0.5217391304347826\n",
|
|||
|
"\n",
|
|||
|
"RULE #2:\n",
|
|||
|
" IF prod_year[new] AND mileage[low] THEN price[expensive]\n",
|
|||
|
"\tAND aggregation function : fmin\n",
|
|||
|
"\tOR aggregation function : fmax\n",
|
|||
|
"\n",
|
|||
|
" Aggregation (IF-clause):\n",
|
|||
|
" - prod_year[new] : 0.7391304347826086\n",
|
|||
|
" - mileage[low] : 0.3798828125\n",
|
|||
|
" prod_year[new] AND mileage[low] = 0.3798828125\n",
|
|||
|
" Activation (THEN-clause):\n",
|
|||
|
" price[expensive] : 0.3798828125\n",
|
|||
|
"\n",
|
|||
|
"\n",
|
|||
|
"==============================\n",
|
|||
|
" Intermediaries and Conquests \n",
|
|||
|
"==============================\n",
|
|||
|
"Consequent: price = 29818.63714214192\n",
|
|||
|
" cheap:\n",
|
|||
|
" Accumulate using accumulation_max : 0.2608695652173913\n",
|
|||
|
" medium:\n",
|
|||
|
" Accumulate using accumulation_max : 0.5217391304347826\n",
|
|||
|
" expensive:\n",
|
|||
|
" Accumulate using accumulation_max : 0.3798828125\n",
|
|||
|
"\n",
|
|||
|
"=============\n",
|
|||
|
" Antecedents \n",
|
|||
|
"=============\n",
|
|||
|
"Antecedent: prod_year = 2011\n",
|
|||
|
" - old : 0.30434782608695654\n",
|
|||
|
" - medium : 0.6086956521739131\n",
|
|||
|
" - new : 0.6956521739130435\n",
|
|||
|
"Antecedent: mileage = 110000\n",
|
|||
|
" - low : 0.462890625\n",
|
|||
|
" - medium : 0.92578125\n",
|
|||
|
" - high : 0.537109375\n",
|
|||
|
"\n",
|
|||
|
"=======\n",
|
|||
|
" Rules \n",
|
|||
|
"=======\n",
|
|||
|
"RULE #0:\n",
|
|||
|
" IF prod_year[old] AND mileage[high] THEN price[cheap]\n",
|
|||
|
"\tAND aggregation function : fmin\n",
|
|||
|
"\tOR aggregation function : fmax\n",
|
|||
|
"\n",
|
|||
|
" Aggregation (IF-clause):\n",
|
|||
|
" - prod_year[old] : 0.30434782608695654\n",
|
|||
|
" - mileage[high] : 0.537109375\n",
|
|||
|
" prod_year[old] AND mileage[high] = 0.30434782608695654\n",
|
|||
|
" Activation (THEN-clause):\n",
|
|||
|
" price[cheap] : 0.30434782608695654\n",
|
|||
|
"\n",
|
|||
|
"RULE #1:\n",
|
|||
|
" IF prod_year[medium] AND mileage[medium] THEN price[medium]\n",
|
|||
|
"\tAND aggregation function : fmin\n",
|
|||
|
"\tOR aggregation function : fmax\n",
|
|||
|
"\n",
|
|||
|
" Aggregation (IF-clause):\n",
|
|||
|
" - prod_year[medium] : 0.6086956521739131\n",
|
|||
|
" - mileage[medium] : 0.92578125\n",
|
|||
|
" prod_year[medium] AND mileage[medium] = 0.6086956521739131\n",
|
|||
|
" Activation (THEN-clause):\n",
|
|||
|
" price[medium] : 0.6086956521739131\n",
|
|||
|
"\n",
|
|||
|
"RULE #2:\n",
|
|||
|
" IF prod_year[new] AND mileage[low] THEN price[expensive]\n",
|
|||
|
"\tAND aggregation function : fmin\n",
|
|||
|
"\tOR aggregation function : fmax\n",
|
|||
|
"\n",
|
|||
|
" Aggregation (IF-clause):\n",
|
|||
|
" - prod_year[new] : 0.6956521739130435\n",
|
|||
|
" - mileage[low] : 0.462890625\n",
|
|||
|
" prod_year[new] AND mileage[low] = 0.462890625\n",
|
|||
|
" Activation (THEN-clause):\n",
|
|||
|
" price[expensive] : 0.462890625\n",
|
|||
|
"\n",
|
|||
|
"\n",
|
|||
|
"==============================\n",
|
|||
|
" Intermediaries and Conquests \n",
|
|||
|
"==============================\n",
|
|||
|
"Consequent: price = 30179.402125805926\n",
|
|||
|
" cheap:\n",
|
|||
|
" Accumulate using accumulation_max : 0.30434782608695654\n",
|
|||
|
" medium:\n",
|
|||
|
" Accumulate using accumulation_max : 0.6086956521739131\n",
|
|||
|
" expensive:\n",
|
|||
|
" Accumulate using accumulation_max : 0.462890625\n",
|
|||
|
"\n",
|
|||
|
"=============\n",
|
|||
|
" Antecedents \n",
|
|||
|
"=============\n",
|
|||
|
"Antecedent: prod_year = 2001\n",
|
|||
|
" - old : 0.7391304347826086\n",
|
|||
|
" - medium : 0.5217391304347826\n",
|
|||
|
" - new : 0.2608695652173913\n",
|
|||
|
"Antecedent: mileage = 91000\n",
|
|||
|
" - low : 0.5556640625\n",
|
|||
|
" - medium : 0.888671875\n",
|
|||
|
" - high : 0.4443359375\n",
|
|||
|
"\n",
|
|||
|
"=======\n",
|
|||
|
" Rules \n",
|
|||
|
"=======\n",
|
|||
|
"RULE #0:\n",
|
|||
|
" IF prod_year[old] AND mileage[high] THEN price[cheap]\n",
|
|||
|
"\tAND aggregation function : fmin\n",
|
|||
|
"\tOR aggregation function : fmax\n",
|
|||
|
"\n",
|
|||
|
" Aggregation (IF-clause):\n",
|
|||
|
" - prod_year[old] : 0.7391304347826086\n",
|
|||
|
" - mileage[high] : 0.4443359375\n",
|
|||
|
" prod_year[old] AND mileage[high] = 0.4443359375\n",
|
|||
|
" Activation (THEN-clause):\n",
|
|||
|
" price[cheap] : 0.4443359375\n",
|
|||
|
"\n",
|
|||
|
"RULE #1:\n",
|
|||
|
" IF prod_year[medium] AND mileage[medium] THEN price[medium]\n",
|
|||
|
"\tAND aggregation function : fmin\n",
|
|||
|
"\tOR aggregation function : fmax\n",
|
|||
|
"\n",
|
|||
|
" Aggregation (IF-clause):\n",
|
|||
|
" - prod_year[medium] : 0.5217391304347826\n",
|
|||
|
" - mileage[medium] : 0.888671875\n",
|
|||
|
" prod_year[medium] AND mileage[medium] = 0.5217391304347826\n",
|
|||
|
" Activation (THEN-clause):\n",
|
|||
|
" price[medium] : 0.5217391304347826\n",
|
|||
|
"\n",
|
|||
|
"RULE #2:\n",
|
|||
|
" IF prod_year[new] AND mileage[low] THEN price[expensive]\n",
|
|||
|
"\tAND aggregation function : fmin\n",
|
|||
|
"\tOR aggregation function : fmax\n",
|
|||
|
"\n",
|
|||
|
" Aggregation (IF-clause):\n",
|
|||
|
" - prod_year[new] : 0.2608695652173913\n",
|
|||
|
" - mileage[low] : 0.5556640625\n",
|
|||
|
" prod_year[new] AND mileage[low] = 0.2608695652173913\n",
|
|||
|
" Activation (THEN-clause):\n",
|
|||
|
" price[expensive] : 0.2608695652173913\n",
|
|||
|
"\n",
|
|||
|
"\n",
|
|||
|
"==============================\n",
|
|||
|
" Intermediaries and Conquests \n",
|
|||
|
"==============================\n",
|
|||
|
"Consequent: price = 27087.484832983348\n",
|
|||
|
" cheap:\n",
|
|||
|
" Accumulate using accumulation_max : 0.4443359375\n",
|
|||
|
" medium:\n",
|
|||
|
" Accumulate using accumulation_max : 0.5217391304347826\n",
|
|||
|
" expensive:\n",
|
|||
|
" Accumulate using accumulation_max : 0.2608695652173913\n",
|
|||
|
"\n",
|
|||
|
"=============\n",
|
|||
|
" Antecedents \n",
|
|||
|
"=============\n",
|
|||
|
"Antecedent: prod_year = 2010\n",
|
|||
|
" - old : 0.34782608695652173\n",
|
|||
|
" - medium : 0.6956521739130435\n",
|
|||
|
" - new : 0.6521739130434783\n",
|
|||
|
"Antecedent: mileage = 160000\n",
|
|||
|
" - low : 0.21875\n",
|
|||
|
" - medium : 0.4375\n",
|
|||
|
" - high : 0.78125\n",
|
|||
|
"\n",
|
|||
|
"=======\n",
|
|||
|
" Rules \n",
|
|||
|
"=======\n",
|
|||
|
"RULE #0:\n",
|
|||
|
" IF prod_year[old] AND mileage[high] THEN price[cheap]\n",
|
|||
|
"\tAND aggregation function : fmin\n",
|
|||
|
"\tOR aggregation function : fmax\n",
|
|||
|
"\n",
|
|||
|
" Aggregation (IF-clause):\n",
|
|||
|
" - prod_year[old] : 0.34782608695652173\n",
|
|||
|
" - mileage[high] : 0.78125\n",
|
|||
|
" prod_year[old] AND mileage[high] = 0.34782608695652173\n",
|
|||
|
" Activation (THEN-clause):\n",
|
|||
|
" price[cheap] : 0.34782608695652173\n",
|
|||
|
"\n",
|
|||
|
"RULE #1:\n",
|
|||
|
" IF prod_year[medium] AND mileage[medium] THEN price[medium]\n",
|
|||
|
"\tAND aggregation function : fmin\n",
|
|||
|
"\tOR aggregation function : fmax\n",
|
|||
|
"\n",
|
|||
|
" Aggregation (IF-clause):\n",
|
|||
|
" - prod_year[medium] : 0.6956521739130435\n",
|
|||
|
" - mileage[medium] : 0.4375\n",
|
|||
|
" prod_year[medium] AND mileage[medium] = 0.4375\n",
|
|||
|
" Activation (THEN-clause):\n",
|
|||
|
" price[medium] : 0.4375\n",
|
|||
|
"\n",
|
|||
|
"RULE #2:\n",
|
|||
|
" IF prod_year[new] AND mileage[low] THEN price[expensive]\n",
|
|||
|
"\tAND aggregation function : fmin\n",
|
|||
|
"\tOR aggregation function : fmax\n",
|
|||
|
"\n",
|
|||
|
" Aggregation (IF-clause):\n",
|
|||
|
" - prod_year[new] : 0.6521739130434783\n",
|
|||
|
" - mileage[low] : 0.21875\n",
|
|||
|
" prod_year[new] AND mileage[low] = 0.21875\n",
|
|||
|
" Activation (THEN-clause):\n",
|
|||
|
" price[expensive] : 0.21875\n",
|
|||
|
"\n",
|
|||
|
"\n",
|
|||
|
"==============================\n",
|
|||
|
" Intermediaries and Conquests \n",
|
|||
|
"==============================\n",
|
|||
|
"Consequent: price = 27601.96605738856\n",
|
|||
|
" cheap:\n",
|
|||
|
" Accumulate using accumulation_max : 0.34782608695652173\n",
|
|||
|
" medium:\n",
|
|||
|
" Accumulate using accumulation_max : 0.4375\n",
|
|||
|
" expensive:\n",
|
|||
|
" Accumulate using accumulation_max : 0.21875\n",
|
|||
|
"\n",
|
|||
|
" Prod. year Mileage Price Predicted Price\n",
|
|||
|
"1 1997 3333 10349 29886.929593\n",
|
|||
|
"8 2001 91000 10820 27087.484833\n",
|
|||
|
"7 2011 110000 12858 30179.402126\n",
|
|||
|
"9 2010 160000 15367 27601.966057\n",
|
|||
|
"6 2012 127000 18817 29818.637142\n",
|
|||
|
"0 2014 65000 27284 34672.486957\n",
|
|||
|
"3 2014 132756 38737 30570.849314\n",
|
|||
|
"2 1996 212485 40769 19231.588787\n",
|
|||
|
"4 2017 50750 42102 37229.165784\n",
|
|||
|
"5 2016 57793 42400 36495.785693\n"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"data": {
|
|||
|
"image/png": "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
|
|||
|
"text/plain": [
|
|||
|
"<Figure size 1000x500 with 1 Axes>"
|
|||
|
]
|
|||
|
},
|
|||
|
"metadata": {},
|
|||
|
"output_type": "display_data"
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"# Выбираем случайные 10 записей для тестирования\n",
|
|||
|
"sample_df = df[['Prod. year', 'Mileage', 'Price']].sample(10, random_state=42)\n",
|
|||
|
"sample_df = sample_df.reset_index(drop=True)\n",
|
|||
|
"\n",
|
|||
|
"predicted_prices = []\n",
|
|||
|
"\n",
|
|||
|
"for i in range(len(sample_df)):\n",
|
|||
|
" price_simulation.input['prod_year'] = sample_df.loc[i, 'Prod. year']\n",
|
|||
|
" price_simulation.input['mileage'] = sample_df.loc[i, 'Mileage']\n",
|
|||
|
" price_simulation.compute()\n",
|
|||
|
" a = price_simulation.print_state()\n",
|
|||
|
" predicted_prices.append(price_simulation.output['price'])\n",
|
|||
|
"\n",
|
|||
|
"sample_df['Predicted Price'] = predicted_prices\n",
|
|||
|
"sample_df_sorted = sample_df.sort_values(by='Price')\n",
|
|||
|
"\n",
|
|||
|
"\n",
|
|||
|
"# Вывод результатов\n",
|
|||
|
"print(sample_df_sorted[['Prod. year', 'Mileage', 'Price', 'Predicted Price']])\n",
|
|||
|
"\n",
|
|||
|
"# Визуализация\n",
|
|||
|
"plt.figure(figsize=(10, 5))\n",
|
|||
|
"plt.plot(sample_df.index, sample_df_sorted['Price'], marker='o', label='Real Price', color='blue')\n",
|
|||
|
"plt.plot(sample_df.index, sample_df_sorted['Predicted Price'], marker='s', label='Predicted Price', color='red')\n",
|
|||
|
"plt.xlabel(\"Sample Index\")\n",
|
|||
|
"plt.ylabel(\"Price\")\n",
|
|||
|
"plt.legend()\n",
|
|||
|
"plt.title(\"Сравнение реальных и предсказанных цен\")\n",
|
|||
|
"plt.show()"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"Система ужасно предсказывает цену, не может предсказать ни большую цену ни маленькую, потому что она хорошо предсказывает категорию, но цену по категории не может"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"metadata": {
|
|||
|
"kernelspec": {
|
|||
|
"display_name": "laba",
|
|||
|
"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.6"
|
|||
|
}
|
|||
|
},
|
|||
|
"nbformat": 4,
|
|||
|
"nbformat_minor": 2
|
|||
|
}
|