You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ML-For-Beginners/translations/bn/2-Regression/1-Tools/solution/R/lesson_1-R.ipynb

448 lines
28 KiB

{
"nbformat": 4,
"nbformat_minor": 2,
"metadata": {
"colab": {
"name": "lesson_1-R.ipynb",
"provenance": [],
"collapsed_sections": [],
"toc_visible": true
},
"kernelspec": {
"name": "ir",
"display_name": "R"
},
"language_info": {
"name": "R"
},
"coopTranslator": {
"original_hash": "c18d3bd0bd8ae3878597e89dcd1fa5c1",
"translation_date": "2025-08-29T23:07:26+00:00",
"source_file": "2-Regression/1-Tools/solution/R/lesson_1-R.ipynb",
"language_code": "bn"
}
},
"cells": [
{
"cell_type": "markdown",
"source": [],
"metadata": {
"id": "YJUHCXqK57yz"
}
},
{
"cell_type": "markdown",
"source": [
"## রিগ্রেশন পরিচিতি - পাঠ ১\n",
"\n",
"#### বিষয়টি বুঝে নেওয়া\n",
"\n",
"✅ রিগ্রেশনের অনেক ধরণ রয়েছে, এবং আপনি কোনটি বেছে নেবেন তা নির্ভর করে আপনার প্রশ্নের উত্তর কী হতে পারে তার উপর। যদি আপনি কোনো নির্দিষ্ট বয়সের ব্যক্তির সম্ভাব্য উচ্চতা পূর্বানুমান করতে চান, তাহলে আপনি `লিনিয়ার রিগ্রেশন` ব্যবহার করবেন, কারণ আপনি একটি **সংখ্যামূলক মান** খুঁজছেন। যদি আপনি জানতে চান কোনো খাবারকে ভেগান হিসেবে বিবেচনা করা উচিত কিনা, তাহলে আপনি একটি **শ্রেণী নির্ধারণ** খুঁজছেন, সেক্ষেত্রে আপনি `লজিস্টিক রিগ্রেশন` ব্যবহার করবেন। আপনি পরে লজিস্টিক রিগ্রেশন সম্পর্কে আরও শিখবেন। ডেটা থেকে কিছু প্রশ্ন করার কথা ভাবুন এবং কোন পদ্ধতিটি বেশি উপযুক্ত হবে তা নির্ধারণ করুন।\n",
"\n",
"এই অংশে, আপনি [ডায়াবেটিস সম্পর্কিত একটি ছোট ডেটাসেট](https://www4.stat.ncsu.edu/~boos/var.select/diabetes.html) নিয়ে কাজ করবেন। কল্পনা করুন যে আপনি ডায়াবেটিস রোগীদের জন্য একটি চিকিৎসা পরীক্ষা করতে চান। মেশিন লার্নিং মডেলগুলো আপনাকে সাহায্য করতে পারে কোন রোগী চিকিৎসায় ভালো সাড়া দেবে তা নির্ধারণ করতে, বিভিন্ন ভেরিয়েবলের সংমিশ্রণের উপর ভিত্তি করে। এমনকি একটি খুব সাধারণ রিগ্রেশন মডেল, যখন ভিজুয়ালাইজ করা হয়, তখন এমন তথ্য দেখাতে পারে যা আপনাকে তাত্ত্বিক ক্লিনিকাল ট্রায়ালগুলো সংগঠিত করতে সাহায্য করবে।\n",
"\n",
"তাহলে, চলুন এই কাজটি শুরু করা যাক!\n",
"\n",
"<p >\n",
" <img src=\"../../images/encouRage.jpg\"\n",
" width=\"630\"/>\n",
" <figcaption>চিত্রকর্ম: @allison_horst</figcaption>\n",
"\n",
"<!--![চিত্রকর্ম: \\@allison_horst](../../../../../../translated_images/encouRage.e75d5fe0367fb9136b78104baf4e2032a7622bc42a2bc34c0ad36c294eeb83f5.bn.jpg)<br>চিত্রকর্ম: @allison_horst-->\n"
],
"metadata": {
"id": "LWNNzfqd6feZ"
}
},
{
"cell_type": "markdown",
"source": [
"## 1. আমাদের টুল সেট লোড করা\n",
"\n",
"এই কাজের জন্য, আমাদের নিম্নলিখিত প্যাকেজগুলো প্রয়োজন হবে:\n",
"\n",
"- `tidyverse`: [tidyverse](https://www.tidyverse.org/) হলো একটি [R প্যাকেজের সংগ্রহ](https://www.tidyverse.org/packages) যা ডেটা সায়েন্সকে দ্রুত, সহজ এবং আরও মজাদার করে তোলে!\n",
"\n",
"- `tidymodels`: [tidymodels](https://www.tidymodels.org/) ফ্রেমওয়ার্ক হলো মডেলিং এবং মেশিন লার্নিংয়ের জন্য একটি [প্যাকেজের সংগ্রহ](https://www.tidymodels.org/packages/)।\n",
"\n",
"আপনি এগুলো নিম্নলিখিতভাবে ইনস্টল করতে পারেন:\n",
"\n",
"`install.packages(c(\"tidyverse\", \"tidymodels\"))`\n",
"\n",
"নিচের স্ক্রিপ্টটি পরীক্ষা করে দেখবে যে আপনার এই মডিউল সম্পন্ন করার জন্য প্রয়োজনীয় প্যাকেজগুলো আছে কিনা এবং যদি কিছু প্যাকেজ অনুপস্থিত থাকে তবে সেগুলো আপনার জন্য ইনস্টল করবে।\n"
],
"metadata": {
"id": "FIo2YhO26wI9"
}
},
{
"cell_type": "code",
"execution_count": 2,
"source": [
"suppressWarnings(if(!require(\"pacman\")) install.packages(\"pacman\"))\n",
"pacman::p_load(tidyverse, tidymodels)"
],
"outputs": [
{
"output_type": "stream",
"name": "stderr",
"text": [
"Loading required package: pacman\n",
"\n"
]
}
],
"metadata": {
"id": "cIA9fz9v7Dss",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "2df7073b-86b2-4b32-cb86-0da605a0dc11"
}
},
{
"cell_type": "markdown",
"source": [
"এখন, চলুন এই চমৎকার প্যাকেজগুলো লোড করি এবং সেগুলোকে আমাদের বর্তমান R সেশনে উপলব্ধ করি। (এটি শুধুমাত্র উদাহরণের জন্য, `pacman::p_load()` ইতিমধ্যেই আপনার জন্য এটি করেছে)\n"
],
"metadata": {
"id": "gpO_P_6f9WUG"
}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"# load the core Tidyverse packages\r\n",
"library(tidyverse)\r\n",
"\r\n",
"# load the core Tidymodels packages\r\n",
"library(tidymodels)\r\n"
],
"outputs": [],
"metadata": {
"id": "NLMycgG-9ezO"
}
},
{
"cell_type": "markdown",
"source": [
"## ২. ডায়াবেটিস ডেটাসেট\n",
"\n",
"এই অনুশীলনে, আমরা ডায়াবেটিস ডেটাসেটের উপর পূর্বাভাস তৈরি করে আমাদের রিগ্রেশন দক্ষতা প্রদর্শন করব। [ডায়াবেটিস ডেটাসেট](https://www4.stat.ncsu.edu/~boos/var.select/diabetes.rwrite1.txt)-এ ডায়াবেটিস সম্পর্কিত `৪৪২টি নমুনা` রয়েছে, যেখানে ১০টি পূর্বাভাসকারী ফিচার ভেরিয়েবল রয়েছে: `বয়স`, `লিঙ্গ`, `বডি মাস ইনডেক্স`, `গড় রক্তচাপ`, এবং `ছয়টি রক্তের সিরাম পরিমাপ`। এছাড়াও একটি আউটকাম ভেরিয়েবল `y` রয়েছে: যা বেসলাইন থেকে এক বছর পর রোগের অগ্রগতির একটি পরিমাণগত পরিমাপ।\n",
"\n",
"|পর্যবেক্ষণের সংখ্যা|৪৪২|\n",
"|-------------------|:---|\n",
"|পূর্বাভাসকারীর সংখ্যা|প্রথম ১০টি কলাম সংখ্যাসূচক পূর্বাভাসকারী|\n",
"|আউটকাম/টার্গেট|১১তম কলাম বেসলাইন থেকে এক বছর পর রোগের অগ্রগতির একটি পরিমাণগত পরিমাপ|\n",
"|পূর্বাভাসকারীর তথ্য|- বয়স (বছরে)\n",
"||- লিঙ্গ\n",
"||- bmi বডি মাস ইনডেক্স\n",
"||- bp গড় রক্তচাপ\n",
"||- s1 tc, মোট সিরাম কোলেস্টেরল\n",
"||- s2 ldl, লো-ডেনসিটি লিপোপ্রোটিন\n",
"||- s3 hdl, হাই-ডেনসিটি লিপোপ্রোটিন\n",
"||- s4 tch, মোট কোলেস্টেরল / HDL\n",
"||- s5 ltg, সম্ভবত সিরাম ট্রাইগ্লিসারাইডের লগ স্তর\n",
"||- s6 glu, রক্তে শর্করার স্তর|\n",
"\n",
"> 🎓 মনে রাখবেন, এটি সুপারভাইজড লার্নিং, এবং আমাদের একটি নামকৃত 'y' টার্গেট প্রয়োজন।\n",
"\n",
"আপনি R দিয়ে ডেটা ম্যানিপুলেট করার আগে, আপনাকে ডেটা R-এর মেমরিতে ইমপোর্ট করতে হবে, অথবা ডেটার সাথে সংযোগ তৈরি করতে হবে যাতে R দূরবর্তীভাবে ডেটা অ্যাক্সেস করতে পারে।\n",
"\n",
"> [readr](https://readr.tidyverse.org/) প্যাকেজ, যা Tidyverse-এর অংশ, দ্রুত এবং সহজ উপায়ে আয়তাকার ডেটা R-এ পড়ার জন্য একটি বন্ধুত্বপূর্ণ পদ্ধতি প্রদান করে।\n",
"\n",
"এখন, এই সোর্স URL থেকে ডায়াবেটিস ডেটাসেট লোড করি: <https://www4.stat.ncsu.edu/~boos/var.select/diabetes.html>\n",
"\n",
"এছাড়াও, আমরা আমাদের ডেটার উপর একটি স্যানিটি চেক করব `glimpse()` ব্যবহার করে এবং প্রথম ৫টি সারি প্রদর্শন করব `slice()` দিয়ে।\n",
"\n",
"আরো এগোনোর আগে, চলুন এমন একটি বিষয় পরিচয় করিয়ে দিই যা আপনি R কোডে প্রায়ই দেখবেন 🥁🥁: পাইপ অপারেটর `%>%`\n",
"\n",
"পাইপ অপারেটর (`%>%`) একটি বস্তুকে একটি ফাংশন বা কল এক্সপ্রেশনে ফরোয়ার্ড পাস করে যৌক্তিক ক্রমে অপারেশন সম্পাদন করে। আপনি পাইপ অপারেটরকে আপনার কোডে \"এবং তারপর\" বলার মতো ভাবতে পারেন।\n"
],
"metadata": {
"id": "KM6iXLH996Cl"
}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"# Import the data set\r\n",
"diabetes <- read_table2(file = \"https://www4.stat.ncsu.edu/~boos/var.select/diabetes.rwrite1.txt\")\r\n",
"\r\n",
"\r\n",
"# Get a glimpse and dimensions of the data\r\n",
"glimpse(diabetes)\r\n",
"\r\n",
"\r\n",
"# Select the first 5 rows of the data\r\n",
"diabetes %>% \r\n",
" slice(1:5)"
],
"outputs": [],
"metadata": {
"id": "Z1geAMhM-bSP"
}
},
{
"cell_type": "markdown",
"source": [
"`glimpse()` আমাদের দেখায় যে এই ডেটাসেটে ৪৪২টি সারি এবং ১১টি কলাম রয়েছে, যেখানে সব কলামের ডেটা টাইপ `double`।\n",
"\n",
"<br>\n",
"\n",
"> glimpse() এবং slice() হলো [`dplyr`](https://dplyr.tidyverse.org/) প্যাকেজের ফাংশন। Dplyr, যা Tidyverse-এর অংশ, একটি ডেটা ম্যানিপুলেশনের ব্যাকরণ যা একটি সুনির্দিষ্ট সেটের ক্রিয়াপদ সরবরাহ করে, যা আপনাকে সবচেয়ে সাধারণ ডেটা ম্যানিপুলেশনের চ্যালেঞ্জগুলি সমাধান করতে সাহায্য করে।\n",
"\n",
"<br>\n",
"\n",
"এখন যেহেতু আমাদের কাছে ডেটা রয়েছে, আসুন এই অনুশীলনের জন্য একটি নির্দিষ্ট ফিচার (`bmi`) বেছে নিই। এর জন্য আমাদের প্রয়োজনীয় কলামগুলো নির্বাচন করতে হবে। তাহলে, আমরা কীভাবে এটি করব?\n",
"\n",
"[`dplyr::select()`](https://dplyr.tidyverse.org/reference/select.html) আমাদের একটি ডেটা ফ্রেম থেকে কলাম *নির্বাচন* (এবং প্রয়োজনে পুনঃনামকরণ) করার সুযোগ দেয়।\n"
],
"metadata": {
"id": "UwjVT1Hz-c3Z"
}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"# Select predictor feature `bmi` and outcome `y`\r\n",
"diabetes_select <- diabetes %>% \r\n",
" select(c(bmi, y))\r\n",
"\r\n",
"# Print the first 5 rows\r\n",
"diabetes_select %>% \r\n",
" slice(1:10)"
],
"outputs": [],
"metadata": {
"id": "RDY1oAKI-m80"
}
},
{
"cell_type": "markdown",
"source": [
"## ৩. প্রশিক্ষণ এবং পরীক্ষার ডেটা\n",
"\n",
"সুপারভাইজড লার্নিং-এ সাধারণত ডেটাকে দুইটি উপসেটে ভাগ করা হয়; একটি (সাধারণত বড়) সেট দিয়ে মডেল প্রশিক্ষণ দেওয়া হয়, এবং একটি ছোট \"হোল্ড-ব্যাক\" সেট দিয়ে দেখা হয় মডেলটি কেমন কাজ করেছে।\n",
"\n",
"এখন যেহেতু আমাদের ডেটা প্রস্তুত, আমরা দেখতে পারি একটি মেশিন এই ডেটাসেটে সংখ্যাগুলোর মধ্যে একটি যৌক্তিক বিভাজন নির্ধারণ করতে সাহায্য করতে পারে কিনা। আমরা [rsample](https://tidymodels.github.io/rsample/) প্যাকেজটি ব্যবহার করতে পারি, যা Tidymodels ফ্রেমওয়ার্কের অংশ, একটি অবজেক্ট তৈরি করতে যা ডেটা কীভাবে ভাগ করা হবে তার তথ্য ধারণ করে। এরপর, তৈরি করা প্রশিক্ষণ এবং পরীক্ষার সেটগুলো বের করতে আরও দুটি rsample ফাংশন ব্যবহার করা যায়:\n"
],
"metadata": {
"id": "SDk668xK-tc3"
}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"set.seed(2056)\r\n",
"# Split 67% of the data for training and the rest for tesing\r\n",
"diabetes_split <- diabetes_select %>% \r\n",
" initial_split(prop = 0.67)\r\n",
"\r\n",
"# Extract the resulting train and test sets\r\n",
"diabetes_train <- training(diabetes_split)\r\n",
"diabetes_test <- testing(diabetes_split)\r\n",
"\r\n",
"# Print the first 3 rows of the training set\r\n",
"diabetes_train %>% \r\n",
" slice(1:10)"
],
"outputs": [],
"metadata": {
"id": "EqtHx129-1h-"
}
},
{
"cell_type": "markdown",
"source": [
"## 4. Tidymodels ব্যবহার করে একটি লিনিয়ার রিগ্রেশন মডেল প্রশিক্ষণ দিন\n",
"\n",
"এখন আমরা আমাদের মডেল প্রশিক্ষণের জন্য প্রস্তুত!\n",
"\n",
"Tidymodels-এ, আপনি `parsnip()` ব্যবহার করে তিনটি ধারণা নির্ধারণ করে মডেল তৈরি করেন:\n",
"\n",
"- মডেলের **ধরন** বিভিন্ন মডেল যেমন লিনিয়ার রিগ্রেশন, লজিস্টিক রিগ্রেশন, ডিসিশন ট্রি মডেল ইত্যাদি আলাদা করে।\n",
"\n",
"- মডেলের **মোড** সাধারণ বিকল্প যেমন রিগ্রেশন এবং ক্লাসিফিকেশন অন্তর্ভুক্ত করে; কিছু মডেল ধরন উভয় মোড সমর্থন করে, আবার কিছু শুধুমাত্র একটি মোড সমর্থন করে।\n",
"\n",
"- মডেলের **ইঞ্জিন** হলো সেই গণনামূলক টুল যা মডেল ফিট করার জন্য ব্যবহৃত হবে। প্রায়ই এগুলো R প্যাকেজ হয়, যেমন **`\"lm\"`** বা **`\"ranger\"`**\n",
"\n",
"এই মডেলিং তথ্য একটি মডেল স্পেসিফিকেশনে ধারণ করা হয়, তাই চলুন একটি তৈরি করি!\n"
],
"metadata": {
"id": "sBOS-XhB-6v7"
}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"# Build a linear model specification\r\n",
"lm_spec <- \r\n",
" # Type\r\n",
" linear_reg() %>% \r\n",
" # Engine\r\n",
" set_engine(\"lm\") %>% \r\n",
" # Mode\r\n",
" set_mode(\"regression\")\r\n",
"\r\n",
"\r\n",
"# Print the model specification\r\n",
"lm_spec"
],
"outputs": [],
"metadata": {
"id": "20OwEw20--t3"
}
},
{
"cell_type": "markdown",
"source": [
"একটি মডেল *নির্ধারণ* করার পর, মডেলটি [`fit()`](https://parsnip.tidymodels.org/reference/fit.html) ফাংশন ব্যবহার করে `অনুমান` বা `প্রশিক্ষণ` করা যেতে পারে, সাধারণত একটি ফর্মুলা এবং কিছু ডেটা ব্যবহার করে।\n",
"\n",
"`y ~ .` এর অর্থ হলো আমরা `y`-কে পূর্বাভাসিত পরিমাণ/লক্ষ্য হিসেবে ফিট করব, যা সমস্ত পূর্বাভাসকারী/বৈশিষ্ট্য দ্বারা ব্যাখ্যাত হবে অর্থাৎ, `.` (এই ক্ষেত্রে, আমাদের কাছে শুধুমাত্র একটি পূর্বাভাসকারী আছে: `bmi`)\n"
],
"metadata": {
"id": "_oDHs89k_CJj"
}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"# Build a linear model specification\r\n",
"lm_spec <- linear_reg() %>% \r\n",
" set_engine(\"lm\") %>%\r\n",
" set_mode(\"regression\")\r\n",
"\r\n",
"\r\n",
"# Train a linear regression model\r\n",
"lm_mod <- lm_spec %>% \r\n",
" fit(y ~ ., data = diabetes_train)\r\n",
"\r\n",
"# Print the model\r\n",
"lm_mod"
],
"outputs": [],
"metadata": {
"id": "YlsHqd-q_GJQ"
}
},
{
"cell_type": "markdown",
"source": [
"মডেলের আউটপুট থেকে আমরা প্রশিক্ষণের সময় শেখা কোয়েফিসিয়েন্টগুলো দেখতে পারি। এগুলো হলো সেরা ফিট লাইনের কোয়েফিসিয়েন্ট, যা আমাদের প্রকৃত এবং পূর্বাভাসিত ভেরিয়েবলের মধ্যে সামগ্রিক ত্রুটি সর্বনিম্ন করে।\n",
"\n",
"<br>\n",
"\n",
"## ৫. টেস্ট সেটে পূর্বাভাস তৈরি করুন\n",
"\n",
"এখন যেহেতু আমরা একটি মডেল প্রশিক্ষণ করেছি, আমরা এটি ব্যবহার করে টেস্ট ডেটাসেটের জন্য রোগের অগ্রগতি y পূর্বাভাস করতে পারি [parsnip::predict()](https://parsnip.tidymodels.org/reference/predict.model_fit.html) ব্যবহার করে। এটি ডেটা গ্রুপগুলোর মধ্যে লাইন আঁকার জন্য ব্যবহৃত হবে।\n"
],
"metadata": {
"id": "kGZ22RQj_Olu"
}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"# Make predictions for the test set\r\n",
"predictions <- lm_mod %>% \r\n",
" predict(new_data = diabetes_test)\r\n",
"\r\n",
"# Print out some of the predictions\r\n",
"predictions %>% \r\n",
" slice(1:5)"
],
"outputs": [],
"metadata": {
"id": "nXHbY7M2_aao"
}
},
{
"cell_type": "markdown",
"source": [
"ইয়াহু! 💃🕺 আমরা একটি মডেল প্রশিক্ষণ করেছি এবং এটি ব্যবহার করে পূর্বাভাস তৈরি করেছি!\n",
"\n",
"পূর্বাভাস তৈরি করার সময়, tidymodels এর নিয়ম হলো সবসময় একটি টিবল/ডেটা ফ্রেম তৈরি করা যেখানে ফলাফলের জন্য মানসম্মত কলামের নাম থাকে। এটি মূল ডেটা এবং পূর্বাভাসগুলোকে একত্রিত করে একটি ব্যবহারযোগ্য ফরম্যাটে পরবর্তী কাজের জন্য যেমন প্লটিং-এর জন্য সহজ করে তোলে।\n",
"\n",
"`dplyr::bind_cols()` দক্ষতার সাথে একাধিক ডেটা ফ্রেমের কলাম একত্রিত করে।\n"
],
"metadata": {
"id": "R_JstwUY_bIs"
}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"# Combine the predictions and the original test set\r\n",
"results <- diabetes_test %>% \r\n",
" bind_cols(predictions)\r\n",
"\r\n",
"\r\n",
"results %>% \r\n",
" slice(1:5)"
],
"outputs": [],
"metadata": {
"id": "RybsMJR7_iI8"
}
},
{
"cell_type": "markdown",
"source": [
"## ৬. মডেলিং ফলাফল চিত্রায়িত করা\n",
"\n",
"এখন, এটি ভিজ্যুয়ালি দেখার সময় 📈। আমরা টেস্ট সেটের সমস্ত `y` এবং `bmi` মানের একটি স্ক্যাটার প্লট তৈরি করব, তারপর পূর্বাভাস ব্যবহার করে মডেলের ডেটা গ্রুপিংয়ের মধ্যে সবচেয়ে উপযুক্ত স্থানে একটি রেখা আঁকব।\n",
"\n",
"R-এ গ্রাফ তৈরির জন্য বেশ কয়েকটি সিস্টেম রয়েছে, তবে `ggplot2` সবচেয়ে সুন্দর এবং সবচেয়ে বহুমুখী। এটি আপনাকে **স্বতন্ত্র উপাদানগুলো একত্রিত করে** গ্রাফ তৈরি করতে দেয়।\n"
],
"metadata": {
"id": "XJbYbMZW_n_s"
}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"# Set a theme for the plot\r\n",
"theme_set(theme_light())\r\n",
"# Create a scatter plot\r\n",
"results %>% \r\n",
" ggplot(aes(x = bmi)) +\r\n",
" # Add a scatter plot\r\n",
" geom_point(aes(y = y), size = 1.6) +\r\n",
" # Add a line plot\r\n",
" geom_line(aes(y = .pred), color = \"blue\", size = 1.5)"
],
"outputs": [],
"metadata": {
"id": "R9tYp3VW_sTn"
}
},
{
"cell_type": "markdown",
"source": [
"✅ এখানে কী ঘটছে তা একটু ভাবুন। একটি সরল রেখা অনেক ছোট ছোট ডেটা বিন্দুর মধ্য দিয়ে যাচ্ছে, কিন্তু এটি ঠিক কী করছে? আপনি কি দেখতে পাচ্ছেন যে এই রেখাটি ব্যবহার করে কীভাবে একটি নতুন, অদেখা ডেটা পয়েন্টের অবস্থান প্লটের y অক্ষের সাথে সম্পর্কিতভাবে পূর্বাভাস করা উচিত? এই মডেলের ব্যবহারিক দিকটি শব্দে প্রকাশ করার চেষ্টা করুন।\n",
"\n",
"অভিনন্দন, আপনি আপনার প্রথম লিনিয়ার রিগ্রেশন মডেল তৈরি করেছেন, এর মাধ্যমে একটি পূর্বাভাস তৈরি করেছেন এবং এটি একটি প্লটে প্রদর্শন করেছেন!\n"
],
"metadata": {
"id": "zrPtHIxx_tNI"
}
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n---\n\n**অস্বীকৃতি**: \nএই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিক অনুবাদ প্রদানের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা তার জন্য দায়বদ্ধ থাকব না।\n"
]
}
]
}