پیشبینی قیمت خانه
آموزش مدل رگرسیون برای قیمت هر واحد مساحت؛ این داده قیمت کل خانه نیست.
۱۰۰ دقیقه · ۲۱۰ XP · Python · Scikit-learn · Evaluation
هدف و راهنمای انجام
جداسازی آموزش و ارزیابی و سنجش تعمیم مدل
ورودی
train: لیست سطرهای دارای price؛ test: لیست ویژگیهای بدون هدف؛ features: ['age', 'distance', 'stores', 'latitude', 'longitude']؛ target: price
خروجی
result.json شامل predictions با یک مقدار بهازای هر سطر test؛ عدد برای رگرسیون و برچسب موجود در train برای دستهبندی.
- request.json شامل train دارای برچسب و test بدون برچسب است؛ فایل CSV محلی برای مطالعه است و در ارزیابی به محیط ارسال نمیشود.
- train را به ویژگیها و target جدا کن؛ داده ارزیابی بیرونی را هرگز برای fit استفاده نکن.
- برای تمرین، با train_test_split و random_state=42 بخشی از train را نگه دار و مدل را با MAE یا accuracy/F1 بسنج.
- مدل یا Pipeline را فقط روی داده آموزش fit کن؛ سپس برای تمام سطرهای test پیشبینی کن.
- predictions را به ترتیب test در result.json ذخیره کن؛ امتیاز نهایی را داور روی برچسبهای خارج محیط محاسبه میکند.
تقسیم داده را داور هم مستقل انجام میدهد؛ موفقیت صرف اجرای برنامه یا metric چاپشده کافی نیست. random_state=42 را برای بازتولیدپذیری تنظیم کن.
مثال ورودی و خروجی
{
"input": {
"train": [
{
"age": 17.1,
"distance": 967.4,
"stores": 4,
"latitude": 24.98872,
"longitude": 121.53408,
"price": 40
},
{
"age": 36.6,
"distance": 488.8193,
"stores": 8,
"latitude": 24.97015,
"longitude": 121.54494,
"price": 38.3
},
{
"age": 15.7,
"distance": 815.9314,
"stores": 4,
"latitude": 24.97886,
"longitude": 121.53464,
"price": 38.1
},
{
"age": 22.8,
"distance": 707.9067,
"stores": 2,
"latitude": 24.981,
"longitude": 121.54713,
"price": 36.6
},
{
"age": 15.2,
"distance": 461.1016,
"stores": 5,
"latitude": 24.95425,
"longitude": 121.5399,
"price": 34.6
},
{
"age": 3.1,
"distance": 383.8624,
"stores": 5,
"latitude": 24.98085,
"longitude": 121.54391,
"price": 56.2
},
{
"age": 22.2,
"distance": 379.5575,
"stores": 10,
"latitude": 24.98343,
"longitude": 121.53762,
"price": 44
},
{
"age": 16.3,
"distance": 4066.587,
"stores": 0,
"latitude": 24.94297,
"longitude": 121.50342,
"price": 20.5
},
{
"age": 38,
"distance": 461.7848,
"stores": 0,
"latitude": 24.97229,
"longitude": 121.53445,
"price": 35.7
},
{
"age": 15.6,
"distance": 289.3248,
"stores": 5,
"latitude": 24.98203,
"longitude": 121.54348,
"price": 46.1
},
{
"age": 21.7,
"distance": 463.9623,
"stores": 9,
"latitude": 24.9703,
"longitude": 121.54458,
"price": 42
},
{
"age": 31.5,
"distance": 258.186,
"stores": 9,
"latitude": 24.96867,
"longitude": 121.54331,
"price": 36.3
},
{
"age": 16.2,
"distance": 2288.011,
"stores": 3,
"latitude": 24.95885,
"longitude": 121.51359,
"price": 24.4
},
{
"age": 12.7,
"distance": 187.4823,
"stores": 1,
"latitude": 24.97388,
"longitude": 121.52981,
"price": 28.5
},
{
"age": 27.6,
"distance": 515.1122,
"stores": 5,
"latitude": 24.96299,
"longitude": 121.5432,
"price": 37.4
},
{
"age": 2.7,
"distance": 533.4762,
"stores": 4,
"latitude": 24.97445,
"longitude": 121.54765,
"price": 53.9
},
{
"age": 1.8,
"distance": 1455.798,
"stores": 1,
"latitude": 24.9512,
"longitude": 121.549,
"price": 27
},
{
"age": 37.3,
"distance": 587.8877,
"stores": 8,
"latitude": 24.97077,
"longitude": 121.54634,
"price": 37.4
},
{
"age": 0,
"distance": 185.4296,
"stores": 0,
"latitude": 24.9711,
"longitude": 121.5317,
"price": 55.3
},
{
"age": 40.1,
"distance": 123.7429,
"stores": 8,
"latitude": 24.97635,
"longitude": 121.54329,
"price": 44.3
},
{
"age": 7.1,
"distance": 2175.03,
"stores": 3,
"latitude": 24.96305,
"longitude": 121.51254,
"price": 32.1
},
{
"age": 25.9,
"distance": 4519.69,
"stores": 0,
"latitude": 24.94826,
"longitude": 121.49587,
"price": 22.1
},
{
"age": 16.9,
"distance": 4066.587,
"stores": 0,
"latitude": 24.94297,
"longitude": 121.50342,
"price": 18.3
},
{
"age": 30.3,
"distance": 4510.359,
"stores": 1,
"latitude": 24.94925,
"longitude": 121.49542,
"price": 22.6
},
{
"age": 15.6,
"distance": 1756.411,
"stores": 2,
"latitude": 24.9832,
"longitude": 121.51812,
"price": 27.3
},
{
"age": 12.2,
"distance": 1360.139,
"stores": 1,
"latitude": 24.95204,
"longitude": 121.54842,
"price": 30.1
},
{
"age": 30.9,
"distance": 6396.283,
"stores": 1,
"latitude": 24.94375,
"longitude": 121.47883,
"price": 12.2
},
{
"age": 3.5,
"distance": 757.3377,
"stores": 3,
"latitude": 24.97538,
"longitude": 121.54971,
"price": 36.7
},
{
"age": 12.2,
"distance": 1360.139,
"stores": 1,
"latitude": 24.95204,
"longitude": 121.54842,
"price": 26.6
},
{
"age": 17.3,
"distance": 444.1334,
"stores": 1,
"latitude": 24.97501,
"longitude": 121.5273,
"price": 43.9
},
{
"age": 9.9,
"distance": 279.1726,
"stores": 7,
"latitude": 24.97528,
"longitude": 121.54541,
"price": 57.4
},
{
"age": 10.3,
"distance": 211.4473,
"stores": 1,
"latitude": 24.97417,
"longitude": 121.52999,
"price": 45.3
},
{
"age": 15.9,
"distance": 289.3248,
"stores": 5,
"latitude": 24.98203,
"longitude": 121.54348,
"price": 42.1
},
{
"age": 26.4,
"distance": 335.5273,
"stores": 6,
"latitude": 24.9796,
"longitude": 121.5414,
"price": 38.1
},
{
"age": 30.7,
"distance": 1264.73,
"stores": 0,
"latitude": 24.94883,
"longitude": 121.52954,
"price": 18.3
},
{
"age": 8,
"distance": 2216.612,
"stores": 4,
"latitude": 24.96007,
"longitude": 121.51361,
"price": 23.9
},
{
"age": 12,
"distance": 1360.139,
"stores": 1,
"latitude": 24.95204,
"longitude": 121.54842,
"price": 28.9
},
{
"age": 12.8,
"distance": 1449.722,
"stores": 3,
"latitude": 24.97289,
"longitude": 121.51728,
"price": 21.4
},
{
"age": 21.7,
"distance": 512.5487,
"stores": 4,
"latitude": 24.974,
"longitude": 121.53842,
"price": 44.2
},
{
"age": 31.3,
"distance": 1758.406,
"stores": 1,
"latitude": 24.95402,
"longitude": 121.55282,
"price": 20.7
}
],
"test": [
{
"age": 25.3,
"distance": 2707.392,
"stores": 3,
"latitude": 24.96056,
"longitude": 121.50831
},
{
"age": 17.3,
"distance": 2261.432,
"stores": 4,
"latitude": 24.96182,
"longitude": 121.51222
},
{
"age": 11.9,
"distance": 1360.139,
"stores": 1,
"latitude": 24.95204,
"longitude": 121.54842
}
],
"features": [
"age",
"distance",
"stores",
"latitude",
"longitude"
],
"target": "price"
},
"output": {
"predictions": [
"برچسب یا عدد برای هر سطر test"
]
}
}معیارهای موفقیت
- MAE حداکثر 8.0
- شکل و تعداد و نوع پیشبینیها مطابق ورودی
- ارزیابی روی دو تقسیم تصادفی مستقل؛ برچسب test به کد ارسال نمیشود.
کتابخانهها: pandas, scikit-learn, numpy
منبع و وضعیت دیتاستها
housing.csv · CC BY 4.0 · Yeh, I. (2018), Real Estate Valuation, UCI, doi:10.24432/C5J30W. Header names normalized; price is per unit area.
https://archive.ics.uci.edu/static/public/477/real+estate+valuation+data+set.zip
نسخه محلی همراه پروژه؛ ۴۱۴ ردیف. هنگام اجرا دانلود خارجی لازم نیست.
