diff --git a/README.md b/README.md index 50e73109a34f188df4fbc85796c181622413d341..ae001fafffeb819bd2bc61c2464fd9eec3aa4e58 100644 --- a/README.md +++ b/README.md @@ -1 +1,97 @@ -womens-diabetics-prediction-system \ No newline at end of file + +**Members:** + +Member 1: Haque, Syed Wassi Ul 22108223 +<br/><br/> +Member 2: Mahir, Wasik , 00817406 + +<br/><br/> + + +**Title:** Women Diabetes Prediction System + +<br/><br/> + +**MyGit Repository Link: https://mygit.th-deg.de/sh13223/womens-diabetics-prediction-system** + +**MyGit Wiki Repository Link:__** + +<br/><br/> + + +**Project description:** + +A machine learning model designed to predict diabetes in female patients. +This project uses SVM(Support Vector Machine) Algorithm to train on a given dataset. +Interactive GUI is developed using PyQt6 and css. + + +**Prerequisites:** + +1. Pycharm or Vscode or any types of IDE. + +2. Creating a virtual environment. + +3. Libraries to be installed in virtual environment: + - PyQt6 = 6.6.1 + - Pyqtgraph = 0.13.3 + - Python = 3.11.7 + - Numpy = 1.26.3 + - Matplotlib = 3.8.2 + - Pandas = 2.1.4 + - Scikit-learn = 1.3.2 + +4. Diabetes Dataset(Source: Kaggle): +Link to download the data: (https://www.kaggle.com/code/sandragracenelson/diabetes-prediction/input) + +**Installation:** + + - Create and run a virtual environment + + - Clone the git repository with the dataset file. + + - Install necessary packages from requirement.txt file. + + - Run main_diabetics.py. + +**Basic Usage:** + +1. Run the main_diabetics.py in any IDE. +2. Upon execution, a window will prompt the user to input their Glucose level, Blood Pressure, Age, Insulin, BMI, and Pregnancy status using sliding buttons. For Pregnancy status, use a tick button to indicate if applicable. +3. After inputting all details, click the "Predict" button to determine diabetic status." +4. To exit the widget, simply press the cross button in the top right corner of the widget. + + + +**Implementation of the Requests:** +1. A Desktop App with PyQT6 has been developed. +2. A requirements.txt file is added with the necessary python libraries. +3. A README.md file is created with the structure description. +4. Virtual environment (venv) is created and used. +5. A free data source has been from Kaggle(Link has given above). +6. Data has been imported using csv format. (File name: diabetes_clean_03042021.csv) and can be seen from the terminal after running the app. +7. The data must be analyzed with Pandas methods, so that a user gets an overview. +8. The following functions have been used to get the overview of the data: dataframe.info(), dataframe.describe(),dataframe.corr(), dataframe.head(), dataframe.tail(). +9. Three input widgets have been created. +10. Model has been trained using Scikit training model algorithm.( for our case we used SVM model algorithm) +11. Two output canvas have been for data visualization. +12. The app is reacting interactively according to the change of input parameter with a new prediction. + +<br/><br/> + +**Contribution List:** + + +1. Syed Wassi Ul Haque: + - Worked on Collection and Preprocessing of Dataset using Pandas. + - Modifying and Preparing Data with use of numpy arrays. + - Bug solving and creating Main window Graph to visualize the data on app using matplotlib.pyplot. + - Creating Histogram window Interface using PyQt6. + - Designing the app using css stylesheet. + +2. Wasik Mahir: + - Creating a GUI Interface using PyQt6( Main window, Plot graph window) + - Getting User-Inputs using different GUI elements or creating widgets. + - Training and working Scikit-learn SVM Model. + - Integrating or connecting Scikit learn model with pyqt6 in order to get predictions in the app. + - Designing the app using css stylesheet. diff --git a/chart-medium.png b/chart-medium.png new file mode 100644 index 0000000000000000000000000000000000000000..a4093d0d4a9f04b7b68547c0d2c23de13d2cd0d7 Binary files /dev/null and b/chart-medium.png differ diff --git a/diabetes_clean_03042021.csv b/diabetes_clean_03042021.csv new file mode 100644 index 0000000000000000000000000000000000000000..46fe6af0da2d8b94c287546d264b747fc3d0aaeb --- /dev/null +++ b/diabetes_clean_03042021.csv @@ -0,0 +1,769 @@ +count,Pregnancies,Glucose,BloodPressure,SkinThickness,Insulin,BMI,DiabetesPedigreeFunction,Age,Outcome +0,1,148.0,72.0,35.0,79.79947916666667,33.6,0.627,50,1 +1,1,85.0,66.0,29.0,79.79947916666667,26.6,0.351,31,0 +2,1,183.0,64.0,20.536458333333332,79.79947916666667,23.3,0.672,32,1 +3,1,89.0,66.0,23.0,94.0,28.1,0.167,21,0 +4,0,137.0,40.0,35.0,168.0,43.1,2.288,33,1 +5,1,116.0,74.0,20.536458333333332,79.79947916666667,25.6,0.201,30,0 +6,1,78.0,50.0,32.0,88.0,31.0,0.248,26,1 +7,1,115.0,69.10546875,20.536458333333332,79.79947916666667,35.3,0.134,29,0 +8,1,197.0,70.0,45.0,543.0,30.5,0.158,53,1 +9,1,125.0,96.0,20.536458333333332,79.79947916666667,31.992578124999977,0.232,54,1 +10,1,110.0,92.0,20.536458333333332,79.79947916666667,37.6,0.191,30,0 +11,1,168.0,74.0,20.536458333333332,79.79947916666667,38.0,0.537,34,1 +12,1,139.0,80.0,20.536458333333332,79.79947916666667,27.1,1.441,57,0 +13,1,189.0,60.0,23.0,846.0,30.1,0.398,59,1 +14,1,166.0,72.0,19.0,175.0,25.8,0.587,51,1 +15,1,100.0,69.10546875,20.536458333333332,79.79947916666667,30.0,0.484,32,1 +16,0,118.0,84.0,47.0,230.0,45.8,0.551,31,1 +17,1,107.0,74.0,20.536458333333332,79.79947916666667,29.6,0.254,31,1 +18,1,103.0,30.0,38.0,83.0,43.3,0.183,33,0 +19,1,115.0,70.0,30.0,96.0,34.6,0.529,32,1 +20,1,126.0,88.0,41.0,235.0,39.3,0.704,27,0 +21,1,99.0,84.0,20.536458333333332,79.79947916666667,35.4,0.388,50,0 +22,1,196.0,90.0,20.536458333333332,79.79947916666667,39.8,0.451,41,1 +23,1,119.0,80.0,35.0,79.79947916666667,29.0,0.263,29,1 +24,1,143.0,94.0,33.0,146.0,36.6,0.254,51,1 +25,1,125.0,70.0,26.0,115.0,31.1,0.205,41,1 +26,1,147.0,76.0,20.536458333333332,79.79947916666667,39.4,0.257,43,1 +27,1,97.0,66.0,15.0,140.0,23.2,0.487,22,0 +28,1,145.0,82.0,19.0,110.0,22.2,0.245,57,0 +29,1,117.0,92.0,20.536458333333332,79.79947916666667,34.1,0.337,38,0 +30,1,109.0,75.0,26.0,79.79947916666667,36.0,0.546,60,0 +31,1,158.0,76.0,36.0,245.0,31.6,0.851,28,1 +32,1,88.0,58.0,11.0,54.0,24.8,0.267,22,0 +33,1,92.0,92.0,20.536458333333332,79.79947916666667,19.9,0.188,28,0 +34,1,122.0,78.0,31.0,79.79947916666667,27.6,0.512,45,0 +35,1,103.0,60.0,33.0,192.0,24.0,0.966,33,0 +36,1,138.0,76.0,20.536458333333332,79.79947916666667,33.2,0.42,35,0 +37,1,102.0,76.0,37.0,79.79947916666667,32.9,0.665,46,1 +38,1,90.0,68.0,42.0,79.79947916666667,38.2,0.503,27,1 +39,1,111.0,72.0,47.0,207.0,37.1,1.39,56,1 +40,1,180.0,64.0,25.0,70.0,34.0,0.271,26,0 +41,1,133.0,84.0,20.536458333333332,79.79947916666667,40.2,0.696,37,0 +42,1,106.0,92.0,18.0,79.79947916666667,22.7,0.235,48,0 +43,1,171.0,110.0,24.0,240.0,45.4,0.721,54,1 +44,1,159.0,64.0,20.536458333333332,79.79947916666667,27.4,0.294,40,0 +45,0,180.0,66.0,39.0,79.79947916666667,42.0,1.893,25,1 +46,1,146.0,56.0,20.536458333333332,79.79947916666667,29.7,0.564,29,0 +47,1,71.0,70.0,27.0,79.79947916666667,28.0,0.586,22,0 +48,1,103.0,66.0,32.0,79.79947916666667,39.1,0.344,31,1 +49,1,105.0,69.10546875,20.536458333333332,79.79947916666667,31.992578124999977,0.305,24,0 +50,1,103.0,80.0,11.0,82.0,19.4,0.491,22,0 +51,1,101.0,50.0,15.0,36.0,24.2,0.526,26,0 +52,1,88.0,66.0,21.0,23.0,24.4,0.342,30,0 +53,1,176.0,90.0,34.0,300.0,33.7,0.467,58,1 +54,1,150.0,66.0,42.0,342.0,34.7,0.718,42,0 +55,1,73.0,50.0,10.0,79.79947916666667,23.0,0.248,21,0 +56,1,187.0,68.0,39.0,304.0,37.7,0.254,41,1 +57,0,100.0,88.0,60.0,110.0,46.8,0.962,31,0 +58,0,146.0,82.0,20.536458333333332,79.79947916666667,40.5,1.781,44,0 +59,0,105.0,64.0,41.0,142.0,41.5,0.173,22,0 +60,1,84.0,69.10546875,20.536458333333332,79.79947916666667,31.992578124999977,0.304,21,0 +61,1,133.0,72.0,20.536458333333332,79.79947916666667,32.9,0.27,39,1 +62,1,44.0,62.0,20.536458333333332,79.79947916666667,25.0,0.587,36,0 +63,1,141.0,58.0,34.0,128.0,25.4,0.699,24,0 +64,1,114.0,66.0,20.536458333333332,79.79947916666667,32.8,0.258,42,1 +65,1,99.0,74.0,27.0,79.79947916666667,29.0,0.203,32,0 +66,0,109.0,88.0,30.0,79.79947916666667,32.5,0.855,38,1 +67,1,109.0,92.0,20.536458333333332,79.79947916666667,42.7,0.845,54,0 +68,1,95.0,66.0,13.0,38.0,19.6,0.334,25,0 +69,1,146.0,85.0,27.0,100.0,28.9,0.189,27,0 +70,1,100.0,66.0,20.0,90.0,32.9,0.867,28,1 +71,1,139.0,64.0,35.0,140.0,28.6,0.411,26,0 +72,1,126.0,90.0,20.536458333333332,79.79947916666667,43.4,0.583,42,1 +73,1,129.0,86.0,20.0,270.0,35.1,0.231,23,0 +74,1,79.0,75.0,30.0,79.79947916666667,32.0,0.396,22,0 +75,1,120.89453125,48.0,20.0,79.79947916666667,24.7,0.14,22,0 +76,1,62.0,78.0,20.536458333333332,79.79947916666667,32.6,0.391,41,0 +77,1,95.0,72.0,33.0,79.79947916666667,37.7,0.37,27,0 +78,0,131.0,69.10546875,20.536458333333332,79.79947916666667,43.2,0.27,26,1 +79,1,112.0,66.0,22.0,79.79947916666667,25.0,0.307,24,0 +80,1,113.0,44.0,13.0,79.79947916666667,22.4,0.14,22,0 +81,1,74.0,69.10546875,20.536458333333332,79.79947916666667,31.992578124999977,0.102,22,0 +82,1,83.0,78.0,26.0,71.0,29.3,0.767,36,0 +83,0,101.0,65.0,28.0,79.79947916666667,24.6,0.237,22,0 +84,1,137.0,108.0,20.536458333333332,79.79947916666667,48.8,0.227,37,1 +85,1,110.0,74.0,29.0,125.0,32.4,0.698,27,0 +86,1,106.0,72.0,54.0,79.79947916666667,36.6,0.178,45,0 +87,1,100.0,68.0,25.0,71.0,38.5,0.324,26,0 +88,1,136.0,70.0,32.0,110.0,37.1,0.153,43,1 +89,1,107.0,68.0,19.0,79.79947916666667,26.5,0.165,24,0 +90,1,80.0,55.0,20.536458333333332,79.79947916666667,19.1,0.258,21,0 +91,1,123.0,80.0,15.0,176.0,32.0,0.443,34,0 +92,1,81.0,78.0,40.0,48.0,46.7,0.261,42,0 +93,1,134.0,72.0,20.536458333333332,79.79947916666667,23.8,0.277,60,1 +94,1,142.0,82.0,18.0,64.0,24.7,0.761,21,0 +95,1,144.0,72.0,27.0,228.0,33.9,0.255,40,0 +96,1,92.0,62.0,28.0,79.79947916666667,31.6,0.13,24,0 +97,1,71.0,48.0,18.0,76.0,20.4,0.323,22,0 +98,1,93.0,50.0,30.0,64.0,28.7,0.356,23,0 +99,1,122.0,90.0,51.0,220.0,49.7,0.325,31,1 +100,1,163.0,72.0,20.536458333333332,79.79947916666667,39.0,1.222,33,1 +101,1,151.0,60.0,20.536458333333332,79.79947916666667,26.1,0.179,22,0 +102,0,125.0,96.0,20.536458333333332,79.79947916666667,22.5,0.262,21,0 +103,1,81.0,72.0,18.0,40.0,26.6,0.283,24,0 +104,1,85.0,65.0,20.536458333333332,79.79947916666667,39.6,0.93,27,0 +105,1,126.0,56.0,29.0,152.0,28.7,0.801,21,0 +106,1,96.0,122.0,20.536458333333332,79.79947916666667,22.4,0.207,27,0 +107,1,144.0,58.0,28.0,140.0,29.5,0.287,37,0 +108,1,83.0,58.0,31.0,18.0,34.3,0.336,25,0 +109,0,95.0,85.0,25.0,36.0,37.4,0.247,24,1 +110,1,171.0,72.0,33.0,135.0,33.3,0.199,24,1 +111,1,155.0,62.0,26.0,495.0,34.0,0.543,46,1 +112,1,89.0,76.0,34.0,37.0,31.2,0.192,23,0 +113,1,76.0,62.0,20.536458333333332,79.79947916666667,34.0,0.391,25,0 +114,1,160.0,54.0,32.0,175.0,30.5,0.588,39,1 +115,1,146.0,92.0,20.536458333333332,79.79947916666667,31.2,0.539,61,1 +116,1,124.0,74.0,20.536458333333332,79.79947916666667,34.0,0.22,38,1 +117,1,78.0,48.0,20.536458333333332,79.79947916666667,33.7,0.654,25,0 +118,1,97.0,60.0,23.0,79.79947916666667,28.2,0.443,22,0 +119,1,99.0,76.0,15.0,51.0,23.2,0.223,21,0 +120,0,162.0,76.0,56.0,100.0,53.2,0.759,25,1 +121,1,111.0,64.0,39.0,79.79947916666667,34.2,0.26,24,0 +122,1,107.0,74.0,30.0,100.0,33.6,0.404,23,0 +123,1,132.0,80.0,20.536458333333332,79.79947916666667,26.8,0.186,69,0 +124,0,113.0,76.0,20.536458333333332,79.79947916666667,33.3,0.278,23,1 +125,1,88.0,30.0,42.0,99.0,55.0,0.496,26,1 +126,1,120.0,70.0,30.0,135.0,42.9,0.452,30,0 +127,1,118.0,58.0,36.0,94.0,33.3,0.261,23,0 +128,1,117.0,88.0,24.0,145.0,34.5,0.403,40,1 +129,0,105.0,84.0,20.536458333333332,79.79947916666667,27.9,0.741,62,1 +130,1,173.0,70.0,14.0,168.0,29.7,0.361,33,1 +131,1,122.0,56.0,20.536458333333332,79.79947916666667,33.3,1.114,33,1 +132,1,170.0,64.0,37.0,225.0,34.5,0.356,30,1 +133,1,84.0,74.0,31.0,79.79947916666667,38.3,0.457,39,0 +134,1,96.0,68.0,13.0,49.0,21.1,0.647,26,0 +135,1,125.0,60.0,20.0,140.0,33.8,0.088,31,0 +136,0,100.0,70.0,26.0,50.0,30.8,0.597,21,0 +137,0,93.0,60.0,25.0,92.0,28.7,0.532,22,0 +138,0,129.0,80.0,20.536458333333332,79.79947916666667,31.2,0.703,29,0 +139,1,105.0,72.0,29.0,325.0,36.9,0.159,28,0 +140,1,128.0,78.0,20.536458333333332,79.79947916666667,21.1,0.268,55,0 +141,1,106.0,82.0,30.0,79.79947916666667,39.5,0.286,38,0 +142,1,108.0,52.0,26.0,63.0,32.5,0.318,22,0 +143,1,108.0,66.0,20.536458333333332,79.79947916666667,32.4,0.272,42,1 +144,1,154.0,62.0,31.0,284.0,32.8,0.237,23,0 +145,0,102.0,75.0,23.0,79.79947916666667,31.992578124999977,0.572,21,0 +146,1,57.0,80.0,37.0,79.79947916666667,32.8,0.096,41,0 +147,1,106.0,64.0,35.0,119.0,30.5,1.4,34,0 +148,1,147.0,78.0,20.536458333333332,79.79947916666667,33.7,0.218,65,0 +149,1,90.0,70.0,17.0,79.79947916666667,27.3,0.085,22,0 +150,1,136.0,74.0,50.0,204.0,37.4,0.399,24,0 +151,1,114.0,65.0,20.536458333333332,79.79947916666667,21.9,0.432,37,0 +152,1,156.0,86.0,28.0,155.0,34.3,1.189,42,1 +153,1,153.0,82.0,42.0,485.0,40.6,0.687,23,0 +154,1,188.0,78.0,20.536458333333332,79.79947916666667,47.9,0.137,43,1 +155,1,152.0,88.0,44.0,79.79947916666667,50.0,0.337,36,1 +156,1,99.0,52.0,15.0,94.0,24.6,0.637,21,0 +157,1,109.0,56.0,21.0,135.0,25.2,0.833,23,0 +158,1,88.0,74.0,19.0,53.0,29.0,0.229,22,0 +159,1,163.0,72.0,41.0,114.0,40.9,0.817,47,1 +160,1,151.0,90.0,38.0,79.79947916666667,29.7,0.294,36,0 +161,1,102.0,74.0,40.0,105.0,37.2,0.204,45,0 +162,0,114.0,80.0,34.0,285.0,44.2,0.167,27,0 +163,1,100.0,64.0,23.0,79.79947916666667,29.7,0.368,21,0 +164,0,131.0,88.0,20.536458333333332,79.79947916666667,31.6,0.743,32,1 +165,1,104.0,74.0,18.0,156.0,29.9,0.722,41,1 +166,1,148.0,66.0,25.0,79.79947916666667,32.5,0.256,22,0 +167,1,120.0,68.0,20.536458333333332,79.79947916666667,29.6,0.709,34,0 +168,1,110.0,66.0,20.536458333333332,79.79947916666667,31.9,0.471,29,0 +169,1,111.0,90.0,12.0,78.0,28.4,0.495,29,0 +170,1,102.0,82.0,20.536458333333332,79.79947916666667,30.8,0.18,36,1 +171,1,134.0,70.0,23.0,130.0,35.4,0.542,29,1 +172,1,87.0,69.10546875,23.0,79.79947916666667,28.9,0.773,25,0 +173,1,79.0,60.0,42.0,48.0,43.5,0.678,23,0 +174,1,75.0,64.0,24.0,55.0,29.7,0.37,33,0 +175,1,179.0,72.0,42.0,130.0,32.7,0.719,36,1 +176,1,85.0,78.0,20.536458333333332,79.79947916666667,31.2,0.382,42,0 +177,0,129.0,110.0,46.0,130.0,67.1,0.319,26,1 +178,1,143.0,78.0,20.536458333333332,79.79947916666667,45.0,0.19,47,0 +179,1,130.0,82.0,20.536458333333332,79.79947916666667,39.1,0.956,37,1 +180,1,87.0,80.0,20.536458333333332,79.79947916666667,23.2,0.084,32,0 +181,0,119.0,64.0,18.0,92.0,34.9,0.725,23,0 +182,1,120.89453125,74.0,20.0,23.0,27.7,0.299,21,0 +183,1,73.0,60.0,20.536458333333332,79.79947916666667,26.8,0.268,27,0 +184,1,141.0,74.0,20.536458333333332,79.79947916666667,27.6,0.244,40,0 +185,1,194.0,68.0,28.0,79.79947916666667,35.9,0.745,41,1 +186,1,181.0,68.0,36.0,495.0,30.1,0.615,60,1 +187,1,128.0,98.0,41.0,58.0,32.0,1.321,33,1 +188,1,109.0,76.0,39.0,114.0,27.9,0.64,31,1 +189,1,139.0,80.0,35.0,160.0,31.6,0.361,25,1 +190,1,111.0,62.0,20.536458333333332,79.79947916666667,22.6,0.142,21,0 +191,1,123.0,70.0,44.0,94.0,33.1,0.374,40,0 +192,1,159.0,66.0,20.536458333333332,79.79947916666667,30.4,0.383,36,1 +193,1,135.0,69.10546875,20.536458333333332,79.79947916666667,52.3,0.578,40,1 +194,1,85.0,55.0,20.0,79.79947916666667,24.4,0.136,42,0 +195,1,158.0,84.0,41.0,210.0,39.4,0.395,29,1 +196,1,105.0,58.0,20.536458333333332,79.79947916666667,24.3,0.187,21,0 +197,1,107.0,62.0,13.0,48.0,22.9,0.678,23,1 +198,1,109.0,64.0,44.0,99.0,34.8,0.905,26,1 +199,1,148.0,60.0,27.0,318.0,30.9,0.15,29,1 +200,0,113.0,80.0,16.0,79.79947916666667,31.0,0.874,21,0 +201,1,138.0,82.0,20.536458333333332,79.79947916666667,40.1,0.236,28,0 +202,0,108.0,68.0,20.0,79.79947916666667,27.3,0.787,32,0 +203,1,99.0,70.0,16.0,44.0,20.4,0.235,27,0 +204,1,103.0,72.0,32.0,190.0,37.7,0.324,55,0 +205,1,111.0,72.0,28.0,79.79947916666667,23.9,0.407,27,0 +206,1,196.0,76.0,29.0,280.0,37.5,0.605,57,1 +207,1,162.0,104.0,20.536458333333332,79.79947916666667,37.7,0.151,52,1 +208,1,96.0,64.0,27.0,87.0,33.2,0.289,21,0 +209,1,184.0,84.0,33.0,79.79947916666667,35.5,0.355,41,1 +210,1,81.0,60.0,22.0,79.79947916666667,27.7,0.29,25,0 +211,0,147.0,85.0,54.0,79.79947916666667,42.8,0.375,24,0 +212,1,179.0,95.0,31.0,79.79947916666667,34.2,0.164,60,0 +213,0,140.0,65.0,26.0,130.0,42.6,0.431,24,1 +214,1,112.0,82.0,32.0,175.0,34.2,0.26,36,1 +215,1,151.0,70.0,40.0,271.0,41.8,0.742,38,1 +216,1,109.0,62.0,41.0,129.0,35.8,0.514,25,1 +217,1,125.0,68.0,30.0,120.0,30.0,0.464,32,0 +218,1,85.0,74.0,22.0,79.79947916666667,29.0,1.224,32,1 +219,1,112.0,66.0,20.536458333333332,79.79947916666667,37.8,0.261,41,1 +220,0,177.0,60.0,29.0,478.0,34.6,1.072,21,1 +221,1,158.0,90.0,20.536458333333332,79.79947916666667,31.6,0.805,66,1 +222,1,119.0,69.10546875,20.536458333333332,79.79947916666667,25.2,0.209,37,0 +223,1,142.0,60.0,33.0,190.0,28.8,0.687,61,0 +224,1,100.0,66.0,15.0,56.0,23.6,0.666,26,0 +225,1,87.0,78.0,27.0,32.0,34.6,0.101,22,0 +226,0,101.0,76.0,20.536458333333332,79.79947916666667,35.7,0.198,26,0 +227,1,162.0,52.0,38.0,79.79947916666667,37.2,0.652,24,1 +228,1,197.0,70.0,39.0,744.0,36.7,2.329,31,0 +229,0,117.0,80.0,31.0,53.0,45.2,0.089,24,0 +230,1,142.0,86.0,20.536458333333332,79.79947916666667,44.0,0.645,22,1 +231,1,134.0,80.0,37.0,370.0,46.2,0.238,46,1 +232,1,79.0,80.0,25.0,37.0,25.4,0.583,22,0 +233,1,122.0,68.0,20.536458333333332,79.79947916666667,35.0,0.394,29,0 +234,1,74.0,68.0,28.0,45.0,29.7,0.293,23,0 +235,1,171.0,72.0,20.536458333333332,79.79947916666667,43.6,0.479,26,1 +236,1,181.0,84.0,21.0,192.0,35.9,0.586,51,1 +237,0,179.0,90.0,27.0,79.79947916666667,44.1,0.686,23,1 +238,1,164.0,84.0,21.0,79.79947916666667,30.8,0.831,32,1 +239,0,104.0,76.0,20.536458333333332,79.79947916666667,18.4,0.582,27,0 +240,1,91.0,64.0,24.0,79.79947916666667,29.2,0.192,21,0 +241,1,91.0,70.0,32.0,88.0,33.1,0.446,22,0 +242,1,139.0,54.0,20.536458333333332,79.79947916666667,25.6,0.402,22,1 +243,1,119.0,50.0,22.0,176.0,27.1,1.318,33,1 +244,1,146.0,76.0,35.0,194.0,38.2,0.329,29,0 +245,1,184.0,85.0,15.0,79.79947916666667,30.0,1.213,49,1 +246,1,122.0,68.0,20.536458333333332,79.79947916666667,31.2,0.258,41,0 +247,0,165.0,90.0,33.0,680.0,52.3,0.427,23,0 +248,1,124.0,70.0,33.0,402.0,35.4,0.282,34,0 +249,1,111.0,86.0,19.0,79.79947916666667,30.1,0.143,23,0 +250,1,106.0,52.0,20.536458333333332,79.79947916666667,31.2,0.38,42,0 +251,1,129.0,84.0,20.536458333333332,79.79947916666667,28.0,0.284,27,0 +252,1,90.0,80.0,14.0,55.0,24.4,0.249,24,0 +253,0,86.0,68.0,32.0,79.79947916666667,35.8,0.238,25,0 +254,1,92.0,62.0,7.0,258.0,27.6,0.926,44,1 +255,1,113.0,64.0,35.0,79.79947916666667,33.6,0.543,21,1 +256,1,111.0,56.0,39.0,79.79947916666667,30.1,0.557,30,0 +257,1,114.0,68.0,22.0,79.79947916666667,28.7,0.092,25,0 +258,1,193.0,50.0,16.0,375.0,25.9,0.655,24,0 +259,1,155.0,76.0,28.0,150.0,33.3,1.353,51,1 +260,1,191.0,68.0,15.0,130.0,30.9,0.299,34,0 +261,1,141.0,69.10546875,20.536458333333332,79.79947916666667,30.0,0.761,27,1 +262,1,95.0,70.0,32.0,79.79947916666667,32.1,0.612,24,0 +263,1,142.0,80.0,15.0,79.79947916666667,32.4,0.2,63,0 +264,1,123.0,62.0,20.536458333333332,79.79947916666667,32.0,0.226,35,1 +265,1,96.0,74.0,18.0,67.0,33.6,0.997,43,0 +266,0,138.0,69.10546875,20.536458333333332,79.79947916666667,36.3,0.933,25,1 +267,1,128.0,64.0,42.0,79.79947916666667,40.0,1.101,24,0 +268,0,102.0,52.0,20.536458333333332,79.79947916666667,25.1,0.078,21,0 +269,1,146.0,69.10546875,20.536458333333332,79.79947916666667,27.5,0.24,28,1 +270,1,101.0,86.0,37.0,79.79947916666667,45.6,1.136,38,1 +271,1,108.0,62.0,32.0,56.0,25.2,0.128,21,0 +272,1,122.0,78.0,20.536458333333332,79.79947916666667,23.0,0.254,40,0 +273,1,71.0,78.0,50.0,45.0,33.2,0.422,21,0 +274,1,106.0,70.0,20.536458333333332,79.79947916666667,34.2,0.251,52,0 +275,1,100.0,70.0,52.0,57.0,40.5,0.677,25,0 +276,1,106.0,60.0,24.0,79.79947916666667,26.5,0.296,29,1 +277,0,104.0,64.0,23.0,116.0,27.8,0.454,23,0 +278,1,114.0,74.0,20.536458333333332,79.79947916666667,24.9,0.744,57,0 +279,1,108.0,62.0,10.0,278.0,25.3,0.881,22,0 +280,0,146.0,70.0,20.536458333333332,79.79947916666667,37.9,0.334,28,1 +281,1,129.0,76.0,28.0,122.0,35.9,0.28,39,0 +282,1,133.0,88.0,15.0,155.0,32.4,0.262,37,0 +283,1,161.0,86.0,20.536458333333332,79.79947916666667,30.4,0.165,47,1 +284,1,108.0,80.0,20.536458333333332,79.79947916666667,27.0,0.259,52,1 +285,1,136.0,74.0,26.0,135.0,26.0,0.647,51,0 +286,1,155.0,84.0,44.0,545.0,38.7,0.619,34,0 +287,1,119.0,86.0,39.0,220.0,45.6,0.808,29,1 +288,1,96.0,56.0,17.0,49.0,20.8,0.34,26,0 +289,1,108.0,72.0,43.0,75.0,36.1,0.263,33,0 +290,0,78.0,88.0,29.0,40.0,36.9,0.434,21,0 +291,0,107.0,62.0,30.0,74.0,36.6,0.757,25,1 +292,1,128.0,78.0,37.0,182.0,43.3,1.224,31,1 +293,1,128.0,48.0,45.0,194.0,40.5,0.613,24,1 +294,0,161.0,50.0,20.536458333333332,79.79947916666667,21.9,0.254,65,0 +295,1,151.0,62.0,31.0,120.0,35.5,0.692,28,0 +296,1,146.0,70.0,38.0,360.0,28.0,0.337,29,1 +297,0,126.0,84.0,29.0,215.0,30.7,0.52,24,0 +298,1,100.0,78.0,25.0,184.0,36.6,0.412,46,1 +299,1,112.0,72.0,20.536458333333332,79.79947916666667,23.6,0.84,58,0 +300,0,167.0,69.10546875,20.536458333333332,79.79947916666667,32.3,0.839,30,1 +301,1,144.0,58.0,33.0,135.0,31.6,0.422,25,1 +302,1,77.0,82.0,41.0,42.0,35.8,0.156,35,0 +303,1,115.0,98.0,20.536458333333332,79.79947916666667,52.9,0.209,28,1 +304,1,150.0,76.0,20.536458333333332,79.79947916666667,21.0,0.207,37,0 +305,1,120.0,76.0,37.0,105.0,39.7,0.215,29,0 +306,1,161.0,68.0,23.0,132.0,25.5,0.326,47,1 +307,0,137.0,68.0,14.0,148.0,24.8,0.143,21,0 +308,0,128.0,68.0,19.0,180.0,30.5,1.391,25,1 +309,1,124.0,68.0,28.0,205.0,32.9,0.875,30,1 +310,1,80.0,66.0,30.0,79.79947916666667,26.2,0.313,41,0 +311,0,106.0,70.0,37.0,148.0,39.4,0.605,22,0 +312,1,155.0,74.0,17.0,96.0,26.6,0.433,27,1 +313,1,113.0,50.0,10.0,85.0,29.5,0.626,25,0 +314,1,109.0,80.0,31.0,79.79947916666667,35.9,1.127,43,1 +315,1,112.0,68.0,22.0,94.0,34.1,0.315,26,0 +316,1,99.0,80.0,11.0,64.0,19.3,0.284,30,0 +317,1,182.0,74.0,20.536458333333332,79.79947916666667,30.5,0.345,29,1 +318,1,115.0,66.0,39.0,140.0,38.1,0.15,28,0 +319,1,194.0,78.0,20.536458333333332,79.79947916666667,23.5,0.129,59,1 +320,1,129.0,60.0,12.0,231.0,27.5,0.527,31,0 +321,1,112.0,74.0,30.0,79.79947916666667,31.6,0.197,25,1 +322,0,124.0,70.0,20.0,79.79947916666667,27.4,0.254,36,1 +323,1,152.0,90.0,33.0,29.0,26.8,0.731,43,1 +324,1,112.0,75.0,32.0,79.79947916666667,35.7,0.148,21,0 +325,1,157.0,72.0,21.0,168.0,25.6,0.123,24,0 +326,1,122.0,64.0,32.0,156.0,35.1,0.692,30,1 +327,1,179.0,70.0,20.536458333333332,79.79947916666667,35.1,0.2,37,0 +328,1,102.0,86.0,36.0,120.0,45.5,0.127,23,1 +329,1,105.0,70.0,32.0,68.0,30.8,0.122,37,0 +330,1,118.0,72.0,19.0,79.79947916666667,23.1,1.476,46,0 +331,1,87.0,58.0,16.0,52.0,32.7,0.166,25,0 +332,1,180.0,69.10546875,20.536458333333332,79.79947916666667,43.3,0.282,41,1 +333,1,106.0,80.0,20.536458333333332,79.79947916666667,23.6,0.137,44,0 +334,1,95.0,60.0,18.0,58.0,23.9,0.26,22,0 +335,0,165.0,76.0,43.0,255.0,47.9,0.259,26,0 +336,0,117.0,69.10546875,20.536458333333332,79.79947916666667,33.8,0.932,44,0 +337,1,115.0,76.0,20.536458333333332,79.79947916666667,31.2,0.343,44,1 +338,1,152.0,78.0,34.0,171.0,34.2,0.893,33,1 +339,1,178.0,84.0,20.536458333333332,79.79947916666667,39.9,0.331,41,1 +340,1,130.0,70.0,13.0,105.0,25.9,0.472,22,0 +341,1,95.0,74.0,21.0,73.0,25.9,0.673,36,0 +342,1,120.89453125,68.0,35.0,79.79947916666667,32.0,0.389,22,0 +343,1,122.0,86.0,20.536458333333332,79.79947916666667,34.7,0.29,33,0 +344,1,95.0,72.0,20.536458333333332,79.79947916666667,36.8,0.485,57,0 +345,1,126.0,88.0,36.0,108.0,38.5,0.349,49,0 +346,1,139.0,46.0,19.0,83.0,28.7,0.654,22,0 +347,1,116.0,69.10546875,20.536458333333332,79.79947916666667,23.5,0.187,23,0 +348,1,99.0,62.0,19.0,74.0,21.8,0.279,26,0 +349,1,120.89453125,80.0,32.0,79.79947916666667,41.0,0.346,37,1 +350,1,92.0,80.0,20.536458333333332,79.79947916666667,42.2,0.237,29,0 +351,1,137.0,84.0,20.536458333333332,79.79947916666667,31.2,0.252,30,0 +352,1,61.0,82.0,28.0,79.79947916666667,34.4,0.243,46,0 +353,1,90.0,62.0,12.0,43.0,27.2,0.58,24,0 +354,1,90.0,78.0,20.536458333333332,79.79947916666667,42.7,0.559,21,0 +355,1,165.0,88.0,20.536458333333332,79.79947916666667,30.4,0.302,49,1 +356,1,125.0,50.0,40.0,167.0,33.3,0.962,28,1 +357,1,129.0,69.10546875,30.0,79.79947916666667,39.9,0.569,44,1 +358,1,88.0,74.0,40.0,54.0,35.3,0.378,48,0 +359,1,196.0,76.0,36.0,249.0,36.5,0.875,29,1 +360,1,189.0,64.0,33.0,325.0,31.2,0.583,29,1 +361,1,158.0,70.0,20.536458333333332,79.79947916666667,29.8,0.207,63,0 +362,1,103.0,108.0,37.0,79.79947916666667,39.2,0.305,65,0 +363,1,146.0,78.0,20.536458333333332,79.79947916666667,38.5,0.52,67,1 +364,1,147.0,74.0,25.0,293.0,34.9,0.385,30,0 +365,1,99.0,54.0,28.0,83.0,34.0,0.499,30,0 +366,1,124.0,72.0,20.536458333333332,79.79947916666667,27.6,0.368,29,1 +367,0,101.0,64.0,17.0,79.79947916666667,21.0,0.252,21,0 +368,1,81.0,86.0,16.0,66.0,27.5,0.306,22,0 +369,1,133.0,102.0,28.0,140.0,32.8,0.234,45,1 +370,1,173.0,82.0,48.0,465.0,38.4,2.137,25,1 +371,0,118.0,64.0,23.0,89.0,31.992578124999977,1.731,21,0 +372,0,84.0,64.0,22.0,66.0,35.8,0.545,21,0 +373,1,105.0,58.0,40.0,94.0,34.9,0.225,25,0 +374,1,122.0,52.0,43.0,158.0,36.2,0.816,28,0 +375,1,140.0,82.0,43.0,325.0,39.2,0.528,58,1 +376,0,98.0,82.0,15.0,84.0,25.2,0.299,22,0 +377,1,87.0,60.0,37.0,75.0,37.2,0.509,22,0 +378,1,156.0,75.0,20.536458333333332,79.79947916666667,48.3,0.238,32,1 +379,0,93.0,100.0,39.0,72.0,43.4,1.021,35,0 +380,1,107.0,72.0,30.0,82.0,30.8,0.821,24,0 +381,0,105.0,68.0,22.0,79.79947916666667,20.0,0.236,22,0 +382,1,109.0,60.0,8.0,182.0,25.4,0.947,21,0 +383,1,90.0,62.0,18.0,59.0,25.1,1.268,25,0 +384,1,125.0,70.0,24.0,110.0,24.3,0.221,25,0 +385,1,119.0,54.0,13.0,50.0,22.3,0.205,24,0 +386,1,116.0,74.0,29.0,79.79947916666667,32.3,0.66,35,1 +387,1,105.0,100.0,36.0,79.79947916666667,43.3,0.239,45,1 +388,1,144.0,82.0,26.0,285.0,32.0,0.452,58,1 +389,1,100.0,68.0,23.0,81.0,31.6,0.949,28,0 +390,1,100.0,66.0,29.0,196.0,32.0,0.444,42,0 +391,1,166.0,76.0,20.536458333333332,79.79947916666667,45.7,0.34,27,1 +392,1,131.0,64.0,14.0,415.0,23.7,0.389,21,0 +393,1,116.0,72.0,12.0,87.0,22.1,0.463,37,0 +394,1,158.0,78.0,20.536458333333332,79.79947916666667,32.9,0.803,31,1 +395,1,127.0,58.0,24.0,275.0,27.7,1.6,25,0 +396,1,96.0,56.0,34.0,115.0,24.7,0.944,39,0 +397,0,131.0,66.0,40.0,79.79947916666667,34.3,0.196,22,1 +398,1,82.0,70.0,20.536458333333332,79.79947916666667,21.1,0.389,25,0 +399,1,193.0,70.0,31.0,79.79947916666667,34.9,0.241,25,1 +400,1,95.0,64.0,20.536458333333332,79.79947916666667,32.0,0.161,31,1 +401,1,137.0,61.0,20.536458333333332,79.79947916666667,24.2,0.151,55,0 +402,1,136.0,84.0,41.0,88.0,35.0,0.286,35,1 +403,1,72.0,78.0,25.0,79.79947916666667,31.6,0.28,38,0 +404,1,168.0,64.0,20.536458333333332,79.79947916666667,32.9,0.135,41,1 +405,1,123.0,48.0,32.0,165.0,42.1,0.52,26,0 +406,1,115.0,72.0,20.536458333333332,79.79947916666667,28.9,0.376,46,1 +407,0,101.0,62.0,20.536458333333332,79.79947916666667,21.9,0.336,25,0 +408,1,197.0,74.0,20.536458333333332,79.79947916666667,25.9,1.191,39,1 +409,1,172.0,68.0,49.0,579.0,42.4,0.702,28,1 +410,1,102.0,90.0,39.0,79.79947916666667,35.7,0.674,28,0 +411,1,112.0,72.0,30.0,176.0,34.4,0.528,25,0 +412,1,143.0,84.0,23.0,310.0,42.4,1.076,22,0 +413,1,143.0,74.0,22.0,61.0,26.2,0.256,21,0 +414,0,138.0,60.0,35.0,167.0,34.6,0.534,21,1 +415,1,173.0,84.0,33.0,474.0,35.7,0.258,22,1 +416,1,97.0,68.0,21.0,79.79947916666667,27.2,1.095,22,0 +417,1,144.0,82.0,32.0,79.79947916666667,38.5,0.554,37,1 +418,1,83.0,68.0,20.536458333333332,79.79947916666667,18.2,0.624,27,0 +419,1,129.0,64.0,29.0,115.0,26.4,0.219,28,1 +420,1,119.0,88.0,41.0,170.0,45.3,0.507,26,0 +421,1,94.0,68.0,18.0,76.0,26.0,0.561,21,0 +422,0,102.0,64.0,46.0,78.0,40.6,0.496,21,0 +423,1,115.0,64.0,22.0,79.79947916666667,30.8,0.421,21,0 +424,1,151.0,78.0,32.0,210.0,42.9,0.516,36,1 +425,1,184.0,78.0,39.0,277.0,37.0,0.264,31,1 +426,0,94.0,69.10546875,20.536458333333332,79.79947916666667,31.992578124999977,0.256,25,0 +427,1,181.0,64.0,30.0,180.0,34.1,0.328,38,1 +428,0,135.0,94.0,46.0,145.0,40.6,0.284,26,0 +429,1,95.0,82.0,25.0,180.0,35.0,0.233,43,1 +430,1,99.0,69.10546875,20.536458333333332,79.79947916666667,22.2,0.108,23,0 +431,1,89.0,74.0,16.0,85.0,30.4,0.551,38,0 +432,1,80.0,74.0,11.0,60.0,30.0,0.527,22,0 +433,1,139.0,75.0,20.536458333333332,79.79947916666667,25.6,0.167,29,0 +434,1,90.0,68.0,8.0,79.79947916666667,24.5,1.138,36,0 +435,0,141.0,69.10546875,20.536458333333332,79.79947916666667,42.4,0.205,29,1 +436,1,140.0,85.0,33.0,79.79947916666667,37.4,0.244,41,0 +437,1,147.0,75.0,20.536458333333332,79.79947916666667,29.9,0.434,28,0 +438,1,97.0,70.0,15.0,79.79947916666667,18.2,0.147,21,0 +439,1,107.0,88.0,20.536458333333332,79.79947916666667,36.8,0.727,31,0 +440,0,189.0,104.0,25.0,79.79947916666667,34.3,0.435,41,1 +441,1,83.0,66.0,23.0,50.0,32.2,0.497,22,0 +442,1,117.0,64.0,27.0,120.0,33.2,0.23,24,0 +443,1,108.0,70.0,20.536458333333332,79.79947916666667,30.5,0.955,33,1 +444,1,117.0,62.0,12.0,79.79947916666667,29.7,0.38,30,1 +445,0,180.0,78.0,63.0,14.0,59.4,2.42,25,1 +446,1,100.0,72.0,12.0,70.0,25.3,0.658,28,0 +447,0,95.0,80.0,45.0,92.0,36.5,0.33,26,0 +448,0,104.0,64.0,37.0,64.0,33.6,0.51,22,1 +449,0,120.0,74.0,18.0,63.0,30.5,0.285,26,0 +450,1,82.0,64.0,13.0,95.0,21.2,0.415,23,0 +451,1,134.0,70.0,20.536458333333332,79.79947916666667,28.9,0.542,23,1 +452,0,91.0,68.0,32.0,210.0,39.9,0.381,25,0 +453,1,119.0,69.10546875,20.536458333333332,79.79947916666667,19.6,0.832,72,0 +454,1,100.0,54.0,28.0,105.0,37.8,0.498,24,0 +455,1,175.0,62.0,30.0,79.79947916666667,33.6,0.212,38,1 +456,1,135.0,54.0,20.536458333333332,79.79947916666667,26.7,0.687,62,0 +457,1,86.0,68.0,28.0,71.0,30.2,0.364,24,0 +458,1,148.0,84.0,48.0,237.0,37.6,1.001,51,1 +459,1,134.0,74.0,33.0,60.0,25.9,0.46,81,0 +460,1,120.0,72.0,22.0,56.0,20.8,0.733,48,0 +461,1,71.0,62.0,20.536458333333332,79.79947916666667,21.8,0.416,26,0 +462,1,74.0,70.0,40.0,49.0,35.3,0.705,39,0 +463,1,88.0,78.0,30.0,79.79947916666667,27.6,0.258,37,0 +464,1,115.0,98.0,20.536458333333332,79.79947916666667,24.0,1.022,34,0 +465,0,124.0,56.0,13.0,105.0,21.8,0.452,21,0 +466,0,74.0,52.0,10.0,36.0,27.8,0.269,22,0 +467,0,97.0,64.0,36.0,100.0,36.8,0.6,25,0 +468,1,120.0,69.10546875,20.536458333333332,79.79947916666667,30.0,0.183,38,1 +469,1,154.0,78.0,41.0,140.0,46.1,0.571,27,0 +470,1,144.0,82.0,40.0,79.79947916666667,41.3,0.607,28,0 +471,0,137.0,70.0,38.0,79.79947916666667,33.2,0.17,22,0 +472,0,119.0,66.0,27.0,79.79947916666667,38.8,0.259,22,0 +473,1,136.0,90.0,20.536458333333332,79.79947916666667,29.9,0.21,50,0 +474,1,114.0,64.0,20.536458333333332,79.79947916666667,28.9,0.126,24,0 +475,0,137.0,84.0,27.0,79.79947916666667,27.3,0.231,59,0 +476,1,105.0,80.0,45.0,191.0,33.7,0.711,29,1 +477,1,114.0,76.0,17.0,110.0,23.8,0.466,31,0 +478,1,126.0,74.0,38.0,75.0,25.9,0.162,39,0 +479,1,132.0,86.0,31.0,79.79947916666667,28.0,0.419,63,0 +480,1,158.0,70.0,30.0,328.0,35.5,0.344,35,1 +481,0,123.0,88.0,37.0,79.79947916666667,35.2,0.197,29,0 +482,1,85.0,58.0,22.0,49.0,27.8,0.306,28,0 +483,0,84.0,82.0,31.0,125.0,38.2,0.233,23,0 +484,0,145.0,69.10546875,20.536458333333332,79.79947916666667,44.2,0.63,31,1 +485,0,135.0,68.0,42.0,250.0,42.3,0.365,24,1 +486,1,139.0,62.0,41.0,480.0,40.7,0.536,21,0 +487,0,173.0,78.0,32.0,265.0,46.5,1.159,58,0 +488,1,99.0,72.0,17.0,79.79947916666667,25.6,0.294,28,0 +489,1,194.0,80.0,20.536458333333332,79.79947916666667,26.1,0.551,67,0 +490,1,83.0,65.0,28.0,66.0,36.8,0.629,24,0 +491,1,89.0,90.0,30.0,79.79947916666667,33.5,0.292,42,0 +492,1,99.0,68.0,38.0,79.79947916666667,32.8,0.145,33,0 +493,1,125.0,70.0,18.0,122.0,28.9,1.144,45,1 +494,1,80.0,69.10546875,20.536458333333332,79.79947916666667,31.992578124999977,0.174,22,0 +495,1,166.0,74.0,20.536458333333332,79.79947916666667,26.6,0.304,66,0 +496,1,110.0,68.0,20.536458333333332,79.79947916666667,26.0,0.292,30,0 +497,1,81.0,72.0,15.0,76.0,30.1,0.547,25,0 +498,1,195.0,70.0,33.0,145.0,25.1,0.163,55,1 +499,1,154.0,74.0,32.0,193.0,29.3,0.839,39,0 +500,1,117.0,90.0,19.0,71.0,25.2,0.313,21,0 +501,1,84.0,72.0,32.0,79.79947916666667,37.2,0.267,28,0 +502,1,120.89453125,68.0,41.0,79.79947916666667,39.0,0.727,41,1 +503,1,94.0,64.0,25.0,79.0,33.3,0.738,41,0 +504,1,96.0,78.0,39.0,79.79947916666667,37.3,0.238,40,0 +505,1,75.0,82.0,20.536458333333332,79.79947916666667,33.3,0.263,38,0 +506,0,180.0,90.0,26.0,90.0,36.5,0.314,35,1 +507,1,130.0,60.0,23.0,170.0,28.6,0.692,21,0 +508,1,84.0,50.0,23.0,76.0,30.4,0.968,21,0 +509,1,120.0,78.0,20.536458333333332,79.79947916666667,25.0,0.409,64,0 +510,1,84.0,72.0,31.0,79.79947916666667,29.7,0.297,46,1 +511,0,139.0,62.0,17.0,210.0,22.1,0.207,21,0 +512,1,91.0,68.0,20.536458333333332,79.79947916666667,24.2,0.2,58,0 +513,1,91.0,62.0,20.536458333333332,79.79947916666667,27.3,0.525,22,0 +514,1,99.0,54.0,19.0,86.0,25.6,0.154,24,0 +515,1,163.0,70.0,18.0,105.0,31.6,0.268,28,1 +516,1,145.0,88.0,34.0,165.0,30.3,0.771,53,1 +517,1,125.0,86.0,20.536458333333332,79.79947916666667,37.6,0.304,51,0 +518,1,76.0,60.0,20.536458333333332,79.79947916666667,32.8,0.18,41,0 +519,1,129.0,90.0,7.0,326.0,19.6,0.582,60,0 +520,1,68.0,70.0,32.0,66.0,25.0,0.187,25,0 +521,1,124.0,80.0,33.0,130.0,33.2,0.305,26,0 +522,1,114.0,69.10546875,20.536458333333332,79.79947916666667,31.992578124999977,0.189,26,0 +523,1,130.0,70.0,20.536458333333332,79.79947916666667,34.2,0.652,45,1 +524,1,125.0,58.0,20.536458333333332,79.79947916666667,31.6,0.151,24,0 +525,1,87.0,60.0,18.0,79.79947916666667,21.8,0.444,21,0 +526,1,97.0,64.0,19.0,82.0,18.2,0.299,21,0 +527,1,116.0,74.0,15.0,105.0,26.3,0.107,24,0 +528,0,117.0,66.0,31.0,188.0,30.8,0.493,22,0 +529,0,111.0,65.0,20.536458333333332,79.79947916666667,24.6,0.66,31,0 +530,1,122.0,60.0,18.0,106.0,29.8,0.717,22,0 +531,0,107.0,76.0,20.536458333333332,79.79947916666667,45.3,0.686,24,0 +532,1,86.0,66.0,52.0,65.0,41.3,0.917,29,0 +533,1,91.0,69.10546875,20.536458333333332,79.79947916666667,29.8,0.501,31,0 +534,1,77.0,56.0,30.0,56.0,33.3,1.251,24,0 +535,1,132.0,69.10546875,20.536458333333332,79.79947916666667,32.9,0.302,23,1 +536,0,105.0,90.0,20.536458333333332,79.79947916666667,29.6,0.197,46,0 +537,0,57.0,60.0,20.536458333333332,79.79947916666667,21.7,0.735,67,0 +538,0,127.0,80.0,37.0,210.0,36.3,0.804,23,0 +539,1,129.0,92.0,49.0,155.0,36.4,0.968,32,1 +540,1,100.0,74.0,40.0,215.0,39.4,0.661,43,1 +541,1,128.0,72.0,25.0,190.0,32.4,0.549,27,1 +542,1,90.0,85.0,32.0,79.79947916666667,34.9,0.825,56,1 +543,1,84.0,90.0,23.0,56.0,39.5,0.159,25,0 +544,1,88.0,78.0,29.0,76.0,32.0,0.365,29,0 +545,1,186.0,90.0,35.0,225.0,34.5,0.423,37,1 +546,1,187.0,76.0,27.0,207.0,43.6,1.034,53,1 +547,1,131.0,68.0,21.0,166.0,33.1,0.16,28,0 +548,1,164.0,82.0,43.0,67.0,32.8,0.341,50,0 +549,1,189.0,110.0,31.0,79.79947916666667,28.5,0.68,37,0 +550,1,116.0,70.0,28.0,79.79947916666667,27.4,0.204,21,0 +551,1,84.0,68.0,30.0,106.0,31.9,0.591,25,0 +552,1,114.0,88.0,20.536458333333332,79.79947916666667,27.8,0.247,66,0 +553,1,88.0,62.0,24.0,44.0,29.9,0.422,23,0 +554,1,84.0,64.0,23.0,115.0,36.9,0.471,28,0 +555,1,124.0,70.0,33.0,215.0,25.5,0.161,37,0 +556,1,97.0,70.0,40.0,79.79947916666667,38.1,0.218,30,0 +557,1,110.0,76.0,20.536458333333332,79.79947916666667,27.8,0.237,58,0 +558,1,103.0,68.0,40.0,79.79947916666667,46.2,0.126,42,0 +559,1,85.0,74.0,20.536458333333332,79.79947916666667,30.1,0.3,35,0 +560,1,125.0,76.0,20.536458333333332,79.79947916666667,33.8,0.121,54,1 +561,0,198.0,66.0,32.0,274.0,41.3,0.502,28,1 +562,1,87.0,68.0,34.0,77.0,37.6,0.401,24,0 +563,1,99.0,60.0,19.0,54.0,26.9,0.497,32,0 +564,0,91.0,80.0,20.536458333333332,79.79947916666667,32.4,0.601,27,0 +565,1,95.0,54.0,14.0,88.0,26.1,0.748,22,0 +566,1,99.0,72.0,30.0,18.0,38.6,0.412,21,0 +567,1,92.0,62.0,32.0,126.0,32.0,0.085,46,0 +568,1,154.0,72.0,29.0,126.0,31.3,0.338,37,0 +569,0,121.0,66.0,30.0,165.0,34.3,0.203,33,1 +570,1,78.0,70.0,20.536458333333332,79.79947916666667,32.5,0.27,39,0 +571,1,130.0,96.0,20.536458333333332,79.79947916666667,22.6,0.268,21,0 +572,1,111.0,58.0,31.0,44.0,29.5,0.43,22,0 +573,1,98.0,60.0,17.0,120.0,34.7,0.198,22,0 +574,1,143.0,86.0,30.0,330.0,30.1,0.892,23,0 +575,1,119.0,44.0,47.0,63.0,35.5,0.28,25,0 +576,1,108.0,44.0,20.0,130.0,24.0,0.813,35,0 +577,1,118.0,80.0,20.536458333333332,79.79947916666667,42.9,0.693,21,1 +578,1,133.0,68.0,20.536458333333332,79.79947916666667,27.0,0.245,36,0 +579,1,197.0,70.0,99.0,79.79947916666667,34.7,0.575,62,1 +580,0,151.0,90.0,46.0,79.79947916666667,42.1,0.371,21,1 +581,1,109.0,60.0,27.0,79.79947916666667,25.0,0.206,27,0 +582,1,121.0,78.0,17.0,79.79947916666667,26.5,0.259,62,0 +583,1,100.0,76.0,20.536458333333332,79.79947916666667,38.7,0.19,42,0 +584,1,124.0,76.0,24.0,600.0,28.7,0.687,52,1 +585,1,93.0,56.0,11.0,79.79947916666667,22.5,0.417,22,0 +586,1,143.0,66.0,20.536458333333332,79.79947916666667,34.9,0.129,41,1 +587,1,103.0,66.0,20.536458333333332,79.79947916666667,24.3,0.249,29,0 +588,1,176.0,86.0,27.0,156.0,33.3,1.154,52,1 +589,0,73.0,69.10546875,20.536458333333332,79.79947916666667,21.1,0.342,25,0 +590,1,111.0,84.0,40.0,79.79947916666667,46.8,0.925,45,1 +591,1,112.0,78.0,50.0,140.0,39.4,0.175,24,0 +592,1,132.0,80.0,20.536458333333332,79.79947916666667,34.4,0.402,44,1 +593,1,82.0,52.0,22.0,115.0,28.5,1.699,25,0 +594,1,123.0,72.0,45.0,230.0,33.6,0.733,34,0 +595,0,188.0,82.0,14.0,185.0,32.0,0.682,22,1 +596,0,67.0,76.0,20.536458333333332,79.79947916666667,45.3,0.194,46,0 +597,1,89.0,24.0,19.0,25.0,27.8,0.559,21,0 +598,1,173.0,74.0,20.536458333333332,79.79947916666667,36.8,0.088,38,1 +599,1,109.0,38.0,18.0,120.0,23.1,0.407,26,0 +600,1,108.0,88.0,19.0,79.79947916666667,27.1,0.4,24,0 +601,1,96.0,69.10546875,20.536458333333332,79.79947916666667,23.7,0.19,28,0 +602,1,124.0,74.0,36.0,79.79947916666667,27.8,0.1,30,0 +603,1,150.0,78.0,29.0,126.0,35.2,0.692,54,1 +604,1,183.0,69.10546875,20.536458333333332,79.79947916666667,28.4,0.212,36,1 +605,1,124.0,60.0,32.0,79.79947916666667,35.8,0.514,21,0 +606,1,181.0,78.0,42.0,293.0,40.0,1.258,22,1 +607,1,92.0,62.0,25.0,41.0,19.5,0.482,25,0 +608,0,152.0,82.0,39.0,272.0,41.5,0.27,27,0 +609,1,111.0,62.0,13.0,182.0,24.0,0.138,23,0 +610,1,106.0,54.0,21.0,158.0,30.9,0.292,24,0 +611,1,174.0,58.0,22.0,194.0,32.9,0.593,36,1 +612,1,168.0,88.0,42.0,321.0,38.2,0.787,40,1 +613,1,105.0,80.0,28.0,79.79947916666667,32.5,0.878,26,0 +614,1,138.0,74.0,26.0,144.0,36.1,0.557,50,1 +615,1,106.0,72.0,20.536458333333332,79.79947916666667,25.8,0.207,27,0 +616,1,117.0,96.0,20.536458333333332,79.79947916666667,28.7,0.157,30,0 +617,1,68.0,62.0,13.0,15.0,20.1,0.257,23,0 +618,1,112.0,82.0,24.0,79.79947916666667,28.2,1.282,50,1 +619,0,119.0,69.10546875,20.536458333333332,79.79947916666667,32.4,0.141,24,1 +620,1,112.0,86.0,42.0,160.0,38.4,0.246,28,0 +621,1,92.0,76.0,20.0,79.79947916666667,24.2,1.698,28,0 +622,1,183.0,94.0,20.536458333333332,79.79947916666667,40.8,1.461,45,0 +623,0,94.0,70.0,27.0,115.0,43.5,0.347,21,0 +624,1,108.0,64.0,20.536458333333332,79.79947916666667,30.8,0.158,21,0 +625,1,90.0,88.0,47.0,54.0,37.7,0.362,29,0 +626,0,125.0,68.0,20.536458333333332,79.79947916666667,24.7,0.206,21,0 +627,0,132.0,78.0,20.536458333333332,79.79947916666667,32.4,0.393,21,0 +628,1,128.0,80.0,20.536458333333332,79.79947916666667,34.6,0.144,45,0 +629,1,94.0,65.0,22.0,79.79947916666667,24.7,0.148,21,0 +630,1,114.0,64.0,20.536458333333332,79.79947916666667,27.4,0.732,34,1 +631,0,102.0,78.0,40.0,90.0,34.5,0.238,24,0 +632,1,111.0,60.0,20.536458333333332,79.79947916666667,26.2,0.343,23,0 +633,1,128.0,82.0,17.0,183.0,27.5,0.115,22,0 +634,1,92.0,62.0,20.536458333333332,79.79947916666667,25.9,0.167,31,0 +635,1,104.0,72.0,20.536458333333332,79.79947916666667,31.2,0.465,38,1 +636,1,104.0,74.0,20.536458333333332,79.79947916666667,28.8,0.153,48,0 +637,1,94.0,76.0,18.0,66.0,31.6,0.649,23,0 +638,1,97.0,76.0,32.0,91.0,40.9,0.871,32,1 +639,1,100.0,74.0,12.0,46.0,19.5,0.149,28,0 +640,0,102.0,86.0,17.0,105.0,29.3,0.695,27,0 +641,1,128.0,70.0,20.536458333333332,79.79947916666667,34.3,0.303,24,0 +642,1,147.0,80.0,20.536458333333332,79.79947916666667,29.5,0.178,50,1 +643,1,90.0,69.10546875,20.536458333333332,79.79947916666667,28.0,0.61,31,0 +644,1,103.0,72.0,30.0,152.0,27.6,0.73,27,0 +645,1,157.0,74.0,35.0,440.0,39.4,0.134,30,0 +646,1,167.0,74.0,17.0,144.0,23.4,0.447,33,1 +647,0,179.0,50.0,36.0,159.0,37.8,0.455,22,1 +648,1,136.0,84.0,35.0,130.0,28.3,0.26,42,1 +649,0,107.0,60.0,25.0,79.79947916666667,26.4,0.133,23,0 +650,1,91.0,54.0,25.0,100.0,25.2,0.234,23,0 +651,1,117.0,60.0,23.0,106.0,33.8,0.466,27,0 +652,1,123.0,74.0,40.0,77.0,34.1,0.269,28,0 +653,1,120.0,54.0,20.536458333333332,79.79947916666667,26.8,0.455,27,0 +654,1,106.0,70.0,28.0,135.0,34.2,0.142,22,0 +655,1,155.0,52.0,27.0,540.0,38.7,0.24,25,1 +656,1,101.0,58.0,35.0,90.0,21.8,0.155,22,0 +657,1,120.0,80.0,48.0,200.0,38.9,1.162,41,0 +658,1,127.0,106.0,20.536458333333332,79.79947916666667,39.0,0.19,51,0 +659,1,80.0,82.0,31.0,70.0,34.2,1.292,27,1 +660,1,162.0,84.0,20.536458333333332,79.79947916666667,27.7,0.182,54,0 +661,1,199.0,76.0,43.0,79.79947916666667,42.9,1.394,22,1 +662,1,167.0,106.0,46.0,231.0,37.6,0.165,43,1 +663,1,145.0,80.0,46.0,130.0,37.9,0.637,40,1 +664,1,115.0,60.0,39.0,79.79947916666667,33.7,0.245,40,1 +665,1,112.0,80.0,45.0,132.0,34.8,0.217,24,0 +666,1,145.0,82.0,18.0,79.79947916666667,32.5,0.235,70,1 +667,1,111.0,70.0,27.0,79.79947916666667,27.5,0.141,40,1 +668,1,98.0,58.0,33.0,190.0,34.0,0.43,43,0 +669,1,154.0,78.0,30.0,100.0,30.9,0.164,45,0 +670,1,165.0,68.0,26.0,168.0,33.6,0.631,49,0 +671,1,99.0,58.0,10.0,79.79947916666667,25.4,0.551,21,0 +672,1,68.0,106.0,23.0,49.0,35.5,0.285,47,0 +673,1,123.0,100.0,35.0,240.0,57.3,0.88,22,0 +674,1,91.0,82.0,20.536458333333332,79.79947916666667,35.6,0.587,68,0 +675,1,195.0,70.0,20.536458333333332,79.79947916666667,30.9,0.328,31,1 +676,1,156.0,86.0,20.536458333333332,79.79947916666667,24.8,0.23,53,1 +677,0,93.0,60.0,20.536458333333332,79.79947916666667,35.3,0.263,25,0 +678,1,121.0,52.0,20.536458333333332,79.79947916666667,36.0,0.127,25,1 +679,1,101.0,58.0,17.0,265.0,24.2,0.614,23,0 +680,1,56.0,56.0,28.0,45.0,24.2,0.332,22,0 +681,0,162.0,76.0,36.0,79.79947916666667,49.6,0.364,26,1 +682,0,95.0,64.0,39.0,105.0,44.6,0.366,22,0 +683,1,125.0,80.0,20.536458333333332,79.79947916666667,32.3,0.536,27,1 +684,1,136.0,82.0,20.536458333333332,79.79947916666667,31.992578124999977,0.64,69,0 +685,1,129.0,74.0,26.0,205.0,33.2,0.591,25,0 +686,1,130.0,64.0,20.536458333333332,79.79947916666667,23.1,0.314,22,0 +687,1,107.0,50.0,19.0,79.79947916666667,28.3,0.181,29,0 +688,1,140.0,74.0,26.0,180.0,24.1,0.828,23,0 +689,1,144.0,82.0,46.0,180.0,46.1,0.335,46,1 +690,1,107.0,80.0,20.536458333333332,79.79947916666667,24.6,0.856,34,0 +691,1,158.0,114.0,20.536458333333332,79.79947916666667,42.3,0.257,44,1 +692,1,121.0,70.0,32.0,95.0,39.1,0.886,23,0 +693,1,129.0,68.0,49.0,125.0,38.5,0.439,43,1 +694,1,90.0,60.0,20.536458333333332,79.79947916666667,23.5,0.191,25,0 +695,1,142.0,90.0,24.0,480.0,30.4,0.128,43,1 +696,1,169.0,74.0,19.0,125.0,29.9,0.268,31,1 +697,0,99.0,69.10546875,20.536458333333332,79.79947916666667,25.0,0.253,22,0 +698,1,127.0,88.0,11.0,155.0,34.5,0.598,28,0 +699,1,118.0,70.0,20.536458333333332,79.79947916666667,44.5,0.904,26,0 +700,1,122.0,76.0,27.0,200.0,35.9,0.483,26,0 +701,1,125.0,78.0,31.0,79.79947916666667,27.6,0.565,49,1 +702,1,168.0,88.0,29.0,79.79947916666667,35.0,0.905,52,1 +703,1,129.0,69.10546875,20.536458333333332,79.79947916666667,38.5,0.304,41,0 +704,1,110.0,76.0,20.0,100.0,28.4,0.118,27,0 +705,1,80.0,80.0,36.0,79.79947916666667,39.8,0.177,28,0 +706,1,115.0,69.10546875,20.536458333333332,79.79947916666667,31.992578124999977,0.261,30,1 +707,1,127.0,46.0,21.0,335.0,34.4,0.176,22,0 +708,1,164.0,78.0,20.536458333333332,79.79947916666667,32.8,0.148,45,1 +709,1,93.0,64.0,32.0,160.0,38.0,0.674,23,1 +710,1,158.0,64.0,13.0,387.0,31.2,0.295,24,0 +711,1,126.0,78.0,27.0,22.0,29.6,0.439,40,0 +712,1,129.0,62.0,36.0,79.79947916666667,41.2,0.441,38,1 +713,0,134.0,58.0,20.0,291.0,26.4,0.352,21,0 +714,1,102.0,74.0,20.536458333333332,79.79947916666667,29.5,0.121,32,0 +715,1,187.0,50.0,33.0,392.0,33.9,0.826,34,1 +716,1,173.0,78.0,39.0,185.0,33.8,0.97,31,1 +717,1,94.0,72.0,18.0,79.79947916666667,23.1,0.595,56,0 +718,1,108.0,60.0,46.0,178.0,35.5,0.415,24,0 +719,1,97.0,76.0,27.0,79.79947916666667,35.6,0.378,52,1 +720,1,83.0,86.0,19.0,79.79947916666667,29.3,0.317,34,0 +721,1,114.0,66.0,36.0,200.0,38.1,0.289,21,0 +722,1,149.0,68.0,29.0,127.0,29.3,0.349,42,1 +723,1,117.0,86.0,30.0,105.0,39.1,0.251,42,0 +724,1,111.0,94.0,20.536458333333332,79.79947916666667,32.8,0.265,45,0 +725,1,112.0,78.0,40.0,79.79947916666667,39.4,0.236,38,0 +726,1,116.0,78.0,29.0,180.0,36.1,0.496,25,0 +727,0,141.0,84.0,26.0,79.79947916666667,32.4,0.433,22,0 +728,1,175.0,88.0,20.536458333333332,79.79947916666667,22.9,0.326,22,0 +729,1,92.0,52.0,20.536458333333332,79.79947916666667,30.1,0.141,22,0 +730,1,130.0,78.0,23.0,79.0,28.4,0.323,34,1 +731,1,120.0,86.0,20.536458333333332,79.79947916666667,28.4,0.259,22,1 +732,1,174.0,88.0,37.0,120.0,44.5,0.646,24,1 +733,1,106.0,56.0,27.0,165.0,29.0,0.426,22,0 +734,1,105.0,75.0,20.536458333333332,79.79947916666667,23.3,0.56,53,0 +735,1,95.0,60.0,32.0,79.79947916666667,35.4,0.284,28,0 +736,0,126.0,86.0,27.0,120.0,27.4,0.515,21,0 +737,1,65.0,72.0,23.0,79.79947916666667,32.0,0.6,42,0 +738,1,99.0,60.0,17.0,160.0,36.6,0.453,21,0 +739,1,102.0,74.0,20.536458333333332,79.79947916666667,39.5,0.293,42,1 +740,1,120.0,80.0,37.0,150.0,42.3,0.785,48,1 +741,1,102.0,44.0,20.0,94.0,30.8,0.4,26,0 +742,1,109.0,58.0,18.0,116.0,28.5,0.219,22,0 +743,1,140.0,94.0,20.536458333333332,79.79947916666667,32.7,0.734,45,1 +744,1,153.0,88.0,37.0,140.0,40.6,1.174,39,0 +745,1,100.0,84.0,33.0,105.0,30.0,0.488,46,0 +746,1,147.0,94.0,41.0,79.79947916666667,49.3,0.358,27,1 +747,1,81.0,74.0,41.0,57.0,46.3,1.096,32,0 +748,1,187.0,70.0,22.0,200.0,36.4,0.408,36,1 +749,1,162.0,62.0,20.536458333333332,79.79947916666667,24.3,0.178,50,1 +750,1,136.0,70.0,20.536458333333332,79.79947916666667,31.2,1.182,22,1 +751,1,121.0,78.0,39.0,74.0,39.0,0.261,28,0 +752,1,108.0,62.0,24.0,79.79947916666667,26.0,0.223,25,0 +753,0,181.0,88.0,44.0,510.0,43.3,0.222,26,1 +754,1,154.0,78.0,32.0,79.79947916666667,32.4,0.443,45,1 +755,1,128.0,88.0,39.0,110.0,36.5,1.057,37,1 +756,1,137.0,90.0,41.0,79.79947916666667,32.0,0.391,39,0 +757,0,123.0,72.0,20.536458333333332,79.79947916666667,36.3,0.258,52,1 +758,1,106.0,76.0,20.536458333333332,79.79947916666667,37.5,0.197,26,0 +759,1,190.0,92.0,20.536458333333332,79.79947916666667,35.5,0.278,66,1 +760,1,88.0,58.0,26.0,16.0,28.4,0.766,22,0 +761,1,170.0,74.0,31.0,79.79947916666667,44.0,0.403,43,1 +762,1,89.0,62.0,20.536458333333332,79.79947916666667,22.5,0.142,33,0 +763,1,101.0,76.0,48.0,180.0,32.9,0.171,63,0 +764,1,122.0,70.0,27.0,79.79947916666667,36.8,0.34,27,0 +765,1,121.0,72.0,23.0,112.0,26.2,0.245,30,0 +766,1,126.0,60.0,20.536458333333332,79.79947916666667,30.1,0.349,47,1 +767,1,93.0,70.0,31.0,79.79947916666667,30.4,0.315,23,0 \ No newline at end of file diff --git a/health.png b/health.png new file mode 100644 index 0000000000000000000000000000000000000000..5eef03248e50ff5ce2228b5340925aeaae233df0 Binary files /dev/null and b/health.png differ diff --git a/image.jpg b/image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b286e764d17e8cf09196e8e53da01ea51d4e1e81 Binary files /dev/null and b/image.jpg differ diff --git a/main_diabetics.py b/main_diabetics.py new file mode 100644 index 0000000000000000000000000000000000000000..a3dd32ea464c3bbe6854a8599c8e24f49e571c81 --- /dev/null +++ b/main_diabetics.py @@ -0,0 +1,451 @@ +import sys +from PyQt6 import QtWidgets,QtGui +from pyqtgraph import PlotWidget, plot +import pyqtgraph as pg + +from PyQt6.QtWidgets import QWidget,QHBoxLayout, QApplication,QSlider, QMainWindow,QLabel, QPushButton,QHBoxLayout, QVBoxLayout, QGridLayout, QCheckBox +from PyQt6.QtCore import Qt +from PyQt6.QtGui import QAction, QIcon,QPalette, QColor + +import numpy as np +import pandas as pd +import matplotlib.pyplot as plt + + +import matplotlib +import matplotlib.pyplot as plt +from matplotlib.backends.backend_qtagg import FigureCanvasQTAgg as FigureCanvas +from matplotlib.figure import Figure +matplotlib.use('Qt5Agg') + +from sklearn.preprocessing import StandardScaler +from sklearn.model_selection import train_test_split +from sklearn import svm +from sklearn.metrics import accuracy_score + +from PyQt6 import QtGui + + +diabetes = pd.read_csv('diabetes_clean_03042021.csv') + + +# highest correlation ---- x=age y=blood pressure + + +class MplCanvas(FigureCanvas): + + def __init__(self, parent=None, width=5, height=2, dpi=100): + self.figure = Figure(figsize=(width, height), dpi=dpi) + self.axes = self.figure.add_subplot(111) + super(MplCanvas, self).__init__(self.figure) + +class secondWindow(QMainWindow): + def __init__(self): + super().__init__() + # use global data + + global diabetes + + widget_histogram = QWidget() + + # Vertical Layout + histogram_layout = QVBoxLayout() + + # Create a new Canvas + self.histogram_screen = MplCanvas(self, width=5, height=2, dpi=100) + + diabetes.hist(ax=self.histogram_screen.axes) + + histogram_layout.addWidget(self.histogram_screen) + self.setCentralWidget(widget_histogram) + widget_histogram.setLayout(histogram_layout) + self.setMinimumSize(1500, 1000) + + +class thirdWindow(QMainWindow): + + def __init__(self): + super().__init__() + + global diabetes + + self.graphWidget = pg.PlotWidget() + self.setCentralWidget(self.graphWidget) + + self.x = diabetes["BMI"] + self.y = diabetes["Outcome"] + + + self.graphWidget.setBackground('w') + self.graphWidget.setLabel("left", "Diabetic Or Not Diabetic") + self.graphWidget.setLabel("bottom", "BMI") + + pen = pg.mkPen(color=(255, 0, 0)) + self.data_line = self.graphWidget.plot(self.x, self.y, pen=pen) + self.setMinimumSize(800, 400) + + +class MainWindow(QMainWindow): + + def design(self): + + layout3 = QHBoxLayout() + MainLayout = QHBoxLayout() + leftVerticalLayout = QVBoxLayout() + RightVerticalLayout = QVBoxLayout() + + + # setting window icon + self.setWindowIcon(QtGui.QIcon('health.png')) + #setting screen min size + self.setMinimumSize(1200, 800) + + mainLabel = QLabel(" Women Diabetics Prediction System") + leftVerticalLayout.addWidget(mainLabel) + + + + # checkbox button pregnancies + pregnanciesLabel = QLabel("Pregnancies", alignment=Qt.AlignmentFlag.AlignCenter) + pregnant_instruction = QLabel("Please click the box if Pregnant.", alignment=Qt.AlignmentFlag.AlignCenter) + leftVerticalLayout.addWidget(pregnanciesLabel) + leftVerticalLayout.addWidget(pregnant_instruction) + self.pregnancies_checkbox = QCheckBox(text="Not Pregnant") + leftVerticalLayout.addWidget(self.pregnancies_checkbox) + self.pregnancies_checkbox.stateChanged.connect(self.Pregnancies_onStateChanged) + + # Silder button glucose + self.Glucose = QSlider(Qt.Orientation.Horizontal) + self.Glucose.setMinimum(30) + self.Glucose.setMaximum(200) + self.Glucose.valueChanged.connect(self.updateSlider_Glucose) + self.Glucose.setGeometry(5, 3, 20, 20) + self.selectedValue_glucose = QLabel(self) + self.selectedValue_glucose.setText(str(30)) + glocoseLabel = QLabel("Glucose [30 - 200]", alignment=Qt.AlignmentFlag.AlignCenter) + leftVerticalLayout.addWidget(glocoseLabel) + leftVerticalLayout.addWidget(self.Glucose) + leftVerticalLayout.addWidget(self.selectedValue_glucose) + + + # Silder button blood pressure + self.BloodPressure = QSlider(Qt.Orientation.Horizontal) + self.BloodPressure.setMinimum(30) + self.BloodPressure.setMaximum(120) + self.BloodPressure.valueChanged.connect(self.updateSlider_BloodPressure) + self.BloodPressure.setGeometry(5, 3, 20, 20) + self.selectedValue_blood = QLabel(self) + self.selectedValue_blood.setText(str(30)) + bloodpressureLabel = QLabel("Blood Pressure [30 - 120]", alignment=Qt.AlignmentFlag.AlignCenter) + leftVerticalLayout.addWidget(bloodpressureLabel) + leftVerticalLayout.addWidget(self.BloodPressure) + leftVerticalLayout.addWidget(self.selectedValue_blood) + + + # Silder button skin thickness + self.SkinThickness = QSlider(Qt.Orientation.Horizontal) + self.SkinThickness.setMinimum(0) + self.SkinThickness.setMaximum(100) + self.SkinThickness.valueChanged.connect(self.updateSlider_skinThickness) + self.SkinThickness.setGeometry(5, 3, 20, 20) + self.selectedValue_skin = QLabel(self) + self.selectedValue_skin.setText(str(0)) + skinThicknessLabel = QLabel("Skin Thickness[0 - 100]", alignment=Qt.AlignmentFlag.AlignCenter) + leftVerticalLayout.addWidget(skinThicknessLabel) + leftVerticalLayout.addWidget(self.SkinThickness) + leftVerticalLayout.addWidget(self.selectedValue_skin) + + + # Silder button Insulin + self.Insulin = QSlider(Qt.Orientation.Horizontal) + self.Insulin.setMinimum(5) + self.Insulin.setMaximum(700) + self.Insulin.valueChanged.connect(self.updateSlider_insulin) + self.Insulin.setGeometry(5, 3, 20, 20) + self.selectedValue_insulin = QLabel(self) + self.selectedValue_insulin.setText(str(5)) + insulinLabel = QLabel("Insulin [5 - 700]", alignment=Qt.AlignmentFlag.AlignCenter) + leftVerticalLayout.addWidget(insulinLabel) + leftVerticalLayout.addWidget(self.Insulin) + leftVerticalLayout.addWidget(self.selectedValue_insulin) + + + + + # Silder button BMI + self.BMI = QSlider(Qt.Orientation.Horizontal) + self.BMI.setMinimum(10) + self.BMI.setMaximum(80) + self.BMI.valueChanged.connect(self.updateSlider_BMI) + self.BMI.setGeometry(5, 3, 20, 20) + self.selectedValue_BMI = QLabel(self) + self.selectedValue_BMI.setText(str(10)) + bmiLabel = QLabel("BMI [10 - 80]", alignment=Qt.AlignmentFlag.AlignCenter) + leftVerticalLayout.addWidget(bmiLabel) + leftVerticalLayout.addWidget(self.BMI) + leftVerticalLayout.addWidget(self.selectedValue_BMI) + + + # Silder button DiabetesPredegreeFunction + self.DiabetesPredegreeFunction = QSlider(Qt.Orientation.Horizontal) + self.DiabetesPredegreeFunction.setMinimum(0) + self.DiabetesPredegreeFunction.setMaximum(4) + self.DiabetesPredegreeFunction.setTickInterval(4) + self.DiabetesPredegreeFunction.valueChanged.connect(self.updateSlider_dibeticsPredegree) + self.DiabetesPredegreeFunction.setGeometry(5, 3, 20, 20) + self.selectedValue_predegree = QLabel(self) + self.selectedValue_predegree.setText(str(0)) + label7 = QLabel("Diabetes Predegree Func [0 - 4]", alignment=Qt.AlignmentFlag.AlignCenter) + leftVerticalLayout.addWidget(label7) + leftVerticalLayout.addWidget(self.DiabetesPredegreeFunction) + leftVerticalLayout.addWidget(self.selectedValue_predegree) + + + + # Silder button Age + self.age = QSlider(Qt.Orientation.Horizontal) + self.age.setMinimum(18) + self.age.setMaximum(150) + self.age.valueChanged.connect(self.updateSlider_Age) + self.age.setGeometry(5, 3, 20, 20) + self.selectedValue_age = QLabel(self) + self.selectedValue_age.setText(str(18)) + label8 = QLabel("Age [18 - 150]", alignment=Qt.AlignmentFlag.AlignCenter) + leftVerticalLayout.addWidget(label8) + leftVerticalLayout.addWidget(self.age) + leftVerticalLayout.addWidget(self.selectedValue_age) + + + # Push button Predict + self.predict = QPushButton("Predict") + leftVerticalLayout.addWidget(self.predict) + self.predict.clicked.connect(self.predictiveSystem) + self.predictedValue = QLabel(" Prediction: None", self) + leftVerticalLayout.addWidget(self.predictedValue) + + + ####----------------Main Window Graph ------------ + + self.setWindowTitle('Women Diabetics Prediction') + + x = diabetes["Age"] + y = diabetes["Glucose"] + + + fig = Figure() + ax =fig.add_subplot(111) + + ax.set_title('Glucose Levels Across Age:Predicting Diabetes Risk.') + x_label= ax.set_xlabel('Age') + y_label = ax.set_ylabel('Glucose') + + #ax.bar(x,y) + ax.bar(x,y) + graph =FigureCanvas(fig) + + + ###--------Connecting (all the buttons to left vertical layout) & (graph to the right vertical layout) + RightVerticalLayout.addWidget(graph) + MainLayout.addLayout(leftVerticalLayout) + MainLayout.addLayout(RightVerticalLayout) + + + mainWidget = QWidget() + mainWidget.setLayout(MainLayout) + self.setCentralWidget(mainWidget) + + + + + + + # menu + + # action 1 from menu + self.window2 = None + histogram_action = QAction(QIcon("chart-medium.png"), "Histogram", self) + histogram_action.setStatusTip("View Histogram.") + histogram_action.triggered.connect(self.show_hist_window) + + # action 2 from menu + self.window3 = None + plot_action = QAction(QIcon("plot.png"), "Plot Graph", self) + plot_action.setStatusTip("Real Time Graph") + plot_action.triggered.connect(self.show_realTime_window) + + menu = self.menuBar() + file_menu = menu.addMenu("&Menu") + file_menu.addAction(histogram_action) + file_menu.addAction(plot_action) + + + + + def Pregnancies_onStateChanged(self): + if self.pregnancies_checkbox.isChecked(): + self.pregnancies_checkbox.setText("Pregnant") + else: + self.pregnancies_checkbox.setText("Not Pregnant") + + def updateSlider_pregnancies(self): + val = self.pregnancies.value() + self.selectedValue_preg.setText(str(val)) + def updateSlider_Glucose(self): + val = self.Glucose.value() + self.selectedValue_glucose.setText(str(val)) + def updateSlider_BloodPressure(self): + val = self.BloodPressure.value() + self.selectedValue_blood.setText(str(val)) + def updateSlider_skinThickness(self): + val = self.SkinThickness.value() + self.selectedValue_skin.setText(str(val)) + def updateSlider_insulin(self): + val = self.Insulin.value() + self.selectedValue_insulin.setText(str(val)) + def updateSlider_BMI(self): + val = self.BMI.value() + self.selectedValue_BMI.setText(str(val)) + def updateSlider_dibeticsPredegree(self): + val = self.DiabetesPredegreeFunction.value() + self.selectedValue_predegree.setText(str(val)) + def updateSlider_Age(self): + val = self.age.value() + self.selectedValue_age.setText(str(val)) + + def show_hist_window(self): + if self.window2 is None: + self.window2 = secondWindow() + self.window2.show() + + def show_realTime_window(self): + if self.window3 is None: + self.window3 = thirdWindow() + self.window3.show() + + def generateData(self): + global diabetes + self.diabetes = pd.read_csv('diabetes_clean_03042021.csv') + print("self.diabetes.head(8):") + print(self.diabetes.head(10)) + print("self.diabetes.tail(5): ") + print(self.diabetes.tail(5)) + print("self.diabetes.info():") + print(self.diabetes.info()) + + # number of rows and columns + print("Rows: ", self.diabetes.shape[0]) + print("Columns: ", self.diabetes.shape[1]) + print("self.diabetes.describe(): ") + print(self.diabetes.describe()) + print("Total Diabetic(1) and Non-diabetic(0) patient:", self.diabetes['Outcome'].value_counts()) + print("[Mean] grouped by diabetic(1) and Non-diabetic(0) patient: ") + print(self.diabetes.groupby('Outcome').mean()) + + # ----------- Machine learning ------ + print("-----Training data-----") + x = self.diabetes.drop(columns='Outcome', axis=1) # data + y = self.diabetes['Outcome'] # model + + # Data Standardization + self.scaler = StandardScaler() + self.scaler.fit(x) + standardized_data = self.scaler.transform(x) + # print(standardized_data) + + x = standardized_data # data + y = self.diabetes['Outcome'] # model + + # Train Test Split + x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.20, random_state=42) + # test_size = 0.20 means 20% test data and 80% train data + + # print(x.shape, x_train.shape, x_test.shape) + + # Training The Model with SVM Algorithm + self. svm_classifier = svm.SVC(kernel='linear') + # training the support vector machine classifier + self.svm_classifier.fit(x_train, y_train) + + # Accuracy Check + # Train Data + x_train_prediction = self.svm_classifier.predict(x_train) + training_data_accuracy = accuracy_score(x_train_prediction, y_train) + print("Accuracy Score of the training data: ", training_data_accuracy) + + # Test data + x_test_prediction = self.svm_classifier.predict(x_test) + test_data_accuracy = accuracy_score(x_test_prediction, y_test) + print("Accuracy Score of the testing data: ", test_data_accuracy) + + + # correlation ---- highest x=age y=blood pressure + corr_matrix = self.diabetes.corr() + print("self.diabetes.corr(): ", corr_matrix) + + if (x_test_prediction[0] == 0): + result = print("The person is not diabetic. ") + else: + result = print("The person is diabetic. ") + + # calculating the values for the predictive System + def predictiveSystem(self): + global result + from random import randint + count = randint(0, 767) + + # converting checkbox value into 0 or 1 + if self.pregnancies_checkbox.isChecked() == True: + pregnancies_checkbox = 1 + else: + pregnancies_checkbox = 0 + + Glucose = self.Glucose.value() + BloodPressure =self.BloodPressure.value() + SkinThickness = self.SkinThickness.value() + Insulin = self.Insulin.value() + bmi = self.BMI.value() + DiabetesPedigreeFunction = self.DiabetesPredegreeFunction.value() + Age = self.age.value() + + # inputData = [value,1, 110, 92, 0, 0, 37.6,0.191, 30] + sampleData = [count, pregnancies_checkbox, Glucose, BloodPressure, SkinThickness, Insulin, bmi, DiabetesPedigreeFunction, + Age] + + # change the input data to numpy array + sampleData_numpy = np.asarray(sampleData) + + # reshaping array as we are predicting for one instance + reshaping = sampleData_numpy.reshape(1, -1) + + # standardize the input data + standardize_sampleData = self.scaler.transform(reshaping) + # print(std_data) + + prediction = self.svm_classifier.predict(standardize_sampleData) + print(prediction) + if (prediction[0] == 0): + + self.predictedValue.setText("Prediction: The person is not diabetic. ") + else: + + self.predictedValue.setText("Prediction: The person is diabetic. ") + + + + +if __name__ == '__main__': + app = QApplication(sys.argv) + + with open("style.css", "r") as file: + app.setStyleSheet(file.read()) + + window = MainWindow() + #window.setFixedSize(1200,800) + + + window.design() + window.generateData() + + window.show() + + sys.exit(app.exec()) diff --git a/plot.png b/plot.png new file mode 100644 index 0000000000000000000000000000000000000000..24827761ba223993fa33b01bfbc26077d77e1cd0 Binary files /dev/null and b/plot.png differ diff --git a/style.css b/style.css new file mode 100644 index 0000000000000000000000000000000000000000..617ad35488e5fc2be677f2408c4f73fd252f25dd --- /dev/null +++ b/style.css @@ -0,0 +1,42 @@ +QMainWindow { + background-color: #1e1f22; + border-radius: 5px; + background-image: url('image.jpg'); /* set the path to your image */ + background-repeat: no-repeat; /* prevent the image from repeating */ + background-position: center; /* position the image in the center */ + +} + +QSlider::handle:horizontal { + background: #13fcec; + width: 10px; + margin: -5px -1px; + border-radius: 5px; + border: 1px solid #2a2a2a; +} +QSlider::groove:horizontal { + background: #ffffff6a; + height:2px; + border: 1px solid #2a2a2a; +} + +QPushButton { + background-color: #1ffcd3; /* set the background color */ + color: #0f3f33; /* set the text color */ + border: 1px solid #0fe6b490; /* add a border */ + padding: 5px 10px; /* add padding */ + border-radius: 5px; +} +QLabel { + color: #ffffff; /* set the text color for labels */ + font-size: 14px; /* set the font size for labels */ + font-family: 'Courier New', Monospace; /* set the font family for labels */ + font-weight: bold; +} + +QCheckBox { + color: #ffffff; /* set the text color for labels */ + font-size: 18px; /* set the font size for labels */ + font-family: 'Courier New', Monospace; /* set the font family for labels */ + font-weight: bold; +}