## توضیحات سوال
در شرکت زمان تنها چیزی که اهمیت دارد زمان است. و اعضای شرکت با میزان زمانی که برای شرکت گذاشتهاند سنجیده میشوند.
شرکت زمان شامل بخشهای متفاوتی است که هر عضو از این شرکت میتواند در چند بخش مختلف فعالیت کند.
هر بخش از این شرکت دارای یک عدد ثابت به نام `حقوق ساعتی` و هر عضو از هر بخش دارای یک عدد به نام `درصد اهمیت` میباشد که حقوق فرد در آن بخش را از این دو عدد میتوان فهمید. حقوق فرد در هر بخش به میزان **بزرگترین عدد صحیح کمتر** از ((`درصد اهمیت` آن فرد در بخش) ضرب در (`حقوق ساعتی` آن بخش)) میباشد. به طور مثال کسی که `درصد اهمیت` برابر ۱ دارد به اندازهی `حقوق ساعتی` آن بخش در ساعت حقوق دریافت میکند.
شرکت با توجه به اطلاعاتی که از کار کردن اعضا در سال گذشته دارد طبق الگوریتمی میخواهد اعضایی از شرکت را اخراج و به اعضایی از شرکت `درصد اهمیت` بالاتری بدهد.
شرکت زمان در هر بخش برای هر فرد از آن بخش یک عدد به عنوان `میزان انتظار` تعریف کرده که به معنای حداقل ساعت کاری ماهانهی مدنظر شرکت برای آن فرد در آن بخش است.
اگر کسی در یک ماه، حداقل در یکی از بخشها، کمتر از `میزان انتظار` شرکت برای آن فرد در آن بخش مخصوص، ساعت کاری داشته باشد به اصطلاح میگوییم آن فرد آن ماه را `از دست داده`.
اگر کسی در طی دوازده ماه گذشته حداقل شش ماه را `از دست داده` باشد اخراج میشود.
از بین کسانی که اخراج نشدهاند و در شرکت باقیماندهاند در هر بخش اگر فرد مورد نظر مجموع ساعت کاریاش در سال تقسیم بر مجموع ساعت انتظار ماهانهی شرکت در آن بخش در سال از آن فرد بین ۱ تا ۱.۲۵ باشد(توجه کنید که خود ۱ حساب نیست ولی خود ۱.۲۵ حساب است) به عدد `درصد اهمیت` آن فرد در آن بخش ۰.۲۵ واحد اضافه میشود و اگر فرد مورد نظر مجموع ساعت کاریاش در سال تقسیم بر مجموع ساعت انتظار شرکت در آن بخش از آن فرد بین ۱.۲۵ تا ۱.۵ باشد(توجه کنید که خود ۱.۲۵ حساب نیست ولی خود ۱.۵ حساب است) به عدد `درصد اهمیت` آن فرد در آن بخش ۰.۵ واحد اضافه میشود و اگر بیش از ۱.۵ شود به عدد `درصد اهمیت` آن فرد در آن بخش ۱ واحد اضافه میشود.
## اطلاعات شرکت در سال گذشته
در این سوال به شما سه جدول که اطلاعات شرکت در سال گذشته میباشد به صورت [csv](https://en.wikipedia.org/wiki/Comma-separated_values) داده میشود.
### جدول اول
جدول اول شامل چهار ستون میباشد که نشاندهندهی این است که هر فرد در هر بخش درصد اهمیتش چقدر است و میزان انتظار ساعت کاری شرکت از او چقدر میباشد.
+ **شناسهی عضو**: به صورت یک عدد میباشد که این عدد مختص برای یک عضو میباشد و نشاندهندهی عضوی از این شرکت میباشد.
+ **شناسهی بخش**: به صورت یک عدد میباشد که این عدد مختص برای یک بخش میباشد و نشاندهندهی بخشی از این شرکت میباشد.
+ **درصد اهمیت در بخش**: به صورت یک عدد میباشد که نشاندهندهی `درصد اهمیت` فرد مورد نظر در بخش مورد نظر است.
+ **میزان انتظار**: به صورت یک عدد میباشد که میزان انتظار ساعت کاری شرکت از فرد در آن بخش در طول یک ماه است.
مثال:
| شناسهی عضو | شناسهی بخش | درصد اهمیت در بخش | میزان انتظار |
|:---:|:---:|:---:|:---:|
| ۱ | ۱ | ۰.۹ | ۲۰ |
| ۲ | ۱ | ۰.۸ | ۱۰ |
| ۱ | ۲ | ۱ | ۱۰ |
در مثال بالا عضوی که شناسهاش برابر با ۱ میباشد در دو بخش ۱ و ۲ کار میکند که در بخش ۱ درصد اهمیتش ۰.۹ و در بخش ۲ درصد اهمیتش برابر با ۱ میباشد.
### جدول دوم
جدول دوم شامل دو ستون میباشد که نشاندهندهی حقوق ساعتی هر بخش میباشد.
+ **شناسهی بخش**: به صورت یک عدد است که این عدد مختص برای یک بخش میباشد و نشاندهندهی بخشی از این شرکت است.
+ **حقوق ساعتی**: نشاندهندهی عدد `حقوق ساعتی` در آن بخش میباشد.
مثال:
| شناسهی بخش | حقوق ساعتی |
|:---:|:---:|
| ۱ | ۲۵۰۰۰ |
| ۲ | ۳۰۰۰۰ |
| ۳ | ۴۰۰۰۰ |
در مثال بالا بخش شمارهی ۱ حقوق ساعتی ۲۵۰۰۰ میباشد به این معنی که اگر کسی که درصد اهمیتش در این بخش ۱ میباشد ۱ ساعت کار کند ۲۵۰۰۰ را دریافت میکند.
### جدول سوم
جدول سوم شامل سه ستون میباشد که نشاندهندهی این است که هر عضو در هر بخش در هر ماه چقدر کار کرده است.
+ **شناسهی عضو**: به صورت یک عدد میباشد که این عدد مختص برای یک عضو میباشد و نشاندهندهی عضوی از این شرکت میباشد.
+ **شناسهی بخش**: به صورت یک عدد است که این عدد مختص برای یک بخش میباشد و نشاندهندهی بخشی از این شرکت است.
+ **ماه**: به صورت یک عدد است که نشاندهندهی یک ماه از سال است.
+ **ساعت کاری**: به صورت یک عدد است که میزان ساعت کاری فرد مورد نظر در بخش مورد نظر در ماه مورد نظر است.
مثالی از جدول سوم:
| شناسهی عضو | شناسهی بخش | ماه | ساعت کاری |
|:---:|:---:|:---:|:---:|
| ۱ | ۱ | ۱ | ۲۰ |
| ۲ | ۱ | ۱ | ۱۰ |
| ۱ | ۲ | ۱ | ۱۰ |
در مثال بالا کاربری که شناسهی او ۱ میباشد در بخش شمارهی ۱ در ماه ۱، ۲۰ ساعت کار کرده است.
میتوانید سه جدول توضیح داده شده را از [اینجا](https://quera.ir/assignment/20421/download_problem_initial_project/67782/?noconvert=true) دانلود کنید.
## جدول ارسالی
از شما میخواهیم با استفاده از اطلاعات دریافتی یک جدول با سه ستون در قالب [csv](https://en.wikipedia.org/wiki/Comma-separated_values) تهیه کنید که نشاندهندهی `حقوق دریافتی` جدید هر عضو در هر بخش میباشد.
ستونهای جدول ارسالی باید به صورت زیر باشد:
+ **شناسهی عضو**: به صورت یک عدد میباشد که این عدد مختص برای یک عضو میباشد و نشاندهندهی عضوی از این شرکت میباشد.
+ **شناسهی بخش**: به صورت یک عدد است که این عدد مختص برای یک بخش میباشد و نشاندهندهی بخشی از این شرکت است.
+ **حقوق جدید در بخش**: به صورت یک عدد میباشد که نشاندهندهی حقوق ساعتی جدید فرد با توجه به `درصد اهمیت` **جدید** فرد مورد نظر در بخش مورد نظر است.
**تمامی اعداد در جدول خروجی بایستی به انگلیسی باشند. (سرتیترها و مقادیر جدول)**
**توجه کنید که ترتیب جدول جدید باید همانند جدول اول در جداول داده شده باشد با این تفاوت که در جدول جدیدی که تولید میکنید افرادی که اخراج شدهاند نباید حضور داشته باشند.**
**توجه کنید که سرتیترهای خروجی باید همانند خروجی نمونه که در جدول پایین به نمایش گذاشته شده باشند به این معنا که به جای شناسهی عضو از ۰، به جای شناسهی بخش از ۱ و به جای حقوق جدید در بخش از ۲ استفاده کنید.**
| ۰ | ۱ | ۲ |
|:---:|:---:|:---:|
| ۴۴ | ۴ | ۳۱۹۲۳ |
| ۴۴ | ۱ | ۲۳۶۴۴ |
| ۵۳ | ۲ | ۳۳۴۳ |
یکی از تواناییهای مهم یک دانشمند داده، یافتن روابط موجود در دادهها و استفاده از آنها برای پیشبینی ویژگیهای مختلف است.
دادههای زیر مربوط به تعدادی از افراد در کشوری خارجی است. موارد مختلفی همچون سن، تعداد فرزند، مدت زمان گذشته از شروع شغل افراد، ارزش کالاهای تحت مالکیت و... از افراد به دست آمدهاست. هدف، پیشبینی میزان درآمد افراد (TOTAL INCOME) میباشد.
دادههایی برای آموزش در اختیارتان قرار داده شده است. این دادهها در فایل `train.csv` قرار دارند. شما میتوانید با ارزیابی مدل خود بر روی دادههای اعتبارسنجی (موجود در `validation.csv`) و بارگذاری خروجی، امتیازتان را مشاهده فرمائید. فایلهای مذکور را میتوانید از [اینجا](https://quera.ir/assignment/20421/download_problem_initial_project/67781/?noconvert=true) دریافت نمائید.
دو ساعت به پایان زمان مسابقه، دادههای سنجش در اختیار شما قرار خواهند گرفت. **خطای بین خروجی بارگذاری شده توسط شما برای دادهی سنجش و درآمد واقعی افراد معیار رتبهبندی نهایی خواهد بود**. بنابراین امتیاز شما در طول مسابقه که بر اساس دادهی اعتبارسنجیست، ملاک ارزیابی نهایی نیست.
**توضیح مختصری از ستونهای موجود در دادهها**
جنسیت (*GENDER*): در این ستون *F* نمایندهی جنسیت زن و *M* نمایندهی جنسیت مرد میباشد.
مالک خودرو (*OWN CAR*): بیان میکند که آیا فرد مورد نظر ماشین شخصی دارد (*Y*) یا خیر (*N*).
مالک ملک (*OWN REALTY*): بیان میکند که آیا فرد صاحب خانه هست (*Y*) یا خیر (*N*).
تعداد فرزندان (*NUM OF CHILDREN*): تعداد فرزندان فرد را نشان میدهد.
ارزش کالاهای تحت مالکیت (*GOODS VALUE*): مجموع مبلغ کالاهای فرد را نشان میدهد.
نوع درآمد (*INCOME TYPE*): بیانگر شیوهی درآمد فرد میباشد.
تحصیلات (*EDUCATION*): سطح تحصیلات فرد را نشان میدهد.
وضعیت تأهل (*FAMILY STATUS*): بیانگر وضعیت ازدواج فرد است.
وضعیت مسکن (*HOUSING TYPE*): وضعیت مسکن فردا را نشان میدهد.
تعداد روزها تا ولادت (*DAYS TO BIRTH*): تعداد روزها تا ولادت فرد را نشان میدهد. چون این تاریخ زمانی در گذشته است، مقادیر معتبر این ستون منفی میباشند.
تعداد روزها تا استخدام (*DAYS TO EMPLOYED*): تعداد روزها تا شروع کار فرد. چون این تاریخ زمانی در گذشته است، مقادیر معتبر این ستون منفی میباشند.
تعداد اعضای خانواده (*NUM OF FAMILY MEMBERS*): تعداد اعضای خانوادهی فرد را نشان میدهد.
تفاوت محل زندگی و کار فرد (*IS LIVE CITY NOT WORK CITY*): در صورتی که محل زندگی و کار فرد متفاوت باشد، این مقدار یک و در غیر این صورت صفر خواهد بود.
نوع سازمان کار (*ORGANIZATION TYPE*): نوع سازمانی که فرد در آن مشغول به کار است را نشان میدهد.
دقت کنید که دادهها ممکن است شامل نویزهایی باشند و مقادیر نامعتبری در آنها وجود داشته باشد!
# تابع امتیاز
امتیاز شما **در طول مسابقه** بر اساس تابع زیر محاسبه میگردد:
$$1.1\times(67000-MAE)/110$$
که در آن $MAE$ برابر *میانگین قدر مطلق خطا* بین خروجی شما و درآمد کل واقعی افراد میباشد. **اگر این مقدار از ۱۱۰ بیشتر شد، امتیاز شما ۱۱۰ و اگر از ۰ کمتر شد، ۰ نمایش داده میشود.**
**این امتیاز صرفا برای اطلاع از میزان دقت خروجیتان داده میشود و تاثیری در نمرهی نهایی ندارد.** در طول مسابقه و بر حسب عملکرد شرکتکنندگاه ممکن است رابطهی بالا تغییر یابد تا شرکتکنندگان ارزیابی دقیقتری از عملکردشان در این سوال داشته باشند.
# نمرهی نهایی
نمرهدهی نهایی براساس رتبهبندی نهایی تعیین میگردد. پس از اتمام مسابقه و محاسبهی خطای بر روی دادهی سنجش، شرکتکنندگان به صورت صعودی در رتبههای اول تا آخر برای این سوال قرار میگیرند. نمرهی شرکتکنندهی رتبهی $-i$ام براساس فرمول زیر محاسبه میگردد:
$$2200/(i + 19)$$
که در آن رتبهی شرکتکنندهی اول، یک در نظر گرفته میشود.
تابع خطا در محاسبهی نمرهی نهایی، *میانگین قدرمطلق خطا* بین خروجی شما برای درآمد افراد در دادهی سنجش و درآمد کل واقعی افراد است.
برای مثال نمرهی شرکتکنندهای که کمترین میزان خطا را داشته باشد ۱۱۰ و نفر سوم ۱۰۰ خواهد بود.
# خروجی
شما بایستی فایل فشردهی زیپ شامل خروجیهای خود را بارگذاری کنید.
پیشبینی خود برای دادهی اعتبارسنجی و سنجش را به ترتیب در فایلهایی به نام **`validation_output.txt`** و **`test_output.txt`** قرار دهید. در طول مسابقه، سیستم داوری امتیاز شما بر روی دادهی اعتبارسنجی را نمایش خواهد داد و فایل `test_output.txt` در این امتیاز نظر گرفته نمیشود. پس از اتمام آزمون، فایل `test_output.txt` موجود در ارسال نهایی شما بررسی میشود و ملاک رتبهبندی نهایی قرار خواهد گرفت و فایل `validation_output.txt` تاثیری در نتیجه نخواهد.
هر دوی این فایلها، بایستی دنبالهای از اعداد باشند؛ به طوری که در هر خط یک عدد قرار دارد. عدد خط اول پیشبینی شما از درآمد کل (*TOTAL INCOME*) فرد اول در فایل متناظر، عدد دوم برای فرد دوم در فایل متناظر و... .
یادآوری میشود که دادههای اعتبارسنجی در `validation.csv` و دادههای سنجش در `test.csv` را میتوانید از [اینجا](https://quera.ir/assignment/20421/download_problem_initial_project/67781/?noconvert=true) دریافت کنید. (دادههای سنجش دو ساعت به پایان مسابقه به دادههای همین لینک اضافه خواهند شد و پیش از آن در دسترس نخواهند بود.)
در سال ۲۱۰۳ میلادی، یک گیاهشناس به نام «ادریس محقق» مسئولیت پروژهای برای بررسی تاثیرات تغییرات اقلیمی، روی پوشش گیاهی یک منطقهی وسیع و دورافتاده- که تصور میشود، گونههای گیاهی نادر و در معرض خطری در آن وجود داشته باشد- را بر عهده میگیرد. اما درست قبل از عقد قرارداد و در کشاکش بررسیهای اولیه، بزرگترین سرمایهگذار در پروژه، به علت تغییر تیم مدیریتی، تصمیم به کاهش مقدار قابل توجهی از مبلغ سرمایهگذاری خود در پروژه را میگیرد، به طوری که پیگیری پروژه به شکل پیشین- یعنی ارسال تیمهای متخصص و رباتهای نمونهبردار برای بررسیهای میدانی- قابل ادامه نخواهد بود. نتایج بررسیهای اولیه امیدوارکننده است، اما در صورت انتظار برای پیدا کردن سرمایهگذار جدید، به علت پایان فصل مناسب تحقیق، پروژه ممکن است تا یکسال به تعویق بیافتد!
ادریس که به این سادگیها خیال کوتاه آمدن ندارد، بعد از کمی بررسی متوجهی رونق زنبورداری در آن منطقه میشود و با جستوجویی کوتاه در «دانشنامهی دیتاهای سرگردان» به پروژهای با عنوان «زنبورها برای خلق» در شوروی سابق برمیخورد که در آن با هدف پیشروی بلوک شرق از بلوک غرب در تولید عسل، تعداد زیادی از گونههای گیاهی به عنوان منبع غذایی اصلی زنبورها مورد آزمایش قرار گرفته و **۲۵۶** ویژگی از ویژگیهای فیزیکی (مانند رنگ، گرانروی و...) و شیمیایی (مانند غلظت قندها و پروتئینهای مختلف و...) عسل تولیدی از آنها هر یک به صورت عددی حقیقی ثبت شده بود. ادریس با کمی بررسی بیشتر، درمییابد که از بین ۲۴۲ گونهای که در پیشنهاده پژوهشی اولیهی پروژهاش وجود دارد، **۲۰۰** عدد از آن گیاهان در لیست گیاهان مورد بررسی در پروژهی «زنبورها برای خلق» وجود دارد.
ادریس و همکاراناش، بلافاصله مشغول به آماده کردن دیتاستی مرتبط با نیازشان از نتایج پروژهی «زنبورها برای خلق» و جمعآوری ویژگیهای نمونهی عسل از کندوهای منطقه و مناطق مجاور میکنند، که نتایجاش در توضیحات زیر موجود است. با استفاده از این دادهها به تیم کوچک آنها در پیدا کردن مدلی برای تشخیص منبع اصلی تغذیهی زنبورها کمک کنید. ادریس از نتایج بهترین مدل برای جستوجوی هدفمندتر و کم هزینهتر گیاهان مورد نظرش استفاده خواهد کرد.
# دیتاست
شامل سه فایل
`ytrain.csv`
،
`xtrain.csv`
و
`xtest.csv` میباشد که هریک شامل تعدادی رکورد است.
هر رکورد (سطر) در
`xtrain.csv`
و
`xtest.csv`
یک بردار ۲۵۶ بعدی، نمایندهی یک عسل خاص است. تعداد سطرهای فایل `ytrain.csv` برابر با تعداد سطرهای فایل `xtrain.csv` میباشد. هر سطر `ytrain.csv` برابر
عددی بین ۰ تا ۱۹۹ است؛ به طوری که رکورد سطر
$i$
-ام آن، نشاندهندهی شمارهی گیاه مورد تغذیهی زنبورهای تولید کنندهی عسل
$i$
-ام در
`xtrain.csv`
است.
دیتاست را میتوانید از [اینجا](https://quera.ir/assignment/20421/download_problem_initial_project/67780/?noconvert=true) دریافت کنید.
# تابع امتیاز
امتیاز شما تابعی از دقت پیشبینی مدل، روی دیتاهای تست، `xtest.csv`، است.
$$Score =\begin{cases} accuracy \times 120 &\text{ ,}\,\, accuracy \leq 0.5\\
\\ 50 + 90\times\frac{ e^{4 \times accuracy}}{e^{4 }} &\text{ , }\,\,accuracy > 0.5\end{cases}
$$
# خروجی
یک فایل CSV با نام
`output.csv`
که هر رکورد آن نشاندهندهی شمارهی گیاه متناظر با عسل همان رکورد در
`xtest.csv`
است. شما بایستی برای هر بردار ۲۵۶ بعدی (نمایندهی یک عسل) در `xtest.csv` شماره گیاه متناظر با آن (عددی بین ۰ تا ۱۹۹) را پیشبینی کنید.
به منظور جلوگیری از هر گونه تقلب و شبهه احتمالی که منجر به ضایع شدن حق شما شود، لطفا فایل کد همه سوالات پاسخ داده شده خود را در قالب یک فایل زیپ در اینجا بارگزاری نمایید.
نحوه آپلود باید به این گونه باشد که برای هر سوال که جواب دادید، یک پوشه به نام آن سوال (مانند `problem1`) و تمامی کدهای خود را در آن آپلود کنید.
با تشکر فراوان
آپلود کد سوالات پاسخ داده شده