امریکی ہاؤس کی قیمت کی پیشن گوئی

Amryky Aws Ky Qymt Ky Pyshn Gwyy



گھر بنانا ہماری زندگیوں میں چیلنج کرنے والے عوامل میں سے ایک ہے۔ تعمیر سے پہلے، پچھلے گھر کی قیمت کی بنیاد پر آپ کے گھر کی قیمت کا اندازہ لگانا ممکن ہے۔ گھر کی قیمت کو متاثر کرنے والے عوامل میں کمروں کی کل تعداد (بستر، حمام وغیرہ) اور زمین کا رقبہ شامل ہے۔ اس سے ہم گھر کی تعمیر کے لیے درکار بجٹ کا اندازہ لگا سکتے ہیں۔

اس گائیڈ میں، ہم دیکھیں گے کہ Python کے ذریعے مشین لرننگ کا استعمال کرتے ہوئے امریکی مکانات کی قیمت کا اندازہ کیسے لگایا جائے۔ سب سے پہلے، ہم اس ڈیٹاسیٹ پر بات کرتے ہیں جسے ہم استعمال کرتے ہیں اور پھر ڈیٹا کو پری پروسیس کرتے ہیں۔ اس کے بعد، ہم ڈیٹاسیٹ میں موجود صفات کا تصور کرتے ہیں اور ٹریننگ ڈیٹاسیٹ پر مختلف مشین لرننگ الگورتھم لاگو کرتے ہیں (سیٹل، واشنگٹن اگست 2022 - دسمبر 2022)۔ آخر میں، ہم ٹیسٹ ڈیٹاسیٹ میں موجود کچھ مکانات کی قیمت کی پیشین گوئی کرکے اس گائیڈ کو ختم کرتے ہیں۔ اس پروجیکٹ کو لاگو کرنے سے پہلے، ہمیں مشین لرننگ کی اصطلاحات کو سمجھنا ہوگا جو اس پروجیکٹ میں استعمال ہوتی ہیں۔







رجعت

مشین لرننگ میں، اگر آپ عددی ڈیٹا کے ساتھ کام کر رہے ہیں، تو آپ کو رجعت کو سمجھنے کی ضرورت ہے۔ ریگریشن مشین لرننگ میں ایک زیر نگرانی سیکھنے کی تکنیک ہے جس کا استعمال آزاد صفات اور منحصر صفات (کلاس لیبل/ٹارگٹ) کے درمیان تعلق کو سمجھنے کے لیے کیا جاتا ہے۔ مشین ڈیٹاسیٹ میں موجود ہر ریکارڈ کو سیکھ کر گھر کی قیمت کی پیش گوئی کرتی ہے۔ لہذا، یہ ایک زیر نگرانی تعلیم ہے۔



مثال کے طور پر، ہمارے منظر نامے میں، آزاد صفات بستروں کی تعداد، حمام کی تعداد، زمین کا سائز، زپ کوڈ وغیرہ ہیں۔ ان کی بنیاد پر، ہم اپنے مکان کی قیمت کا اندازہ لگا سکتے ہیں۔ پس یہ وہ آزاد صفات ہیں جو کسی چیز پر منحصر نہیں ہیں۔ قیمت ہدف کی صفت یا کلاس لیبل ہے جو ان صفات پر منحصر ہے۔



1. لکیری رجعت

لکیری ریگریشن الگورتھم منحصر وصف (Y) اور آزاد وصف (X) متغیر کے درمیان ایک لکیری تعلق کو ظاہر کرتا ہے۔ ریاضی کے اعتبار سے ہم اس کا اندازہ اس طرح کر سکتے ہیں:





اور = aX+b

یہاں، 'a' اور 'b' لکیری گتانک ہیں۔

Python میں، LinearRegression() 'sklearn.linear_model' ماڈیول میں دستیاب ہے۔ ہم دیکھیں گے کہ پروجیکٹ کو لاگو کرتے وقت اس کی وضاحت کیسے کی جائے۔ مندرجہ ذیل پیرامیٹرز کے ساتھ ماڈل ہے:



2. فیصلہ کن درخت

بنیادی طور پر، ایک فیصلہ درخت نوڈس کا استعمال کرتے ہوئے فراہم کردہ شرائط کی بنیاد پر کسی مسئلے کے تمام ممکنہ حل حاصل کرنے کے لیے ایک تصویری نمائندگی ہے۔ فیصلہ نوڈ فیصلہ کرنے کے لیے استعمال ہوتا ہے اور لیف نوڈ سے مراد کسی مخصوص فیصلے کی پیداوار ہے۔ ہم Decision Tree Regressor کے ذریعے اپنے گھر کی قیمت کا اندازہ لگا سکتے ہیں۔

Python میں، DecisionTreeRegressor 'sklearn.tree' ماڈیول میں دستیاب ہے۔ ہم دیکھیں گے کہ پروجیکٹ کو لاگو کرتے وقت اس کی وضاحت کیسے کی جائے۔ مندرجہ ذیل پیرامیٹرز کے ساتھ ماڈل ہے:

3. بے ترتیب جنگل

رینڈم فاریسٹ وہی فنکشن انجام دیتا ہے جو ڈیسیژن ٹری کی طرح ہے۔ لیکن یہ ایک جنگل (فیصلہ کرنے والے درختوں کا مجموعہ) لیتا ہے اور فیصلہ درختوں کے تمام نتائج کو یکجا کرتا ہے۔ مثال کے طور پر، رینڈم فاریسٹ کا سائز 3 ہے۔ اس طرح، اندرونی طور پر، تین فیصلہ کن درخت بنائے گئے ہیں اور پہلے فیصلے والے درخت کا مکان قیمت کا نتیجہ 20000 ہے۔ دوسرے فیصلہ کن درخت کا مکان کی قیمت کا نتیجہ 20000 ہے۔ اور مکان کی قیمت کا نتیجہ آخری فیصلہ ٹری 10000 ہے۔ 16,666.666 حتمی نتیجہ ہے ((20000+20000+10000)/3)۔

Python میں، RandomForestRegressor 'sklearn.ensemble' ماڈیول میں دستیاب ہے۔ مندرجہ ذیل پیرامیٹرز کے ساتھ ماڈل ہے. ہم 'n_estimators' پیرامیٹر میں درختوں کی تعداد بتا سکتے ہیں۔ یہ بطور ڈیفالٹ 100 ہے۔

عمل درآمد

امریکی ہاؤس کی قیمت کی پیشن گوئی میں شامل اقدامات کو جلدی سے دیکھیں۔ ہم 2016 کے ریکارڈ کے ساتھ houses_train (CSV فائل) ڈیٹا سیٹ پر غور کرتے ہیں (مشین لرننگ ماڈل کو تربیت دینے کے لیے استعمال کیا جاتا ہے)۔ پھر، ہم گھر کی قیمت (505) ریکارڈز کی پیشین گوئی کرتے ہیں جو house_test فائل میں موجود ہیں۔

1. ٹرین اور ٹیسٹ ڈیٹاسیٹس کو لوڈ کرنا

پانڈاس Python میں دستیاب ماڈیول ہے جو ڈیٹا کے تجزیہ کے لیے استعمال ہوتا ہے۔ ہم اس ماڈیول کو ڈیٹا سیٹس کو Python Environment میں لوڈ کرنے کے لیے استعمال کرتے ہیں۔ یہاں، ہم استعمال کرتے ہیں گوگل کمپنی کوڈ ماحولیات کے طور پر۔ یہ مفت میں دستیاب ہے۔ بس گوگل اکاؤنٹ کی ضرورت ہے۔

سب سے پہلے، ہمیں فائلوں کو اپنے مقامی PC سے Colab Env میں لوڈ کرنے کی ضرورت ہے۔ سے ڈیٹا سیٹ ڈاؤن لوڈ کریں۔ یہاں .

# houses_train.csv اور house_test.csv فائلیں اپنے Google Colab میں اپ لوڈ کریں۔

# یکے بعد دیگرے.

سے گوگل ET رحمہ اللہ تعالی درآمد فائلوں

فائلوں. اپ لوڈ کریں ( )

read_csv() وہ فنکشن ہے جو CSV ڈیٹا کو متغیر میں لوڈ کرنے کے لیے استعمال ہوتا ہے۔ یہ فائل کا نام پیرامیٹر کے طور پر لیتا ہے۔

درآمد پانڈے

# houses_train.csv کو ٹرین_ڈیٹا متغیر میں لوڈ کریں۔

ٹرین_ڈیٹا = پانڈے read_csv ( 'houses_train.csv' )

# house_test.csv کو test_data متغیر میں لوڈ کریں۔

ٹیسٹ_ڈیٹا = پانڈے read_csv ( 'house_test.csv' )

# test_data کو test_data1 متغیر میں اسٹور کریں۔

test_data1 = ٹیسٹ_ڈیٹا

آئیے ہر کالم میں کالم اور غیر صفر ریکارڈز کا شمار دیکھتے ہیں۔ Pandas.DataFrame.info() اس معلومات کو حاصل کرنے کے لیے استعمال کیا جاتا ہے۔

پرنٹ کریں ( ٹرین_ڈیٹا معلومات ( ) )

پرنٹ کریں ( test_data1. معلومات ( ) )

آؤٹ پٹ:

2. ڈیٹا پری پروسیسنگ

دونوں ڈیٹا سیٹس میں، 'lot_size' کالم میں sqft اور acre کے ساتھ قدریں ہوتی ہیں (آپ کو 'lot_size_unit's' کالم میں قطاریں دیکھ کر فرق معلوم ہوگا)۔ لیکن فارمیٹ sqft میں ہونا چاہیے۔ لہذا، ہمیں 'lot_size' کالم میں اقدار کو ایکڑ سے مربع فٹ میں تبدیل کرنے کی ضرورت ہے۔ اسی طرح، یہ 'test_data1' کے لیے کیا جانا ہے۔

DataFrame.loc[] کا استعمال یہاں 'lot_size_units' کو 'acre' کے ساتھ تلاش کرنے اور 'lot_size' میں موجود قدر کو 43560 کے ساتھ ضرب کرنے کے لیے کیا جاتا ہے۔

# ٹرین_ڈیٹا میں لاٹ_سائز ایکڑ ویلیو کو اسکوائر فٹ میں تبدیل کریں۔

ٹرین_ڈیٹا جگہ [ ( ٹرین_ڈیٹا [ 'بہت_سائز_یونٹ' ] == 'ایکڑ' ) ، 'بہت_سائز' ] = ٹرین_ڈیٹا [ 'بہت_سائز' ] * 43560

# test_data1 میں لاٹ_سائز ایکڑ ویلیو کو مربع فٹ میں تبدیل کریں۔

test_data1. جگہ [ ( test_data1 [ 'بہت_سائز_یونٹ' ] == 'ایکڑ' ) ، 'بہت_سائز' ] = test_data1 [ 'بہت_سائز' ] * 43560

پرنٹ کریں ( ٹرین_ڈیٹا سر ( ) )

پرنٹ کریں ( test_data1. سر ( ) )

آؤٹ پٹ:

اب، آپ دیکھیں گے کہ 'lot_size' کالم میں موجود تمام ویلیوز sqft کی ہیں۔

آپ کو اس کالم میں کچھ گمشدہ اقدار نظر آتی ہیں۔ آئیے کالموں میں موجود NaN ویلیوز کو دونوں ڈیٹاسیٹس میں ایک ہی کالم کے وسط سے بدل دیں۔

DataFrame[‘column_name’].fillna() کو میان() فنکشن کا استعمال کرتے ہوئے وسط کے ساتھ غائب اقدار کو بھرنے کے لیے استعمال کیا جاتا ہے۔ DataFrame[‘column_name’].mean() کو finna() فنکشن میں پیرامیٹر کے طور پر منتقل کیا جاتا ہے۔ آئیے اوسط ظاہر کریں اور اب گنتی دیکھیں:

# لاٹ_سائز کالم میں موجود گمشدہ اقدار کو موجودہ ویلیوز کے اوسط کے ساتھ پُر کریں۔

ٹرین_ڈیٹا [ 'بہت_سائز' ] = ٹرین_ڈیٹا [ 'بہت_سائز' ] . محسوس ( ٹرین_ڈیٹا [ 'بہت_سائز' ] . مطلب ( ) )

# ڈسپلے کا مطلب

پرنٹ کریں ( 'ٹرین ڈیٹا کا مطلب قدر:' ، ٹرین_ڈیٹا [ 'بہت_سائز' ] . مطلب ( ) )

پرنٹ کریں ( صرف ( ٹرین_ڈیٹا [ 'بہت_سائز' ] ) )

# لاٹ_سائز کالم میں موجود گمشدہ اقدار کو موجودہ ویلیوز کے اوسط کے ساتھ پُر کریں۔

test_data1 [ 'بہت_سائز' ] = test_data1 [ 'بہت_سائز' ] . محسوس ( test_data1 [ 'بہت_سائز' ] . مطلب ( ) )

# ڈسپلے کا مطلب

پرنٹ کریں ( 'ٹیسٹ ڈیٹا کا مطلب قدر:' ، test_data1 [ 'بہت_سائز' ] . مطلب ( ) )

پرنٹ کریں ( صرف ( test_data1 [ 'بہت_سائز' ] ) )

آؤٹ پٹ:

'لاٹ_سائز' کالم ٹرین ڈیٹاسیٹ میں موجود گمشدہ اقدار کو 18789.95194 کی اوسط قدر سے بدل دیا جاتا ہے اور 'لاٹ_سائز' کالم ٹیسٹ ڈیٹاسیٹ میں موجود گم شدہ اقدار کو 8961.0 کی اوسط قدر سے بدل دیا جاتا ہے۔

3. ڈیٹا کی صفائی

ماڈل کی تربیت کے دوران، کچھ غیر ضروری اوصاف ہوتے ہیں جن کا نتیجہ کی پیشن گوئی کرنے کی ضرورت نہیں ہوتی ہے۔ ہمارے معاملے میں، تین صفات ہیں جو کہ 'lot_size_units'، 'zip_code'، اور 'size_units' ہیں جو دونوں ڈیٹا سیٹس سے ہٹا دی جانی ہیں۔ pandas.DataFrame.drop() دونوں ڈیٹا سیٹس سے ان تین کالموں کو ہٹانے کے لیے استعمال کیا جاتا ہے۔

ٹرین_ڈیٹا = ٹرین_ڈیٹا ڈراپ ( [ 'بہت_سائز_یونٹ' ، 'زپ کوڈ' ، 'سائز_یونٹ' ] ، محور = 1 )

test_data1 = test_data1. ڈراپ ( [ 'بہت_سائز_یونٹ' ، 'زپ کوڈ' ، 'سائز_یونٹ' ] ، محور = 1 )

پرنٹ کریں ( ٹرین_ڈیٹا معلومات ( ) )

پرنٹ کریں ( test_data1. معلومات ( ) )

آؤٹ پٹ:

اب، ڈیٹاسیٹس اچھی حالت میں ہیں۔ غیر ضروری کالم ہٹا دیے جاتے ہیں اور گمشدہ اقدار موجود نہیں ہیں۔

4. ڈیٹا ویژولائزیشن

آئیے ٹرین ڈیٹا کے کالموں کے لیے ایک ہسٹوگرام بنائیں۔ pandas.DataFrame.hist() فنکشن تمام صفات کے لیے ہسٹوگرام بنانے کے لیے استعمال ہوتا ہے۔

ٹرین_ڈیٹا ہسٹ ( figsize = ( 4 ، 9 ) )

آؤٹ پٹ:

ہسٹوگرام ٹرین کے ڈیٹا کے لیے بستر، حمام، سائز، لاٹ_سائز، اور قیمت کے کالموں کے لیے تیار کیا جاتا ہے۔

آئیے ایک دوسرے کے حوالے سے تمام شعبوں کے لیے ارتباط پیدا کریں۔ Plotly.express ماڈیول کو متعلقہ اقدار کو پلاٹ کرنے کے لیے استعمال کیا جاتا ہے۔

درآمد سازش سے اظہار

corr = ٹرین_ڈیٹا corr ( )

# متعلقہ ڈیٹا کو پلاٹ کریں۔

view_fig = سازش سے اظہار . imshow ( corr ، ٹیکسٹ_آٹو = سچ ہے۔ )

# ڈسپلے

view_fig دکھائیں ( )

آؤٹ پٹ:

  1. بیڈ 0.2935 قیمت کے ساتھ منسلک ہیں، -0.059 لاٹ_سائز کے ساتھ منسلک ہیں، 0.77 سائز کے ساتھ منسلک ہیں، اور 0.65 حمام کے ساتھ منسلک ہیں۔
  2. حمام 0.3173 قیمت کے ساتھ منسلک ہیں، -0.054 لاٹ_سائز کے ساتھ منسلک ہیں، 0.667 حمام کے ساتھ منسلک ہیں، اور 0.771 بستر کے ساتھ منسلک ہیں۔
  3. سائز 0.444 قیمت کے ساتھ منسلک ہے، -0.044 لاٹ_سائز کے ساتھ منسلک ہے، 0.667 سائز کے ساتھ منسلک ہے، اور 0.652 بستر کے ساتھ منسلک ہے۔

5. ماڈل کی تیاری

ہمیں اسے ٹرین_ڈیٹا سے ہٹا کر ہدف کے طور پر قیمت مقرر کرنے کی ضرورت ہے۔ اس بات کو یقینی بنائیں کہ ٹرین اور ٹیسٹ کے ڈیٹا میں جو صفات موجود ہیں وہ اس مرحلے میں ایک جیسی ہونی چاہئیں۔

ہدف = ٹرین_ڈیٹا [ 'قیمت' ]

ٹرین_ڈیٹا = ٹرین_ڈیٹا ڈراپ ( [ 'قیمت' ] ، محور = 1 )

پرنٹ کریں ( ٹرین_ڈیٹا معلومات ( ) )

پرنٹ کریں ( test_data1. معلومات ( ) )

آؤٹ پٹ:

اب، چار آزاد صفات ہیں (بستر، حمام، سائز، اور لاٹ_سائز) اور قیمت ان چار صفات پر منحصر ہونے والی صفت ہے۔

6. ماڈل کی تربیت

سب سے پہلے، ہم RandomForestRegressor الگورتھم کا اطلاق کرتے ہیں۔ اسے 'sklearn.ensemble' پیکیج سے درآمد کریں۔ یہ ایک جوڑنے والی تکنیک ہے۔

  1. RandomForestRegressor() سے ایک ماڈل بنائیں۔ ہم اس ماڈل کو کوئی پیرامیٹر نہیں دے رہے ہیں۔ لہذا، فیصلہ کن درختوں کی تعداد ڈیفالٹ کے لحاظ سے 100 ہے۔
  2. ماڈل کو فٹ کرنے کے لیے fit() طریقہ استعمال کریں۔ یہ دو پیرامیٹرز لیتا ہے. پہلا پیرامیٹر منحصر صفات ہے اور دوسرا پیرامیٹر کلاس لیبل/ٹارگٹ ہے۔
  3. ماڈل کی درستگی دیکھنے کے لیے سکور() طریقہ استعمال کریں۔ یہ fit() طریقہ سے ملتے جلتے پیرامیٹرز بھی لیتا ہے۔
سے سیکھا جوڑنا درآمد RandomForestRegressor

# ماڈل کی وضاحت کریں۔

ماڈل 1 = RandomForestRegressor ( )

# ماڈل کو فٹ کریں۔

ماڈل 1۔ فٹ ( ٹرین_ڈیٹا , ہدف )

# ماڈل کی درستگی

پرنٹ کریں ( ماڈل 1۔ سکور ( ٹرین_ڈیٹا , ہدف ) * 100 )

آؤٹ پٹ:

86.08400889419033

7. ماڈل کی جانچ کریں اور نتائج کو محفوظ کریں۔

یہ آخری مرحلہ ہے جہاں ہمیں نتیجہ کی پیشن گوئی کرنے اور انہیں ذخیرہ کرنے کی ضرورت ہے۔

  1. Predict() طریقہ ٹیسٹ ڈیٹا کی پیشین گوئی کے لیے استعمال کیا جاتا ہے۔ یہ ماڈل کے ساتھ استعمال ہوتا ہے اور اقدار/ڈیٹا فریم کی نیسٹڈ لسٹ لیتا ہے۔
  2. نتائج کو CSV فائل میں ذخیرہ کرنے کے لیے to_csv() طریقہ استعمال کریں۔
  3. Python ماحول (Google Colab) سے فائل ڈاؤن لوڈ کریں۔
# ماڈل 1 کے ساتھ ٹیسٹ_ڈیٹا 1 کی پیش گوئی کریں۔

ٹیسٹ_ڈیٹا [ 'قیمت' ] = ماڈل 1۔ پیشن گوئی ( test_data1 )

# test_data test_results.csv میں محفوظ کریں۔

ٹیسٹ_ڈیٹا to_csv ( 'test_results.csv' )

# اس فائل کو Colab سے ڈاؤن لوڈ کریں۔

فائلوں. ڈاؤن لوڈ کریں ( 'test_results.csv' )

آؤٹ پٹ:

آئیے 505 ریکارڈز میں سے 20 ریکارڈ دکھاتے ہیں۔ آپ دیکھ سکتے ہیں کہ قیمت کا کالم ہر گھر کے لیے پیش گوئی کی گئی اقدار رکھتا ہے۔

دوسرے ماڈلز

آئیے DecisionTreeRegressor کا استعمال کرتے ہوئے گھروں کی پیش گوئی کرتے ہیں۔ آپ اسے 'sklearn.tree' ماڈیول سے درآمد کرنے کے قابل ہیں۔

سے سیکھا درخت درآمد DecisionTreeRegressor

# ماڈل کی وضاحت کریں۔

ماڈل 2 = DecisionTreeRegressor ( )

# ماڈل کو فٹ کریں۔

ماڈل 2۔ فٹ ( ٹرین_ڈیٹا , ہدف )

# ماڈل کی درستگی

پرنٹ کریں ( ماڈل 2۔ سکور ( ٹرین_ڈیٹا , ہدف ) * 100 )

# ماڈل 1 کے ساتھ ٹیسٹ_ڈیٹا 1 کی پیش گوئی کریں۔

ٹیسٹ_ڈیٹا [ 'قیمت' ] = ماڈل 2۔ پیشن گوئی ( test_data1 )

# test_data test_results.csv میں محفوظ کریں۔

ٹیسٹ_ڈیٹا to_csv ( 'test_results.csv' )

# اس فائل کو Colab سے ڈاؤن لوڈ کریں۔

فائلوں. ڈاؤن لوڈ کریں ( 'test_results.csv' )

آؤٹ پٹ:

99.94183165335028

آپ یہاں پیش گوئی شدہ نتیجہ دیکھ سکتے ہیں:

آئیے LinearrEgression کا استعمال کرتے ہوئے گھروں کی پیش گوئی کرتے ہیں۔ ماڈل کو 'sklearn.linear_model' ماڈیول سے درآمد کریں۔

سے سیکھا linear_model درآمد لکیری رجعت

# ماڈل کی وضاحت کریں۔

ماڈل 3 = لکیری رجعت ( )

# ماڈل کو فٹ کریں۔

ماڈل 3۔ فٹ ( ٹرین_ڈیٹا , ہدف )

# ماڈل 1 کے ساتھ ٹیسٹ_ڈیٹا 1 کی پیش گوئی کریں۔

ٹیسٹ_ڈیٹا [ 'قیمت' ] = ماڈل 3۔ پیشن گوئی ( test_data1 )

# test_data test_results.csv میں محفوظ کریں۔

ٹیسٹ_ڈیٹا to_csv ( 'test_results.csv' )

# اس فائل کو Colab سے ڈاؤن لوڈ کریں۔

فائلوں. ڈاؤن لوڈ کریں ( 'test_results.csv' )

آپ یہاں پیش گوئی شدہ نتیجہ دیکھ سکتے ہیں:

نتیجہ

اب، آپ کمروں کی تعداد، آپ کی زمین کا رقبہ، وغیرہ جیسی صفات کی بنیاد پر اپنے مکان کی قیمت کا اندازہ لگا سکتے ہیں۔ اس گائیڈ میں، ہم نے سیٹل، واشنگٹن کے گھر کے حقیقی ڈیٹا پر غور کیا۔ رجعت کی تکنیک کا استعمال کرتے ہوئے جیسے لکیری رجعت، فیصلہ درخت، اور رینڈم فاریسٹ، ہم نے 505 مکانات کی قیمت کی پیش گوئی کی۔ تمام مراحل (ڈیٹا پری پروسیسنگ، ڈیٹا کلیننگ، اور ڈیٹا ویژولائزیشن) جو ماڈل کو تربیت دینے سے پہلے کرنے ہوتے ہیں کوڈ کے ٹکڑوں اور آؤٹ پٹس کے ساتھ مرحلہ وار بیان کیے جاتے ہیں۔