اس مضمون کے ایک حصے کے طور پر شائع کیا گیا تھا۔ ڈیٹا سائنس بلاگتھون
اس بلاگ میں، ہم شروع کرنے اور Python میں ایک ماڈل بنانے کے لیے Logistic Regression کے بارے میں جاننے کے لیے درکار ہر چیز کو دیکھیں گے۔ اگر آپ مشین لرننگ میں نئے ہیں اور آپ نے پہلے کبھی کوئی ماڈل نہیں بنایا ہے، تو فکر نہ کریں؛ اسے پڑھنے کے بعد، مجھے یقین ہے کہ آپ ایسا کرنے کے قابل ہو جائیں گے۔
ان لوگوں کے لیے جو اس میں نئے ہیں، آئیے لاجسٹک ریگریشن پر جانے سے پہلے مشین لرننگ کی بنیادی سمجھ کے ساتھ شروعات کریں۔
سادہ الفاظ میں، مشین لرننگ ماڈل الگورتھم استعمال کرتا ہے جس میں مشین ڈیٹا سے اسی طرح سیکھتی ہے جیسے انسان اپنے تجربات سے سیکھتا ہے۔ مشین لرننگ کمپیوٹرز کو واضح طور پر پروگرام کیے بغیر پوشیدہ بصیرتیں تلاش کرنے کی اجازت دیتی ہے۔
مشین لرننگ الگورتھم کی اقسام
آؤٹ پٹ کی قسم اور کیے گئے کام کی بنیاد پر، مشین لرننگ ماڈلز کو درج ذیل اقسام میں تقسیم کیا گیا ہے۔
لاجسٹک ریگریشن سپروائزڈ لرننگ کی قسم کے تحت آتا ہے۔ آئیے اس کے بارے میں مزید جانیں۔
زیر نگرانی سیکھنا
یہ مشین لرننگ کی ایک قسم ہے جو ماضی کا لیبل لگا ڈیٹا استعمال کرتی ہے۔ ماڈلز کو پہلے سے لیبل لگائے گئے نمونوں کا استعمال کرتے ہوئے تربیت دی جاتی ہے۔
مثال کے طور پر: آپ کے پاس فٹ بال پریمیئر لیگ کا ماضی کا ڈیٹا ہے اور اس ڈیٹا اور پچھلے میچ کے نتائج کی بنیاد پر آپ اندازہ لگاتے ہیں کہ اگلا گیم کون سی ٹیم جیتے گی۔
زیر نگرانی سیکھنا۔ مزید دو اقسام میں تقسیم کیا جاتا ہے-
- رجریشن - ہدف/آؤٹ پٹ متغیر مسلسل ہے۔
- کی درجہ بندی - ہدف/آؤٹ پٹ متغیر واضح ہے۔
لاجسٹک ریگریشن ایک درجہ بندی کا ماڈل ہے۔ یہ پیشین گوئیاں کرنے میں مدد کرتا ہے جہاں آؤٹ پٹ متغیر واضح ہے۔ آئیے اس کے ساتھ لاجسٹک ریگریشن کو تفصیل سے سمجھتے ہیں۔
لاجسٹک ریگریشن کیا ہے؟
جیسا کہ پہلے کہا گیا ہے، لاجسٹک ریگریشن کا استعمال درجہ بندی کے مسائل کو حل کرنے کے لیے کیا جاتا ہے۔ ماڈلز کو تاریخی لیبل والے ڈیٹاسیٹس پر تربیت دی جاتی ہے۔ اور یہ اندازہ لگانا ہے کہ نئے مشاہدات کس زمرے سے تعلق رکھتے ہیں۔
ذیل میں بائنری درجہ بندی کے مسائل کی چند مثالیں ہیں جنہیں لاجسٹک ریگریشن کے ذریعے حل کیا جا سکتا ہے۔
- اگلے الیکشن میں سیاسی امیدوار کے جیتنے یا ہارنے کا امکان۔
- مینوفیکچرنگ میں کوئی مشین چند دنوں میں چلنا بند ہو جائے گی یا نہیں۔
- ای میل کو بطور اسپام فلٹر کرنا یا اسپام نہیں۔
لاجسٹک ریگریشن اس وقت مناسب ہے جب ہمیں بائنری جواب کی پیشین گوئی کرنے کی ضرورت ہوتی ہے (صرف 2 ممکنہ اقدار جیسے ہاں یا نہیں)۔
لاجسٹک ریگریشن کی اصطلاح "لاجسٹک فنکشن،"جو" کے طور پر بھی جانا جاتا ہےسگمائڈ فنکشن"۔ آئیے اس کے بارے میں مزید جانیں۔
لاجسٹک/سگمائیڈ فنکشن
سگمائیڈ فنکشن، جسے عام طور پر لاجسٹک فنکشن کے نام سے جانا جاتا ہے، بائنری نتیجہ کے آنے کے امکان کی پیش گوئی کرتا ہے۔ فنکشن کوئی بھی قدر لیتا ہے۔ اور اسے 0 کے درمیان نمبر میں تبدیل کرتا ہے۔ اور 1. سگمائڈ فنکشن ایک مشین لرننگ ایکٹیویشن فنکشن ہے جو مشین لرننگ ماڈل میں غیر لکیری کو متعارف کرانے کے لیے استعمال ہوتا ہے۔
لاجسٹک فنکشن کا فارمولا ہے:
جب ہم مندرجہ بالا مساوات کو پلاٹ کرتے ہیں، تو ہمیں ملتا ہے۔ ایس شکل نیچے کی طرح وکر.
مندرجہ بالا گراف سے اہم نکتہ یہ ہے کہ اس بات سے کوئی فرق نہیں پڑتا ہے کہ ہم لاجسٹک یا سگمائڈ فنکشن میں x کی کیا قدر استعمال کرتے ہیں، پیداوار عمودی محور کے ساتھ ہمیشہ رہے گا۔ 0 اور 1 کے درمیان.
جب سگمائیڈ فنکشن کا نتیجہ 0.5 سے زیادہ ہوتا ہے، تو ہم لیبل کو کلاس 1 یا مثبت کلاس کے طور پر درجہ بندی کرتے ہیں۔ اگر یہ 0.5 سے کم ہے تو ہم اسے منفی کلاس کے طور پر درجہ بندی کر سکتے ہیں۔
آئیے سمجھتے ہیں۔ سگمائڈ فنکشن کے پیچھے ریاضی.
لاجسٹک ریگریشن لکیری ریگریشن سے اخذ کیا جاتا ہے اس کی آؤٹ پٹ ویلیو کو سگمائیڈ فنکشن سے نظرانداز کرتے ہوئے اور لکیری رجعت کی مساوات یہ ہے -
لکیری رجعت میں ہم مندرجہ بالا مساوات سے m اور c اقدار کو تبدیل کرکے بہترین فٹ لائن تلاش کرنے کی کوشش کرتے ہیں اور y (آؤٹ پٹ) -infinity سے +infinity تک کوئی بھی قدر لے سکتا ہے۔ لیکن، لاجسٹک ریگریشن نتیجہ کے امکان کی پیشین گوئی کرتا ہے جو 0 سے 1 کے درمیان ہو سکتا ہے۔ لہذا، ان اقدار کو 0 سے 1 کے درمیان تبدیل کرنے کے لیے ہم سگمائیڈ فنکشن کا استعمال کرتے ہیں۔
اپنی آؤٹ پٹ ویلیو حاصل کرنے کے بعد ہمیں یہ دیکھنا ہوگا کہ ہمارا ماڈل کیسے کام کرتا ہے، اس کے لیے ہمیں نقصان کے فنکشن کا حساب لگانا ہوگا۔ نقصان کا فنکشن ہمیں بتاتا ہے کہ ہماری پیشن گوئی شدہ آؤٹ پٹ اصل آؤٹ پٹ سے کتنا مختلف ہے۔ ایک اچھے ماڈل میں کم نقصان کی قیمت ہونی چاہئے۔ آئیے دیکھتے ہیں کہ نقصان کے فنکشن کا حساب کیسے لگایا جائے۔
y=1 ہونے پر، نقصان کو کم کرنے کے لیے پیشین گوئی y قدر 1 کے قریب ہونی چاہیے۔ اب دیکھتے ہیں کہ ہماری اصل آؤٹ پٹ ویلیو 0 کب ہوتی ہے۔
y=0 ہونے پر، نقصان کو کم کرنے کے لیے پیشین گوئی کی گئی y قدر 0 کے قریب ہونی چاہیے۔
آئیے اب لاجسٹک ریگریشن ماڈل کے نفاذ کی طرف بڑھتے ہیں جب کہ ہم نے بنیادی باتوں کا احاطہ کر لیا ہے۔
Python میں لاجسٹک ریگریشن ماڈل کا مرحلہ وار نفاذ
ڈیٹاسیٹ میں پیرامیٹرز کی بنیاد پر، ہم ایک بنائیں گے۔ لاجسٹک ریگریشن ماڈل ازگر میں پیشن گوئی کریں کہ آیا ملازم کو ترقی دی جائے گی یا نہیں۔.
ہر ایک کے لیے، پروموشن یا تشخیص کے چکر سال کے سب سے پرجوش اوقات ہوتے ہیں۔ حتمی ترقیوں کا انکشاف صرف اس کے بعد کیا جاتا ہے جب ملازمین کا مختلف معیاروں پر جائزہ لیا جاتا ہے، جس کی وجہ سے نئی ذمہ داریوں کی منتقلی میں تاخیر ہوتی ہے۔ ہم ایک مشین لرننگ ماڈل بنائیں گے تاکہ یہ اندازہ لگایا جا سکے کہ کون پروموشن کے لیے اہل ہے تاکہ اس عمل کو تیز کیا جا سکے۔
آپ مسئلہ بیان کی مزید سمجھ حاصل کر سکتے ہیں اور سے ڈیٹاسیٹ ڈاؤن لوڈ کریں۔ زیر نگرانی سیکھنا۔.
لائبریریاں درآمد کرنا
ہم لاجسٹک ریگریشن ماڈل بنانے کے لیے ضروری لائبریریوں کو لوڈ کرکے شروع کریں گے۔
numpy کے طور پر np درآمد کریں پانڈا کو pd کے طور پر #Libraries درآمد کریں matplotlib.pyplot کو plt درآمد کریں سمندری طور پر sns کے طور پر #ہم sklearn.linear_model سے لاجسٹک ریگریشن ماڈل بنانے کے لیے sklearn کا استعمال کریں گے۔
ڈیٹا سیٹ لوڈ ہو رہا ہے۔
ہم کریں گے
اوپر کے لنک سے HR Analytics ڈیٹاسیٹ استعمال کریں۔ ہم لوڈ کرکے شروع کریں گے۔
نیچے دیے گئے کوڈ کے ساتھ ڈاؤن لوڈ کردہ CSV فائل سے ڈیٹا سیٹ۔
# CSV فائل ڈیٹا سے ڈیٹاسیٹ لوڈ ہو رہا ہے = pd.read_csv("train_LZdllcl.csv"sep=",")
لاجسٹک ریگریشن کے ڈیٹا کو سمجھنا
ڈیٹا کو لوڈ کرنے کے بعد اس کے بارے میں مزید جاننا ہمیشہ ایک اچھا خیال ہے، جیسے ڈیٹا کی شکل اور ڈیٹا سیٹ میں کالموں کے بارے میں شماریاتی معلومات۔ ہم ذیل کے کوڈ سے یہ سب حاصل کر سکتے ہیں:
ڈیٹاسیٹ پرنٹ کی #شکل ("ڈیٹا فریم کی شکل ہے :"، ڈیٹا کی شکل) #آئیے ڈیٹاسیٹ ڈیٹا کی پہلی 5 قطاروں کو دیکھتے ہیں۔ ہیڈ(5) # ڈیٹا ڈیٹا کا خلاصہ. بیان کریں()
اس ڈیٹاسیٹ میں کل 14 متغیرات ہیں، جن میں کل 54808 مشاہدات ہیں۔ "is_promoted"ہمارا ہے ہدف متغیرجس میں 1 (ترقی یافتہ) اور 0 (ترقی یافتہ نہیں) کے بطور انکوڈ شدہ دو زمرے ہیں باقی سبھی ان پٹ خصوصیات ہیں۔ اس کے علاوہ، ہم مشاہدہ کر سکتے ہیں کہ ہمارے ڈیٹاسیٹ میں عددی اور زمرہ دونوں خصوصیات شامل ہیں۔
ڈیٹا صفائی
ڈیٹا کی صفائی ڈیٹا پری پروسیسنگ کے عمل میں ایک اہم مرحلہ ہے۔ ہم کریں گے۔ صرف ایک منفرد قدر والے کالموں کو ہٹا دیں۔ کیونکہ ان کا تغیر 0 ہوگا اور وہ ہمیں کسی چیز کا اندازہ لگانے میں مدد نہیں کریں گے۔
آئیے دیکھتے ہیں کہ کیا کوئی کالم موجود ہیں۔
صرف ایک منفرد قدر ہے.
# data.columns.tolist() میں d کے لیے کالم فیچر ویلیوز={} میں منفرد ویلیو کی گنتی کی جانچ پڑتال: شمار=ڈیٹا[d].nunique() if count==1: featureValues[d]=count # کالموں کی فہرست وہی 1 منفرد قدر cols_to_drop= list(featureValues.keys()) پرنٹ("1 منفرد قدر والے کالم ہیں :n"،cols_to_drop)
اس سے ظاہر ہوتا ہے کہ کوئی کالم نہیں ہے جس کی صرف 1 منفرد قدر ہو۔
اب ہم کریں گے۔ ملازم_آئی ڈی کالم کو چھوڑ دیں کیونکہ یہ محض ایک منفرد شناخت کنندہ ہے۔، اور
پھر ڈیٹاسیٹ میں ہر فیلڈ کی null ویلیو فیصد کے لیے تصدیق کریں۔
# ملازم_آئی ڈی کالم کو ڈراپ کریں کیونکہ یہ صرف ایک منفرد id data.drop("employee_id",inplace=True,axis=1) #Celling null percentage data.isnull().mean()*100
گزشتہ_سال_درجہ بندی اور تعلیم دونوں خصوصیات null اقدار ہیں. نتیجے کے طور پر، ہم ان کو چھوڑنے کے بجائے ان کو کالعدم قرار دیں گے۔ ان کالموں کی جانچ کے بعد، ہم نے دریافت کیا کہ -
- null والی قطاروں کے لیے گزشتہ_سال_درجہ بندی، ہم دیکھ سکتے ہیں کہ ان کی سروس کی لمبائی 1 ہے، جس کی وجہ سے ان کے پاس پچھلے سال کی درجہ بندی نہیں ہے۔ اس کے نتیجے میں، ہم 0 کا استعمال کریں گے null قدروں کو مواخذہ کرنے کے لیے.
- کے لئے تعلیم کالم، ہم کریں گے موڈ کے ساتھ null قدروں پر الزام لگائیں۔.
#فِل غائب ویلیو ڈیٹا["previous_year_rating"]= data["previous_year_rating"].fillna(0) #Type to int data["previous_year_rating"]= data["previous_year_rating"].astype("int") #جانیں تعلیمی ڈیٹا["تعلیم"] کے لیے موڈ ویلیو
اب، ہمارے پاس کوئی کالعدم یا گمشدہ اقدار نہیں ہیں۔ ہمارے ڈیٹا میں۔ تو، چلو
ہمارے اگلے مرحلے پر آگے بڑھیں۔ کوئی null یا نہیں ہیں
اب ہمارے ڈیٹا میں اقدار غائب ہیں۔ تو، آئیے اگلے مرحلے پر چلتے ہیں۔
لاجسٹک ریگریشن ماڈل بنانے سے پہلے ریسرچ ڈیٹا کا تجزیہ
ڈیٹا سے بصیرت حاصل کرنا اور ان کا تصور کرنا مشین لرننگ کا ایک اہم مرحلہ ہے کیونکہ یہ ہمیں خصوصیات اور ان کے تعلقات کا بہتر نظارہ فراہم کرتا ہے۔
آئیے ڈیٹا سیٹ میں ہدف متغیر کی تقسیم کو دیکھتے ہیں۔
ہدف متغیر کی تقسیم کے لیے # چارٹ fig= plt.figure(figsize=(10,3) ) fig.add_subplot(1,2,1) a= data["is_promoted"].value_counts(normalize=True).plot.pie () fig.add_subplot(1,2,2) churnchart=sns.countplot(x=data["is_promoted"]) plt.tight_layout() plt.show()
ہم مندرجہ بالا چارٹس سے مشاہدہ کر سکتے ہیں کہ، ترقی یافتہ ملازمین کا ڈیٹا غیر ترقی یافتہ ملازمین کے اعداد و شمار سے کم ہے، جس سے ظاہر ہوتا ہے کہ طبقاتی عدم توازن ہے۔ کیونکہ کلاس 0 میں کلاس سے زیادہ ڈیٹا پوائنٹس یا مشاہدات ہیں۔
آئیے تصور کریں کہ آیا ہدف متغیر اور دیگر متغیرات کے درمیان کوئی تعلق ہے۔
# ترقی یافتہ اور دیگر خصوصیات کے درمیان تعلقات کو تصور کریں fig= plt.figure(figsize=(10,5) ) fig.add_subplot(1,3,1) ar_6=sns.boxplot(x=data["is_promoted"],y=data ["length_of_service"]) fig.add_subplot(1,3,2) ar_6=sns.boxplot(x=data["is_promoted"],y=data["avg_training_score"]) fig.add_subplot(1,3,3) ar_6=sns.boxplot(x=data["is_promoted"],y=data["previous_year_rating"]) plt.tight_layout() plt.show()
ایک ملازم کے لیے اگر avg_training_score ویلیو زیادہ ہے تو ترقی پانے کے امکانات زیادہ ہیں۔
ہم ہیٹ میپ کا استعمال کرتے ہوئے مختلف متغیرات کے درمیان ارتباط کی منصوبہ بندی کریں گے۔
خصوصیات کے درمیان # ارتباط corr_plot = sns.heatmap(data.corr(),annot = True,linewidths=3 ) plt.title("Corelation plot") plt.show()
عمر اور لمبائی کے علاوہ کوئی بھی خصوصیات ایک دوسرے سے بہت زیادہ منسلک نہیں ہیں۔
سروس.
فیچر انجینئرنگ
فیچر انجینئرنگ میں، ہم خام ڈیٹا سے نئی خصوصیات تیار کرنے کے لیے ڈومین کی مہارت کا اطلاق کرتے ہیں، یا ہم خصوصیات کو تبدیل یا انکوڈ کرتے ہیں۔ ہم واضح خصوصیات کو انکوڈ کریں گے یا ڈمی خصوصیات بنائیں اس سیکشن میں ان میں سے۔
# زمرہ کے کالموں کو ایک گرم انکوڈنگ ڈیٹا میں تبدیل کرنا["gender"]=data["gender"].apply(lambda x: 1 if x=="m" else 0) #کالموں کی فہرست cols = data.select_dtypes([") آبجیکٹ"]) کالم #Create dummy variables ds=pd.get_dummies(data[cols],drop_first=True) ds #concat نئے بنائے گئے کالم اصل ڈیٹا فریم کے ساتھ ڈیٹا=pd.concat([data,ds],axis=1) #ڈراپ اصل کالم data.drop(cols,axis=1,inplace=True)
ٹرین ٹیسٹ سپلٹ
ہم ڈیٹاسیٹ کو دو ذیلی سیٹوں میں تقسیم کریں گے: ٹرین اور ٹیسٹ۔ ٹرین ٹیسٹ اسپلٹ کو انجام دینے کے لیے، ہم Scikit-learn مشین لرننگ استعمال کریں گے۔
- ٹرین سب سیٹ - ہم اس سب سیٹ کو ماڈل کو فٹ/ٹرین کرنے کے لیے استعمال کریں گے۔
- ٹیسٹ سب سیٹ - ہم اس ذیلی سیٹ کو اپنے ماڈل کا جائزہ لینے کے لیے استعمال کریں گے۔
sklearn.model_selection import train_test_split #اسپلٹ ڈیٹا کو منحصر متغیر (X) اور آزاد متغیر (y) میں تقسیم کریں جس کی ہم پیش گوئی کریں گے y = data.pop("is_promoted") X = ڈیٹا #آئیے ٹرین ٹیسٹ اسپلٹ X_train کا استعمال کرتے ہوئے X اور y کو تقسیم کریں، X_test,y_train,y_test = train_test_split(X,y,random_state=42,train_size=0.8) #ٹرین کی شکل حاصل کریں اور ڈیٹا پرنٹ ("ٹرین کا سائز X : ",X_train.shape) پرنٹ کریں ("ٹرین کا سائز y : "، y_train.shape) پرنٹ ("ٹیسٹ سائز X : ",X_test.shape) پرنٹ ("ٹیسٹ سائز y : ",y_test.shape)
ڈیٹا سیٹ کو تقسیم کرنے کے بعد، ہمارے پاس ٹریننگ سب سیٹ میں 43846 مشاہدات اور ٹیسٹ سب سیٹ میں 10962 مشاہدات ہیں۔
ڈیٹاسیٹ میں غوطہ لگانے کے بعد آئیے فیچر اسکیلنگ کے اگلے مرحلے کی طرف بڑھتے ہیں۔
فیچر اسکیلنگ/نارملائزیشن
فیچر اسکیلنگ کیوں ضروری ہے؟
جیسا کہ پہلے کہا گیا ہے، لاجسٹک ریگریشن بہترین نتیجہ حاصل کرنے کے طریقوں میں سے ایک کے طور پر گریڈینٹ ڈیسنٹ کا استعمال کرتا ہے، اور فیچر اسکیلنگ میں مدد ملتی ہے۔ رفتار بڑھاو تدریجی نزول ہم آہنگی کا عمل. جب ہمارے پاس ایسی خصوصیات ہوتی ہیں جو شدت میں بہت مختلف ہوتی ہیں، الگورتھم یہ فرض کرتا ہے کہ بڑی شدت والی خصوصیات چھوٹی شدت والی خصوصیات سے زیادہ متعلقہ ہیں۔ نتیجے کے طور پر، جب ہم ماڈل کو تربیت دیتے ہیں، تو وہ خصوصیات زیادہ اہم ہو جاتی ہیں۔
اس کی وجہ سے تمام خصوصیات کو ایک ہی رینج میں ڈالنے کے لیے فیچر اسکیلنگ کی ضرورت ہے۔ان کی مطابقت سے قطع نظر۔
فیچر اسکیلنگ تکنیک
ہم فیچر اسکیلنگ کا استعمال کرتے ہوئے تمام خصوصیات کو ایک ہی رینج میں لاتے ہیں۔ فیچر اسکیلنگ کرنے کے بہت سے طریقے ہیں جیسے نارملائزیشن، سٹینڈرڈائزیشن، مضبوط اسکیلنگ، کم از کم اسکیلنگ وغیرہ۔ لیکن یہاں ہم اسٹینڈرڈائزیشن تکنیک پر بات کریں گے جسے ہم اپنی خصوصیات پر لاگو کرنے جا رہے ہیں۔
معیاری کاری میں، خصوصیات کو 0 کے وسط اور 1 کے معیاری انحراف تک پیمانہ کیا جائے گا۔. It پہلے سے طے شدہ رینج تک پیمانہ نہیں ہے۔. ذیل کے فارمولے کا استعمال کرتے ہوئے خصوصیات کو پیمانہ بنایا گیا ہے:
z = (x – u) / s
کہاں u مطلب ہے تربیت کے نمونے اور s ایک معیاری انحراف ہے۔ تربیت کے نمونے
آئیے دیکھتے ہیں کہ سکیٹ لرن کا استعمال کرتے ہوئے ازگر میں فیچر اسکیلنگ کیسے کی جاتی ہے۔
sklearn.preprocessing import StandardScaler سکیل=StandardScaler() X_train=scale.fit_transform(X_train) X_test=scale.transform(X_test) سے #فیچر اسکیلنگ
طبقاتی عدم توازن
طبقاتی عدم توازن کیا ہے؟
جب ڈیٹاسیٹ میں زیادہ ڈیٹا پوائنٹس ہوتے ہیں یا
مشاہدات ایک زمرے سے تعلق رکھتے ہیں اور دوسرے کے لیے بہت کم، ہم کہتے ہیں۔
کے بعد سے یہ طبقاتی عدم توازن کا مسئلہ ہے۔ کلاس لیبل کی تقسیم ہے
متوازن اور ترچھا نہیں. آئیے دیکھتے ہیں کہ کیا ہمارے پاس طبقاتی عدم توازن کا مسئلہ ہے۔
# لیبلز کی تقسیم کے لیے چیک کریں y_train.value_counts(normalize=True)
ہم مشاہدہ کر سکتے ہیں کہ لیبلز کی اکثریت کلاس 0 سے ہے اور صرف چند کلاس 1 سے ہیں۔
If ہم اس تقسیم کو استعمال کرتے ہیں۔ ہمارے ماڈل کو تیار کرنے کے لیے، یہ اکثریتی طبقے کی پیش گوئی کرنے کی طرف متعصب ہو سکتا ہے کیونکہ اقلیتی طبقے کے نمونوں کو سیکھنے کے لیے ناکافی ڈیٹا ہوگا۔ ماڈل کرے گا۔ ہر نئے مشاہدے کی پیشین گوئی 0 کے طور پر شروع کریں۔ or اکثریتی طبقے. (ہمارے مسئلے میں ملازم کو ترقی نہیں دی جاتی)۔ ہم یہاں ماڈل کی مزید درستگی حاصل کریں گے، لیکن یہ ایک مہذب ماڈل نہیں ہوگا کیونکہ یہ پیشن گوئی نہیں کرے گا کلاس 1 یا اقلیتی طبقے، جو ایک اہم طبقہ ہے۔
نتیجے کے طور پر، ہمیں اپنے لاجسٹک ریگریشن ماڈل کو تیار کرتے وقت طبقاتی عدم توازن پر غور کرنا چاہیے۔
طبقاتی عدم توازن کو کیسے ہینڈل کیا جائے؟
طبقاتی عدم توازن سے نمٹنے کے لیے مختلف طریقے ہیں، جیسے اقلیتی طبقے کے نمونوں میں اضافہ or اکثریتی طبقے کے نمونوں میں کمی اس بات کو یقینی بنانے کے لیے کہ دونوں طبقوں میں ایک جیسی تقسیم ہو۔
چونکہ ہم ماڈل بنانے کے لیے Scikit-learn مشین لائبریری کا استعمال کر رہے ہیں، اس میں ایک ہے۔ لاجسٹک ریگریشن عمل درآمد جو کہ کلاس وزن کی حمایت کرتا ہے۔. ہم ان بلٹ پیرامیٹر استعمال کریں گے۔ "کلاس_وزنلاجسٹک ریگریشن ماڈل کی مثال بناتے وقت۔
اکثریت اور اقلیت دونوں طبقات کو الگ الگ وزن دیا جائے گا۔ تربیتی مرحلے کے دوران، وزن میں فرق کلاسوں کی درجہ بندی کو متاثر کرے گا۔
طبقاتی وزن کو شامل کرنے کا مقصد اقلیتی طبقے کو غلط درجہ بندی کے لیے سزا دینا ہے جبکہ اکثریتی طبقے کے لیے وزن میں کمی کرتے ہوئے اعلیٰ طبقے کا وزن مقرر کرنا ہے۔
Python میں لاجسٹک ریگریشن ماڈل کی تعمیر اور تربیت کریں۔
لاجسٹک ریگریشن کو لاگو کرنے کے لیے، ہم Scikit-leabrary کا استعمال کریں گے۔ ہم پہلے سے طے شدہ پیرامیٹرز کے ساتھ ایک بیس ماڈل بنا کر شروع کریں گے، پھر دیکھیں گے کہ اسے Hyperparameter Tuning کے ساتھ کیسے بہتر بنایا جائے۔
جیسا کہ پہلے کہا گیا ہے، ہم استعمال کریں گے۔ طبقاتی عدم توازن کے مسئلے کو حل کرنے کے لیے "class_weight" پیرامیٹر. آئیے نیچے دیے گئے کوڈ کے ساتھ اپنا بیس ماڈل بنا کر شروع کریں۔
#import library from sklearn.linear_model import LogisticRegression #ماڈل کی مثال بنائیں ڈیفالٹ پیرامیٹرز کے ساتھ سوائے کلاس ویٹ کے #کیونکہ ہم کلاس کے عدم توازن کے مسئلے کی وجہ سے کلاس وزن شامل کریں گے lr_basemodel =LogisticRegression(class_weight={0:0.1,1:0.9}) # ٹرین ان پٹ اور آؤٹ پٹ متغیر کے درمیان تعلقات کو جاننے کے لیے ماڈل lr_basemodel.fit(X_train,y_train)
اپنے ماڈل کو ٹریننگ ڈیٹاسیٹ پر تربیت دینے کے بعد، ہم نے ٹیسٹ ڈیٹاسیٹ کی قدروں کی پیش گوئی کرنے کے لیے اپنے ماڈل کا استعمال کیا اور انہیں y_pred_basemodel متغیر میں ریکارڈ کیا۔
آئیے دیکھتے ہیں کہ کون سے میٹرکس کو استعمال کرنا ہے اور اپنے بیس ماڈل کا اندازہ کیسے لگانا ہے۔
ماڈل ایویلیوایشن میٹرکس
کارکردگی یا ہمارے ماڈل کا جائزہ لینے کے لیے ہم "f1 سکور" استعمال کریں گے کیونکہ یہ a ہے۔ طبقاتی عدم توازن مسئلہ کارکردگی میٹرکس کے طور پر درستگی کا استعمال بھی اچھا نہیں ہے، ہم کہہ سکتے ہیں کہ جب ہمارے پاس طبقاتی عدم توازن کا مسئلہ ہو تو f1 سکور جانے والا میٹرک ہے۔ F1 سکور کا حساب لگانے کا فارمولا درج ذیل ہے:
F1 اسکور = 2 * (یاد * پریسجن) / (یاد + پریسجن)
صحت سے متعلق درست پیشین گوئی شدہ مثبت مشاہدات کا کل پیش گوئی شدہ مثبت مشاہدات کا تناسب ہے۔
صحت سے متعلق = TP / TP + FP
یاد رکھیں اصل کلاس میں تمام مشاہدات کے لیے درست پیشین گوئی شدہ مثبت مشاہدات کا تناسب ہے - ہاں۔
یاد کریں = TP / TP + FN
F1 سکور Precision اور Recall کی وزنی اوسط ہے۔ لہذا، اس سکور غلط مثبت اور غلط منفی دونوں کو مدنظر رکھتا ہے۔
آئیے F1 سکور کا استعمال کرتے ہوئے اپنے بیس ماڈل کا جائزہ لیں۔
sklearn.metrics سے درآمد کریں f1_score پرنٹ("بیس ماڈل کے لیے f1 سکور ہے: " , f1_score(y_test,y_pred_basemodel))
ہمیں پہلے سے طے شدہ پیرامیٹرز کا استعمال کرتے ہوئے بنائے گئے اپنے بیس ماڈل پر 0.37 f1 سکور ملا ہے۔
اس مقام تک، ہم نے دیکھا کہ ڈیفالٹ پیرامیٹرز کا استعمال کرتے ہوئے لاجسٹک ریگریشن ماڈل کیسے بنایا جائے۔
اب آئیے ماڈل کی کارکردگی کو بڑھاتے ہیں اور ماڈل کے ہائپر پیرامیٹر کو ٹیوننگ کرنے کے بعد اس کا دوبارہ جائزہ لیتے ہیں۔
لاجسٹک ریگریشن ماڈل کے لیے ہائپر پیرامیٹر کی اصلاح
ماڈل کے پیرامیٹرز (جیسے وزن، تعصب، وغیرہ) ڈیٹا سے سیکھے جاتے ہیں، جبکہ ہائپرپیرامیٹر بتاتے ہیں کہ ہمارے ماڈل کو کس طرح منظم کیا جانا چاہئے۔. بہترین فٹ یا مثالی ماڈل فن تعمیر کو تلاش کرنے کے عمل کو ہائپر پیرامیٹر ٹیوننگ کہا جاتا ہے۔ ہائپرپیرامیٹر ماڈل کی اوور فٹنگ یا کم فٹنگ کو کنٹرول کریں۔. ہائپر پیرامیٹر ٹیوننگ جیسے الگورتھم کا استعمال کرتے ہوئے کیا جا سکتا ہے۔ گرڈ تلاش or بے ترتیب تلاش.
ہم گرڈ سرچ کا استعمال کریں گے جو کہ ہائپر پیرامیٹر کے لیے بہترین اقدار کی تلاش کا سب سے بنیادی طریقہ ہے۔ ہائپر پیرامیٹرز کو ٹیون کرنے کے لیے، ذیل کے مراحل پر عمل کریں:
- لاجسٹک ریگریشن کلاس کی ایک ماڈل مثال بنائیں
- تمام ممکنہ اقدار کے ساتھ ہائپرپیرامیٹر کی وضاحت کریں۔
- کارکردگی کی تشخیص کے میٹرکس کی وضاحت کریں۔
- کراس توثیق کا اطلاق کریں۔
- ٹریننگ ڈیٹاسیٹ کا استعمال کرتے ہوئے ماڈل کو تربیت دیں۔
- دیے گئے ہائپرپیرامیٹرس کے لیے بہترین اقدار کا تعین کریں۔
ہم گرڈ سرچ کا طریقہ استعمال کرتے ہوئے ازگر میں ہائپر پیرامیٹر ٹیوننگ کو لاگو کرنے کے لیے نیچے کا کوڈ استعمال کر سکتے ہیں۔
#Hyperparameter tuning # define model/create instance lr=LogisticRegression() #Tuning Weight for Minority class تو اکثریتی کلاس کا وزن اقلیتی طبقے کا 1-وزن ہوگا #کلاس کے وزن کے وزن کے لیے رینج سیٹ کرنا = np.linspace(0.0,0.99,500, 0.1) #ممکنہ اقدار کے ساتھ تمام ہائپر پیرامیٹر کی وضاحت کرنا param= {'C': [0.5, 1,10,15,20, 1], 'پینلٹی': ['l2', 'l0'],"class_weight":[{ 1:x ,1.0:5 -x} وزن میں x کے لیے]} # 5 فولڈ فولڈ بنائیں = StratifiedKFold(n_splits = 42, shuffle = True, random_state = 1) #Gridsearch for hyperparam tuning model= GridSearchCV(اندازہ کرنے والا= گرڈ، =param,scoring="fXNUMX",cv=folds,return_train_score=True) #ٹرین ماڈل x اور y ماڈل کے درمیان تعلقات سیکھنے کے لیے۔ فٹ(X_train,y_train)
ماڈل کو فٹ کرنے کے بعد، ہم تمام مخصوص ہائپر پیرامیٹرس کے لیے بہترین فٹ ویلیوز نکالیں گے۔
# پرنٹ بہترین ہائپر پیرامیٹر پرنٹ ("بہترین F1 سکور:"، ماڈل. بیسٹ_اسکور_) پرنٹ ("بہترین ہائپر پیرامیٹر: "، ماڈل۔ بیسٹ_پارمز_)
اب ہم اپنا لاجسٹک ریگریشن ماڈل بنائیں گے جو اوپر دی گئی اقدار کا استعمال کرتے ہوئے ہمیں ہائپر پیرامیٹر کو ٹیوننگ کرکے حاصل ہوئی ہیں۔
Hyperparameters کی بہترین اقدار کا استعمال کرتے ہوئے ماڈل بنائیں
آئیے اپنے ماڈل کو دوبارہ بنانے کے لیے نیچے کا کوڈ استعمال کریں۔
#بلڈنگ ماڈل دوبارہ بہترین پیرامز کے ساتھ lr2=LogisticRegression(class_weight={0:0.27,1:0.73},C=20,penalty="l2") lr2.fit(X_train,y_train)
ہمارے حتمی ماڈل کی تربیت کے بعد اب وقت آگیا ہے کہ ہم منتخب میٹرکس کا استعمال کرتے ہوئے ہمارے لاجسٹک ریگریشن ماڈل کا جائزہ لیں۔
ماڈل کی تشخیص
ہم ٹیسٹ ڈیٹا سیٹ پر اپنے ماڈل کا جائزہ لیں گے۔ سب سے پہلے، ہم ٹیسٹ ڈیٹاسیٹ پر اقدار کی پیش گوئی کریں گے۔
ہم نے اپنی کارکردگی میٹرک کے طور پر "f1 سکور" کا انتخاب کیا۔ اوپر، لیکن آئیے سیکھنے کے مقاصد کے لیے کنفیوژن میٹرکس، درستگی، یاد، ROC-AUC سکور، اور بالآخر f1 سکور سمیت تمام میٹرکس کے اسکورز کو دیکھتے ہیں۔
اس کے بعد، ہم اپنے حتمی ماڈل کے f1 سکور کا اپنے بیس ماڈل سے موازنہ کریں گے کہ آیا یہ بہتر ہوا ہے۔
اسکور کا حساب لگانے کے لیے ہم نیچے کا کوڈ استعمال کریں گے۔
مختلف میٹرکس کے لیے:
# ٹیسٹ پر امکانات کی پیشین گوئی کریں اور کلاس 1([:1]) y_pred_prob_test = lr2.predict_proba(X_test)[:, 1] #predict labels پر ٹیسٹ ڈیٹاسیٹ y_pred_test = lr2.predict(X_test) = تخلیق پر فیوژن matrix لیں confusion_matrix(y_test, y_pred_test) print("confusion Matrix is :nn",cm) print("n") # ROC- AUC سکور پرنٹ ("ROC-AUC سکور ٹیسٹ ڈیٹاسیٹ: t", roc_auc_score(y_test,y_pred_prob_test)) # درستگی سکور پرنٹ ("پریسیژن سکور ٹیسٹ ڈیٹاسیٹ: t"، precision_score(y_test,y_pred_test)) #Recall Score print("Recall score test dataset: t", recall_score(y_test,y_pred_test)) #f1 سکور پرنٹ ("f1 سکور ٹیسٹ) ڈیٹاسیٹ : t", f1_score(y_test,y_pred_test))
ہم دیکھ سکتے ہیں کہ ہائپر پیرامیٹرز کو ٹیوننگ کرکے، ہم اپنے ماڈل کی کارکردگی کو بہتر بنانے کے قابل تھے کیونکہ حتمی ماڈل (1) کے لیے ہمارا F0.43 اسکور بیس ماڈل (0.37) سے زیادہ ہے۔ ہائپر پیرامیٹر ٹیوننگ ماڈل کے بعد 0.88 ROC-AUC سکور ملا۔
اس کے ساتھ، ہم اپنا لاجسٹک ریگریشن ماڈل بنانے اور اسے ٹیسٹ ڈیٹاسیٹ پر جانچنے کے قابل ہو گئے۔ مزید فیچر انجینئرنگ، ہائپر پیرامیٹر آپٹیمائزیشن، اور کراس توثیق کی تکنیک اس کی کارکردگی کو مزید بہتر بنا سکتی ہے۔
نتیجہ
ہم نے اپنا سیکھنے کا سفر مشین لرننگ اور لاجسٹک ریگریشن کی بنیادی باتوں کو سمجھ کر شروع کیا۔ پھر ہم پائتھون میں لاجسٹک ریگریشن ماڈل کے نفاذ کی طرف بڑھے۔ ہم نے لاجسٹک ریگریشن ماڈل کی تعمیر جیسے ڈیٹا کلیننگ، EDA، فیچر انجینئرنگ، فیچر اسکیلنگ، کلاس کے عدم توازن کے مسائل سے نمٹنے، ٹریننگ، پیشین گوئی، اور ٹیسٹ ڈیٹا سیٹ پر ماڈل کی تشخیص کے کلیدی اقدامات سیکھے۔ اس کے علاوہ، ہم نے اپنے ماڈل کی کارکردگی کو بہتر بنانے اور اوور فٹنگ اور کم فٹنگ سے بچنے کے لیے Hyperparameter Tuning کا استعمال سیکھا۔
مجھے امید ہے کہ آپ کو یہ معلومات مفید معلوم ہوں گی اور آپ اسے آزمائیں گے۔
مجھ سے رابطہ کریں۔ لنکڈ.
اس مضمون میں دکھایا گیا میڈیا Analytics ودھیا کی ملکیت نہیں ہے اور مصنف کی صوابدید پر استعمال کیا جاتا ہے۔
- "
- 98
- اکاؤنٹ
- یلگورتم
- یلگوردمز
- تمام
- تجزیہ
- تجزیاتی
- فن تعمیر
- مضمون
- مبادیات
- BEST
- بلاگ
- باکس
- تعمیر
- عمارت
- مشکلات
- چارٹس
- درجہ بندی
- صفائی
- کوڈ
- کالم
- کمپیوٹر
- الجھن
- تخلیق
- وکر
- اعداد و شمار
- ڈیٹا تجزیہ
- اعداد و شمار کی تصور
- معاملہ
- تاخیر
- تفصیل
- ترقی
- دریافت
- چھوڑ
- تعلیم
- الیکشن
- ای میل
- ملازمین
- انجنیئرنگ
- وغیرہ
- تجربات
- نمایاں کریں
- خصوصیات
- انجیر
- پہلا
- فٹ
- پر عمل کریں
- فٹ بال کے
- تقریب
- کھیل ہی کھیل میں
- جنس
- اچھا
- گرڈ
- رہنمائی
- ہینڈلنگ
- یہاں
- کس طرح
- کیسے
- hr
- HTTPS
- انسان
- خیال
- تصویر
- سمیت
- اضافہ
- اثر و رسوخ
- معلومات
- بصیرت
- IT
- کلیدی
- لیبل
- بڑے
- جانیں
- سیکھا ہے
- سیکھنے
- لائبریری
- لائن
- LINK
- لنکڈ
- لسٹ
- مشین لرننگ
- اکثریت
- مینوفیکچرنگ
- میچ
- میڈیا
- پیمائش کا معیار
- اقلیت
- ML
- ماڈل
- منتقل
- نئی خصوصیات
- دیگر
- کارکردگی
- صحت سے متعلق
- کی پیشن گوئی
- پیشن گوئی
- پریمیئر لیگ
- فروغ کے
- ازگر
- رینج
- خام
- خام ڈیٹا
- پڑھنا
- کو کم
- رجعت
- تعلقات
- باقی
- نتائج کی نمائش
- چل رہا ہے
- پیمانے
- سکیلنگ
- سائنس
- تلاش کریں
- قائم کرنے
- سادہ
- سائز
- چھوٹے
- So
- حل
- سپیم سے
- تیزی
- تقسیم
- اسٹیج
- شروع کریں
- شروع
- بیان
- زیر نگرانی سیکھنے
- کی حمایت کرتا ہے
- ہدف
- بتاتا ہے
- ٹیسٹ
- مبادیات
- وقت
- ٹریننگ
- us
- قیمت
- لنک
- تصور
- ڈبلیو
- جیت
- کام کرتا ہے
- X
- سال