792 lines
206 KiB
Plaintext
Raw Normal View History

2025-02-07 21:50:00 +04:00
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# загрузка данных"
]
},
{
"cell_type": "code",
2025-02-07 22:11:21 +04:00
"execution_count": 5,
2025-02-07 21:50:00 +04:00
"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>Rank</th>\n",
" <th>Name</th>\n",
" <th>Networth</th>\n",
" <th>Age</th>\n",
" <th>Country</th>\n",
" <th>Source</th>\n",
" <th>Industry</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>Elon Musk</td>\n",
" <td>219.0</td>\n",
" <td>50</td>\n",
" <td>United States</td>\n",
" <td>Tesla, SpaceX</td>\n",
" <td>Automotive</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>Jeff Bezos</td>\n",
" <td>171.0</td>\n",
" <td>58</td>\n",
" <td>United States</td>\n",
" <td>Amazon</td>\n",
" <td>Technology</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>Bernard Arnault &amp; family</td>\n",
" <td>158.0</td>\n",
" <td>73</td>\n",
" <td>France</td>\n",
" <td>LVMH</td>\n",
" <td>Fashion &amp; Retail</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4</td>\n",
" <td>Bill Gates</td>\n",
" <td>129.0</td>\n",
" <td>66</td>\n",
" <td>United States</td>\n",
" <td>Microsoft</td>\n",
" <td>Technology</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>5</td>\n",
" <td>Warren Buffett</td>\n",
" <td>118.0</td>\n",
" <td>91</td>\n",
" <td>United States</td>\n",
" <td>Berkshire Hathaway</td>\n",
" <td>Finance &amp; Investments</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",
" </tr>\n",
" <tr>\n",
" <th>2595</th>\n",
" <td>2578</td>\n",
" <td>Jorge Gallardo Ballart</td>\n",
" <td>1.0</td>\n",
" <td>80</td>\n",
" <td>Spain</td>\n",
" <td>pharmaceuticals</td>\n",
" <td>Healthcare</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2596</th>\n",
" <td>2578</td>\n",
" <td>Nari Genomal</td>\n",
" <td>1.0</td>\n",
" <td>82</td>\n",
" <td>Philippines</td>\n",
" <td>apparel</td>\n",
" <td>Fashion &amp; Retail</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2597</th>\n",
" <td>2578</td>\n",
" <td>Ramesh Genomal</td>\n",
" <td>1.0</td>\n",
" <td>71</td>\n",
" <td>Philippines</td>\n",
" <td>apparel</td>\n",
" <td>Fashion &amp; Retail</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2598</th>\n",
" <td>2578</td>\n",
" <td>Sunder Genomal</td>\n",
" <td>1.0</td>\n",
" <td>68</td>\n",
" <td>Philippines</td>\n",
" <td>garments</td>\n",
" <td>Fashion &amp; Retail</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2599</th>\n",
" <td>2578</td>\n",
" <td>Horst-Otto Gerberding</td>\n",
" <td>1.0</td>\n",
" <td>69</td>\n",
" <td>Germany</td>\n",
" <td>flavors and fragrances</td>\n",
" <td>Food &amp; Beverage</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>2600 rows × 7 columns</p>\n",
"</div>"
],
"text/plain": [
" Rank Name Networth Age Country \\\n",
"0 1 Elon Musk 219.0 50 United States \n",
"1 2 Jeff Bezos 171.0 58 United States \n",
"2 3 Bernard Arnault & family 158.0 73 France \n",
"3 4 Bill Gates 129.0 66 United States \n",
"4 5 Warren Buffett 118.0 91 United States \n",
"... ... ... ... ... ... \n",
"2595 2578 Jorge Gallardo Ballart 1.0 80 Spain \n",
"2596 2578 Nari Genomal 1.0 82 Philippines \n",
"2597 2578 Ramesh Genomal 1.0 71 Philippines \n",
"2598 2578 Sunder Genomal 1.0 68 Philippines \n",
"2599 2578 Horst-Otto Gerberding 1.0 69 Germany \n",
"\n",
" Source Industry \n",
"0 Tesla, SpaceX Automotive \n",
"1 Amazon Technology \n",
"2 LVMH Fashion & Retail \n",
"3 Microsoft Technology \n",
"4 Berkshire Hathaway Finance & Investments \n",
"... ... ... \n",
"2595 pharmaceuticals Healthcare \n",
"2596 apparel Fashion & Retail \n",
"2597 apparel Fashion & Retail \n",
"2598 garments Fashion & Retail \n",
"2599 flavors and fragrances Food & Beverage \n",
"\n",
"[2600 rows x 7 columns]"
]
},
2025-02-07 22:11:21 +04:00
"execution_count": 5,
2025-02-07 21:50:00 +04:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas as pd\n",
"df = pd.read_csv(\"C://Users//annal//aim//static//csv//Forbes_Billionaires.csv\")\n",
"df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# входные и выходные переменные:\n",
"# входные: age и country\n",
"# выходные: networth"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# создание лингвистических переменных"
]
},
{
"cell_type": "code",
2025-02-07 22:11:21 +04:00
"execution_count": 6,
2025-02-07 21:50:00 +04:00
"metadata": {},
"outputs": [],
"source": [
"import skfuzzy as fuzz\n",
"from skfuzzy import control as ctrl\n",
"age_cat = ctrl.Antecedent(df[\"Age\"].sort_values(), \"age_cat\")\n",
"networth = ctrl.Antecedent(df[\"Networth\"].sort_values(), \"networth\")\n",
"rank = ctrl.Consequent(df[\"Rank \"].sort_values(), \"rank\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# формирование нечетких переменных для лингвистических переменных и их визуализация¶"
]
},
{
"cell_type": "code",
2025-02-07 22:11:21 +04:00
"execution_count": 7,
2025-02-07 21:50:00 +04:00
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"c:\\Users\\annal\\aim\\.venv\\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": [
"age_cat.automf(3, variable_type= \"quant\")\n",
"age_cat.view()\n",
"networth.automf(3, variable_type=\"quant\")\n",
"networth.view()\n",
"rank.automf(5, variable_type=\"quant\")\n",
"rank.view()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# формирование и визуализация нечётких правил"
]
},
{
"cell_type": "code",
2025-02-07 22:27:06 +04:00
"execution_count": null,
2025-02-07 21:50:00 +04:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(<Figure size 640x480 with 1 Axes>, <Axes: >)"
]
},
2025-02-07 22:27:06 +04:00
"execution_count": 18,
2025-02-07 21:50:00 +04:00
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
2025-02-07 22:27:06 +04:00
"image/png": "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
2025-02-07 21:50:00 +04:00
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import skfuzzy as fuzz\n",
"from skfuzzy import control as ctrl \n",
"rule1 = ctrl.Rule(age_cat['low'] & networth['low'], rank['lower'])\n",
"rule2 = ctrl.Rule(age_cat['low'] & networth['average'], rank['low'])\n",
"rule3 = ctrl.Rule(age_cat['low'] & networth['high'], rank['average'])\n",
"rule4 = ctrl.Rule(age_cat['average'] & networth['low'], rank['lower'])\n",
"rule5 = ctrl.Rule(age_cat['average'] & networth['average'], rank['average'])\n",
"rule6 = ctrl.Rule(age_cat['average'] & networth['high'], rank['high'])\n",
"rule7 = ctrl.Rule(age_cat['high'] & networth['low'], rank['average'])\n",
"rule8 = ctrl.Rule(age_cat['high'] & networth['average'], rank['high'])\n",
"rule9 = ctrl.Rule(age_cat['high'] & networth['high'], rank['higher'])\n",
"\n",
"rule1.view()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# создание нечеткой системы и добавление нечетких правил в базу знаний нечеткой системы"
]
},
{
"cell_type": "code",
2025-02-07 22:27:06 +04:00
"execution_count": 19,
2025-02-07 21:50:00 +04:00
"metadata": {},
"outputs": [],
"source": [
"rank_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",
"ranks = ctrl.ControlSystemSimulation(rank_ctrl)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# пример расчёта rank на основе age_cat и networth"
]
},
{
"cell_type": "code",
2025-02-07 22:27:06 +04:00
"execution_count": 21,
2025-02-07 21:50:00 +04:00
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"=============\n",
" Antecedents \n",
"=============\n",
"Antecedent: age_cat = 50\n",
" - low : 0.2345679012345679\n",
" - average : 0.7654320987654321\n",
" - high : 0.0\n",
"Antecedent: networth = 219\n",
" - low : 0.0\n",
" - average : 0.0\n",
" - high : 1.0\n",
"\n",
"=======\n",
" Rules \n",
"=======\n",
"RULE #0:\n",
2025-02-07 22:27:06 +04:00
" IF age_cat[low] AND networth[low] THEN rank[higher]\n",
2025-02-07 21:50:00 +04:00
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - age_cat[low] : 0.2345679012345679\n",
" - networth[low] : 0.0\n",
" age_cat[low] AND networth[low] = 0.0\n",
" Activation (THEN-clause):\n",
2025-02-07 22:27:06 +04:00
" rank[higher] : 0.0\n",
2025-02-07 21:50:00 +04:00
"\n",
"RULE #1:\n",
2025-02-07 22:27:06 +04:00
" IF age_cat[low] AND networth[average] THEN rank[high]\n",
2025-02-07 21:50:00 +04:00
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - age_cat[low] : 0.2345679012345679\n",
" - networth[average] : 0.0\n",
" age_cat[low] AND networth[average] = 0.0\n",
" Activation (THEN-clause):\n",
2025-02-07 22:27:06 +04:00
" rank[high] : 0.0\n",
2025-02-07 21:50:00 +04:00
"\n",
"RULE #2:\n",
2025-02-07 22:27:06 +04:00
" IF age_cat[low] AND networth[high] THEN rank[low]\n",
2025-02-07 21:50:00 +04:00
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - age_cat[low] : 0.2345679012345679\n",
" - networth[high] : 1.0\n",
" age_cat[low] AND networth[high] = 0.2345679012345679\n",
" Activation (THEN-clause):\n",
2025-02-07 22:27:06 +04:00
" rank[low] : 0.2345679012345679\n",
2025-02-07 21:50:00 +04:00
"\n",
"RULE #3:\n",
2025-02-07 22:27:06 +04:00
" IF age_cat[average] AND networth[low] THEN rank[high]\n",
2025-02-07 21:50:00 +04:00
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - age_cat[average] : 0.7654320987654321\n",
" - networth[low] : 0.0\n",
" age_cat[average] AND networth[low] = 0.0\n",
" Activation (THEN-clause):\n",
2025-02-07 22:27:06 +04:00
" rank[high] : 0.0\n",
2025-02-07 21:50:00 +04:00
"\n",
"RULE #4:\n",
" IF age_cat[average] AND networth[average] THEN rank[average]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - age_cat[average] : 0.7654320987654321\n",
" - networth[average] : 0.0\n",
" age_cat[average] AND networth[average] = 0.0\n",
" Activation (THEN-clause):\n",
" rank[average] : 0.0\n",
"\n",
"RULE #5:\n",
2025-02-07 22:27:06 +04:00
" IF age_cat[average] AND networth[high] THEN rank[lower]\n",
2025-02-07 21:50:00 +04:00
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - age_cat[average] : 0.7654320987654321\n",
" - networth[high] : 1.0\n",
" age_cat[average] AND networth[high] = 0.7654320987654321\n",
" Activation (THEN-clause):\n",
2025-02-07 22:27:06 +04:00
" rank[lower] : 0.7654320987654321\n",
2025-02-07 21:50:00 +04:00
"\n",
"RULE #6:\n",
2025-02-07 22:27:06 +04:00
" IF age_cat[high] AND networth[low] THEN rank[higher]\n",
2025-02-07 21:50:00 +04:00
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - age_cat[high] : 0.0\n",
" - networth[low] : 0.0\n",
" age_cat[high] AND networth[low] = 0.0\n",
" Activation (THEN-clause):\n",
2025-02-07 22:27:06 +04:00
" rank[higher] : 0.0\n",
2025-02-07 21:50:00 +04:00
"\n",
"RULE #7:\n",
2025-02-07 22:27:06 +04:00
" IF age_cat[high] AND networth[average] THEN rank[low]\n",
2025-02-07 21:50:00 +04:00
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - age_cat[high] : 0.0\n",
" - networth[average] : 0.0\n",
" age_cat[high] AND networth[average] = 0.0\n",
" Activation (THEN-clause):\n",
2025-02-07 22:27:06 +04:00
" rank[low] : 0.0\n",
2025-02-07 21:50:00 +04:00
"\n",
"RULE #8:\n",
2025-02-07 22:27:06 +04:00
" IF age_cat[high] AND networth[high] THEN rank[lower]\n",
2025-02-07 21:50:00 +04:00
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - age_cat[high] : 0.0\n",
" - networth[high] : 1.0\n",
" age_cat[high] AND networth[high] = 0.0\n",
" Activation (THEN-clause):\n",
2025-02-07 22:27:06 +04:00
" rank[lower] : 0.0\n",
2025-02-07 21:50:00 +04:00
"\n",
"\n",
"==============================\n",
" Intermediaries and Conquests \n",
"==============================\n",
2025-02-07 22:27:06 +04:00
"Consequent: rank = 446.6186379699145\n",
2025-02-07 21:50:00 +04:00
" lower:\n",
2025-02-07 22:27:06 +04:00
" Accumulate using accumulation_max : 0.7654320987654321\n",
2025-02-07 21:50:00 +04:00
" low:\n",
" Accumulate using accumulation_max : 0.2345679012345679\n",
2025-02-07 22:27:06 +04:00
" average:\n",
" Accumulate using accumulation_max : 0.0\n",
2025-02-07 21:50:00 +04:00
" high:\n",
2025-02-07 22:27:06 +04:00
" Accumulate using accumulation_max : 0.0\n",
2025-02-07 21:50:00 +04:00
" higher:\n",
" Accumulate using accumulation_max : 0.0\n",
"\n",
2025-02-07 22:27:06 +04:00
"446.6186379699145\n"
2025-02-07 21:50:00 +04:00
]
}
],
"source": [
"ranks.input['age_cat'] = 50\n",
"ranks.input['networth'] = 219\n",
"ranks.compute()\n",
"ranks.print_state()\n",
"print(ranks.output['rank'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# тестирование нечёткой системы"
]
},
{
"cell_type": "code",
2025-02-07 22:27:06 +04:00
"execution_count": 22,
2025-02-07 21:50:00 +04:00
"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>Age</th>\n",
" <th>Networth</th>\n",
" <th>Rank</th>\n",
" <th>Pred</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>50</td>\n",
" <td>219.0</td>\n",
" <td>1</td>\n",
2025-02-07 22:27:06 +04:00
" <td>446.618638</td>\n",
2025-02-07 21:50:00 +04:00
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>58</td>\n",
" <td>171.0</td>\n",
" <td>2</td>\n",
2025-02-07 22:27:06 +04:00
" <td>948.540336</td>\n",
2025-02-07 21:50:00 +04:00
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>73</td>\n",
" <td>158.0</td>\n",
" <td>3</td>\n",
2025-02-07 22:27:06 +04:00
" <td>952.599948</td>\n",
2025-02-07 21:50:00 +04:00
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>66</td>\n",
" <td>129.0</td>\n",
" <td>4</td>\n",
2025-02-07 22:27:06 +04:00
" <td>1138.614099</td>\n",
2025-02-07 21:50:00 +04:00
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>91</td>\n",
" <td>118.0</td>\n",
" <td>5</td>\n",
2025-02-07 22:27:06 +04:00
" <td>814.043935</td>\n",
2025-02-07 21:50:00 +04:00
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>49</td>\n",
" <td>111.0</td>\n",
" <td>6</td>\n",
2025-02-07 22:27:06 +04:00
" <td>1473.194767</td>\n",
2025-02-07 21:50:00 +04:00
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>48</td>\n",
" <td>107.0</td>\n",
" <td>7</td>\n",
2025-02-07 22:27:06 +04:00
" <td>1498.674963</td>\n",
2025-02-07 21:50:00 +04:00
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>77</td>\n",
" <td>106.0</td>\n",
" <td>8</td>\n",
2025-02-07 22:27:06 +04:00
" <td>1040.193500</td>\n",
2025-02-07 21:50:00 +04:00
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>66</td>\n",
" <td>91.4</td>\n",
" <td>9</td>\n",
2025-02-07 22:27:06 +04:00
" <td>1309.303429</td>\n",
2025-02-07 21:50:00 +04:00
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>64</td>\n",
" <td>90.7</td>\n",
" <td>10</td>\n",
2025-02-07 22:27:06 +04:00
" <td>1344.732355</td>\n",
2025-02-07 21:50:00 +04:00
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>59</td>\n",
" <td>90.0</td>\n",
" <td>11</td>\n",
2025-02-07 22:27:06 +04:00
" <td>1435.386123</td>\n",
2025-02-07 21:50:00 +04:00
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>80</td>\n",
" <td>82.0</td>\n",
" <td>12</td>\n",
2025-02-07 22:27:06 +04:00
" <td>1200.124026</td>\n",
2025-02-07 21:50:00 +04:00
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>82</td>\n",
" <td>81.2</td>\n",
" <td>13</td>\n",
2025-02-07 22:27:06 +04:00
" <td>1185.800088</td>\n",
2025-02-07 21:50:00 +04:00
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>68</td>\n",
" <td>74.8</td>\n",
" <td>14</td>\n",
2025-02-07 22:27:06 +04:00
" <td>1370.702727</td>\n",
2025-02-07 21:50:00 +04:00
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>37</td>\n",
" <td>67.3</td>\n",
" <td>15</td>\n",
2025-02-07 22:27:06 +04:00
" <td>1689.837998</td>\n",
2025-02-07 21:50:00 +04:00
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Age Networth Rank Pred\n",
2025-02-07 22:27:06 +04:00
"0 50 219.0 1 446.618638\n",
"1 58 171.0 2 948.540336\n",
"2 73 158.0 3 952.599948\n",
"3 66 129.0 4 1138.614099\n",
"4 91 118.0 5 814.043935\n",
"5 49 111.0 6 1473.194767\n",
"6 48 107.0 7 1498.674963\n",
"7 77 106.0 8 1040.193500\n",
"8 66 91.4 9 1309.303429\n",
"9 64 90.7 10 1344.732355\n",
"10 59 90.0 11 1435.386123\n",
"11 80 82.0 12 1200.124026\n",
"12 82 81.2 13 1185.800088\n",
"13 68 74.8 14 1370.702727\n",
"14 37 67.3 15 1689.837998"
2025-02-07 21:50:00 +04:00
]
},
2025-02-07 22:27:06 +04:00
"execution_count": 22,
2025-02-07 21:50:00 +04:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def fuzzy_pred(row):\n",
" ranks.input['age_cat'] = row['Age']\n",
" ranks.input['networth'] = row['Networth']\n",
" ranks.compute()\n",
" return ranks.output['rank']\n",
"\n",
"res = df[['Age', 'Networth', 'Rank ']].head(100)\n",
"\n",
"res['Pred'] = res.apply(fuzzy_pred, axis=1)\n",
"\n",
"res.head(15)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# оценка результатов (метрики для задачи регрессии)"
]
},
{
"cell_type": "code",
2025-02-07 22:27:06 +04:00
"execution_count": 23,
2025-02-07 21:50:00 +04:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
2025-02-07 22:27:06 +04:00
"{'RMSE': 1526.018176278599,\n",
" 'RMAE': 38.87544820606799,\n",
" 'R2': -2805.351442150934}"
2025-02-07 21:50:00 +04:00
]
},
2025-02-07 22:27:06 +04:00
"execution_count": 23,
2025-02-07 21:50:00 +04:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import math\n",
"from sklearn import metrics\n",
"\n",
"\n",
"rmetrics = {}\n",
"rmetrics[\"RMSE\"] = math.sqrt(metrics.mean_squared_error(res['Rank '], res['Pred']))\n",
"rmetrics[\"RMAE\"] = math.sqrt(metrics.mean_absolute_error(res['Rank '], res['Pred']))\n",
"rmetrics[\"R2\"] = metrics.r2_score(res['Rank '], res['Pred'])\n",
"\n",
"rmetrics"
]
2025-02-07 22:11:21 +04:00
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"p.s. менять датасет нет смысла. все подобные датасеты имеют одинаковые колонки. какой не возьми, резульат не хороший"
]
2025-02-07 21:50:00 +04:00
}
],
"metadata": {
"kernelspec": {
"display_name": ".venv",
"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
}