تحلیل و پیشبینی تأخیرهای پرواز
تأخیر ورود را پس از مشخصشدن تأخیر خروج و زمان پرواز تخمین بزن؛ پیشبینی پیش از خروج نیست.
۱۰۰ دقیقه · ۲۷۰ XP · Python · Scikit-learn · Evaluation
هدف و راهنمای انجام
جداسازی آموزش و ارزیابی و سنجش تعمیم مدل
ورودی
train: لیست سطرهای دارای arr_delay؛ test: لیست ویژگیهای بدون هدف؛ features: ['month', 'day', 'hour', 'distance', 'air_time', 'dep_delay']؛ target: arr_delay
خروجی
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": [
{
"month": 1,
"day": 2,
"hour": 18,
"distance": 760,
"air_time": 127,
"dep_delay": -1,
"arr_delay": -16
},
{
"month": 1,
"day": 1,
"hour": 16,
"distance": 199,
"air_time": 48,
"dep_delay": 14,
"arr_delay": 13
},
{
"month": 1,
"day": 3,
"hour": 8,
"distance": 1069,
"air_time": 165,
"dep_delay": -1,
"arr_delay": -4
},
{
"month": 1,
"day": 3,
"hour": 8,
"distance": 1005,
"air_time": 165,
"dep_delay": 2,
"arr_delay": 2
},
{
"month": 1,
"day": 2,
"hour": 16,
"distance": 762,
"air_time": 130,
"dep_delay": -2,
"arr_delay": 26
},
{
"month": 1,
"day": 2,
"hour": 18,
"distance": 419,
"air_time": 74,
"dep_delay": -9,
"arr_delay": -15
},
{
"month": 1,
"day": 2,
"hour": 19,
"distance": 2586,
"air_time": 320,
"dep_delay": 17,
"arr_delay": -33
},
{
"month": 1,
"day": 2,
"hour": 6,
"distance": 719,
"air_time": 112,
"dep_delay": 80,
"arr_delay": 90
},
{
"month": 1,
"day": 2,
"hour": 18,
"distance": 719,
"air_time": 137,
"dep_delay": 15,
"arr_delay": 19
},
{
"month": 1,
"day": 2,
"hour": 7,
"distance": 1400,
"air_time": 215,
"dep_delay": 7,
"arr_delay": 13
},
{
"month": 1,
"day": 2,
"hour": 15,
"distance": 642,
"air_time": 121,
"dep_delay": 43,
"arr_delay": 47
},
{
"month": 1,
"day": 2,
"hour": 21,
"distance": 301,
"air_time": 63,
"dep_delay": -4,
"arr_delay": -10
},
{
"month": 1,
"day": 1,
"hour": 17,
"distance": 1416,
"air_time": 234,
"dep_delay": 2,
"arr_delay": 16
},
{
"month": 1,
"day": 1,
"hour": 17,
"distance": 2402,
"air_time": 344,
"dep_delay": 1,
"arr_delay": -19
},
{
"month": 1,
"day": 2,
"hour": 6,
"distance": 1085,
"air_time": 157,
"dep_delay": -1,
"arr_delay": -1
},
{
"month": 1,
"day": 2,
"hour": 12,
"distance": 719,
"air_time": 136,
"dep_delay": -1,
"arr_delay": -1
},
{
"month": 1,
"day": 2,
"hour": 18,
"distance": 2422,
"air_time": 325,
"dep_delay": -5,
"arr_delay": -51
},
{
"month": 1,
"day": 2,
"hour": 16,
"distance": 1626,
"air_time": 242,
"dep_delay": -1,
"arr_delay": -18
},
{
"month": 1,
"day": 2,
"hour": 12,
"distance": 1183,
"air_time": 196,
"dep_delay": -2,
"arr_delay": 1
},
{
"month": 1,
"day": 2,
"hour": 15,
"distance": 2475,
"air_time": 341,
"dep_delay": -5,
"arr_delay": -23
},
{
"month": 1,
"day": 2,
"hour": 9,
"distance": 266,
"air_time": 51,
"dep_delay": -6,
"arr_delay": -1
},
{
"month": 1,
"day": 1,
"hour": 15,
"distance": 282,
"air_time": 58,
"dep_delay": 16,
"arr_delay": 12
},
{
"month": 1,
"day": 2,
"hour": 8,
"distance": 1020,
"air_time": 142,
"dep_delay": 10,
"arr_delay": -6
},
{
"month": 1,
"day": 2,
"hour": 6,
"distance": 1028,
"air_time": 146,
"dep_delay": -6,
"arr_delay": -10
},
{
"month": 1,
"day": 2,
"hour": 18,
"distance": 1598,
"air_time": 191,
"dep_delay": -3,
"arr_delay": -4
},
{
"month": 1,
"day": 1,
"hour": 18,
"distance": 2422,
"air_time": 334,
"dep_delay": -4,
"arr_delay": -13
},
{
"month": 1,
"day": 2,
"hour": 17,
"distance": 544,
"air_time": 100,
"dep_delay": -4,
"arr_delay": -6
},
{
"month": 1,
"day": 1,
"hour": 13,
"distance": 445,
"air_time": 86,
"dep_delay": 40,
"arr_delay": 46
},
{
"month": 1,
"day": 2,
"hour": 7,
"distance": 733,
"air_time": 127,
"dep_delay": 12,
"arr_delay": 12
},
{
"month": 1,
"day": 1,
"hour": 11,
"distance": 1620,
"air_time": 256,
"dep_delay": 13,
"arr_delay": 34
},
{
"month": 1,
"day": 1,
"hour": 13,
"distance": 569,
"air_time": 129,
"dep_delay": 35,
"arr_delay": 65
},
{
"month": 1,
"day": 2,
"hour": 20,
"distance": 404,
"air_time": 74,
"dep_delay": 3,
"arr_delay": -11
},
{
"month": 1,
"day": 2,
"hour": 15,
"distance": 282,
"air_time": 51,
"dep_delay": 128,
"arr_delay": 141
},
{
"month": 1,
"day": 2,
"hour": 7,
"distance": 445,
"air_time": 94,
"dep_delay": -2,
"arr_delay": 12
},
{
"month": 1,
"day": 2,
"hour": 20,
"distance": 762,
"air_time": 125,
"dep_delay": -4,
"arr_delay": 6
},
{
"month": 1,
"day": 2,
"hour": 17,
"distance": 2446,
"air_time": 319,
"dep_delay": -6,
"arr_delay": -44
},
{
"month": 1,
"day": 1,
"hour": 14,
"distance": 1504,
"air_time": 252,
"dep_delay": 1,
"arr_delay": 17
},
{
"month": 1,
"day": 2,
"hour": 7,
"distance": 2422,
"air_time": 309,
"dep_delay": -1,
"arr_delay": -45
},
{
"month": 1,
"day": 2,
"hour": 9,
"distance": 1023,
"air_time": 154,
"dep_delay": 0,
"arr_delay": 15
},
{
"month": 1,
"day": 2,
"hour": 8,
"distance": 1605,
"air_time": 242,
"dep_delay": 1,
"arr_delay": -11
}
],
"test": [
{
"month": 1,
"day": 1,
"hour": 10,
"distance": 762,
"air_time": 129,
"dep_delay": -4
},
{
"month": 1,
"day": 2,
"hour": 16,
"distance": 533,
"air_time": 102,
"dep_delay": 168
},
{
"month": 1,
"day": 1,
"hour": 15,
"distance": 483,
"air_time": 98,
"dep_delay": -8
}
],
"features": [
"month",
"day",
"hour",
"distance",
"air_time",
"dep_delay"
],
"target": "arr_delay"
},
"output": {
"predictions": [
"برچسب یا عدد برای هر سطر test"
]
}
}معیارهای موفقیت
- MAE حداکثر 15.0
- شکل و تعداد و نوع پیشبینیها مطابق ورودی
- ارزیابی روی دو تقسیم تصادفی مستقل؛ برچسب test به کد ارسال نمیشود.
کتابخانهها: pandas, scikit-learn, numpy
منبع و وضعیت دیتاستها
flights.csv · CC0 1.0 · nycflights13 (Hadley Wickham), 2013 NYC departures, US Bureau of Transportation Statistics; first 2000 complete rows via Rdatasets. https://cran.r-project.org/web/packages/nycflights13/index.html
https://vincentarelbundock.github.io/Rdatasets/csv/nycflights13/flights.csv
نسخه محلی همراه پروژه؛ ۲۰۰۰ ردیف. هنگام اجرا دانلود خارجی لازم نیست.
