ڈیپ لرننگ کے ذریعے شوگر کے مریض کوclassify کرنا
Using deep learning for classification of diabetes patients
مصنف: ڈاکٹر نعمان اسلام
تاریخ: 17 جون 2018
قاریؑن- آج کے آرٹیکل سے ہم ڈیپ لرننگ کی پریکٹیکل سیریز کا آغاز کر رہے ہیں- ڈیپ لرننگ کی ایپلیکیثنز کی دو اقسام یہ ہیں:
Classification
اس کی مثال چیزوں کی مختلف قسم کی درجہ بندی کرنا ہے- مثلاؑ آپ تصویر سےانسان کی جنس کا تعین کریں- یا فیس بک کی پوسٹ سے انسان کے موڈ خوش یا اداس ہونے کا تعین کریں-
Regression
اس کی مثال آپ فیچرز کے ذریعے کسی Numerical data کی Prediction کریں- مثلاؑ آپ انسان کی صحت سے متعلق ڈیٹا سے انسان کی کل زندگی Life Expectancy)) کی پیشن گویؑ کریں-
ہماری آج کی مثال classification کی ہے- ہم صحت سے متعلق مختلف Input variables کی بنیاد پر یہ پیشنگویؑ کریں گے کا انسان کو شوگر ہے یا نہیں- یہ input variables فیچرز (features) کہلاتے ہیں- اس مقصد کے لیے ہم PIMA ڈایؑبٹیس کا ڈیٹاسیٹ www.kaggle.com سے ڈاوؑن لوڈ کریں گے- ڈیٹاسیٹ میں درج ذیل فیچرز ہیں:Pregnancies, Glucose, Blood pressure, Skin Thickness, Insulin, BMI, Diabetes predigree function, Age- ان تمام فیچرز کی مدد سے ہم یہ بتایؑں گے کہ متعلقہ شخص کو شوگر ہے یا نہیں-
ہم coding کے لیؑے Python کا استعمال کریں گے- اور jupyter notebook پر کوڈنگ کریں گے- مگر ان سب سے پہلے ہم keras کو انسٹال کریں گے جو کہ ڈیپ لرننگ کا ایک فریم ورک ہے- کمانڈ پرامپٹ پر ٹایؑپ کریں:
$ pip install keras
اس طرح keras آپ کے کمپیوٹر پر انسٹال ہو جاےؑ گا- اگلے مرحلے میں جیوپیٹر اسٹارٹ کرنے کے لیےؑ ٹایؑپ کریں:
$ jupyter notebook
اس طرح Python کا environment اوپن ہو جاےؑ گا- ہم کوڈنگ اسٹارٹ کریں گے- مندرجہ ذیل لایؑنز کے ذریعے ہم لایؑبریریز امپورٹ کریں گے-
from keras.models import Sequential
from keras.layers import Dense
import numpy
ڈیٹا لوڈ کرنے کے لےؑ ہم numpy استعمال کریں گے- ڈیٹا کالمز '،' سے سیپریٹ ہیں-جو کہ ہم delimeter کے ذریعے بتایؑں گے-
dataset = numpy.loadtxt("pima-indians-diabetes.csv", delimiter=’,’)
ڈیٹا کو ہم features اور labels میں تقسیم کریں گے-اس کے ساتھ ڈیٹا کو ٹریننگ اور ٹیسٹ ڈیٹا میں تقسیم کریں گے- کل ڈیٹا 768کالمز پر مشتمل ہے لہٰذاہم 70٪ ٹریننگ اور 30٪ ٹیسٹنگ کے لۓ رکھیں گے-
X = dataset[:538,0:8]
Y = dataset[:538,8]
X_test = dataset[538:,0:8]
Y_test = dataset[538:,8]
اب ہم keras میں ماڈل بنایؑں گے- اس مقصد کے لۓ ہم Dense استعمال کریں گے- Dense کو آپ Input اور Hidden نوڈز کی تعداد بتا سکتے ہیں-
model = Sequential()
model.add(Dense(12, input_dim=8, init='uniform', activation='relu'))
model.add(Dense(8, init='uniform', activation='relu'))
model.add(Dense(1, init='uniform', activation='sigmoid'))
ہم نے اس طرح چار layers بنایؑں- پہلی لایؑن میں ہم نے Input layer کی8 نوڈز(کیونکہ ہمارے پاس 8 فیچرز ہیں) اور Hidden layer کی 12 نوڈز بتایؑں- اس کے بعد ہم نے ایک اور hidden layer بنایؑ جس میں ہم نے 8 نوڈز رکھیں- آخر میں ہم نے Output layer بنایؑ جس میں ایک نوڈ ہے- اس کا Activation function ہم نے Sigmoid رکھا- کیونکہ یہ Binary classification کی پرابلم ہے- اگلے مرحلے میں ہم ماڈل کو کمپایؑل کریں گے-
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
ہم نے loss function کے لۓ binary_crossentropy کا انتخاب کیا کیونکہ یہ Binary classification پرابلم ہے- ٹریننگ اسٹارٹ کرنے کے لۓ ہم fit کال کریں گے-
model.fit(X, Y, nb_epoch=150, batch_size=10, verbose=2)
ہم نے fit کو ڈیٹا اور لیبل پاس کیا- اس کے ساتھ epoch یا iteration کی تعداد150 رکھی- batch sizeکے ذریعے ہم نے بتایا کہ gradient descent دس inputs کے بعد weights کو اپڈیٹ کرے گا- اگلے مرحلے میں ہم نے ماڈل کو ٹیسٹ ڈیٹا پر چیک کیا-
scores = model.evaluate(X_test, Y_test)
print("\n%s: %.2f%%" % (model.metrics_names[1], scores[1]*100))
ہمیں 74.35% Accuracy حاصل ہویؑ- آج کے آرٹیکل میں ہم نے سیکھآ کے ہم keras میں کیسے ماڈل بناسکتے ہیں اور کس طرح ماڈل کو ٹرین اور ٹیسٹ کیا جاسکتا ہے-