639 lines
168 KiB
Plaintext
639 lines
168 KiB
Plaintext
|
{
|
||
|
"cells": [
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"## Начало лабораторной работы"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 1,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"text/plain": [
|
||
|
"Index(['Pregnancies', 'Glucose', 'BloodPressure', 'SkinThickness', 'Insulin',\n",
|
||
|
" 'BMI', 'DiabetesPedigreeFunction', 'Age', 'Outcome'],\n",
|
||
|
" dtype='object')"
|
||
|
]
|
||
|
},
|
||
|
"execution_count": 1,
|
||
|
"metadata": {},
|
||
|
"output_type": "execute_result"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"import numpy as np\n",
|
||
|
"import skfuzzy as fuzz\n",
|
||
|
"import matplotlib.pyplot as plt\n",
|
||
|
"import pandas as pd\n",
|
||
|
"from skfuzzy import control as ctrl\n",
|
||
|
"\n",
|
||
|
"df = pd.read_csv('C:/Users/TIGR228/Desktop/МИИ/Lab1/AIM-PIbd-31-Afanasev-S-S/static/csv/diabetes.csv')\n",
|
||
|
"#df = df[~df['bedrooms'].between(10, 34)]\n",
|
||
|
"\n",
|
||
|
"df.columns"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"## Определим входные и выходные переменные"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"Входные X: Glucose (уровень глюкозы) и BMI (индекс массы тела)\n",
|
||
|
"\n",
|
||
|
"Выходные Y: Outcome (исход по диабету)"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 2,
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"glucose = ctrl.Antecedent(np.arange(0, 200, 1), \"glucose\")\n",
|
||
|
"bmi = ctrl.Antecedent(np.arange(0, 70, 1), \"bmi\")\n",
|
||
|
"outcome = ctrl.Consequent(np.arange(0, 2, 1), \"outcome\")"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"## Формирование нечетких переменных для лингвистических переменных и их визуализация"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 3,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"name": "stderr",
|
||
|
"output_type": "stream",
|
||
|
"text": [
|
||
|
"c:\\Users\\TIGR228\\Desktop\\МИИ\\Lab1\\AIM-PIbd-31-Afanasev-S-S\\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": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAGyCAYAAAAYveVYAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAACIrklEQVR4nO3deVxUZfvH8c+wg7KIKIuiiDuguJtrluZSuWFqttjeU1lZmJrivptLtlg9lS3P0+aGS2qamZq7pYKCiru4gSsgIOuc3x/nJ08kKuDM3MNwvV8vXuXMmXO+x0G45tznum+DpmkaQgghhBA2wk51ACGEEEIIU5LiRgghhBA2RYobIYQQQtgUKW6EEEIIYVOkuBFCCCGETZHiRgghhBA2RYobIYQQQtgUKW6EEEIIYVOkuBFCCCGETSl3xY2maaSlpSETMwshhBC2SWlx88cff9CzZ08CAgIwGAwsX778rq/ZtGkTzZo1w9nZmTp16vDNN9+U6JjXr1/H09OT69evly60EEIIIaya0uImIyOD8PBw5s+fX6ztT548ySOPPMIDDzxATEwMb731Fi+++CLr1q0zc1IhhBBClBUGa1k402AwsGzZMvr06XPbbUaOHMnq1auJi4sreOzxxx8nJSWFtWvXFus4aWlpeHp6kpqaioeHx73GFkIIIYSVKVP33OzYsYMuXboUeqxbt27s2LHjtq/Jzs4mLS2t0BfA9axcs2YVQiiSdh4+6wBXT6pOIoRQpEwVN0lJSfj6+hZ6zNfXl7S0NG7cuFHka6ZPn46np2fBV2BgIACz1yWYPa8QQoEDiyFpP8T+pDqJEEKRMlXclMaoUaNITU0t+Dpz5gwAS/ee4/fDyYrTCSFMLi5a/298NFjHqLsQwsLKVHHj5+dHcnLhgiQ5ORkPDw9cXV2LfI2zszMeHh6FvgDa163MyKUHuJaRY/bcQggLuXIcLsRAk6fg8hFIjledSAhhIhm5GcXetkwVN23atGHDhg2FHlu/fj1t2rQp8b4m9QojJ8/I+JXyw08ImxEfDY4VoPs0cPGCuKWqEwkhTGTWn7OKva3S4iY9PZ2YmBhiYmIAvdU7JiaGxMREQB9SGjx4cMH2r7zyCidOnGDEiBEcPnyYTz75hEWLFvH222+X+NhVPVyY1DuUlbHnWb3/gknORwihWNwyqN8dXDyhYU8ZmhLCRvxx9g+WHi3+hxWlxc1ff/1F06ZNadq0KQCRkZE0bdqUcePGAXDhwoWCQgegVq1arF69mvXr1xMeHs6cOXP48ssv6datW6mO3ys8gIcb+TFm+QEuXs+69xMSQqhzKQEuxkNYP/3PYf3g2ik4v09pLCHEvUnNTmXC9gm0q9au2K+xmnluLOWf89xcSc+m27w/aBJYiS8GN8dgMKiOKIQojY3TYecnMPwYODhDfh7MqQ9NBkHXKarTCSFKacQfI9h2bhvLei+jqlvVYr2mTN1zYw6VKzozrW8jfjuUzJI9Z1XHEUKUhqbpQ1ANHtELGwB7BwjpDfHLZWhKiDJq3al1/HLyF0a3Hl3swgakuAGga6gf/ZpVZ9LPBzmXUvR8OUIIK5Ycr3dHhUYUfjwsAlLPwNk/1eQSQpTa5RuXmbJzCg/VfIiHaz1cotdKcfP/xvUMoaKLAyOWxGI0yqc8IcqUuKV6d1Rwp8KP12gDFf2ka0qIMkbTNCbumIidwY4x940p8S0jUtz8P09XR2Y9Fs62Y1f4btdp1XGEEMV1c0gqpBc4OBV+zs4eQvvqQ1PGfCXxhBAlt/L4Sjad2cS4NuPwdvEu8euluPmb9nV9ePq+mkxfc5iTl4s/WZAQQqHz+/SuqH8OSd0UFgHpSZB4+zXohBDW40L6BWbsnkGv2r3oXKNzqfYhxc0/jHq4AVU9nHlncSz5MjwlhPWLjwY3HwjqUPTz1VuCZ+D/lmUQQlgto2Zk3PZxVHCswMhWI0u9Hylu/sHNyYE5/cPZm3iNL7acUB1HCHEnRqM+5BTSW++OKorBAKF94OAKvT1cCGG1FiUsYueFnUxqOwkPJ49S70eKmyK0CPLm5Q7BzP31CAlJ11XHEULcztk/9W6osNsMSd0UGgGZl+HUH5bJJYQoscS0RObumcvA+gNpW63tPe1LipvbePuhegT5uBG5KIacPKPqOEKIosRH691QNe6yvlxAU6gUJENTQlipfGM+UVuj8HH1IbJ55D3vT4qb23BxtGdO/yYkJF3n443HVMcRQvyTMV8fkgrtq3dF3YnBoC/HcOhnyMuxSDwhRPH95+B/iL0Uy5R2U3BzdLvn/UlxcweNqnvy+oN1mL/xGPvPpqiOI4T4u8QdehfU3YakbgqNgKwUOLHJnKmEECV09NpRPtr3Ec+GPksz32Ym2acUN3cx5IE6hPh7ELkolqxcmSdDCKsRF613QVVvWbztfUPBp54+lCWEsAq5xlyitkZRw70GQ5oOMdl+pbi5C0d7O+YMCCfxaiZzfk1QHUcIAXrX08EVehdUcWcuNRj0qzeHV0NullnjCSGK54v9X3D02lGmdpiKs72zyfYrxU0x1PN1552u9fhy60l2nbiiOo4Q4tQfevfT7Sbuu52wCMhOg2O/mSeXEKLY4i/H8/n+z3m58cuEVg416b6luCmmF9oH06JmJd5ZEktGtsyVIYRScdFQqZbeBVUSVeqDb5gMTQmhWHZ+NqO3jqZepXq82PhFk+9fiptisrczMLt/OJev5zBtzSHVcYQov/Jy9K6nsIjiD0n9XWhfSFgLOZmmzyaEKJaP9n7E2etnmdZ+Go52jibfvxQ3JVCzcgVGP9KQ73clsvnIJdVxhCifTmzSu55KOiR1U1gE5GbA0XWmTCWEKKY9yXv4z8H/8EbTN6hTqY5ZjiHFTQk91boGHer6MHLJflIzc1XHEaL8iY/Wu558SzlG7x0M/k1kQj8hFMjMzWTM1jE0qdqEp0OeNttxpLgpIYPBwMx+jcnIyWPiz/Gq4whRvuRmwaFV+lWb0gxJ3RQWAUd/hWxZXkUIS5rz1xyuZF1hSrsp2N9t8s17IMVNKQR4uTKhZyjR+86xNi5JdRwhyo9jv0HO9eJP3Hc7oX0hLwsSfjFNLiHEXW07t41FRxYxrPkwanjUMOuxpLgppYhm1ega4kvUsgNcTs9WHUeI8iE+Wu92qlL/3vbjVQOqt5KhKSEsJC0njXHbx9HGvw0D6g8w+/GkuCklg8HA1L6N0IAxy+LQNE11JCFsW06m3uUU2tc0+wuL0K8E3Ugxzf6EELc1Y9cMbuTeYFK7SRjuZUi5mKS4uQdV3J2Z2ieMtfFJLI85pzqOELbt6Dq9y+leh6RuCukDxjx9xmIhhNlsOL2Bn0/8zLut38Wvgp9FjinFzT3q0cifPk0CGLcingupN1THEcJ2xS3Vu5y8g02zPw9/qNlW368QwiyuZl1l0s5JPBD4AD2De1rsuFLcmMDEXmG4OdkzcukBGZ4Swhyyr8PR9aa7anNTaF993pwMWVZFCFPTNI3JOyajaRrj2oyzyHDUTVLcmICnmyMz+zXmjyOX+GF3ouo4QtiehF/07iZT3W9zU0gfQINDK027XyEEq0+u5rfE3xhz3xh8XH0semwpbkykU/2qDGpVg6mrD5F4RaZ1F8Kk4qL17iYvE7ePVqwCtTrKWlNCmFhyRjLTdk3j4VoP0zWoq8WPL8WNCUU90pDKFZ14Z3Es+UYZnhLCJG6k6F1Nph6Suik0Ak5thfSL5tm/EOWMpmmM3z4eV3tXRrcerSSDFDcmVNHZgVmPhfPn6at8ve2k6jhC2IbDq/WuppA+5tl/w55gsIODK8yzfyHKmSVHl7Dt/DYmtJ2Ap7OnkgxS3JjYfcGVeb5dLd5bl8CxizK1uxD3LG6p3tXk4W+e/bt5Q/AD0jUlhAmcuX6GWX/Ool/dfnSo3kFZDiluzGB4t/oEVnIlclEsuflG1XGEKLsyrujdTOYakroprB8k7oBUma9KiNIyakbGbB2Dt4s3w1sOV5pFihszcHG0Z86AJsSfT+PTTcdVxxGi7Dq0EtCgYW/zHqfBw2DvBAeXm/c4Qtiw7w5+x76L+5jcbjI
|
||
|
"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": "iVBORw0KGgoAAAANSUhEUgAAAkIAAAGyCAYAAAAI3auEAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABxtElEQVR4nO3ddXxW5f/H8de93hiMHjW6axsgSBsoSHcpjRiUIJISioSUtJQCFjW6G2SAorDRuYGEbPTI5X1+f+znvt99AdnGtrN4Px+P+6E7O+c+73uH+HBd51wfi2EYBiIiIiLpkI3ZAURERETMokJIRERE0i0VQiIiIpJuqRASERGRdEuFkIiIiKRbKoREREQk3VIhJCIiIumWCiERERFJt1QIiYiISLqV7gohwzC4f/8+WlBbRERETC2Efv31Vxo1akSePHmwWCysWbPmhcfs2bOHChUq4OjoSNGiRVm0aFG8zvngwQPc3Nx48OBBwkKLiIhImmFqIfTo0SM8PT2ZNWtWnPa/ePEiDRo04PXXX8ff359PPvmE7t27s3Xr1iROKiIiImmRJaU0XbVYLKxevZqmTZs+d59BgwaxceNGTpw4EbOtbdu23Lt3jy1btsTpPPfv38fNzY2QkBAyZcr0srFFREQkFUtV9wgdPHiQOnXqxNpWt25dDh48+NxjwsLCuH//fqwXwPGr95IyqoiIiCSWqEjYNSZJ3jpVFUJBQUG4u7vH2ubu7s79+/d58uTJM48ZN24cbm5uMS8PDw8AOnx3iPm/BmK1pogBMREREXmWkGuwuBHsm5wkb5+qCqGEGDJkCCEhITGvK1euANC+Sn7GbDpNt8V/cOdRuMkpRURE5ClnN8Oc6nDvMnTemCSnSFWFUK5cuQgODo61LTg4mEyZMuHs7PzMYxwdHcmUKVOsF8DAeiX5vnMl/K/c451pv/Jb4O0kzy8iIiJxEBkGW4bAkraQvyp8uA8KVE2SU6WqQqhq1ars3Lkz1rbt27dTtWrCfjhvlHRnU9+aFMiWgfbzf2PqjnNEaapMRETEPLcD4Lu34Y8FUO9raPsLuGRNstOZWgg9fPgQf39//P39gejH4/39/bl8+TIQPa3VsWPHmP0//PBDAgMDGThwIGfOnGH27NksX76cfv36JThDbjdnlrz/Kr3fKMa0ned5d8FvBN8PfanPJSIiIglw3Afm1oaw+9BtO7z6IVgsSXpKUx+f37NnD6+//vpT2zt16sSiRYvo3Lkzly5dYs+ePbGO6devH6dOnSJfvnwMHz6czp07x/mc//b4/MGA2/Rd6kek1WBya09eL5EzoR9NRERE4ir8MWweCH4/QrlW0PAbcMyYLKdOMesIJZcXrSN0+2EYn644yp6zN3m/ZiE+q1sSB7tUNYMoIiKSegSfAp8u0TdE158IXu8m+SjQf1Mh9AxWq8EC30AmbDlLmbxuzGjrTf5sLsmcVEREJA0zDDiyGDYPgqyFodUiyFEi2WNoqOMZbGws9KhVhBUfVuX2wzAaTN/HxmPXzY4lIiKSNoSGgE9XWN8XPNvB+7tMKYJAI0Iv3D/kSQRDVx1n4/HrtK+SnxENS+Nkb5sMSUVERNKga4eji6DHd6DxdCjTzNQ4KoTiwDAMfjl0mS/Xn6JQ9gzMbO9N0ZzJcxOXiIhImmAYcHAW7BgFucpBy+8hayGzU2lqLC4sFgvvVinA2l7ViYiy0mjGfpb/cYV0VkOKiIgkzKPb8Esb2DYs+pH4rltTRBEEGhGK9/GPwyMZufYkKw5fpYlXHsY0K4ero10SJBUREUkDLu2Hld0hKgyazoHib5udKBYVQgm0xu8aw1YfJ0dGR2a2r0DZvG6JmFJERCSVs0bBr5Ng73goUB2az4NMecxO9RRNjSVQU++8bOhTkwyOdjSffYCF+y9qqkxERATg/nX4oUl0EVR7EHRcmyKLINCI0Eu/X1hkFOM2nWHRgUu8VdqdiS3Lk9nFIRGSioiIpELnt8PqD8DWAVosgII1zE70r1QIJZJtJ4P4zOcYGRxsmdbOm1cKJl2DOBERkRQnMhx2fQkHZkCxt6Hpt5Ahu9mpXkiFUCK6du8JfZf44XflHv3qFOOj14pia5N8y4SLiIiY4u6l6LWBrh+DOqPg1Y/BJnXcfaNCKJFFRln5Zsc5Zu8JoFqRbHzTxoucGZ0S/TwiIiIpwsk1sK4POGeGVgshb0WzE8WLCqEk4nv+Fp8s8wcMprT2olbxHEl2LhERkWQX8QS2DoU/v49eHbrRNHBKfU9QqxBKQjcfhNF/uT/7zt/io9eK0P+t4tjbpo6hQhERkee6eRZWdIE7AVBvPFTsnKwd4xOTCqEkZrUazPk1gMnbzuGZz43p7bzJl0Wd7EVEJBUyDPD/GTZ9Bm4e0VNh7mXMTvVSVAglk8N/3aHPEn8ehEYwoaUn9crmSrZzi4iIvLSwB7ChPxxfDt4d4J2vwSGD2alemgqhZHTvcTgDfY6x7VQwHasWYGj9UupkLyIiKd/1o9FTYQ+Do+8FKtfS7ESJRoVQMjMMgx8O/sWYjacpmtOVme29KZzDNdlziIiIvJBhwKF5sO1zyFkKWi6EbEXMTpWodOduMrNYLHSqVpBVH1fjSUQUDWf4surIVbNjiYiIxPb4Dix9FzYPhErdoNv2NFcEgUaETM3yMCySEWtOsMrvGi0q5OPLJmXIoE72IiJitsu/gU83iHgETWZDyfpmJ0oyKoRSAJ/DVxm+5gS5Mzsxq30FSuVOGblERCSdsVrBdwrsHgselaN7hbnlMztVktLUWArQsmI+1veugYOtDU1m7efH3/5SJ3sREUleD4Lhp2aw6yuo2R86bUjzRRBoRMjsOLGERkTx1cZT/PTbZd4pm4vxLcrj5mxvdiwREUnrAnbBqh5gsYHm86Dwa2YnSjYqhFKgzcevM3DlMdyc7ZnRzhvv/FnMjiQiImlRVET0NJjvN1DkdWg2F1xzmp0qWWlqLAV6p1xuNvWpSXZXR1rNOcjcvQFYremqXhURkaR27zIsagD7p0GdkfDuynRXBIFGhMyO868ioqxM2naWuXsDqV08B5Nbe5Ld1dHsWCIiktqd3gBrPwZHN2j5XfSN0emUCqFUYM/ZG3y6/Ci2NhamtvGiWtHsZkcSEZHUKCIUtg+PXiSxVCNoPAOc0/ftFyqEUong+6F8stSf3y7epvfrRenzZjHs1MleRETi6tYF8OkMN89B3THwSvdU2zE+MakQSkWirAazdl9g6o5zVCqQlWntvMjt5mx2LBERSemOLoMN/SBT7ug2GbnLm50oxVAhlAoduniHPkv8CIuMYlIrT94s5W52JBERSYnCHsKmz+DoL+DZDupPAkf1t/xvKoRSqbuPwhmw4ig7z9yga/VCDH6nJA52mioTEZH/F3QCVnSG+39Dg8ng1c7sRCmSCqFUzDAMvt9/ifGbT1MyVyZmtvemQLYMZscSEREzGQb8+R1sGQrZi0OrhZC9mNmpUiwNIaRiFouFbjUKsfKjatwPjaDBdF/WHf3b7FgiImKWJ/dgeUfY+ClU6Ajdd6gIegGNCKURD0IjGLr6BOuP/k3bVzwY2agMzg62ZscSEZHkcvVP8OkCoSHQeCaUbmx2olRBhVAaYhgGy/64wqj1J8mf1YWZ7StQ3D2j2bFERCQpWa1wcAbs/BLyeEOL7yBLAbNTpRqaGktDLBYLbSvnZ12vGgA0nunLkkOX1cleRCStengTfmkF20dA1V7QZbOKoHjSiFAa9SQ8ii83nGTJoSs0LJ+bcc3LkdFJnexFRNKMwL3RHeOtkdB8LhStY3aiVEmFUBq3/ujfDFl1nKwZHJjZ3pvy+TKbHUlERF5GVCTs/Rp+nQiFakHzeZAxl9mpUi1NjaVxjTzzsLFPDTK72NPi2wMs2BeoqTIRkdQq5BosbgT7JsEbw6DDahVBL0kjQulEeKSVr7ec4Tvfi7xZMicTW3mSNYOD2bFERCSuzm6BNR+BvXP0DdEFqpqdKE1QIZTO7DwdzIAVR3G0s2VaWy+qFM5mdiQREfk3keGwYyT8NhtK1Icms8Alq9mp0gwVQunQ9ZAn9F3qz5+
|
||
|
"text/plain": [
|
||
|
"<Figure size 640x480 with 1 Axes>"
|
||
|
]
|
||
|
},
|
||
|
"metadata": {},
|
||
|
"output_type": "display_data"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"\n",
|
||
|
"# Определение функций принадлежности для Glucose\n",
|
||
|
"glucose['низкий'] = fuzz.trimf(glucose.universe, [0, 0, 100])\n",
|
||
|
"glucose['средний'] = fuzz.trimf(glucose.universe, [50, 100, 150])\n",
|
||
|
"glucose['высокий'] = fuzz.trimf(glucose.universe, [100, 200, 200])\n",
|
||
|
"\n",
|
||
|
"# Определение функций принадлежности для BMI\n",
|
||
|
"bmi['низкий'] = fuzz.trimf(bmi.universe, [0, 0, 25])\n",
|
||
|
"bmi['средний'] = fuzz.trimf(bmi.universe, [18.5, 25, 30])\n",
|
||
|
"bmi['высокий'] = fuzz.trimf(bmi.universe, [25, 70, 70])\n",
|
||
|
"\n",
|
||
|
"# Определение функций принадлежности для Outcome\n",
|
||
|
"outcome['нет диабета'] = fuzz.trimf(outcome.universe, [0, 0, 1])\n",
|
||
|
"outcome['есть диабет'] = fuzz.trimf(outcome.universe, [0, 1, 1])\n",
|
||
|
"\n",
|
||
|
"# Визуализация функций принадлежности\n",
|
||
|
"glucose.view()\n",
|
||
|
"bmi.view()\n",
|
||
|
"outcome.view()"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"## Формирование и визуализация базы нечетких правил"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 4,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"text/plain": [
|
||
|
"(<Figure size 640x480 with 1 Axes>, <Axes: >)"
|
||
|
]
|
||
|
},
|
||
|
"execution_count": 4,
|
||
|
"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",
|
||
|
"# Определение правил\n",
|
||
|
"rule1 = ctrl.Rule(glucose['низкий'] & bmi['низкий'], outcome['нет диабета'])\n",
|
||
|
"rule2 = ctrl.Rule(glucose['низкий'] & bmi['средний'], outcome['нет диабета'])\n",
|
||
|
"rule3 = ctrl.Rule(glucose['низкий'] & bmi['высокий'], outcome['есть диабет'])\n",
|
||
|
"rule4 = ctrl.Rule(glucose['средний'] & bmi['низкий'], outcome['нет диабета'])\n",
|
||
|
"rule5 = ctrl.Rule(glucose['средний'] & bmi['средний'], outcome['есть диабет'])\n",
|
||
|
"rule6 = ctrl.Rule(glucose['средний'] & bmi['высокий'], outcome['есть диабет'])\n",
|
||
|
"rule7 = ctrl.Rule(glucose['высокий'] & bmi['низкий'], outcome['есть диабет'])\n",
|
||
|
"rule8 = ctrl.Rule(glucose['высокий'] & bmi['средний'], outcome['есть диабет'])\n",
|
||
|
"rule9 = ctrl.Rule(glucose['высокий'] & bmi['высокий'], outcome['есть диабет'])\n",
|
||
|
"\n",
|
||
|
"rule1.view()"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"## Создание нечеткой системы и добавление нечетких правил в базу знаний нечеткой системы"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 5,
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"outcome_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",
|
||
|
"outcomes = ctrl.ControlSystemSimulation(outcome_ctrl)"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"## Пример расчета выходной переменной outcome на основе входных переменных glucose и bmi"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 8,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"name": "stdout",
|
||
|
"output_type": "stream",
|
||
|
"text": [
|
||
|
"=============\n",
|
||
|
" Antecedents \n",
|
||
|
"=============\n",
|
||
|
"Antecedent: glucose = 116\n",
|
||
|
" - низкий : 0.0\n",
|
||
|
" - средний : 0.68\n",
|
||
|
" - высокий : 0.16\n",
|
||
|
"Antecedent: bmi = 33\n",
|
||
|
" - низкий : 0.0\n",
|
||
|
" - средний : 0.0\n",
|
||
|
" - высокий : 0.17777777777777778\n",
|
||
|
"\n",
|
||
|
"=======\n",
|
||
|
" Rules \n",
|
||
|
"=======\n",
|
||
|
"RULE #0:\n",
|
||
|
" IF glucose[низкий] AND bmi[низкий] THEN outcome[нет диабета]\n",
|
||
|
"\tAND aggregation function : fmin\n",
|
||
|
"\tOR aggregation function : fmax\n",
|
||
|
"\n",
|
||
|
" Aggregation (IF-clause):\n",
|
||
|
" - glucose[низкий] : 0.0\n",
|
||
|
" - bmi[низкий] : 0.0\n",
|
||
|
" glucose[низкий] AND bmi[низкий] = 0.0\n",
|
||
|
" Activation (THEN-clause):\n",
|
||
|
" outcome[нет диабета] : 0.0\n",
|
||
|
"\n",
|
||
|
"RULE #1:\n",
|
||
|
" IF glucose[низкий] AND bmi[средний] THEN outcome[нет диабета]\n",
|
||
|
"\tAND aggregation function : fmin\n",
|
||
|
"\tOR aggregation function : fmax\n",
|
||
|
"\n",
|
||
|
" Aggregation (IF-clause):\n",
|
||
|
" - glucose[низкий] : 0.0\n",
|
||
|
" - bmi[средний] : 0.0\n",
|
||
|
" glucose[низкий] AND bmi[средний] = 0.0\n",
|
||
|
" Activation (THEN-clause):\n",
|
||
|
" outcome[нет диабета] : 0.0\n",
|
||
|
"\n",
|
||
|
"RULE #2:\n",
|
||
|
" IF glucose[низкий] AND bmi[высокий] THEN outcome[есть диабет]\n",
|
||
|
"\tAND aggregation function : fmin\n",
|
||
|
"\tOR aggregation function : fmax\n",
|
||
|
"\n",
|
||
|
" Aggregation (IF-clause):\n",
|
||
|
" - glucose[низкий] : 0.0\n",
|
||
|
" - bmi[высокий] : 0.17777777777777778\n",
|
||
|
" glucose[низкий] AND bmi[высокий] = 0.0\n",
|
||
|
" Activation (THEN-clause):\n",
|
||
|
" outcome[есть диабет] : 0.0\n",
|
||
|
"\n",
|
||
|
"RULE #3:\n",
|
||
|
" IF glucose[средний] AND bmi[низкий] THEN outcome[нет диабета]\n",
|
||
|
"\tAND aggregation function : fmin\n",
|
||
|
"\tOR aggregation function : fmax\n",
|
||
|
"\n",
|
||
|
" Aggregation (IF-clause):\n",
|
||
|
" - glucose[средний] : 0.68\n",
|
||
|
" - bmi[низкий] : 0.0\n",
|
||
|
" glucose[средний] AND bmi[низкий] = 0.0\n",
|
||
|
" Activation (THEN-clause):\n",
|
||
|
" outcome[нет диабета] : 0.0\n",
|
||
|
"\n",
|
||
|
"RULE #4:\n",
|
||
|
" IF glucose[средний] AND bmi[средний] THEN outcome[есть диабет]\n",
|
||
|
"\tAND aggregation function : fmin\n",
|
||
|
"\tOR aggregation function : fmax\n",
|
||
|
"\n",
|
||
|
" Aggregation (IF-clause):\n",
|
||
|
" - glucose[средний] : 0.68\n",
|
||
|
" - bmi[средний] : 0.0\n",
|
||
|
" glucose[средний] AND bmi[средний] = 0.0\n",
|
||
|
" Activation (THEN-clause):\n",
|
||
|
" outcome[есть диабет] : 0.0\n",
|
||
|
"\n",
|
||
|
"RULE #5:\n",
|
||
|
" IF glucose[средний] AND bmi[высокий] THEN outcome[есть диабет]\n",
|
||
|
"\tAND aggregation function : fmin\n",
|
||
|
"\tOR aggregation function : fmax\n",
|
||
|
"\n",
|
||
|
" Aggregation (IF-clause):\n",
|
||
|
" - glucose[средний] : 0.68\n",
|
||
|
" - bmi[высокий] : 0.17777777777777778\n",
|
||
|
" glucose[средний] AND bmi[высокий] = 0.17777777777777778\n",
|
||
|
" Activation (THEN-clause):\n",
|
||
|
" outcome[есть диабет] : 0.17777777777777778\n",
|
||
|
"\n",
|
||
|
"RULE #6:\n",
|
||
|
" IF glucose[высокий] AND bmi[низкий] THEN outcome[есть диабет]\n",
|
||
|
"\tAND aggregation function : fmin\n",
|
||
|
"\tOR aggregation function : fmax\n",
|
||
|
"\n",
|
||
|
" Aggregation (IF-clause):\n",
|
||
|
" - glucose[высокий] : 0.16\n",
|
||
|
" - bmi[низкий] : 0.0\n",
|
||
|
" glucose[высокий] AND bmi[низкий] = 0.0\n",
|
||
|
" Activation (THEN-clause):\n",
|
||
|
" outcome[есть диабет] : 0.0\n",
|
||
|
"\n",
|
||
|
"RULE #7:\n",
|
||
|
" IF glucose[высокий] AND bmi[средний] THEN outcome[есть диабет]\n",
|
||
|
"\tAND aggregation function : fmin\n",
|
||
|
"\tOR aggregation function : fmax\n",
|
||
|
"\n",
|
||
|
" Aggregation (IF-clause):\n",
|
||
|
" - glucose[высокий] : 0.16\n",
|
||
|
" - bmi[средний] : 0.0\n",
|
||
|
" glucose[высокий] AND bmi[средний] = 0.0\n",
|
||
|
" Activation (THEN-clause):\n",
|
||
|
" outcome[есть диабет] : 0.0\n",
|
||
|
"\n",
|
||
|
"RULE #8:\n",
|
||
|
" IF glucose[высокий] AND bmi[высокий] THEN outcome[есть диабет]\n",
|
||
|
"\tAND aggregation function : fmin\n",
|
||
|
"\tOR aggregation function : fmax\n",
|
||
|
"\n",
|
||
|
" Aggregation (IF-clause):\n",
|
||
|
" - glucose[высокий] : 0.16\n",
|
||
|
" - bmi[высокий] : 0.17777777777777778\n",
|
||
|
" glucose[высокий] AND bmi[высокий] = 0.16\n",
|
||
|
" Activation (THEN-clause):\n",
|
||
|
" outcome[есть диабет] : 0.16\n",
|
||
|
"\n",
|
||
|
"\n",
|
||
|
"==============================\n",
|
||
|
" Intermediaries and Conquests \n",
|
||
|
"==============================\n",
|
||
|
"Consequent: outcome = 0.5429990966576332\n",
|
||
|
" нет диабета:\n",
|
||
|
" Accumulate using accumulation_max : 0.0\n",
|
||
|
" есть диабет:\n",
|
||
|
" Accumulate using accumulation_max : 0.17777777777777778\n",
|
||
|
"\n"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"data": {
|
||
|
"text/plain": [
|
||
|
"np.float64(0.5429990966576332)"
|
||
|
]
|
||
|
},
|
||
|
"execution_count": 8,
|
||
|
"metadata": {},
|
||
|
"output_type": "execute_result"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"outcomes.input[\"glucose\"] = 116\n",
|
||
|
"outcomes.input[\"bmi\"] = 33\n",
|
||
|
"outcomes.compute()\n",
|
||
|
"outcomes.print_state()\n",
|
||
|
"outcomes.output[\"outcome\"]"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"## Тестирование нечеткой системы"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 11,
|
||
|
"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>Glucose</th>\n",
|
||
|
" <th>BMI</th>\n",
|
||
|
" <th>Outcome</th>\n",
|
||
|
" <th>Pred</th>\n",
|
||
|
" </tr>\n",
|
||
|
" </thead>\n",
|
||
|
" <tbody>\n",
|
||
|
" <tr>\n",
|
||
|
" <th>0</th>\n",
|
||
|
" <td>148</td>\n",
|
||
|
" <td>33.6</td>\n",
|
||
|
" <td>1</td>\n",
|
||
|
" <td>0.546095</td>\n",
|
||
|
" </tr>\n",
|
||
|
" <tr>\n",
|
||
|
" <th>1</th>\n",
|
||
|
" <td>85</td>\n",
|
||
|
" <td>26.6</td>\n",
|
||
|
" <td>0</td>\n",
|
||
|
" <td>0.598549</td>\n",
|
||
|
" </tr>\n",
|
||
|
" <tr>\n",
|
||
|
" <th>2</th>\n",
|
||
|
" <td>183</td>\n",
|
||
|
" <td>23.3</td>\n",
|
||
|
" <td>1</td>\n",
|
||
|
" <td>0.648593</td>\n",
|
||
|
" </tr>\n",
|
||
|
" <tr>\n",
|
||
|
" <th>3</th>\n",
|
||
|
" <td>89</td>\n",
|
||
|
" <td>28.1</td>\n",
|
||
|
" <td>0</td>\n",
|
||
|
" <td>0.558266</td>\n",
|
||
|
" </tr>\n",
|
||
|
" <tr>\n",
|
||
|
" <th>4</th>\n",
|
||
|
" <td>137</td>\n",
|
||
|
" <td>43.1</td>\n",
|
||
|
" <td>1</td>\n",
|
||
|
" <td>0.585501</td>\n",
|
||
|
" </tr>\n",
|
||
|
" <tr>\n",
|
||
|
" <th>5</th>\n",
|
||
|
" <td>116</td>\n",
|
||
|
" <td>25.6</td>\n",
|
||
|
" <td>0</td>\n",
|
||
|
" <td>0.640808</td>\n",
|
||
|
" </tr>\n",
|
||
|
" <tr>\n",
|
||
|
" <th>6</th>\n",
|
||
|
" <td>78</td>\n",
|
||
|
" <td>31.0</td>\n",
|
||
|
" <td>1</td>\n",
|
||
|
" <td>0.532540</td>\n",
|
||
|
" </tr>\n",
|
||
|
" <tr>\n",
|
||
|
" <th>7</th>\n",
|
||
|
" <td>115</td>\n",
|
||
|
" <td>35.3</td>\n",
|
||
|
" <td>0</td>\n",
|
||
|
" <td>0.554757</td>\n",
|
||
|
" </tr>\n",
|
||
|
" <tr>\n",
|
||
|
" <th>8</th>\n",
|
||
|
" <td>197</td>\n",
|
||
|
" <td>30.5</td>\n",
|
||
|
" <td>1</td>\n",
|
||
|
" <td>0.529893</td>\n",
|
||
|
" </tr>\n",
|
||
|
" <tr>\n",
|
||
|
" <th>9</th>\n",
|
||
|
" <td>125</td>\n",
|
||
|
" <td>0.0</td>\n",
|
||
|
" <td>1</td>\n",
|
||
|
" <td>0.452381</td>\n",
|
||
|
" </tr>\n",
|
||
|
" <tr>\n",
|
||
|
" <th>10</th>\n",
|
||
|
" <td>110</td>\n",
|
||
|
" <td>37.6</td>\n",
|
||
|
" <td>0</td>\n",
|
||
|
" <td>0.566202</td>\n",
|
||
|
" </tr>\n",
|
||
|
" <tr>\n",
|
||
|
" <th>11</th>\n",
|
||
|
" <td>168</td>\n",
|
||
|
" <td>38.0</td>\n",
|
||
|
" <td>1</td>\n",
|
||
|
" <td>0.568158</td>\n",
|
||
|
" </tr>\n",
|
||
|
" <tr>\n",
|
||
|
" <th>12</th>\n",
|
||
|
" <td>139</td>\n",
|
||
|
" <td>27.1</td>\n",
|
||
|
" <td>0</td>\n",
|
||
|
" <td>0.589627</td>\n",
|
||
|
" </tr>\n",
|
||
|
" <tr>\n",
|
||
|
" <th>13</th>\n",
|
||
|
" <td>189</td>\n",
|
||
|
" <td>30.1</td>\n",
|
||
|
" <td>1</td>\n",
|
||
|
" <td>0.527766</td>\n",
|
||
|
" </tr>\n",
|
||
|
" <tr>\n",
|
||
|
" <th>14</th>\n",
|
||
|
" <td>166</td>\n",
|
||
|
" <td>25.8</td>\n",
|
||
|
" <td>1</td>\n",
|
||
|
" <td>0.637910</td>\n",
|
||
|
" </tr>\n",
|
||
|
" </tbody>\n",
|
||
|
"</table>\n",
|
||
|
"</div>"
|
||
|
],
|
||
|
"text/plain": [
|
||
|
" Glucose BMI Outcome Pred\n",
|
||
|
"0 148 33.6 1 0.546095\n",
|
||
|
"1 85 26.6 0 0.598549\n",
|
||
|
"2 183 23.3 1 0.648593\n",
|
||
|
"3 89 28.1 0 0.558266\n",
|
||
|
"4 137 43.1 1 0.585501\n",
|
||
|
"5 116 25.6 0 0.640808\n",
|
||
|
"6 78 31.0 1 0.532540\n",
|
||
|
"7 115 35.3 0 0.554757\n",
|
||
|
"8 197 30.5 1 0.529893\n",
|
||
|
"9 125 0.0 1 0.452381\n",
|
||
|
"10 110 37.6 0 0.566202\n",
|
||
|
"11 168 38.0 1 0.568158\n",
|
||
|
"12 139 27.1 0 0.589627\n",
|
||
|
"13 189 30.1 1 0.527766\n",
|
||
|
"14 166 25.8 1 0.637910"
|
||
|
]
|
||
|
},
|
||
|
"execution_count": 11,
|
||
|
"metadata": {},
|
||
|
"output_type": "execute_result"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"# Функция для предсказания\n",
|
||
|
"def fuzzy_pred(row):\n",
|
||
|
" outcomes.input['glucose'] = row['Glucose']\n",
|
||
|
" outcomes.input['bmi'] = row['BMI']\n",
|
||
|
" outcomes.compute()\n",
|
||
|
" return outcomes.output['outcome']\n",
|
||
|
"\n",
|
||
|
"res = df[['Glucose', 'BMI', 'Outcome']].head(100)\n",
|
||
|
"\n",
|
||
|
"res['Pred'] = res.apply(fuzzy_pred, axis=1)\n",
|
||
|
"\n",
|
||
|
"res.head(15)"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"## Оценка результатов на основе метрик для задачи регрессии"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 12,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"text/plain": [
|
||
|
"{'RMSE': 0.5172348603024656,\n",
|
||
|
" 'RMAE': np.float64(0.5107233852036642),\n",
|
||
|
" 'R2': -0.14771300176795843}"
|
||
|
]
|
||
|
},
|
||
|
"execution_count": 12,
|
||
|
"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['Outcome'], res['Pred']))\n",
|
||
|
"rmetrics[\"RMAE\"] = metrics.mean_absolute_error(res['Outcome'], res['Pred'])\n",
|
||
|
"rmetrics[\"R2\"] = metrics.r2_score(res['Outcome'], res['Pred'])\n",
|
||
|
"\n",
|
||
|
"rmetrics"
|
||
|
]
|
||
|
}
|
||
|
],
|
||
|
"metadata": {
|
||
|
"kernelspec": {
|
||
|
"display_name": "aimenv",
|
||
|
"language": "python",
|
||
|
"name": "python3"
|
||
|
},
|
||
|
"language_info": {
|
||
|
"codemirror_mode": {
|
||
|
"name": "ipython",
|
||
|
"version": 3
|
||
|
},
|
||
|
"file_extension": ".py",
|
||
|
"mimetype": "text/x-python",
|
||
|
"name": "python",
|
||
|
"nbconvert_exporter": "python",
|
||
|
"pygments_lexer": "ipython3",
|
||
|
"version": "3.12.5"
|
||
|
}
|
||
|
},
|
||
|
"nbformat": 4,
|
||
|
"nbformat_minor": 2
|
||
|
}
|