poornesh110 commited on
Commit
718802e
1 Parent(s): bfa992c

Delete Final_Notebook.ipynb

Browse files
Files changed (1) hide show
  1. Final_Notebook.ipynb +0 -1566
Final_Notebook.ipynb DELETED
@@ -1,1566 +0,0 @@
1
- {
2
- "cells": [
3
- {
4
- "cell_type": "markdown",
5
- "id": "54cd60f1",
6
- "metadata": {},
7
- "source": [
8
- "# Importing the Required Libraries."
9
- ]
10
- },
11
- {
12
- "cell_type": "code",
13
- "execution_count": 1,
14
- "id": "ccefe4f8",
15
- "metadata": {},
16
- "outputs": [
17
- {
18
- "name": "stdout",
19
- "output_type": "stream",
20
- "text": [
21
- "env: SM_FRAMEWORK=tf.keras\n",
22
- "Segmentation Models: using `tf.keras` framework.\n"
23
- ]
24
- }
25
- ],
26
- "source": [
27
- "import keras \n",
28
- "%env SM_FRAMEWORK=tf.keras\n",
29
- "import segmentation_models as sm\n",
30
- "import glob\n",
31
- "import matplotlib.pyplot as plt\n",
32
- "from scipy import ndimage\n",
33
- "from scipy.ndimage import label, generate_binary_structure\n",
34
- "import radiomics\n",
35
- "import cv2\n",
36
- "import SimpleITK as sitk\n",
37
- "import six\n",
38
- "import numpy as np\n",
39
- "import pandas as pd\n",
40
- "import seaborn as sns\n",
41
- "import matplotlib.pyplot as plt\n",
42
- "from sklearn.model_selection import train_test_split\n",
43
- "%matplotlib inline\n",
44
- "from sklearn.feature_selection import SelectKBest\n",
45
- "from sklearn.feature_selection import mutual_info_classif\n",
46
- "from sklearn.ensemble import RandomForestClassifier\n",
47
- "from sklearn.feature_selection import RFE\n",
48
- "from sklearn.metrics import roc_auc_score\n",
49
- "from sklearn.feature_selection import SelectFromModel\n",
50
- "from sklearn.linear_model import Lasso, LogisticRegression\n",
51
- "from sklearn.preprocessing import StandardScaler\n",
52
- "from sklearn.decomposition import PCA \n",
53
- "from sklearn.svm import LinearSVC\n",
54
- "from sklearn.datasets import load_iris\n",
55
- "from sklearn.feature_selection import SelectFromModel\n",
56
- "from sklearn.feature_selection import mutual_info_classif as MIC\n",
57
- "from sklearn.feature_selection import mutual_info_classif, mutual_info_regression\n",
58
- "from sklearn.feature_selection import SelectKBest, SelectPercentile\n",
59
- "from sklearn.feature_selection import SequentialFeatureSelector\n",
60
- "from sklearn.neighbors import KNeighborsClassifier\n",
61
- "from sklearn.linear_model import LogisticRegression\n",
62
- "from sklearn.ensemble import RandomForestClassifier\n",
63
- "from sklearn.svm import SVC\n",
64
- "from sklearn.metrics import f1_score\n",
65
- "from sklearn.model_selection import cross_validate\n",
66
- "from sklearn.tree import DecisionTreeClassifier \n",
67
- "from sklearn.linear_model import Perceptron\n",
68
- "from sklearn.model_selection import RandomizedSearchCV\n",
69
- "from sklearn.model_selection import GridSearchCV\n",
70
- "# from hyperopt import hp\n",
71
- "\n",
72
- "import warnings\n",
73
- "warnings.filterwarnings('ignore')\n",
74
- "import os\n",
75
- "\n",
76
- "os.environ[\"CUDA_VISIBLE_DEVICES\"] = \"1\""
77
- ]
78
- },
79
- {
80
- "cell_type": "markdown",
81
- "id": "af822604",
82
- "metadata": {},
83
- "source": [
84
- "# Defining the path to Model and Images"
85
- ]
86
- },
87
- {
88
- "cell_type": "code",
89
- "execution_count": 2,
90
- "id": "f371ad9f",
91
- "metadata": {},
92
- "outputs": [],
93
- "source": [
94
- "IMAGE_SIZE = (256,256,3)\n",
95
- "\n",
96
- "path_base_model = './/models//'\n",
97
- "path_base_input = './/Normal//'\n",
98
- "path_base_mask = './/Normal_Mask//'"
99
- ]
100
- },
101
- {
102
- "cell_type": "markdown",
103
- "id": "47a20058",
104
- "metadata": {},
105
- "source": [
106
- "# Loading the models"
107
- ]
108
- },
109
- {
110
- "cell_type": "code",
111
- "execution_count": 4,
112
- "id": "967377df",
113
- "metadata": {},
114
- "outputs": [],
115
- "source": [
116
- "BACKBONE = 'efficientnetb0'\n",
117
- "model1 = sm.Unet(BACKBONE, input_shape = (IMAGE_SIZE[0],IMAGE_SIZE[1],IMAGE_SIZE[2]),classes=1, activation='sigmoid',encoder_weights='imagenet')\n",
118
- "model2 = sm.Unet(BACKBONE, input_shape = (IMAGE_SIZE[0],IMAGE_SIZE[1],IMAGE_SIZE[2]),classes=1, activation='sigmoid',encoder_weights='imagenet')\n",
119
- "model3 = sm.Unet(BACKBONE, input_shape = (IMAGE_SIZE[0],IMAGE_SIZE[1],IMAGE_SIZE[2]),classes=1, activation='sigmoid',encoder_weights='imagenet')\n",
120
- "\n",
121
- "BACKBONE = 'efficientnetb7'\n",
122
- "model4 = sm.Unet(BACKBONE, input_shape = (IMAGE_SIZE[0],IMAGE_SIZE[1],IMAGE_SIZE[2]),classes=1, activation='sigmoid',encoder_weights='imagenet')\n",
123
- "model5 = sm.Unet(BACKBONE, input_shape = (IMAGE_SIZE[0],IMAGE_SIZE[1],IMAGE_SIZE[2]),classes=1, activation='sigmoid',encoder_weights='imagenet')\n",
124
- "\n",
125
- "preprocess_input = sm.get_preprocessing(BACKBONE)\n",
126
- "\n",
127
- "model1.load_weights(path_base_model + 'model1.hdf5')\n",
128
- "model2.load_weights(path_base_model + 'model2.hdf5')\n",
129
- "model3.load_weights(path_base_model + 'model3.hdf5')\n",
130
- "model4.load_weights(path_base_model + 'model4.hdf5')\n",
131
- "model5.load_weights(path_base_model + 'model5.hdf5')"
132
- ]
133
- },
134
- {
135
- "cell_type": "markdown",
136
- "id": "ec1f8366",
137
- "metadata": {},
138
- "source": [
139
- "# Defining Required Functions"
140
- ]
141
- },
142
- {
143
- "cell_type": "code",
144
- "execution_count": 5,
145
- "id": "3865b721",
146
- "metadata": {},
147
- "outputs": [],
148
- "source": [
149
- "def preprocessing_HE(img_):\n",
150
- " \n",
151
- " hist, bins = np.histogram(img_.flatten(), 256,[0,256])\n",
152
- " cdf = hist.cumsum()\n",
153
- " cdf_m = np.ma.masked_equal(cdf,0)\n",
154
- " cdf_m = (cdf_m - cdf_m.min())*255/(cdf_m.max()-cdf_m.min())\n",
155
- " cdf = np.ma.filled(cdf_m,0).astype('uint8')\n",
156
- "\n",
157
- " img_2 = cdf[img_]\n",
158
- " \n",
159
- " return img_2 \n",
160
- " \n",
161
- "def get_binary_mask (mask_, th_ = 0.5):\n",
162
- " mask_[mask_>th_] = 1\n",
163
- " mask_[mask_<=th_] = 0\n",
164
- " return mask_\n",
165
- " \n",
166
- "def ensemble_results (mask1_, mask2_, mask3_, mask4_, mask5_):\n",
167
- " \n",
168
- " mask1_ = get_binary_mask (mask1_)\n",
169
- " mask2_ = get_binary_mask (mask2_)\n",
170
- " mask3_ = get_binary_mask (mask3_)\n",
171
- " mask4_ = get_binary_mask (mask4_)\n",
172
- " mask5_ = get_binary_mask (mask5_)\n",
173
- " \n",
174
- " ensemble_mask = mask1_ + mask2_ + mask3_ + mask4_ + mask5_\n",
175
- " ensemble_mask[ensemble_mask<=2.0] = 0\n",
176
- " ensemble_mask[ensemble_mask> 2.0] = 1\n",
177
- " \n",
178
- " return ensemble_mask\n",
179
- "\n",
180
- "def postprocessing_HoleFilling (mask_):\n",
181
- " \n",
182
- " ensemble_mask_post_temp = ndimage.binary_fill_holes(mask_).astype(int)\n",
183
- " \n",
184
- " return ensemble_mask_post_temp\n",
185
- "\n",
186
- "def get_maximum_index (labeled_array):\n",
187
- " \n",
188
- " ind_nums = []\n",
189
- " for i in range (len(np.unique(labeled_array)) - 1):\n",
190
- " ind_nums.append ([0, i+1])\n",
191
- " \n",
192
- " for i in range (1, len(np.unique(labeled_array))):\n",
193
- " ind_nums[i-1][0] = len(np.where (labeled_array == np.unique(labeled_array)[i])[0])\n",
194
- " \n",
195
- " ind_nums = sorted(ind_nums)\n",
196
- " \n",
197
- " return ind_nums[len(ind_nums)-1][1], ind_nums[len(ind_nums)-2][1]\n",
198
- " \n",
199
- "def postprocessing_EliminatingIsolation (ensemble_mask_post_temp):\n",
200
- " \n",
201
- " labeled_array, num_features = label(ensemble_mask_post_temp)\n",
202
- " \n",
203
- " ind_max1, ind_max2 = get_maximum_index (labeled_array)\n",
204
- " \n",
205
- " ensemble_mask_post_temp2 = np.zeros (ensemble_mask_post_temp.shape)\n",
206
- " ensemble_mask_post_temp2[labeled_array == ind_max1] = 1\n",
207
- " ensemble_mask_post_temp2[labeled_array == ind_max2] = 1 \n",
208
- " \n",
209
- " return ensemble_mask_post_temp2.astype(int)\n",
210
- "\n",
211
- "def get_prediction(model_, img_org_):\n",
212
- " \n",
213
- " img_org_resize = cv2.resize(img_org_,(IMAGE_SIZE[0],IMAGE_SIZE[1]),cv2.INTER_AREA)\n",
214
- " img_org_resize_HE = preprocessing_HE (img_org_resize) \n",
215
- " img_ready = preprocess_input (img_org_resize_HE)\n",
216
- "\n",
217
- " img_ready = np.expand_dims(img_ready, axis=0) \n",
218
- " pr_mask = model_.predict(img_ready)\n",
219
- " pr_mask = np.squeeze(pr_mask)\n",
220
- " pr_mask = np.expand_dims(pr_mask, axis=-1) \n",
221
- " return pr_mask[:,:,0]"
222
- ]
223
- },
224
- {
225
- "cell_type": "markdown",
226
- "id": "ea9ccd8d",
227
- "metadata": {},
228
- "source": [
229
- "# Generation of Masks"
230
- ]
231
- },
232
- {
233
- "cell_type": "code",
234
- "execution_count": null,
235
- "id": "e27823f5",
236
- "metadata": {},
237
- "outputs": [],
238
- "source": [
239
- "for path_ in sorted(glob.glob (path_base_input + '*.*')):\n",
240
- " \n",
241
- " img = cv2.imread(path_) \n",
242
- " pr_mask1 = get_prediction (model1, img);\n",
243
- " pr_mask2 = get_prediction (model2, img);\n",
244
- " pr_mask3 = get_prediction (model3, img);\n",
245
- " pr_mask4 = get_prediction (model4, img);\n",
246
- " pr_mask5 = get_prediction (model5, img); \n",
247
- " \n",
248
- " ensemble_mask = ensemble_results (pr_mask1, pr_mask2, pr_mask3, pr_mask4, pr_mask5)\n",
249
- " ensemble_mask_post_HF = postprocessing_HoleFilling (ensemble_mask)\n",
250
- " ensemble_mask_post_HF_EI = postprocessing_EliminatingIsolation (ensemble_mask_post_HF)\n",
251
- " \n",
252
- " image_name = path_.split('\\\\')[-1]\n",
253
- " cv2.imwrite(path_base_mask+image_name,ensemble_mask_post_HF_EI*255)\n",
254
- " "
255
- ]
256
- },
257
- {
258
- "cell_type": "markdown",
259
- "id": "9fd2ba62",
260
- "metadata": {},
261
- "source": [
262
- "# Feature Extraction"
263
- ]
264
- },
265
- {
266
- "cell_type": "markdown",
267
- "id": "55f861d4",
268
- "metadata": {},
269
- "source": [
270
- "# Defining the path to Images and Image Masks"
271
- ]
272
- },
273
- {
274
- "cell_type": "code",
275
- "execution_count": 6,
276
- "id": "ce59d165",
277
- "metadata": {},
278
- "outputs": [],
279
- "source": [
280
- "n_path = \".\\\\Normal\"\n",
281
- "mask_n_path = \".\\\\Normal_Mask\"\n",
282
- "p_path = \".\\\\Pneumonia\"\n",
283
- "mask_p_path = \".\\\\Pneumonia_Mask\""
284
- ]
285
- },
286
- {
287
- "cell_type": "markdown",
288
- "id": "2ac25014",
289
- "metadata": {},
290
- "source": [
291
- "# Function to load the images"
292
- ]
293
- },
294
- {
295
- "cell_type": "code",
296
- "execution_count": 7,
297
- "id": "057bdbd1",
298
- "metadata": {},
299
- "outputs": [],
300
- "source": [
301
- "def image_files(path,list_name):\n",
302
- " for dir_name, sub_dir_list, file_list in os.walk(path):\n",
303
- " for file_name in file_list:\n",
304
- " if \".jpeg\" in file_name.lower():\n",
305
- " list_name.append(os.path.join(dir_name, file_name))"
306
- ]
307
- },
308
- {
309
- "cell_type": "markdown",
310
- "id": "2849ba99",
311
- "metadata": {},
312
- "source": [
313
- "## Get the Images path stored in a list"
314
- ]
315
- },
316
- {
317
- "cell_type": "code",
318
- "execution_count": 8,
319
- "id": "e3491678",
320
- "metadata": {},
321
- "outputs": [],
322
- "source": [
323
- "nList = []\n",
324
- "image_files(n_path,nList);\n",
325
- "\n",
326
- "mask_nList = []\n",
327
- "image_files(mask_n_path,mask_nList);\n",
328
- "\n",
329
- "pList = []\n",
330
- "image_files(p_path,pList);\n",
331
- "\n",
332
- "mask_pList = []\n",
333
- "image_files(mask_p_path,mask_pList);"
334
- ]
335
- },
336
- {
337
- "cell_type": "markdown",
338
- "id": "c76a5b38",
339
- "metadata": {},
340
- "source": [
341
- "## Create and intantiate Feature Extractor and enable the required features"
342
- ]
343
- },
344
- {
345
- "cell_type": "code",
346
- "execution_count": 9,
347
- "id": "4d85b957",
348
- "metadata": {},
349
- "outputs": [],
350
- "source": [
351
- "extractor = radiomics.featureextractor.RadiomicsFeatureExtractor(force2D=True)\n",
352
- "extractor.enableImageTypeByName('Original') # extract features from the original image\n",
353
- "extractor.enableFeatureClassByName('firstorder') # extract first-order features\n",
354
- "extractor.enableFeatureClassByName('glcm') # extract GLCM features\n",
355
- "extractor.enableFeatureClassByName('gldm') # extract GLDM features\n",
356
- "extractor.enableFeatureClassByName('glszm') # extract GLSZM features\n",
357
- "extractor.enableFeatureClassByName('ngtdm') # extract NGTDM features"
358
- ]
359
- },
360
- {
361
- "cell_type": "code",
362
- "execution_count": 10,
363
- "id": "8ec8a0fd",
364
- "metadata": {},
365
- "outputs": [],
366
- "source": [
367
- "features_name = ['diagnostics_Versions_PyRadiomics',\n",
368
- " 'diagnostics_Versions_Numpy',\n",
369
- " 'diagnostics_Versions_SimpleITK',\n",
370
- " 'diagnostics_Versions_PyWavelet',\n",
371
- " 'diagnostics_Versions_Python',\n",
372
- " 'diagnostics_Configuration_Settings',\n",
373
- " 'diagnostics_Configuration_EnabledImageTypes',\n",
374
- " 'diagnostics_Image-original_Hash',\n",
375
- " 'diagnostics_Image-original_Dimensionality',\n",
376
- " 'diagnostics_Image-original_Spacing',\n",
377
- " 'diagnostics_Image-original_Size',\n",
378
- " 'diagnostics_Image-original_Mean',\n",
379
- " 'diagnostics_Image-original_Minimum',\n",
380
- " 'diagnostics_Image-original_Maximum',\n",
381
- " 'diagnostics_Mask-original_Hash',\n",
382
- " 'diagnostics_Mask-original_Spacing',\n",
383
- " 'diagnostics_Mask-original_Size',\n",
384
- " 'diagnostics_Mask-original_BoundingBox',\n",
385
- " 'diagnostics_Mask-original_VoxelNum',\n",
386
- " 'diagnostics_Mask-original_VolumeNum',\n",
387
- " 'diagnostics_Mask-original_CenterOfMassIndex',\n",
388
- " 'diagnostics_Mask-original_CenterOfMass',\n",
389
- " 'original_firstorder_10Percentile',\n",
390
- " 'original_firstorder_90Percentile',\n",
391
- " 'original_firstorder_Energy',\n",
392
- " 'original_firstorder_Entropy',\n",
393
- " 'original_firstorder_InterquartileRange',\n",
394
- " 'original_firstorder_Kurtosis',\n",
395
- " 'original_firstorder_Maximum',\n",
396
- " 'original_firstorder_MeanAbsoluteDeviation',\n",
397
- " 'original_firstorder_Mean',\n",
398
- " 'original_firstorder_Median',\n",
399
- " 'original_firstorder_Minimum',\n",
400
- " 'original_firstorder_Range',\n",
401
- " 'original_firstorder_RobustMeanAbsoluteDeviation',\n",
402
- " 'original_firstorder_RootMeanSquared',\n",
403
- " 'original_firstorder_Skewness',\n",
404
- " 'original_firstorder_TotalEnergy',\n",
405
- " 'original_firstorder_Uniformity',\n",
406
- " 'original_firstorder_Variance',\n",
407
- " 'original_glcm_Autocorrelation',\n",
408
- " 'original_glcm_ClusterProminence',\n",
409
- " 'original_glcm_ClusterShade',\n",
410
- " 'original_glcm_ClusterTendency',\n",
411
- " 'original_glcm_Contrast',\n",
412
- " 'original_glcm_Correlation',\n",
413
- " 'original_glcm_DifferenceAverage',\n",
414
- " 'original_glcm_DifferenceEntropy',\n",
415
- " 'original_glcm_DifferenceVariance',\n",
416
- " 'original_glcm_Id',\n",
417
- " 'original_glcm_Idm',\n",
418
- " 'original_glcm_Idmn',\n",
419
- " 'original_glcm_Idn',\n",
420
- " 'original_glcm_Imc1',\n",
421
- " 'original_glcm_Imc2',\n",
422
- " 'original_glcm_InverseVariance',\n",
423
- " 'original_glcm_JointAverage',\n",
424
- " 'original_glcm_JointEnergy',\n",
425
- " 'original_glcm_JointEntropy',\n",
426
- " 'original_glcm_MCC',\n",
427
- " 'original_glcm_MaximumProbability',\n",
428
- " 'original_glcm_SumAverage',\n",
429
- " 'original_glcm_SumEntropy',\n",
430
- " 'original_glcm_SumSquares',\n",
431
- " 'original_gldm_DependenceEntropy',\n",
432
- " 'original_gldm_DependenceNonUniformity',\n",
433
- " 'original_gldm_DependenceNonUniformityNormalized',\n",
434
- " 'original_gldm_DependenceVariance',\n",
435
- " 'original_gldm_GrayLevelNonUniformity',\n",
436
- " 'original_gldm_GrayLevelVariance',\n",
437
- " 'original_gldm_HighGrayLevelEmphasis',\n",
438
- " 'original_gldm_LargeDependenceEmphasis',\n",
439
- " 'original_gldm_LargeDependenceHighGrayLevelEmphasis',\n",
440
- " 'original_gldm_LargeDependenceLowGrayLevelEmphasis',\n",
441
- " 'original_gldm_LowGrayLevelEmphasis',\n",
442
- " 'original_gldm_SmallDependenceEmphasis',\n",
443
- " 'original_gldm_SmallDependenceHighGrayLevelEmphasis',\n",
444
- " 'original_gldm_SmallDependenceLowGrayLevelEmphasis',\n",
445
- " 'original_glrlm_GrayLevelNonUniformity',\n",
446
- " 'original_glrlm_GrayLevelNonUniformityNormalized',\n",
447
- " 'original_glrlm_GrayLevelVariance',\n",
448
- " 'original_glrlm_HighGrayLevelRunEmphasis',\n",
449
- " 'original_glrlm_LongRunEmphasis',\n",
450
- " 'original_glrlm_LongRunHighGrayLevelEmphasis',\n",
451
- " 'original_glrlm_LongRunLowGrayLevelEmphasis',\n",
452
- " 'original_glrlm_LowGrayLevelRunEmphasis',\n",
453
- " 'original_glrlm_RunEntropy',\n",
454
- " 'original_glrlm_RunLengthNonUniformity',\n",
455
- " 'original_glrlm_RunLengthNonUniformityNormalized',\n",
456
- " 'original_glrlm_RunPercentage',\n",
457
- " 'original_glrlm_RunVariance',\n",
458
- " 'original_glrlm_ShortRunEmphasis',\n",
459
- " 'original_glrlm_ShortRunHighGrayLevelEmphasis',\n",
460
- " 'original_glrlm_ShortRunLowGrayLevelEmphasis',\n",
461
- " 'original_glszm_GrayLevelNonUniformity',\n",
462
- " 'original_glszm_GrayLevelNonUniformityNormalized',\n",
463
- " 'original_glszm_GrayLevelVariance',\n",
464
- " 'original_glszm_HighGrayLevelZoneEmphasis',\n",
465
- " 'original_glszm_LargeAreaEmphasis',\n",
466
- " 'original_glszm_LargeAreaHighGrayLevelEmphasis',\n",
467
- " 'original_glszm_LargeAreaLowGrayLevelEmphasis',\n",
468
- " 'original_glszm_LowGrayLevelZoneEmphasis',\n",
469
- " 'original_glszm_SizeZoneNonUniformity',\n",
470
- " 'original_glszm_SizeZoneNonUniformityNormalized',\n",
471
- " 'original_glszm_SmallAreaEmphasis',\n",
472
- " 'original_glszm_SmallAreaHighGrayLevelEmphasis',\n",
473
- " 'original_glszm_SmallAreaLowGrayLevelEmphasis',\n",
474
- " 'original_glszm_ZoneEntropy',\n",
475
- " 'original_glszm_ZonePercentage',\n",
476
- " 'original_glszm_ZoneVariance',\n",
477
- " 'original_ngtdm_Busyness',\n",
478
- " 'original_ngtdm_Coarseness',\n",
479
- " 'original_ngtdm_Complexity',\n",
480
- " 'original_ngtdm_Contrast',\n",
481
- " 'original_ngtdm_Strength']"
482
- ]
483
- },
484
- {
485
- "cell_type": "markdown",
486
- "id": "606a4177",
487
- "metadata": {},
488
- "source": [
489
- "# Function to Generate features and dataframe"
490
- ]
491
- },
492
- {
493
- "cell_type": "code",
494
- "execution_count": 11,
495
- "id": "434d3ad3",
496
- "metadata": {},
497
- "outputs": [],
498
- "source": [
499
- "def extract_features_get_DataFrame(imageList,maskList,LabelName):\n",
500
- " features = {}\n",
501
- " data = []\n",
502
- " df = pd.DataFrame(columns=features_name)\n",
503
- " \n",
504
- " for i in range(len(imageList)):\n",
505
- " imagepath = imageList[i]\n",
506
- " maskpath = maskList[i]\n",
507
- "\n",
508
- " # Load image and mask using SimpleITK\n",
509
- " image = sitk.ReadImage(imagepath, sitk.sitkInt8)\n",
510
- " mask = sitk.ReadImage(maskpath, sitk.sitkInt8)\n",
511
- " features[i] = extractor.execute(image, mask)\n",
512
- "\n",
513
- " values = []\n",
514
- " for key, value in six.iteritems(features[i]):\n",
515
- " values.append(value)\n",
516
- " data.extend([values])\n",
517
- " df.loc[i] = data[i]\n",
518
- " df['Label'] = LabelName\n",
519
- " DataFrame = df.iloc[:, 22:]\n",
520
- " return DataFrame"
521
- ]
522
- },
523
- {
524
- "cell_type": "markdown",
525
- "id": "0364ebd4",
526
- "metadata": {},
527
- "source": [
528
- "### For Normal Images"
529
- ]
530
- },
531
- {
532
- "cell_type": "code",
533
- "execution_count": 12,
534
- "id": "a2093d49",
535
- "metadata": {},
536
- "outputs": [
537
- {
538
- "name": "stderr",
539
- "output_type": "stream",
540
- "text": [
541
- "Shape features are only available 3D input (for 2D input, use shape2D). Found 2D input\n",
542
- "GLCM is symmetrical, therefore Sum Average = 2 * Joint Average, only 1 needs to be calculated\n",
543
- "Shape features are only available 3D input (for 2D input, use shape2D). Found 2D input\n",
544
- "GLCM is symmetrical, therefore Sum Average = 2 * Joint Average, only 1 needs to be calculated\n",
545
- "Shape features are only available 3D input (for 2D input, use shape2D). Found 2D input\n",
546
- "GLCM is symmetrical, therefore Sum Average = 2 * Joint Average, only 1 needs to be calculated\n",
547
- "Shape features are only available 3D input (for 2D input, use shape2D). Found 2D input\n",
548
- "GLCM is symmetrical, therefore Sum Average = 2 * Joint Average, only 1 needs to be calculated\n",
549
- "Shape features are only available 3D input (for 2D input, use shape2D). Found 2D input\n",
550
- "GLCM is symmetrical, therefore Sum Average = 2 * Joint Average, only 1 needs to be calculated\n"
551
- ]
552
- }
553
- ],
554
- "source": [
555
- "df_Normal = extract_features_get_DataFrame(nList,mask_nList,'0')"
556
- ]
557
- },
558
- {
559
- "cell_type": "code",
560
- "execution_count": 13,
561
- "id": "8bf50719",
562
- "metadata": {},
563
- "outputs": [
564
- {
565
- "data": {
566
- "text/html": [
567
- "<div>\n",
568
- "<style scoped>\n",
569
- " .dataframe tbody tr th:only-of-type {\n",
570
- " vertical-align: middle;\n",
571
- " }\n",
572
- "\n",
573
- " .dataframe tbody tr th {\n",
574
- " vertical-align: top;\n",
575
- " }\n",
576
- "\n",
577
- " .dataframe thead th {\n",
578
- " text-align: right;\n",
579
- " }\n",
580
- "</style>\n",
581
- "<table border=\"1\" class=\"dataframe\">\n",
582
- " <thead>\n",
583
- " <tr style=\"text-align: right;\">\n",
584
- " <th></th>\n",
585
- " <th>original_firstorder_10Percentile</th>\n",
586
- " <th>original_firstorder_90Percentile</th>\n",
587
- " <th>original_firstorder_Energy</th>\n",
588
- " <th>original_firstorder_Entropy</th>\n",
589
- " <th>original_firstorder_InterquartileRange</th>\n",
590
- " <th>original_firstorder_Kurtosis</th>\n",
591
- " <th>original_firstorder_Maximum</th>\n",
592
- " <th>original_firstorder_MeanAbsoluteDeviation</th>\n",
593
- " <th>original_firstorder_Mean</th>\n",
594
- " <th>original_firstorder_Median</th>\n",
595
- " <th>...</th>\n",
596
- " <th>original_glszm_SmallAreaLowGrayLevelEmphasis</th>\n",
597
- " <th>original_glszm_ZoneEntropy</th>\n",
598
- " <th>original_glszm_ZonePercentage</th>\n",
599
- " <th>original_glszm_ZoneVariance</th>\n",
600
- " <th>original_ngtdm_Busyness</th>\n",
601
- " <th>original_ngtdm_Coarseness</th>\n",
602
- " <th>original_ngtdm_Complexity</th>\n",
603
- " <th>original_ngtdm_Contrast</th>\n",
604
- " <th>original_ngtdm_Strength</th>\n",
605
- " <th>Label</th>\n",
606
- " </tr>\n",
607
- " </thead>\n",
608
- " <tbody>\n",
609
- " <tr>\n",
610
- " <th>0</th>\n",
611
- " <td>-112.0</td>\n",
612
- " <td>-34.0</td>\n",
613
- " <td>5550652.0</td>\n",
614
- " <td>2.3284534869438067</td>\n",
615
- " <td>44.5</td>\n",
616
- " <td>8.400887583892088</td>\n",
617
- " <td>127.0</td>\n",
618
- " <td>34.82461752409011</td>\n",
619
- " <td>-66.45515394912985</td>\n",
620
- " <td>-77.0</td>\n",
621
- " <td>...</td>\n",
622
- " <td>0.11973022960113251</td>\n",
623
- " <td>2.7722970475535966</td>\n",
624
- " <td>0.9183400267737617</td>\n",
625
- " <td>0.09267609584441858</td>\n",
626
- " <td>0.6286417322834645</td>\n",
627
- " <td>0.05847815875998121</td>\n",
628
- " <td>4.4602144186156165</td>\n",
629
- " <td>0.017935731294027306</td>\n",
630
- " <td>4.475337246421584</td>\n",
631
- " <td>0</td>\n",
632
- " </tr>\n",
633
- " <tr>\n",
634
- " <th>1</th>\n",
635
- " <td>-111.5</td>\n",
636
- " <td>-27.0</td>\n",
637
- " <td>4925398.0</td>\n",
638
- " <td>2.4460343300299066</td>\n",
639
- " <td>50.0</td>\n",
640
- " <td>8.624428344572735</td>\n",
641
- " <td>127.0</td>\n",
642
- " <td>32.96998181864095</td>\n",
643
- " <td>-61.69095477386934</td>\n",
644
- " <td>-67.5</td>\n",
645
- " <td>...</td>\n",
646
- " <td>0.10569254922967047</td>\n",
647
- " <td>2.9141566594543917</td>\n",
648
- " <td>0.9108040201005025</td>\n",
649
- " <td>0.11040951248513674</td>\n",
650
- " <td>0.5899321266968326</td>\n",
651
- " <td>0.04625352276358988</td>\n",
652
- " <td>9.80436059519249</td>\n",
653
- " <td>0.022246815252840835</td>\n",
654
- " <td>2.4286386615858753</td>\n",
655
- " <td>0</td>\n",
656
- " </tr>\n",
657
- " <tr>\n",
658
- " <th>2</th>\n",
659
- " <td>-112.0</td>\n",
660
- " <td>-39.0</td>\n",
661
- " <td>6671289.0</td>\n",
662
- " <td>2.3267621954806588</td>\n",
663
- " <td>41.0</td>\n",
664
- " <td>9.616482566993795</td>\n",
665
- " <td>127.0</td>\n",
666
- " <td>32.461620520299924</td>\n",
667
- " <td>-68.02552719200888</td>\n",
668
- " <td>-78.0</td>\n",
669
- " <td>...</td>\n",
670
- " <td>0.11589114921160931</td>\n",
671
- " <td>2.819440707913354</td>\n",
672
- " <td>0.9078801331853497</td>\n",
673
- " <td>0.10339638093985569</td>\n",
674
- " <td>1.4055338757887745</td>\n",
675
- " <td>0.026612319643199975</td>\n",
676
- " <td>10.437463435255335</td>\n",
677
- " <td>0.043792505681648095</td>\n",
678
- " <td>1.4309324118676843</td>\n",
679
- " <td>0</td>\n",
680
- " </tr>\n",
681
- " <tr>\n",
682
- " <th>3</th>\n",
683
- " <td>-118.0</td>\n",
684
- " <td>106.0</td>\n",
685
- " <td>5864917.0</td>\n",
686
- " <td>2.5719474080056024</td>\n",
687
- " <td>56.0</td>\n",
688
- " <td>4.704081014241062</td>\n",
689
- " <td>127.0</td>\n",
690
- " <td>48.106868838649454</td>\n",
691
- " <td>-56.4366391184573</td>\n",
692
- " <td>-72.0</td>\n",
693
- " <td>...</td>\n",
694
- " <td>0.1314703103204144</td>\n",
695
- " <td>3.082502248430138</td>\n",
696
- " <td>0.9022038567493113</td>\n",
697
- " <td>0.11496765922731775</td>\n",
698
- " <td>0.48974369472649854</td>\n",
699
- " <td>0.06069472892195795</td>\n",
700
- " <td>9.424465415358583</td>\n",
701
- " <td>0.04455113541805542</td>\n",
702
- " <td>3.1087223587223587</td>\n",
703
- " <td>0</td>\n",
704
- " </tr>\n",
705
- " <tr>\n",
706
- " <th>4</th>\n",
707
- " <td>-118.0</td>\n",
708
- " <td>-14.799999999999955</td>\n",
709
- " <td>5662306.0</td>\n",
710
- " <td>2.571356314779426</td>\n",
711
- " <td>52.0</td>\n",
712
- " <td>6.004405529018538</td>\n",
713
- " <td>127.0</td>\n",
714
- " <td>41.91748715028355</td>\n",
715
- " <td>-61.28281461434371</td>\n",
716
- " <td>-75.0</td>\n",
717
- " <td>...</td>\n",
718
- " <td>0.12574045993337593</td>\n",
719
- " <td>2.97907116578555</td>\n",
720
- " <td>0.925575101488498</td>\n",
721
- " <td>0.08563959850894291</td>\n",
722
- " <td>0.5294346840464722</td>\n",
723
- " <td>0.049441359470127774</td>\n",
724
- " <td>11.406539458175532</td>\n",
725
- " <td>0.02805927961079095</td>\n",
726
- " <td>3.3538475417230496</td>\n",
727
- " <td>0</td>\n",
728
- " </tr>\n",
729
- " </tbody>\n",
730
- "</table>\n",
731
- "<p>5 rows × 94 columns</p>\n",
732
- "</div>"
733
- ],
734
- "text/plain": [
735
- " original_firstorder_10Percentile original_firstorder_90Percentile \\\n",
736
- "0 -112.0 -34.0 \n",
737
- "1 -111.5 -27.0 \n",
738
- "2 -112.0 -39.0 \n",
739
- "3 -118.0 106.0 \n",
740
- "4 -118.0 -14.799999999999955 \n",
741
- "\n",
742
- " original_firstorder_Energy original_firstorder_Entropy \\\n",
743
- "0 5550652.0 2.3284534869438067 \n",
744
- "1 4925398.0 2.4460343300299066 \n",
745
- "2 6671289.0 2.3267621954806588 \n",
746
- "3 5864917.0 2.5719474080056024 \n",
747
- "4 5662306.0 2.571356314779426 \n",
748
- "\n",
749
- " original_firstorder_InterquartileRange original_firstorder_Kurtosis \\\n",
750
- "0 44.5 8.400887583892088 \n",
751
- "1 50.0 8.624428344572735 \n",
752
- "2 41.0 9.616482566993795 \n",
753
- "3 56.0 4.704081014241062 \n",
754
- "4 52.0 6.004405529018538 \n",
755
- "\n",
756
- " original_firstorder_Maximum original_firstorder_MeanAbsoluteDeviation \\\n",
757
- "0 127.0 34.82461752409011 \n",
758
- "1 127.0 32.96998181864095 \n",
759
- "2 127.0 32.461620520299924 \n",
760
- "3 127.0 48.106868838649454 \n",
761
- "4 127.0 41.91748715028355 \n",
762
- "\n",
763
- " original_firstorder_Mean original_firstorder_Median ... \\\n",
764
- "0 -66.45515394912985 -77.0 ... \n",
765
- "1 -61.69095477386934 -67.5 ... \n",
766
- "2 -68.02552719200888 -78.0 ... \n",
767
- "3 -56.4366391184573 -72.0 ... \n",
768
- "4 -61.28281461434371 -75.0 ... \n",
769
- "\n",
770
- " original_glszm_SmallAreaLowGrayLevelEmphasis original_glszm_ZoneEntropy \\\n",
771
- "0 0.11973022960113251 2.7722970475535966 \n",
772
- "1 0.10569254922967047 2.9141566594543917 \n",
773
- "2 0.11589114921160931 2.819440707913354 \n",
774
- "3 0.1314703103204144 3.082502248430138 \n",
775
- "4 0.12574045993337593 2.97907116578555 \n",
776
- "\n",
777
- " original_glszm_ZonePercentage original_glszm_ZoneVariance \\\n",
778
- "0 0.9183400267737617 0.09267609584441858 \n",
779
- "1 0.9108040201005025 0.11040951248513674 \n",
780
- "2 0.9078801331853497 0.10339638093985569 \n",
781
- "3 0.9022038567493113 0.11496765922731775 \n",
782
- "4 0.925575101488498 0.08563959850894291 \n",
783
- "\n",
784
- " original_ngtdm_Busyness original_ngtdm_Coarseness original_ngtdm_Complexity \\\n",
785
- "0 0.6286417322834645 0.05847815875998121 4.4602144186156165 \n",
786
- "1 0.5899321266968326 0.04625352276358988 9.80436059519249 \n",
787
- "2 1.4055338757887745 0.026612319643199975 10.437463435255335 \n",
788
- "3 0.48974369472649854 0.06069472892195795 9.424465415358583 \n",
789
- "4 0.5294346840464722 0.049441359470127774 11.406539458175532 \n",
790
- "\n",
791
- " original_ngtdm_Contrast original_ngtdm_Strength Label \n",
792
- "0 0.017935731294027306 4.475337246421584 0 \n",
793
- "1 0.022246815252840835 2.4286386615858753 0 \n",
794
- "2 0.043792505681648095 1.4309324118676843 0 \n",
795
- "3 0.04455113541805542 3.1087223587223587 0 \n",
796
- "4 0.02805927961079095 3.3538475417230496 0 \n",
797
- "\n",
798
- "[5 rows x 94 columns]"
799
- ]
800
- },
801
- "execution_count": 13,
802
- "metadata": {},
803
- "output_type": "execute_result"
804
- }
805
- ],
806
- "source": [
807
- "df_Normal.head()"
808
- ]
809
- },
810
- {
811
- "cell_type": "markdown",
812
- "id": "17117b6f",
813
- "metadata": {},
814
- "source": [
815
- "### For Pneumonia Images"
816
- ]
817
- },
818
- {
819
- "cell_type": "code",
820
- "execution_count": 14,
821
- "id": "ce6bc9e1",
822
- "metadata": {},
823
- "outputs": [
824
- {
825
- "name": "stderr",
826
- "output_type": "stream",
827
- "text": [
828
- "Shape features are only available 3D input (for 2D input, use shape2D). Found 2D input\n",
829
- "GLCM is symmetrical, therefore Sum Average = 2 * Joint Average, only 1 needs to be calculated\n",
830
- "Shape features are only available 3D input (for 2D input, use shape2D). Found 2D input\n",
831
- "GLCM is symmetrical, therefore Sum Average = 2 * Joint Average, only 1 needs to be calculated\n",
832
- "Shape features are only available 3D input (for 2D input, use shape2D). Found 2D input\n",
833
- "GLCM is symmetrical, therefore Sum Average = 2 * Joint Average, only 1 needs to be calculated\n",
834
- "Shape features are only available 3D input (for 2D input, use shape2D). Found 2D input\n",
835
- "GLCM is symmetrical, therefore Sum Average = 2 * Joint Average, only 1 needs to be calculated\n",
836
- "Shape features are only available 3D input (for 2D input, use shape2D). Found 2D input\n",
837
- "GLCM is symmetrical, therefore Sum Average = 2 * Joint Average, only 1 needs to be calculated\n",
838
- "Shape features are only available 3D input (for 2D input, use shape2D). Found 2D input\n",
839
- "GLCM is symmetrical, therefore Sum Average = 2 * Joint Average, only 1 needs to be calculated\n",
840
- "Shape features are only available 3D input (for 2D input, use shape2D). Found 2D input\n",
841
- "GLCM is symmetrical, therefore Sum Average = 2 * Joint Average, only 1 needs to be calculated\n",
842
- "Shape features are only available 3D input (for 2D input, use shape2D). Found 2D input\n",
843
- "GLCM is symmetrical, therefore Sum Average = 2 * Joint Average, only 1 needs to be calculated\n",
844
- "Shape features are only available 3D input (for 2D input, use shape2D). Found 2D input\n",
845
- "GLCM is symmetrical, therefore Sum Average = 2 * Joint Average, only 1 needs to be calculated\n",
846
- "Shape features are only available 3D input (for 2D input, use shape2D). Found 2D input\n",
847
- "GLCM is symmetrical, therefore Sum Average = 2 * Joint Average, only 1 needs to be calculated\n"
848
- ]
849
- }
850
- ],
851
- "source": [
852
- "df_Pneumonia = extract_features_get_DataFrame(pList,mask_pList,'1')"
853
- ]
854
- },
855
- {
856
- "cell_type": "code",
857
- "execution_count": 15,
858
- "id": "aa249857",
859
- "metadata": {},
860
- "outputs": [
861
- {
862
- "data": {
863
- "text/html": [
864
- "<div>\n",
865
- "<style scoped>\n",
866
- " .dataframe tbody tr th:only-of-type {\n",
867
- " vertical-align: middle;\n",
868
- " }\n",
869
- "\n",
870
- " .dataframe tbody tr th {\n",
871
- " vertical-align: top;\n",
872
- " }\n",
873
- "\n",
874
- " .dataframe thead th {\n",
875
- " text-align: right;\n",
876
- " }\n",
877
- "</style>\n",
878
- "<table border=\"1\" class=\"dataframe\">\n",
879
- " <thead>\n",
880
- " <tr style=\"text-align: right;\">\n",
881
- " <th></th>\n",
882
- " <th>original_firstorder_10Percentile</th>\n",
883
- " <th>original_firstorder_90Percentile</th>\n",
884
- " <th>original_firstorder_Energy</th>\n",
885
- " <th>original_firstorder_Entropy</th>\n",
886
- " <th>original_firstorder_InterquartileRange</th>\n",
887
- " <th>original_firstorder_Kurtosis</th>\n",
888
- " <th>original_firstorder_Maximum</th>\n",
889
- " <th>original_firstorder_MeanAbsoluteDeviation</th>\n",
890
- " <th>original_firstorder_Mean</th>\n",
891
- " <th>original_firstorder_Median</th>\n",
892
- " <th>...</th>\n",
893
- " <th>original_glszm_SmallAreaLowGrayLevelEmphasis</th>\n",
894
- " <th>original_glszm_ZoneEntropy</th>\n",
895
- " <th>original_glszm_ZonePercentage</th>\n",
896
- " <th>original_glszm_ZoneVariance</th>\n",
897
- " <th>original_ngtdm_Busyness</th>\n",
898
- " <th>original_ngtdm_Coarseness</th>\n",
899
- " <th>original_ngtdm_Complexity</th>\n",
900
- " <th>original_ngtdm_Contrast</th>\n",
901
- " <th>original_ngtdm_Strength</th>\n",
902
- " <th>Label</th>\n",
903
- " </tr>\n",
904
- " </thead>\n",
905
- " <tbody>\n",
906
- " <tr>\n",
907
- " <th>0</th>\n",
908
- " <td>-120.6</td>\n",
909
- " <td>108.60000000000002</td>\n",
910
- " <td>6097512.0</td>\n",
911
- " <td>2.057964519759019</td>\n",
912
- " <td>32.0</td>\n",
913
- " <td>5.119681336620311</td>\n",
914
- " <td>127.0</td>\n",
915
- " <td>51.04687788279773</td>\n",
916
- " <td>-69.9895652173913</td>\n",
917
- " <td>-96.0</td>\n",
918
- " <td>...</td>\n",
919
- " <td>0.15919477040215677</td>\n",
920
- " <td>2.5675195873233774</td>\n",
921
- " <td>0.9043478260869565</td>\n",
922
- " <td>0.11765902366863906</td>\n",
923
- " <td>0.5239669421487604</td>\n",
924
- " <td>0.06478143307796305</td>\n",
925
- " <td>6.937011985872065</td>\n",
926
- " <td>0.05134519235872208</td>\n",
927
- " <td>6.09080398348312</td>\n",
928
- " <td>1</td>\n",
929
- " </tr>\n",
930
- " <tr>\n",
931
- " <th>1</th>\n",
932
- " <td>-116.0</td>\n",
933
- " <td>-70.0</td>\n",
934
- " <td>6461289.0</td>\n",
935
- " <td>1.667250935600759</td>\n",
936
- " <td>24.0</td>\n",
937
- " <td>28.564360319356922</td>\n",
938
- " <td>127.0</td>\n",
939
- " <td>17.958286205492467</td>\n",
940
- " <td>-88.63814866760168</td>\n",
941
- " <td>-94.0</td>\n",
942
- " <td>...</td>\n",
943
- " <td>0.1405653396247152</td>\n",
944
- " <td>2.2156836812477056</td>\n",
945
- " <td>0.8948106591865358</td>\n",
946
- " <td>0.12567928774284845</td>\n",
947
- " <td>0.7631559497413155</td>\n",
948
- " <td>0.06905234613335916</td>\n",
949
- " <td>2.77958442124216</td>\n",
950
- " <td>0.011807342060622953</td>\n",
951
- " <td>5.121136155315789</td>\n",
952
- " <td>1</td>\n",
953
- " </tr>\n",
954
- " <tr>\n",
955
- " <th>2</th>\n",
956
- " <td>-120.0</td>\n",
957
- " <td>113.0</td>\n",
958
- " <td>7163624.0</td>\n",
959
- " <td>1.7458941724671342</td>\n",
960
- " <td>21.0</td>\n",
961
- " <td>5.030471037246626</td>\n",
962
- " <td>127.0</td>\n",
963
- " <td>54.50320958312556</td>\n",
964
- " <td>-74.14657980456026</td>\n",
965
- " <td>-104.0</td>\n",
966
- " <td>...</td>\n",
967
- " <td>0.18805170757506612</td>\n",
968
- " <td>2.339753028342179</td>\n",
969
- " <td>0.8892508143322475</td>\n",
970
- " <td>0.1456614203866951</td>\n",
971
- " <td>1.1731795145372097</td>\n",
972
- " <td>0.03490024441539249</td>\n",
973
- " <td>8.892820945484297</td>\n",
974
- " <td>0.1006570532853642</td>\n",
975
- " <td>3.828229346144656</td>\n",
976
- " <td>1</td>\n",
977
- " </tr>\n",
978
- " <tr>\n",
979
- " <th>3</th>\n",
980
- " <td>-126.0</td>\n",
981
- " <td>124.0</td>\n",
982
- " <td>5946172.0</td>\n",
983
- " <td>1.917296573002114</td>\n",
984
- " <td>238.0</td>\n",
985
- " <td>1.2631965842701234</td>\n",
986
- " <td>127.0</td>\n",
987
- " <td>110.64774472687941</td>\n",
988
- " <td>-27.43720930232558</td>\n",
989
- " <td>-108.0</td>\n",
990
- " <td>...</td>\n",
991
- " <td>0.22895996835772423</td>\n",
992
- " <td>2.3491117375455075</td>\n",
993
- " <td>0.9232558139534883</td>\n",
994
- " <td>0.08125170516912104</td>\n",
995
- " <td>0.6489583333333333</td>\n",
996
- " <td>0.04060050986686809</td>\n",
997
- " <td>12.309788327731372</td>\n",
998
- " <td>0.4868604189987465</td>\n",
999
- " <td>3.329868949322021</td>\n",
1000
- " <td>1</td>\n",
1001
- " </tr>\n",
1002
- " <tr>\n",
1003
- " <th>4</th>\n",
1004
- " <td>-121.0</td>\n",
1005
- " <td>122.0</td>\n",
1006
- " <td>6204270.0</td>\n",
1007
- " <td>2.506298357482142</td>\n",
1008
- " <td>218.0</td>\n",
1009
- " <td>1.1766896090537295</td>\n",
1010
- " <td>127.0</td>\n",
1011
- " <td>104.01235814782083</td>\n",
1012
- " <td>16.262172284644194</td>\n",
1013
- " <td>90.0</td>\n",
1014
- " <td>...</td>\n",
1015
- " <td>0.12010991140531248</td>\n",
1016
- " <td>2.9129073477941847</td>\n",
1017
- " <td>0.9288389513108615</td>\n",
1018
- " <td>0.07477562434963579</td>\n",
1019
- " <td>0.19821798383325542</td>\n",
1020
- " <td>0.0449930488267262</td>\n",
1021
- " <td>18.92690939073711</td>\n",
1022
- " <td>0.0874645985221415</td>\n",
1023
- " <td>4.8346297896859705</td>\n",
1024
- " <td>1</td>\n",
1025
- " </tr>\n",
1026
- " </tbody>\n",
1027
- "</table>\n",
1028
- "<p>5 rows × 94 columns</p>\n",
1029
- "</div>"
1030
- ],
1031
- "text/plain": [
1032
- " original_firstorder_10Percentile original_firstorder_90Percentile \\\n",
1033
- "0 -120.6 108.60000000000002 \n",
1034
- "1 -116.0 -70.0 \n",
1035
- "2 -120.0 113.0 \n",
1036
- "3 -126.0 124.0 \n",
1037
- "4 -121.0 122.0 \n",
1038
- "\n",
1039
- " original_firstorder_Energy original_firstorder_Entropy \\\n",
1040
- "0 6097512.0 2.057964519759019 \n",
1041
- "1 6461289.0 1.667250935600759 \n",
1042
- "2 7163624.0 1.7458941724671342 \n",
1043
- "3 5946172.0 1.917296573002114 \n",
1044
- "4 6204270.0 2.506298357482142 \n",
1045
- "\n",
1046
- " original_firstorder_InterquartileRange original_firstorder_Kurtosis \\\n",
1047
- "0 32.0 5.119681336620311 \n",
1048
- "1 24.0 28.564360319356922 \n",
1049
- "2 21.0 5.030471037246626 \n",
1050
- "3 238.0 1.2631965842701234 \n",
1051
- "4 218.0 1.1766896090537295 \n",
1052
- "\n",
1053
- " original_firstorder_Maximum original_firstorder_MeanAbsoluteDeviation \\\n",
1054
- "0 127.0 51.04687788279773 \n",
1055
- "1 127.0 17.958286205492467 \n",
1056
- "2 127.0 54.50320958312556 \n",
1057
- "3 127.0 110.64774472687941 \n",
1058
- "4 127.0 104.01235814782083 \n",
1059
- "\n",
1060
- " original_firstorder_Mean original_firstorder_Median ... \\\n",
1061
- "0 -69.9895652173913 -96.0 ... \n",
1062
- "1 -88.63814866760168 -94.0 ... \n",
1063
- "2 -74.14657980456026 -104.0 ... \n",
1064
- "3 -27.43720930232558 -108.0 ... \n",
1065
- "4 16.262172284644194 90.0 ... \n",
1066
- "\n",
1067
- " original_glszm_SmallAreaLowGrayLevelEmphasis original_glszm_ZoneEntropy \\\n",
1068
- "0 0.15919477040215677 2.5675195873233774 \n",
1069
- "1 0.1405653396247152 2.2156836812477056 \n",
1070
- "2 0.18805170757506612 2.339753028342179 \n",
1071
- "3 0.22895996835772423 2.3491117375455075 \n",
1072
- "4 0.12010991140531248 2.9129073477941847 \n",
1073
- "\n",
1074
- " original_glszm_ZonePercentage original_glszm_ZoneVariance \\\n",
1075
- "0 0.9043478260869565 0.11765902366863906 \n",
1076
- "1 0.8948106591865358 0.12567928774284845 \n",
1077
- "2 0.8892508143322475 0.1456614203866951 \n",
1078
- "3 0.9232558139534883 0.08125170516912104 \n",
1079
- "4 0.9288389513108615 0.07477562434963579 \n",
1080
- "\n",
1081
- " original_ngtdm_Busyness original_ngtdm_Coarseness original_ngtdm_Complexity \\\n",
1082
- "0 0.5239669421487604 0.06478143307796305 6.937011985872065 \n",
1083
- "1 0.7631559497413155 0.06905234613335916 2.77958442124216 \n",
1084
- "2 1.1731795145372097 0.03490024441539249 8.892820945484297 \n",
1085
- "3 0.6489583333333333 0.04060050986686809 12.309788327731372 \n",
1086
- "4 0.19821798383325542 0.0449930488267262 18.92690939073711 \n",
1087
- "\n",
1088
- " original_ngtdm_Contrast original_ngtdm_Strength Label \n",
1089
- "0 0.05134519235872208 6.09080398348312 1 \n",
1090
- "1 0.011807342060622953 5.121136155315789 1 \n",
1091
- "2 0.1006570532853642 3.828229346144656 1 \n",
1092
- "3 0.4868604189987465 3.329868949322021 1 \n",
1093
- "4 0.0874645985221415 4.8346297896859705 1 \n",
1094
- "\n",
1095
- "[5 rows x 94 columns]"
1096
- ]
1097
- },
1098
- "execution_count": 15,
1099
- "metadata": {},
1100
- "output_type": "execute_result"
1101
- }
1102
- ],
1103
- "source": [
1104
- "df_Pneumonia.head()"
1105
- ]
1106
- },
1107
- {
1108
- "cell_type": "markdown",
1109
- "id": "745c6e3e",
1110
- "metadata": {},
1111
- "source": [
1112
- "## Function to Convert generated dataframes to CSV files"
1113
- ]
1114
- },
1115
- {
1116
- "cell_type": "code",
1117
- "execution_count": 16,
1118
- "id": "d739bc9e",
1119
- "metadata": {},
1120
- "outputs": [],
1121
- "source": [
1122
- "def get_CSVfile(Normal_DataFrame,Pneumonia_DataFrame,path_to_CSV):\n",
1123
- " final_df = pd.concat([Normal_DataFrame, Pneumonia_DataFrame], axis=0)\n",
1124
- " final_df.reset_index(drop=True, inplace=True)\n",
1125
- " return final_df.to_csv(path_to_CSV)"
1126
- ]
1127
- },
1128
- {
1129
- "cell_type": "code",
1130
- "execution_count": 17,
1131
- "id": "6665dc08",
1132
- "metadata": {},
1133
- "outputs": [],
1134
- "source": [
1135
- "get_CSVfile(df_Normal,df_Pneumonia,\"final_dataset.csv\")"
1136
- ]
1137
- },
1138
- {
1139
- "cell_type": "code",
1140
- "execution_count": 12,
1141
- "id": "0297a795",
1142
- "metadata": {},
1143
- "outputs": [
1144
- {
1145
- "data": {
1146
- "text/plain": [
1147
- "(5856, 94)"
1148
- ]
1149
- },
1150
- "execution_count": 12,
1151
- "metadata": {},
1152
- "output_type": "execute_result"
1153
- }
1154
- ],
1155
- "source": [
1156
- "df = pd.read_csv('final_dataset.csv')\n",
1157
- "df.shape"
1158
- ]
1159
- },
1160
- {
1161
- "cell_type": "code",
1162
- "execution_count": 13,
1163
- "id": "76ebd511",
1164
- "metadata": {},
1165
- "outputs": [
1166
- {
1167
- "data": {
1168
- "text/plain": [
1169
- "((4684, 93), (1172, 93))"
1170
- ]
1171
- },
1172
- "execution_count": 13,
1173
- "metadata": {},
1174
- "output_type": "execute_result"
1175
- }
1176
- ],
1177
- "source": [
1178
- "X_train, X_test, y_train, y_test = train_test_split(\n",
1179
- " df.drop(labels=['Label'], axis=1),\n",
1180
- " df['Label'],\n",
1181
- " test_size=0.2,\n",
1182
- " random_state=23)\n",
1183
- "\n",
1184
- "X_train.shape, X_test.shape"
1185
- ]
1186
- },
1187
- {
1188
- "cell_type": "code",
1189
- "execution_count": 14,
1190
- "id": "a6da1916",
1191
- "metadata": {},
1192
- "outputs": [],
1193
- "source": [
1194
- "from sklearn.preprocessing import StandardScaler\n",
1195
- "def scale_data(dataset):\n",
1196
- " scaler = StandardScaler()\n",
1197
- " scaled_data = scaler.fit_transform(dataset)\n",
1198
- " return scaled_data"
1199
- ]
1200
- },
1201
- {
1202
- "cell_type": "code",
1203
- "execution_count": 15,
1204
- "id": "0aba39a2",
1205
- "metadata": {},
1206
- "outputs": [],
1207
- "source": [
1208
- "scaled_train_set = scale_data(X_train)\n",
1209
- "\n",
1210
- "scaled_test_set = scale_data(X_test)"
1211
- ]
1212
- },
1213
- {
1214
- "cell_type": "code",
1215
- "execution_count": 16,
1216
- "id": "bc7227f4",
1217
- "metadata": {},
1218
- "outputs": [
1219
- {
1220
- "data": {
1221
- "text/html": [
1222
- "<style>#sk-container-id-1 {color: black;background-color: white;}#sk-container-id-1 pre{padding: 0;}#sk-container-id-1 div.sk-toggleable {background-color: white;}#sk-container-id-1 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-1 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-1 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-1 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-1 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-1 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-1 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-1 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-1 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-1 div.sk-item {position: relative;z-index: 1;}#sk-container-id-1 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-1 div.sk-item::before, #sk-container-id-1 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-1 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-1 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-1 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-1 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-1 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-1 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-1 div.sk-label-container {text-align: center;}#sk-container-id-1 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-1 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>Perceptron()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">Perceptron</label><div class=\"sk-toggleable__content\"><pre>Perceptron()</pre></div></div></div></div></div>"
1223
- ],
1224
- "text/plain": [
1225
- "Perceptron()"
1226
- ]
1227
- },
1228
- "execution_count": 16,
1229
- "metadata": {},
1230
- "output_type": "execute_result"
1231
- }
1232
- ],
1233
- "source": [
1234
- "PClr = Perceptron(tol=1e-3, random_state=0)\n",
1235
- "PClr.fit(scaled_train_set,y_train)"
1236
- ]
1237
- },
1238
- {
1239
- "cell_type": "code",
1240
- "execution_count": 16,
1241
- "id": "afb578b5",
1242
- "metadata": {},
1243
- "outputs": [
1244
- {
1245
- "data": {
1246
- "text/html": [
1247
- "<style>#sk-container-id-1 {color: black;background-color: white;}#sk-container-id-1 pre{padding: 0;}#sk-container-id-1 div.sk-toggleable {background-color: white;}#sk-container-id-1 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-1 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-1 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-1 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-1 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-1 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-1 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-1 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-1 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-1 div.sk-item {position: relative;z-index: 1;}#sk-container-id-1 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-1 div.sk-item::before, #sk-container-id-1 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-1 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-1 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-1 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-1 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-1 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-1 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-1 div.sk-label-container {text-align: center;}#sk-container-id-1 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-1 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>RandomForestClassifier(criterion=&#x27;entropy&#x27;, max_features=&#x27;log2&#x27;,\n",
1248
- " min_samples_split=4, n_estimators=200)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">RandomForestClassifier</label><div class=\"sk-toggleable__content\"><pre>RandomForestClassifier(criterion=&#x27;entropy&#x27;, max_features=&#x27;log2&#x27;,\n",
1249
- " min_samples_split=4, n_estimators=200)</pre></div></div></div></div></div>"
1250
- ],
1251
- "text/plain": [
1252
- "RandomForestClassifier(criterion='entropy', max_features='log2',\n",
1253
- " min_samples_split=4, n_estimators=200)"
1254
- ]
1255
- },
1256
- "execution_count": 16,
1257
- "metadata": {},
1258
- "output_type": "execute_result"
1259
- }
1260
- ],
1261
- "source": [
1262
- "RF = RandomForestClassifier(criterion = 'entropy',max_depth = None, max_features = 'log2', max_leaf_nodes = None,\n",
1263
- " min_samples_leaf = 1,min_samples_split = 4, min_weight_fraction_leaf = 0.0, n_estimators = 200)\n",
1264
- "RF.fit(X_train,y_train) "
1265
- ]
1266
- },
1267
- {
1268
- "cell_type": "code",
1269
- "execution_count": 17,
1270
- "id": "eac03123",
1271
- "metadata": {},
1272
- "outputs": [],
1273
- "source": [
1274
- "import pickle\n",
1275
- "# create an iterator object with write permission - model.pkl\n",
1276
- "with open('model_pkl', 'wb') as files:\n",
1277
- " pickle.dump(RF, files)"
1278
- ]
1279
- },
1280
- {
1281
- "cell_type": "code",
1282
- "execution_count": 19,
1283
- "id": "b959ce43",
1284
- "metadata": {},
1285
- "outputs": [
1286
- {
1287
- "data": {
1288
- "text/plain": [
1289
- "0.8967576791808873"
1290
- ]
1291
- },
1292
- "execution_count": 19,
1293
- "metadata": {},
1294
- "output_type": "execute_result"
1295
- }
1296
- ],
1297
- "source": [
1298
- "model = pickle.load(open('model_pkl', 'rb'))\n",
1299
- "model.score(X_test,y_test)"
1300
- ]
1301
- },
1302
- {
1303
- "cell_type": "code",
1304
- "execution_count": 27,
1305
- "id": "af8bab7d",
1306
- "metadata": {},
1307
- "outputs": [],
1308
- "source": [
1309
- "# model.predict('C:\\Users\\Dell\\OneDrive\\Desktop\\Files\\Demo\\Normal\\IM-0001-0001.jpeg')"
1310
- ]
1311
- },
1312
- {
1313
- "cell_type": "code",
1314
- "execution_count": 20,
1315
- "id": "20db76e6",
1316
- "metadata": {},
1317
- "outputs": [
1318
- {
1319
- "data": {
1320
- "text/plain": [
1321
- "array([0, 1, 1, ..., 0, 1, 0], dtype=int64)"
1322
- ]
1323
- },
1324
- "execution_count": 20,
1325
- "metadata": {},
1326
- "output_type": "execute_result"
1327
- }
1328
- ],
1329
- "source": [
1330
- "RF.predict(X_train)"
1331
- ]
1332
- },
1333
- {
1334
- "cell_type": "code",
1335
- "execution_count": 21,
1336
- "id": "bd5bbd4b",
1337
- "metadata": {},
1338
- "outputs": [
1339
- {
1340
- "data": {
1341
- "text/plain": [
1342
- "0.8967576791808873"
1343
- ]
1344
- },
1345
- "execution_count": 21,
1346
- "metadata": {},
1347
- "output_type": "execute_result"
1348
- }
1349
- ],
1350
- "source": [
1351
- "RF.score(X_test,y_test)"
1352
- ]
1353
- },
1354
- {
1355
- "cell_type": "code",
1356
- "execution_count": 23,
1357
- "id": "30617b5e",
1358
- "metadata": {},
1359
- "outputs": [],
1360
- "source": [
1361
- "# from sklearn.preprocessing import MinMaxScaler"
1362
- ]
1363
- },
1364
- {
1365
- "cell_type": "code",
1366
- "execution_count": 42,
1367
- "id": "e769fda3",
1368
- "metadata": {},
1369
- "outputs": [],
1370
- "source": [
1371
- "def pneumonia(image):\n",
1372
- " img_ = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)\n",
1373
- " resized_img = cv2.resize(img_,(256,256))\n",
1374
- " original_image = 'original.jpeg'\n",
1375
- " cv2.imwrite(original_image,resized_img)\n",
1376
- " img = cv2.imread(original_image)\n",
1377
- " pr_mask1 = get_prediction (model1, img);\n",
1378
- " pr_mask2 = get_prediction (model2, img);\n",
1379
- " pr_mask3 = get_prediction (model3, img);\n",
1380
- " pr_mask4 = get_prediction (model4, img);\n",
1381
- " pr_mask5 = get_prediction (model5, img); \n",
1382
- " \n",
1383
- " ensemble_mask = ensemble_results (pr_mask1, pr_mask2, pr_mask3, pr_mask4, pr_mask5)\n",
1384
- " ensemble_mask_post_HF = postprocessing_HoleFilling (ensemble_mask)\n",
1385
- " ensemble_mask_post_HF_EI = postprocessing_EliminatingIsolation (ensemble_mask_post_HF)\n",
1386
- " \n",
1387
- " mask = 'mask.jpeg'\n",
1388
- " cv2.imwrite(mask,ensemble_mask_post_HF_EI*255)\n",
1389
- " \n",
1390
- " features = {}\n",
1391
- " df = pd.DataFrame(columns=features_name)\n",
1392
- " \n",
1393
- " image_ = sitk.ReadImage(original_image, sitk.sitkInt8)\n",
1394
- " mask = sitk.ReadImage(mask, sitk.sitkInt8)\n",
1395
- " features = extractor.execute(image_, mask)\n",
1396
- " \n",
1397
- " df = df.append(features, ignore_index=True)\n",
1398
- " cols = df.columns[22:]\n",
1399
- "\n",
1400
- " # Create new dataframe with selected columns\n",
1401
- " DataFrame = df[cols]\n",
1402
- "\n",
1403
- " prediction = model.predict(DataFrame)\n",
1404
- "\n",
1405
- " if prediction == 0: # Determine the predicted class\n",
1406
- " Label = \"Normal\"\n",
1407
- "\n",
1408
- " elif prediction == 1:\n",
1409
- " Label = \"Pneumonia\"\n",
1410
- "\n",
1411
- " return Label"
1412
- ]
1413
- },
1414
- {
1415
- "cell_type": "code",
1416
- "execution_count": 43,
1417
- "id": "1e41b863",
1418
- "metadata": {},
1419
- "outputs": [
1420
- {
1421
- "name": "stdout",
1422
- "output_type": "stream",
1423
- "text": [
1424
- "Running on local URL: http://127.0.0.1:7867\n",
1425
- "\n",
1426
- "Could not create share link. Please check your internet connection or our status page: https://status.gradio.app\n"
1427
- ]
1428
- },
1429
- {
1430
- "data": {
1431
- "text/html": [
1432
- "<div><iframe src=\"http://127.0.0.1:7867/\" width=\"100%\" height=\"500\" allow=\"autoplay; camera; microphone; clipboard-read; clipboard-write;\" frameborder=\"0\" allowfullscreen></iframe></div>"
1433
- ],
1434
- "text/plain": [
1435
- "<IPython.core.display.HTML object>"
1436
- ]
1437
- },
1438
- "metadata": {},
1439
- "output_type": "display_data"
1440
- },
1441
- {
1442
- "data": {
1443
- "text/plain": []
1444
- },
1445
- "execution_count": 43,
1446
- "metadata": {},
1447
- "output_type": "execute_result"
1448
- },
1449
- {
1450
- "name": "stdout",
1451
- "output_type": "stream",
1452
- "text": [
1453
- "1/1 [==============================] - 0s 280ms/step\n",
1454
- "1/1 [==============================] - 0s 300ms/step\n",
1455
- "1/1 [==============================] - 0s 284ms/step\n",
1456
- "1/1 [==============================] - 1s 899ms/step\n",
1457
- "1/1 [==============================] - 1s 906ms/step\n"
1458
- ]
1459
- },
1460
- {
1461
- "name": "stderr",
1462
- "output_type": "stream",
1463
- "text": [
1464
- "Shape features are only available 3D input (for 2D input, use shape2D). Found 2D input\n",
1465
- "GLCM is symmetrical, therefore Sum Average = 2 * Joint Average, only 1 needs to be calculated\n"
1466
- ]
1467
- },
1468
- {
1469
- "name": "stdout",
1470
- "output_type": "stream",
1471
- "text": [
1472
- "1/1 [==============================] - 0s 273ms/step\n",
1473
- "1/1 [==============================] - 0s 278ms/step\n",
1474
- "1/1 [==============================] - 0s 277ms/step\n",
1475
- "1/1 [==============================] - 1s 904ms/step\n",
1476
- "1/1 [==============================] - 1s 920ms/step\n"
1477
- ]
1478
- },
1479
- {
1480
- "name": "stderr",
1481
- "output_type": "stream",
1482
- "text": [
1483
- "Shape features are only available 3D input (for 2D input, use shape2D). Found 2D input\n",
1484
- "GLCM is symmetrical, therefore Sum Average = 2 * Joint Average, only 1 needs to be calculated\n"
1485
- ]
1486
- },
1487
- {
1488
- "name": "stdout",
1489
- "output_type": "stream",
1490
- "text": [
1491
- "1/1 [==============================] - 0s 269ms/step\n",
1492
- "1/1 [==============================] - 0s 279ms/step\n",
1493
- "1/1 [==============================] - 0s 285ms/step\n",
1494
- "1/1 [==============================] - 1s 889ms/step\n",
1495
- "1/1 [==============================] - 1s 873ms/step\n"
1496
- ]
1497
- },
1498
- {
1499
- "name": "stderr",
1500
- "output_type": "stream",
1501
- "text": [
1502
- "Shape features are only available 3D input (for 2D input, use shape2D). Found 2D input\n",
1503
- "GLCM is symmetrical, therefore Sum Average = 2 * Joint Average, only 1 needs to be calculated\n"
1504
- ]
1505
- },
1506
- {
1507
- "name": "stdout",
1508
- "output_type": "stream",
1509
- "text": [
1510
- "1/1 [==============================] - 0s 272ms/step\n",
1511
- "1/1 [==============================] - 0s 286ms/step\n",
1512
- "1/1 [==============================] - 0s 289ms/step\n",
1513
- "1/1 [==============================] - 1s 878ms/step\n",
1514
- "1/1 [==============================] - 1s 857ms/step\n"
1515
- ]
1516
- },
1517
- {
1518
- "name": "stderr",
1519
- "output_type": "stream",
1520
- "text": [
1521
- "Shape features are only available 3D input (for 2D input, use shape2D). Found 2D input\n",
1522
- "GLCM is symmetrical, therefore Sum Average = 2 * Joint Average, only 1 needs to be calculated\n"
1523
- ]
1524
- }
1525
- ],
1526
- "source": [
1527
- "import gradio as gr\n",
1528
- "iface =gr.Interface(fn = pneumonia,\n",
1529
- " inputs = \"image\",\n",
1530
- " outputs = [gr.outputs.Textbox(label=\"Prediction\")],\n",
1531
- " title = \"Pnuemonia Detection from Chest X ray images\",\n",
1532
- " description = \"Upload a Chest X ray image\")\n",
1533
- "iface.launch(share = True)"
1534
- ]
1535
- },
1536
- {
1537
- "cell_type": "code",
1538
- "execution_count": null,
1539
- "id": "92a2b027",
1540
- "metadata": {},
1541
- "outputs": [],
1542
- "source": []
1543
- }
1544
- ],
1545
- "metadata": {
1546
- "kernelspec": {
1547
- "display_name": "Python 3 (ipykernel)",
1548
- "language": "python",
1549
- "name": "python3"
1550
- },
1551
- "language_info": {
1552
- "codemirror_mode": {
1553
- "name": "ipython",
1554
- "version": 3
1555
- },
1556
- "file_extension": ".py",
1557
- "mimetype": "text/x-python",
1558
- "name": "python",
1559
- "nbconvert_exporter": "python",
1560
- "pygments_lexer": "ipython3",
1561
- "version": "3.10.4"
1562
- }
1563
- },
1564
- "nbformat": 4,
1565
- "nbformat_minor": 5
1566
- }