سلام
به مسابقه **نهایی** از **مسیر داده** لیگ **کُدکاپ ۱۴۰۱** خوش آمدید.
برای آشنایی با سیستم داوری مسابقات تحلیل داده و یادگیری ماشین، ویدئو زیر را مشاهده کنید.
%video.arvan_https://player.arvancloud.ir/index.html?config=https://qvideo.arvanvod.ir/0YLXKYyxOa/17eQK5q9Gd/origin_config.json%
قبل از شروع مسابقه، ابتدا موارد زیر را مطالعه کنید:
+ این مسابقه، دارای ۴ سوال برای ۵ ساعت میباشد و راس ساعت ۲۱:۰۵ به پایان میرسد.
+ برای حل سوالات این مسابقه، **میتوانید** از روشهای زیر استفاده کنید:
+ تحیل داده
+ داده کاوی
+ پردازش متن
+ یادگیری ماشین
+ یادگیری عمیق
+ داوری هر سوال تا قبل از پایان مسابقه، تنها بر اساس ۳۰ درصد از مجموعه داده آزمایش (`test`) خواهد بود. پس از اتمام مسابقه، برای بهروزرسانی نهایی جدول امتیازات، از ۱۰۰ درصد مجموعه داده آزمایش بر روی **ارسال نهایی** شما استفاده خواهد شد؛ این کار برای جلوگیری از بیشبرازش (`overfitting`) انجام میشود.
+ پیش از پایان زمان مسابقه، کُد سوالات خود را در بخش "بارگذاری کد" قرار دهید. در صورتی که پس از پایان زمان مسابقه، فایل کدها توسط شما بارگذاری نشده باشد، از جدول مسابقات حذف خواهید شد.
+ این مسابقه در مجموع ۴۰۰ امتیاز دارد و همین مسابقه معیار تعیین نفرات برتر خواهد بود.
+ محدودیتی برای شما در انتخاب ابزار نرم افزاری یا زبان برنامهنویسی وجود ندارد.
+ برای مطالعه قوانین شرکت در مسابقه به [اینجا](https://quera.ir/course/assignments/2693/problems/33523) مراجعه کنید.
+ در طول زمان مسابقه میتوانید سوالهای خود را از قسمت "سوال بپرسید" مطرح کنید.
+ بعد از پایان زمان مسابقه، امتیاز افرادی که از روشهای غیرمتناسب با هدف مسابقه (مانند تابع تصادفی) استفاده کرده باشند، صفر میشود و این امر تخلف به حساب میآید.
+ شما مجاز به استفاده از دادگان به اشتراک گذاشته شده در این مسابقه، برای سایر اهداف (آموزشی و غیرآموزشی) **نیستید**.
# زیرساخت و نحوه دریافت مجموعههای داده
مجموعه داده هر سوال را در صورت سوال مربوطه، میتوانید دریافت نمایید. اما پیش از آن، بایستی که محیط برنامهنویسی لازم برای محاسبات خود را آماده کنید. اگر میخواهید که با استفاده از زبان برنامهنویسی پایتون و کتابخانههای موجود در آن، در این مسابقه شرکت کنید. میتوانید از سامانه [گوگل کُلَب](https://colab.research.google.com) استفاده کنید.
بدین صورت نیازی نیست که شما مجموعه داده های این مسابقه را روی کامپیوتر خود دانلود کنید. همچنین گوگل کُلَب این امکان را به شما میدهد که از قابلیتهای `GPU` و `TPU` آن به رایگان استفاده کرده و سرعت محاسبات خود را به طور قابل ملاحظهای افزایش دهید. **پیشنهاد** میشود که ابتدا کُد خود را در حالت `CPU` توسعه دهید و **فقط** هنگامی که می خواهید شروع به آموزش دادن مُدل خود کنید، قابلیت `GPU` یا `TPU` را در صورت **نیاز** فعال کنید؛ بدین صورت، بهینه از منابع استفاده میکنید.
اگر اولین باری است که با گوگل کُلَب آشنا میشوید. پیشنهاد میشود راهنمای فارسی کار با آن را از [اینجا](https://virgool.io/@baran.science/%DA%86%DA%AF%D9%88%D9%86%D9%87-%D8%A8%D8%A7-google-colab-%DA%A9%D8%A7%D8%B1-%DA%A9%D9%86%DB%8C%D9%85-mihfp5n8mdta) به دقت مطالعه کنید. توجه داشته باشید که برای استفاده از گوگل کُلَب، شما نیازمند به داشتن ایمیل `gmail` میباشید و قابلیتهای ارائه شده در نسخه رایگان آن، برای انجام این مسابقه کافی است.
همچنین **فعلا** برای دسترسی به آن نیازی به استفاده از فیلترشکن نیست.
مقدمه
محمد، سجاد، مهیار و کاوان به مطالعه کتاب بسیار علاقه دارند. از این رو محمد پیشنهاد داد که در روز معینی از هفته دور هم جمع شوند و جلسات مطالعه کتابخوانی دستهجمعی برگزار کنند. در یکی از جلسات کتابخوانی، پس از مطالعه کتاب، این چهار نفر تصمیم گرفتند مهارت خود را در زمینه تحلیل داده، همراه با چاشنی کتابخوانی محک بزنند. آن ها تصمیم گرفتند مسابقهای میان خود برگزار کنند و با استفاده از داده متنی یک کتاب، به چند سوال پاسخ بدهند. اینک محمد، سجاد، مهیار و کاوان از شما دعوت کردهاند همراه آنها در این مسابقه شرکت کنید و مهارت خود را بسنجید.
![توضیح تصویر](https://quera.org/qbox/view/WZCK5K3tcO/1_mhWZ6BhAKaaVNEwBN_rkJw.jpeg)
# مجموعه داده
| مجموعه داده سوال را میتوانید از [این لینک](/contest/assignments/45363/download_problem_initial_project/157860/) دانلود کنید.|
| :--: |
هنگامی که این فایل را از حالت فشرده خارج کنید، فایل (`words.csv`) در اختیار شما خواهد بود. این فایل ۲۲۲۱۴۸ سطر و ۱ ستون دارد.
جزییات فایل `words.csv` در جدول زیر آمدهاست:
| نام ستون | توضیحات ستون |
|:----------|:------------------:|
| words | یک کلمه |
<details class="yellow">
<summary>
**بیشتر بدانید**
</summary>
کلماتی که در این دیتافریم مشاهده میکنید، همگی کلمات کتاب معروف امریکایی نهنگ سفید نوشته *Herman Melville* است.
از طریق [این لینک از ویکیپدیا](https://en.wikipedia.org/wiki/Moby-Dick) میتوانید اطلاعات بیشتری در مورد کتاب بهدست بیاورید!
</details>
# صورت مسئله
در ابتدای کار، شما میخواهید با بررسی اولیه به اکتشاف در مجموعه دادگان متنی (`words.csv`) بپردازید و به سوالات زیر پاسخ بدهید (مثال خروجی هر سوال، در زیر آن آورده شدهاست).
1. تعداد کلمات منحصر به فرد متن را پیدا کنید.
```
1000
```
2. پنج کلمه پرتکرار به همراه تعداد تکرار آنها در متن را پیدا کنید و به شکل نزولی بر اساس تعداد تکرار و فرمت زیر وارد کنید (توجه کنید ممکن است کلمه فقط شامل یک کاراکتر باشد).
```
quera:1001 sajad:1000 mohammad:999 kavan:998 mahyar:997
```
3. طولانیترین کلمهای که با کاراکتر `q` شروع میشود را پیدا کنید.
```
quit
```
4. کلمات منحصر به فردی که تعداد کاراکترهای آنها برابر هشت است را پیدا کرده و به شکل صعودی مرتب کنید(به ترتیب حروف الفبا)، سپس پنج کلمه اول از لیست مرتب شده را به فرمت زیر وارد کنید.
```
kavanalp mahyarrz mohammad queracup sajjadyp
```
<details class="green">
<summary>
**راهنمایی**
</summary>
ابتدا کلمات منحصر به فرد را پیدا کنید، سپس از بین آنها، کلماتی را به شکل صعودی مرتبسازی کنید که طولشان برابر ۸ کاراکتر باشد!
</details>
این مرحله در مجموع، شامل 4 سوال (هر سوال، ۱۲/۵ امتیاز) میباشد. در صورتی که به تمامی سوالات پاسخ صحیح بدهید، بایستی که بتوانید ۵۰ امتیاز از این مرحله کسب کنید.
# خروجی
برای ارسال پاسخ، جواب هر سوال را مشابه مثال، در یک سطر از یک فایل `text` بنویسید. در نهایت یک فایل چهار خطی با نام **output.txt** را برای ما بارگذاری کنید.
**_در صورتی که جواب سوالی را نمیدانید در سطر مربوطه ۱- وارد کنید._**
## نمونه خروجی ۱
```
1000
quera:1001 sajad:1000 mohammad:999 kavan:998 mahyar:997
quit
kavanalp mahyarrz mohammad queracup sajjadyp
```
<details class="violet">
<summary>**توضیحات**</summary>
در خط _i_ ام جواب سوال _i_ ام نوشته شدهاست.
</details>
## نمونه خروجی ۲
```
3256
-1
quantifications
-1
```
<details class="violet">
<summary>**توضیحات**</summary>
چون پاسخ سوال دوم و چهارم را نمیدانستید، به جای آن عدد ۱- نوشتهاید!
</details>
<details class="red">
<summary>
**هشدار 😱**
</summary>
فراموش نکنید که **قبل از پایان زمان مسابقه**، **بایستی** تمامی کدهای این مسابقه را از قسمت **بارگذاری کُد** برای ما ارسال کنید. در غیر این صورت، شما از این مسابقه، امتیازی کسب نمی کنید.
توجه داشته باشید که اگر از `jupter notebook` استفاده می کنید بایستی همانند توضیحات قسمت **بارگذاری کُد**، خروجی `.py` را دریافت و برای ارسال در نظر بگیرید. ارسال فایلهای `jupyter` همانند `.ipynb` مورد قبول واقع نخواهند شد.
</details>
مسابقه کتابخوانی
![توضیح تصویر](http://businessadministration.ir/wp-content/uploads/2019/05/IJMSBA4.38.1.png)
علی یک پسر بسیار تلاشگر و با استعداد است که به تازگی فارغ التحصیل شده و به دنبال شغلی مطابق با رشته تحصیلی خود میگردد. او وقت زیادی صرف جمع آوری اطلاعات شرکت ها کرده است و از آنجا که خیلی وسواس دارد. میخواهد جزییات بیشتری در مورد شرکت ها بدست بیاورد تا بدون دغدغه برای کار در شرکت مورد نظر خود اقدام کند.
او با توجه به اطلاعاتی که جمع آوری کرده است، از شما به عنوان یک دانشمند داده میخواهد صنایع وابسته *(Sub-Industry)* به هر شرکت را پیشبینی کنید.
# مجموعه داده
| مجموعه داده سوال را میتوانید از [این لینک](/contest/assignments/45363/download_problem_initial_project/157862/) دانلود کنید.|
| :--: |
هنگامی که این فایل را از حالت فشرده خارج کنید. پوشه `companies` را میبینید. در صورتی که وارد این پوشه شوید، فایل آموزش (`train.csv`) و آزمایش (`test.csv`) را مشاهده میکنید. فایل آموزش، دارای ساختار زیر است:
| نام ستون | توضیحات ستون |
|:----------:|:------------------:|
| Ticker | مخفف نام شرکت |
| Company Name | نام شرکت |
| Sector | بخش |
| Industry Group | گروه صنایع |
| Industry | صنایع |
| Description | توضیحات |
| Sub-Industry | صنایع وابسته |
تنها تفاوت مجموعه داده آموزش با آزمایش در این است که مجموعه داده آزمایش، ستون`Sub-Industry` را ندارند.
# صورت مسئله
با استفاده از مجموعه داده آموزش، یک مُدل برای پیشبینی صنایع وابسته (ستون `Sub-Industry`) هر شرکت آموزش دهید. بدین صورت علی میتواند راحتتر به شغل رویایی و ایدهآل خود برسد 😎😍
# ارزیابی
برای ارزیابی پاسخ شما از معیار *F1* استفاده خواهد شد. این معیار به صورت زیر تعریف میشود:
$$F_1 = 2 \times \frac{precision \times recall}{precision + recall}$$
ولی به دلیل اینکه ستون پیشبینی دارای بیش از ۲ کلاس است ما از معیاری به نام *Weighted F1* استفاده میکنیم که *F1* میانگین وزنی کلاس ها را محاسبه میکند.
برای مطالعه بیشتر در مورد این معیار میتوانید به [این منبع](https://towardsdatascience.com/micro-macro-weighted-averages-of-f1-score-clearly-explained-b603420b292f#33e1) مراجعه کنید.
| **داوری این سوال قبل از پایان مسابقه، تنها بر اساس ۳۰ درصد از مجموعه داده آزمایش (`test`) خواهد بود. پس از اتمام مسابقه، برای بهروزرسانی نهایی جدول امتیازات، از ۱۰۰ درصد مجموعه داده آزمایش استفاده خواهد شد؛ این کار برای جلوگیری از بیشبرازش (`overfit`) روی مجموعه داده آزمایش انجام میشود.** |
| :--: |
# خروجی
پیشبینیهای مدل خود بر روی دادگان آزمایش (`test.csv`) را در فایلی با نام `output.csv` قرار دهید.
این فایل باید دارای یک ستون به اسم `Sub-Industry` باشد.(بزرگ و کوچک بودن حروف نام ستون رعایت شود) که ردیف i ام هر ستون، پیشبینی شما برای نظر ردیف i ام از فایل `test.csv` باشد. بعد از آمادهسازی فایل `output.csv`، آن را برای ما بارگذاری کنید.
## نمونه خروجی فایل `output.csv` (فقط چهار خط اول به همراه نام ستون)
```
Sub-Industry
Department Stores
Communications Equipment
Biotechnology
Health Care Equipment
```
<details class="yellow">
<summary>
**توجه**
</summary>
حتما فایل `output.csv` باید دارای 944 سطر (بدون در نظر گرفتن `header`) و یک ستون باشد.
</details>
<details class="red">
<summary>
**هشدار 😱**
</summary>
فراموش نکنید که **قبل از پایان زمان مسابقه**، **بایستی** تمامی کدهای این مسابقه را از قسمت **بارگذاری کُد** برای ما ارسال کنید. در غیر این صورت، شما از این مسابقه، امتیازی کسب نمی کنید.
توجه داشته باشید که اگر از `jupter notebook` استفاده می کنید بایستی همانند توضیحات قسمت **بارگذاری کُد**، خروجی `.py` را دریافت و برای ارسال در نظر بگیرید. ارسال فایلهای `jupyter` همانند `.ipynb` مورد قبول واقع نخواهند شد.
</details>
شرکتهای جهانی
[وبسایت کگل](www.kaggle.com) خانه دوم دانشمندان داده است. در این وبسایت میتوان انواع مختلفی از مجموعههای داده را پیدا کرد. از حوزه متن گرفته تا گراف، افراد در سراسر دنیا، دادههای خود را با دیگران به اشتراک میگذارند.
![توضیح تصویر](https://quera.org/qbox/view/BAFymIBlJd/Kaggle_logo.png)
به عنوان تحلیلگر یا دانشمند داده و حتی مهندس یادگیری ماشین، شاید بارها و بارها پیش آمده است که برای تمرین شخصی یا پروژههای دانشگاهی و صنعتی در [وبسایت کگل](www.kaggle.com) ساعتها مشغول بررسی مجموعه دادههای موجود باشید، تا بتوانید بهترین مجموعه داده مناسب نیازتان را پیدا کنید!
اگر میتوانستیم با استفاده از یادگیری ماشین و هوش مصنوعی، مجموعه دادههایی که مناسبتر هستند را پیدا کنیم، در وقتمان بسیار صرفهجویی میشد.
حال در این مسئله قصد داریم با استفاده از دادهای که از سایت کگل استخراج شده است، به پیشبینی معیار استفادهپذیری *(usability score)* مجموعههای داده بپردازیم!
# مجموعه داده
| مجموعه داده سوال را میتوانید از [این لینک](/contest/assignments/45363/download_problem_initial_project/157861/) دانلود کنید.|
| :--: |
هنگامی که این فایل را از حالت فشرده خارج کنید، فایلهای آموزش (`train.csv`) و آزمایش (`test.csv`) در اختیار شما خواهند بود. فایل آموزش، اطلاعات ۸۰۰۰ مجموعه داده را در ۹ ستون در خود جا داده است.
جزییات فایل آموزش، در جدول زیر آمدهاست:
| نام ستون | توضیحات ستون |
|:----------|:------------------:|
| dataset url |لینک به مجموعه داده|
| title |عنوان مجموعه داده|
| dataset author |شخصی که مجموعه داده را در کگل قرار داده است|
| dataset created |زمانی که مجموعه داده در کگل بارگذاری شده است|
| file type, no. of files and file size |فرمت، تعداد و حجم مجموعه داده|
| documentation remarks |توضیحاتی درباره کیفیت مستندات مجموعه داده|
| votes |تعداد رایهای مثبتی که توسط کاربران سایت به مجموعه داده شده است|
| medal |مدالی که مجموعه داده تصاحب کرده است. اگر این ستون خالی باشد، به معنی این است که مجموعه داده مدالی برنده نشده است|
| usability score |معیار استفادهپذیری برای هر مجموعه داده|
<details class="yellow">
<summary>
**توجه**
</summary>
ستون `dataset created` با عبارتهایی نظیر *13 days ago* یا *an hour ago* پر شده است. مبدا زمانی برای تبدیل این ستون به فرمت تاریخ را معادل `00:00:00 20-10-2022` در نظر بگیرید. پس در سطری که ستون `dataset created` برابر *16 days ago* باشد، در حقیقت تاریخ بارگذاری مجموعه داده در کگل، برابر `00:00:00 04-10-2022` بوده است.
</details>
توجه داشته باشید که فایل آزمایش دارای ستون `usability score` نیست.
# صورت مسئله
با استفاده از مجموعه داده آموزش، یک مُدل برای پیشبینی معیار استفادهپذیری مجموعه دادههای وبسایت کگل آموزش دهید؛ بدین صورت، در آینده برای پیدا کردن مجموعه دادههای مناسب، میتوانید از آن استفاده کنید و در وقت خود صرفهجویی نمایید 😎
<details class="yellow">
<summary>
**توجه**
</summary>
در مجموعه داده آموزش و آزمایش، برخی ستونها مقدار `null` یا `nan` دارند. مدیریت این موضوع، بخشی از چالش مسئله است!
منتها توجه داشته باشید هیچ سطری از مجموعه داده **آزمایش** نباید حذف شود. زیرا سامانه داوری انتظار دارد به ازای تمامی سطرهای مجموعه آزمایشی که در اختیارتان قرار گرفته است، پیشبینی انجام دهید.
</details>
# ارزیابی
برای ارزیابی مُدل شما از معیار `Root Mean Square Error` یا به اختصار `RMSE` به شرح زیر استفاده میشود:
$$RMSE=\sqrt{\frac{\sum_{i=1}^{n}(r_i-\hat{r}_i)^2}{n}}$$
در فرمول بالا، $r_i$ مقدار واقعی `usability score` برای سطر $i$ است و $\hat{r}_i$ نیز مقدار پیشبینی شده مُدل شما برای آن `usability score` است. همچنین تعداد نمونههای مجموعه داده را از شماره ۱ تا $n$ در نظر بگیرید. در نهایت، امتیاز شما از این مرحله بر اساس فرمول زیر محاسبه میگردد:
$$score=(1.71-RMSE)\times\frac{100}{171}\times100$$
<details class="green">
<summary>
**توضیحات**
</summary>
یک تابع تصادفی یا تابعی که همیشه یک امتیاز ثابت را پیش بینی میکند، حداقل `RMSE` برابر با ۱.۷۱ برای مجموعه داده این سوال دارد. پس، مدلهایی که `RMSE` آنها ۱.۷۱ یا بزرگتر از آن باشد، به عنوان مدل مناسب این مسئله، قابل قبول نیستند و هرمدلی که چنین عملکردی را روی مجموعه داده آزمایش داشتهباشد، امتیازی از این سوال کسب نمیکند.
</details>
<details class="yellow">
<summary>
**توجه**
</summary>
لطفا در هنگام کار با این دادگان، به نکات زیر توجه داشته باشید:
+ مقدار `RMSE` مدل شما، تا سه رقم اعشار محاسبه (رُند) و در فرمول امتیازدهی بالا، قرار داده میشود.
+ این سوال، امتیاز منفی ندارد. حتی اگر `score` شما، منفی شود. از این سوال حداقل **صفر** امتیاز میگیرید. 😜
+ بیشترین امتیاز ممکن از این سوال ۱۰۰ و کمترین امتیاز ممکن، صفر است.
</details>
| **داوری این سوال قبل از پایان مسابقه، تنها بر اساس ۳۰ درصد از مجموعه داده آزمایش (`test`) خواهد بود. پس از اتمام مسابقه، برای بهروزرسانی نهایی جدول امتیازات، از ۱۰۰ درصد مجموعه داده آزمایش استفاده خواهد شد؛ این کار برای جلوگیری از بیشبرازش (`overfit`) روی مجموعه داده آزمایش انجام میشود.** |
| :--: |
# خروجی
پیشبینیهای مدل خود بر روی دادگان آزمایش (`test.csv`) را در فایلی با نام `output.csv` قرار دهید. این فایل باید دارای یک ستون با نام `usability_score` (به زیرخط یا *underline* در این کلمه توجه کنید) باشد که ردیف iام آن، پیشبینی شما برای سطر iام مجموعه داده آزمایش باشد (دقت کنید که این ستون باید حتما دارای `header` باشد).
بعد از آمادهسازی فایل `output.csv`، آن را برای ما بارگذاری کنید.
## نمونه خروجی فایل `output.csv` (فقط سه خط اول به همراه نام ستون)
```
usability_score
5.64
9.853
6
```
<details class="yellow">
<summary>
**توجه**
</summary>
حتما فایل `output.csv` باید دارای ۵۰۸ سطر (بدون در نظر گرفتن `header`) و یک ستون باشد.
همچنین نام ستون بایستی بدون `space` در قبل و بعد از نام آن، باشد. در غیر این صورت، سیستم داوری نمرهای به شما نخواهد داد.
پیشبینیهای شما از `usability_score`ها، میتوانند به صورت عدد اعشاری نیز ارسال بشوند.
</details>
<details class="red">
<summary>
**هشدار 😱**
</summary>
فراموش نکنید که **قبل از پایان زمان مسابقه**، **بایستی** تمامی کدهای این مسابقه را از قسمت **بارگذاری کُد** برای ما ارسال کنید. در غیر این صورت، شما از این مسابقه، امتیازی کسب نمی کنید.
توجه داشته باشید که اگر از `jupter notebook` استفاده می کنید بایستی همانند توضیحات قسمت **بارگذاری کُد**، خروجی `.py` را دریافت و برای ارسال در نظر بگیرید. ارسال فایلهای `jupyter` همانند `.ipynb` مورد قبول واقع نخواهند شد.
</details>
مجموعه دادهای از مجموعه دادهها
در حالی که بسیاری از ما از ارتباط داشتن در فضای مجازی لذت میبریم، استفاده بیش از حد آن میتواند موجب تحریک احساساتی مانند اضطراب، افسردگی، انزوا و ترس جاماندن شود.
![توضیح تصویر](https://quera.org/qbox/view/EEQUjplPGh/Generica_odio_in_rete.jpg)
کاوان یک روانشناس است. او تعدادی از نظرات و کامنتهای فضای مجازی را استخراج کرده و برای هر نظر، ۱۰ ویژگی روانشناختی در نظر گرفته و به هر کدام از این ۱۰ ویژگی، از بین ۰ تا ۴ امتیاز داده است تا در نهایت میزان استرس و افسردگی هر فرد را بررسی کند؛ ولی این کار زمان زیادی از او میگیرد.
بنابراین او از شما میخواهد مدلی آموزش دهید که با توجه به محتوای متن، به هر کدام از ویژگیهای روانشناختی نمرهای بین ۰ تا ۴ اختصاص دهد.
# مجموعه داده
| مجموعه داده سوال را میتوانید از [این لینک](/contest/assignments/45363/download_problem_initial_project/157863/) دانلود کنید.|
| :--: |
هنگامی که این فایل را از حالت فشرده خارج کنید، فایل آموزش (`train.csv`) و آزمایش (`test.csv`) را مشاهده میکنید. فایل آموزش، دارای ساختار زیر است:
| نام ستون | توضیحات ستون |
|:----------:|:------------------:|
| text | نوشته هر شخص |
| sense | احساسات |
| honor | احترام |
| curse | توهین |
| despise | تحقیر |
| situation | وضعیت |
| antihuman | غیرانسانی |
| roughness | ناهنجاری |
| slaughter | نسلکشی |
| strike_support | حمله-حمایت |
| depression_rate | استرس |
عمده نظرات موجود در ستون `text` به زبان انگلیسی هستند؛ اما تعداد محدودی از نظرات وجود دارند که به زبانهای دیگر ثبت شدهاند. مدیریت این چالش بخشی از فرایند حل مسئله است.
همچنین تفاوت مجموعه داده آموزش با آزمایش در این است که مجموعه داده آزمایش، فقط ستون `text` دارند.
<details class="yellow">
<summary>
**توجه**
</summary>
مجموعه داده این سوال از توییتر انگلیسی استخراج شده است. بنابراین کوئرا **هیچ** نقشی در تولید داده این سوال نداشته است!
</details>
# صورت مسئله
با استفاده از مجموعه داده آموزش، مدلی توسعه دهید که به هر ویژگی روانشناختی متن، از ۰ تا ۴ امتیاز دهد.(اعداد میتوانند اعشاری باشند) **پس خروجی مسئله فقط یک عدد نیست!**، بلکه به ازای هر متن در مجموعه داده آزمایش، میبایست یک بردار ۱۰ تایی پیشبینی کنید.
نمونه خروجی مسئله را در بخشهای بعدی مشاهده خواهید کرد.
# ارزیابی
امتیاز نهایی مُدل شما تابعی از خطای جذر میانگین مربعات (RMSE) است. برای مطالعه بیشتر در مورد این خطا میتوانید به [ویکیپدیا](https://en.wikipedia.org/wiki/Root-mean-square_deviation) مراجعه کنید.
این خطا برای هر ستون حساب میشود و در نهایت میانگین RMSE برای همه ستون ها (MCRMSE) بدست میآید.
امتیاز نهایی مدل شما، طبق فرمول زیر محاسبه میشود:
$$score = (1.5 - MCRMSE) \times \frac{100}{150} \times 150$$
<details class="green">
<summary>
**توضیحات**
</summary>
یک تابع تصادفی یا تابعی که همیشه یک امتیاز ثابت را پیش بینی میکند، حداقل `RMSE` برابر با ۱.۵ برای مجموعه داده این سوال دارد. پس، مدلهایی که `RMSE` آنها ۱.۵ یا بزرگتر از آن باشد، به عنوان مدل مناسب این مسئله، مورد قبول قرار نمیگیرند و هرمدلی که چنین عملکردی را روی مجموعه داده آزمایش داشتهباشد، امتیازی از این سوال کسب نمیکند.
</details>
<details class="yellow">
<summary>
**توجه**
</summary>
لطفا در هنگام کار با این دادگان، به نکات زیر توجه داشته باشید:
+ مقدار `RMSE` مدل شما، تا سه رقم اعشار محاسبه (رُند) و در فرمول امتیازدهی بالا، قرار داده میشود.
+ این سوال، امتیاز منفی ندارد. حتی اگر `score` شما، منفی شود. از این سوال حداقل **صفر** امتیاز میگیرید. 😜
+ بیشترین امتیاز ممکن از این سوال ۱۵۰ و کمترین امتیاز ممکن، صفر است.
</details>
| **داوری این سوال قبل از پایان مسابقه، تنها بر اساس ۳۰ درصد از مجموعه داده آزمایش (`test`) خواهد بود. پس از اتمام مسابقه، برای بهروزرسانی نهایی جدول امتیازات، از ۱۰۰ درصد مجموعه داده آزمایش استفاده خواهد شد؛ این کار برای جلوگیری از بیشبرازش (`overfit`) روی مجموعه داده آزمایش انجام میشود.** |
| :--: |
# خروجی
پیشبینیهای مدل خود بر روی دادگان آزمایش (`test.csv`) را در فایلی با نام `output.csv` قرار دهید.
این فایل باید دارای ۱۰ ستون به اسم ویژگی ها باشد که ردیف i ام هر ستون ، پیشبینی شما (یک عدد بین ۰ تا ۴ با نهایتا ۳ رقم اعشار) برای نظر ردیف i ام از فایل `test.csv` باشد. بعد از آمادهسازی فایل `output.csv`، آن را برای ما بارگذاری کنید.
## نمونه خروجی فایل `output.csv` (فقط چهار خط اول به همراه نام ستون)
```
sense honor curse despise situation antihuman roughness slaughter strike_support depression_rate
3.4 3.0 2.0 2.0 4.0 2.0 0.1 2.9 3.0 4.0
3.0 3.1 3.5 2.5 2.4 2.0 1.0 3.0 2.0 2.1
3.0 2.3 1.0 1.0 2.0 1.1 3.0 2.0 1.9 3.0
4.0 4.0 4.0 3.0 3.0 3.0 1.0 4.0 4.0 1.0
```
<details class="yellow">
<summary>
**توجه**
</summary>
حتما فایل `output.csv` باید دارای ۱۷۵۴ سطر (بدون در نظر گرفتن `header`) و ۱۰ ستون باشد.
</details>
<details class="red">
<summary>
**هشدار 😱**
</summary>
فراموش نکنید که **قبل از پایان زمان مسابقه**، **بایستی** تمامی کدهای این مسابقه را از قسمت **بارگذاری کُد** برای ما ارسال کنید. در غیر این صورت، شما از این مسابقه، امتیازی کسب نمی کنید.
توجه داشته باشید که اگر از `jupter notebook` استفاده می کنید بایستی همانند توضیحات قسمت **بارگذاری کُد**، خروجی `.py` را دریافت و برای ارسال در نظر بگیرید. ارسال فایلهای `jupyter` همانند `.ipynb` مورد قبول واقع نخواهند شد.
</details>
روانشناسی سخن
به منظور جلوگیری از هر گونه تقلب و شبهه احتمالی که منجر به ضایع شدن حق شما شود، شما بایستی که فایل کد برنامهنویسی (مثلا برای پایتون فایل `.py` یا برای زبان `R` هم فایل `.R`) را در قالب یک فایل زیپ در اینجا بارگذاری نمایید. همچنین اگر که از ابزارهای نرمافزاری استفاده میکنید. خروجی (`export`) آن را در فایل زیپ قرار دهید.
### در صورتی که پس از پایان زمان مسابقه، این فایل توسط شما بارگذاری نشده باشد، شما از جدول مسابقات **حذف** خواهید شد.
توجه داشته باشید که اگر از `jupter notebook` استفاده می کنید بایستی همانند توضیح بالا، خروجی مورد نظر را دریافت کنید. به عنوان مثال، شما بایستی که از قسمت `file` و زیرقسمت `Download` خروجی `.py` را دریافت و برای ارسال در نظر بگیرید. ارسال فایلهای `jupyter` همانند `.ipynb` مورد قبول واقع نخواهند شد.
برای هر سوال که جواب دادید، یک فایل کد به نام آن سوال ایجاد و تمامی کدهای خود را در آن قرار دهید. در نهایت، همه فایلها را زیپ کرده و برای ما **فقط یک فایل زیپ** ارسال کنید.
| نمونه فایلی که بایستی در این سوال آپلود کنید را میتوانید از [این لینک](https://quera.org/qbox/view/xd4rx6JB8d/codecup7.zip) دانلود کنید.|
| :--: |
برای سوال «مسابقه کتابخوانی» یک فایل به اسم `mosabeghe_ketabkhani` ایجاد کنید.
برای سوال «شرکتهای جهانی» یک فایل به اسم `sherkathaye_jahani` ایجاد کنید.
برای سوال «مجموعه دادهای از مجموعه دادهها» یک فایل به اسم `majmooei_az_mojmooeha` ایجاد کنید.
برای سوال «روانشناسی سخن» یک فایل به اسم `ravanshenasi_sokhan` ایجاد کنید.
در نهایت چهار فایل `mosabeghe_ketabkhani` و `sherkathaye_jahani` و `majmooei_az_mojmooeha` و `ravanshenasi_sokhan` را زیپ کرده و فقط همان یک فایل زیپ را در این سوال آپلود کنید.
# توجه: از ارسال دادگان بپرهیزید!
با تشکر فراوان