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/my/2-Regression/1-Tools/solution/R/lesson_1-R.ipynb

447 lines
32 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-09-06T11:50:45+00:00",
"source_file": "2-Regression/1-Tools/solution/R/lesson_1-R.ipynb",
"language_code": "my"
}
},
"cells": [
{
"cell_type": "markdown",
"source": [],
"metadata": {
"id": "YJUHCXqK57yz"
}
},
{
"cell_type": "markdown",
"source": [
"## ရေဂရက်ရှင်းကို နားလည်ခြင်း - ပထမပိုင်း သင်ခန်းစာ\n",
"\n",
"#### အခြေအနေကို နားလည်ခြင်း\n",
"\n",
"✅ ရေဂရက်ရှင်းနည်းလမ်းအမျိုးမျိုး ရှိပြီး သင်ရွေးချယ်မည့်နည်းလမ်းသည် သင်လိုချင်သော အဖြေကို မူတည်ပါသည်။ ဥပမာအားဖြင့် သတ်မှတ်အသက်ရှိသူတစ်ဦး၏ အမြင့်ကို ခန့်မှန်းလိုပါက သင်သည် **ဂဏန်းတန်ဖိုး** ရှာဖွေလိုသောကြောင့် `linear regression` ကို အသုံးပြုမည်ဖြစ်သည်။ သို့သော် အစားအစာအမျိုးအစားတစ်ခုကို သက်သေရှင်းလင်းစွာ သက်သေပြ၍ vegan ဟုတ်မဟုတ်ကို သတ်မှတ်လိုပါက သင်သည် **အမျိုးအစားခွဲခြားမှု** ရှာဖွေလိုသောကြောင့် `logistic regression` ကို အသုံးပြုမည်ဖြစ်သည်။ Logistic regression အကြောင်းကို နောက်ပိုင်းတွင် ပိုမိုလေ့လာနိုင်ပါမည်။ ဒေတာမှ မေးခွန်းတစ်ချို့ကို မေးနိုင်မည့်အကြောင်းနှင့် အထိုက်အလျောက် နည်းလမ်းများကို သုံးသင့်မည်ကို စဉ်းစားကြည့်ပါ။\n",
"\n",
"ဤအပိုင်းတွင် သင်သည် [ဆေးချိုရောဂါဆိုင်ရာ ဒေတာအနည်းငယ်](https://www4.stat.ncsu.edu/~boos/var.select/diabetes.html) နှင့် အလုပ်လုပ်မည်ဖြစ်သည်။ ဆေးချိုရောဂါရှိသူများအတွက် ကုသမှုတစ်ခုကို စမ်းသပ်လိုကြောင်း စဉ်းစားကြည့်ပါ။ Machine Learning မော်ဒယ်များက မျိုးစုံသော အချက်အလက်ပေါင်းစပ်မှုများအပေါ် မူတည်၍ ဘယ်သူတွေက ကုသမှုကို ပိုမိုတုံ့ပြန်နိုင်မည်ကို သတ်မှတ်ရန် ကူညီနိုင်ပါသည်။ ရိုးရှင်းသော ရေဂရက်ရှင်းမော်ဒယ်တစ်ခုတောင် visualization ပြုလုပ်ပါက သင်၏ သီအိုရီဆိုင်ရာ ဆေးဘက်ဆိုင်ရာ စမ်းသပ်မှုများကို စီမံခန့်ခွဲရန် အထောက်အကူဖြစ်စေမည့် အချက်အလက်များကို ပြသနိုင်ပါသည်။\n",
"\n",
"ဒါဆိုရင် ဒီအလုပ်ကို စတင်လိုက်ကြစို့!\n",
"\n",
"<p >\n",
" <img src=\"../../images/encouRage.jpg\"\n",
" width=\"630\"/>\n",
" <figcaption>ပန်းချီရေးဆွဲသူ - @allison_horst</figcaption>\n",
"\n",
"<!--![ပန်းချီရေးဆွဲသူ - \\@allison_horst](../../../../../../2-Regression/1-Tools/images/encouRage.jpg)<br>ပန်းချီရေးဆွဲသူ - @allison_horst-->\n"
],
"metadata": {
"id": "LWNNzfqd6feZ"
}
},
{
"cell_type": "markdown",
"source": [
"## 1. ကျွန်ုပ်တို့၏ tool set ကို load လုပ်ခြင်း\n",
"\n",
"ဤအလုပ်ကိုလုပ်ဆောင်ရန်အတွက် ကျွန်ုပ်တို့အောက်ပါ packages များလိုအပ်ပါမည်-\n",
"\n",
"- `tidyverse`: [tidyverse](https://www.tidyverse.org/) သည် [R packages များစုစည်းမှု](https://www.tidyverse.org/packages) ဖြစ်ပြီး ဒေတာသိပ္ပံကို ပိုမိုလျင်မြန်စေပြီး လွယ်ကူစေကာ ပျော်ရွှင်စေပါသည်။\n",
"\n",
"- `tidymodels`: [tidymodels](https://www.tidymodels.org/) framework သည် [packages များစုစည်းမှု](https://www.tidymodels.org/packages/) ဖြစ်ပြီး မော်ဒယ်တည်ဆောက်ခြင်းနှင့် machine learning အတွက်အသုံးပြုသည်။\n",
"\n",
"ဤ packages များကို အောက်ပါအတိုင်း install လုပ်နိုင်ပါသည်-\n",
"\n",
"`install.packages(c(\"tidyverse\", \"tidymodels\"))`\n",
"\n",
"အောက်ပါ script သည် သင်ဤ module ကိုပြီးစီးရန်လိုအပ်သော packages များရှိမရှိကိုစစ်ဆေးပြီး မရှိသေးသော packages များကို install လုပ်ပေးပါမည်။\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": [
"အခုတော့ ဒီအံ့ဩဖွယ်ကောင်းတဲ့ package တွေကို load လုပ်ပြီး အခု R session မှာ အသုံးပြုနိုင်အောင် လုပ်ကြမယ်။ (ဒီဟာက ဥပမာပြရန်အတွက်သာဖြစ်ပြီး `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": [
"## 2. ဆီးချိုရောဂါဆိုင်ရာ ဒေတာစု\n",
"\n",
"ဒီလေ့ကျင့်ခန်းမှာ ကျွန်တော်တို့ရဲ့ ရေဂရက်ရှင်း (regression) ကျွမ်းကျင်မှုကို အသုံးပြုပြီး ဆီးချိုရောဂါဆိုင်ရာ ဒေတာစုပေါ်မှာ ခန့်မှန်းချက်တွေ ပြုလုပ်ပါမယ်။ [diabetes dataset](https://www4.stat.ncsu.edu/~boos/var.select/diabetes.rwrite1.txt) ဟာ `442 samples` ရှိပြီး ဆီးချိုရောဂါနဲ့ပတ်သက်တဲ့ ဒေတာတွေကို ထည့်သွင်းထားပါတယ်။ ဒီမှာ `age`, `sex`, `body mass index`, `average blood pressure`, နဲ့ `six blood serum measurements` စတဲ့ 10 ခုသော ခန့်မှန်းမှု feature variable တွေ၊ နောက်ပြီး `y` ဆိုတဲ့ outcome variable တစ်ခုလည်း ပါဝင်ပါတယ်။ `y` ဟာ baseline အပြီး တစ်နှစ်အကြာမှာ ရောဂါတိုးတက်မှုကို အရေအတွက်အလိုက် တိုင်းတာထားတဲ့ variable ဖြစ်ပါတယ်။\n",
"\n",
"|အချက်အလက်အရေအတွက်|442|\n",
"|----------------------|:---|\n",
"|ခန့်မှန်းမှု variable အရေအတွက်|ပထမ 10 ကော်လံတွေဟာ အရေအတွက်အလိုက် ခန့်မှန်းမှု variable တွေ|\n",
"|ရလဒ်/ပစ်မှတ်|11 ကော်လံဟာ baseline အပြီး တစ်နှစ်အကြာမှာ ရောဂါတိုးတက်မှုကို အရေအတွက်အလိုက် တိုင်းတာထားတဲ့ variable|\n",
"|ခန့်မှန်းမှု variable အချက်အလက်|- အသက် (age) နှစ်အလိုက်\n",
"||- ကျား/မ (sex)\n",
"||- bmi ကိုယ်အလေးချိန်နှင့်အရွယ်အစားညှိနှိုင်းမှု\n",
"||- bp သွေးပေါင်ချိန်ပျမ်းမျှ\n",
"||- s1 tc, သွေးတွင်း cholesterol စုစုပေါင်း\n",
"||- s2 ldl, အနိမ့်သိပ်သည်းမှု lipoproteins\n",
"||- s3 hdl, အမြင့်သိပ်သည်းမှု lipoproteins\n",
"||- s4 tch, cholesterol စုစုပေါင်း / HDL\n",
"||- s5 ltg, serum triglycerides အဆင့် log ဖြစ်နိုင်ခြေ\n",
"||- s6 glu, သွေးတွင်း sugar အဆင့်|\n",
"\n",
"> 🎓 သတိပြုပါ၊ ဒီဟာ supervised learning ဖြစ်ပြီး 'y' ဆိုတဲ့ target variable တစ်ခုလိုအပ်ပါတယ်။\n",
"\n",
"R language ကို အသုံးပြုပြီး ဒေတာကို ပြုပြင်နိုင်ဖို့အတွက် ဒေတာကို R ရဲ့ memory ထဲသို့ တင်ရပါမယ်၊ ဒါမှမဟုတ် R ကို ဒေတာကို remote မှတဆင့် access လုပ်နိုင်အောင် ချိတ်ဆက်မှုတစ်ခု တည်ဆောက်ရပါမယ်။\n",
"\n",
"> [readr](https://readr.tidyverse.org/) package ဟာ Tidyverse ရဲ့ အစိတ်အပိုင်းတစ်ခုဖြစ်ပြီး R မှာ rectangular data ကို အလွယ်တကူ၊ မြန်မြန်ဆန်ဆန် ဖတ်ရှုနိုင်စေတဲ့ နည်းလမ်းတစ်ခု ပေးပါတယ်။\n",
"\n",
"အခုတော့ ဒီ source URL မှာပေးထားတဲ့ ဆီးချိုရောဂါဆိုင်ရာ ဒေတာစုကို load လုပ်ကြမယ်: <https://www4.stat.ncsu.edu/~boos/var.select/diabetes.html>\n",
"\n",
"ဒါ့အပြင် `glimpse()` ကို အသုံးပြုပြီး ဒေတာကို စစ်ဆေးပြီး၊ `slice()` ကို အသုံးပြုကာ ပထမ 5 rows ကို ပြသပါမယ်။\n",
"\n",
"နောက်ထပ်ဆက်လုပ်မယ့်အခါမှာ R code မှာ မကြာခဏ တွေ့ရမယ့် အရာတစ်ခုကို မိတ်ဆက်ပေးပါမယ် 🥁🥁: pipe operator `%>%`\n",
"\n",
"pipe operator (`%>%`) ဟာ လုပ်ဆောင်မှုတွေကို အဆင့်ဆင့် အလွယ်တကူ ဆက်သွယ်ပေးပြီး object တစ်ခုကို function သို့မဟုတ် call expression ထဲကို ရှေ့ဆက်ပေးပါတယ်။ pipe operator ကို သင့် code မှာ \"ပြီးတော့\" လို့ ပြောနည်းတစ်ခုလို ထင်ရနိုင်ပါတယ်။\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()` က ဒီဒေတာမှာ အတန်း 442 ခုနဲ့ ကော်လံ 11 ခုရှိပြီး ကော်လံအားလုံးဟာ `double` ဒေတာအမျိုးအစားဖြစ်တယ်ဆိုတာကို ပြသပေးပါတယ်။\n",
"\n",
"<br>\n",
"\n",
"> glimpse() နဲ့ slice() ဟာ [`dplyr`](https://dplyr.tidyverse.org/) မှာပါတဲ့ function တွေဖြစ်ပါတယ်။ Dplyr ဟာ Tidyverse ရဲ့ အစိတ်အပိုင်းတစ်ခုဖြစ်ပြီး ဒေတာကို စနစ်တကျ ပြုပြင်နိုင်ဖို့ အထောက်အကူပြုတဲ့ verbs တွေကို ပေးစွမ်းတဲ့ grammar တစ်ခုဖြစ်ပါတယ်။\n",
"\n",
"<br>\n",
"\n",
"အခု ဒေတာရရှိပြီးတဲ့အခါမှာ ဒီအတန်းအတွက် `bmi` feature တစ်ခုကို ရွေးချယ်ပြီး အာရုံစိုက်ဖို့ narrow down လုပ်မယ်။ ဒါကို လုပ်ဖို့အတွက် လိုအပ်တဲ့ ကော်လံတွေကို ရွေးချယ်ရမယ်။ ဒါကို ဘယ်လိုလုပ်မလဲ?\n",
"\n",
"[`dplyr::select()`](https://dplyr.tidyverse.org/reference/select.html) ဟာ data frame ထဲက ကော်လံတွေကို *ရွေးချယ်* (လိုအပ်လျှင် အမည်ပြောင်း) လုပ်နိုင်စေတဲ့ function တစ်ခုဖြစ်ပါတယ်။\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",
"အထောက်အထားအပေါ်မူတည်သော သင်ကြားမှု (supervised learning) တွင် ဒေတာကို *ခွဲခြား*၍ အသုံးပြုခြင်းသည် ရိုးရာအလေ့အထဖြစ်သည်။ ဒေတာကို (အများအားဖြင့် ပိုကြီးမားသော) သင်ကြားမှုအတွက် အသုံးပြုမည့်အစုနှင့်၊ မော်ဒယ်၏ စွမ်းဆောင်ရည်ကို စမ်းသပ်ရန် အသုံးပြုမည့် ပိုသေးငယ်သော \"အနားထား\" အစုအဖြစ် ခွဲခြားသည်။\n",
"\n",
"ယခုအခါ ဒေတာများကို ပြင်ဆင်ပြီးဖြစ်သောကြောင့်၊ ဒီဒေတာအစုအတွင်းရှိ နံပါတ်များကို သဘာဝကျကျ ခွဲခြားနိုင်ရန် စက်တစ်လုံးက ကူညီပေးနိုင်မလားဆိုတာ ကြည့်နိုင်ပါပြီ။ [rsample](https://tidymodels.github.io/rsample/) package ကို အသုံးပြုနိုင်ပြီး၊ ၎င်းသည် Tidymodels framework ၏ အစိတ်အပိုင်းတစ်ခုဖြစ်သည်။ ဒီ package ကို အသုံးပြု၍ ဒေတာကို *ဘယ်လို* ခွဲမည်ဆိုသည်ကို သိရှိထားသော object တစ်ခုကို ဖန်တီးနိုင်ပြီး၊ ထို့နောက် ဖန်တီးထားသော သင်ကြားမှုနှင့် စမ်းသပ်မှုအစုများကို ထုတ်ယူရန် rsample function နှစ်ခုကို အသုံးပြုနိုင်ပါသည်။\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 ကို အသုံးပြု၍ Linear Regression မော်ဒယ် တည်ဆောက်ခြင်း\n",
"\n",
"အခုတော့ မော်ဒယ်ကို တည်ဆောက်ဖို့ အဆင်သင့် ဖြစ်ပါပြီ!\n",
"\n",
"Tidymodels မှာ မော်ဒယ်တွေကို `parsnip()` ကို အသုံးပြုပြီး အောက်ပါ သုံးခုကို သတ်မှတ်ရပါတယ်-\n",
"\n",
"- မော်ဒယ် **အမျိုးအစား** က Linear Regression, Logistic Regression, Decision Tree မော်ဒယ်တွေလို မော်ဒယ်အမျိုးအစားကို ခွဲခြားပေးပါတယ်။\n",
"\n",
"- မော်ဒယ် **mode** က Regression နဲ့ Classification လို ရိုးရိုးနည်းလမ်းတွေ ပါဝင်ပြီး၊ မော်ဒယ်အမျိုးအစားတချို့က နှစ်ခုလုံးကို ပံ့ပိုးပေးနိုင်သလို တချို့က mode တစ်ခုတည်းသာ ပါဝင်ပါတယ်။\n",
"\n",
"- မော်ဒယ် **engine** က မော်ဒယ်ကို တည်ဆောက်ဖို့ အသုံးပြုမယ့် ကွန်ပျူတာဆိုင်ရာ tool ဖြစ်ပါတယ်။ အများအားဖြင့် R packages တွေဖြစ်ပြီး၊ **`\"lm\"`** သို့မဟုတ် **`\"ranger\"`** လိုမျိုးတွေ ပါဝင်ပါတယ်။\n",
"\n",
"ဒီ မော်ဒယ်ဆိုင်ရာ အချက်အလက်တွေကို model specification အနေနဲ့ သိမ်းဆည်းထားပြီး၊ အခုတော့ တစ်ခု တည်ဆောက်လိုက်ရအောင်!\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": [
"မော်ဒယ်ကိုလေ့ကျင့်စဉ်တွင် သင်ယူထားသော coefficient များကို output မှာတွေ့နိုင်ပါတယ်။ အဲဒီ coefficient များက အမှန်တကယ် variable နဲ့ ခန့်မှန်းထားတဲ့ variable အကြား error အနည်းဆုံးဖြစ်စေတဲ့ အကောင်းဆုံးလိုင်းရဲ့ coefficient များကို ကိုယ်စားပြုပါတယ်။\n",
"<br>\n",
"\n",
"## 5. စမ်းသပ်မှုအစုအပေါ် ခန့်မှန်းချက်များပြုလုပ်ပါ\n",
"\n",
"အခုတော့ မော်ဒယ်ကိုလေ့ကျင့်ပြီးပြီဖြစ်တဲ့အတွက် [parsnip::predict()](https://parsnip.tidymodels.org/reference/predict.model_fit.html) ကို အသုံးပြုပြီး စမ်းသပ်မှု dataset အတွက် ရောဂါတိုးတက်မှု y ကို ခန့်မှန်းနိုင်ပါပြီ။ ဒါကို data group များအကြားလိုင်းဆွဲဖို့ အသုံးပြုမယ်။\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 ရဲ့ သဘောတရားက standardized column names တွေပါဝင်တဲ့ tibble/data frame အဖြစ် အမြဲထုတ်လုပ်ဖို့ ရည်ရွယ်ထားပါတယ်။ ဒါက အစပိုင်းဒေတာနဲ့ ခန့်မှန်းချက်တွေကို နောက်ထပ်လုပ်ဆောင်မှုတွေ (ဥပမာ- ပုံဆွဲခြင်း) အတွက် အသုံးဝင်တဲ့ format အဖြစ် ပေါင်းစည်းဖို့ လွယ်ကူစေပါတယ်။\n",
"\n",
"`dplyr::bind_cols()` က data frame အများအပြားကို column အဖြစ် ထိရောက်စွာ ပေါင်းစည်းပေးပါတယ်။\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` တန်ဖိုးများကို စမ်းသပ်မှုအစုအဖွဲ့မှ scatter plot တစ်ခုဖန်တီးပြီး၊ မော်ဒယ်၏ အချက်အလက်အစုအဖွဲ့များအကြား အကောင်းဆုံးနေရာတွင် မျဉ်းတန်းတစ်ခုကို ခန့်မှန်းချက်များကို အသုံးပြု၍ ရေးဆွဲပါမည်။\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 axis ရဲ့ ဆက်နွယ်မှုအပေါ်မှာ ဘယ်လိုနေရာချထားရမလဲဆိုတာကို အဲ့လိုင်းကို အသုံးပြုနိုင်ပုံကို မြင်နိုင်ပါသလား။ ဒီမော်ဒယ်ရဲ့ အကျိုးကျေးဇူးကို လက်တွေ့အသုံးချပုံအနေနဲ့ စကားလုံးတွေနဲ့ ဖော်ပြကြည့်ပါ။\n",
"\n",
"အောင်မြင်ပါတယ်၊ သင့်ရဲ့ ပထမဆုံး linear regression မော်ဒယ်ကို တည်ဆောက်ပြီး၊ အဲ့ဒီနဲ့ အတူ အနာဂတ်ခန့်မှန်းချက်တစ်ခုကို ဖန်တီးပြီး၊ အဲ့ဒီကို plot ထဲမှာ ပြသနိုင်ခဲ့ပါပြီ!\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"
]
}
]
}