{ "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-29T19:02:31+00:00", "source_file": "2-Regression/1-Tools/solution/R/lesson_1-R.ipynb", "language_code": "pa" } }, "cells": [ { "cell_type": "markdown", "source": [], "metadata": { "id": "YJUHCXqK57yz" } }, { "cell_type": "markdown", "source": [ "## ਰਿਗ੍ਰੈਸ਼ਨ ਦਾ ਪਰਚੇ - ਪਾਠ 1\n", "\n", "#### ਇਸਨੂੰ ਸੰਦਰਭ ਵਿੱਚ ਰੱਖਣਾ\n", "\n", "✅ ਰਿਗ੍ਰੈਸ਼ਨ ਦੇ ਕਈ ਤਰੀਕੇ ਹਨ, ਅਤੇ ਤੁਸੀਂ ਕਿਹੜਾ ਚੁਣਦੇ ਹੋ ਇਹ ਇਸ ਗੱਲ 'ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ ਕਿ ਤੁਸੀਂ ਕਿਹੜਾ ਜਵਾਬ ਲੱਭ ਰਹੇ ਹੋ। ਜੇ ਤੁਸੀਂ ਕਿਸੇ ਦਿੱਤੇ ਗਏ ਉਮਰ ਵਾਲੇ ਵਿਅਕਤੀ ਦੀ ਸੰਭਾਵਿਤ ਲੰਬਾਈ ਦਾ ਅਨੁਮਾਨ ਲਗਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ `linear regression` ਵਰਤੋਂਗੇ, ਕਿਉਂਕਿ ਤੁਸੀਂ ਇੱਕ **ਸੰਖਿਆਤਮਕ ਮੁੱਲ** ਲੱਭ ਰਹੇ ਹੋ। ਜੇ ਤੁਸੀਂ ਇਹ ਪਤਾ ਲਗਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ ਕਿ ਕਿਸੇ ਖਾਣੇ ਨੂੰ ਸ਼ਾਕਾਹਾਰੀ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ ਜਾਂ ਨਹੀਂ, ਤਾਂ ਤੁਸੀਂ ਇੱਕ **ਸ਼੍ਰੇਣੀ ਨਿਰਧਾਰਨ** ਦੀ ਭਾਲ ਕਰ ਰਹੇ ਹੋ, ਇਸ ਲਈ ਤੁਸੀਂ `logistic regression` ਵਰਤੋਂਗੇ। ਤੁਸੀਂ ਲੌਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਬਾਰੇ ਬਾਅਦ ਵਿੱਚ ਹੋਰ ਸਿੱਖੋਗੇ। ਡਾਟਾ ਤੋਂ ਕੁਝ ਸਵਾਲ ਪੁੱਛਣ ਬਾਰੇ ਸੋਚੋ, ਅਤੇ ਇਹਨਾਂ ਤਰੀਕਿਆਂ ਵਿੱਚੋਂ ਕਿਹੜਾ ਜ਼ਿਆਦਾ ਉਚਿਤ ਹੋਵੇਗਾ।\n", "\n", "ਇਸ ਭਾਗ ਵਿੱਚ, ਤੁਸੀਂ [ਸ਼ੂਗਰ ਦੀ ਬਿਮਾਰੀ ਬਾਰੇ ਇੱਕ ਛੋਟੇ ਡਾਟਾਸੈੱਟ](https://www4.stat.ncsu.edu/~boos/var.select/diabetes.html) ਨਾਲ ਕੰਮ ਕਰੋਗੇ। ਕਲਪਨਾ ਕਰੋ ਕਿ ਤੁਸੀਂ ਸ਼ੂਗਰ ਦੇ ਮਰੀਜ਼ਾਂ ਲਈ ਇੱਕ ਇਲਾਜ ਦੀ ਜਾਂਚ ਕਰਨੀ ਚਾਹੁੰਦੇ ਹੋ। ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਮਾਡਲ ਤੁਹਾਨੂੰ ਇਹ ਨਿਰਧਾਰਤ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰ ਸਕਦੇ ਹਨ ਕਿ ਕਿਹੜੇ ਮਰੀਜ਼ ਇਲਾਜ ਲਈ ਵਧੀਆ ਪ੍ਰਤੀਕਿਰਿਆ ਦੇਣਗੇ, ਵੱਖ-ਵੱਖ ਚਲਾਂ ਦੇ ਆਧਾਰ 'ਤੇ। ਇੱਥੇ ਤੱਕ ਕਿ ਇੱਕ ਬਹੁਤ ਹੀ ਬੁਨਿਆਦੀ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ, ਜਦੋਂ ਦ੍ਰਿਸ਼ਟੀਕਰਨ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਚਲਾਂ ਬਾਰੇ ਜਾਣਕਾਰੀ ਦਿਖਾ ਸਕਦਾ ਹੈ ਜੋ ਤੁਹਾਨੂੰ ਆਪਣੇ ਸਿਧਾਂਤਕ ਕਲੀਨਿਕਲ ਟ੍ਰਾਇਲਾਂ ਨੂੰ ਸੰਗਠਿਤ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰ ਸਕਦੀ ਹੈ।\n", "\n", "ਇਹ ਕਹਿਣ ਤੋਂ ਬਾਅਦ, ਆਓ ਇਸ ਕੰਮ ਨੂੰ ਸ਼ੁਰੂ ਕਰੀਏ!\n", "\n", "
\n",
" \n",
"
\n",
"\n",
"> `glimpse()` ਅਤੇ `slice()` [`dplyr`](https://dplyr.tidyverse.org/) ਦੇ ਫੰਕਸ਼ਨ ਹਨ। Dplyr, ਜੋ Tidyverse ਦਾ ਹਿੱਸਾ ਹੈ, ਡਾਟਾ ਮੈਨਿਪੂਲੇਸ਼ਨ ਦੀ ਇੱਕ ਗ੍ਰੈਮਰ ਹੈ ਜੋ ਇੱਕ ਸਥਿਰ ਸੈੱਟ ਦੇ ਕਿਰਿਆਵਾਂ (verbs) ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ, ਜੋ ਤੁਹਾਨੂੰ ਆਮ ਡਾਟਾ ਮੈਨਿਪੂਲੇਸ਼ਨ ਦੀਆਂ ਸਮੱਸਿਆਵਾਂ ਹੱਲ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ।\n",
"\n",
"
\n",
"\n",
"ਹੁਣ ਜਦੋਂ ਸਾਡੇ ਕੋਲ ਡਾਟਾ ਹੈ, ਆਓ ਇਸ ਅਭਿਆਸ ਲਈ ਇੱਕ ਫੀਚਰ (`bmi`) ਨੂੰ ਟਾਰਗਟ ਕਰਨ ਲਈ narrowed down ਕਰੀਏ। ਇਸ ਲਈ ਸਾਨੂੰ ਚਾਹੀਦੇ ਕਾਲਮਾਂ ਨੂੰ ਚੁਣਨ ਦੀ ਲੋੜ ਹੋਵੇਗੀ। ਤਾਂ, ਅਸੀਂ ਇਹ ਕਿਵੇਂ ਕਰ ਸਕਦੇ ਹਾਂ?\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": [
"## 3. ਟ੍ਰੇਨਿੰਗ ਅਤੇ ਟੈਸਟਿੰਗ ਡਾਟਾ\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",
"
\n",
"\n",
"## 5. ਟੈਸਟ ਸੈੱਟ 'ਤੇ ਅਨੁਮਾਨ ਲਗਾਓ\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 ਦਾ ਰਿਵਾਜ ਹਮੇਸ਼ਾ ਨਤੀਜਿਆਂ ਦਾ ਇੱਕ tibble/data frame ਬਣਾਉਣਾ ਹੁੰਦਾ ਹੈ ਜਿਸ ਵਿੱਚ ਸਟੈਂਡਰਡ ਕਾਲਮ ਨਾਂ ਹੁੰਦੇ ਹਨ। ਇਹ ਮੂਲ ਡਾਟਾ ਅਤੇ ਪ੍ਰਡਿਕਸ਼ਨ ਨੂੰ ਇੱਕ ਵਰਤਣਯੋਗ ਫਾਰਮੈਟ ਵਿੱਚ ਜੋੜਨਾ ਆਸਾਨ ਬਣਾ ਦਿੰਦਾ ਹੈ, ਜੋ ਕਿ ਅਗਲੇ ਕਦਮਾਂ ਜਿਵੇਂ ਕਿ ਪਲਾਟਿੰਗ ਲਈ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ।\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": [
"## 6. ਮਾਡਲਿੰਗ ਨਤੀਜਿਆਂ ਦਾ ਪਲਾਟ ਬਣਾਉਣਾ\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"
]
}
]
}