{ "nbformat": 4, "nbformat_minor": 2, "metadata": { "colab": { "name": "lesson_2-R.ipynb", "provenance": [], "collapsed_sections": [], "toc_visible": true }, "kernelspec": { "name": "ir", "display_name": "R" }, "language_info": { "name": "R" }, "coopTranslator": { "original_hash": "f3c335f9940cfd76528b3ef918b9b342", "translation_date": "2025-08-29T15:01:12+00:00", "source_file": "2-Regression/2-Data/solution/R/lesson_2-R.ipynb", "language_code": "ur" } }, "cells": [ { "cell_type": "markdown", "source": [ "# ریگریشن ماڈل بنائیں: ڈیٹا تیار کریں اور بصری بنائیں\n", "\n", "## **کدو کے لیے لکیری ریگریشن - سبق 2**\n", "#### تعارف\n", "\n", "اب جب کہ آپ کے پاس وہ ٹولز موجود ہیں جو آپ کو مشین لرننگ ماڈل بنانے کے لیے Tidymodels اور Tidyverse کے ساتھ کام کرنے کی ضرورت ہے، آپ اپنے ڈیٹا سے سوالات پوچھنے کے لیے تیار ہیں۔ جب آپ ڈیٹا کے ساتھ کام کرتے ہیں اور مشین لرننگ کے حل لاگو کرتے ہیں، تو یہ بہت ضروری ہے کہ آپ صحیح سوال پوچھنا سیکھیں تاکہ اپنے ڈیٹا سیٹ کی صلاحیتوں کو صحیح طریقے سے کھولا جا سکے۔\n", "\n", "اس سبق میں، آپ سیکھیں گے:\n", "\n", "- ماڈل بنانے کے لیے اپنے ڈیٹا کو کیسے تیار کریں۔\n", "\n", "- ڈیٹا کی بصری نمائندگی کے لیے `ggplot2` کا استعمال کیسے کریں۔\n", "\n", "آپ کے سوال کا جواب آپ کے منتخب کردہ مشین لرننگ الگورتھم کی قسم کا تعین کرے گا۔ اور جو جواب آپ کو واپس ملے گا اس کا معیار آپ کے ڈیٹا کی نوعیت پر بہت زیادہ منحصر ہوگا۔\n", "\n", "آئیے ایک عملی مشق کے ذریعے یہ دیکھتے ہیں۔\n", "\n", "

\n", " \n", "

آرٹ ورک: @allison_horst
\n" ], "metadata": { "id": "Pg5aexcOPqAZ" } }, { "cell_type": "markdown", "source": [ "## 1. کدو کے ڈیٹا کو درآمد کرنا اور Tidyverse کو استعمال کرنا\n", "\n", "ہمیں اس سبق کو سمجھنے اور ڈیٹا کو ترتیب دینے کے لیے درج ذیل پیکجز کی ضرورت ہوگی:\n", "\n", "- `tidyverse`: [tidyverse](https://www.tidyverse.org/) ایک [R پیکجز کا مجموعہ](https://www.tidyverse.org/packages) ہے جو ڈیٹا سائنس کو تیز، آسان اور مزید دلچسپ بناتا ہے!\n", "\n", "آپ انہیں اس طرح انسٹال کر سکتے ہیں:\n", "\n", "`install.packages(c(\"tidyverse\"))`\n", "\n", "نیچے دیا گیا اسکرپٹ چیک کرتا ہے کہ آیا آپ کے پاس اس ماڈیول کو مکمل کرنے کے لیے مطلوبہ پیکجز موجود ہیں یا نہیں، اور اگر کچھ پیکجز غائب ہوں تو انہیں آپ کے لیے انسٹال کر دیتا ہے۔\n" ], "metadata": { "id": "dc5WhyVdXAjR" } }, { "cell_type": "code", "execution_count": null, "source": [ "suppressWarnings(if(!require(\"pacman\")) install.packages(\"pacman\"))\n", "pacman::p_load(tidyverse)" ], "outputs": [], "metadata": { "id": "GqPYUZgfXOBt" } }, { "cell_type": "markdown", "source": [ "اب، آئیے کچھ پیکجز کو فعال کریں اور اس سبق کے لیے فراہم کردہ [ڈیٹا](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) کو لوڈ کریں!\n" ], "metadata": { "id": "kvjDTPDSXRr2" } }, { "cell_type": "code", "execution_count": null, "source": [ "# Load the core Tidyverse packages\n", "library(tidyverse)\n", "\n", "# Import the pumpkins data\n", "pumpkins <- read_csv(file = \"https://raw.githubusercontent.com/microsoft/ML-For-Beginners/main/2-Regression/data/US-pumpkins.csv\")\n", "\n", "\n", "# Get a glimpse and dimensions of the data\n", "glimpse(pumpkins)\n", "\n", "\n", "# Print the first 50 rows of the data set\n", "pumpkins %>% \n", " slice_head(n =50)" ], "outputs": [], "metadata": { "id": "VMri-t2zXqgD" } }, { "cell_type": "markdown", "source": [ "ایک فوری `glimpse()` سے فوراً پتہ چلتا ہے کہ ڈیٹا میں خالی جگہیں ہیں اور اس میں سٹرنگز (`chr`) اور عددی ڈیٹا (`dbl`) کا امتزاج ہے۔ `Date` کی قسم کریکٹر ہے اور ایک عجیب کالم بھی ہے جسے `Package` کہا جاتا ہے، جہاں ڈیٹا `sacks`، `bins` اور دیگر قدروں کا امتزاج ہے۔ حقیقت میں، یہ ڈیٹا کچھ گڑبڑ سا لگتا ہے 😤۔\n", "\n", "حقیقت یہ ہے کہ ایسا بہت کم ہوتا ہے کہ آپ کو ایک ایسا ڈیٹاسیٹ ملے جو مکمل طور پر تیار ہو اور جسے فوراً ایک مشین لرننگ ماڈل بنانے کے لیے استعمال کیا جا سکے۔ لیکن پریشان نہ ہوں، اس سبق میں آپ سیکھیں گے کہ کس طرح ایک خام ڈیٹاسیٹ کو معیاری R لائبریریوں 🧑‍🔧 کا استعمال کرتے ہوئے تیار کیا جائے۔ آپ ڈیٹا کو بصری طور پر پیش کرنے کی مختلف تکنیکیں بھی سیکھیں گے۔📈📊 \n", "
\n", "\n", "> ایک یاد دہانی: پائپ آپریٹر (`%>%`) منطقی ترتیب میں آپریشنز انجام دیتا ہے، جہاں ایک آبجیکٹ کو آگے بڑھا کر کسی فنکشن یا کال ایکسپریشن میں دیا جاتا ہے۔ آپ پائپ آپریٹر کو اپنے کوڈ میں \"اور پھر\" کہنے کے مترادف سمجھ سکتے ہیں۔\n" ], "metadata": { "id": "REWcIv9yX29v" } }, { "cell_type": "markdown", "source": [ "## 2. ڈیٹا کی کمی کو چیک کریں\n", "\n", "ڈیٹا سائنسدانوں کو جن عام مسائل کا سامنا کرنا پڑتا ہے ان میں سے ایک نامکمل یا غائب ڈیٹا ہے۔ R غائب یا نامعلوم قدروں کو ایک خاص نشان `NA` (Not Available) کے ذریعے ظاہر کرتا ہے۔\n", "\n", "تو ہم کیسے جانیں گے کہ ڈیٹا فریم میں غائب قدریں موجود ہیں؟\n", "
\n", "- ایک سیدھا سادہ طریقہ یہ ہوگا کہ بیس R فنکشن `anyNA` کا استعمال کریں، جو منطقی اشیاء `TRUE` یا `FALSE` واپس کرتا ہے۔\n" ], "metadata": { "id": "Zxfb3AM5YbUe" } }, { "cell_type": "code", "execution_count": null, "source": [ "pumpkins %>% \n", " anyNA()" ], "outputs": [], "metadata": { "id": "G--DQutAYltj" } }, { "cell_type": "markdown", "source": [ "شاندار، لگتا ہے کہ کچھ ڈیٹا غائب ہے! یہ ایک اچھی جگہ ہے شروع کرنے کے لیے۔\n", "\n", "- ایک اور طریقہ یہ ہوگا کہ `is.na()` فنکشن استعمال کریں جو یہ ظاہر کرتا ہے کہ کون سے انفرادی کالم عناصر منطقی `TRUE` کے ساتھ غائب ہیں۔\n" ], "metadata": { "id": "mU-7-SB6YokF" } }, { "cell_type": "code", "execution_count": null, "source": [ "pumpkins %>% \n", " is.na() %>% \n", " head(n = 7)" ], "outputs": [], "metadata": { "id": "W-DxDOR4YxSW" } }, { "cell_type": "markdown", "source": [ "ٹھیک ہے، کام مکمل ہو گیا لیکن اتنے بڑے ڈیٹا فریم کے ساتھ، ہر صف اور کالم کو انفرادی طور پر جانچنا غیر مؤثر اور عملی طور پر ناممکن ہوگا۔😴\n", "\n", "- ایک زیادہ سمجھدار طریقہ یہ ہوگا کہ ہر کالم کے لیے گمشدہ قدروں کا مجموعہ نکالا جائے:\n" ], "metadata": { "id": "xUWxipKYY0o7" } }, { "cell_type": "code", "execution_count": null, "source": [ "pumpkins %>% \n", " is.na() %>% \n", " colSums()" ], "outputs": [], "metadata": { "id": "ZRBWV6P9ZArL" } }, { "cell_type": "markdown", "source": [ "بہت بہتر! کچھ معلومات غائب ہیں، لیکن شاید یہ موجودہ کام کے لیے زیادہ اہم نہ ہو۔ آئیے دیکھتے ہیں کہ مزید تجزیہ کیا کیا نتائج سامنے لاتا ہے۔\n", "\n", "> شاندار پیکجز اور فنکشنز کے ساتھ، R کی دستاویزات بھی بہت عمدہ ہیں۔ مثال کے طور پر، `help(colSums)` یا `?colSums` کا استعمال کریں تاکہ اس فنکشن کے بارے میں مزید جان سکیں۔\n" ], "metadata": { "id": "9gv-crB6ZD1Y" } }, { "cell_type": "markdown", "source": [ "## 3. ڈیپلائر: ڈیٹا کو منظم کرنے کا ایک اصول\n", "\n", "

\n", " \n", "

آرٹ ورک از @allison_horst
\n", "\n", "\n", "\n" ], "metadata": { "id": "o4jLY5-VZO2C" } }, { "cell_type": "markdown", "source": [ "[`dplyr`](https://dplyr.tidyverse.org/)، جو کہ Tidyverse کا ایک پیکج ہے، ڈیٹا کو منظم کرنے کا ایک گرامر ہے جو ایک مستقل سیٹ کے افعال فراہم کرتا ہے جو آپ کو عام ڈیٹا منیپولیشن کے مسائل حل کرنے میں مدد دیتے ہیں۔ اس حصے میں، ہم dplyr کے کچھ افعال کا جائزہ لیں گے!\n" ], "metadata": { "id": "i5o33MQBZWWw" } }, { "cell_type": "markdown", "source": [ "#### dplyr::select()\n", "\n", "`select()` ایک فنکشن ہے جو پیکیج `dplyr` میں موجود ہے اور یہ آپ کو کالمز منتخب کرنے یا خارج کرنے میں مدد دیتا ہے۔\n", "\n", "اپنے ڈیٹا فریم کو آسان بنانے کے لیے، اس کے کئی کالمز کو ہٹا دیں اور صرف وہ کالمز رکھیں جو آپ کو ضرورت ہیں، `select()` کا استعمال کرتے ہوئے۔\n", "\n", "مثال کے طور پر، اس مشق میں ہمارا تجزیہ ان کالمز پر مشتمل ہوگا: `Package`, `Low Price`, `High Price` اور `Date`۔ آئیے ان کالمز کو منتخب کریں۔\n" ], "metadata": { "id": "x3VGMAGBZiUr" } }, { "cell_type": "code", "execution_count": null, "source": [ "# Select desired columns\n", "pumpkins <- pumpkins %>% \n", " select(Package, `Low Price`, `High Price`, Date)\n", "\n", "\n", "# Print data set\n", "pumpkins %>% \n", " slice_head(n = 5)" ], "outputs": [], "metadata": { "id": "F_FgxQnVZnM0" } }, { "cell_type": "markdown", "source": [ "#### dplyr::mutate()\n", "\n", "`mutate()` پیکیج `dplyr` میں ایک فنکشن ہے جو آپ کو کالمز بنانے یا ان میں ترمیم کرنے میں مدد دیتا ہے، جبکہ موجودہ کالمز کو برقرار رکھتا ہے۔\n", "\n", "`mutate` کی عمومی ساخت یہ ہے:\n", "\n", "`data %>% mutate(new_column_name = what_it_contains)`\n", "\n", "آئیے `mutate` کو `Date` کالم کے ساتھ استعمال کرتے ہیں اور درج ذیل آپریشنز کرتے ہیں:\n", "\n", "1. تاریخوں کو (جو اس وقت کریکٹر کی قسم میں ہیں) مہینے کے فارمیٹ میں تبدیل کریں (یہ امریکی تاریخیں ہیں، اس لیے فارمیٹ `MM/DD/YYYY` ہے)۔\n", "\n", "2. تاریخوں سے مہینہ نکال کر ایک نئے کالم میں ڈالیں۔\n", "\n", "R میں، پیکیج [lubridate](https://lubridate.tidyverse.org/) تاریخ اور وقت کے ڈیٹا کے ساتھ کام کرنا آسان بناتا ہے۔ تو، آئیے `dplyr::mutate()`, `lubridate::mdy()`, `lubridate::month()` کا استعمال کرتے ہیں اور دیکھتے ہیں کہ اوپر دیے گئے مقاصد کو کیسے حاصل کیا جا سکتا ہے۔ ہم `Date` کالم کو ہٹا سکتے ہیں کیونکہ ہمیں اسے آئندہ آپریشنز میں دوبارہ استعمال کرنے کی ضرورت نہیں ہوگی۔\n" ], "metadata": { "id": "2KKo0Ed9Z1VB" } }, { "cell_type": "code", "execution_count": null, "source": [ "# Load lubridate\n", "library(lubridate)\n", "\n", "pumpkins <- pumpkins %>% \n", " # Convert the Date column to a date object\n", " mutate(Date = mdy(Date)) %>% \n", " # Extract month from Date\n", " mutate(Month = month(Date)) %>% \n", " # Drop Date column\n", " select(-Date)\n", "\n", "# View the first few rows\n", "pumpkins %>% \n", " slice_head(n = 7)" ], "outputs": [], "metadata": { "id": "5joszIVSZ6xe" } }, { "cell_type": "markdown", "source": [ "واہ! 🤩\n", "\n", "اب، آئیے ایک نیا کالم `Price` بناتے ہیں، جو کدو کی اوسط قیمت کو ظاہر کرتا ہے۔ اب، `Low Price` اور `High Price` کالمز کی اوسط لے کر نئے Price کالم کو بھر دیتے ہیں۔\n" ], "metadata": { "id": "nIgLjNMCZ-6Y" } }, { "cell_type": "code", "execution_count": null, "source": [ "# Create a new column Price\n", "pumpkins <- pumpkins %>% \n", " mutate(Price = (`Low Price` + `High Price`)/2)\n", "\n", "# View the first few rows of the data\n", "pumpkins %>% \n", " slice_head(n = 5)" ], "outputs": [], "metadata": { "id": "Zo0BsqqtaJw2" } }, { "cell_type": "markdown", "source": [ "یییس!💪\n", "\n", "\"لیکن ٹھہرو!\" آپ کہیں گے جب آپ پورے ڈیٹا سیٹ کو `View(pumpkins)` کے ذریعے دیکھیں گے، \"یہاں کچھ عجیب سا ہے!\"🤔\n", "\n", "اگر آپ `Package` کالم کو دیکھیں، تو کدو مختلف ترتیب میں فروخت کیے جاتے ہیں۔ کچھ `1 1/9 bushel` پیمائش میں فروخت ہوتے ہیں، کچھ `1/2 bushel` پیمائش میں، کچھ فی کدو، کچھ فی پاؤنڈ، اور کچھ بڑے ڈبوں میں جن کی چوڑائی مختلف ہوتی ہے۔\n", "\n", "آئیے اس کی تصدیق کرتے ہیں:\n" ], "metadata": { "id": "p77WZr-9aQAR" } }, { "cell_type": "code", "execution_count": null, "source": [ "# Verify the distinct observations in Package column\n", "pumpkins %>% \n", " distinct(Package)" ], "outputs": [], "metadata": { "id": "XISGfh0IaUy6" } }, { "cell_type": "markdown", "source": [ "زبردست!👏\n", "\n", "کدوؤں کا وزن مستقل طور پر کرنا کافی مشکل لگتا ہے، تو آئیے انہیں فلٹر کرتے ہیں اور صرف ان کدوؤں کو منتخب کرتے ہیں جن کے `Package` کالم میں *bushel* کا لفظ موجود ہو، اور اسے ایک نئے ڈیٹا فریم `new_pumpkins` میں ڈال دیتے ہیں۔\n" ], "metadata": { "id": "7sMjiVujaZxY" } }, { "cell_type": "markdown", "source": [ "#### dplyr::filter() اور stringr::str_detect()\n", "\n", "[`dplyr::filter()`](https://dplyr.tidyverse.org/reference/filter.html): ڈیٹا کا ایک حصہ بناتا ہے جو صرف وہ **قطاریں** شامل کرتا ہے جو آپ کی شرائط کو پورا کرتی ہیں، اس مثال میں، وہ کدو جن کے `Package` کالم میں *bushel* کا لفظ موجود ہے۔\n", "\n", "[stringr::str_detect()](https://stringr.tidyverse.org/reference/str_detect.html): کسی سٹرنگ میں کسی پیٹرن کی موجودگی یا غیر موجودگی کا پتہ لگاتا ہے۔\n", "\n", "[`stringr`](https://github.com/tidyverse/stringr) پیکیج عام سٹرنگ آپریشنز کے لیے آسان فنکشنز فراہم کرتا ہے۔\n" ], "metadata": { "id": "L8Qfcs92ageF" } }, { "cell_type": "code", "execution_count": null, "source": [ "# Retain only pumpkins with \"bushel\"\n", "new_pumpkins <- pumpkins %>% \n", " filter(str_detect(Package, \"bushel\"))\n", "\n", "# Get the dimensions of the new data\n", "dim(new_pumpkins)\n", "\n", "# View a few rows of the new data\n", "new_pumpkins %>% \n", " slice_head(n = 5)" ], "outputs": [], "metadata": { "id": "hy_SGYREampd" } }, { "cell_type": "markdown", "source": [ "آپ دیکھ سکتے ہیں کہ ہم نے تقریباً 415 قطاروں تک محدود کر دیا ہے جو کدوؤں کو بوشل کے حساب سے دکھاتی ہیں۔🤩 \n", "
\n" ], "metadata": { "id": "VrDwF031avlR" } }, { "cell_type": "markdown", "source": [ "#### dplyr::case_when()\n", "\n", "**لیکن رکیے! ایک اور کام باقی ہے**\n", "\n", "کیا آپ نے دیکھا کہ ہر قطار میں بسہل کی مقدار مختلف ہے؟ آپ کو قیمت کو اس طرح معیاری بنانا ہوگا کہ یہ فی بسہل دکھائی جائے، نہ کہ 1 1/9 یا 1/2 بسہل کے حساب سے۔ اب وقت ہے کچھ حساب کتاب کرنے کا تاکہ اسے معیاری بنایا جا سکے۔\n", "\n", "ہم [`case_when()`](https://dplyr.tidyverse.org/reference/case_when.html) فنکشن کا استعمال کریں گے تاکہ کچھ شرائط کے مطابق Price کالم کو *تبدیل* کیا جا سکے۔ `case_when` آپ کو متعدد `if_else()` بیانات کو ویکٹرائز کرنے کی اجازت دیتا ہے۔\n" ], "metadata": { "id": "mLpw2jH4a0tx" } }, { "cell_type": "code", "execution_count": null, "source": [ "# Convert the price if the Package contains fractional bushel values\n", "new_pumpkins <- new_pumpkins %>% \n", " mutate(Price = case_when(\n", " str_detect(Package, \"1 1/9\") ~ Price/(1 + 1/9),\n", " str_detect(Package, \"1/2\") ~ Price/(1/2),\n", " TRUE ~ Price))\n", "\n", "# View the first few rows of the data\n", "new_pumpkins %>% \n", " slice_head(n = 30)" ], "outputs": [], "metadata": { "id": "P68kLVQmbM6I" } }, { "cell_type": "markdown", "source": [ "اب ہم ان کے بشل پیمائش کی بنیاد پر فی یونٹ قیمت کا تجزیہ کر سکتے ہیں۔ لیکن کدو کے بشل کے اس مطالعے سے یہ ظاہر ہوتا ہے کہ `اپنے ڈیٹا کی نوعیت کو سمجھنا` کتنا `اہم` ہے!\n", "\n", "> ✅ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) کے مطابق، بشل کا وزن پیداوار کی قسم پر منحصر ہوتا ہے کیونکہ یہ حجم کی پیمائش ہے۔ \"مثال کے طور پر، ٹماٹروں کا ایک بشل 56 پاؤنڈ وزن کا ہونا چاہیے... پتے اور سبزیاں کم وزن کے ساتھ زیادہ جگہ گھیرتی ہیں، اس لیے پالک کا ایک بشل صرف 20 پاؤنڈ کا ہوتا ہے۔\" یہ سب کافی پیچیدہ ہے! آئیے بشل کو پاؤنڈ میں تبدیل کرنے کی زحمت نہ کریں، اور اس کے بجائے بشل کے حساب سے قیمت لگائیں۔ لیکن کدو کے بشل کے اس مطالعے سے یہ ظاہر ہوتا ہے کہ اپنے ڈیٹا کی نوعیت کو سمجھنا کتنا اہم ہے!\n", "\n", "> ✅ کیا آپ نے نوٹ کیا کہ آدھے بشل کے حساب سے بیچے جانے والے کدو بہت مہنگے ہیں؟ کیا آپ اندازہ لگا سکتے ہیں کیوں؟ اشارہ: چھوٹے کدو بڑے کدو کے مقابلے میں بہت زیادہ مہنگے ہوتے ہیں، شاید اس لیے کہ ایک بڑے کھوکھلے پائی کدو کی جگہ کے مقابلے میں ایک بشل میں بہت زیادہ چھوٹے کدو آ جاتے ہیں۔\n" ], "metadata": { "id": "pS2GNPagbSdb" } }, { "cell_type": "markdown", "source": [ "چلو آخر میں، صرف مہم جوئی کے لیے 💁‍♀️، مہینے کے کالم کو پہلے پوزیشن پر منتقل کرتے ہیں، یعنی `پیکیج` کالم سے پہلے۔\n", "\n", "کالمز کی پوزیشن تبدیل کرنے کے لیے `dplyr::relocate()` استعمال کیا جاتا ہے۔\n" ], "metadata": { "id": "qql1SowfbdnP" } }, { "cell_type": "code", "execution_count": null, "source": [ "# Create a new data frame new_pumpkins\n", "new_pumpkins <- new_pumpkins %>% \n", " relocate(Month, .before = Package)\n", "\n", "new_pumpkins %>% \n", " slice_head(n = 7)" ], "outputs": [], "metadata": { "id": "JJ1x6kw8bixF" } }, { "cell_type": "markdown", "source": [ "شاندار کام!👌 اب آپ کے پاس ایک صاف ستھرا اور منظم ڈیٹاسیٹ ہے جس پر آپ اپنا نیا ریگریشن ماڈل بنا سکتے ہیں! \n", "
\n" ], "metadata": { "id": "y8TJ0Za_bn5Y" } }, { "cell_type": "markdown", "source": [ "## 4. ڈیٹا کی بصری نمائندگی ggplot2 کے ساتھ\n", "\n", "

\n", " \n", "

انفوگرافک: داسانی مڈیپالی
\n", "\n", "\n", "\n", "\n", "ایک *عقل مند* کہاوت ہے جو کچھ یوں ہے:\n", "\n", "> \"سادہ گراف نے ڈیٹا تجزیہ کار کے ذہن میں کسی بھی دوسرے آلے سے زیادہ معلومات پہنچائی ہیں۔\" --- جان ٹوکی\n", "\n", "ڈیٹا سائنسدان کا ایک حصہ یہ ہے کہ وہ اس ڈیٹا کی معیار اور نوعیت کو ظاہر کرے جس پر وہ کام کر رہے ہیں۔ اس مقصد کے لیے، وہ اکثر دلچسپ بصری نمائندگیاں، یا پلاٹس، گراف، اور چارٹس بناتے ہیں، جو ڈیٹا کے مختلف پہلوؤں کو ظاہر کرتے ہیں۔ اس طرح، وہ بصری طور پر تعلقات اور خلا کو ظاہر کر سکتے ہیں جو بصورت دیگر دریافت کرنا مشکل ہوتا ہے۔\n", "\n", "بصری نمائندگی یہ فیصلہ کرنے میں بھی مدد کر سکتی ہے کہ ڈیٹا کے لیے کون سی مشین لرننگ تکنیک زیادہ موزوں ہے۔ مثال کے طور پر، ایک اسکیٹر پلاٹ جو ایک لائن کی پیروی کرتا ہوا دکھائی دیتا ہے، یہ ظاہر کرتا ہے کہ ڈیٹا ایک لینیئر ریگریشن مشق کے لیے موزوں امیدوار ہے۔\n", "\n", "R کئی نظام پیش کرتا ہے گراف بنانے کے لیے، لیکن [`ggplot2`](https://ggplot2.tidyverse.org/index.html) ان میں سے سب سے خوبصورت اور سب سے زیادہ لچکدار ہے۔ `ggplot2` آپ کو گراف بنانے کی اجازت دیتا ہے **آزاد اجزاء کو یکجا کر کے**۔\n", "\n", "آئیے Price اور Month کالمز کے لیے ایک سادہ اسکیٹر پلاٹ سے شروع کرتے ہیں۔\n", "\n", "تو اس معاملے میں، ہم [`ggplot()`](https://ggplot2.tidyverse.org/reference/ggplot.html) سے شروع کریں گے، ایک ڈیٹا سیٹ اور جمالیاتی میپنگ فراہم کریں گے ([`aes()`](https://ggplot2.tidyverse.org/reference/aes.html) کے ساتھ) اور پھر اسکیٹر پلاٹس کے لیے ایک لئیرز شامل کریں گے (جیسے [`geom_point()`](https://ggplot2.tidyverse.org/reference/geom_point.html))۔\n" ], "metadata": { "id": "mYSH6-EtbvNa" } }, { "cell_type": "code", "execution_count": null, "source": [ "# Set a theme for the plots\n", "theme_set(theme_light())\n", "\n", "# Create a scatter plot\n", "p <- ggplot(data = new_pumpkins, aes(x = Price, y = Month))\n", "p + geom_point()" ], "outputs": [], "metadata": { "id": "g2YjnGeOcLo4" } }, { "cell_type": "markdown", "source": [ "کیا یہ ایک مفید پلاٹ ہے 🤷؟ کیا اس میں کچھ ایسا ہے جو آپ کو حیران کرے؟\n", "\n", "یہ خاص طور پر مفید نہیں ہے کیونکہ یہ صرف آپ کے ڈیٹا کو ایک دیے گئے مہینے میں پوائنٹس کے پھیلاؤ کے طور پر دکھاتا ہے۔ \n" ], "metadata": { "id": "Ml7SDCLQcPvE" } }, { "cell_type": "markdown", "source": [ "### **ہم اسے مفید کیسے بنائیں؟**\n", "\n", "چارٹس میں مفید ڈیٹا دکھانے کے لیے، عام طور پر آپ کو ڈیٹا کو کسی نہ کسی طرح گروپ کرنا پڑتا ہے۔ مثال کے طور پر، ہمارے کیس میں، ہر مہینے کے لیے کدو کی اوسط قیمت معلوم کرنا ہمارے ڈیٹا میں موجود بنیادی رجحانات کو بہتر طور پر سمجھنے میں مدد دے گا۔ یہ ہمیں ایک اور **dplyr** کی جھلک دکھاتا ہے:\n", "\n", "#### `dplyr::group_by() %>% summarize()`\n", "\n", "آر میں گروپ شدہ ایگریگیشن آسانی سے درج ذیل طریقے سے کی جا سکتی ہے:\n", "\n", "`dplyr::group_by() %>% summarize()`\n", "\n", "- `dplyr::group_by()` تجزیے کی اکائی کو مکمل ڈیٹا سیٹ سے انفرادی گروپس میں تبدیل کرتا ہے، جیسے کہ ہر مہینے کے حساب سے۔\n", "\n", "- `dplyr::summarize()` ایک نیا ڈیٹا فریم بناتا ہے جس میں ہر گروپنگ ویریبل کے لیے ایک کالم اور آپ کے دیے گئے سمری شماریات کے لیے ایک کالم ہوتا ہے۔\n", "\n", "مثال کے طور پر، ہم `dplyr::group_by() %>% summarize()` کا استعمال کر سکتے ہیں تاکہ کدو کو **Month** کالمز کی بنیاد پر گروپس میں تقسیم کریں اور پھر ہر مہینے کے لیے **mean price** معلوم کریں۔\n" ], "metadata": { "id": "jMakvJZIcVkh" } }, { "cell_type": "code", "execution_count": null, "source": [ "# Find the average price of pumpkins per month\r\n", "new_pumpkins %>%\r\n", " group_by(Month) %>% \r\n", " summarise(mean_price = mean(Price))" ], "outputs": [], "metadata": { "id": "6kVSUa2Bcilf" } }, { "cell_type": "markdown", "source": [ "مختصر!✨\n", "\n", "مہینوں جیسے زمرہ وار خصوصیات کو بار پلاٹ 📊 کے ذریعے بہتر طور پر پیش کیا جا سکتا ہے۔ بار چارٹس کے لیے ذمہ دار لیئرز `geom_bar()` اور `geom_col()` ہیں۔ مزید معلومات کے لیے `?geom_bar` سے رجوع کریں۔\n", "\n", "چلیں ایک بناتے ہیں!\n" ], "metadata": { "id": "Kds48GUBcj3W" } }, { "cell_type": "code", "execution_count": null, "source": [ "# Find the average price of pumpkins per month then plot a bar chart\r\n", "new_pumpkins %>%\r\n", " group_by(Month) %>% \r\n", " summarise(mean_price = mean(Price)) %>% \r\n", " ggplot(aes(x = Month, y = mean_price)) +\r\n", " geom_col(fill = \"midnightblue\", alpha = 0.7) +\r\n", " ylab(\"Pumpkin Price\")" ], "outputs": [], "metadata": { "id": "VNbU1S3BcrxO" } }, { "cell_type": "markdown", "source": [ "🤩🤩 یہ ایک زیادہ مفید ڈیٹا ویژولائزیشن ہے! ایسا لگتا ہے کہ کدو کی سب سے زیادہ قیمت ستمبر اور اکتوبر میں ہوتی ہے۔ کیا یہ آپ کی توقعات پر پورا اترتا ہے؟ کیوں یا کیوں نہیں؟\n", "\n", "دوسرا سبق مکمل کرنے پر مبارک ہو 👏! آپ نے ماڈل بنانے کے لیے اپنا ڈیٹا تیار کیا، پھر ویژولائزیشنز کے ذریعے مزید بصیرتیں حاصل کیں!\n" ], "metadata": { "id": "zDm0VOzzcuzR" } }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n---\n\n**ڈسکلیمر**: \nیہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔\n" ] } ] }