2377 lines
405 KiB
Plaintext
Raw Normal View History

2025-02-08 12:06:26 +04:00
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Начало лабораторной работы №7 #"
]
},
2025-02-08 13:36:03 +04:00
{
"cell_type": "code",
"execution_count": 119,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Index(['Unnamed: 0', 'Name', 'Brand', 'Model', 'Battery capacity (mAh)',\n",
" 'Screen size (inches)', 'Touchscreen', 'Resolution x', 'Resolution y',\n",
" 'Processor', 'RAM (MB)', 'Internal storage (GB)', 'Rear camera',\n",
" 'Front camera', 'Operating system', 'Wi-Fi', 'Bluetooth', 'GPS',\n",
" 'Number of SIMs', '3G', '4G/ LTE', 'Price'],\n",
" dtype='object')\n"
]
},
{
"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>Unnamed: 0</th>\n",
" <th>Name</th>\n",
" <th>Brand</th>\n",
" <th>Model</th>\n",
" <th>Battery capacity (mAh)</th>\n",
" <th>Screen size (inches)</th>\n",
" <th>Touchscreen</th>\n",
" <th>Resolution x</th>\n",
" <th>Resolution y</th>\n",
" <th>Processor</th>\n",
" <th>...</th>\n",
" <th>Rear camera</th>\n",
" <th>Front camera</th>\n",
" <th>Operating system</th>\n",
" <th>Wi-Fi</th>\n",
" <th>Bluetooth</th>\n",
" <th>GPS</th>\n",
" <th>Number of SIMs</th>\n",
" <th>3G</th>\n",
" <th>4G/ LTE</th>\n",
" <th>Price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" <td>OnePlus 7T Pro McLaren Edition</td>\n",
" <td>OnePlus</td>\n",
" <td>7T Pro McLaren Edition</td>\n",
" <td>4085</td>\n",
" <td>6.67</td>\n",
" <td>Yes</td>\n",
" <td>1440</td>\n",
" <td>3120</td>\n",
" <td>8</td>\n",
" <td>...</td>\n",
" <td>48.0</td>\n",
" <td>16.0</td>\n",
" <td>Android</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>2</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>58998</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>Realme X2 Pro</td>\n",
" <td>Realme</td>\n",
" <td>X2 Pro</td>\n",
" <td>4000</td>\n",
" <td>6.50</td>\n",
" <td>Yes</td>\n",
" <td>1080</td>\n",
" <td>2400</td>\n",
" <td>8</td>\n",
" <td>...</td>\n",
" <td>64.0</td>\n",
" <td>16.0</td>\n",
" <td>Android</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>2</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>27999</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2</td>\n",
" <td>iPhone 11 Pro Max</td>\n",
" <td>Apple</td>\n",
" <td>iPhone 11 Pro Max</td>\n",
" <td>3969</td>\n",
" <td>6.50</td>\n",
" <td>Yes</td>\n",
" <td>1242</td>\n",
" <td>2688</td>\n",
" <td>6</td>\n",
" <td>...</td>\n",
" <td>12.0</td>\n",
" <td>12.0</td>\n",
" <td>iOS</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>2</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>106900</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>3</td>\n",
" <td>iPhone 11</td>\n",
" <td>Apple</td>\n",
" <td>iPhone 11</td>\n",
" <td>3110</td>\n",
" <td>6.10</td>\n",
" <td>Yes</td>\n",
" <td>828</td>\n",
" <td>1792</td>\n",
" <td>6</td>\n",
" <td>...</td>\n",
" <td>12.0</td>\n",
" <td>12.0</td>\n",
" <td>iOS</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>2</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>62900</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>4</td>\n",
" <td>LG G8X ThinQ</td>\n",
" <td>LG</td>\n",
" <td>G8X ThinQ</td>\n",
" <td>4000</td>\n",
" <td>6.40</td>\n",
" <td>Yes</td>\n",
" <td>1080</td>\n",
" <td>2340</td>\n",
" <td>8</td>\n",
" <td>...</td>\n",
" <td>12.0</td>\n",
" <td>32.0</td>\n",
" <td>Android</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>1</td>\n",
" <td>No</td>\n",
" <td>No</td>\n",
" <td>49990</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 22 columns</p>\n",
"</div>"
],
"text/plain": [
" Unnamed: 0 Name Brand \\\n",
"0 0 OnePlus 7T Pro McLaren Edition OnePlus \n",
"1 1 Realme X2 Pro Realme \n",
"2 2 iPhone 11 Pro Max Apple \n",
"3 3 iPhone 11 Apple \n",
"4 4 LG G8X ThinQ LG \n",
"\n",
" Model Battery capacity (mAh) Screen size (inches) \\\n",
"0 7T Pro McLaren Edition 4085 6.67 \n",
"1 X2 Pro 4000 6.50 \n",
"2 iPhone 11 Pro Max 3969 6.50 \n",
"3 iPhone 11 3110 6.10 \n",
"4 G8X ThinQ 4000 6.40 \n",
"\n",
" Touchscreen Resolution x Resolution y Processor ... Rear camera \\\n",
"0 Yes 1440 3120 8 ... 48.0 \n",
"1 Yes 1080 2400 8 ... 64.0 \n",
"2 Yes 1242 2688 6 ... 12.0 \n",
"3 Yes 828 1792 6 ... 12.0 \n",
"4 Yes 1080 2340 8 ... 12.0 \n",
"\n",
" Front camera Operating system Wi-Fi Bluetooth GPS Number of SIMs 3G \\\n",
"0 16.0 Android Yes Yes Yes 2 Yes \n",
"1 16.0 Android Yes Yes Yes 2 Yes \n",
"2 12.0 iOS Yes Yes Yes 2 Yes \n",
"3 12.0 iOS Yes Yes Yes 2 Yes \n",
"4 32.0 Android Yes Yes Yes 1 No \n",
"\n",
" 4G/ LTE Price \n",
"0 Yes 58998 \n",
"1 Yes 27999 \n",
"2 Yes 106900 \n",
"3 Yes 62900 \n",
"4 No 49990 \n",
"\n",
"[5 rows x 22 columns]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import pandas as pd\n",
"df = pd.read_csv(\"..//static//csv//ndtv_data_final.csv\")\n",
"print(df.columns)\n",
"display(df.head())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"**Создание лингвистических переменных**\n",
"\n",
"Входные переменные: Battery capacity (mAh) (емкость батареи) и RAM (MB) (объем оперативной памяти). \\\n",
"Выходная переменная: Price (цена)."
]
},
{
"cell_type": "code",
"execution_count": 120,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"from skfuzzy import control as ctrl\n",
"\n",
"data = pd.read_csv(\"..//static//csv//ndtv_data_final.csv\")\n",
"\n",
"# Инициализация лингвистических переменных\n",
"battery_capacity = ctrl.Antecedent(np.arange(data['Battery capacity (mAh)'].min(), data['Battery capacity (mAh)'].max(), 100), \"battery_capacity\")\n",
"ram = ctrl.Antecedent(np.arange(data['RAM (MB)'].min(), data['RAM (MB)'].max(), 100), \"ram\")\n",
"price = ctrl.Consequent(np.arange(data['Price'].min(), data['Price'].max(), 10), \"price\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Формирование нечетких переменных для лингвистических переменных и их визуализация**"
]
},
{
"cell_type": "code",
"execution_count": 121,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\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": [
"import skfuzzy as fuzz\n",
"\n",
"battery_capacity['low'] = fuzz.zmf(battery_capacity.universe, 2000, 3000)\n",
"battery_capacity['average'] = fuzz.trapmf(battery_capacity.universe, [2000, 3000, 4000, 5000])\n",
"battery_capacity['high'] = fuzz.smf(battery_capacity.universe, 4000, 5000)\n",
"\n",
"ram['low'] = fuzz.zmf(ram.universe, 1000, 2000)\n",
"ram['average'] = fuzz.trapmf(ram.universe, [1000, 2000, 4000, 6000])\n",
"ram['high'] = fuzz.smf(ram.universe, 4000, 6000)\n",
"\n",
"price['low'] = fuzz.zmf(price.universe, 10000, 20000)\n",
"price['average'] = fuzz.trapmf(price.universe, [10000, 20000, 40000, 60000])\n",
"price['high'] = fuzz.smf(price.universe, 40000, 60000)\n",
"\n",
"battery_capacity.view()\n",
"ram.view()\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": [
"# Нечеткие правила\n",
"rule1 = ctrl.Rule(battery_capacity[\"low\"] & ram[\"low\"], price[\"low\"])\n",
"rule2 = ctrl.Rule(battery_capacity[\"low\"] & ram[\"average\"], price[\"low\"])\n",
"rule3 = ctrl.Rule(battery_capacity[\"low\"] & ram[\"high\"], price[\"average\"])\n",
"rule4 = ctrl.Rule(battery_capacity[\"average\"] & ram[\"low\"], price[\"low\"])\n",
"rule5 = ctrl.Rule(battery_capacity[\"average\"] & ram[\"average\"], price[\"average\"])\n",
"rule6 = ctrl.Rule(battery_capacity[\"average\"] & ram[\"high\"], price[\"high\"])\n",
"rule7 = ctrl.Rule(battery_capacity[\"high\"] & ram[\"low\"], price[\"average\"])\n",
"rule8 = ctrl.Rule(battery_capacity[\"high\"] & ram[\"average\"], price[\"high\"])\n",
"rule9 = ctrl.Rule(battery_capacity[\"high\"] & ram[\"high\"], price[\"high\"])\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",
"# Создание симулятора нечеткой системы\n",
"price_sim = ctrl.ControlSystemSimulation(price_ctrl)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Пример расчета выходной переменной influx на основе входных переменных level и flow** \\\n",
"Система также формирует подробный журнал выполнения процесса нечеткого логического вывода"
]
},
{
"cell_type": "code",
"execution_count": 124,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"=============\n",
" Antecedents \n",
"=============\n",
"Antecedent: battery_capacity = 4000\n",
" - low : 0.0\n",
" - average : 0.991\n",
" - high : 0.00017999999999999998\n",
"Antecedent: ram = 2000\n",
" - low : 0.0016588799999999997\n",
" - average : 0.9769599999999999\n",
" - high : 0.0\n",
"\n",
"=======\n",
" Rules \n",
"=======\n",
"RULE #0:\n",
" IF battery_capacity[low] AND ram[low] THEN price[low]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - battery_capacity[low] : 0.0\n",
" - ram[low] : 0.0016588799999999997\n",
" battery_capacity[low] AND ram[low] = 0.0\n",
" Activation (THEN-clause):\n",
" price[low] : 0.0\n",
"\n",
"RULE #1:\n",
" IF battery_capacity[low] AND ram[average] THEN price[low]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - battery_capacity[low] : 0.0\n",
" - ram[average] : 0.9769599999999999\n",
" battery_capacity[low] AND ram[average] = 0.0\n",
" Activation (THEN-clause):\n",
" price[low] : 0.0\n",
"\n",
"RULE #2:\n",
" IF battery_capacity[low] AND ram[high] THEN price[average]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - battery_capacity[low] : 0.0\n",
" - ram[high] : 0.0\n",
" battery_capacity[low] AND ram[high] = 0.0\n",
" Activation (THEN-clause):\n",
" price[average] : 0.0\n",
"\n",
"RULE #3:\n",
" IF battery_capacity[average] AND ram[low] THEN price[low]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - battery_capacity[average] : 0.991\n",
" - ram[low] : 0.0016588799999999997\n",
" battery_capacity[average] AND ram[low] = 0.0016588799999999997\n",
" Activation (THEN-clause):\n",
" price[low] : 0.0016588799999999997\n",
"\n",
"RULE #4:\n",
" IF battery_capacity[average] AND ram[average] THEN price[average]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - battery_capacity[average] : 0.991\n",
" - ram[average] : 0.9769599999999999\n",
" battery_capacity[average] AND ram[average] = 0.9769599999999999\n",
" Activation (THEN-clause):\n",
" price[average] : 0.9769599999999999\n",
"\n",
"RULE #5:\n",
" IF battery_capacity[average] AND ram[high] THEN price[high]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - battery_capacity[average] : 0.991\n",
" - ram[high] : 0.0\n",
" battery_capacity[average] AND ram[high] = 0.0\n",
" Activation (THEN-clause):\n",
" price[high] : 0.0\n",
"\n",
"RULE #6:\n",
" IF battery_capacity[high] AND ram[low] THEN price[average]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - battery_capacity[high] : 0.00017999999999999998\n",
" - ram[low] : 0.0016588799999999997\n",
" battery_capacity[high] AND ram[low] = 0.00017999999999999998\n",
" Activation (THEN-clause):\n",
" price[average] : 0.00017999999999999998\n",
"\n",
"RULE #7:\n",
" IF battery_capacity[high] AND ram[average] THEN price[high]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - battery_capacity[high] : 0.00017999999999999998\n",
" - ram[average] : 0.9769599999999999\n",
" battery_capacity[high] AND ram[average] = 0.00017999999999999998\n",
" Activation (THEN-clause):\n",
" price[high] : 0.00017999999999999998\n",
"\n",
"RULE #8:\n",
" IF battery_capacity[high] AND ram[high] THEN price[high]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - battery_capacity[high] : 0.00017999999999999998\n",
" - ram[high] : 0.0\n",
" battery_capacity[high] AND ram[high] = 0.0\n",
" Activation (THEN-clause):\n",
" price[high] : 0.0\n",
"\n",
"\n",
"==============================\n",
" Intermediaries and Conquests \n",
"==============================\n",
"Consequent: price = 32933.17210826396\n",
" low:\n",
" Accumulate using accumulation_max : 0.0016588799999999997\n",
" average:\n",
" Accumulate using accumulation_max : 0.9769599999999999\n",
" high:\n",
" Accumulate using accumulation_max : 0.00017999999999999998\n",
"\n"
]
},
{
"data": {
"text/plain": [
"np.float64(32933.17210826396)"
]
},
"execution_count": 124,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"price_sim.input['battery_capacity'] = 4000\n",
"price_sim.input['ram'] = 2000\n",
"price_sim.compute()\n",
"\n",
"price_sim.print_state()\n",
"\n",
"price_sim.output[\"price\"]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Визуализация функции принадлежности для выходной переменной influx** /\n",
"Функция получена в процессе аккумуляции и используется для дефаззификации значения выходной переменной influx"
]
},
{
"cell_type": "code",
"execution_count": 125,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"price.view(sim=price_sim)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"### Пример решения задачи регрессии на основе нечеткого логического вывода ###\n",
"\n",
"**Загрузка данных**"
]
},
{
"cell_type": "code",
"execution_count": 126,
"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>Unnamed: 0</th>\n",
" <th>Name</th>\n",
" <th>Brand</th>\n",
" <th>Model</th>\n",
" <th>Battery capacity (mAh)</th>\n",
" <th>Screen size (inches)</th>\n",
" <th>Touchscreen</th>\n",
" <th>Resolution x</th>\n",
" <th>Resolution y</th>\n",
" <th>Processor</th>\n",
" <th>...</th>\n",
" <th>Rear camera</th>\n",
" <th>Front camera</th>\n",
" <th>Operating system</th>\n",
" <th>Wi-Fi</th>\n",
" <th>Bluetooth</th>\n",
" <th>GPS</th>\n",
" <th>Number of SIMs</th>\n",
" <th>3G</th>\n",
" <th>4G/ LTE</th>\n",
" <th>Price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" <td>OnePlus 7T Pro McLaren Edition</td>\n",
" <td>OnePlus</td>\n",
" <td>7T Pro McLaren Edition</td>\n",
" <td>4085</td>\n",
" <td>6.67</td>\n",
" <td>Yes</td>\n",
" <td>1440</td>\n",
" <td>3120</td>\n",
" <td>8</td>\n",
" <td>...</td>\n",
" <td>48.0</td>\n",
" <td>16.0</td>\n",
" <td>Android</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>2</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>58998</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>Realme X2 Pro</td>\n",
" <td>Realme</td>\n",
" <td>X2 Pro</td>\n",
" <td>4000</td>\n",
" <td>6.50</td>\n",
" <td>Yes</td>\n",
" <td>1080</td>\n",
" <td>2400</td>\n",
" <td>8</td>\n",
" <td>...</td>\n",
" <td>64.0</td>\n",
" <td>16.0</td>\n",
" <td>Android</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>2</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>27999</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2</td>\n",
" <td>iPhone 11 Pro Max</td>\n",
" <td>Apple</td>\n",
" <td>iPhone 11 Pro Max</td>\n",
" <td>3969</td>\n",
" <td>6.50</td>\n",
" <td>Yes</td>\n",
" <td>1242</td>\n",
" <td>2688</td>\n",
" <td>6</td>\n",
" <td>...</td>\n",
" <td>12.0</td>\n",
" <td>12.0</td>\n",
" <td>iOS</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>2</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>106900</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>3 rows × 22 columns</p>\n",
"</div>"
],
"text/plain": [
" Unnamed: 0 Name Brand \\\n",
"0 0 OnePlus 7T Pro McLaren Edition OnePlus \n",
"1 1 Realme X2 Pro Realme \n",
"2 2 iPhone 11 Pro Max Apple \n",
"\n",
" Model Battery capacity (mAh) Screen size (inches) \\\n",
"0 7T Pro McLaren Edition 4085 6.67 \n",
"1 X2 Pro 4000 6.50 \n",
"2 iPhone 11 Pro Max 3969 6.50 \n",
"\n",
" Touchscreen Resolution x Resolution y Processor ... Rear camera \\\n",
"0 Yes 1440 3120 8 ... 48.0 \n",
"1 Yes 1080 2400 8 ... 64.0 \n",
"2 Yes 1242 2688 6 ... 12.0 \n",
"\n",
" Front camera Operating system Wi-Fi Bluetooth GPS Number of SIMs 3G \\\n",
"0 16.0 Android Yes Yes Yes 2 Yes \n",
"1 16.0 Android Yes Yes Yes 2 Yes \n",
"2 12.0 iOS Yes Yes Yes 2 Yes \n",
"\n",
" 4G/ LTE Price \n",
"0 Yes 58998 \n",
"1 Yes 27999 \n",
"2 Yes 106900 \n",
"\n",
"[3 rows x 22 columns]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"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>Unnamed: 0</th>\n",
" <th>Name</th>\n",
" <th>Brand</th>\n",
" <th>Model</th>\n",
" <th>Battery capacity (mAh)</th>\n",
" <th>Screen size (inches)</th>\n",
" <th>Touchscreen</th>\n",
" <th>Resolution x</th>\n",
" <th>Resolution y</th>\n",
" <th>Processor</th>\n",
" <th>...</th>\n",
" <th>Rear camera</th>\n",
" <th>Front camera</th>\n",
" <th>Operating system</th>\n",
" <th>Wi-Fi</th>\n",
" <th>Bluetooth</th>\n",
" <th>GPS</th>\n",
" <th>Number of SIMs</th>\n",
" <th>3G</th>\n",
" <th>4G/ LTE</th>\n",
" <th>Price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" <td>OnePlus 7T Pro McLaren Edition</td>\n",
" <td>OnePlus</td>\n",
" <td>7T Pro McLaren Edition</td>\n",
" <td>4085</td>\n",
" <td>6.67</td>\n",
" <td>Yes</td>\n",
" <td>1440</td>\n",
" <td>3120</td>\n",
" <td>8</td>\n",
" <td>...</td>\n",
" <td>48.0</td>\n",
" <td>16.0</td>\n",
" <td>Android</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>2</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>58998</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>Realme X2 Pro</td>\n",
" <td>Realme</td>\n",
" <td>X2 Pro</td>\n",
" <td>4000</td>\n",
" <td>6.50</td>\n",
" <td>Yes</td>\n",
" <td>1080</td>\n",
" <td>2400</td>\n",
" <td>8</td>\n",
" <td>...</td>\n",
" <td>64.0</td>\n",
" <td>16.0</td>\n",
" <td>Android</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>2</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>27999</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2</td>\n",
" <td>iPhone 11 Pro Max</td>\n",
" <td>Apple</td>\n",
" <td>iPhone 11 Pro Max</td>\n",
" <td>3969</td>\n",
" <td>6.50</td>\n",
" <td>Yes</td>\n",
" <td>1242</td>\n",
" <td>2688</td>\n",
" <td>6</td>\n",
" <td>...</td>\n",
" <td>12.0</td>\n",
" <td>12.0</td>\n",
" <td>iOS</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>2</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>106900</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>3 rows × 22 columns</p>\n",
"</div>"
],
"text/plain": [
" Unnamed: 0 Name Brand \\\n",
"0 0 OnePlus 7T Pro McLaren Edition OnePlus \n",
"1 1 Realme X2 Pro Realme \n",
"2 2 iPhone 11 Pro Max Apple \n",
"\n",
" Model Battery capacity (mAh) Screen size (inches) \\\n",
"0 7T Pro McLaren Edition 4085 6.67 \n",
"1 X2 Pro 4000 6.50 \n",
"2 iPhone 11 Pro Max 3969 6.50 \n",
"\n",
" Touchscreen Resolution x Resolution y Processor ... Rear camera \\\n",
"0 Yes 1440 3120 8 ... 48.0 \n",
"1 Yes 1080 2400 8 ... 64.0 \n",
"2 Yes 1242 2688 6 ... 12.0 \n",
"\n",
" Front camera Operating system Wi-Fi Bluetooth GPS Number of SIMs 3G \\\n",
"0 16.0 Android Yes Yes Yes 2 Yes \n",
"1 16.0 Android Yes Yes Yes 2 Yes \n",
"2 12.0 iOS Yes Yes Yes 2 Yes \n",
"\n",
" 4G/ LTE Price \n",
"0 Yes 58998 \n",
"1 Yes 27999 \n",
"2 Yes 106900 \n",
"\n",
"[3 rows x 22 columns]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import pandas as pd\n",
"\n",
"data_train = pd.read_csv(\"..//static//csv//ndtv_data_final.csv\", sep=\",\")\n",
"data_test = pd.read_csv(\"..//static//csv//ndtv_data_final.csv\", sep=\",\")\n",
"\n",
"display(data_train.head(3))\n",
"display(data_test.head(3))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Инициализация лингвистических переменных и автоматическое формирование нечетких переменных**"
]
},
{
"cell_type": "code",
"execution_count": 127,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\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": [
"data = pd.read_csv(\"..//static//csv//ndtv_data_final.csv\")\n",
"\n",
"# Инициализация нечетких переменных\n",
"battery_capacity = ctrl.Antecedent(data[\"Battery capacity (mAh)\"].sort_values().unique(), \"battery_capacity\")\n",
"ram = ctrl.Antecedent(data[\"RAM (MB)\"].sort_values().unique(), \"ram\")\n",
"price = ctrl.Consequent(np.arange(0, 100001, 1000), \"price\")\n",
"\n",
"battery_capacity.automf(3, variable_type=\"quant\")\n",
"battery_capacity.view()\n",
"ram.automf(3, variable_type=\"quant\")\n",
"ram.view()\n",
"price.automf(5, variable_type=\"quant\")\n",
"price.view()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Нечеткие правила**"
]
},
{
"cell_type": "code",
"execution_count": 128,
"metadata": {},
"outputs": [],
"source": [
"rule1 = ctrl.Rule(\n",
" battery_capacity[\"low\"] & ram[\"low\"],\n",
" price[\"low\"],\n",
")\n",
"rule2 = ctrl.Rule(\n",
" battery_capacity[\"average\"] & ram[\"low\"],\n",
" price[\"low\"],\n",
")\n",
"rule3 = ctrl.Rule(\n",
" battery_capacity[\"high\"] & ram[\"low\"],\n",
" price[\"average\"],\n",
")\n",
"\n",
"rule4 = ctrl.Rule(\n",
" battery_capacity[\"low\"] & ram[\"average\"],\n",
" price[\"low\"],\n",
")\n",
"rule5 = ctrl.Rule(\n",
" battery_capacity[\"average\"] & ram[\"average\"],\n",
" price[\"average\"],\n",
")\n",
"rule6 = ctrl.Rule(\n",
" battery_capacity[\"high\"] & ram[\"average\"],\n",
" price[\"high\"],\n",
")\n",
"\n",
"rule7 = ctrl.Rule(\n",
" battery_capacity[\"low\"] & ram[\"high\"],\n",
" price[\"average\"],\n",
")\n",
"rule8 = ctrl.Rule(\n",
" battery_capacity[\"average\"] & ram[\"high\"],\n",
" price[\"high\"],\n",
")\n",
"rule9 = ctrl.Rule(\n",
" battery_capacity[\"high\"] & ram[\"high\"],\n",
" price[\"high\"],\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Создание нечеткой системы**"
]
},
{
"cell_type": "code",
"execution_count": 129,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[IF battery_capacity[low] AND ram[low] THEN price[low]\n",
" \tAND aggregation function : fmin\n",
" \tOR aggregation function : fmax,\n",
" IF battery_capacity[average] AND ram[low] THEN price[low]\n",
" \tAND aggregation function : fmin\n",
" \tOR aggregation function : fmax,\n",
" IF battery_capacity[high] AND ram[low] THEN price[average]\n",
" \tAND aggregation function : fmin\n",
" \tOR aggregation function : fmax,\n",
" IF battery_capacity[low] AND ram[average] THEN price[low]\n",
" \tAND aggregation function : fmin\n",
" \tOR aggregation function : fmax,\n",
" IF battery_capacity[average] AND ram[average] THEN price[average]\n",
" \tAND aggregation function : fmin\n",
" \tOR aggregation function : fmax,\n",
" IF battery_capacity[high] AND ram[average] THEN price[high]\n",
" \tAND aggregation function : fmin\n",
" \tOR aggregation function : fmax,\n",
" IF battery_capacity[low] AND ram[high] THEN price[average]\n",
" \tAND aggregation function : fmin\n",
" \tOR aggregation function : fmax,\n",
" IF battery_capacity[average] AND ram[high] THEN price[high]\n",
" \tAND aggregation function : fmin\n",
" \tOR aggregation function : fmax,\n",
" IF battery_capacity[high] AND ram[high] THEN price[high]\n",
" \tAND aggregation function : fmin\n",
" \tOR aggregation function : fmax]"
]
},
"execution_count": 129,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"fuzzy_rules = [\n",
" rule1,\n",
" rule2,\n",
" rule3,\n",
" rule4,\n",
" rule5,\n",
" rule6,\n",
" rule7,\n",
" rule8,\n",
" rule9,\n",
"]\n",
"\n",
"price_cntrl = ctrl.ControlSystem(fuzzy_rules)\n",
"\n",
"sim = ctrl.ControlSystemSimulation(price_cntrl)\n",
"\n",
"fuzzy_rules"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Пример использования полученной нечеткой системы**"
]
},
{
"cell_type": "code",
"execution_count": 130,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"=============\n",
" Antecedents \n",
"=============\n",
"Antecedent: battery_capacity = 3110\n",
" - low : 0.15831663326653306\n",
" - average : 0.8416833667334669\n",
" - high : 0.0\n",
"Antecedent: ram = 4000\n",
" - low : 0.34048257372654156\n",
" - average : 0.6595174262734584\n",
" - high : 0.0\n",
"\n",
"=======\n",
" Rules \n",
"=======\n",
"RULE #0:\n",
" IF battery_capacity[low] AND ram[low] THEN price[low]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - battery_capacity[low] : 0.15831663326653306\n",
" - ram[low] : 0.34048257372654156\n",
" battery_capacity[low] AND ram[low] = 0.15831663326653306\n",
" Activation (THEN-clause):\n",
" price[low] : 0.15831663326653306\n",
"\n",
"RULE #1:\n",
" IF battery_capacity[average] AND ram[low] THEN price[low]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - battery_capacity[average] : 0.8416833667334669\n",
" - ram[low] : 0.34048257372654156\n",
" battery_capacity[average] AND ram[low] = 0.34048257372654156\n",
" Activation (THEN-clause):\n",
" price[low] : 0.34048257372654156\n",
"\n",
"RULE #2:\n",
" IF battery_capacity[high] AND ram[low] THEN price[average]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - battery_capacity[high] : 0.0\n",
" - ram[low] : 0.34048257372654156\n",
" battery_capacity[high] AND ram[low] = 0.0\n",
" Activation (THEN-clause):\n",
" price[average] : 0.0\n",
"\n",
"RULE #3:\n",
" IF battery_capacity[low] AND ram[average] THEN price[low]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - battery_capacity[low] : 0.15831663326653306\n",
" - ram[average] : 0.6595174262734584\n",
" battery_capacity[low] AND ram[average] = 0.15831663326653306\n",
" Activation (THEN-clause):\n",
" price[low] : 0.15831663326653306\n",
"\n",
"RULE #4:\n",
" IF battery_capacity[average] AND ram[average] THEN price[average]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - battery_capacity[average] : 0.8416833667334669\n",
" - ram[average] : 0.6595174262734584\n",
" battery_capacity[average] AND ram[average] = 0.6595174262734584\n",
" Activation (THEN-clause):\n",
" price[average] : 0.6595174262734584\n",
"\n",
"RULE #5:\n",
" IF battery_capacity[high] AND ram[average] THEN price[high]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - battery_capacity[high] : 0.0\n",
" - ram[average] : 0.6595174262734584\n",
" battery_capacity[high] AND ram[average] = 0.0\n",
" Activation (THEN-clause):\n",
" price[high] : 0.0\n",
"\n",
"RULE #6:\n",
" IF battery_capacity[low] AND ram[high] THEN price[average]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - battery_capacity[low] : 0.15831663326653306\n",
" - ram[high] : 0.0\n",
" battery_capacity[low] AND ram[high] = 0.0\n",
" Activation (THEN-clause):\n",
" price[average] : 0.0\n",
"\n",
"RULE #7:\n",
" IF battery_capacity[average] AND ram[high] THEN price[high]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - battery_capacity[average] : 0.8416833667334669\n",
" - ram[high] : 0.0\n",
" battery_capacity[average] AND ram[high] = 0.0\n",
" Activation (THEN-clause):\n",
" price[high] : 0.0\n",
"\n",
"RULE #8:\n",
" IF battery_capacity[high] AND ram[high] THEN price[high]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - battery_capacity[high] : 0.0\n",
" - ram[high] : 0.0\n",
" battery_capacity[high] AND ram[high] = 0.0\n",
" Activation (THEN-clause):\n",
" price[high] : 0.0\n",
"\n",
"\n",
"==============================\n",
" Intermediaries and Conquests \n",
"==============================\n",
"Consequent: price = 40755.45920618248\n",
" lower:\n",
" Accumulate using accumulation_max : None\n",
" low:\n",
" Accumulate using accumulation_max : 0.34048257372654156\n",
" average:\n",
" Accumulate using accumulation_max : 0.6595174262734584\n",
" high:\n",
" Accumulate using accumulation_max : 0.0\n",
" higher:\n",
" Accumulate using accumulation_max : None\n",
"\n"
]
},
{
"data": {
"text/plain": [
"np.float64(40755.45920618248)"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"example_row = data.iloc[3] # Используем строку в качестве примера\n",
"\n",
"sim.input[\"battery_capacity\"] = example_row[\"Battery capacity (mAh)\"]\n",
"sim.input[\"ram\"] = example_row[\"RAM (MB)\"]\n",
"\n",
"sim.compute()\n",
"\n",
"sim.print_state()\n",
"display(sim.output[\"price\"])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Функция для автоматизации вычисления целевой переменной Y на основе вектора признаков X**"
]
},
{
"cell_type": "code",
"execution_count": 131,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Index(['Unnamed: 0', 'Name', 'Brand', 'Model', 'Battery capacity (mAh)',\n",
" 'Screen size (inches)', 'Touchscreen', 'Resolution x', 'Resolution y',\n",
" 'Processor', 'RAM (MB)', 'Internal storage (GB)', 'Rear camera',\n",
" 'Front camera', 'Operating system', 'Wi-Fi', 'Bluetooth', 'GPS',\n",
" 'Number of SIMs', '3G', '4G/ LTE', 'Price'],\n",
" dtype='object')\n"
]
}
],
"source": [
"print(data_train.columns)"
]
},
{
"cell_type": "code",
"execution_count": 132,
"metadata": {},
"outputs": [],
"source": [
"def fuzzy_pred(row):\n",
" sim.input[\"battery_capacity\"] = row[\"Battery capacity (mAh)\"]\n",
" sim.input[\"ram\"] = row[\"RAM (MB)\"]\n",
" sim.compute()\n",
" return sim.output[\"price\"]"
]
},
2025-02-08 12:06:26 +04:00
{
"cell_type": "markdown",
"metadata": {},
2025-02-08 13:36:03 +04:00
"source": [
"**Тестирование нечеткой системы на обучающей выборке**"
]
},
{
"cell_type": "code",
"execution_count": 133,
"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>Unnamed: 0</th>\n",
" <th>Name</th>\n",
" <th>Brand</th>\n",
" <th>Model</th>\n",
" <th>Battery capacity (mAh)</th>\n",
" <th>Screen size (inches)</th>\n",
" <th>Touchscreen</th>\n",
" <th>Resolution x</th>\n",
" <th>Resolution y</th>\n",
" <th>Processor</th>\n",
" <th>...</th>\n",
" <th>Front camera</th>\n",
" <th>Operating system</th>\n",
" <th>Wi-Fi</th>\n",
" <th>Bluetooth</th>\n",
" <th>GPS</th>\n",
" <th>Number of SIMs</th>\n",
" <th>3G</th>\n",
" <th>4G/ LTE</th>\n",
" <th>Price</th>\n",
" <th>Predicted Price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" <td>OnePlus 7T Pro McLaren Edition</td>\n",
" <td>OnePlus</td>\n",
" <td>7T Pro McLaren Edition</td>\n",
" <td>4085</td>\n",
" <td>6.67</td>\n",
" <td>Yes</td>\n",
" <td>1440</td>\n",
" <td>3120</td>\n",
" <td>8</td>\n",
" <td>...</td>\n",
" <td>16.0</td>\n",
" <td>Android</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>2</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>58998</td>\n",
" <td>75000.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>Realme X2 Pro</td>\n",
" <td>Realme</td>\n",
" <td>X2 Pro</td>\n",
" <td>4000</td>\n",
" <td>6.50</td>\n",
" <td>Yes</td>\n",
" <td>1080</td>\n",
" <td>2400</td>\n",
" <td>8</td>\n",
" <td>...</td>\n",
" <td>16.0</td>\n",
" <td>Android</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>2</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>27999</td>\n",
" <td>55792.501783</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2</td>\n",
" <td>iPhone 11 Pro Max</td>\n",
" <td>Apple</td>\n",
" <td>iPhone 11 Pro Max</td>\n",
" <td>3969</td>\n",
" <td>6.50</td>\n",
" <td>Yes</td>\n",
" <td>1242</td>\n",
" <td>2688</td>\n",
" <td>6</td>\n",
" <td>...</td>\n",
" <td>12.0</td>\n",
" <td>iOS</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>2</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>106900</td>\n",
" <td>46614.283392</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>3</td>\n",
" <td>iPhone 11</td>\n",
" <td>Apple</td>\n",
" <td>iPhone 11</td>\n",
" <td>3110</td>\n",
" <td>6.10</td>\n",
" <td>Yes</td>\n",
" <td>828</td>\n",
" <td>1792</td>\n",
" <td>6</td>\n",
" <td>...</td>\n",
" <td>12.0</td>\n",
" <td>iOS</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>2</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>62900</td>\n",
" <td>40755.459206</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>4</td>\n",
" <td>LG G8X ThinQ</td>\n",
" <td>LG</td>\n",
" <td>G8X ThinQ</td>\n",
" <td>4000</td>\n",
" <td>6.40</td>\n",
" <td>Yes</td>\n",
" <td>1080</td>\n",
" <td>2340</td>\n",
" <td>8</td>\n",
" <td>...</td>\n",
" <td>32.0</td>\n",
" <td>Android</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>1</td>\n",
" <td>No</td>\n",
" <td>No</td>\n",
" <td>49990</td>\n",
" <td>55792.501783</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>5</td>\n",
" <td>OnePlus 7T</td>\n",
" <td>OnePlus</td>\n",
" <td>7T</td>\n",
" <td>3800</td>\n",
" <td>6.55</td>\n",
" <td>Yes</td>\n",
" <td>1080</td>\n",
" <td>2400</td>\n",
" <td>8</td>\n",
" <td>...</td>\n",
" <td>16.0</td>\n",
" <td>Android</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>No</td>\n",
" <td>2</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>34930</td>\n",
" <td>59015.272109</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>6</td>\n",
" <td>OnePlus 7T Pro</td>\n",
" <td>OnePlus</td>\n",
" <td>7T Pro</td>\n",
" <td>4085</td>\n",
" <td>6.67</td>\n",
" <td>Yes</td>\n",
" <td>1440</td>\n",
" <td>3120</td>\n",
" <td>8</td>\n",
" <td>...</td>\n",
" <td>16.0</td>\n",
" <td>Android</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>2</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>52990</td>\n",
" <td>59015.272109</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>7</td>\n",
" <td>Samsung Galaxy Note 10+</td>\n",
" <td>Samsung</td>\n",
" <td>Galaxy Note 10+</td>\n",
" <td>4300</td>\n",
" <td>6.80</td>\n",
" <td>Yes</td>\n",
" <td>1440</td>\n",
" <td>3040</td>\n",
" <td>8</td>\n",
" <td>...</td>\n",
" <td>10.0</td>\n",
" <td>Android</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>2</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>79699</td>\n",
" <td>75000.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>8</td>\n",
" <td>Asus ROG Phone 2</td>\n",
" <td>Asus</td>\n",
" <td>ROG Phone 2</td>\n",
" <td>6000</td>\n",
" <td>6.59</td>\n",
" <td>Yes</td>\n",
" <td>1080</td>\n",
" <td>2340</td>\n",
" <td>8</td>\n",
" <td>...</td>\n",
" <td>24.0</td>\n",
" <td>Android</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>1</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>37999</td>\n",
" <td>75000.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>9</td>\n",
" <td>Xiaomi Redmi K20 Pro</td>\n",
" <td>Xiaomi</td>\n",
" <td>Redmi K20 Pro</td>\n",
" <td>4000</td>\n",
" <td>6.39</td>\n",
" <td>Yes</td>\n",
" <td>1080</td>\n",
" <td>2340</td>\n",
" <td>8</td>\n",
" <td>...</td>\n",
" <td>20.0</td>\n",
" <td>Android</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>2</td>\n",
" <td>No</td>\n",
" <td>No</td>\n",
" <td>23190</td>\n",
" <td>55792.501783</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>10</td>\n",
" <td>Oppo K3</td>\n",
" <td>Oppo</td>\n",
" <td>K3</td>\n",
" <td>3765</td>\n",
" <td>6.50</td>\n",
" <td>Yes</td>\n",
" <td>1080</td>\n",
" <td>2340</td>\n",
" <td>8</td>\n",
" <td>...</td>\n",
" <td>16.0</td>\n",
" <td>Android</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>2</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>23990</td>\n",
" <td>53251.486942</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>11</td>\n",
" <td>Realme X</td>\n",
" <td>Realme</td>\n",
" <td>X</td>\n",
" <td>3765</td>\n",
" <td>6.53</td>\n",
" <td>Yes</td>\n",
" <td>1080</td>\n",
" <td>2340</td>\n",
" <td>8</td>\n",
" <td>...</td>\n",
" <td>16.0</td>\n",
" <td>Android</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>2</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>14999</td>\n",
" <td>44322.761836</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>12</td>\n",
" <td>Xiaomi Redmi K20</td>\n",
" <td>Xiaomi</td>\n",
" <td>Redmi K20</td>\n",
" <td>4000</td>\n",
" <td>6.39</td>\n",
" <td>Yes</td>\n",
" <td>1080</td>\n",
" <td>2340</td>\n",
" <td>8</td>\n",
" <td>...</td>\n",
" <td>20.0</td>\n",
" <td>Android</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>2</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>19282</td>\n",
" <td>55792.501783</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>13</td>\n",
" <td>OnePlus 7 Pro</td>\n",
" <td>OnePlus</td>\n",
" <td>7 Pro</td>\n",
" <td>4000</td>\n",
" <td>6.67</td>\n",
" <td>Yes</td>\n",
" <td>1440</td>\n",
" <td>3120</td>\n",
" <td>8</td>\n",
" <td>...</td>\n",
" <td>16.0</td>\n",
" <td>Android</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>2</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>39995</td>\n",
" <td>55792.501783</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>14</td>\n",
" <td>Oppo Reno 10x Zoom</td>\n",
" <td>Oppo</td>\n",
" <td>Reno 10x Zoom</td>\n",
" <td>4065</td>\n",
" <td>6.60</td>\n",
" <td>Yes</td>\n",
" <td>1080</td>\n",
" <td>2340</td>\n",
" <td>8</td>\n",
" <td>...</td>\n",
" <td>16.0</td>\n",
" <td>Android</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>2</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>36990</td>\n",
" <td>56431.899431</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>15 rows × 23 columns</p>\n",
"</div>"
],
"text/plain": [
" Unnamed: 0 Name Brand \\\n",
"0 0 OnePlus 7T Pro McLaren Edition OnePlus \n",
"1 1 Realme X2 Pro Realme \n",
"2 2 iPhone 11 Pro Max Apple \n",
"3 3 iPhone 11 Apple \n",
"4 4 LG G8X ThinQ LG \n",
"5 5 OnePlus 7T OnePlus \n",
"6 6 OnePlus 7T Pro OnePlus \n",
"7 7 Samsung Galaxy Note 10+ Samsung \n",
"8 8 Asus ROG Phone 2 Asus \n",
"9 9 Xiaomi Redmi K20 Pro Xiaomi \n",
"10 10 Oppo K3 Oppo \n",
"11 11 Realme X Realme \n",
"12 12 Xiaomi Redmi K20 Xiaomi \n",
"13 13 OnePlus 7 Pro OnePlus \n",
"14 14 Oppo Reno 10x Zoom Oppo \n",
"\n",
" Model Battery capacity (mAh) Screen size (inches) \\\n",
"0 7T Pro McLaren Edition 4085 6.67 \n",
"1 X2 Pro 4000 6.50 \n",
"2 iPhone 11 Pro Max 3969 6.50 \n",
"3 iPhone 11 3110 6.10 \n",
"4 G8X ThinQ 4000 6.40 \n",
"5 7T 3800 6.55 \n",
"6 7T Pro 4085 6.67 \n",
"7 Galaxy Note 10+ 4300 6.80 \n",
"8 ROG Phone 2 6000 6.59 \n",
"9 Redmi K20 Pro 4000 6.39 \n",
"10 K3 3765 6.50 \n",
"11 X 3765 6.53 \n",
"12 Redmi K20 4000 6.39 \n",
"13 7 Pro 4000 6.67 \n",
"14 Reno 10x Zoom 4065 6.60 \n",
"\n",
" Touchscreen Resolution x Resolution y Processor ... Front camera \\\n",
"0 Yes 1440 3120 8 ... 16.0 \n",
"1 Yes 1080 2400 8 ... 16.0 \n",
"2 Yes 1242 2688 6 ... 12.0 \n",
"3 Yes 828 1792 6 ... 12.0 \n",
"4 Yes 1080 2340 8 ... 32.0 \n",
"5 Yes 1080 2400 8 ... 16.0 \n",
"6 Yes 1440 3120 8 ... 16.0 \n",
"7 Yes 1440 3040 8 ... 10.0 \n",
"8 Yes 1080 2340 8 ... 24.0 \n",
"9 Yes 1080 2340 8 ... 20.0 \n",
"10 Yes 1080 2340 8 ... 16.0 \n",
"11 Yes 1080 2340 8 ... 16.0 \n",
"12 Yes 1080 2340 8 ... 20.0 \n",
"13 Yes 1440 3120 8 ... 16.0 \n",
"14 Yes 1080 2340 8 ... 16.0 \n",
"\n",
" Operating system Wi-Fi Bluetooth GPS Number of SIMs 3G 4G/ LTE \\\n",
"0 Android Yes Yes Yes 2 Yes Yes \n",
"1 Android Yes Yes Yes 2 Yes Yes \n",
"2 iOS Yes Yes Yes 2 Yes Yes \n",
"3 iOS Yes Yes Yes 2 Yes Yes \n",
"4 Android Yes Yes Yes 1 No No \n",
"5 Android Yes Yes No 2 Yes Yes \n",
"6 Android Yes Yes Yes 2 Yes Yes \n",
"7 Android Yes Yes Yes 2 Yes Yes \n",
"8 Android Yes Yes Yes 1 Yes Yes \n",
"9 Android Yes Yes Yes 2 No No \n",
"10 Android Yes Yes Yes 2 Yes Yes \n",
"11 Android Yes Yes Yes 2 Yes Yes \n",
"12 Android Yes Yes Yes 2 Yes Yes \n",
"13 Android Yes Yes Yes 2 Yes Yes \n",
"14 Android Yes Yes Yes 2 Yes Yes \n",
"\n",
" Price Predicted Price \n",
"0 58998 75000.000000 \n",
"1 27999 55792.501783 \n",
"2 106900 46614.283392 \n",
"3 62900 40755.459206 \n",
"4 49990 55792.501783 \n",
"5 34930 59015.272109 \n",
"6 52990 59015.272109 \n",
"7 79699 75000.000000 \n",
"8 37999 75000.000000 \n",
"9 23190 55792.501783 \n",
"10 23990 53251.486942 \n",
"11 14999 44322.761836 \n",
"12 19282 55792.501783 \n",
"13 39995 55792.501783 \n",
"14 36990 56431.899431 \n",
"\n",
"[15 rows x 23 columns]"
]
},
"execution_count": 133,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"result_train = data_train.copy()\n",
"result_train[\"Predicted Price\"] = result_train.apply(fuzzy_pred, axis=1)\n",
"\n",
"result_train.head(15)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"**Тестирование нечеткой системы на тестовой выборке**"
]
},
{
"cell_type": "code",
"execution_count": 135,
"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>Unnamed: 0</th>\n",
" <th>Name</th>\n",
" <th>Brand</th>\n",
" <th>Model</th>\n",
" <th>Battery capacity (mAh)</th>\n",
" <th>Screen size (inches)</th>\n",
" <th>Touchscreen</th>\n",
" <th>Resolution x</th>\n",
" <th>Resolution y</th>\n",
" <th>Processor</th>\n",
" <th>...</th>\n",
" <th>Front camera</th>\n",
" <th>Operating system</th>\n",
" <th>Wi-Fi</th>\n",
" <th>Bluetooth</th>\n",
" <th>GPS</th>\n",
" <th>Number of SIMs</th>\n",
" <th>3G</th>\n",
" <th>4G/ LTE</th>\n",
" <th>Price</th>\n",
" <th>Predicted Price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" <td>OnePlus 7T Pro McLaren Edition</td>\n",
" <td>OnePlus</td>\n",
" <td>7T Pro McLaren Edition</td>\n",
" <td>4085</td>\n",
" <td>6.67</td>\n",
" <td>Yes</td>\n",
" <td>1440</td>\n",
" <td>3120</td>\n",
" <td>8</td>\n",
" <td>...</td>\n",
" <td>16.0</td>\n",
" <td>Android</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>2</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>58998</td>\n",
" <td>75000.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>Realme X2 Pro</td>\n",
" <td>Realme</td>\n",
" <td>X2 Pro</td>\n",
" <td>4000</td>\n",
" <td>6.50</td>\n",
" <td>Yes</td>\n",
" <td>1080</td>\n",
" <td>2400</td>\n",
" <td>8</td>\n",
" <td>...</td>\n",
" <td>16.0</td>\n",
" <td>Android</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>2</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>27999</td>\n",
" <td>55792.501783</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2</td>\n",
" <td>iPhone 11 Pro Max</td>\n",
" <td>Apple</td>\n",
" <td>iPhone 11 Pro Max</td>\n",
" <td>3969</td>\n",
" <td>6.50</td>\n",
" <td>Yes</td>\n",
" <td>1242</td>\n",
" <td>2688</td>\n",
" <td>6</td>\n",
" <td>...</td>\n",
" <td>12.0</td>\n",
" <td>iOS</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>2</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>106900</td>\n",
" <td>46614.283392</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>3</td>\n",
" <td>iPhone 11</td>\n",
" <td>Apple</td>\n",
" <td>iPhone 11</td>\n",
" <td>3110</td>\n",
" <td>6.10</td>\n",
" <td>Yes</td>\n",
" <td>828</td>\n",
" <td>1792</td>\n",
" <td>6</td>\n",
" <td>...</td>\n",
" <td>12.0</td>\n",
" <td>iOS</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>2</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>62900</td>\n",
" <td>40755.459206</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>4</td>\n",
" <td>LG G8X ThinQ</td>\n",
" <td>LG</td>\n",
" <td>G8X ThinQ</td>\n",
" <td>4000</td>\n",
" <td>6.40</td>\n",
" <td>Yes</td>\n",
" <td>1080</td>\n",
" <td>2340</td>\n",
" <td>8</td>\n",
" <td>...</td>\n",
" <td>32.0</td>\n",
" <td>Android</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>1</td>\n",
" <td>No</td>\n",
" <td>No</td>\n",
" <td>49990</td>\n",
" <td>55792.501783</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1354</th>\n",
" <td>1354</td>\n",
" <td>Intex Aqua A2</td>\n",
" <td>Intex</td>\n",
" <td>Aqua A2</td>\n",
" <td>1500</td>\n",
" <td>4.00</td>\n",
" <td>Yes</td>\n",
" <td>480</td>\n",
" <td>800</td>\n",
" <td>4</td>\n",
" <td>...</td>\n",
" <td>0.3</td>\n",
" <td>Android</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>2</td>\n",
" <td>Yes</td>\n",
" <td>No</td>\n",
" <td>2599</td>\n",
" <td>27649.663226</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1355</th>\n",
" <td>1355</td>\n",
" <td>Videocon Infinium Z51 Nova+</td>\n",
" <td>Videocon</td>\n",
" <td>Infinium Z51 Nova+</td>\n",
" <td>2000</td>\n",
" <td>5.00</td>\n",
" <td>Yes</td>\n",
" <td>480</td>\n",
" <td>854</td>\n",
" <td>4</td>\n",
" <td>...</td>\n",
" <td>5.0</td>\n",
" <td>Android</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>2</td>\n",
" <td>Yes</td>\n",
" <td>No</td>\n",
" <td>2940</td>\n",
" <td>30578.211284</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1356</th>\n",
" <td>1356</td>\n",
" <td>Intex Aqua Y4</td>\n",
" <td>Intex</td>\n",
" <td>Aqua Y4</td>\n",
" <td>1700</td>\n",
" <td>4.50</td>\n",
" <td>Yes</td>\n",
" <td>480</td>\n",
" <td>854</td>\n",
" <td>2</td>\n",
" <td>...</td>\n",
" <td>2.0</td>\n",
" <td>Android</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>No</td>\n",
" <td>2</td>\n",
" <td>Yes</td>\n",
" <td>No</td>\n",
" <td>2999</td>\n",
" <td>27750.249507</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1357</th>\n",
" <td>1357</td>\n",
" <td>iBall Andi4 B20</td>\n",
" <td>iBall</td>\n",
" <td>Andi4 B20</td>\n",
" <td>1250</td>\n",
" <td>4.00</td>\n",
" <td>Yes</td>\n",
" <td>480</td>\n",
" <td>800</td>\n",
" <td>1</td>\n",
" <td>...</td>\n",
" <td>0.3</td>\n",
" <td>Android</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>2</td>\n",
" <td>Yes</td>\n",
" <td>No</td>\n",
" <td>2498</td>\n",
" <td>26169.615853</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1358</th>\n",
" <td>1358</td>\n",
" <td>iBall Andi Avonte 5</td>\n",
" <td>iBall</td>\n",
" <td>Andi Avonte 5</td>\n",
" <td>2150</td>\n",
" <td>5.00</td>\n",
" <td>Yes</td>\n",
" <td>480</td>\n",
" <td>854</td>\n",
" <td>4</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>Android</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>Yes</td>\n",
" <td>2</td>\n",
" <td>Yes</td>\n",
" <td>No</td>\n",
" <td>3999</td>\n",
" <td>30880.178199</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1359 rows × 23 columns</p>\n",
"</div>"
],
"text/plain": [
" Unnamed: 0 Name Brand \\\n",
"0 0 OnePlus 7T Pro McLaren Edition OnePlus \n",
"1 1 Realme X2 Pro Realme \n",
"2 2 iPhone 11 Pro Max Apple \n",
"3 3 iPhone 11 Apple \n",
"4 4 LG G8X ThinQ LG \n",
"... ... ... ... \n",
"1354 1354 Intex Aqua A2 Intex \n",
"1355 1355 Videocon Infinium Z51 Nova+ Videocon \n",
"1356 1356 Intex Aqua Y4 Intex \n",
"1357 1357 iBall Andi4 B20 iBall \n",
"1358 1358 iBall Andi Avonte 5 iBall \n",
"\n",
" Model Battery capacity (mAh) Screen size (inches) \\\n",
"0 7T Pro McLaren Edition 4085 6.67 \n",
"1 X2 Pro 4000 6.50 \n",
"2 iPhone 11 Pro Max 3969 6.50 \n",
"3 iPhone 11 3110 6.10 \n",
"4 G8X ThinQ 4000 6.40 \n",
"... ... ... ... \n",
"1354 Aqua A2 1500 4.00 \n",
"1355 Infinium Z51 Nova+ 2000 5.00 \n",
"1356 Aqua Y4 1700 4.50 \n",
"1357 Andi4 B20 1250 4.00 \n",
"1358 Andi Avonte 5 2150 5.00 \n",
"\n",
" Touchscreen Resolution x Resolution y Processor ... Front camera \\\n",
"0 Yes 1440 3120 8 ... 16.0 \n",
"1 Yes 1080 2400 8 ... 16.0 \n",
"2 Yes 1242 2688 6 ... 12.0 \n",
"3 Yes 828 1792 6 ... 12.0 \n",
"4 Yes 1080 2340 8 ... 32.0 \n",
"... ... ... ... ... ... ... \n",
"1354 Yes 480 800 4 ... 0.3 \n",
"1355 Yes 480 854 4 ... 5.0 \n",
"1356 Yes 480 854 2 ... 2.0 \n",
"1357 Yes 480 800 1 ... 0.3 \n",
"1358 Yes 480 854 4 ... 0.0 \n",
"\n",
" Operating system Wi-Fi Bluetooth GPS Number of SIMs 3G 4G/ LTE \\\n",
"0 Android Yes Yes Yes 2 Yes Yes \n",
"1 Android Yes Yes Yes 2 Yes Yes \n",
"2 iOS Yes Yes Yes 2 Yes Yes \n",
"3 iOS Yes Yes Yes 2 Yes Yes \n",
"4 Android Yes Yes Yes 1 No No \n",
"... ... ... ... ... ... ... ... \n",
"1354 Android Yes Yes Yes 2 Yes No \n",
"1355 Android Yes Yes Yes 2 Yes No \n",
"1356 Android Yes Yes No 2 Yes No \n",
"1357 Android Yes Yes Yes 2 Yes No \n",
"1358 Android Yes Yes Yes 2 Yes No \n",
"\n",
" Price Predicted Price \n",
"0 58998 75000.000000 \n",
"1 27999 55792.501783 \n",
"2 106900 46614.283392 \n",
"3 62900 40755.459206 \n",
"4 49990 55792.501783 \n",
"... ... ... \n",
"1354 2599 27649.663226 \n",
"1355 2940 30578.211284 \n",
"1356 2999 27750.249507 \n",
"1357 2498 26169.615853 \n",
"1358 3999 30880.178199 \n",
"\n",
"[1359 rows x 23 columns]"
]
},
"execution_count": 135,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"result_test = data_test.copy()\n",
"\n",
"result_test[\"Predicted Price\"] = result_test.apply(fuzzy_pred, axis=1)\n",
"\n",
"result_test"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Оценка результатов на основе метрик для задачи регрессии**"
]
},
{
"cell_type": "code",
"execution_count": 138,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'RMSE_train': 28568.780129367737,\n",
" 'RMSE_test': 28568.780129367737,\n",
" 'RMAE_test': 165.28156612336826,\n",
" 'R2_test': -3.2533731852277636}"
]
},
"execution_count": 138,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import math\n",
"from sklearn import metrics\n",
"\n",
"rmetrics = {}\n",
"\n",
"rmetrics[\"RMSE_train\"] = math.sqrt(\n",
" metrics.mean_squared_error(result_train[\"Price\"], result_train[\"Predicted Price\"])\n",
")\n",
"\n",
"rmetrics[\"RMSE_test\"] = math.sqrt(\n",
" metrics.mean_squared_error(result_test[\"Price\"], result_test[\"Predicted Price\"])\n",
")\n",
"\n",
"rmetrics[\"RMAE_test\"] = math.sqrt(\n",
" metrics.mean_absolute_error(result_test[\"Price\"], result_test[\"Predicted Price\"])\n",
")\n",
"\n",
"rmetrics[\"R2_test\"] = metrics.r2_score(\n",
" result_test[\"Price\"], result_test[\"Predicted Price\"]\n",
")\n",
"\n",
"rmetrics"
]
2025-02-08 12:06:26 +04:00
}
],
"metadata": {
2025-02-08 13:36:03 +04:00
"kernelspec": {
"display_name": "aimenv",
"language": "python",
"name": "python3"
},
2025-02-08 12:06:26 +04:00
"language_info": {
2025-02-08 13:36:03 +04:00
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.5"
2025-02-08 12:06:26 +04:00
}
},
"nbformat": 4,
"nbformat_minor": 2
}