MLflow کے ساتھ گرڈ تلاش کریں۔

Mlflow K Sat Gr Tlash Kry



مشین لرننگ ماڈلز میں ہائپر پیرامیٹرز کو گرڈ سرچ اپروچ کا استعمال کرتے ہوئے بہتر بنایا جاتا ہے۔ ایک صارف تیزی سے متعدد ہائپر پیرامیٹر سیٹنگز کا موازنہ کر سکتا ہے اور تلاش کر سکتا ہے کہ کون سی بہترین کارکردگی کا مظاہرہ کرتی ہے کیونکہ MLflow گرڈ تلاش کے تجربات کے نتائج پر نظر رکھتا ہے۔ MLflow میں، گرڈ تلاش کے تجربے کو ٹیم کے دیگر اراکین کے ساتھ تیزی سے شیئر کیا جا سکتا ہے۔ MLflow کا استعمال کرتے ہوئے، گرڈ تلاش کے تجربے سے سب سے زیادہ مؤثر ماڈل کو تعینات کیا جا سکتا ہے۔

گرڈ تلاش کے فوائد

  • خودکار ہائپر پیرامیٹر ٹیوننگ: گرڈ سرچ ہائپر پیرامیٹر ٹیوننگ کو خودکار بناتا ہے جو دستی آزمائش اور غلطی کے بغیر منظم تلاش کی اجازت دیتا ہے۔
  • تولیدی قابلیت: گرڈ کی تلاش دوبارہ پیدا کرنے کے قابل نتائج کو حاصل کرکے ٹیسٹ کی درستگی کو یقینی بناتی ہے جس سے مواصلات اور بھروسے میں اضافہ ہوتا ہے۔
  • مکمل تلاش: GS مؤثر طریقے سے مجموعوں کو مکمل طور پر تلاش کرکے ماڈل کے لیے بہترین ہائپرپیرامیٹر تلاش کرتا ہے۔
  • مضبوطی: گرڈ سرچ ایک مضبوط تکنیک ہے جو ڈیٹا شور کے خلاف مزاحم ہے جو اوور فٹنگ کو کم کرتی ہے۔
  • استعمال میں آسان: گرڈ کی تلاش استعمال کرنے اور سمجھنے میں آسان ہے جو اسے ہائپر پیرامیٹر ٹیوننگ کے لیے ایک قابل عمل طریقہ بناتی ہے۔
  • ماڈل موازنہ: گرڈ کی تلاش ماڈل کے موازنہ اور تشخیصی میٹرکس کے انتخاب کو آسان بناتی ہے۔

گرڈ سرچ کی خرابیاں

  • کمپیوٹیشنل لاگت: بڑی تعداد میں ہائپر پیرامیٹر کو ٹیون کرنے کے لیے گرڈ کی تلاش کمپیوٹیشنل طور پر مہنگی ہے۔
  • وقت لگتا: پیچیدہ ہائپر پیرامیٹر ایڈجسٹمنٹ کے لیے وقت لگتا ہے۔
  • ہمیشہ ضروری نہیں: یہ اب ہمیشہ کی ضرورت ہے؛ بے ترتیب تلاش اس کا بہترین متبادل ہے۔

مثال: یونیورسٹی کے داخلے کے نظام کے لیے بہترین ماڈل سیٹنگز تلاش کرنا

آئیے ایک آن لائن یونیورسٹی کے داخلے کے نظام کے فریم ورک کے اندر ہائپر پیرامیٹر ٹیوننگ کے لیے گرڈ سرچ کی مثال دیکھیں۔ اس مثال میں، ہم GPA پوائنٹس، SAT سکور، ACT سکور، اور غیر نصابی سرگرمیوں جیسے عوامل کی بنیاد پر کسی طالب علم کے یونیورسٹی میں قبول کیے جانے کے امکانات کی پیشن گوئی کرنے کے لیے scikit-learn اور ایک سیدھے گریڈینٹ بوسٹنگ کلاسیفائر (GBC) کا استعمال کرتے ہیں۔ GBC کے بجائے گرڈ تلاش کے لیے متعدد اختیارات دستیاب ہیں جن میں لاجسٹک ریگریشن (LR)، SVM (سپورٹ ویکٹر مشین) وغیرہ شامل ہیں۔

گرڈ تلاش کے لیے MLflow کا استعمال کرتے ہوئے آن لائن داخلہ کے نظام کے لیے ایک بے ترتیب ڈیٹا تیار کریں۔

Python's Pandas اور بے ترتیب پیکجوں کو داخلہ کے نظام کے لیے فرضی ڈیٹا سیٹ بنانے کے لیے استعمال کیا جا سکتا ہے۔ APP_NO، GPA، SAT سکور، ACT سکور، غیر نصابی سرگرمیاں، اور داخلہ کی حیثیت کے کالموں کے لیے بے ترتیب اقدار کے ساتھ، یہ کوڈ داخلہ کا ایک مصنوعی ڈیٹا سیٹ تیار کرتا ہے۔ num_students متغیر کنٹرول کرتا ہے کہ ڈیٹاسیٹ میں کتنی قطاریں ہیں۔







داخلہ کی حیثیت تصادفی طور پر 70% قبولیت کی شرح کی بنیاد پر مقرر کی جاتی ہے، اور بے ترتیب ماڈیول کا استعمال کئی کالموں کے لیے بے ترتیب اقدار پیدا کرنے کے لیے کیا جاتا ہے۔ مظاہرے کے مقاصد کے لیے، درج ذیل کوڈ کا ٹکڑا بے ترتیب اقدار کے ساتھ ایک جعلی داخلہ ڈیٹاسیٹ بناتا ہے اور std_admission_dataset.csv فائل میں محفوظ کیا جاتا ہے:



کوڈ کا ٹکڑا:



# پانڈا اور بے ترتیب لائبریریاں درآمد کریں۔
پانڈا کو بطور panda_obj درآمد کریں۔
random_obj کے بطور بے ترتیب درآمد کریں۔

# طالب علم کے ڈیٹاسیٹ کے لیے ریکارڈز کی تعداد ترتیب دیں۔
طلباء_ریکارڈز = 1000

# ڈیٹا کو ذخیرہ کرنے کے لیے فہرستیں بنائیں
std_application_numbers = [ 'اے پی پی-' + str(random_obj.randint( 1000 , 9999 )) کے لیے _ رینج میں (طلبہ_ریکارڈز)]
std_gpa = [گول(random_obj.uniform) 2.5 , 4.0 ) 2 ) کے لیے _ رینج میں (طلبہ_ریکارڈز)]
std_sat_scores = [random_obj.randint( 900 , 1600 ) کے لیے _ رینج میں (طلبہ_ریکارڈز)]
std_act_scores = [random_obj.randint( بیس , 36 ) کے لیے _ رینج میں (طلبہ_ریکارڈز)]
std_extra_curriculars = [random_obj.choice([ 'جی ہاں' , 'نہیں' ]) رینج میں _ کے لیے (طلبہ_ریکارڈز)]

# بے ترتیب قبولیت کی شرح کی بنیاد پر داخلہ کی حیثیت کا حساب لگائیں۔
std_admission_status = [ 1 اگر random_obj.random() < 0.7 اور 0 _ رینج میں (طلبہ_ریکارڈز) کے لیے

# طلباء کا ڈیٹا رکھنے کے لیے ایک لغت بنائیں
std_data = {

'APPLICATION_NO' : std_application_numbers

'GPA' : std_gpa،

'SAT_Score' : std_sat_scores،

'ACT_Score' : std_act_scores،

'غیر نصابی سر گرمیاں' : std_extra_curriculars،

'داخلہ_اسٹیٹس' : std_admission_status

}

# ڈکشنری سے DataFrame DataFrame_Student بنائیں
DataFrame_Student = panda_obj.DataFrame(std_data)

# DataFrame DataFrame_Student کو std_admission_dataset.csv نامی CSV فائل میں محفوظ کریں۔
DataFrame_Student.to_csv( 'std_admission_dataset.csv' , index=False)
پرنٹ کریں( 'طلبہ کا ڈیٹا کامیابی کے ساتھ CSV فائل میں ایکسپورٹ ہو گیا!' )

کوڈ پر عمل درآمد:

کوڈ کو مرتب کرنے کے لیے Python کمانڈ استعمال کریں، پھر اگر آپ کو ماڈیول کی خرابی کا سامنا ہو تو مخصوص ماڈیول انسٹال کرنے کے لیے pip کمانڈ استعمال کریں۔ اگر Python ورژن 3.X یا اس سے زیادہ ہے تو دی گئی لائبریری کو انسٹال کرنے کے لیے pip3 install کمانڈ استعمال کریں۔





کامیاب عملدرآمد:



نمونہ ڈیٹا اسکرین شاٹ:

مرحلہ 1: لائبریریاں درآمد کریں۔

  • مشین لرننگ تجربہ ٹریکنگ کے لیے MLflow لائبریری
  • ڈیٹا پروسیسنگ اور تجزیہ کو سنبھالنے کے لیے پانڈاس لائبریری کے ساتھ ساتھ Scikit-Learn ماڈلز کو مربوط کرنے کے لیے mlflow.sklearn پیکیج
  • چوتھی لائن غلطیوں کو دبانے کے لیے 'انتباہات' لائبریری کو درآمد کرتی ہے۔
  • sklearn.model_selection ماڈیول میں گرڈ تلاش کے لیے پیرامیٹر گرڈ کلاس
  • گرڈ سرچ اور گریڈینٹ بوسٹنگ کلاسیفائر ماڈلز کے لیے بالترتیب sklearn.model_selection اور ensemble سے GridSearchCV اور GradientBoostingClassifier
  • ماڈل کی درستگی کا حساب لگانے اور درجہ بندی کی رپورٹیں تیار کرنے کے لیے sklearn.metrics ماڈیول سے accuracy_score اور classification_report فنکشنز
  • کوڈ OS ماڈیول کو درآمد کرتا ہے اور GIT_PYTHON_REFRESH ماحول کے متغیر کو خاموش کرنے کے لیے سیٹ کرتا ہے۔

کوڈ کا ٹکڑا:

# مرحلہ-I مطلوبہ لائبریریاں درآمد کریں۔
ایم ایل فلو درآمد کریں۔
mlflow.sklearn درآمد کریں۔
انتباہ کے طور پر انتباہات درآمد کریں۔
پانڈا کو بطور panda_obj درآمد کریں۔
sklearn.model_selection سے import train_test_split بطور tts، ParameterGrid بطور pg، GridSearchCV بطور gscv
ہمیں درآمد کریں
sklearn.ensemble سے GradientBoostingClassifier کو GBC کے بطور درآمد کریں۔
sklearn.metrics سے accuracy_score as acs، درجہ بندی_report بطور cr درآمد کریں
os.environ[ 'GIT_PYTHON_REFRESH' ] = 'خاموش'

مرحلہ 2: ٹریکنگ URI سیٹ کریں۔

MLflow سرور کا ٹریکنگ URI mlflow.set_tracking_uri() فنکشن کا استعمال کرتے ہوئے سیٹ کیا گیا ہے، تجربات اور ماڈلز کے لیے پورٹ 5000 پر ایک مقامی مشین کو یقینی بناتا ہے۔

mlflow.set_tracking_uri( 'http://localhost:5000' )

مرحلہ 3: داخلہ ڈیٹا سیٹ لوڈ اور تیار کریں۔

ڈیٹا کی ہیرا پھیری اور تجزیہ کے لیے پانڈا لائبریری کو panda_obj کے بطور درآمد کریں۔ read_csv() فنکشن داخلہ ڈیٹاسیٹ لوڈ کرنے کے لیے لاگو ہوتا ہے۔ ڈیٹا سیٹ کا راستہ واحد دلیل ہے جو read_csv() فنکشن کے لیے درکار ہے۔ اس مثال میں ڈیٹاسیٹ کا راستہ std_admission_dataset.csv ہے۔ read_csv() فنکشن کو استعمال کرنے سے، ڈیٹاسیٹ کو پانڈاس ڈیٹا فریم میں لوڈ کیا جاتا ہے۔

std_admissions_data DataFrame سے Admission_Status کالم سب سے پہلے کوڈ کے ذریعے ہٹا دیا جاتا ہے۔ چونکہ یہ کالم ہدف متغیر پر مشتمل ہے، اس لیے پری پروسیسنگ ضروری نہیں ہے۔

پھر، کوڈ دو نئے متغیرات بناتا ہے: 'F' اور 't'۔ خصوصیات 'F' متغیر میں موجود ہیں، جبکہ ہدف متغیر 't' متغیر میں موجود ہے۔

اس کے بعد ڈیٹا کو ٹیسٹنگ اور ٹریننگ سیٹ میں تقسیم کیا جاتا ہے۔ یہ sklearn.model_selection پیکیج سے tts() فنکشن کا استعمال کرتے ہوئے مکمل کیا جاتا ہے۔ خصوصیات، ہدف متغیر، ٹیسٹ سائز، اور بے ترتیب حالت وہ چار دلائل ہیں جو tts() فنکشن کے لیے درکار ہیں۔ test_size پیرامیٹر ڈیٹا کے اس حصے کو متعین کرتا ہے جو ٹیسٹ کے مقاصد کے لیے استعمال ہوتا ہے۔ چونکہ اس مثال میں ٹیسٹ کا سائز 0.2 پر سیٹ کیا گیا ہے، اس لیے 20% ڈیٹا ٹیسٹ کے لیے استعمال کیا جائے گا۔

random_state آپشن بے ترتیب نمبر جنریٹر کے بیج کی وضاحت کرتا ہے۔ یہ یقینی بنانے کے لیے کیا جاتا ہے کہ ڈیٹا کو بے ترتیب طور پر الگ کیا جائے۔ تربیت اور جانچ کے سیٹ اب F_training، F_testing، t_training، اور t_testing متغیر میں محفوظ ہیں۔ ان سیٹوں کا استعمال مشین لرننگ ماڈلز کی جانچ اور تربیت کے لیے کیا جا سکتا ہے۔

کوڈ کا ٹکڑا:

# مرحلہ 3: داخلہ ڈیٹاسیٹ لوڈ کریں۔
std_admissions_data = panda_obj.read_csv( 'std_admission_dataset.csv' )

# ڈیٹا کو پہلے سے پروسیس کریں اور خصوصیات (F) اور ہدف (t) میں تقسیم کریں
F = std_admissions_data.drop([ 'داخلہ_اسٹیٹس' ]، axis= 1 )
t = std_admissions_data[ 'داخلہ_اسٹیٹس' ]

# ایک گرم انکوڈنگ کا استعمال کرتے ہوئے زمرے کے متغیرات کو عددی میں تبدیل کریں۔
F = panda_obj.get_dummies(F)
F_training, F_testing, t_training, t_testing = tts(F, t, test_size= 0.2 , random_state= 42 )

مرحلہ 4: MLflow تجربہ کا نام سیٹ کریں۔

adm_experiment_name = 'یونیورسٹی_داخلہ_تجربہ'
mlflow.set_experiment(adm_experiment_name)

مرحلہ 5: گریڈینٹ بوسٹنگ کلاسیفائر کی وضاحت کریں۔

گریڈینٹ بوسٹنگ کلاسیفائر ماڈل اب gbc_obj متغیر میں محفوظ ہے۔ داخلہ ڈیٹاسیٹ کو اس ماڈل کی جانچ اور تربیت کے لیے استعمال کیا جا سکتا ہے۔ random_state دلیل کی قدر 42 ہے۔ یہ اس بات کی ضمانت دیتا ہے کہ ماڈل کو بالکل اسی بے ترتیب نمبر جنریٹر بیج کا استعمال کرتے ہوئے تربیت دی گئی ہے جو نتائج کو دوبارہ قابل بناتا ہے۔

gbc_obj = GBC(random_state= 42 )

مرحلہ 6: ہائپر پیرامیٹر گرڈ کی وضاحت کریں۔

کوڈ ابتدائی طور پر param_grid ڈکشنری بناتا ہے۔ گرڈ سرچ کے ذریعے ایڈجسٹ کیے گئے ہائپرپیرامیٹر اس لغت میں موجود ہیں۔ تین کلیدیں param_grid ڈکشنری بناتی ہیں: n_estimators، learning_rate، اور max_depth. یہ گریڈینٹ بڑھانے والے کلاسیفائر ماڈل کے ہائپر پیرامیٹر ہیں۔ ماڈل میں درختوں کی تعداد ہائپرپیرامیٹر n_estimators کے ذریعہ متعین کی گئی ہے۔ ماڈل کی سیکھنے کی شرح learning_rate ہائپر پیرامیٹر کے ذریعے بیان کی گئی ہے۔ ہائپر پیرامیٹر max_depth ماڈل کے درختوں کی سب سے زیادہ ممکنہ گہرائی کی وضاحت کرتا ہے۔

کوڈ کا ٹکڑا:

param_grid = {

'n_estimators' :[ 100 , 150 , 200

'سیکھنے کی_ شرح' :[ 0.01 , 0.1 , 0.2

'زیادہ سے زیادہ_گہرائی' :[ 4 , 5 , 6 ]

}

مرحلہ 7: ایم ایل فلو ٹریکنگ کے ساتھ گرڈ تلاش کریں۔

کوڈ پھر param_grid ڈکشنری پر اعادہ کرتا ہے۔ لغت میں ہائپر پیرامیٹر کے ہر سیٹ کے لیے، کوڈ درج ذیل کام کرتا ہے:

  • ایک نیا ایم ایل فلو رن شروع کرتا ہے۔
  • ہائپر پیرامیٹر کو ایک فہرست میں تبدیل کرتا ہے اگر وہ پہلے سے فہرست نہیں ہیں۔
  • ہائپر پیرامیٹر کو ایم ایل فلو میں لاگ کرتا ہے۔
  • مخصوص ہائپرپیرامیٹر کے ساتھ گرڈ سرچ ماڈل کو تربیت دیتا ہے۔
  • گرڈ تلاش سے بہترین ماڈل حاصل کرتا ہے۔
  • بہترین ماڈل پر کام کرنے والے ٹیسٹنگ ڈیٹا پر پیشین گوئیاں کرتا ہے۔
  • ماڈل کی درستگی کا حساب لگاتا ہے۔
  • ہائپرپیرامیٹر، درستگی، اور درجہ بندی کی رپورٹ پرنٹ کرتا ہے۔
  • درستگی اور ماڈل کو MLflow میں لاگ کرتا ہے۔

کوڈ کا ٹکڑا:

warn.catch_warnings(): کے ساتھ
warn.filterwarnings( 'نظر انداز کرنا' زمرہ=صارف وارننگ، ماڈیول= '.*Distutil.*' )
pg (param_grid) میں پیرامز کے لیے:
mlflow.start_run(run_name= کے ساتھ 'داخلہ_سٹیٹس رن' ):
# واحد اقدار کو فہرستوں میں تبدیل کریں۔
params = {key: [value] if not isinstance(value, list) else value for key, value in params.items()}
mlflow.log_params(params)
grid_search = gscv(gbc_obj, param_grid=params, cv= 5 )
grid_search.fit(F_training, t_training)
std_best_model = grid_search.best_estimator_
ماڈل_پیش گوئی = std_best_model.predict(F_testing)
model_accuracy_score = acs(t_ٹیسٹنگ، ماڈل_پیش گوئی)
پرنٹ کریں( 'ہائپر پیرامیٹر:' , params)
پرنٹ کریں( 'درستگی:' , model_accuracy_score)
# واضح طور پر UndefinedMetric وارننگ کو نظر انداز کریں۔
warn.catch_warnings(): کے ساتھ
warn.filterwarnings( 'نظر انداز کرنا' زمرہ = وارننگ)
پرنٹ کریں( 'درجہ بندی کی رپورٹ:' )
پرنٹ(cr(t_ٹیسٹنگ، ماڈل_پیش گوئیاں، zero_division= 1 ))
mlflow.log_metric( 'درستگی' , model_accuracy_score)
mlflow.sklearn.log_model(std_best_model، 'gb_classifier_model' )

مرحلہ 8: Python کا استعمال کرتے ہوئے پروگرام پر عمل کریں۔

یہاں MLflow سرور پر آؤٹ پٹ ہے:

نتیجہ

ایم ایل فلو کا گرڈ سرچ ٹول مشین لرننگ ماڈلز میں ٹویکنگ، نتائج کو ٹریک کرنے اور ہائپر پیرامیٹرز کو تبدیل کرنے کو خودکار کرتا ہے۔ یہ مثالی ہائپر پیرامیٹر کا تعین کرنے میں مدد کرتا ہے اور قابل اعتماد نتائج کو یقینی بناتا ہے لیکن وسیع ہائپر پیرامیٹر کے تجربات کے لیے کمپیوٹیشنل طور پر مہنگا ہو سکتا ہے۔