+ محدودیت زمان: ۱ ثانیه
+ محدودیت حافظه: ۲۵۶ مگابایت
# پیشبینی Close با استفاده از مدل Random Forest و استخراج ویژگیهای پیشرفته
تیم تحلیل دادههای شما به دنبال ارتقای مدلهای پیشبینی قیمت است. پس از استفاده از مدلهای ساده مانند رگرسیون خطی، اکنون میخواهند با بهرهگیری از تکنیکهای پیشرفته یادگیری ماشین، عملکرد بهتری به دست آورند. مدیر تیم پیشنهاد داده است که به جای استفاده از تنها ویژگیهای اولیه (Open، High، Low، Close)، ابتدا ویژگیهای تکنیکال زیر را استخراج کنید:
+ **SMA3**: میانگین متحرک ۳ روزه Close
+ **SMA5**: میانگین متحرک ۵ روزه Close
+ **RSI**: شاخص قدرت نسبی با دوره ۳ روز (برای سادگی در نمونههای کوچک)
سپس با استفاده از این ویژگیهای استخراج شده به همراه مقادیر اصلی (Open، High، Low و Close)، یک مدل **Random Forest Regressor** آموزش دهید تا بتوانید مقدار **Close روز بعد** را پیشبینی کنید. برای هر نمونه آموزشی، ویژگیهای روز $i$ (شامل ۷ ویژگی فوق) به عنوان **ورودی** و مقدار **Close روز $i+1$** به عنوان **هدف (Target)** در نظر گرفته میشود. پس از آموزش مدل با دادههای موجود (به جز سطر آخر)، با استفاده از ویژگیهای سطر آخر، مقدار **Close روز بعد** پیشبینی شده و چاپ میشود.
## ورودی
ورودی از طریق **STDIN** دریافت میشود.
+ اولین خط شامل سطر عنوان (**Header**) فایل CSV است.
+ هر خط بعدی شامل پنج فیلد به ترتیب زیر است:
```
Date,Open,High,Low,Close
```
+ **Date**: فرمت YYYY-MM-DD
+ **Open**: قیمت باز شدن
+ **High**: بیشترین قیمت
+ **Low**: کمترین قیمت
+ **Close**: قیمت بسته شدن
## خروجی
خروجی شامل یک عدد است که مقدار پیشبینیشدهی **Close روز بعد** را نشان میدهد. این عدد باید **به دو رقم اعشار** گرد شود.
## مثالها
دریافت دیتا ست جهت [استفاده](https://drive.google.com/file/d/19TIXh1snPhK2qZSutW2n0MIHWmT9NTvX/view?usp=sharing)
### ورودی نمونه ۱
```
Date,Open,High,Low,Close
2025-01-01,100,110,90,105
2025-01-02,105,115,95,110
2025-01-03,110,120,100,115
2025-01-04,115,125,105,120
2025-01-05,120,130,110,125
2025-01-06,125,135,115,130
2025-01-07,130,140,120,135
2025-01-08,135,145,125,140
```
### خروجی نمونه ۱
```
145.00
```
## توضیح نمونه
در این نمونه، با استفاده از دادههای موجود (پس از محاسبه ویژگیهای **SMA3**، **SMA5** و **RSI** با دوره ۳)، نمونههای آموزشی از ردیفهایی که دارای همه ویژگیها هستند (مثلاً از سطر ۴ به بعد) تشکیل میشوند. مدل **Random Forest** با استفاده از دادههای **ردیف ۱ تا ۷** (به عنوان نمونههای آموزشی با هدف **Close روز بعد**) آموزش مییابد و سپس با استفاده از ویژگیهای **ردیف ۸**، مقدار **Close روز بعد** پیشبینی میشود.
> **توجه**: مقدار خروجی نمونه صرفاً جهت نمایش فرمت است؛ مقدار واقعی برحسب دادههای آموزشی و مدل ممکن است متفاوت باشد.
### نحوه ارسال
شما باید کد یادگاری ماشین خود را پیاده سازی کنید و پس از چاپ خروجی آن را پرینت کنید سپس بقیه کد را کامنت کنید. دقت کنید داده ورودی شما همان فایل csv است که آن را دریافت کردید.
برای مثال اگر خروجی شما ۱۳۴.۳۰ باشد:
...
# import numpy as np
# import matplotlib.pyplot as plt
# from sklearn.linear_model import LinearRegression
# from sklearn.model_selection import train_test_split
# from sklearn.metrics import mean_squared_error
# # دادههای نمونهای
# X = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]).reshape(-1, 1)
# y = np.array([2.2, 2.8, 3.6, 4.5, 5.1, 5.9, 6.8, 7.4, 8.9, 9.2])
# # تقسیم دادهها به دو مجموعهی آموزش و آزمون
# X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# # ایجاد مدل رگرسیون خطی
# model = LinearRegression()
# # آموزش مدل
# model.fit(X_train, y_train)
# # پیشبینی مقادیر خروجی
# y_pred = model.predict(X_test)
# # ارزیابی مدل
# mse = mean_squared_error(y_test, y_pred)
# print(f'Mean Squared Error: {mse}')
# # نمایش نمودار
# plt.scatter(X, y, color='blue', label='Actual Data')
# plt.plot(X, model.predict(X), color='red', label='Regression Line')
# plt.xlabel('X')
# plt.ylabel('y')
# plt.legend()
# plt.show()
print(134.30) ...
`
سوال دهم
- محدودیت زمان: ۱ ثانیه
- محدودیت حافظه: ۲۵۶ مگابایت
پیشبینی Close با استفاده از مدل Random Forest و استخراج ویژگیهای پیشرفته🔗
تیم تحلیل دادههای شما به دنبال ارتقای مدلهای پیشبینی قیمت است. پس از استفاده از مدلهای ساده مانند رگرسیون خطی، اکنون میخواهند با بهرهگیری از تکنیکهای پیشرفته یادگیری ماشین، عملکرد بهتری به دست آورند. مدیر تیم پیشنهاد داده است که به جای استفاده از تنها ویژگیهای اولیه (Open، High، Low، Close)، ابتدا ویژگیهای تکنیکال زیر را استخراج کنید:
- SMA3: میانگین متحرک ۳ روزه Close
- SMA5: میانگین متحرک ۵ روزه Close
- RSI: شاخص قدرت نسبی با دوره ۳ روز (برای سادگی در نمونههای کوچک)
سپس با استفاده از این ویژگیهای استخراج شده به همراه مقادیر اصلی (Open، High، Low و Close)، یک مدل Random Forest Regressor آموزش دهید تا بتوانید مقدار Close روز بعد را پیشبینی کنید. برای هر نمونه آموزشی، ویژگیهای روز i (شامل ۷ ویژگی فوق) به عنوان ورودی و مقدار Close روز i+1 به عنوان هدف (Target) در نظر گرفته میشود. پس از آموزش مدل با دادههای موجود (به جز سطر آخر)، با استفاده از ویژگیهای سطر آخر، مقدار Close روز بعد پیشبینی شده و چاپ میشود.
ورودی🔗
ورودی از طریق STDIN دریافت میشود.
خروجی🔗
خروجی شامل یک عدد است که مقدار پیشبینیشدهی Close روز بعد را نشان میدهد. این عدد باید به دو رقم اعشار گرد شود.
مثالها🔗
دریافت دیتا ست جهت استفاده
ورودی نمونه ۱🔗
خروجی نمونه ۱🔗
توضیح نمونه🔗
در این نمونه، با استفاده از دادههای موجود (پس از محاسبه ویژگیهای SMA3، SMA5 و RSI با دوره ۳)، نمونههای آموزشی از ردیفهایی که دارای همه ویژگیها هستند (مثلاً از سطر ۴ به بعد) تشکیل میشوند. مدل Random Forest با استفاده از دادههای ردیف ۱ تا ۷ (به عنوان نمونههای آموزشی با هدف Close روز بعد) آموزش مییابد و سپس با استفاده از ویژگیهای ردیف ۸، مقدار Close روز بعد پیشبینی میشود.
توجه: مقدار خروجی نمونه صرفاً جهت نمایش فرمت است؛ مقدار واقعی برحسب دادههای آموزشی و مدل ممکن است متفاوت باشد.
نحوه ارسال🔗
شما باید کد یادگاری ماشین خود را پیاده سازی کنید و پس از چاپ خروجی آن را پرینت کنید سپس بقیه کد را کامنت کنید. دقت کنید داده ورودی شما همان فایل csv است که آن را دریافت کردید.
برای مثال اگر خروجی شما ۱۳۴.۳۰ باشد:
`
ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.