مکین لیرننگ - لائن رجسٹریشن

رجسٹریشن

جب آپ متغیروں کے درمیان تعلقات کو تلاش کرتے ہیں تو، اصطلاح “رجسٹریشن” (regression) استعمال کی جاتی ہے。

میچین لارننگ اور اعداد استاتسٹیک میں، اس رابطہ کو مستقبل کے واقعات کا نتیجہ پیشگی کرنے کے لئے استعمال کیا جاتا ہے。

لائنی رجسٹریشن

لائنی رجسٹریشن اعداد و شمار کی تعلقات کا استعمال کرکے تمام اعداد و شمار کے درمیان ایک لائن درج کرتا ہے。

یہ لائن مستقبل کی قیمتیں پیش کرنے کے لئے استعمال کی جاسکتی ہے。


مашین لرن میں مستقبل کی پیشگویی بہت اہم ہے。

کام کا طریقہ

پائینٹ اور اسائی پی سیکولر ماحول میں کچھ متعدد طریق فراہم کی گئی ہیں جو کسی بھی اعداد و شمار کی تعلقات کو تلاش کرنے اور لائنی رجسٹریشن لائن درج کرنے کا کام کرسکتے ہیں۔ ہم اس کی کیسے استعمال کرتے ہیں، نہ کہ ریاضیاتی قوانین کا استعمال کرسکتے ہیں، اس کی دکھائی دیں گے。

ایک مثال میں، x کا اکسس کیا جاتا ہے، y کا اکسس رفتار کیا جاتا ہے۔ ہم 13 گاڑیوں کی عمر اور رفتار کو ریکارڈ کیا ہے جو گاڑیوں کی جمع میں گئی ہیں۔ اب، ہم جمع کی گئی اعداد و شمار کو لائنی رجسٹریشن کا استعمال کرسکتے ہیں یا نہیں دیکھیں:

مثال

ابتدا نقش میں نقش درج کریں:

matplotlib.pyplot کا استعمال کریں
x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]
plt.scatter(x, y)
plt.show()

نتائج:


مثال چلانے

مثال

درآمد کریں اسائی پی اور لائنی رجسٹریشن لائن درج کریں:

matplotlib.pyplot کا استعمال کریں
از اسکائیپی کو استفادہ کریں
x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]
slope, intercept, r, p, std_err = stats.linregress(x, y)
دفعہ myfunc(x):
  بازگشت slope * x + intercept
mymodel = list(map(myfunc, x))
plt.scatter(x, y)
plt.plot(x, mymodel)
plt.show()

نتائج:


مثال چلانے

مثال کی توجیہ

ضروری ماڈیولوں کو درآمد کریں

matplotlib.pyplot کا استعمال کریں
از اسکائیپی کو استفادہ کریں

x اور y کی قیمتیں کا ایک نمونہ بنائیں

x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]

ایک طریق بنائیں جو لائنی رجسٹریشن کی کچھ اہم کلیدی قیمتیں واپس دیتا ہو

slope, intercept, r, p, std_err = stats.linregress(x, y)

ایک ایسا استعمال بنائیں slope اور intercept قیمتیں کی فونکشن نئی قیمتیں واپس دیتا ہے، یہ نئی قیمتیں واپس دیتا ہے جو x کی قیمتیں کی مرتبہ کی جائیگی اور y کی اعداد کی جگہ پر رکھی جائیں گی:

دفعہ myfunc(x):
  بازگشت slope * x + intercept

فونکشن کا استعمال کرکے x کی اعداد کی ہر قیمتی کو چلائیں۔ یہ ایک نئی اعداد کی تعداد بنتا ہے جس میں y کی اعداد نئی قیمتیں رکھی جاتی ہیں:

mymodel = list(map(myfunc, x))

مقابلہ نقش میں نقش درج کریں:

plt.scatter(x, y)

لائنی رجسٹریشن لائن درج کریں:

plt.plot(x, mymodel)

نقش میں دکھائیں:

plt.show()

R-Squared

مهم ہے کہ آپ کو جاننا چاہیئے کہ x اور y کی قیمتیں کس طرح مربوط ہیں، اگر کوئی تعلقات نہیں ہیں تو لائنی رجسٹریشن کو کوئی بھی چیز پیش نہیں کرسکتا。

اس تعلقات کو ایک نام 'ر س کوئی' (r-squared) سے میٹر کیا جاتا ہے。

ر س کوئی کا دامن 0 سے 1 تک ہوتا ہے، جس میں 0 غیر مربوط اور 1 100 فیصد مربوط کا مطلب ہوتا ہے。

پائینت اور اسائی پی سیکولر ماحول میں اس کا کام کرسکتے ہیں، آپ کو صرف x اور y کی قیمتیں اس کو فراہم کرنا ہوگا:

مثال

مجھ کی اعداد و شمار لائنی رجسٹریشن میں کیسا فٹ ہو؟

از اسکائیپی کو استفادہ کریں
x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]
slope, intercept, r, p, std_err = stats.linregress(x, y)
پرنٹ(آر)

مثال چلانے

نوٹ:نتائج -0.76 کے مطابق کچھ نچلی تعلقات موجود ہیں، لیکن یہ کچھ نہیں مکمل تعلقات ہیں، لیکن یہ نشان دہ کرتا ہے کہ ہم مستقبل کی پیشگویی کے لئے لائنی رجسٹریشن استعمال کرسکتے ہیں。

مستقبل کی قیمتیں پیشگویی کریں

اب، ہم جمع کی گئی معلومات کا استعمال مستقبل کی قیمتیں پیش کرنے کے لئے کرسکتے ہیں。

مثلاً: دس سال کی عمر کا ایک گاڑی کی رفتار پیشگویی کریں چاہیئے。

اس کے لئے، ہمیں اسی مثال میں کچھ چیزوں کی ضرورت ہے myfunc() فونکشن:

دفعہ myfunc(x):
  بازگشت slope * x + intercept

مثال

10 سال کی عمر کا ایک گاڑی کی رفتار پیشگویی کریں:

از اسکائیپی کو استفادہ کریں
x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]
slope, intercept, r, p, std_err = stats.linregress(x, y)
دفعہ myfunc(x):
  بازگشت slope * x + intercept
speed = myfunc(10)
print(speed)

مثال چلانے

اس مثال کا پیشگی رفتار 85.6 ہے، ہم بھی نقش میں پڑھ سکتے ہیں:


بے کفایتی کا فٹ؟

آپنے پاس میں ایک مثال بنائیں جس میں لائنی رجسٹریشن مستقبل کی قیمتیں پیش کرنے کا بہترین طریقہ نہیں ہے。

مثال

مقادیر ان کا استعمال کیا جائے گا تاکہ خطی رگرسیون کی فٹ کی میزان بہت بد ہو:

matplotlib.pyplot کا استعمال کریں
از اسکائیپی کو استفادہ کریں
x = [89,43,36,36,95,10,66,34,38,20,26,29,48,64,6,5,36,66,72,40]
y = [21,46,3,35,67,95,53,72,58,10,26,34,90,33,38,20,56,2,47,15]
slope, intercept, r, p, std_err = stats.linregress(x, y)
دفعہ myfunc(x):
  بازگشت slope * x + intercept
mymodel = list(map(myfunc, x))
plt.scatter(x, y)
plt.plot(x, mymodel)
plt.show()

نتائج:


مثال چلانے

اور r-squared کا مرتبہ؟

مثال

آپ کو بہت کم r-squared کا مرتبہ ملنا چاہیے

نپیمپ اکورڈ
از اسکائیپی کو استفادہ کریں
x = [89,43,36,36,95,10,66,34,38,20,26,29,48,64,6,5,36,66,72,40]
y = [21,46,3,35,67,95,53,72,58,10,26,34,90,33,38,20,56,2,47,15]
slope, intercept, r, p, std_err = stats.linregress(x, y)
پرنٹ(آر)

مثال چلانے

نتائج: 0.013 نشان می‌دهد که رابطه بسیار بد است و به ما می‌گوید که مجموعه داده‌های این مورد مناسب برای رگرسیون خطی نیست.