diff --git a/translations/kn/6-NLP/4-Hotel-Reviews-1/solution/R/README.md b/translations/kn/6-NLP/4-Hotel-Reviews-1/solution/R/README.md new file mode 100644 index 000000000..0b37e04b0 --- /dev/null +++ b/translations/kn/6-NLP/4-Hotel-Reviews-1/solution/R/README.md @@ -0,0 +1,17 @@ + +ಇದು ತಾತ್ಕಾಲಿಕ ಪ್ಲೇಸ್‌ಹೋಲ್ಡರ್ ಆಗಿದೆ + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಪ್ರಮುಖ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/6-NLP/4-Hotel-Reviews-1/solution/notebook.ipynb b/translations/kn/6-NLP/4-Hotel-Reviews-1/solution/notebook.ipynb new file mode 100644 index 000000000..ff52bbd0e --- /dev/null +++ b/translations/kn/6-NLP/4-Hotel-Reviews-1/solution/notebook.ipynb @@ -0,0 +1,174 @@ +{ + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": 3 + }, + "orig_nbformat": 4, + "coopTranslator": { + "original_hash": "2d05e7db439376aa824f4b387f8324ca", + "translation_date": "2025-12-19T16:49:31+00:00", + "source_file": "6-NLP/4-Hotel-Reviews-1/solution/notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# EDA\n", + "import pandas as pd\n", + "import time" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def get_difference_review_avg(row):\n", + " return row[\"Average_Score\"] - row[\"Calc_Average_Score\"]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Load the hotel reviews from CSV\n", + "print(\"Loading data file now, this could take a while depending on file size\")\n", + "start = time.time()\n", + "df = pd.read_csv('../../data/Hotel_Reviews.csv')\n", + "end = time.time()\n", + "print(\"Loading took \" + str(round(end - start, 2)) + \" seconds\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# What shape is the data (rows, columns)?\n", + "print(\"The shape of the data (rows, cols) is \" + str(df.shape))\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# value_counts() creates a Series object that has index and values\n", + "# in this case, the country and the frequency they occur in reviewer nationality\n", + "nationality_freq = df[\"Reviewer_Nationality\"].value_counts()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# What reviewer nationality is the most common in the dataset?\n", + "print(\"The highest frequency reviewer nationality is \" + str(nationality_freq.index[0]).strip() + \" with \" + str(nationality_freq[0]) + \" reviews.\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# What is the top 10 most common nationalities and their frequencies?\n", + "print(\"The top 10 highest frequency reviewer nationalities are:\")\n", + "print(nationality_freq[0:10].to_string())\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# How many unique nationalities are there?\n", + "print(\"There are \" + str(nationality_freq.index.size) + \" unique nationalities in the dataset\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# What was the most frequently reviewed hotel for the top 10 nationalities - print the hotel and number of reviews\n", + "for nat in nationality_freq[:10].index:\n", + " # First, extract all the rows that match the criteria into a new dataframe\n", + " nat_df = df[df[\"Reviewer_Nationality\"] == nat] \n", + " # Now get the hotel freq\n", + " freq = nat_df[\"Hotel_Name\"].value_counts()\n", + " print(\"The most reviewed hotel for \" + str(nat).strip() + \" was \" + str(freq.index[0]) + \" with \" + str(freq[0]) + \" reviews.\") \n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# How many reviews are there per hotel (frequency count of hotel) and do the results match the value in `Total_Number_of_Reviews`?\n", + "# First create a new dataframe based on the old one, removing the uneeded columns\n", + "hotel_freq_df = df.drop([\"Hotel_Address\", \"Additional_Number_of_Scoring\", \"Review_Date\", \"Average_Score\", \"Reviewer_Nationality\", \"Negative_Review\", \"Review_Total_Negative_Word_Counts\", \"Positive_Review\", \"Review_Total_Positive_Word_Counts\", \"Total_Number_of_Reviews_Reviewer_Has_Given\", \"Reviewer_Score\", \"Tags\", \"days_since_review\", \"lat\", \"lng\"], axis = 1)\n", + "# Group the rows by Hotel_Name, count them and put the result in a new column Total_Reviews_Found\n", + "hotel_freq_df['Total_Reviews_Found'] = hotel_freq_df.groupby('Hotel_Name').transform('count')\n", + "# Get rid of all the duplicated rows\n", + "hotel_freq_df = hotel_freq_df.drop_duplicates(subset = [\"Hotel_Name\"])\n", + "print()\n", + "print(hotel_freq_df.to_string())\n", + "print(str(hotel_freq_df.shape))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# While there is an `Average_Score` for each hotel according to the dataset, \n", + "# you can also calculate an average score (getting the average of all reviewer scores in the dataset for each hotel)\n", + "# Add a new column to your dataframe with the column header `Calc_Average_Score` that contains that calculated average. \n", + "df['Calc_Average_Score'] = round(df.groupby('Hotel_Name').Reviewer_Score.transform('mean'), 1)\n", + "# Add a new column with the difference between the two average scores\n", + "df[\"Average_Score_Difference\"] = df.apply(get_difference_review_avg, axis = 1)\n", + "# Create a df without all the duplicates of Hotel_Name (so only 1 row per hotel)\n", + "review_scores_df = df.drop_duplicates(subset = [\"Hotel_Name\"])\n", + "# Sort the dataframe to find the lowest and highest average score difference\n", + "review_scores_df = review_scores_df.sort_values(by=[\"Average_Score_Difference\"])\n", + "print(review_scores_df[[\"Average_Score_Difference\", \"Average_Score\", \"Calc_Average_Score\", \"Hotel_Name\"]])\n", + "# Do any hotels have the same (rounded to 1 decimal place) `Average_Score` and `Calc_Average_Score`?\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/kn/6-NLP/5-Hotel-Reviews-2/README.md b/translations/kn/6-NLP/5-Hotel-Reviews-2/README.md new file mode 100644 index 000000000..be335e791 --- /dev/null +++ b/translations/kn/6-NLP/5-Hotel-Reviews-2/README.md @@ -0,0 +1,391 @@ + +# ಹೋಟೆಲ್ ವಿಮರ್ಶೆಗಳೊಂದಿಗೆ ಭಾವನೆ ವಿಶ್ಲೇಷಣೆ + +ನೀವು ಈಗಾಗಲೇ ಡೇಟಾಸೆಟ್ ಅನ್ನು ವಿವರವಾಗಿ ಅನ್ವೇಷಿಸಿದ್ದೀರಿ, ಈಗ ಕಾಲಮ್‌ಗಳನ್ನು ಫಿಲ್ಟರ್ ಮಾಡಿ ನಂತರ ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ NLP ತಂತ್ರಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಹೋಟೆಲ್‌ಗಳ ಬಗ್ಗೆ ಹೊಸ洞察ಗಳನ್ನು ಪಡೆಯುವ ಸಮಯವಾಗಿದೆ. + +## [ಪೂರ್ವ-ಲೇಕ್ಚರ್ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) + +### ಫಿಲ್ಟರಿಂಗ್ ಮತ್ತು ಭಾವನೆ ವಿಶ್ಲೇಷಣೆ ಕಾರ್ಯಾಚರಣೆಗಳು + +ನೀವು ಗಮನಿಸಿದ್ದಂತೆ, ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ಕೆಲವು ಸಮಸ್ಯೆಗಳಿವೆ. ಕೆಲವು ಕಾಲಮ್‌ಗಳು ಅರ್ಥವಿಲ್ಲದ ಮಾಹಿತಿಯಿಂದ ತುಂಬಿವೆ, ಇತರವು ತಪ್ಪಾಗಿವೆ ಎಂದು ತೋರುತ್ತದೆ. ಅವು ಸರಿಯಾಗಿದ್ದರೆ, ಅವು ಹೇಗೆ ಲೆಕ್ಕಿಸಲ್ಪಟ್ಟಿವೆ ಎಂಬುದು ಸ್ಪಷ್ಟವಿಲ್ಲ, ಮತ್ತು ಉತ್ತರಗಳನ್ನು ನಿಮ್ಮ ಸ್ವಂತ ಲೆಕ್ಕಾಚಾರಗಳಿಂದ ಸ್ವತಂತ್ರವಾಗಿ ಪರಿಶೀಲಿಸಲಾಗುವುದಿಲ್ಲ. + +## ವ್ಯಾಯಾಮ: ಸ್ವಲ್ಪ ಹೆಚ್ಚು ಡೇಟಾ ಪ್ರಕ್ರಿಯೆ + +ಡೇಟಾವನ್ನು ಸ್ವಲ್ಪ ಹೆಚ್ಚು ಸ್ವಚ್ಛಗೊಳಿಸಿ. ನಂತರ ಉಪಯುಕ್ತವಾಗುವ ಕಾಲಮ್‌ಗಳನ್ನು ಸೇರಿಸಿ, ಇತರ ಕಾಲಮ್‌ಗಳ ಮೌಲ್ಯಗಳನ್ನು ಬದಲಿಸಿ, ಮತ್ತು ಕೆಲವು ಕಾಲಮ್‌ಗಳನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ತೆಗೆದುಹಾಕಿ. + +1. ಪ್ರಾಥಮಿಕ ಕಾಲಮ್ ಪ್ರಕ್ರಿಯೆ + + 1. `lat` ಮತ್ತು `lng` ಅನ್ನು ತೆಗೆದುಹಾಕಿ + + 2. `Hotel_Address` ಮೌಲ್ಯಗಳನ್ನು ಕೆಳಗಿನ ಮೌಲ್ಯಗಳಿಂದ ಬದಲಿಸಿ (ವಿಳಾಸದಲ್ಲಿ ನಗರ ಮತ್ತು ದೇಶದ ಹೆಸರು ಇದ್ದರೆ, ಅದನ್ನು ಕೇವಲ ನಗರ ಮತ್ತು ದೇಶಕ್ಕೆ ಬದಲಿಸಿ). + + ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ಇವು ಮಾತ್ರ ನಗರಗಳು ಮತ್ತು ದೇಶಗಳು: + + ಆಂಸ್ಟರ್ಡ್ಯಾಮ್, ನೆದರ್ಲ್ಯಾಂಡ್ಸ್ + + ಬಾರ್ಸಿಲೋನಾ, ಸ್ಪೇನ್ + + ಲಂಡನ್, ಯುನೈಟೆಡ್ ಕಿಂಗ್‌ಡಮ್ + + ಮಿಲಾನ್, ಇಟಲಿ + + ಪ್ಯಾರಿಸ್, ಫ್ರಾನ್ಸ್ + + ವಿಯೆನ್ನಾ, ಆಸ್ಟ್ರಿಯಾ + + ```python + def replace_address(row): + if "Netherlands" in row["Hotel_Address"]: + return "Amsterdam, Netherlands" + elif "Barcelona" in row["Hotel_Address"]: + return "Barcelona, Spain" + elif "United Kingdom" in row["Hotel_Address"]: + return "London, United Kingdom" + elif "Milan" in row["Hotel_Address"]: + return "Milan, Italy" + elif "France" in row["Hotel_Address"]: + return "Paris, France" + elif "Vienna" in row["Hotel_Address"]: + return "Vienna, Austria" + + # ಎಲ್ಲಾ ವಿಳಾಸಗಳನ್ನು ಸಂಕ್ಷಿಪ್ತ, ಹೆಚ್ಚು ಉಪಯುಕ್ತ ರೂಪದಲ್ಲಿ ಬದಲಾಯಿಸಿ + df["Hotel_Address"] = df.apply(replace_address, axis = 1) + # value_counts() ನ ಮೊತ್ತವು ವಿಮರ್ಶೆಗಳ ಒಟ್ಟು ಸಂಖ್ಯೆಗೆ ಸೇರಬೇಕು + print(df["Hotel_Address"].value_counts()) + ``` + + ಈಗ ನೀವು ದೇಶ ಮಟ್ಟದ ಡೇಟಾವನ್ನು ಪ್ರಶ್ನಿಸಬಹುದು: + + ```python + display(df.groupby("Hotel_Address").agg({"Hotel_Name": "nunique"})) + ``` + + | Hotel_Address | Hotel_Name | + | :--------------------- | :--------: | + | Amsterdam, Netherlands | 105 | + | Barcelona, Spain | 211 | + | London, United Kingdom | 400 | + | Milan, Italy | 162 | + | Paris, France | 458 | + | Vienna, Austria | 158 | + +2. ಹೋಟೆಲ್ ಮೆಟಾ-ವಿಮರ್ಶೆ ಕಾಲಮ್‌ಗಳನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಿ + + 1. `Additional_Number_of_Scoring` ಅನ್ನು ತೆಗೆದುಹಾಕಿ + + 2. `Total_Number_of_Reviews` ಅನ್ನು ಆ ಹೋಟೆಲ್‌ಗೆ ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ನಿಜವಾಗಿಯೂ ಇರುವ ವಿಮರ್ಶೆಗಳ ಒಟ್ಟು ಸಂಖ್ಯೆಯಿಂದ ಬದಲಿಸಿ + + 3. `Average_Score` ಅನ್ನು ನಮ್ಮ ಸ್ವಂತ ಲೆಕ್ಕಿಸಿದ ಅಂಕದಿಂದ ಬದಲಿಸಿ + + ```python + # `Additional_Number_of_Scoring` ಅನ್ನು ತೆಗೆದುಹಾಕಿ + df.drop(["Additional_Number_of_Scoring"], axis = 1, inplace=True) + # `Total_Number_of_Reviews` ಮತ್ತು `Average_Score` ಅನ್ನು ನಮ್ಮ ಸ್ವಂತ ಲೆಕ್ಕಹಾಕಿದ ಮೌಲ್ಯಗಳಿಂದ ಬದಲಾಯಿಸಿ + df.Total_Number_of_Reviews = df.groupby('Hotel_Name').transform('count') + df.Average_Score = round(df.groupby('Hotel_Name').Reviewer_Score.transform('mean'), 1) + ``` + +3. ವಿಮರ್ಶೆ ಕಾಲಮ್‌ಗಳನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಿ + + 1. `Review_Total_Negative_Word_Counts`, `Review_Total_Positive_Word_Counts`, `Review_Date` ಮತ್ತು `days_since_review` ಅನ್ನು ತೆಗೆದುಹಾಕಿ + + 2. `Reviewer_Score`, `Negative_Review`, ಮತ್ತು `Positive_Review` ಅನ್ನು ಹಾಗೆಯೇ ಇಡಿರಿ, + + 3. ಈಗಿಗೆ `Tags` ಅನ್ನು ಇಡಿರಿ + + - ಮುಂದಿನ ವಿಭಾಗದಲ್ಲಿ ಟ್ಯಾಗ್‌ಗಳ ಮೇಲೆ ಕೆಲವು ಹೆಚ್ಚುವರಿ ಫಿಲ್ಟರಿಂಗ್ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಮಾಡಲಾಗುವುದು ಮತ್ತು ನಂತರ ಟ್ಯಾಗ್‌ಗಳನ್ನು ತೆಗೆದುಹಾಕಲಾಗುವುದು + +4. ವಿಮರ್ಶಕರ ಕಾಲಮ್‌ಗಳನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಿ + + 1. `Total_Number_of_Reviews_Reviewer_Has_Given` ಅನ್ನು ತೆಗೆದುಹಾಕಿ + + 2. `Reviewer_Nationality` ಅನ್ನು ಇಡಿರಿ + +### ಟ್ಯಾಗ್ ಕಾಲಮ್‌ಗಳು + +`Tag` ಕಾಲಮ್ ಸಮಸ್ಯೆಯಾಗಿದೆ ಏಕೆಂದರೆ ಅದು ಕಾಲಮ್‌ನಲ್ಲಿ ಪಠ್ಯ ರೂಪದಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾದ ಪಟ್ಟಿ. ದುರದೃಷ್ಟವಶಾತ್, ಈ ಕಾಲಮ್‌ನ ಉಪ ವಿಭಾಗಗಳ ಕ್ರಮ ಮತ್ತು ಸಂಖ್ಯೆ ಯಾವಾಗಲೂ ಒಂದೇ ರೀತಿಯಲ್ಲ. ಮಾನವನಿಗೆ ಸರಿಯಾದ ವಾಕ್ಯಗಳನ್ನು ಗುರುತಿಸುವುದು ಕಷ್ಟ, ಏಕೆಂದರೆ 515,000 ಸಾಲುಗಳು, 1427 ಹೋಟೆಲ್‌ಗಳು ಇವೆ, ಮತ್ತು ಪ್ರತಿಯೊಂದು ವಿಮರ್ಶಕನು ಆಯ್ಕೆಮಾಡಬಹುದಾದ ಸ್ವಲ್ಪ ವಿಭಿನ್ನ ಆಯ್ಕೆಗಳು ಇವೆ. ಇಲ್ಲಿ NLP ಪ್ರಭಾವಶಾಲಿ. ನೀವು ಪಠ್ಯವನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡಿ ಸಾಮಾನ್ಯ ವಾಕ್ಯಗಳನ್ನು ಕಂಡುಹಿಡಿದು ಅವುಗಳನ್ನು ಎಣಿಸಬಹುದು. + +ದುರದೃಷ್ಟವಶಾತ್, ನಾವು ಏಕಪದಗಳಲ್ಲಿ ಆಸಕ್ತಿ ಹೊಂದಿಲ್ಲ, ಆದರೆ ಬಹುಪದ ವಾಕ್ಯಗಳಲ್ಲಿ (ಉದಾ: *Business trip*). ಇಷ್ಟು ದೊಡ್ಡ ಡೇಟಾದ ಮೇಲೆ ಬಹುಪದ ಫ್ರೀಕ್ವೆನ್ಸಿ ವಿತರಣಾ ಆಲ್ಗೋರಿದಮ್ ಅನ್ನು ನಡೆಸುವುದು (6762646 ಪದಗಳು) ಬಹಳ ಸಮಯ ತೆಗೆದುಕೊಳ್ಳಬಹುದು, ಆದರೆ ಡೇಟಾವನ್ನು ನೋಡದೆ ಇದನ್ನು ಅಗತ್ಯ ವೆಚ್ಚವೆಂದು ಭಾಸವಾಗುತ್ತದೆ. ಇಲ್ಲಿ ಅನ್ವೇಷಣಾತ್ಮಕ ಡೇಟಾ ವಿಶ್ಲೇಷಣೆ ಉಪಯುಕ್ತವಾಗುತ್ತದೆ, ಏಕೆಂದರೆ ನೀವು ಟ್ಯಾಗ್‌ಗಳ ಮಾದರಿಯನ್ನು ನೋಡಿದ್ದೀರಿ ಉದಾ: `[' Business trip ', ' Solo traveler ', ' Single Room ', ' Stayed 5 nights ', ' Submitted from a mobile device ']` , ನೀವು ಪ್ರಕ್ರಿಯೆಯನ್ನು ಬಹಳ ಕಡಿಮೆ ಮಾಡಲು ಸಾಧ್ಯವಿದೆಯೇ ಎಂದು ಕೇಳಬಹುದು. ಅದೃಷ್ಟವಶಾತ್, ಸಾಧ್ಯ - ಆದರೆ ಮೊದಲು ನೀವು ಆಸಕ್ತಿಯ ಟ್ಯಾಗ್‌ಗಳನ್ನು ಖಚಿತಪಡಿಸಲು ಕೆಲವು ಹಂತಗಳನ್ನು ಅನುಸರಿಸಬೇಕು. + +### ಟ್ಯಾಗ್‌ಗಳನ್ನು ಫಿಲ್ಟರ್ ಮಾಡುವುದು + +ಡೇಟಾಸೆಟ್‌ನ ಗುರಿ ಭಾವನೆ ಮತ್ತು ಕಾಲಮ್‌ಗಳನ್ನು ಸೇರಿಸುವುದು, ಇದು ನಿಮಗೆ ಅತ್ಯುತ್ತಮ ಹೋಟೆಲ್ ಆಯ್ಕೆ ಮಾಡಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ (ನಿಮಗಾಗಿ ಅಥವಾ ಗ್ರಾಹಕನಿಗೆ ಹೋಟೆಲ್ ಶಿಫಾರಸು ಬಾಟ್ ಮಾಡಲು). ನೀವು ಟ್ಯಾಗ್‌ಗಳು ಅಂತಿಮ ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ಉಪಯುಕ್ತವೋ ಇಲ್ಲವೋ ಎಂದು ಕೇಳಿಕೊಳ್ಳಬೇಕು. ಇಲ್ಲಿದೆ ಒಂದು ವ್ಯಾಖ್ಯಾನ (ನೀವು ಬೇರೆ ಕಾರಣಗಳಿಗಾಗಿ ಡೇಟಾಸೆಟ್ ಬೇಕಾದರೆ ವಿಭಿನ್ನ ಟ್ಯಾಗ್‌ಗಳು ಒಳಗಾಗಬಹುದು/ಬಾಹ್ಯವಾಗಬಹುದು): + +1. ಪ್ರಯಾಣದ ಪ್ರಕಾರ ಸಂಬಂಧಿಸಿದೆ, ಮತ್ತು ಅದು ಉಳಿಯಬೇಕು +2. ಅತಿಥಿ ಗುಂಪಿನ ಪ್ರಕಾರ ಮುಖ್ಯವಾಗಿದೆ, ಮತ್ತು ಅದು ಉಳಿಯಬೇಕು +3. ಅತಿಥಿ ಉಳಿದ ಕೊಠಡಿ, ಸೂಟ್ ಅಥವಾ ಸ್ಟುಡಿಯೋ ಪ್ರಕಾರ ಅಸಂಬಂಧಿತ (ಎಲ್ಲಾ ಹೋಟೆಲ್‌ಗಳಲ್ಲಿಯೂ ಮೂಲತಃ ಒಂದೇ ರೀತಿಯ ಕೊಠಡಿಗಳು ಇವೆ) +4. ವಿಮರ್ಶೆ ಸಲ್ಲಿಸಿದ ಸಾಧನ ಅಸಂಬಂಧಿತ +5. ವಿಮರ್ಶಕನು ಉಳಿದ ರಾತ್ರಿ ಸಂಖ್ಯೆ *ಸಂಬಂಧಿಸಬಹುದು* ಆದರೆ ಅದು ದೂರದೃಷ್ಟಿ ಮತ್ತು ಬಹುಶಃ ಅಸಂಬಂಧಿತ + +ಸಾರಾಂಶವಾಗಿ, **2 ವಿಧದ ಟ್ಯಾಗ್‌ಗಳನ್ನು ಉಳಿಸಿ ಮತ್ತು ಇತರವನ್ನು ತೆಗೆದುಹಾಕಿ**. + +ಮೊದಲು, ನೀವು ಟ್ಯಾಗ್‌ಗಳನ್ನು ಉತ್ತಮ ಸ್ವರೂಪದಲ್ಲಿ ಇರಿಸುವವರೆಗೆ ಎಣಿಸಲು ಬಯಸುವುದಿಲ್ಲ, ಅಂದರೆ ಚದರ ಕೊಠಡಿಗಳು ಮತ್ತು ಉಲ್ಲೇಖಗಳನ್ನು ತೆಗೆದುಹಾಕುವುದು. ನೀವು ಇದನ್ನು ಹಲವಾರು ರೀತಿಯಲ್ಲಿ ಮಾಡಬಹುದು, ಆದರೆ ವೇಗವಾಗಿ ಮಾಡಬೇಕಾಗುತ್ತದೆ ಏಕೆಂದರೆ ಬಹಳ ಡೇಟಾ ಪ್ರಕ್ರಿಯೆಗೆ ಸಮಯ ಬೇಕಾಗಬಹುದು. ಅದೃಷ್ಟವಶಾತ್, pandas ಇದನ್ನು ಸುಲಭವಾಗಿ ಮಾಡುತ್ತದೆ. + +```Python +# ತೆರೆಯುವ ಮತ್ತು ಮುಚ್ಚುವ ಕೋಷ್ಠಕಗಳನ್ನು ತೆಗೆದುಹಾಕಿ +df.Tags = df.Tags.str.strip("[']") +# ಎಲ್ಲಾ ಉಲ್ಲೇಖಗಳನ್ನು ಕೂಡ ತೆಗೆದುಹಾಕಿ +df.Tags = df.Tags.str.replace(" ', '", ",", regex = False) +``` + +ಪ್ರತಿ ಟ್ಯಾಗ್ ಹೀಗೆ ಆಗುತ್ತದೆ: `Business trip, Solo traveler, Single Room, Stayed 5 nights, Submitted from a mobile device`. + +ಮುಂದೆ ಸಮಸ್ಯೆ ಕಂಡುಬರುತ್ತದೆ. ಕೆಲವು ವಿಮರ್ಶೆಗಳು ಅಥವಾ ಸಾಲುಗಳು 5 ಕಾಲಮ್‌ಗಳಿವೆ, ಕೆಲವು 3, ಕೆಲವು 6. ಇದು ಡೇಟಾಸೆಟ್ ರಚನೆಯ ಪರಿಣಾಮ, ಮತ್ತು ಸರಿಪಡಿಸಲು ಕಷ್ಟ. ನೀವು ಪ್ರತಿಯೊಂದು ವಾಕ್ಯದ ಫ್ರೀಕ್ವೆನ್ಸಿ ಎಣಿಕೆ ಪಡೆಯಲು ಬಯಸುತ್ತೀರಿ, ಆದರೆ ಅವು ಪ್ರತಿ ವಿಮರ್ಶೆಯಲ್ಲಿ ವಿಭಿನ್ನ ಕ್ರಮದಲ್ಲಿವೆ, ಆದ್ದರಿಂದ ಎಣಿಕೆ ತಪ್ಪಾಗಬಹುದು, ಮತ್ತು ಹೋಟೆಲ್‌ಗೆ ಅದು ಅರ್ಹವಾದ ಟ್ಯಾಗ್ ನೀಡಲಾಗದಿರಬಹುದು. + +ಬದಲಿಗೆ ನೀವು ವಿಭಿನ್ನ ಕ್ರಮವನ್ನು ನಮ್ಮ ಲಾಭಕ್ಕೆ ಬಳಸುತ್ತೀರಿ, ಏಕೆಂದರೆ ಪ್ರತಿಯೊಂದು ಟ್ಯಾಗ್ ಬಹುಪದವಾಗಿದೆ ಆದರೆ ಕಾಮಾ ಮೂಲಕ ವಿಭಜಿಸಲಾಗಿದೆ! ಸರಳ ವಿಧಾನವೆಂದರೆ 6 ತಾತ್ಕಾಲಿಕ ಕಾಲಮ್‌ಗಳನ್ನು ರಚಿಸಿ, ಪ್ರತಿಯೊಂದು ಟ್ಯಾಗ್ ಅನ್ನು ಅದರ ಕ್ರಮಕ್ಕೆ ಹೊಂದಿಕೊಂಡು ಕಾಲಮ್‌ಗೆ ಸೇರಿಸಿ. ನಂತರ ಆ 6 ಕಾಲಮ್‌ಗಳನ್ನು ಒಂದು ದೊಡ್ಡ ಕಾಲಮ್‌ಗೆ ಮರ್ಜ್ ಮಾಡಿ `value_counts()` ವಿಧಾನವನ್ನು ಆ ಕಾಲಮ್ ಮೇಲೆ ಚಾಲನೆ ಮಾಡಬಹುದು. ಅದನ್ನು ಮುದ್ರಿಸಿದಾಗ, 2428 ವಿಭಿನ್ನ ಟ್ಯಾಗ್‌ಗಳಿವೆ. ಇಲ್ಲಿದೆ ಸಣ್ಣ ಮಾದರಿ: + +| Tag | Count | +| ------------------------------ | ------ | +| Leisure trip | 417778 | +| Submitted from a mobile device | 307640 | +| Couple | 252294 | +| Stayed 1 night | 193645 | +| Stayed 2 nights | 133937 | +| Solo traveler | 108545 | +| Stayed 3 nights | 95821 | +| Business trip | 82939 | +| Group | 65392 | +| Family with young children | 61015 | +| Stayed 4 nights | 47817 | +| Double Room | 35207 | +| Standard Double Room | 32248 | +| Superior Double Room | 31393 | +| Family with older children | 26349 | +| Deluxe Double Room | 24823 | +| Double or Twin Room | 22393 | +| Stayed 5 nights | 20845 | +| Standard Double or Twin Room | 17483 | +| Classic Double Room | 16989 | +| Superior Double or Twin Room | 13570 | +| 2 rooms | 12393 | + +ಕೆಲವು ಸಾಮಾನ್ಯ ಟ್ಯಾಗ್‌ಗಳು `Submitted from a mobile device` ನಮಗೆ ಉಪಯೋಗವಿಲ್ಲ, ಆದ್ದರಿಂದ ಅವುಗಳನ್ನು ಎಣಿಸುವ ಮೊದಲು ತೆಗೆದುಹಾಕುವುದು ಬುದ್ಧಿವಂತಿಕೆ, ಆದರೆ ಇದು ವೇಗವಾದ ಕಾರ್ಯವಾಗಿರುವುದರಿಂದ ಅವುಗಳನ್ನು ಉಳಿಸಿ ನಿರ್ಲಕ್ಷಿಸಬಹುದು. + +### ಉಳಿದಿರುವ ಟ್ಯಾಗ್‌ಗಳನ್ನು ತೆಗೆದುಹಾಕುವುದು + +ಈ ಟ್ಯಾಗ್‌ಗಳನ್ನು ತೆಗೆದುಹಾಕುವುದು ಹಂತ 1, ಇದು ಪರಿಗಣಿಸಬೇಕಾದ ಟ್ಯಾಗ್‌ಗಳ ಒಟ್ಟು ಸಂಖ್ಯೆಯನ್ನು ಸ್ವಲ್ಪ ಕಡಿಮೆ ಮಾಡುತ್ತದೆ. ಗಮನಿಸಿ ನೀವು ಅವುಗಳನ್ನು ಡೇಟಾಸೆಟ್‌ನಿಂದ ತೆಗೆದುಹಾಕುವುದಿಲ್ಲ, ಕೇವಲ ವಿಮರ್ಶೆಗಳ ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ಎಣಿಕೆ/ಉಳಿಸುವ ಮೌಲ್ಯಗಳ ಪರಿಗಣನೆಗೆ ತೆಗೆದುಹಾಕುತ್ತೀರಿ. + +| Length of stay | Count | +| ---------------- | ------ | +| Stayed 1 night | 193645 | +| Stayed 2 nights | 133937 | +| Stayed 3 nights | 95821 | +| Stayed 4 nights | 47817 | +| Stayed 5 nights | 20845 | +| Stayed 6 nights | 9776 | +| Stayed 7 nights | 7399 | +| Stayed 8 nights | 2502 | +| Stayed 9 nights | 1293 | +| ... | ... | + +ಕೊಠಡಿಗಳ, ಸೂಟ್‌ಗಳ, ಸ್ಟುಡಿಯೋಗಳ, ಅಪಾರ್ಟ್‌ಮೆಂಟ್‌ಗಳ ಬಹುಮತ variety ಇದೆ. ಅವು ಎಲ್ಲವೂ ಅಂದಾಜು ಮಾಡಬಹುದಾದ ಅರ್ಥ ಹೊಂದಿವೆ ಮತ್ತು ನಿಮಗೆ ಸಂಬಂಧವಿಲ್ಲ, ಆದ್ದರಿಂದ ಅವುಗಳನ್ನು ಪರಿಗಣನೆಗೆ ತೆಗೆದುಹಾಕಿ. + +| Type of room | Count | +| ----------------------------- | ----- | +| Double Room | 35207 | +| Standard Double Room | 32248 | +| Superior Double Room | 31393 | +| Deluxe Double Room | 24823 | +| Double or Twin Room | 22393 | +| Standard Double or Twin Room | 17483 | +| Classic Double Room | 16989 | +| Superior Double or Twin Room | 13570 | + +ಕೊನೆಗೆ, ಮತ್ತು ಇದು ಸಂತೋಷದಾಯಕ (ಏಕೆಂದರೆ ಬಹಳ ಪ್ರಕ್ರಿಯೆ ಬೇಕಾಗಲಿಲ್ಲ), ನೀವು ಕೆಳಗಿನ *ಉಪಯುಕ್ತ* ಟ್ಯಾಗ್‌ಗಳನ್ನು ಹೊಂದಿರುತ್ತೀರಿ: + +| Tag | Count | +| --------------------------------------------- | ------ | +| Leisure trip | 417778 | +| Couple | 252294 | +| Solo traveler | 108545 | +| Business trip | 82939 | +| Group (combined with Travellers with friends) | 67535 | +| Family with young children | 61015 | +| Family with older children | 26349 | +| With a pet | 1405 | + +ನೀವು ವಾದಿಸಬಹುದು `Travellers with friends` ಮತ್ತು `Group` ಬಹುಶಃ ಒಂದೇ, ಮತ್ತು ಮೇಲಿನಂತೆ ಅವುಗಳನ್ನು ಸಂಯೋಜಿಸುವುದು ನ್ಯಾಯಸಮ್ಮತ. ಸರಿಯಾದ ಟ್ಯಾಗ್‌ಗಳನ್ನು ಗುರುತಿಸುವ ಕೋಡ್ [Tags ನೋಟ್ಬುಕ್](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb) ನಲ್ಲಿ ಇದೆ. + +ಕೊನೆಯ ಹಂತವು ಈ ಟ್ಯಾಗ್‌ಗಳಿಗಾಗಿ ಹೊಸ ಕಾಲಮ್‌ಗಳನ್ನು ರಚಿಸುವುದು. ನಂತರ, ಪ್ರತಿಯೊಂದು ವಿಮರ್ಶೆ ಸಾಲಿಗೆ, `Tag` ಕಾಲಮ್ ಹೊಸ ಕಾಲಮ್‌ಗಳಲ್ಲಿ ಒಂದೊಂದರೊಂದಿಗೆ ಹೊಂದಿದರೆ, 1 ಸೇರಿಸಿ, ಇಲ್ಲದಿದ್ದರೆ 0 ಸೇರಿಸಿ. ಅಂತಿಮ ಫಲಿತಾಂಶವು ಎಷ್ಟು ವಿಮರ್ಶಕರು ಈ ಹೋಟೆಲ್ ಆಯ್ಕೆಮಾಡಿದ್ದಾರೆ ಎಂಬ ಎಣಿಕೆ ಆಗಿರುತ್ತದೆ, ಉದಾ: ವ್ಯವಹಾರ ಅಥವಾ ವಿಶ್ರಾಂತಿ, ಅಥವಾ ಪಶುಪಾಲನೆಗಾಗಿ, ಮತ್ತು ಇದು ಹೋಟೆಲ್ ಶಿಫಾರಸು ಮಾಡುವಾಗ ಉಪಯುಕ್ತ ಮಾಹಿತಿ. + +```python +# ಟ್ಯಾಗ್‌ಗಳನ್ನು ಹೊಸ ಕಾಲಮ್ಗಳಾಗಿ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಿ +# Hotel_Reviews_Tags.py ಫೈಲ್, ಅತ್ಯಂತ ಪ್ರಮುಖ ಟ್ಯಾಗ್‌ಗಳನ್ನು ಗುರುತಿಸುತ್ತದೆ +# ವಿಶ್ರಾಂತಿ ಪ್ರವಾಸ, ಜೋಡಿ, ಏಕಾಂಗ ಪ್ರವಾಸಿ, ವ್ಯವಹಾರಿಕ ಪ್ರವಾಸ, ಸ್ನೇಹಿತರೊಂದಿಗೆ ಪ್ರಯಾಣಿಕರೊಂದಿಗೆ ಗುಂಪು +# ಯುವ ಮಕ್ಕಳೊಂದಿಗೆ ಕುಟುಂಬ, ಹಿರಿಯ ಮಕ್ಕಳೊಂದಿಗೆ ಕುಟುಂಬ, ಪಶುವೊಂದರೊಂದಿಗೆ +df["Leisure_trip"] = df.Tags.apply(lambda tag: 1 if "Leisure trip" in tag else 0) +df["Couple"] = df.Tags.apply(lambda tag: 1 if "Couple" in tag else 0) +df["Solo_traveler"] = df.Tags.apply(lambda tag: 1 if "Solo traveler" in tag else 0) +df["Business_trip"] = df.Tags.apply(lambda tag: 1 if "Business trip" in tag else 0) +df["Group"] = df.Tags.apply(lambda tag: 1 if "Group" in tag or "Travelers with friends" in tag else 0) +df["Family_with_young_children"] = df.Tags.apply(lambda tag: 1 if "Family with young children" in tag else 0) +df["Family_with_older_children"] = df.Tags.apply(lambda tag: 1 if "Family with older children" in tag else 0) +df["With_a_pet"] = df.Tags.apply(lambda tag: 1 if "With a pet" in tag else 0) + +``` + +### ನಿಮ್ಮ ಫೈಲ್ ಉಳಿಸಿ + +ಕೊನೆಗೆ, ಡೇಟಾಸೆಟ್ ಅನ್ನು ಈಗಿನ ಸ್ಥಿತಿಯಲ್ಲಿ ಹೊಸ ಹೆಸರಿನಿಂದ ಉಳಿಸಿ. + +```python +df.drop(["Review_Total_Negative_Word_Counts", "Review_Total_Positive_Word_Counts", "days_since_review", "Total_Number_of_Reviews_Reviewer_Has_Given"], axis = 1, inplace=True) + +# ಲೆಕ್ಕ ಹಾಕಲಾದ ಕಾಲಮ್‌ಗಳೊಂದಿಗೆ ಹೊಸ ಡೇಟಾ ಫೈಲ್ ಉಳಿಸಲಾಗುತ್ತಿದೆ +print("Saving results to Hotel_Reviews_Filtered.csv") +df.to_csv(r'../data/Hotel_Reviews_Filtered.csv', index = False) +``` + +## ಭಾವನೆ ವಿಶ್ಲೇಷಣೆ ಕಾರ್ಯಾಚರಣೆಗಳು + +ಈ ಕೊನೆಯ ವಿಭಾಗದಲ್ಲಿ, ನೀವು ವಿಮರ್ಶೆ ಕಾಲಮ್‌ಗಳಿಗೆ ಭಾವನೆ ವಿಶ್ಲೇಷಣೆಯನ್ನು ಅನ್ವಯಿಸಿ ಫಲಿತಾಂಶಗಳನ್ನು ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ಉಳಿಸುವಿರಿ. + +## ವ್ಯಾಯಾಮ: ಫಿಲ್ಟರ್ ಮಾಡಿದ ಡೇಟಾವನ್ನು ಲೋಡ್ ಮಾಡಿ ಮತ್ತು ಉಳಿಸಿ + +ಈಗ ನೀವು ಹಿಂದಿನ ವಿಭಾಗದಲ್ಲಿ ಉಳಿಸಿದ ಫಿಲ್ಟರ್ ಮಾಡಿದ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಲೋಡ್ ಮಾಡುತ್ತಿದ್ದೀರಿ, **ಮೂಲ ಡೇಟಾಸೆಟ್ ಅಲ್ಲ**. + +```python +import time +import pandas as pd +import nltk as nltk +from nltk.corpus import stopwords +from nltk.sentiment.vader import SentimentIntensityAnalyzer +nltk.download('vader_lexicon') + +# CSV ನಿಂದ ಫಿಲ್ಟರ್ ಮಾಡಲಾದ ಹೋಟೆಲ್ ವಿಮರ್ಶೆಗಳನ್ನು ಲೋಡ್ ಮಾಡಿ +df = pd.read_csv('../../data/Hotel_Reviews_Filtered.csv') + +# ನಿಮ್ಮ ಕೋಡ್ ಅನ್ನು ಇಲ್ಲಿ ಸೇರಿಸಲಾಗುವುದು + + +# ಕೊನೆಗೆ ಹೊಸ NLP ಡೇಟಾ ಸೇರಿಸಿದ ಹೋಟೆಲ್ ವಿಮರ್ಶೆಗಳನ್ನು ಉಳಿಸಲು ಮರೆಯಬೇಡಿ +print("Saving results to Hotel_Reviews_NLP.csv") +df.to_csv(r'../data/Hotel_Reviews_NLP.csv', index = False) +``` + +### ನಿಲ್ಲಿಸುವ ಪದಗಳನ್ನು ತೆಗೆದುಹಾಕುವುದು + +ನೀವು ನೆಗೆಟಿವ್ ಮತ್ತು ಪಾಸಿಟಿವ್ ವಿಮರ್ಶೆ ಕಾಲಮ್‌ಗಳಲ್ಲಿ ಭಾವನೆ ವಿಶ್ಲೇಷಣೆ ನಡೆಸಿದರೆ, ಅದು ಬಹಳ ಸಮಯ ತೆಗೆದುಕೊಳ್ಳಬಹುದು. ಶಕ್ತಿಶಾಲಿ ಟೆಸ್ಟ್ ಲ್ಯಾಪ್‌ಟಾಪ್‌ನಲ್ಲಿ ವೇಗವಾದ CPU ಇದ್ದು, 12 - 14 ನಿಮಿಷಗಳವರೆಗೆ ತೆಗೆದುಕೊಂಡಿತು, ಯಾವ ಭಾವನೆ ಗ್ರಂಥಾಲಯ ಬಳಸಿದೆಯೋ ಅವನ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿದೆ. ಇದು (ಸಾಪೇಕ್ಷವಾಗಿ) ದೀರ್ಘ ಸಮಯ, ಆದ್ದರಿಂದ ಅದನ್ನು ವೇಗಗೊಳಿಸಲು ಸಾಧ್ಯವಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸುವುದು ಸೂಕ್ತ. + +ನಿಲ್ಲಿಸುವ ಪದಗಳು ಅಥವಾ ಸಾಮಾನ್ಯ ಇಂಗ್ಲಿಷ್ ಪದಗಳು, ಅವು ವಾಕ್ಯದ ಭಾವನೆಯನ್ನು ಬದಲಾಯಿಸುವುದಿಲ್ಲ, ಅವುಗಳನ್ನು ತೆಗೆದುಹಾಕುವುದು ಮೊದಲ ಹಂತ. ಅವುಗಳನ್ನು ತೆಗೆದುಹಾಕುವುದರಿಂದ ಭಾವನೆ ವಿಶ್ಲೇಷಣೆ ವೇಗವಾಗಿ ನಡೆಯುತ್ತದೆ, ಆದರೆ ಕಡಿಮೆ ನಿಖರವಾಗುವುದಿಲ್ಲ (ನಿಲ್ಲಿಸುವ ಪದಗಳು ಭಾವನೆಗೆ ಪ್ರಭಾವ ಬೀರುವುದಿಲ್ಲ, ಆದರೆ ವಿಶ್ಲೇಷಣೆಯನ್ನು ನಿಧಾನಗೊಳಿಸುತ್ತವೆ). + +ಅತ್ಯಂತ ದೀರ್ಘ ನೆಗೆಟಿವ್ ವಿಮರ್ಶೆ 395 ಪದಗಳಿತ್ತು, ಆದರೆ ನಿಲ್ಲಿಸುವ ಪದಗಳನ್ನು ತೆಗೆದುಹಾಕಿದ ನಂತರ ಅದು 195 ಪದಗಳಾಗಿದೆ. + +ನಿಲ್ಲಿಸುವ ಪದಗಳನ್ನು ತೆಗೆದುಹಾಕುವುದು ಕೂಡ ವೇಗವಾದ ಕಾರ್ಯ, 2 ವಿಮರ್ಶೆ ಕಾಲಮ್‌ಗಳಿಂದ 515,000 ಸಾಲುಗಳಲ್ಲಿ 3.3 ಸೆಕೆಂಡುಗಳಲ್ಲಿ ತೆಗೆದುಕೊಂಡಿತು. ನಿಮ್ಮ ಸಾಧನದ CPU ವೇಗ, RAM, SSD ಇದ್ದೇ ಇಲ್ಲ, ಮತ್ತು ಇತರ ಕೆಲವು ಅಂಶಗಳ ಮೇಲೆ ಸ್ವಲ್ಪ ಹೆಚ್ಚು ಅಥವಾ ಕಡಿಮೆ ಸಮಯ ತೆಗೆದುಕೊಳ್ಳಬಹುದು. ಕಾರ್ಯದ ಸಾಪೇಕ್ಷ ಸಣ್ಣತೆ ಭಾವನೆ ವಿಶ್ಲೇಷಣೆಯ ಸಮಯವನ್ನು ಸುಧಾರಿಸಿದರೆ, ಅದನ್ನು ಮಾಡುವುದು ಲಾಭದಾಯಕ. + +```python +from nltk.corpus import stopwords + +# CSV ನಿಂದ ಹೋಟೆಲ್ ವಿಮರ್ಶೆಗಳನ್ನು ಲೋಡ್ ಮಾಡಿ +df = pd.read_csv("../../data/Hotel_Reviews_Filtered.csv") + +# ಸ್ಟಾಪ್ ಪದಗಳನ್ನು ತೆಗೆದುಹಾಕಿ - ಹೆಚ್ಚಿನ ಪಠ್ಯಕ್ಕೆ ಇದು ನಿಧಾನವಾಗಬಹುದು! +# ರಯಾನ್ ಹ್ಯಾನ್ (Kaggle ನಲ್ಲಿ ryanxjhan) ವಿವಿಧ ಸ್ಟಾಪ್ ಪದಗಳ ತೆಗೆದುಹಾಕುವ ವಿಧಾನಗಳ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಅಳೆಯುವ ಉತ್ತಮ ಪೋಸ್ಟ್ ಹೊಂದಿದ್ದಾರೆ +# https://www.kaggle.com/ryanxjhan/fast-stop-words-removal # ರಯಾನ್ ಶಿಫಾರಸು ಮಾಡುವ ವಿಧಾನವನ್ನು ಬಳಸುವುದು +start = time.time() +cache = set(stopwords.words("english")) +def remove_stopwords(review): + text = " ".join([word for word in review.split() if word not in cache]) + return text + +# ಎರಡೂ ಕಾಲಮ್‌ಗಳಿಂದ ಸ್ಟಾಪ್ ಪದಗಳನ್ನು ತೆಗೆದುಹಾಕಿ +df.Negative_Review = df.Negative_Review.apply(remove_stopwords) +df.Positive_Review = df.Positive_Review.apply(remove_stopwords) +``` + +### ಭಾವನೆ ವಿಶ್ಲೇಷಣೆ ನಡೆಸುವುದು + +ಈಗ ನೀವು ನೆಗೆಟಿವ್ ಮತ್ತು ಪಾಸಿಟಿವ್ ವಿಮರ್ಶೆ ಕಾಲಮ್‌ಗಳಿಗೆ ಭಾವನೆ ವಿಶ್ಲೇಷಣೆಯನ್ನು ಲೆಕ್ಕಿಸಿ, 2 ಹೊಸ ಕಾಲಮ್‌ಗಳಲ್ಲಿ ಫಲಿತಾಂಶವನ್ನು ಸಂಗ್ರಹಿಸಬೇಕು. ಭಾವನೆ ಪರೀಕ್ಷೆ ವಿಮರ್ಶಕರ ಅಂಕದೊಂದಿಗೆ ಹೋಲಿಕೆ ಮಾಡುವುದು. ಉದಾಹರಣೆಗೆ, ಭಾವನೆ ವಿಶ್ಲೇಷಕನು ನೆಗೆಟಿವ್ ವಿಮರ್ಶೆಗೆ 1 (ಅತ್ಯಂತ ಧನಾತ್ಮಕ ಭಾವನೆ) ಮತ್ತು ಪಾಸಿಟಿವ್ ವಿಮರ್ಶೆಗೆ 1 ಎಂದು ಅಂದಾಜಿಸಿದರೆ, ಆದರೆ ವಿಮರ್ಶಕನು ಹೋಟೆಲ್‌ಗೆ ಕನಿಷ್ಠ ಅಂಕ ನೀಡಿದ್ದರೆ, ವಿಮರ್ಶೆ ಪಠ್ಯ ಮತ್ತು ಅಂಕ ಹೊಂದಿಕೆಯಾಗುತ್ತಿಲ್ಲ ಅಥವಾ ಭಾವನೆ ವಿಶ್ಲೇಷಕನು ಭಾವನೆಯನ್ನು ಸರಿಯಾಗಿ ಗುರುತಿಸಲಿಲ್ಲ. ಕೆಲವು ಭಾವನೆ ಅಂಕಗಳು ಸಂಪೂರ್ಣ ತಪ್ಪಾಗಿರಬಹುದು, ಮತ್ತು ಬಹುಶಃ ಅದು ವಿವರಿಸಬಹುದಾಗಿದೆ, ಉದಾ: ವಿಮರ್ಶೆ ಅತ್ಯಂತ ವ್ಯಂಗ್ಯಾತ್ಮಕವಾಗಿರಬಹುದು "ನಾನು ಬಿಸಿಲಿಲ್ಲದ ಕೊಠಡಿಯಲ್ಲಿ ನಿದ್ರೆ ಮಾಡಿದ್ದೇನೆ ಎಂದು ಖಂಡಿತವಾಗಿ ಪ್ರೀತಿಸಿದೆ" ಮತ್ತು ಭಾವನೆ ವಿಶ್ಲೇಷಕನು ಅದನ್ನು ಧನಾತ್ಮಕ ಭಾವನೆ ಎಂದು ಭಾವಿಸುತ್ತದೆ, ಆದರೆ ಮಾನವ ಓದಿದರೆ ಅದು ವ್ಯಂಗ್ಯ ಎಂದು ತಿಳಿಯುತ್ತದೆ. +NLTK ವಿಭಿನ್ನ ಭಾವನಾತ್ಮಕ ವಿಶ್ಲೇಷಕರನ್ನು ಕಲಿಯಲು ಒದಗಿಸುತ್ತದೆ, ಮತ್ತು ನೀವು ಅವುಗಳನ್ನು ಬದಲಾಯಿಸಿ ಭಾವನೆ ಹೆಚ್ಚು ಅಥವಾ ಕಡಿಮೆ ನಿಖರವಾಗಿದೆಯೇ ಎಂದು ನೋಡಬಹುದು. ಇಲ್ಲಿ VADER ಭಾವನಾತ್ಮಕ ವಿಶ್ಲೇಷಣೆ ಬಳಸಲಾಗಿದೆ. + +> Hutto, C.J. & Gilbert, E.E. (2014). VADER: A Parsimonious Rule-based Model for Sentiment Analysis of Social Media Text. Eighth International Conference on Weblogs and Social Media (ICWSM-14). Ann Arbor, MI, June 2014. + +```python +from nltk.sentiment.vader import SentimentIntensityAnalyzer + +# ವಾಡರ್ ಭಾವನಾತ್ಮಕ ವಿಶ್ಲೇಷಕವನ್ನು ರಚಿಸಿ (ನೀವು ಪ್ರಯತ್ನಿಸಬಹುದಾದ NLTK ನಲ್ಲಿ ಇತರರೂ ಇದ್ದಾರೆ) +vader_sentiment = SentimentIntensityAnalyzer() +# ಹುಟ್ಟೋ, ಸಿ.ಜೆ. & ಗಿಲ್ಬರ್ಟ್, ಇ.ಇ. (2014). ವಾಡರ್: ಸಾಮಾಜಿಕ ಮಾಧ್ಯಮ ಪಠ್ಯದ ಭಾವನಾತ್ಮಕ ವಿಶ್ಲೇಷಣೆಗೆ ನಿಯಮಾಧಾರಿತ ಸರಳ ಮಾದರಿ. ಎಂಟನೇ ಅಂತಾರಾಷ್ಟ್ರೀಯ ವೆಬ್ಲಾಗ್ ಮತ್ತು ಸಾಮಾಜಿಕ ಮಾಧ್ಯಮ ಸಮ್ಮೇಳನ (ICWSM-14). ಆನ್ ಅರ್ಬರ್, MI, ಜೂನ್ 2014. + +# ವಿಮರ್ಶೆಗೆ 3 ಇನ್ಪುಟ್ ಸಾಧ್ಯತೆಗಳಿವೆ: +# ಅದು "ನಕಾರಾತ್ಮಕವಿಲ್ಲ" ಆಗಿರಬಹುದು, ಆ ಸಂದರ್ಭದಲ್ಲಿ 0 ಅನ್ನು ಹಿಂತಿರುಗಿಸಿ +# ಅದು "ಧನಾತ್ಮಕವಿಲ್ಲ" ಆಗಿರಬಹುದು, ಆ ಸಂದರ್ಭದಲ್ಲಿ 0 ಅನ್ನು ಹಿಂತಿರುಗಿಸಿ +# ಅದು ವಿಮರ್ಶೆಯಾಗಿರಬಹುದು, ಆ ಸಂದರ್ಭದಲ್ಲಿ ಭಾವನೆಯನ್ನು ಲೆಕ್ಕಿಸಿ +def calc_sentiment(review): + if review == "No Negative" or review == "No Positive": + return 0 + return vader_sentiment.polarity_scores(review)["compound"] +``` + +ನಿಮ್ಮ ಪ್ರೋಗ್ರಾಂನಲ್ಲಿ ನಂತರ ನೀವು ಭಾವನೆಯನ್ನು ಲೆಕ್ಕಹಾಕಲು ಸಿದ್ಧರಾಗಿದ್ದಾಗ, ನೀವು ಪ್ರತಿಯೊಂದು ವಿಮರ್ಶೆಗೆ ಇದನ್ನು ಹೀಗೆ ಅನ್ವಯಿಸಬಹುದು: + +```python +# ನಕಾರಾತ್ಮಕ ಭಾವನೆ ಮತ್ತು ಧನಾತ್ಮಕ ಭಾವನೆ ಕಾಲಮ್ ಸೇರಿಸಿ +print("Calculating sentiment columns for both positive and negative reviews") +start = time.time() +df["Negative_Sentiment"] = df.Negative_Review.apply(calc_sentiment) +df["Positive_Sentiment"] = df.Positive_Review.apply(calc_sentiment) +end = time.time() +print("Calculating sentiment took " + str(round(end - start, 2)) + " seconds") +``` + +ಇದು ನನ್ನ ಕಂಪ್ಯೂಟರ್‌ನಲ್ಲಿ ಸುಮಾರು 120 ಸೆಕೆಂಡುಗಳು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ, ಆದರೆ ಪ್ರತಿ ಕಂಪ್ಯೂಟರ್‌ನಲ್ಲಿ ಇದು ಬದಲಾಗಬಹುದು. ನೀವು ಫಲಿತಾಂಶಗಳನ್ನು ಮುದ್ರಿಸಿ ಭಾವನೆ ವಿಮರ್ಶೆಗೆ ಹೊಂದಿಕೆಯಾಗಿದೆಯೇ ಎಂದು ನೋಡಲು ಬಯಸಿದರೆ: + +```python +df = df.sort_values(by=["Negative_Sentiment"], ascending=True) +print(df[["Negative_Review", "Negative_Sentiment"]]) +df = df.sort_values(by=["Positive_Sentiment"], ascending=True) +print(df[["Positive_Review", "Positive_Sentiment"]]) +``` + +ಚಾಲೆಂಜ್‌ನಲ್ಲಿ ಬಳಸುವ ಮೊದಲು ಫೈಲ್‌ನೊಂದಿಗೆ ಮಾಡಬೇಕಾದ ಕೊನೆಯ ಕೆಲಸ, ಅದನ್ನು ಉಳಿಸುವುದು! ನೀವು ನಿಮ್ಮ ಎಲ್ಲಾ ಹೊಸ ಕಾಲಮ್‌ಗಳನ್ನು ಮರುಕ್ರಮಗೊಳಿಸುವುದನ್ನು ಪರಿಗಣಿಸಬೇಕು, ಇದರಿಂದ ಅವುಗಳನ್ನು ಕೆಲಸ ಮಾಡಲು ಸುಲಭವಾಗುತ್ತದೆ (ಮಾನವನಿಗೆ ಇದು ಒಂದು ಸೌಂದರ್ಯ ಬದಲಾವಣೆ). + +```python +# ಕಾಲಮ್ಗಳನ್ನು ಮರುಕ್ರಮಗೊಳಿಸಿ (ಇದು ಸೌಂದರ್ಯಕ್ಕಾಗಿ, ಆದರೆ ನಂತರ ಡೇಟಾವನ್ನು ಅನ್ವೇಷಿಸಲು ಸುಲಭವಾಗಿಸಲು) +df = df.reindex(["Hotel_Name", "Hotel_Address", "Total_Number_of_Reviews", "Average_Score", "Reviewer_Score", "Negative_Sentiment", "Positive_Sentiment", "Reviewer_Nationality", "Leisure_trip", "Couple", "Solo_traveler", "Business_trip", "Group", "Family_with_young_children", "Family_with_older_children", "With_a_pet", "Negative_Review", "Positive_Review"], axis=1) + +print("Saving results to Hotel_Reviews_NLP.csv") +df.to_csv(r"../data/Hotel_Reviews_NLP.csv", index = False) +``` + +ನೀವು ಸಂಪೂರ್ಣ ಕೋಡ್ ಅನ್ನು [ವಿಶ್ಲೇಷಣಾ ನೋಟ್ಬುಕ್](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/3-notebook.ipynb)ಗಾಗಿ ಚಲಾಯಿಸಬೇಕು (ನೀವು [ನಿಮ್ಮ ಫಿಲ್ಟರಿಂಗ್ ನೋಟ್ಬುಕ್](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb) ಅನ್ನು ಚಲಾಯಿಸಿ Hotel_Reviews_Filtered.csv ಫೈಲ್ ಅನ್ನು ರಚಿಸಿದ ನಂತರ). + +ಪುನಃ ಪರಿಶೀಲಿಸಲು, ಹಂತಗಳು ಇವು: + +1. ಮೂಲ ಡೇಟಾಸೆಟ್ ಫೈಲ್ **Hotel_Reviews.csv** ಅನ್ನು ಹಿಂದಿನ ಪಾಠದಲ್ಲಿ [ಎಕ್ಸ್‌ಪ್ಲೋರರ್ ನೋಟ್ಬುಕ್](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/4-Hotel-Reviews-1/solution/notebook.ipynb) ಮೂಲಕ ಅನ್ವೇಷಿಸಲಾಗಿದೆ +2. Hotel_Reviews.csv ಅನ್ನು [ಫಿಲ್ಟರಿಂಗ್ ನೋಟ್ಬುಕ್](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb) ಮೂಲಕ ಫಿಲ್ಟರ್ ಮಾಡಿ **Hotel_Reviews_Filtered.csv** ಅನ್ನು ಪಡೆದಿದ್ದಾರೆ +3. Hotel_Reviews_Filtered.csv ಅನ್ನು [ಭಾವನಾತ್ಮಕ ವಿಶ್ಲೇಷಣಾ ನೋಟ್ಬುಕ್](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/3-notebook.ipynb) ಮೂಲಕ ಪ್ರಕ್ರಿಯೆ ಮಾಡಿ **Hotel_Reviews_NLP.csv** ಅನ್ನು ಪಡೆದಿದ್ದಾರೆ +4. ಕೆಳಗಿನ NLP ಚಾಲೆಂಜ್‌ನಲ್ಲಿ Hotel_Reviews_NLP.csv ಅನ್ನು ಬಳಸಿ + +### ಸಮಾರೋಪ + +ನೀವು ಪ್ರಾರಂಭಿಸಿದಾಗ, ನಿಮಗೆ ಕಾಲಮ್‌ಗಳು ಮತ್ತು ಡೇಟಾ ಇರುವ ಡೇಟಾಸೆಟ್ ಇತ್ತು ಆದರೆ ಅದರಲ್ಲಿ ಎಲ್ಲವೂ ಪರಿಶೀಲಿಸಲಾಗಲಿಲ್ಲ ಅಥವಾ ಬಳಸಲಾಗಲಿಲ್ಲ. ನೀವು ಡೇಟಾವನ್ನು ಅನ್ವೇಷಿಸಿ, ಬೇಕಾಗದವನ್ನೆಲ್ಲಾ ಫಿಲ್ಟರ್ ಮಾಡಿ, ಟ್ಯಾಗ್‌ಗಳನ್ನು ಉಪಯುಕ್ತವಾದುದಾಗಿ ಪರಿವರ್ತಿಸಿ, ನಿಮ್ಮ ಸ್ವಂತ ಸರಾಸರಿಗಳನ್ನು ಲೆಕ್ಕಹಾಕಿ, ಕೆಲವು ಭಾವನಾತ್ಮಕ ಕಾಲಮ್‌ಗಳನ್ನು ಸೇರಿಸಿ ಮತ್ತು ಸಹಜ ಪಠ್ಯವನ್ನು ಪ್ರಕ್ರಿಯೆ ಮಾಡುವ ಬಗ್ಗೆ ಕೆಲವು ಆಸಕ್ತಿದಾಯಕ ವಿಷಯಗಳನ್ನು ಕಲಿತಿದ್ದೀರಿ. + +## [ಪಾಠೋತ್ತರ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) + +## ಚಾಲೆಂಜ್ + +ನೀವು ಈಗ ನಿಮ್ಮ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಭಾವನೆಗಾಗಿ ವಿಶ್ಲೇಷಿಸಿದ್ದೀರಿ, ಈ ಪಠ್ಯಕ್ರಮದಲ್ಲಿ ನೀವು ಕಲಿತ ತಂತ್ರಗಳನ್ನು (ಶ್ರೇಣೀಕರಣ, ಬಹುಶಃ?) ಬಳಸಿಕೊಂಡು ಭಾವನೆಯ ಸುತ್ತಲೂ ಮಾದರಿಗಳನ್ನು ನಿರ್ಧರಿಸಲು ಪ್ರಯತ್ನಿಸಿ. + +## ವಿಮರ್ಶೆ ಮತ್ತು ಸ್ವಯಂ ಅಧ್ಯಯನ + +[ಈ ಲರ್ನ್ ಮೋಡ್ಯೂಲ್](https://docs.microsoft.com/en-us/learn/modules/classify-user-feedback-with-the-text-analytics-api/?WT.mc_id=academic-77952-leestott) ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ ಮತ್ತು ಪಠ್ಯದಲ್ಲಿ ಭಾವನೆಯನ್ನು ಅನ್ವೇಷಿಸಲು ವಿಭಿನ್ನ ಸಾಧನಗಳನ್ನು ಬಳಸಿ. + +## ನಿಯೋಜನೆ + +[ಬೇರೊಂದು ಡೇಟಾಸೆಟ್ ಪ್ರಯತ್ನಿಸಿ](assignment.md) + +--- + + +**ಅಸ್ವೀಕಾರ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವಾಗಿ ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/6-NLP/5-Hotel-Reviews-2/assignment.md b/translations/kn/6-NLP/5-Hotel-Reviews-2/assignment.md new file mode 100644 index 000000000..0c62a9715 --- /dev/null +++ b/translations/kn/6-NLP/5-Hotel-Reviews-2/assignment.md @@ -0,0 +1,27 @@ + +# ಬೇರೆ ಡೇಟಾಸೆಟ್ ಪ್ರಯತ್ನಿಸಿ + +## ಸೂಚನೆಗಳು + +ನೀವು ಈಗಾಗಲೇ ಪಠ್ಯಕ್ಕೆ ಭಾವನೆಯನ್ನು ನಿಯೋಜಿಸಲು NLTK ಬಳಸದ ಬಗ್ಗೆ ಕಲಿತಿದ್ದೀರಿ, ಈಗ ಬೇರೆ ಡೇಟಾಸೆಟ್ ಪ್ರಯತ್ನಿಸಿ. ನೀವು ಅದಕ್ಕೆ ಸುತ್ತಲೂ ಕೆಲವು ಡೇಟಾ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುವಿಕೆ ಮಾಡಬೇಕಾಗಬಹುದು, ಆದ್ದರಿಂದ ಒಂದು ನೋಟ್ಬುಕ್ ರಚಿಸಿ ಮತ್ತು ನಿಮ್ಮ ಚಿಂತನೆ ಪ್ರಕ್ರಿಯೆಯನ್ನು ದಾಖಲೆ ಮಾಡಿ. ನೀವು ಏನು ಕಂಡುಹಿಡಿಯುತ್ತೀರಿ? + +## ಮೌಲ್ಯಮಾಪನ + +| ಮಾನದಂಡಗಳು | ಉದಾಹರಣೀಯ | ತೃಪ್ತಿಕರ | ಸುಧಾರಣೆಗೆ ಅಗತ್ಯ | +| -------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | ---------------------- | +| | ಭಾವನೆ ಹೇಗೆ ನಿಯೋಜಿಸಲಾಗಿದೆ ಎಂಬುದನ್ನು ವಿವರಿಸುವ ಚೆನ್ನಾಗಿ ದಾಖಲೆ ಮಾಡಲಾದ ಸೆಲ್‌ಗಳೊಂದಿಗೆ ಸಂಪೂರ್ಣ ನೋಟ್ಬುಕ್ ಮತ್ತು ಡೇಟಾಸೆಟ್ ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿದೆ | ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ ಉತ್ತಮ ವಿವರಣೆಗಳಿಲ್ಲ | ನೋಟ್ಬುಕ್ ದೋಷಪೂರಿತವಾಗಿದೆ | + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಪ್ರಮುಖ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/6-NLP/5-Hotel-Reviews-2/notebook.ipynb b/translations/kn/6-NLP/5-Hotel-Reviews-2/notebook.ipynb new file mode 100644 index 000000000..e69de29bb diff --git a/translations/kn/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb b/translations/kn/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb new file mode 100644 index 000000000..ecf961123 --- /dev/null +++ b/translations/kn/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb @@ -0,0 +1,172 @@ +{ + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.0" + }, + "orig_nbformat": 4, + "kernelspec": { + "name": "python3", + "display_name": "Python 3.7.0 64-bit ('3.7')" + }, + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + }, + "coopTranslator": { + "original_hash": "033cb89c85500224b3c63fd04f49b4aa", + "translation_date": "2025-12-19T16:49:43+00:00", + "source_file": "6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import time\n", + "import ast" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "def replace_address(row):\n", + " if \"Netherlands\" in row[\"Hotel_Address\"]:\n", + " return \"Amsterdam, Netherlands\"\n", + " elif \"Barcelona\" in row[\"Hotel_Address\"]:\n", + " return \"Barcelona, Spain\"\n", + " elif \"United Kingdom\" in row[\"Hotel_Address\"]:\n", + " return \"London, United Kingdom\"\n", + " elif \"Milan\" in row[\"Hotel_Address\"]: \n", + " return \"Milan, Italy\"\n", + " elif \"France\" in row[\"Hotel_Address\"]:\n", + " return \"Paris, France\"\n", + " elif \"Vienna\" in row[\"Hotel_Address\"]:\n", + " return \"Vienna, Austria\" \n", + " else:\n", + " return row.Hotel_Address\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# Load the hotel reviews from CSV\n", + "start = time.time()\n", + "df = pd.read_csv('../../data/Hotel_Reviews.csv')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# dropping columns we will not use:\n", + "df.drop([\"lat\", \"lng\"], axis = 1, inplace=True)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# Replace all the addresses with a shortened, more useful form\n", + "df[\"Hotel_Address\"] = df.apply(replace_address, axis = 1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "# Drop `Additional_Number_of_Scoring`\n", + "df.drop([\"Additional_Number_of_Scoring\"], axis = 1, inplace=True)\n", + "# Replace `Total_Number_of_Reviews` and `Average_Score` with our own calculated values\n", + "df.Total_Number_of_Reviews = df.groupby('Hotel_Name').transform('count')\n", + "df.Average_Score = round(df.groupby('Hotel_Name').Reviewer_Score.transform('mean'), 1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# Process the Tags into new columns\n", + "# The file Hotel_Reviews_Tags.py, identifies the most important tags\n", + "# Leisure trip, Couple, Solo traveler, Business trip, Group combined with Travelers with friends, \n", + "# Family with young children, Family with older children, With a pet\n", + "df[\"Leisure_trip\"] = df.Tags.apply(lambda tag: 1 if \"Leisure trip\" in tag else 0)\n", + "df[\"Couple\"] = df.Tags.apply(lambda tag: 1 if \"Couple\" in tag else 0)\n", + "df[\"Solo_traveler\"] = df.Tags.apply(lambda tag: 1 if \"Solo traveler\" in tag else 0)\n", + "df[\"Business_trip\"] = df.Tags.apply(lambda tag: 1 if \"Business trip\" in tag else 0)\n", + "df[\"Group\"] = df.Tags.apply(lambda tag: 1 if \"Group\" in tag or \"Travelers with friends\" in tag else 0)\n", + "df[\"Family_with_young_children\"] = df.Tags.apply(lambda tag: 1 if \"Family with young children\" in tag else 0)\n", + "df[\"Family_with_older_children\"] = df.Tags.apply(lambda tag: 1 if \"Family with older children\" in tag else 0)\n", + "df[\"With_a_pet\"] = df.Tags.apply(lambda tag: 1 if \"With a pet\" in tag else 0)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "# No longer need any of these columns\n", + "df.drop([\"Review_Date\", \"Review_Total_Negative_Word_Counts\", \"Review_Total_Positive_Word_Counts\", \"days_since_review\", \"Total_Number_of_Reviews_Reviewer_Has_Given\"], axis = 1, inplace=True)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Saving results to Hotel_Reviews_Filtered.csv\n", + "Filtering took 23.74 seconds\n" + ] + } + ], + "source": [ + "# Saving new data file with calculated columns\n", + "print(\"Saving results to Hotel_Reviews_Filtered.csv\")\n", + "df.to_csv(r'../../data/Hotel_Reviews_Filtered.csv', index = False)\n", + "end = time.time()\n", + "print(\"Filtering took \" + str(round(end - start, 2)) + \" seconds\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/kn/6-NLP/5-Hotel-Reviews-2/solution/2-notebook.ipynb b/translations/kn/6-NLP/5-Hotel-Reviews-2/solution/2-notebook.ipynb new file mode 100644 index 000000000..b3fd34e69 --- /dev/null +++ b/translations/kn/6-NLP/5-Hotel-Reviews-2/solution/2-notebook.ipynb @@ -0,0 +1,137 @@ +{ + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.0" + }, + "orig_nbformat": 4, + "kernelspec": { + "name": "python3", + "display_name": "Python 3.7.0 64-bit ('3.7')" + }, + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + }, + "coopTranslator": { + "original_hash": "341efc86325ec2a214f682f57a189dfd", + "translation_date": "2025-12-19T16:49:54+00:00", + "source_file": "6-NLP/5-Hotel-Reviews-2/solution/2-notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# Load the hotel reviews from CSV (you can )\n", + "import pandas as pd \n", + "\n", + "df = pd.read_csv('../../data/Hotel_Reviews_Filtered.csv')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# We want to find the most useful tags to keep\n", + "# Remove opening and closing brackets\n", + "df.Tags = df.Tags.str.strip(\"[']\")\n", + "# remove all quotes too\n", + "df.Tags = df.Tags.str.replace(\" ', '\", \",\", regex = False)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "# removing this to take advantage of the 'already a phrase' fact of the dataset \n", + "# Now split the strings into a list\n", + "tag_list_df = df.Tags.str.split(',', expand = True)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# Remove leading and trailing spaces\n", + "df[\"Tag_1\"] = tag_list_df[0].str.strip()\n", + "df[\"Tag_2\"] = tag_list_df[1].str.strip()\n", + "df[\"Tag_3\"] = tag_list_df[2].str.strip()\n", + "df[\"Tag_4\"] = tag_list_df[3].str.strip()\n", + "df[\"Tag_5\"] = tag_list_df[4].str.strip()\n", + "df[\"Tag_6\"] = tag_list_df[5].str.strip()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "# Merge the 6 columns into one with melt\n", + "df_tags = df.melt(value_vars=[\"Tag_1\", \"Tag_2\", \"Tag_3\", \"Tag_4\", \"Tag_5\", \"Tag_6\"])\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "The shape of the tags with no filtering: (2514684, 2)\n", + " index count\n", + "0 Leisure trip 338423\n", + "1 Couple 205305\n", + "2 Solo traveler 89779\n", + "3 Business trip 68176\n", + "4 Group 51593\n", + "5 Family with young children 49318\n", + "6 Family with older children 21509\n", + "7 Travelers with friends 1610\n", + "8 With a pet 1078\n" + ] + } + ], + "source": [ + "# Get the value counts\n", + "tag_vc = df_tags.value.value_counts()\n", + "# print(tag_vc)\n", + "print(\"The shape of the tags with no filtering:\", str(df_tags.shape))\n", + "# Drop rooms, suites, and length of stay, mobile device and anything with less count than a 1000\n", + "df_tags = df_tags[~df_tags.value.str.contains(\"Standard|room|Stayed|device|Beds|Suite|Studio|King|Superior|Double\", na=False, case=False)]\n", + "tag_vc = df_tags.value.value_counts().reset_index(name=\"count\").query(\"count > 1000\")\n", + "# Print the top 10 (there should only be 9 and we'll use these in the filtering section)\n", + "print(tag_vc[:10])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/kn/6-NLP/5-Hotel-Reviews-2/solution/3-notebook.ipynb b/translations/kn/6-NLP/5-Hotel-Reviews-2/solution/3-notebook.ipynb new file mode 100644 index 000000000..b0771d40f --- /dev/null +++ b/translations/kn/6-NLP/5-Hotel-Reviews-2/solution/3-notebook.ipynb @@ -0,0 +1,260 @@ +{ + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.0" + }, + "orig_nbformat": 4, + "kernelspec": { + "name": "python3", + "display_name": "Python 3.7.0 64-bit ('3.7')" + }, + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + }, + "coopTranslator": { + "original_hash": "705bf02633759f689abc37b19749a16d", + "translation_date": "2025-12-19T16:50:06+00:00", + "source_file": "6-NLP/5-Hotel-Reviews-2/solution/3-notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "[nltk_data] Downloading package vader_lexicon to\n[nltk_data] /Users/jenlooper/nltk_data...\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "True" + ] + }, + "metadata": {}, + "execution_count": 9 + } + ], + "source": [ + "import time\n", + "import pandas as pd\n", + "import nltk as nltk\n", + "from nltk.corpus import stopwords\n", + "from nltk.sentiment.vader import SentimentIntensityAnalyzer\n", + "nltk.download('vader_lexicon')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "vader_sentiment = SentimentIntensityAnalyzer()\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "# There are 3 possibilities of input for a review:\n", + "# It could be \"No Negative\", in which case, return 0\n", + "# It could be \"No Positive\", in which case, return 0\n", + "# It could be a review, in which case calculate the sentiment\n", + "def calc_sentiment(review): \n", + " if review == \"No Negative\" or review == \"No Positive\":\n", + " return 0\n", + " return vader_sentiment.polarity_scores(review)[\"compound\"] \n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "# Load the hotel reviews from CSV\n", + "df = pd.read_csv(\"../../data/Hotel_Reviews_Filtered.csv\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "# Remove stop words - can be slow for a lot of text!\n", + "# Ryan Han (ryanxjhan on Kaggle) has a great post measuring performance of different stop words removal approaches\n", + "# https://www.kaggle.com/ryanxjhan/fast-stop-words-removal # using the approach that Ryan recommends\n", + "start = time.time()\n", + "cache = set(stopwords.words(\"english\"))\n", + "def remove_stopwords(review):\n", + " text = \" \".join([word for word in review.split() if word not in cache])\n", + " return text\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "# Remove the stop words from both columns\n", + "df.Negative_Review = df.Negative_Review.apply(remove_stopwords) \n", + "df.Positive_Review = df.Positive_Review.apply(remove_stopwords)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Removing stop words took 5.77 seconds\n" + ] + } + ], + "source": [ + "end = time.time()\n", + "print(\"Removing stop words took \" + str(round(end - start, 2)) + \" seconds\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Calculating sentiment columns for both positive and negative reviews\n", + "Calculating sentiment took 201.07 seconds\n" + ] + } + ], + "source": [ + "# Add a negative sentiment and positive sentiment column\n", + "print(\"Calculating sentiment columns for both positive and negative reviews\")\n", + "start = time.time()\n", + "df[\"Negative_Sentiment\"] = df.Negative_Review.apply(calc_sentiment)\n", + "df[\"Positive_Sentiment\"] = df.Positive_Review.apply(calc_sentiment)\n", + "end = time.time()\n", + "print(\"Calculating sentiment took \" + str(round(end - start, 2)) + \" seconds\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + " Negative_Review Negative_Sentiment\n", + "186584 So bad experience memories I hotel The first n... -0.9920\n", + "129503 First charged twice room booked booking second... -0.9896\n", + "307286 The staff Had bad experience even booking Janu... -0.9889\n", + "452092 No WLAN room Incredibly rude restaurant staff ... -0.9884\n", + "201293 We usually traveling Paris 2 3 times year busi... -0.9873\n", + "... ... ...\n", + "26899 I would say however one night expensive even d... 0.9933\n", + "138365 Wifi terribly slow I speed test network upload... 0.9938\n", + "79215 I find anything hotel first I walked past hote... 0.9938\n", + "278506 The property great location There bakery next ... 0.9945\n", + "339189 Guys I like hotel I wish return next year Howe... 0.9948\n", + "\n", + "[515738 rows x 2 columns]\n", + " Positive_Review Positive_Sentiment\n", + "137893 Bathroom Shower We going stay twice hotel 2 ni... -0.9820\n", + "5839 I completely disappointed mad since reception ... -0.9780\n", + "64158 get everything extra internet parking breakfas... -0.9751\n", + "124178 I didnt like anythig Room small Asked upgrade ... -0.9721\n", + "489137 Very rude manager abusive staff reception Dirt... -0.9703\n", + "... ... ...\n", + "331570 Everything This recently renovated hotel class... 0.9984\n", + "322920 From moment stepped doors Guesthouse Hotel sta... 0.9985\n", + "293710 This place surprise expected good actually gre... 0.9985\n", + "417442 We celebrated wedding night Langham I commend ... 0.9985\n", + "132492 We arrived super cute boutique hotel area expl... 0.9987\n", + "\n", + "[515738 rows x 2 columns]\n" + ] + } + ], + "source": [ + "df = df.sort_values(by=[\"Negative_Sentiment\"], ascending=True)\n", + "print(df[[\"Negative_Review\", \"Negative_Sentiment\"]])\n", + "df = df.sort_values(by=[\"Positive_Sentiment\"], ascending=True)\n", + "print(df[[\"Positive_Review\", \"Positive_Sentiment\"]])\n" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "# Reorder the columns (This is cosmetic, but to make it easier to explore the data later)\n", + "df = df.reindex([\"Hotel_Name\", \"Hotel_Address\", \"Total_Number_of_Reviews\", \"Average_Score\", \"Reviewer_Score\", \"Negative_Sentiment\", \"Positive_Sentiment\", \"Reviewer_Nationality\", \"Leisure_trip\", \"Couple\", \"Solo_traveler\", \"Business_trip\", \"Group\", \"Family_with_young_children\", \"Family_with_older_children\", \"With_a_pet\", \"Negative_Review\", \"Positive_Review\"], axis=1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Saving results to Hotel_Reviews_NLP.csv\n" + ] + } + ], + "source": [ + "print(\"Saving results to Hotel_Reviews_NLP.csv\")\n", + "df.to_csv(r\"../../data/Hotel_Reviews_NLP.csv\", index = False)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕಾರ**: \nಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/kn/6-NLP/5-Hotel-Reviews-2/solution/Julia/README.md b/translations/kn/6-NLP/5-Hotel-Reviews-2/solution/Julia/README.md new file mode 100644 index 000000000..ad48999e3 --- /dev/null +++ b/translations/kn/6-NLP/5-Hotel-Reviews-2/solution/Julia/README.md @@ -0,0 +1,17 @@ + +ಇದು ತಾತ್ಕಾಲಿಕ ಪ್ಲೇಸ್‌ಹೋಲ್ಡರ್ ಆಗಿದೆ + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಪ್ರಮುಖ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/6-NLP/5-Hotel-Reviews-2/solution/R/README.md b/translations/kn/6-NLP/5-Hotel-Reviews-2/solution/R/README.md new file mode 100644 index 000000000..9ee7bb327 --- /dev/null +++ b/translations/kn/6-NLP/5-Hotel-Reviews-2/solution/R/README.md @@ -0,0 +1,17 @@ + +ಇದು ತಾತ್ಕಾಲಿಕ ಪ್ಲೇಸ್‌ಹೋಲ್ಡರ್ ಆಗಿದೆ + +--- + + +**ಅಸ್ವೀಕಾರ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಪ್ರಮುಖ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/6-NLP/README.md b/translations/kn/6-NLP/README.md new file mode 100644 index 000000000..141d0a852 --- /dev/null +++ b/translations/kn/6-NLP/README.md @@ -0,0 +1,40 @@ + +# ನೈಸರ್ಗಿಕ ಭಾಷಾ ಪ್ರಕ್ರಿಯೆ ಆರಂಭಿಸುವುದು + +ನೈಸರ್ಗಿಕ ಭಾಷಾ ಪ್ರಕ್ರಿಯೆ (NLP) ಎಂದರೆ ಮಾನವ ಭಾಷೆಯನ್ನು ಮಾತನಾಡುವ ಮತ್ತು ಬರೆಯುವ ರೀತಿಯಲ್ಲಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವ ಕಂಪ್ಯೂಟರ್ ಪ್ರೋಗ್ರಾಮಿನ ಸಾಮರ್ಥ್ಯ. ಇದನ್ನು ನೈಸರ್ಗಿಕ ಭಾಷೆ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಇದು ಕೃತಕ ಬುದ್ಧಿಮತ್ತೆಯ (AI) ಒಂದು ಘಟಕವಾಗಿದೆ. NLP 50 ವರ್ಷಗಳಿಗಿಂತ ಹೆಚ್ಚು ಕಾಲದಿಂದ ಅಸ್ತಿತ್ವದಲ್ಲಿದ್ದು, ಭಾಷಾಶಾಸ್ತ್ರ ಕ್ಷೇತ್ರದಲ್ಲಿ ಮೂಲಗಳನ್ನು ಹೊಂದಿದೆ. ಈ ಸಂಪೂರ್ಣ ಕ್ಷೇತ್ರವು ಯಂತ್ರಗಳಿಗೆ ಮಾನವ ಭಾಷೆಯನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಮತ್ತು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲು ಸಹಾಯ ಮಾಡುವುದಕ್ಕೆ ನಿರ್ದೇಶಿತವಾಗಿದೆ. ಇದನ್ನು ನಂತರ ಸ್ಪೆಲ್ ಚೆಕ್ ಅಥವಾ ಯಂತ್ರ ಅನುವಾದದಂತಹ ಕಾರ್ಯಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಬಳಸಬಹುದು. ಇದಕ್ಕೆ ವೈದ್ಯಕೀಯ ಸಂಶೋಧನೆ, ಹುಡುಕಾಟ ಎಂಜಿನ್‌ಗಳು ಮತ್ತು ವ್ಯವಹಾರ ಬುದ್ಧಿವಂತಿಕೆ ಸೇರಿದಂತೆ ಹಲವಾರು ಕ್ಷೇತ್ರಗಳಲ್ಲಿ ನೈಜ ಜಗತ್ತಿನ ಅನೇಕ ಅನ್ವಯಿಕೆಗಳಿವೆ. + +## ಪ್ರಾದೇಶಿಕ ವಿಷಯ: ಯುರೋಪಿಯನ್ ಭಾಷೆಗಳು ಮತ್ತು ಸಾಹಿತ್ಯ ಮತ್ತು ಯುರೋಪಿನ ರೋಮ್ಯಾಂಟಿಕ್ ಹೋಟೆಲ್ಗಳು ❤️ + +ಪಠ್ಯಕ್ರಮದ ಈ ವಿಭಾಗದಲ್ಲಿ, ನೀವು ಯಂತ್ರ ಅಧ್ಯಯನದ ಅತ್ಯಂತ ವ್ಯಾಪಕ ಬಳಕೆಗಳಲ್ಲಿ ಒಂದಾದ ನೈಸರ್ಗಿಕ ಭಾಷಾ ಪ್ರಕ್ರಿಯೆ (NLP) ಪರಿಚಯಿಸಲ್ಪಡುತ್ತೀರಿ. ಗಣನೀಯ ಭಾಷಾಶಾಸ್ತ್ರದಿಂದ ಪಡೆದ ಈ ಕೃತಕ ಬುದ್ಧಿಮತ್ತೆಯ ವರ್ಗವು ಮಾನವರು ಮತ್ತು ಯಂತ್ರಗಳ ನಡುವೆ ಧ್ವನಿ ಅಥವಾ ಪಠ್ಯ ಸಂವಹನದ ಮೂಲಕ ಸೇತುವೆಯಾಗಿದೆ. + +ಈ ಪಾಠಗಳಲ್ಲಿ ನಾವು NLP ಮೂಲಭೂತಗಳನ್ನು ಕಲಿಯುತ್ತೇವೆ, ಚಿಕ್ಕ ಸಂಭಾಷಣಾತ್ಮಕ ಬಾಟ್‌ಗಳನ್ನು ನಿರ್ಮಿಸುವ ಮೂಲಕ ಯಂತ್ರ ಅಧ್ಯಯನವು ಈ ಸಂಭಾಷಣೆಗಳನ್ನು ಹೇಗೆ ಹೆಚ್ಚು 'ಸ್ಮಾರ್ಟ್' ಆಗಿ ಮಾಡುತ್ತದೆ ಎಂಬುದನ್ನು ತಿಳಿಯುತ್ತೇವೆ. ನೀವು ಕಾಲದಲ್ಲಿ ಹಿಂದಕ್ಕೆ ಪ್ರಯಾಣ ಮಾಡಿ, ಜೆನ್ ಆಸ್ಟೆನ್ ಅವರ 1813 ರಲ್ಲಿ ಪ್ರಕಟಿತ ಕ್ಲಾಸಿಕ್ ناವಲ **ಪ್ರೈಡ್ ಅಂಡ್ ಪ್ರೆಜುಡಿಸ್** ನ ಎಲಿಜಬೆತ್ ಬೆನೆಟ್ ಮತ್ತು ಮಿಸ್ಟರ್ ಡಾರ್ಸಿಯವರೊಂದಿಗೆ ಸಂಭಾಷಣೆ ಮಾಡುತ್ತೀರಿ. ನಂತರ, ಯುರೋಪಿನ ಹೋಟೆಲ್ ವಿಮರ್ಶೆಗಳ ಮೂಲಕ ಭಾವನಾತ್ಮಕ ವಿಶ್ಲೇಷಣೆಯನ್ನು ಕಲಿಯುವ ಮೂಲಕ ನಿಮ್ಮ ಜ್ಞಾನವನ್ನು ವಿಸ್ತರಿಸುತ್ತೀರಿ. + +![ಪ್ರೈಡ್ ಅಂಡ್ ಪ್ರೆಜುಡಿಸ್ ಪುಸ್ತಕ ಮತ್ತು ಚಹಾ](../../../translated_images/p&p.279f1c49ecd889419e4ce6206525e9aa30d32a976955cd24daa636c361c6391f.kn.jpg) +> ಫೋಟೋ ಎಲೈನ್ ಹೌಲಿನ್ ಅವರಿಂದ ಅನ್ಸ್ಪ್ಲ್ಯಾಶ್ ನಲ್ಲಿ + +## ಪಾಠಗಳು + +1. [ನೈಸರ್ಗಿಕ ಭಾಷಾ ಪ್ರಕ್ರಿಯೆಗೆ ಪರಿಚಯ](1-Introduction-to-NLP/README.md) +2. [ಸಾಮಾನ್ಯ NLP ಕಾರ್ಯಗಳು ಮತ್ತು ತಂತ್ರಗಳು](2-Tasks/README.md) +3. [ಯಂತ್ರ ಅಧ್ಯಯನದೊಂದಿಗೆ ಅನುವಾದ ಮತ್ತು ಭಾವನಾತ್ಮಕ ವಿಶ್ಲೇಷಣೆ](3-Translation-Sentiment/README.md) +4. [ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಸಿದ್ಧಪಡಿಸುವುದು](4-Hotel-Reviews-1/README.md) +5. [ಭಾವನಾತ್ಮಕ ವಿಶ್ಲೇಷಣೆಗೆ NLTK](5-Hotel-Reviews-2/README.md) + +## ಕ್ರೆಡಿಟ್ಸ್ + +ಈ ನೈಸರ್ಗಿಕ ಭಾಷಾ ಪ್ರಕ್ರಿಯೆ ಪಾಠಗಳನ್ನು ☕ ಸಹಿತ [ಸ್ಟೀಫನ್ ಹೌವೆಲ್](https://twitter.com/Howell_MSFT) ರವರು ಬರೆಯಲಾಗಿದೆ + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/6-NLP/data/README.md b/translations/kn/6-NLP/data/README.md new file mode 100644 index 000000000..7934e7133 --- /dev/null +++ b/translations/kn/6-NLP/data/README.md @@ -0,0 +1,17 @@ + +ಈ ಫೋಲ್ಡರ್‌ಗೆ ಹೋಟೆಲ್ ವಿಮರ್ಶಾ ಡೇಟಾವನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡಿ. + +--- + + +**ಅಸ್ವೀಕಾರ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/7-TimeSeries/1-Introduction/README.md b/translations/kn/7-TimeSeries/1-Introduction/README.md new file mode 100644 index 000000000..00b018eb4 --- /dev/null +++ b/translations/kn/7-TimeSeries/1-Introduction/README.md @@ -0,0 +1,201 @@ + +# ಕಾಲ ಸರಣಿಗಳ ಭವಿಷ್ಯವಾಣಿ ಪರಿಚಯ + +![ಕಾಲ ಸರಣಿಗಳ ಸಾರಾಂಶವನ್ನು ಸ್ಕೆಚ್‌ನೋಟ್‌ನಲ್ಲಿ](../../../../translated_images/ml-timeseries.fb98d25f1013fc0c59090030080b5d1911ff336427bec31dbaf1ad08193812e9.kn.png) + +> ಸ್ಕೆಚ್‌ನೋಟ್ [ಟೊಮೊಮಿ ಇಮುರು](https://www.twitter.com/girlie_mac) ಅವರಿಂದ + +ಈ ಪಾಠದಲ್ಲಿ ಮತ್ತು ಮುಂದಿನ ಪಾಠದಲ್ಲಿ, ನೀವು ಕಾಲ ಸರಣಿಗಳ ಭವಿಷ್ಯವಾಣಿ ಬಗ್ಗೆ ಸ್ವಲ್ಪ ತಿಳಿದುಕೊಳ್ಳುತ್ತೀರಿ, ಇದು ಎಂಎಲ್ ವಿಜ್ಞಾನಿಯ repertoire ನಲ್ಲಿ ಒಂದು ಆಸಕ್ತಿದಾಯಕ ಮತ್ತು ಮೌಲ್ಯಯುತ ಭಾಗವಾಗಿದೆ, ಆದರೆ ಇತರ ವಿಷಯಗಳಿಗಿಂತ ಸ್ವಲ್ಪ ಕಡಿಮೆ ಪರಿಚಿತವಾಗಿದೆ. ಕಾಲ ಸರಣಿಗಳ ಭವಿಷ್ಯವಾಣಿ ಒಂದು ರೀತಿಯ 'ಕ್ರಿಸ್ಟಲ್ ಬಾಲ್' ಆಗಿದೆ: ಬೆಲೆ ಮುಂತಾದ ಚರದ ಹಿಂದಿನ ಕಾರ್ಯಕ್ಷಮತೆಯ ಆಧಾರದ ಮೇಲೆ, ನೀವು ಅದರ ಭವಿಷ್ಯದ ಸಾಧ್ಯ ಮೌಲ್ಯವನ್ನು ಊಹಿಸಬಹುದು. + +[![ಕಾಲ ಸರಣಿಗಳ ಭವಿಷ್ಯವಾಣಿ ಪರಿಚಯ](https://img.youtube.com/vi/cBojo1hsHiI/0.jpg)](https://youtu.be/cBojo1hsHiI "ಕಾಲ ಸರಣಿಗಳ ಭವಿಷ್ಯವಾಣಿ ಪರಿಚಯ") + +> 🎥 ಕಾಲ ಸರಣಿಗಳ ಭವಿಷ್ಯವಾಣಿ ಕುರಿತು ವೀಡಿಯೋಗಾಗಿ ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ + +## [ಪೂರ್ವ-ಪಾಠ ಪ್ರಶ್ನೋತ್ತರ](https://ff-quizzes.netlify.app/en/ml/) + +ಇದು ವ್ಯವಹಾರಕ್ಕೆ ನೇರವಾಗಿ ಅನ್ವಯಿಸುವ ಬೆಲೆ ನಿಗದಿ, ಇನ್ವೆಂಟರಿ ಮತ್ತು ಸರಬರಾಜು ಸರಪಳಿ ಸಮಸ್ಯೆಗಳಂತಹ ಸಮಸ್ಯೆಗಳಿಗೆ ನೇರ ಅನ್ವಯವಿರುವ ಉಪಯುಕ್ತ ಮತ್ತು ಆಸಕ್ತಿದಾಯಕ ಕ್ಷೇತ್ರವಾಗಿದೆ. ಭವಿಷ್ಯದ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಉತ್ತಮವಾಗಿ ಊಹಿಸಲು ಹೆಚ್ಚಿನ ಒಳನೋಟಗಳನ್ನು ಪಡೆಯಲು ಡೀಪ್ ಲರ್ನಿಂಗ್ ತಂತ್ರಗಳನ್ನು ಬಳಸಲು ಪ್ರಾರಂಭಿಸಿದರೂ, ಕಾಲ ಸರಣಿಗಳ ಭವಿಷ್ಯವಾಣಿ ಕ್ಲಾಸಿಕ್ ಎಂಎಲ್ ತಂತ್ರಜ್ಞಾನಗಳಿಂದ ಬಹುಮಟ್ಟಿಗೆ ಪ್ರಭಾವಿತವಾಗಿರುವ ಕ್ಷೇತ್ರವಾಗಿಯೇ ಉಳಿದಿದೆ. + +> ಪೆನ್ ಸ್ಟೇಟ್‌ನ ಉಪಯುಕ್ತ ಕಾಲ ಸರಣಿ ಪಠ್ಯಕ್ರಮವನ್ನು [ಇಲ್ಲಿ](https://online.stat.psu.edu/stat510/lesson/1) ಕಾಣಬಹುದು + +## ಪರಿಚಯ + +ನೀವು ಸಮಯದೊಂದಿಗೆ ಎಷ್ಟು ಬಾರಿ ಮತ್ತು ಎಷ್ಟು ಕಾಲ ಬಳಸಲಾಗುತ್ತದೆ ಎಂಬುದರ ಬಗ್ಗೆ ಡೇಟಾವನ್ನು ಒದಗಿಸುವ ಸ್ಮಾರ್ಟ್ ಪಾರ್ಕಿಂಗ್ ಮೀಟರ್‌ಗಳ ಸರಣಿಯನ್ನು ನಿರ್ವಹಿಸುತ್ತಿದ್ದೀರಿ ಎಂದು ಊಹಿಸೋಣ. + +> ಮೀಟರ್‌ನ ಹಿಂದಿನ ಕಾರ್ಯಕ್ಷಮತೆಯ ಆಧಾರದ ಮೇಲೆ, ಸರಬರಾಜು ಮತ್ತು ಬೇಡಿಕೆಯ ನಿಯಮಗಳ ಪ್ರಕಾರ ಅದರ ಭವಿಷ್ಯದ ಮೌಲ್ಯವನ್ನು ನೀವು ಊಹಿಸಬಹುದಾದರೆ? + +ನಿಮ್ಮ ಗುರಿಯನ್ನು ಸಾಧಿಸಲು ಯಾವಾಗ ಕ್ರಮ ಕೈಗೊಳ್ಳಬೇಕೆಂದು ನಿಖರವಾಗಿ ಊಹಿಸುವುದು ಕಾಲ ಸರಣಿಗಳ ಭವಿಷ್ಯವಾಣಿಯಿಂದ ಎದುರಿಸಬಹುದಾದ ಸವಾಲಾಗಿದೆ. ಜನರು ಪಾರ್ಕಿಂಗ್ ಸ್ಥಳ ಹುಡುಕುತ್ತಿರುವ ಸಮಯದಲ್ಲಿ ಹೆಚ್ಚು ಶುಲ್ಕ ವಿಧಿಸುವುದು ಅವರಿಗೆ ಸಂತೋಷಕರವಾಗುವುದಿಲ್ಲ, ಆದರೆ ಇದು ರಸ್ತೆಗಳ ಸ್ವಚ್ಛತೆಯನ್ನು ಕಾಪಾಡಲು ಆದಾಯವನ್ನು ಉತ್ಪಾದಿಸುವ ಖಚಿತ ಮಾರ್ಗವಾಗಿರುತ್ತದೆ! + +ಕಾಲ ಸರಣಿ ಆಲ್ಗಾರಿಥಮ್‌ಗಳ ಕೆಲವು ಪ್ರಕಾರಗಳನ್ನು ಅನ್ವೇಷಿಸಿ, ಕೆಲವು ಡೇಟಾವನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸಿ ಮತ್ತು ಸಿದ್ಧಪಡಿಸಲು ನೋಟ್ಬುಕ್ ಪ್ರಾರಂಭಿಸೋಣ. ನೀವು ವಿಶ್ಲೇಷಿಸುವ ಡೇಟಾ GEFCom2014 ಭವಿಷ್ಯವಾಣಿ ಸ್ಪರ್ಧೆಯಿಂದ ತೆಗೆದುಕೊಂಡಿದೆ. ಇದು 2012 ರಿಂದ 2014 ರವರೆಗೆ 3 ವರ್ಷಗಳ ಗಂಟೆಗಟ್ಟಲೆ ವಿದ್ಯುತ್ ಲೋಡ್ ಮತ್ತು ತಾಪಮಾನ ಮೌಲ್ಯಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. ವಿದ್ಯುತ್ ಲೋಡ್ ಮತ್ತು ತಾಪಮಾನದ ಇತಿಹಾಸದ ಮಾದರಿಗಳನ್ನು ಆಧರಿಸಿ, ನೀವು ಭವಿಷ್ಯದ ವಿದ್ಯುತ್ ಲೋಡ್ ಮೌಲ್ಯಗಳನ್ನು ಊಹಿಸಬಹುದು. + +ಈ ಉದಾಹರಣೆಯಲ್ಲಿ, ನೀವು ಇತಿಹಾಸದ ಲೋಡ್ ಡೇಟಾವನ್ನು ಮಾತ್ರ ಬಳಸಿಕೊಂಡು ಒಂದು ಕಾಲ ಹಂತವನ್ನು ಮುಂಚಿತವಾಗಿ ಊಹಿಸುವುದನ್ನು ಕಲಿಯುತ್ತೀರಿ. ಪ್ರಾರಂಭಿಸುವ ಮೊದಲು, ಆದರೆ, ಹಿನ್ನೆಲೆಯಲ್ಲಿರುವ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಉಪಯುಕ್ತ. + +## ಕೆಲವು ವ್ಯಾಖ್ಯಾನಗಳು + +'ಕಾಲ ಸರಣಿ' ಎಂಬ ಪದವನ್ನು ಎದುರಿಸಿದಾಗ, ಅದರ ಬಳಕೆಯನ್ನು ವಿವಿಧ ಸಂದರ್ಭಗಳಲ್ಲಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕಾಗುತ್ತದೆ. + +🎓 **ಕಾಲ ಸರಣಿ** + +ಗಣಿತದಲ್ಲಿ, "ಕಾಲ ಸರಣಿ ಎಂದರೆ ಸಮಯ ಕ್ರಮದಲ್ಲಿ ಸೂಚಿಸಲ್ಪಟ್ಟ (ಅಥವಾ ಪಟ್ಟಿ ಮಾಡಲಾದ ಅಥವಾ ಗ್ರಾಫ್ ಮಾಡಲಾದ) ಡೇಟಾ ಪಾಯಿಂಟ್‌ಗಳ ಸರಣಿ. ಸಾಮಾನ್ಯವಾಗಿ, ಕಾಲ ಸರಣಿ ಎಂದರೆ ಸಮಯದಲ್ಲಿ ಸಮಾನ ಅಂತರದ ಕ್ರಮವಾಗಿ ತೆಗೆದುಕೊಂಡ ಸರಣಿ." ಕಾಲ ಸರಣಿಯ ಉದಾಹರಣೆ ಎಂದರೆ [ಡೌ ಜೋನ್ಸ್ ಇಂಡಸ್ಟ್ರಿಯಲ್ ಅವರೆಜ್](https://wikipedia.org/wiki/Time_series) ನ ದೈನಂದಿನ ಮುಚ್ಚುವ ಮೌಲ್ಯ. ಕಾಲ ಸರಣಿ ಪ್ಲಾಟ್‌ಗಳು ಮತ್ತು ಸಾಂಖ್ಯಿಕ ಮಾದರೀಕರಣವನ್ನು ಸಿಗ್ನಲ್ ಪ್ರೊಸೆಸಿಂಗ್, ಹವಾಮಾನ ಭವಿಷ್ಯವಾಣಿ, ಭೂಕಂಪ ಭವಿಷ್ಯವಾಣಿ ಮತ್ತು ಇತರ ಕ್ಷೇತ್ರಗಳಲ್ಲಿ ಸಾಮಾನ್ಯವಾಗಿ ಕಾಣಬಹುದು, ಅಲ್ಲಿ ಘಟನೆಗಳು ಸಂಭವಿಸುತ್ತವೆ ಮತ್ತು ಡೇಟಾ ಪಾಯಿಂಟ್‌ಗಳನ್ನು ಸಮಯದೊಂದಿಗೆ ಪ್ಲಾಟ್ ಮಾಡಬಹುದು. + +🎓 **ಕಾಲ ಸರಣಿ ವಿಶ್ಲೇಷಣೆ** + +ಕಾಲ ಸರಣಿ ವಿಶ್ಲೇಷಣೆ ಎಂದರೆ ಮೇಲ್ಕಂಡ ಕಾಲ ಸರಣಿ ಡೇಟಾವನ್ನು ವಿಶ್ಲೇಷಿಸುವುದು. ಕಾಲ ಸರಣಿ ಡೇಟಾ ವಿಭಿನ್ನ ರೂಪಗಳನ್ನು ಹೊಂದಬಹುದು, ಉದಾಹರಣೆಗೆ 'ವಿರಾಮಿತ ಕಾಲ ಸರಣಿ' ಇದು ವಿರಾಮದ ಘಟನೆಗೆ ಮುಂಚೆ ಮತ್ತು ನಂತರದ ಕಾಲ ಸರಣಿಯ ಬೆಳವಣಿಗೆಯ ಮಾದರಿಗಳನ್ನು ಪತ್ತೆಹಚ್ಚುತ್ತದೆ. ಕಾಲ ಸರಣಿಗೆ ಬೇಕಾದ ವಿಶ್ಲೇಷಣೆ ಡೇಟಾದ ಸ್ವಭಾವದ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿದೆ. ಕಾಲ ಸರಣಿ ಡೇಟಾ ಸ್ವತಃ ಸಂಖ್ಯೆಗಳ ಅಥವಾ ಅಕ್ಷರಗಳ ಸರಣಿಯಾಗಿರಬಹುದು. + +ನಿರ್ವಹಿಸಬೇಕಾದ ವಿಶ್ಲೇಷಣೆ ವಿವಿಧ ವಿಧಾನಗಳನ್ನು ಬಳಸುತ್ತದೆ, ಅವುಗಳಲ್ಲಿ ಫ್ರೀಕ್ವೆನ್ಸಿ-ಡೊಮೇನ್ ಮತ್ತು ಟೈಮ್-ಡೊಮೇನ್, ರೇಖೀಯ ಮತ್ತು ಅರೆಖೀಯ, ಮತ್ತು ಇನ್ನಷ್ಟು ಸೇರಿವೆ. ಈ ರೀತಿಯ ಡೇಟಾವನ್ನು ವಿಶ್ಲೇಷಿಸುವ ಅನೇಕ ಮಾರ್ಗಗಳ ಬಗ್ಗೆ [ಇಲ್ಲಿ](https://www.itl.nist.gov/div898/handbook/pmc/section4/pmc4.htm) ತಿಳಿದುಕೊಳ್ಳಿ. + +🎓 **ಕಾಲ ಸರಣಿ ಭವಿಷ್ಯವಾಣಿ** + +ಕಾಲ ಸರಣಿ ಭವಿಷ್ಯವಾಣಿ ಎಂದರೆ ಹಿಂದಿನ ಸಂಗ್ರಹಿತ ಡೇಟಾದ ಮಾದರಿಗಳನ್ನು ಆಧರಿಸಿ ಭವಿಷ್ಯದ ಮೌಲ್ಯಗಳನ್ನು ಊಹಿಸಲು ಮಾದರಿಯನ್ನು ಬಳಸುವುದು. ಕಾಲ ಸರಣಿ ಡೇಟಾವನ್ನು ಅನ್ವೇಷಿಸಲು ರಿಗ್ರೆಶನ್ ಮಾದರಿಗಳನ್ನು ಬಳಸಬಹುದು, ಸಮಯ ಸೂಚ್ಯಂಕಗಳನ್ನು x ಚರಗಳಾಗಿ ಗ್ರಾಫ್‌ನಲ್ಲಿ ಬಳಸಿಕೊಂಡು, ಆದರೆ ಇಂತಹ ಡೇಟಾವನ್ನು ವಿಶೇಷ ಮಾದರಿಗಳ ಮೂಲಕ ವಿಶ್ಲೇಷಿಸುವುದು ಉತ್ತಮ. + +ಕಾಲ ಸರಣಿ ಡೇಟಾ ಕ್ರಮಬದ್ಧ ವೀಕ್ಷಣೆಗಳ ಪಟ್ಟಿ ಆಗಿದ್ದು, ರೇಖೀಯ ರಿಗ್ರೆಶನ್ ಮೂಲಕ ವಿಶ್ಲೇಷಿಸಬಹುದಾದ ಡೇಟಾದಂತೆ ಅಲ್ಲ. ಅತ್ಯಂತ ಸಾಮಾನ್ಯ ಮಾದರಿ ARIMA, ಇದು "ಆಟೋರೆಗ್ರೆಸಿವ್ ಇಂಟಿಗ್ರೇಟೆಡ್ ಮೂವಿಂಗ್ ಅವರೆಜ್" ಎಂಬ ಅಕ್ಷರಶಃ. + +[ARIMA ಮಾದರಿಗಳು](https://online.stat.psu.edu/stat510/lesson/1/1.1) "ಸರಣಿಯ ಪ್ರಸ್ತುತ ಮೌಲ್ಯವನ್ನು ಹಿಂದಿನ ಮೌಲ್ಯಗಳು ಮತ್ತು ಹಿಂದಿನ ಊಹಾ ದೋಷಗಳಿಗೆ ಸಂಬಂಧಿಸುತ್ತದೆ." ಅವು ಸಮಯ-ಡೊಮೇನ್ ಡೇಟಾವನ್ನು ವಿಶ್ಲೇಷಿಸಲು ಅತ್ಯಂತ ಸೂಕ್ತವಾಗಿವೆ, ಅಲ್ಲಿ ಡೇಟಾ ಸಮಯದೊಂದಿಗೆ ಕ್ರಮಬದ್ಧವಾಗಿದೆ. + +> ARIMA ಮಾದರಿಗಳ ಹಲವು ಪ್ರಕಾರಗಳಿವೆ, ಅವುಗಳ ಬಗ್ಗೆ ನೀವು [ಇಲ್ಲಿ](https://people.duke.edu/~rnau/411arim.htm) ತಿಳಿದುಕೊಳ್ಳಬಹುದು ಮತ್ತು ಮುಂದಿನ ಪಾಠದಲ್ಲಿ ಅವುಗಳ ಬಗ್ಗೆ ಸ್ಪರ್ಶಿಸುವಿರಿ. + +ಮುಂದಿನ ಪಾಠದಲ್ಲಿ, ನೀವು [ಏಕಚರ ಕಾಲ ಸರಣಿ](https://itl.nist.gov/div898/handbook/pmc/section4/pmc44.htm) ಬಳಸಿ ARIMA ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸುವಿರಿ, ಇದು ಸಮಯದೊಂದಿಗೆ ಮೌಲ್ಯ ಬದಲಾಗುವ ಒಂದು ಚರವನ್ನು ಗಮನಿಸುತ್ತದೆ. ಈ ರೀತಿಯ ಡೇಟಾದ ಉದಾಹರಣೆ [ಈ ಡೇಟಾಸೆಟ್](https://itl.nist.gov/div898/handbook/pmc/section4/pmc4411.htm) ಆಗಿದ್ದು, ಇದು ಮಾಉನಾ ಲೋಆ ವೀಕ್ಷಣಾಲಯದಲ್ಲಿ ಮಾಸಿಕ CO2 ಸಾಂದ್ರತೆಯನ್ನು ದಾಖಲಿಸುತ್ತದೆ: + +| CO2 | YearMonth | Year | Month | +| :----: | :-------: | :---: | :---: | +| 330.62 | 1975.04 | 1975 | 1 | +| 331.40 | 1975.13 | 1975 | 2 | +| 331.87 | 1975.21 | 1975 | 3 | +| 333.18 | 1975.29 | 1975 | 4 | +| 333.92 | 1975.38 | 1975 | 5 | +| 333.43 | 1975.46 | 1975 | 6 | +| 331.85 | 1975.54 | 1975 | 7 | +| 330.01 | 1975.63 | 1975 | 8 | +| 328.51 | 1975.71 | 1975 | 9 | +| 328.41 | 1975.79 | 1975 | 10 | +| 329.25 | 1975.88 | 1975 | 11 | +| 330.97 | 1975.96 | 1975 | 12 | + +✅ ಈ ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ಸಮಯದೊಂದಿಗೆ ಬದಲಾಗುವ ಚರವನ್ನು ಗುರುತಿಸಿ + +## ಗಮನಿಸಬೇಕಾದ ಕಾಲ ಸರಣಿ ಡೇಟಾ ಲಕ್ಷಣಗಳು + +ಕಾಲ ಸರಣಿ ಡೇಟಾವನ್ನು ನೋಡಿದಾಗ, ಅದರಲ್ಲಿ [ನಿರ್ದಿಷ್ಟ ಲಕ್ಷಣಗಳು](https://online.stat.psu.edu/stat510/lesson/1/1.1) ಇವೆಂದು ನೀವು ಗಮನಿಸಬಹುದು, ಅವುಗಳನ್ನು ಗಮನದಲ್ಲಿಟ್ಟುಕೊಂಡು ಅವುಗಳ ಮಾದರಿಗಳನ್ನು ಉತ್ತಮವಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ನೀವು ಅವುಗಳನ್ನು ತಗ್ಗಿಸಬೇಕಾಗಬಹುದು. ಕಾಲ ಸರಣಿ ಡೇಟಾವನ್ನು ನೀವು ವಿಶ್ಲೇಷಿಸಲು ಬಯಸುವ 'ಸಿಗ್ನಲ್' ಎಂದು ಪರಿಗಣಿಸಿದರೆ, ಈ ಲಕ್ಷಣಗಳನ್ನು 'ಶಬ್ದ' ಎಂದು ಭಾವಿಸಬಹುದು. ಈ 'ಶಬ್ದ' ಅನ್ನು ಕೆಲವು ಸಾಂಖ್ಯಿಕ ತಂತ್ರಗಳನ್ನು ಬಳಸಿ ಕಡಿಮೆ ಮಾಡಬೇಕಾಗಬಹುದು. + +ಕಾಲ ಸರಣಿಯೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ನೀವು ತಿಳಿದುಕೊಳ್ಳಬೇಕಾದ ಕೆಲವು ಪರಿಕಲ್ಪನೆಗಳು ಇಲ್ಲಿವೆ: + +🎓 **ಪ್ರವೃತ್ತಿಗಳು** + +ಪ್ರವೃತ್ತಿಗಳು ಎಂದರೆ ಸಮಯದೊಂದಿಗೆ ಅಳೆಯಬಹುದಾದ ಏರಿಕೆ ಮತ್ತು ಇಳಿಕೆಗಳು. [ಇನ್ನಷ್ಟು ಓದಿ](https://machinelearningmastery.com/time-series-trends-in-python). ಕಾಲ ಸರಣಿಯ ಸನ್ನಿವೇಶದಲ್ಲಿ, ನಿಮ್ಮ ಕಾಲ ಸರಣಿಯಿಂದ ಪ್ರವೃತ್ತಿಗಳನ್ನು ಹೇಗೆ ಬಳಸುವುದು ಮತ್ತು ಅಗತ್ಯವಿದ್ದರೆ ತೆಗೆದುಹಾಕುವುದು. + +🎓 **[ಹಂಗಾಮಿ ಪ್ರಭಾವ](https://machinelearningmastery.com/time-series-seasonality-with-python/)** + +ಹಂಗಾಮಿ ಪ್ರಭಾವ ಎಂದರೆ ಹಬ್ಬದ ಸಮಯದ ವ್ಯಾಪಾರ ಹೆಚ್ಚಳದಂತಹ ನಿಯಮಿತ ಅಸ್ಥಿರತೆಗಳು. [ನೋಡಿ](https://itl.nist.gov/div898/handbook/pmc/section4/pmc443.htm) ವಿವಿಧ ರೀತಿಯ ಪ್ಲಾಟ್‌ಗಳು ಡೇಟಾದಲ್ಲಿ ಹಂಗಾಮಿ ಪ್ರಭಾವವನ್ನು ಹೇಗೆ ತೋರಿಸುತ್ತವೆ. + +🎓 **ಅಸಾಮಾನ್ಯ ಮೌಲ್ಯಗಳು** + +ಅಸಾಮಾನ್ಯ ಮೌಲ್ಯಗಳು ಸಾಮಾನ್ಯ ಡೇಟಾ ವ್ಯತ್ಯಾಸದಿಂದ ಬಹಳ ದೂರದಲ್ಲಿರುತ್ತವೆ. + +🎓 **ದೀರ್ಘಾವಧಿ ಚಕ್ರ** + +ಹಂಗಾಮಿ ಪ್ರಭಾವದಿಂದ ಸ್ವತಂತ್ರವಾಗಿ, ಡೇಟಾ ದೀರ್ಘಾವಧಿ ಚಕ್ರವನ್ನು ತೋರಿಸಬಹುದು, ಉದಾಹರಣೆಗೆ ಒಂದು ವರ್ಷಕ್ಕಿಂತ ಹೆಚ್ಚು ಕಾಲ ಇರುವ ಆರ್ಥಿಕ ಕುಸಿತ. + +🎓 **ಸ್ಥಿರ ವ್ಯತ್ಯಾಸ** + +ಸಮಯದೊಂದಿಗೆ, ಕೆಲವು ಡೇಟಾ ಸ್ಥಿರ ಅಸ್ಥಿರತೆಗಳನ್ನು ತೋರಿಸುತ್ತವೆ, ಉದಾಹರಣೆಗೆ ದಿನ ಮತ್ತು ರಾತ್ರಿ ಎನರ್ಜಿ ಬಳಕೆ. + +🎓 **ಅಕಸ್ಮಾತ್ ಬದಲಾವಣೆಗಳು** + +ಡೇಟಾ ಅಕಸ್ಮಾತ್ ಬದಲಾವಣೆಯನ್ನು ತೋರಿಸಬಹುದು, ಇದಕ್ಕೆ ಹೆಚ್ಚಿನ ವಿಶ್ಲೇಷಣೆ ಬೇಕಾಗಬಹುದು. ಉದಾಹರಣೆಗೆ COVID ಕಾರಣದಿಂದ ವ್ಯವಹಾರಗಳ ಅಕಸ್ಮಾತ್ ಮುಚ್ಚುವಿಕೆ ಡೇಟಾದಲ್ಲಿ ಬದಲಾವಣೆಗಳನ್ನುಂಟುಮಾಡಿತು. + +✅ ಇಲ್ಲಿ [ನಮೂನಾ ಕಾಲ ಸರಣಿ ಪ್ಲಾಟ್](https://www.kaggle.com/kashnitsky/topic-9-part-1-time-series-analysis-in-python) ಇದೆ, ಇದು ಕೆಲವು ವರ್ಷಗಳ ಕಾಲ ದಿನನಿತ್ಯದ ಆಟದ ಕರೆನ್ಸಿ ಖರ್ಚನ್ನು ತೋರಿಸುತ್ತದೆ. ಈ ಡೇಟಾದಲ್ಲಿ ಮೇಲ್ಕಂಡ ಲಕ್ಷಣಗಳಲ್ಲಿ ಯಾವುದಾದರೂ ಗುರುತಿಸಬಹುದೇ? + +![ಆಟದ ಕರೆನ್ಸಿ ಖರ್ಚು](../../../../translated_images/currency.e7429812bfc8c6087b2d4c410faaa4aaa11b2fcaabf6f09549b8249c9fbdb641.kn.png) + +## ಅಭ್ಯಾಸ - ವಿದ್ಯುತ್ ಬಳಕೆ ಡೇಟಾ ಮೂಲಕ ಪ್ರಾರಂಭಿಸುವುದು + +ಹಿಂದಿನ ಬಳಕೆಯನ್ನು ಆಧರಿಸಿ ಭವಿಷ್ಯದ ವಿದ್ಯುತ್ ಬಳಕೆಯನ್ನು ಊಹಿಸಲು ಕಾಲ ಸರಣಿ ಮಾದರಿಯನ್ನು ರಚಿಸುವುದನ್ನು ಪ್ರಾರಂಭಿಸೋಣ. + +> ಈ ಉದಾಹರಣೆಯ ಡೇಟಾ GEFCom2014 ಭವಿಷ್ಯವಾಣಿ ಸ್ಪರ್ಧೆಯಿಂದ ತೆಗೆದುಕೊಂಡಿದೆ. ಇದು 2012 ರಿಂದ 2014 ರವರೆಗೆ 3 ವರ್ಷಗಳ ಗಂಟೆಗಟ್ಟಲೆ ವಿದ್ಯುತ್ ಲೋಡ್ ಮತ್ತು ತಾಪಮಾನ ಮೌಲ್ಯಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. +> +> ಟಾವ್ ಹಾಂಗ್, ಪಿಯೆರ್ರೆ ಪಿನ್ಸನ್, ಶು ಫಾನ್, ಹಮಿದ್ರೆಜಾ ಜರೆಪೌರ್, ಅಲ್ಬೆರ್ಟೋ ಟ್ರೊಕೊಲ್ಲಿ ಮತ್ತು ರಾಬ್ ಜೆ. ಹಿಂಡ್ಮನ್, "ಪ್ರಾಬಬಿಲಿಸ್ಟಿಕ್ ಎನರ್ಜಿ ಫೋರ್ಕಾಸ್ಟಿಂಗ್: ಗ್ಲೋಬಲ್ ಎನರ್ಜಿ ಫೋರ್ಕಾಸ್ಟಿಂಗ್ ಸ್ಪರ್ಧೆ 2014 ಮತ್ತು ಮುಂದಿನದು", ಇಂಟರ್‌ನ್ಯಾಷನಲ್ ಜರ್ನಲ್ ಆಫ್ ಫೋರ್ಕಾಸ್ಟಿಂಗ್, ವಾಲ್ಯೂಮ್ 32, ಸಂಖ್ಯೆ 3, ಪುಟಗಳು 896-913, ಜುಲೈ-ಸೆಪ್ಟೆಂಬರ್, 2016. + +1. ಈ ಪಾಠದ `working` ಫೋಲ್ಡರ್‌ನಲ್ಲಿ _notebook.ipynb_ ಫೈಲ್ ತೆರೆಯಿರಿ. ಡೇಟಾ ಲೋಡ್ ಮತ್ತು ದೃಶ್ಯೀಕರಣಕ್ಕೆ ಸಹಾಯ ಮಾಡುವ ಲೈಬ್ರರಿಗಳನ್ನು ಸೇರಿಸುವುದರಿಂದ ಪ್ರಾರಂಭಿಸಿ + + ```python + import os + import matplotlib.pyplot as plt + from common.utils import load_data + %matplotlib inline + ``` + + ಗಮನಿಸಿ, ನೀವು ಒಳಗೊಂಡಿರುವ `common` ಫೋಲ್ಡರ್‌ನ ಫೈಲ್‌ಗಳನ್ನು ಬಳಸುತ್ತಿದ್ದೀರಿ, ಇದು ನಿಮ್ಮ ಪರಿಸರವನ್ನು ಸಿದ್ಧಪಡಿಸುತ್ತದೆ ಮತ್ತು ಡೇಟಾ ಡೌನ್‌ಲೋಡ್ ಮಾಡುವುದನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ. + +2. ನಂತರ, `load_data()` ಮತ್ತು `head()` ಅನ್ನು ಕರೆಸಿ ಡೇಟಾವನ್ನು ಡೇಟಾಫ್ರೇಮ್ ಆಗಿ ಪರಿಶೀಲಿಸಿ: + + ```python + data_dir = './data' + energy = load_data(data_dir)[['load']] + energy.head() + ``` + + ನೀವು ದಿನಾಂಕ ಮತ್ತು ಲೋಡ್ ಅನ್ನು ಪ್ರತಿನಿಧಿಸುವ ಎರಡು ಕಾಲಮ್‌ಗಳಿವೆ ಎಂದು ನೋಡಬಹುದು: + + | | load | + | :-----------------: | :----: | + | 2012-01-01 00:00:00 | 2698.0 | + | 2012-01-01 01:00:00 | 2558.0 | + | 2012-01-01 02:00:00 | 2444.0 | + | 2012-01-01 03:00:00 | 2402.0 | + | 2012-01-01 04:00:00 | 2403.0 | + +3. ಈಗ, `plot()` ಅನ್ನು ಕರೆಸಿ ಡೇಟಾವನ್ನು ಪ್ಲಾಟ್ ಮಾಡಿ: + + ```python + energy.plot(y='load', subplots=True, figsize=(15, 8), fontsize=12) + plt.xlabel('timestamp', fontsize=12) + plt.ylabel('load', fontsize=12) + plt.show() + ``` + + ![energy plot](../../../../translated_images/energy-plot.5fdac3f397a910bc6070602e9e45bea8860d4c239354813fa8fc3c9d556f5bad.kn.png) + +4. ಈಗ, 2014 ರ ಜುಲೈ ಮೊದಲ ವಾರವನ್ನು `[from date]: [to date]` ಮಾದರಿಯಲ್ಲಿ `energy` ಗೆ ಇನ್ಪುಟ್ ನೀಡುವ ಮೂಲಕ ಪ್ಲಾಟ್ ಮಾಡಿ: + + ```python + energy['2014-07-01':'2014-07-07'].plot(y='load', subplots=True, figsize=(15, 8), fontsize=12) + plt.xlabel('timestamp', fontsize=12) + plt.ylabel('load', fontsize=12) + plt.show() + ``` + + ![july](../../../../translated_images/july-2014.9e1f7c318ec6d5b30b0d7e1e20be3643501f64a53f3d426d7c7d7b62addb335e.kn.png) + + ಅದ್ಭುತವಾದ ಪ್ಲಾಟ್! ಈ ಪ್ಲಾಟ್‌ಗಳನ್ನು ನೋಡಿ ಮೇಲ್ಕಂಡ ಲಕ್ಷಣಗಳಲ್ಲಿ ಯಾವುದಾದರೂ ನೀವು ಗುರುತಿಸಬಹುದೇ? ಡೇಟಾವನ್ನು ದೃಶ್ಯೀಕರಿಸುವ ಮೂಲಕ ನಾವು ಏನು ಊಹಿಸಬಹುದು? + +ಮುಂದಿನ ಪಾಠದಲ್ಲಿ, ನೀವು ARIMA ಮಾದರಿಯನ್ನು ರಚಿಸಿ ಕೆಲವು ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ಮಾಡುತ್ತೀರಿ. + +--- + +## 🚀ಸವಾಲು + +ಕಾಲ ಸರಣಿಗಳ ಭವಿಷ್ಯವಾಣಿಯಿಂದ ಲಾಭ ಪಡೆಯಬಹುದಾದ ಎಲ್ಲಾ ಕೈಗಾರಿಕೆಗಳು ಮತ್ತು ವಿಚಾರಣಾ ಕ್ಷೇತ್ರಗಳ ಪಟ್ಟಿಯನ್ನು ರಚಿಸಿ. ಈ ತಂತ್ರಗಳನ್ನು ಕಲೆಯಲ್ಲಿಯೂ ಅನ್ವಯಿಸಬಹುದೇ? ಆರ್ಥಿಕಶಾಸ್ತ್ರದಲ್ಲಿ? ಪರಿಸರಶಾಸ್ತ್ರದಲ್ಲಿ? ಚಿಲ್ಲರೆ ವ್ಯಾಪಾರದಲ್ಲಿ? ಕೈಗಾರಿಕೆಯಲ್ಲಿ? ಹಣಕಾಸಿನಲ್ಲಿ? ಇನ್ನೆಲ್ಲಿ? + +## [ಪೋಸ್ಟ್-ಪಾಠ ಪ್ರಶ್ನೋತ್ತರ](https://ff-quizzes.netlify.app/en/ml/) + +## ವಿಮರ್ಶೆ ಮತ್ತು ಸ್ವಯಂ ಅಧ್ಯಯನ + +ಇಲ್ಲಿ ನಾವು ಅವುಗಳನ್ನು ಒಳಗೊಂಡಿಲ್ಲದಿದ್ದರೂ, ನ್ಯೂರಲ್ ನೆಟ್‌ವರ್ಕ್‌ಗಳನ್ನು ಕೆಲವೊಮ್ಮೆ ಕಾಲ ಸರಣಿ ಭವಿಷ್ಯವಾಣಿಯ ಕ್ಲಾಸಿಕ್ ವಿಧಾನಗಳನ್ನು ಸುಧಾರಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ. ಅವುಗಳ ಬಗ್ಗೆ [ಈ ಲೇಖನದಲ್ಲಿ](https://medium.com/microsoftazure/neural-networks-for-forecasting-financial-and-economic-time-series-6aca370ff412) ಇನ್ನಷ್ಟು ಓದಿ + +## ಹವಾಲೆ + +[ಇನ್ನಷ್ಟು ಕಾಲ ಸರಣಿಗಳನ್ನು ದೃಶ್ಯೀಕರಿಸಿ](assignment.md) + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಪ್ರಮುಖ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/7-TimeSeries/1-Introduction/assignment.md b/translations/kn/7-TimeSeries/1-Introduction/assignment.md new file mode 100644 index 000000000..6a2f6f38b --- /dev/null +++ b/translations/kn/7-TimeSeries/1-Introduction/assignment.md @@ -0,0 +1,27 @@ + +# ಇನ್ನಷ್ಟು ಕಾಲ ಸರಣಿಗಳನ್ನು ದೃಶ್ಯೀಕರಿಸಿ + +## ಸೂಚನೆಗಳು + +ನೀವು ಈ ವಿಶೇಷ ಮಾದರಿಯನ್ನು ಅಗತ್ಯವಿರುವ ಡೇಟಾ ಪ್ರಕಾರವನ್ನು ನೋಡಿ ಕಾಲ ಸರಣಿ ಭವಿಷ್ಯವಾಣಿ ಬಗ್ಗೆ ಕಲಿಯಲು ಪ್ರಾರಂಭಿಸಿದ್ದೀರಿ. ನೀವು ಶಕ್ತಿ ಸುತ್ತಲೂ ಕೆಲವು ಡೇಟಾವನ್ನು ದೃಶ್ಯೀಕರಿಸಿದ್ದೀರಿ. ಈಗ, ಕಾಲ ಸರಣಿ ಭವಿಷ್ಯವಾಣಿಯಿಂದ ಲಾಭ ಪಡೆಯಬಹುದಾದ ಇನ್ನಷ್ಟು ಡೇಟಾವನ್ನು ಹುಡುಕಿ. ಮೂರು ಉದಾಹರಣೆಗಳನ್ನು ಕಂಡುಹಿಡಿದು (ಪ್ರಯತ್ನಿಸಿ [Kaggle](https://kaggle.com) ಮತ್ತು [Azure Open Datasets](https://azure.microsoft.com/en-us/services/open-datasets/catalog/?WT.mc_id=academic-77952-leestott)) ಅವುಗಳನ್ನು ದೃಶ್ಯೀಕರಿಸಲು ಒಂದು ನೋಟ್ಬುಕ್ ರಚಿಸಿ. ಅವುಗಳಲ್ಲಿ ಇರುವ ಯಾವುದೇ ವಿಶೇಷ ಲಕ್ಷಣಗಳನ್ನು (ಹಂಗಾಮಿ, ತೀವ್ರ ಬದಲಾವಣೆಗಳು, ಅಥವಾ ಇತರ ಪ್ರವೃತ್ತಿಗಳು) ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ ಸೂಚಿಸಿ. + +## ಮೌಲ್ಯಮಾಪನ + +| ಮಾನದಂಡಗಳು | ಉದಾತ್ತ | ಸಮರ್ಪಕ | ಸುಧಾರಣೆಯ ಅಗತ್ಯವಿದೆ | +| -------- | ------------------------------------------------------ | ---------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| | ಮೂರು ಡೇಟಾಸೆಟ್‌ಗಳನ್ನು ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ ಚಿತ್ರಿಸಿ ಮತ್ತು ವಿವರಿಸಲಾಗಿದೆ | ಎರಡು ಡೇಟಾಸೆಟ್‌ಗಳನ್ನು ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ ಚಿತ್ರಿಸಿ ಮತ್ತು ವಿವರಿಸಲಾಗಿದೆ | ಕೆಲವು ಡೇಟಾಸೆಟ್‌ಗಳನ್ನು ಮಾತ್ರ ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ ಚಿತ್ರಿಸಲಾಗಿದೆ ಅಥವಾ ವಿವರಿಸಲಾಗಿದೆ ಅಥವಾ ನೀಡಲಾದ ಡೇಟಾ ಅಪರ್ಯಾಪ್ತವಾಗಿದೆ | + +--- + + +**ಅಸ್ವೀಕಾರ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/7-TimeSeries/1-Introduction/solution/Julia/README.md b/translations/kn/7-TimeSeries/1-Introduction/solution/Julia/README.md new file mode 100644 index 000000000..88cb4a274 --- /dev/null +++ b/translations/kn/7-TimeSeries/1-Introduction/solution/Julia/README.md @@ -0,0 +1,17 @@ + +ಇದು ತಾತ್ಕಾಲಿಕ ಪ್ಲೇಸ್‌ಹೋಲ್ಡರ್ ಆಗಿದೆ + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವಾಗಿ ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/7-TimeSeries/1-Introduction/solution/R/README.md b/translations/kn/7-TimeSeries/1-Introduction/solution/R/README.md new file mode 100644 index 000000000..8352a0509 --- /dev/null +++ b/translations/kn/7-TimeSeries/1-Introduction/solution/R/README.md @@ -0,0 +1,17 @@ + +ಇದು ತಾತ್ಕಾಲಿಕ ಪ್ಲೇಸ್‌ಹೋಲ್ಡರ್ ಆಗಿದೆ + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/7-TimeSeries/1-Introduction/solution/notebook.ipynb b/translations/kn/7-TimeSeries/1-Introduction/solution/notebook.ipynb new file mode 100644 index 000000000..2da779d9d --- /dev/null +++ b/translations/kn/7-TimeSeries/1-Introduction/solution/notebook.ipynb @@ -0,0 +1,172 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# ಡೇಟಾ ಸೆಟ್ ಅಪ್\n", + "\n", + "ಈ ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ, ನಾವು ಹೇಗೆ:\n", + "- ಈ ಮೋಡ್ಯೂಲ್‌ಗಾಗಿ ಕಾಲ ಸರಣಿ ಡೇಟಾವನ್ನು ಸೆಟ್ ಅಪ್ ಮಾಡುವುದು\n", + "- ಡೇಟಾವನ್ನು ದೃಶ್ಯೀಕರಿಸುವುದು\n", + "\n", + "ಈ ಉದಾಹರಣೆಯಲ್ಲಿನ ಡೇಟಾ GEFCom2014 ಮುನ್ಸೂಚನಾ ಸ್ಪರ್ಧೆಯಿಂದ ತೆಗೆದುಕೊಳ್ಳಲಾಗಿದೆ1. ಇದು 2012 ಮತ್ತು 2014 ರ ನಡುವೆ 3 ವರ್ಷಗಳ ಗಂಟೆಗಂಟೆಯ ವಿದ್ಯುತ್ ಲೋಡ್ ಮತ್ತು ತಾಪಮಾನ ಮೌಲ್ಯಗಳನ್ನು ಒಳಗೊಂಡಿದೆ.\n", + "\n", + "1ಟಾವ್ ಹಾಂಗ್, ಪಿಯೆರ್ರೆ ಪಿನ್ಸನ್, ಶು ಫ್ಯಾನ್, ಹಮಿದ್ರೆಜಾ ಜರೆಪೌರ್, ಅಲ್ಬೆರ್ಟೋ ಟ್ರೊಕೋಲ್ಲಿ ಮತ್ತು ರಾಬ್ ಜೆ. ಹಿಂಡ್ಮನ್, \"ಪ್ರಾಬಬಿಲಿಸ್ಟಿಕ್ ಎನರ್ಜಿ ಫೋರ್ಕಾಸ್ಟಿಂಗ್: ಗ್ಲೋಬಲ್ ಎನರ್ಜಿ ಫೋರ್ಕಾಸ್ಟಿಂಗ್ ಸ್ಪರ್ಧೆ 2014 ಮತ್ತು ನಂತರ\", ಇಂಟರ್‌ನ್ಯಾಷನಲ್ ಜರ್ನಲ್ ಆಫ್ ಫೋರ್ಕಾಸ್ಟಿಂಗ್, ವಾಲ್ಯೂಮ್ 32, ಸಂಖ್ಯೆ 3, ಪುಟಗಳು 896-913, ಜುಲೈ-ಸೆಪ್ಟೆಂಬರ್, 2016.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import matplotlib.pyplot as plt\n", + "from common.utils import load_data\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "csv ನಿಂದ ಡೇಟಾವನ್ನು Pandas ಡೇಟಾಫ್ರೇಮ್‌ಗೆ ಲೋಡ್ ಮಾಡಿ\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " load\n", + "2012-01-01 00:00:00 2698.0\n", + "2012-01-01 01:00:00 2558.0\n", + "2012-01-01 02:00:00 2444.0\n", + "2012-01-01 03:00:00 2402.0\n", + "2012-01-01 04:00:00 2403.0" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
load
2012-01-01 00:00:002698.0
2012-01-01 01:00:002558.0
2012-01-01 02:00:002444.0
2012-01-01 03:00:002402.0
2012-01-01 04:00:002403.0
\n
" + }, + "metadata": {}, + "execution_count": 7 + } + ], + "source": [ + "data_dir = './data'\n", + "energy = load_data(data_dir)[['load']]\n", + "energy.head()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ಎಲ್ಲಾ ಲಭ್ಯವಿರುವ ಲೋಡ್ ಡೇಟಾವನ್ನು (ಜನವರಿ 2012 ರಿಂದ ಡಿಸೆಂಬರ್ 2014) ಚಿತ್ರಿಸಿ\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "energy.plot(y='load', subplots=True, figsize=(15, 8), fontsize=12)\n", + "plt.xlabel('timestamp', fontsize=12)\n", + "plt.ylabel('load', fontsize=12)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "2014ರ ಜುಲೈ ಮೊದಲ ವಾರವನ್ನು ರೇಖಾಚಿತ್ರಗೊಳಿಸಿ\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA4kAAAHiCAYAAABFgonlAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOzdeXhb5ZU/8O+r3bYkO7bl3YljZ3dCnJBASCCQFkqBgUDpBrRMZ6YLMJ2l26/TTjtDmelMp09nOtNOaUt31tKFtRToQAkpSUhIiJPY2Z14X+VFkiVL1vL+/pBkjHESL5Ku7r3fz/P4IbF07z1Gsa1z3/OeI6SUICIiIiIiIgIAg9IBEBERERERUfZgkkhEREREREQTmCQSERERERHRBCaJRERERERENIFJIhEREREREU1gkkhEREREREQTTEoHoITi4mJZU1OjdBhERERERESKOHDggFtK6ZruMV0miTU1Ndi/f7/SYRARERERESlCCNF2rsdYbkpEREREREQTmCQSERERERHRBCaJRERERERENEGXexKJiIiIiIgAIBwOo7OzE8FgUOlQ0sJms6Gqqgpms3nGxzBJJCIiIiIi3ers7ITD4UBNTQ2EEEqHk1JSSgwODqKzsxOLFy+e8XEsNyUiIiIiIt0KBoMoKirSXIIIAEIIFBUVzXqVlEkiERERERHpmhYTxKS5fG1MEomIiIiIiBRkt9tTcp57770X3/rWt+Z9HiaJRERERERENIFJIhERERERURaQUuILX/gCVq9ejTVr1uDxxx8HAIyOjuLd73431q9fjzVr1uDpp5+eOObrX/86li1bhssvvxwnTpxISRzsbkpERERERATga88242i3N6XnXFXhxD/fWD+j5z7xxBNobGzEoUOH4Ha7sXHjRmzduhUulwtPPvkknE4n3G43Nm3ahJtuuglvvvkmfvnLX6KxsRGRSATr16/HxRdfPO+YuZJIRERERESUBV577TXcdtttMBqNKC0txZVXXok33ngDUkp8+ctfxkUXXYSrr74aXV1d6Ovrw5/+9CfccsstyM3NhdPpxE033ZSSOLiSSEREREREBMx4xS/THnnkEQwMDODAgQMwm82oqamZ9ViL2eBKIhERERERURa44oor8PjjjyMajWJgYAA7d+7EJZdcAo/Hg5KSEpjNZrzy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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "energy['2014-07-01':'2014-07-07'].plot(y='load', subplots=True, figsize=(15, 8), fontsize=12)\n", + "plt.xlabel('timestamp', fontsize=12)\n", + "plt.ylabel('load', fontsize=12)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ], + "metadata": { + "kernel_info": { + "name": "python3" + }, + "kernelspec": { + "name": "python37364bit8d3b438fb5fc4430a93ac2cb74d693a7", + "display_name": "Python 3.7.0 64-bit ('3.7')" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.0" + }, + "nteract": { + "version": "nteract-front-end@1.0.0" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "coopTranslator": { + "original_hash": "dddca9ad9e34435494e0933c218e1579", + "translation_date": "2025-12-19T17:37:19+00:00", + "source_file": "7-TimeSeries/1-Introduction/solution/notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/translations/kn/7-TimeSeries/1-Introduction/working/notebook.ipynb b/translations/kn/7-TimeSeries/1-Introduction/working/notebook.ipynb new file mode 100644 index 000000000..44122fd6a --- /dev/null +++ b/translations/kn/7-TimeSeries/1-Introduction/working/notebook.ipynb @@ -0,0 +1,63 @@ +{ + "cells": [ + { + "source": [ + "# ಡೇಟಾ ಸೆಟ್ ಅಪ್\n", + "\n", + "ಈ ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ, ನಾವು ಹೇಗೆ ಮಾಡುವುದು ಎಂದು ತೋರಿಸುತ್ತೇವೆ:\n", + "\n", + "ಈ ಮೋಡ್ಯೂಲ್‌ಗಾಗಿ ಕಾಲ ಸರಣಿಯ ಡೇಟಾವನ್ನು ಸೆಟ್ ಅಪ್ ಮಾಡುವುದು\n", + "ಡೇಟಾವನ್ನು ದೃಶ್ಯೀಕರಿಸುವುದು\n", + "ಈ ಉದಾಹರಣೆಯಲ್ಲಿನ ಡೇಟಾ GEFCom2014 ಮುನ್ಸೂಚನಾ ಸ್ಪರ್ಧೆಯಿಂದ ತೆಗೆದುಕೊಳ್ಳಲಾಗಿದೆ1. ಇದು 2012 ಮತ್ತು 2014 ರ ನಡುವೆ 3 ವರ್ಷಗಳ ಗಂಟೆಗಂಟೆಯ ವಿದ್ಯುತ್ ಲೋಡ್ ಮತ್ತು ತಾಪಮಾನ ಮೌಲ್ಯಗಳನ್ನು ಒಳಗೊಂಡಿದೆ.\n", + "\n", + "1ಟಾವ್ ಹಾಂಗ್, ಪಿಯೆರ್ರೆ ಪಿನ್ಸನ್, ಶು ಫ್ಯಾನ್, ಹಮಿದ್ರೆಜಾ ಜರೆಪೌರ್, ಅಲ್ಬೆರ್ಟೋ ಟ್ರೊಕೋಲ್ಲಿ ಮತ್ತು ರಾಬ್ ಜೆ. ಹಿಂಡ್ಮನ್, \"ಪ್ರಾಬಬಿಲಿಸ್ಟಿಕ್ ಎನರ್ಜಿ ಫೋರ್ಕಾಸ್ಟಿಂಗ್: ಗ್ಲೋಬಲ್ ಎನರ್ಜಿ ಫೋರ್ಕಾಸ್ಟಿಂಗ್ ಸ್ಪರ್ಧೆ 2014 ಮತ್ತು ಮುಂದಿನ ಕಾಲ\", ಇಂಟರ್‌ನ್ಯಾಷನಲ್ ಜರ್ನಲ್ ಆಫ್ ಫೋರ್ಕಾಸ್ಟಿಂಗ್, ವಾಲ್ಯೂಮ್ 32, ಸಂಖ್ಯೆ 3, ಪುಟಗಳು 896-913, ಜುಲೈ-ಸೆಪ್ಟೆಂಬರ್, 2016.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವಾಗಿ ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ], + "metadata": { + "kernel_info": { + "name": "python3" + }, + "kernelspec": { + "name": "python37364bit8d3b438fb5fc4430a93ac2cb74d693a7", + "display_name": "Python 3.7.0 64-bit ('3.7')" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.0" + }, + "nteract": { + "version": "nteract-front-end@1.0.0" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "coopTranslator": { + "original_hash": "5e2bbe594906dce3aaaa736d6dac6683", + "translation_date": "2025-12-19T17:36:37+00:00", + "source_file": "7-TimeSeries/1-Introduction/working/notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/translations/kn/7-TimeSeries/2-ARIMA/README.md b/translations/kn/7-TimeSeries/2-ARIMA/README.md new file mode 100644 index 000000000..82354cbd7 --- /dev/null +++ b/translations/kn/7-TimeSeries/2-ARIMA/README.md @@ -0,0 +1,409 @@ + +# ARIMA ಬಳಸಿ ಕಾಲ ಸರಣಿಯ ಭವಿಷ್ಯವಾಣಿ + +ಹಿಂದಿನ ಪಾಠದಲ್ಲಿ, ನೀವು ಕಾಲ ಸರಣಿಯ ಭವಿಷ್ಯವಾಣಿ ಬಗ್ಗೆ ಸ್ವಲ್ಪ ತಿಳಿದುಕೊಂಡಿದ್ದೀರಿ ಮತ್ತು ಒಂದು ಡೇಟಾಸೆಟ್ ಅನ್ನು ಲೋಡ್ ಮಾಡಿದ್ದೀರಿ, ಅದು ಒಂದು ಕಾಲಾವಧಿಯಲ್ಲಿ ವಿದ್ಯುತ್ ಲೋಡ್‌ನ ಅಸ್ಥಿರತೆಯನ್ನು ತೋರಿಸುತ್ತದೆ. + +[![ARIMA ಗೆ ಪರಿಚಯ](https://img.youtube.com/vi/IUSk-YDau10/0.jpg)](https://youtu.be/IUSk-YDau10 "ARIMA ಗೆ ಪರಿಚಯ") + +> 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ ವೀಡಿಯೋ ನೋಡಿ: ARIMA ಮಾದರಿಗಳ ಸಂಕ್ಷಿಪ್ತ ಪರಿಚಯ. ಉದಾಹರಣೆ R ನಲ್ಲಿ ಮಾಡಲಾಗಿದೆ, ಆದರೆ ತತ್ವಗಳು ಸರ್ವತ್ರ ಅನ್ವಯವಾಗುತ್ತವೆ. + +## [ಪೂರ್ವ-ಪಾಠ ಪ್ರಶ್ನೋತ್ತರ](https://ff-quizzes.netlify.app/en/ml/) + +## ಪರಿಚಯ + +ಈ ಪಾಠದಲ್ಲಿ, ನೀವು [ARIMA: *A*uto*R*egressive *I*ntegrated *M*oving *A*verage](https://wikipedia.org/wiki/Autoregressive_integrated_moving_average) ಬಳಸಿ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸುವ ವಿಶೇಷ ವಿಧಾನವನ್ನು ಕಂಡುಹಿಡಿಯುತ್ತೀರಿ. ARIMA ಮಾದರಿಗಳು ವಿಶೇಷವಾಗಿ [ನಾನ್-ಸ್ಟೇಷನರಿ](https://wikipedia.org/wiki/Stationary_process) ಆಗಿರುವ ಡೇಟಾಗೆ ಹೊಂದಿಕೊಳ್ಳಲು ಸೂಕ್ತವಾಗಿವೆ. + +## ಸಾಮಾನ್ಯ ತತ್ವಗಳು + +ARIMA ಜೊತೆ ಕೆಲಸ ಮಾಡಲು, ನೀವು ತಿಳಿದುಕೊಳ್ಳಬೇಕಾದ ಕೆಲವು ತತ್ವಗಳಿವೆ: + +- 🎓 **ಸ್ಟೇಷನರಿ**. ಸಾಂಖ್ಯಿಕ ದೃಷ್ಟಿಕೋನದಿಂದ, ಸ್ಟೇಷನರಿ ಎಂದರೆ ಕಾಲದಲ್ಲಿ ಸರಿದೂಗಿಸಿದಾಗ ಡೇಟಾದ ವಿತರಣೆಯು ಬದಲಾಗದಿರುವುದು. ನಾನ್-ಸ್ಟೇಷನರಿ ಡೇಟಾ ಎಂದರೆ, ವಿಶ್ಲೇಷಿಸಲು ಪರಿವರ್ತನೆ ಮಾಡಬೇಕಾದ ಪ್ರವೃತ್ತಿಗಳಿಂದ ಅಸ್ಥಿರತೆ ತೋರಿಸುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಋತುವಿನ ಪ್ರಭಾವದಿಂದ ಡೇಟಾದಲ್ಲಿ ಅಸ್ಥಿರತೆ ಉಂಟಾಗಬಹುದು ಮತ್ತು ಅದನ್ನು 'seasonal-differencing' ಪ್ರಕ್ರಿಯೆಯಿಂದ ತೆಗೆದುಹಾಕಬಹುದು. + +- 🎓 **[ಡಿಫರೆನ್ಸಿಂಗ್](https://wikipedia.org/wiki/Autoregressive_integrated_moving_average#Differencing)**. ಡಿಫರೆನ್ಸಿಂಗ್ ಎಂದರೆ, ನಾನ್-ಸ್ಟೇಷನರಿ ಡೇಟಾವನ್ನು ಅದರ ಅಸ್ಥಿರ ಪ್ರವೃತ್ತಿಯನ್ನು ತೆಗೆದುಹಾಕಿ ಸ್ಟೇಷನರಿ ಮಾಡಲು ಪರಿವರ್ತಿಸುವ ಪ್ರಕ್ರಿಯೆ. "ಡಿಫರೆನ್ಸಿಂಗ್ ಕಾಲ ಸರಣಿಯ ಮಟ್ಟದಲ್ಲಿ ಬದಲಾವಣೆಗಳನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ, ಪ್ರವೃತ್ತಿ ಮತ್ತು ಋತುವಿನ ಅಸ್ಥಿರತೆಯನ್ನು ನಿವಾರಣೆ ಮಾಡುತ್ತದೆ ಮತ್ತು ಪರಿಣಾಮವಾಗಿ ಕಾಲ ಸರಣಿಯ ಸರಾಸರಿಯನ್ನು ಸ್ಥಿರಗೊಳಿಸುತ್ತದೆ." [ಶಿಕ್ಷಾಂಗ್ ಇತ್ಯಾದಿಗಳ ಪತ್ರಿಕೆ](https://arxiv.org/abs/1904.07632) + +## ಕಾಲ ಸರಣಿಯ ಸನ್ನಿವೇಶದಲ್ಲಿ ARIMA + +ARIMA ಭಾಗಗಳನ್ನು ವಿಶ್ಲೇಷಿಸಿ, ಅದು ಕಾಲ ಸರಣಿಯನ್ನು ಹೇಗೆ ಮಾದರಿಮಾಡಲು ಮತ್ತು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ ಎಂಬುದನ್ನು ತಿಳಿದುಕೊಳ್ಳೋಣ. + +- **AR - AutoRegressive**. Autoregressive ಮಾದರಿಗಳು, ಹೆಸರಿನಂತೆ, ನಿಮ್ಮ ಡೇಟಾದ ಹಿಂದಿನ ಮೌಲ್ಯಗಳನ್ನು ವಿಶ್ಲೇಷಿಸಲು 'ಹಿಂದಕ್ಕೆ' ನೋಡುತ್ತವೆ ಮತ್ತು ಅವುಗಳ ಬಗ್ಗೆ ಊಹೆ ಮಾಡುತ್ತವೆ. ಈ ಹಿಂದಿನ ಮೌಲ್ಯಗಳನ್ನು 'ಲ್ಯಾಗ್'ಗಳು ಎಂದು ಕರೆಯುತ್ತಾರೆ. ಉದಾಹರಣೆಗೆ, ಪೆನ್ಸಿಲ್ ಮಾರಾಟದ ಮಾಸಿಕ ಡೇಟಾ. ಪ್ರತಿ ತಿಂಗಳ ಮಾರಾಟ ಮೊತ್ತವನ್ನು 'ವಿಕಸಿಸುತ್ತಿರುವ ಚರ' ಎಂದು ಪರಿಗಣಿಸಲಾಗುತ್ತದೆ. ಈ ಮಾದರಿ "ವಿಕಸಿಸುತ್ತಿರುವ ಚರವು ತನ್ನ ಸ್ವಂತ ಲ್ಯಾಗ್ (ಹಿಂದಿನ) ಮೌಲ್ಯಗಳ ಮೇಲೆ ರಿಗ್ರೆಶನ್ ಆಗುತ್ತದೆ." [ವಿಕಿಪೀಡಿಯ](https://wikipedia.org/wiki/Autoregressive_integrated_moving_average) + +- **I - Integrated**. ARMA ಮಾದರಿಗಳಿಗಿಂತ ಭಿನ್ನವಾಗಿ, ARIMA ಯಲ್ಲಿರುವ 'I' ಅದರ *[ಒಕ್ಕೂಟ](https://wikipedia.org/wiki/Order_of_integration)* ಅಂಶವನ್ನು ಸೂಚಿಸುತ್ತದೆ. ಡಿಫರೆನ್ಸಿಂಗ್ ಹಂತಗಳನ್ನು ಅನ್ವಯಿಸುವ ಮೂಲಕ ಡೇಟಾ 'ಒಕ್ಕೂಟ' ಆಗುತ್ತದೆ ಮತ್ತು ನಾನ್-ಸ್ಟೇಷನರಿ ಅಸ್ಥಿರತೆಯನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ. + +- **MA - Moving Average**. ಈ ಮಾದರಿಯ [moving-average](https://wikipedia.org/wiki/Moving-average_model) ಅಂಶವು ಲ್ಯಾಗ್‌ಗಳ ಪ್ರಸ್ತುತ ಮತ್ತು ಹಿಂದಿನ ಮೌಲ್ಯಗಳನ್ನು ಗಮನಿಸಿ ನಿರ್ಧರಿಸಲಾದ ಔಟ್‌ಪುಟ್ ಚರವನ್ನು ಸೂಚಿಸುತ್ತದೆ. + +ಮುಖ್ಯಾಂಶ: ARIMA ವಿಶೇಷ ರೀತಿಯ ಕಾಲ ಸರಣಿ ಡೇಟಾಗೆ ಅತ್ಯಂತ ಸಮೀಪವಾಗಿ ಹೊಂದಿಕೊಳ್ಳಲು ಬಳಸಲಾಗುತ್ತದೆ. + +## ಅಭ್ಯಾಸ - ARIMA ಮಾದರಿ ನಿರ್ಮಿಸಿ + +ಈ ಪಾಠದಲ್ಲಿ [_/working_](https://github.com/microsoft/ML-For-Beginners/tree/main/7-TimeSeries/2-ARIMA/working) ಫೋಲ್ಡರ್ ತೆರೆಯಿರಿ ಮತ್ತು [_notebook.ipynb_](https://github.com/microsoft/ML-For-Beginners/blob/main/7-TimeSeries/2-ARIMA/working/notebook.ipynb) ಫೈಲ್ ಅನ್ನು ಹುಡುಕಿ. + +1. `statsmodels` ಪೈಥಾನ್ ಲೈಬ್ರರಿಯನ್ನು ಲೋಡ್ ಮಾಡಲು ನೋಟ್ಬುಕ್ ಅನ್ನು ರನ್ ಮಾಡಿ; ARIMA ಮಾದರಿಗಳಿಗೆ ಇದನ್ನು ನೀವು ಬಳಸುತ್ತೀರಿ. + +1. ಅಗತ್ಯವಿರುವ ಲೈಬ್ರರಿಗಳನ್ನು ಲೋಡ್ ಮಾಡಿ + +1. ಈಗ, ಡೇಟಾ ಪ್ಲಾಟ್ ಮಾಡಲು ಉಪಯುಕ್ತವಾದ ಇನ್ನಷ್ಟು ಲೈಬ್ರರಿಗಳನ್ನು ಲೋಡ್ ಮಾಡಿ: + + ```python + import os + import warnings + import matplotlib.pyplot as plt + import numpy as np + import pandas as pd + import datetime as dt + import math + + from pandas.plotting import autocorrelation_plot + from statsmodels.tsa.statespace.sarimax import SARIMAX + from sklearn.preprocessing import MinMaxScaler + from common.utils import load_data, mape + from IPython.display import Image + + %matplotlib inline + pd.options.display.float_format = '{:,.2f}'.format + np.set_printoptions(precision=2) + warnings.filterwarnings("ignore") # ಎಚ್ಚರಿಕೆ ಸಂದೇಶಗಳನ್ನು ನಿರ್ಲಕ್ಷಿಸಲು ಸೂಚಿಸಿ + ``` + +1. `/data/energy.csv` ಫೈಲ್‌ನಿಂದ ಡೇಟಾವನ್ನು ಪಾಂಡಾಸ್ ಡೇಟಾಫ್ರೇಮ್‌ಗೆ ಲೋಡ್ ಮಾಡಿ ಮತ್ತು ನೋಡಿ: + + ```python + energy = load_data('./data')[['load']] + energy.head(10) + ``` + +1. ಜನವರಿ 2012 ರಿಂದ ಡಿಸೆಂಬರ್ 2014 ರವರೆಗೆ ಲಭ್ಯವಿರುವ ಎಲ್ಲಾ ಎನರ್ಜಿ ಡೇಟಾವನ್ನು ಪ್ಲಾಟ್ ಮಾಡಿ. ಹಿಂದಿನ ಪಾಠದಲ್ಲಿ ನಾವು ಈ ಡೇಟಾವನ್ನು ನೋಡಿದ್ದೇವೆ, ಆದ್ದರಿಂದ ಯಾವುದೇ ಆಶ್ಚರ್ಯವಿಲ್ಲ: + + ```python + energy.plot(y='load', subplots=True, figsize=(15, 8), fontsize=12) + plt.xlabel('timestamp', fontsize=12) + plt.ylabel('load', fontsize=12) + plt.show() + ``` + + ಈಗ, ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸೋಣ! + +### ತರಬೇತಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಡೇಟಾಸೆಟ್‌ಗಳನ್ನು ರಚಿಸಿ + +ನಿಮ್ಮ ಡೇಟಾ ಲೋಡ್ ಆದ ಮೇಲೆ, ಅದನ್ನು ತರಬೇತಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಸೆಟ್‌ಗಳಾಗಿ ವಿಭಜಿಸಬಹುದು. ನೀವು ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ತರಬೇತಿ ಸೆಟ್‌ನಲ್ಲಿ ತರಬೇತಿಮಾಡುತ್ತೀರಿ. ಸಾಮಾನ್ಯವಾಗಿ, ಮಾದರಿ ತರಬೇತಿ ಮುಗಿದ ನಂತರ, ನೀವು ಅದರ ನಿಖರತೆಯನ್ನು ಪರೀಕ್ಷಾ ಸೆಟ್ ಬಳಸಿ ಮೌಲ್ಯಮಾಪನ ಮಾಡುತ್ತೀರಿ. ಪರೀಕ್ಷಾ ಸೆಟ್ ತರಬೇತಿ ಸೆಟ್‌ನ ನಂತರದ ಕಾಲಾವಧಿಯನ್ನು ಒಳಗೊಂಡಿರಬೇಕು, ಇದರಿಂದ ಮಾದರಿ ಭವಿಷ್ಯದ ಕಾಲಾವಧಿಗಳಿಂದ ಮಾಹಿತಿ ಪಡೆಯುವುದಿಲ್ಲ. + +1. 2014 ಸೆಪ್ಟೆಂಬರ್ 1 ರಿಂದ ಅಕ್ಟೋಬರ್ 31 ರವರೆಗೆ ಎರಡು ತಿಂಗಳ ಅವಧಿಯನ್ನು ತರಬೇತಿ ಸೆಟ್‌ಗೆ ಮೀಸಲಿಡಿ. ಪರೀಕ್ಷಾ ಸೆಟ್ 2014 ನವೆಂಬರ್ 1 ರಿಂದ ಡಿಸೆಂಬರ್ 31 ರವರೆಗೆ ಎರಡು ತಿಂಗಳ ಅವಧಿಯನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ: + + ```python + train_start_dt = '2014-11-01 00:00:00' + test_start_dt = '2014-12-30 00:00:00' + ``` + + ಈ ಡೇಟಾ ದೈನಂದಿನ ಎನರ್ಜಿ ಬಳಕೆಯನ್ನು ಪ್ರತಿಬಿಂಬಿಸುವುದರಿಂದ, ಬಲವಾದ ಋತುವಿನ ಮಾದರಿಯಿದೆ, ಆದರೆ ಬಳಕೆ ಇತ್ತೀಚಿನ ದಿನಗಳ ಬಳಕೆಗೆ ಹೆಚ್ಚು ಸಮಾನವಾಗಿದೆ. + +1. ವ್ಯತ್ಯಾಸಗಳನ್ನು ದೃಶ್ಯೀಕರಿಸಿ: + + ```python + energy[(energy.index < test_start_dt) & (energy.index >= train_start_dt)][['load']].rename(columns={'load':'train'}) \ + .join(energy[test_start_dt:][['load']].rename(columns={'load':'test'}), how='outer') \ + .plot(y=['train', 'test'], figsize=(15, 8), fontsize=12) + plt.xlabel('timestamp', fontsize=12) + plt.ylabel('load', fontsize=12) + plt.show() + ``` + + ![ತರಬೇತಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಡೇಟಾ](../../../../translated_images/train-test.8928d14e5b91fc942f0ca9201b2d36c890ea7e98f7619fd94f75de3a4c2bacb9.kn.png) + + ಆದ್ದರಿಂದ, ಡೇಟಾವನ್ನು ತರಬೇತಿಗೆ ಸಾಪೇಕ್ಷವಾಗಿ ಸಣ್ಣ ಕಾಲಾವಧಿ ವಿಂಡೋ ಬಳಸುವುದು ಸಾಕಾಗುತ್ತದೆ. + + > ಟಿಪ್ಪಣಿ: ARIMA ಮಾದರಿಯನ್ನು ಹೊಂದಿಸಲು ನಾವು ಬಳಸುವ ಫಂಕ್ಷನ್ ಫಿಟಿಂಗ್ ಸಮಯದಲ್ಲಿ ಇನ್-ಸ್ಯಾಂಪಲ್ ಮಾನ್ಯತೆ ಬಳಸುತ್ತದೆ, ಆದ್ದರಿಂದ ನಾವು ಮಾನ್ಯತೆ ಡೇಟಾವನ್ನು ಹೊರತುಪಡಿಸುತ್ತೇವೆ. + +### ತರಬೇತಿಗೆ ಡೇಟಾವನ್ನು ಸಿದ್ಧಪಡಿಸಿ + +ಈಗ, ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಫಿಲ್ಟರಿಂಗ್ ಮತ್ತು ಸ್ಕೇಲಿಂಗ್ ಮೂಲಕ ತರಬೇತಿಗೆ ಸಿದ್ಧಪಡಿಸಬೇಕು. ನೀವು ಬೇಕಾದ ಕಾಲಾವಧಿಗಳು ಮತ್ತು ಕಾಲಮ್‌ಗಳನ್ನು ಮಾತ್ರ ಒಳಗೊಂಡಂತೆ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಫಿಲ್ಟರ್ ಮಾಡಿ, ಮತ್ತು ಡೇಟಾವನ್ನು 0,1 ನಡುವಿನ ಅಂತರಾಳದಲ್ಲಿ ಪ್ರಕ್ಷೇಪಿಸಲು ಸ್ಕೇಲ್ ಮಾಡಿ. + +1. ಮೂಲ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಮೇಲ್ಕಂಡ ಕಾಲಾವಧಿಗಳ ಪ್ರಕಾರ ಮತ್ತು 'load' ಮತ್ತು ದಿನಾಂಕ ಕಾಲಮ್‌ಗಳನ್ನು ಮಾತ್ರ ಒಳಗೊಂಡಂತೆ ಫಿಲ್ಟರ್ ಮಾಡಿ: + + ```python + train = energy.copy()[(energy.index >= train_start_dt) & (energy.index < test_start_dt)][['load']] + test = energy.copy()[energy.index >= test_start_dt][['load']] + + print('Training data shape: ', train.shape) + print('Test data shape: ', test.shape) + ``` + + ಡೇಟಾದ ಆಕಾರವನ್ನು ನೋಡಬಹುದು: + + ```output + Training data shape: (1416, 1) + Test data shape: (48, 1) + ``` + +1. ಡೇಟಾವನ್ನು (0, 1) ವ್ಯಾಪ್ತಿಯಲ್ಲಿ ಸ್ಕೇಲ್ ಮಾಡಿ. + + ```python + scaler = MinMaxScaler() + train['load'] = scaler.fit_transform(train) + train.head(10) + ``` + +1. ಮೂಲ ಮತ್ತು ಸ್ಕೇಲ್ಡ್ ಡೇಟಾವನ್ನು ದೃಶ್ಯೀಕರಿಸಿ: + + ```python + energy[(energy.index >= train_start_dt) & (energy.index < test_start_dt)][['load']].rename(columns={'load':'original load'}).plot.hist(bins=100, fontsize=12) + train.rename(columns={'load':'scaled load'}).plot.hist(bins=100, fontsize=12) + plt.show() + ``` + + ![ಮೂಲ](../../../../translated_images/original.b2b15efe0ce92b8745918f071dceec2231661bf49c8db6918e3ff4b3b0b183c2.kn.png) + + > ಮೂಲ ಡೇಟಾ + + ![ಸ್ಕೇಲ್ಡ್](../../../../translated_images/scaled.e35258ca5cd3d43f86d5175e584ba96b38d51501f234abf52e11f4fe2631e45f.kn.png) + + > ಸ್ಕೇಲ್ಡ್ ಡೇಟಾ + +1. ಈಗ ನೀವು ಸ್ಕೇಲ್ಡ್ ಡೇಟಾವನ್ನು ಕ್ಯಾಲಿಬ್ರೇಟ್ ಮಾಡಿದ್ದೀರಿ, ಪರೀಕ್ಷಾ ಡೇಟಾವನ್ನು ಸ್ಕೇಲ್ ಮಾಡಬಹುದು: + + ```python + test['load'] = scaler.transform(test) + test.head() + ``` + +### ARIMA ಅನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸಿ + +ARIMA ಅನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸುವ ಸಮಯ ಬಂದಿದೆ! ನೀವು ಈಗ ಮೊದಲು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿದ `statsmodels` ಲೈಬ್ರರಿಯನ್ನು ಬಳಸುತ್ತೀರಿ. + +ಈಗ ನೀವು ಕೆಲವು ಹಂತಗಳನ್ನು ಅನುಸರಿಸಬೇಕು + + 1. `SARIMAX()` ಅನ್ನು ಕರೆ ಮಾಡಿ ಮತ್ತು ಮಾದರಿ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು p, d, q ಮತ್ತು P, D, Q ಪ್ಯಾರಾಮೀಟರ್‌ಗಳನ್ನು ಪಾಸ್ ಮಾಡಿ. + 2. ತರಬೇತಿ ಡೇಟಾ ಮೇಲೆ ಮಾದರಿಯನ್ನು ಸಿದ್ಧಪಡಿಸಲು fit() ಫಂಕ್ಷನ್ ಅನ್ನು ಕರೆ ಮಾಡಿ. + 3. `forecast()` ಫಂಕ್ಷನ್ ಅನ್ನು ಕರೆ ಮಾಡಿ ಮತ್ತು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಹಂತಗಳ ಸಂಖ್ಯೆ (ಹೋರೈಜನ್) ಅನ್ನು ಸೂಚಿಸಿ. + +> 🎓 ಈ ಎಲ್ಲಾ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು ಏಕೆ? ARIMA ಮಾದರಿಯಲ್ಲಿ ಮೂರು ಪ್ಯಾರಾಮೀಟರ್‌ಗಳಿವೆ, ಅವು ಕಾಲ ಸರಣಿಯ ಪ್ರಮುಖ ಅಂಶಗಳನ್ನು ಮಾದರಿಮಾಡಲು ಸಹಾಯ ಮಾಡುತ್ತವೆ: ಋತುವಿನ ಪ್ರಭಾವ, ಪ್ರವೃತ್ತಿ ಮತ್ತು ಶಬ್ದ. ಈ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು: + +`p`: ಮಾದರಿಯ ಸ್ವಯಂ-ಪ್ರತಿಗಾಮಿ ಅಂಶಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಪ್ಯಾರಾಮೀಟರ್, ಇದು *ಹಿಂದಿನ* ಮೌಲ್ಯಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. +`d`: ಮಾದರಿಯ ಒಕ್ಕೂಟ ಭಾಗಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಪ್ಯಾರಾಮೀಟರ್, ಇದು ಕಾಲ ಸರಣಿಗೆ ಅನ್ವಯಿಸುವ *ಡಿಫರೆನ್ಸಿಂಗ್* (🎓 ಡಿಫರೆನ್ಸಿಂಗ್ ನೆನಪಿಸಿಕೊಳ್ಳಿ 👆) ಪ್ರಮಾಣವನ್ನು ಪ್ರಭಾವಿಸುತ್ತದೆ. +`q`: ಮಾದರಿಯ ಚಲಿಸುವ ಸರಾಸರಿ ಭಾಗಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಪ್ಯಾರಾಮೀಟರ್. + +> ಟಿಪ್ಪಣಿ: ನಿಮ್ಮ ಡೇಟಾದಲ್ಲಿ ಋತುವಿನ ಅಂಶವಿದ್ದರೆ - ಇದರಲ್ಲಿ ಇದೆ - ನಾವು ಋತುವಿನ ARIMA ಮಾದರಿಯನ್ನು (SARIMA) ಬಳಸುತ್ತೇವೆ. ಆ ಸಂದರ್ಭದಲ್ಲಿ ನೀವು ಇನ್ನೊಂದು ಪ್ಯಾರಾಮೀಟರ್ ಸೆಟ್ ಅನ್ನು ಬಳಸಬೇಕು: `P`, `D`, ಮತ್ತು `Q` , ಅವು `p`, `d`, ಮತ್ತು `q` ನಂತೆ ಸಂಬಂಧಿಸಿದವು, ಆದರೆ ಮಾದರಿಯ ಋತುವಿನ ಅಂಶಗಳಿಗೆ ಸಂಬಂಧಿಸಿದವು. + +1. ನಿಮ್ಮ ಇಚ್ಛಿತ ಹೋರೈಜನ್ ಮೌಲ್ಯವನ್ನು ಹೊಂದಿಸಿ. 3 ಗಂಟೆಗಳ ಪ್ರಯತ್ನ ಮಾಡೋಣ: + + ```python + # ಮುಂದಿನ ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಹೆಜ್ಜೆಗಳ ಸಂಖ್ಯೆಯನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿ + HORIZON = 3 + print('Forecasting horizon:', HORIZON, 'hours') + ``` + + ARIMA ಮಾದರಿಯ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳ ಉತ್ತಮ ಮೌಲ್ಯಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡುವುದು ಸವಾಲಿನಾಯಕವಾಗಬಹುದು ಏಕೆಂದರೆ ಇದು ಸ್ವಲ್ಪ ವಿಷಯಾತ್ಮಕ ಮತ್ತು ಸಮಯ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ. ನೀವು [`pyramid` ಲೈಬ್ರರಿಯಿಂದ](https://alkaline-ml.com/pmdarima/0.9.0/modules/generated/pyramid.arima.auto_arima.html) `auto_arima()` ಫಂಕ್ಷನ್ ಬಳಸುವುದನ್ನು ಪರಿಗಣಿಸಬಹುದು. + +1. ಈಗಾಗಲೇ ಕೆಲವು ಕೈಯಿಂದ ಆಯ್ಕೆಗಳನ್ನು ಪ್ರಯತ್ನಿಸಿ ಉತ್ತಮ ಮಾದರಿಯನ್ನು ಹುಡುಕಿ. + + ```python + order = (4, 1, 0) + seasonal_order = (1, 1, 0, 24) + + model = SARIMAX(endog=train, order=order, seasonal_order=seasonal_order) + results = model.fit() + + print(results.summary()) + ``` + + ಫಲಿತಾಂಶಗಳ ಟೇಬಲ್ ಮುದ್ರಿತವಾಗುತ್ತದೆ. + +ನೀವು ನಿಮ್ಮ ಮೊದಲ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿದ್ದೀರಿ! ಈಗ ಅದನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡುವ ಮಾರ್ಗವನ್ನು ಕಂಡುಹಿಡಿಯಬೇಕು. + +### ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಿ + +ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಲು, ನೀವು 'walk forward' ಮಾನ್ಯತೆ ಎಂದು ಕರೆಯುವ ವಿಧಾನವನ್ನು ಅನುಸರಿಸಬಹುದು. ಪ್ರಾಯೋಗಿಕವಾಗಿ, ಕಾಲ ಸರಣಿ ಮಾದರಿಗಳನ್ನು ಪ್ರತಿ ಹೊಸ ಡೇಟಾ ಲಭ್ಯವಾಗುವಾಗ ಮರುತರಬೇತಿಮಾಡಲಾಗುತ್ತದೆ. ಇದರಿಂದ ಮಾದರಿ ಪ್ರತಿ ಕಾಲ ಹಂತದಲ್ಲಿ ಉತ್ತಮ ಭವಿಷ್ಯವಾಣಿ ಮಾಡಬಹುದು. + +ಕಾಲ ಸರಣಿಯ ಆರಂಭದಿಂದ ಈ ತಂತ್ರವನ್ನು ಬಳಸಿ, ತರಬೇತಿ ಡೇಟಾ ಸೆಟ್‌ನಲ್ಲಿ ಮಾದರಿಯನ್ನು ತರಬೇತಿಮಾಡಿ. ನಂತರ ಮುಂದಿನ ಕಾಲ ಹಂತದ ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿ. ಭವಿಷ್ಯವಾಣಿ ತಿಳಿದಿರುವ ಮೌಲ್ಯಕ್ಕೆ ವಿರುದ್ಧವಾಗಿ ಮೌಲ್ಯಮಾಪನ ಮಾಡಲಾಗುತ್ತದೆ. ನಂತರ ತರಬೇತಿ ಸೆಟ್ ಅನ್ನು ತಿಳಿದಿರುವ ಮೌಲ್ಯವನ್ನು ಸೇರಿಸಿ ವಿಸ್ತರಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಪ್ರಕ್ರಿಯೆಯನ್ನು ಪುನರಾವರ್ತಿಸಲಾಗುತ್ತದೆ. + +> ಟಿಪ್ಪಣಿ: ನೀವು ತರಬೇತಿ ಸೆಟ್ ವಿಂಡೋವನ್ನು ಸ್ಥಿರವಾಗಿರಿಸಬೇಕು, ಇದರಿಂದ ಪ್ರತಿ ಬಾರಿ ಹೊಸ ವೀಕ್ಷಣೆಯನ್ನು ಸೇರಿಸುವಾಗ, ಆರಂಭದ ವೀಕ್ಷಣೆಯನ್ನು ತೆಗೆದುಹಾಕಬಹುದು ಮತ್ತು ತರಬೇತಿ ಹೆಚ್ಚು ಪರಿಣಾಮಕಾರಿಯಾಗುತ್ತದೆ. + +ಈ ಪ್ರಕ್ರಿಯೆ ಮಾದರಿ ಪ್ರಾಯೋಗಿಕವಾಗಿ ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂಬುದರ ಹೆಚ್ಚು ದೃಢವಾದ ಅಂದಾಜನ್ನು ನೀಡುತ್ತದೆ. ಆದರೆ, ಇದರಿಂದ ಅನೇಕ ಮಾದರಿಗಳನ್ನು ರಚಿಸುವ ಗಣನೆ ವೆಚ್ಚ ಬರುತ್ತದೆ. ಡೇಟಾ ಸಣ್ಣದಾಗಿದ್ದರೆ ಅಥವಾ ಮಾದರಿ ಸರಳವಾಗಿದ್ದರೆ ಇದು ಸ್ವೀಕಾರಾರ್ಹ, ಆದರೆ ದೊಡ್ಡ ಪ್ರಮಾಣದಲ್ಲಿ ಸಮಸ್ಯೆಯಾಗಬಹುದು. + +Walk-forward ಮಾನ್ಯತೆ ಕಾಲ ಸರಣಿ ಮಾದರಿಯ ಮೌಲ್ಯಮಾಪನದ ಚಿನ್ನದ ಮಾನದಂಡವಾಗಿದೆ ಮತ್ತು ನಿಮ್ಮ ಸ್ವಂತ ಯೋಜನೆಗಳಿಗೆ ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ. + +1. ಪ್ರತಿ HORIZON ಹಂತಕ್ಕೆ ಪರೀಕ್ಷಾ ಡೇಟಾ ಪಾಯಿಂಟ್ ರಚಿಸಿ. + + ```python + test_shifted = test.copy() + + for t in range(1, HORIZON+1): + test_shifted['load+'+str(t)] = test_shifted['load'].shift(-t, freq='H') + + test_shifted = test_shifted.dropna(how='any') + test_shifted.head(5) + ``` + + | | | load | load+1 | load+2 | + | ---------- | -------- | ---- | ------ | ------ | + | 2014-12-30 | 00:00:00 | 0.33 | 0.29 | 0.27 | + | 2014-12-30 | 01:00:00 | 0.29 | 0.27 | 0.27 | + | 2014-12-30 | 02:00:00 | 0.27 | 0.27 | 0.30 | + | 2014-12-30 | 03:00:00 | 0.27 | 0.30 | 0.41 | + | 2014-12-30 | 04:00:00 | 0.30 | 0.41 | 0.57 | + + ಡೇಟಾ ಅದರ ಹೋರೈಜನ್ ಪಾಯಿಂಟ್ ಪ್ರಕಾರ ಅಡ್ಡವಾಗಿ ಸರಿಸಲಾಗಿದೆ. + +1. ಈ ಸ್ಲೈಡಿಂಗ್ ವಿಂಡೋ ವಿಧಾನವನ್ನು ಬಳಸಿ ಪರೀಕ್ಷಾ ಡೇಟಾದ ಉದ್ದದ ಲೂಪ್‌ನಲ್ಲಿ ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿ: + + ```python + %%time + training_window = 720 # ತರಬೇತಿಗೆ 30 ದಿನಗಳು (720 ಗಂಟೆಗಳು) ಮೀಸಲಿಡಿ + + train_ts = train['load'] + test_ts = test_shifted + + history = [x for x in train_ts] + history = history[(-training_window):] + + predictions = list() + + order = (2, 1, 0) + seasonal_order = (1, 1, 0, 24) + + for t in range(test_ts.shape[0]): + model = SARIMAX(endog=history, order=order, seasonal_order=seasonal_order) + model_fit = model.fit() + yhat = model_fit.forecast(steps = HORIZON) + predictions.append(yhat) + obs = list(test_ts.iloc[t]) + # ತರಬೇತಿ ವಿಂಡೋವನ್ನು ಸರಿಸಿ + history.append(obs[0]) + history.pop(0) + print(test_ts.index[t]) + print(t+1, ': predicted =', yhat, 'expected =', obs) + ``` + + ತರಬೇತಿ ನಡೆಯುತ್ತಿರುವುದನ್ನು ನೀವು ನೋಡಬಹುದು: + + ```output + 2014-12-30 00:00:00 + 1 : predicted = [0.32 0.29 0.28] expected = [0.32945389435989236, 0.2900626678603402, 0.2739480752014323] + + 2014-12-30 01:00:00 + 2 : predicted = [0.3 0.29 0.3 ] expected = [0.2900626678603402, 0.2739480752014323, 0.26812891674127126] + + 2014-12-30 02:00:00 + 3 : predicted = [0.27 0.28 0.32] expected = [0.2739480752014323, 0.26812891674127126, 0.3025962399283795] + ``` + +1. ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ನಿಜವಾದ ಲೋಡ್ ಜೊತೆಗೆ ಹೋಲಿಸಿ: + + ```python + eval_df = pd.DataFrame(predictions, columns=['t+'+str(t) for t in range(1, HORIZON+1)]) + eval_df['timestamp'] = test.index[0:len(test.index)-HORIZON+1] + eval_df = pd.melt(eval_df, id_vars='timestamp', value_name='prediction', var_name='h') + eval_df['actual'] = np.array(np.transpose(test_ts)).ravel() + eval_df[['prediction', 'actual']] = scaler.inverse_transform(eval_df[['prediction', 'actual']]) + eval_df.head() + ``` + + ಔಟ್‌ಪುಟ್ + | | | timestamp | h | prediction | actual | + | --- | ---------- | --------- | --- | ---------- | -------- | + | 0 | 2014-12-30 | 00:00:00 | t+1 | 3,008.74 | 3,023.00 | + | 1 | 2014-12-30 | 01:00:00 | t+1 | 2,955.53 | 2,935.00 | + | 2 | 2014-12-30 | 02:00:00 | t+1 | 2,900.17 | 2,899.00 | + | 3 | 2014-12-30 | 03:00:00 | t+1 | 2,917.69 | 2,886.00 | + | 4 | 2014-12-30 | 04:00:00 | t+1 | 2,946.99 | 2,963.00 | + + ಗಂಟೆಗಟ್ಟಲೆ ಡೇಟಾದ ಭವಿಷ್ಯವಾಣಿ ಮತ್ತು ನಿಜವಾದ ಲೋಡ್ ಅನ್ನು ಗಮನಿಸಿ. ಇದು ಎಷ್ಟು ನಿಖರವಾಗಿದೆ? + +### ಮಾದರಿಯ ನಿಖರತೆಯನ್ನು ಪರಿಶೀಲಿಸಿ + +ನಿಮ್ಮ ಮಾದರಿಯ ನಿಖರತೆಯನ್ನು ಎಲ್ಲಾ ಭವಿಷ್ಯವಾಣಿಗಳ ಮೇಲೆ ಸರಾಸರಿ ಶೇಕಡಾವಾರು ದೋಷ (MAPE) ಪರೀಕ್ಷಿಸುವ ಮೂಲಕ ಪರಿಶೀಲಿಸಿ. + +> **🧮 ಗಣಿತವನ್ನು ತೋರಿಸಿ** +> +> ![MAPE](../../../../translated_images/mape.fd87bbaf4d346846df6af88b26bf6f0926bf9a5027816d5e23e1200866e3e8a4.kn.png) +> +> [MAPE](https://www.linkedin.com/pulse/what-mape-mad-msd-time-series-allameh-statistics/) ಅನ್ನು ಮೇಲಿನ ಸೂತ್ರದಿಂದ ವ್ಯಾಖ್ಯಾನಿಸಲಾದ ಅನುಪಾತವಾಗಿ ಭವಿಷ್ಯವಾಣಿ ನಿಖರತೆಯನ್ನು ತೋರಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ. actualt ಮತ್ತು predictedt ನಡುವಿನ ವ್ಯತ್ಯಾಸವನ್ನು actualt ಮೂಲಕ ಭಾಗಿಸಲಾಗುತ್ತದೆ. "ಈ ಲೆಕ್ಕಾಚಾರದಲ್ಲಿ ಪರಮ ಮೌಲ್ಯವನ್ನು ಪ್ರತಿ ಭವಿಷ್ಯವಾಣಿ ಸಮಯದ ಬಿಂದುವಿಗೆ ಸೇರಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಹೊಂದಿಸಿದ ಬಿಂದುಗಳ ಸಂಖ್ಯೆ n ಮೂಲಕ ಭಾಗಿಸಲಾಗುತ್ತದೆ." [wikipedia](https://wikipedia.org/wiki/Mean_absolute_percentage_error) + +1. ಸಮೀಕರಣವನ್ನು ಕೋಡ್‌ನಲ್ಲಿ ವ್ಯಕ್ತಪಡಿಸಿ: + + ```python + if(HORIZON > 1): + eval_df['APE'] = (eval_df['prediction'] - eval_df['actual']).abs() / eval_df['actual'] + print(eval_df.groupby('h')['APE'].mean()) + ``` + +1. ಒಂದು ಹಂತದ MAPE ಅನ್ನು ಲೆಕ್ಕಹಾಕಿ: + + ```python + print('One step forecast MAPE: ', (mape(eval_df[eval_df['h'] == 't+1']['prediction'], eval_df[eval_df['h'] == 't+1']['actual']))*100, '%') + ``` + + ಒಂದು ಹಂತದ ಭವಿಷ್ಯವಾಣಿ MAPE: 0.5570581332313952 % + +1. ಬಹು ಹಂತದ ಭವಿಷ್ಯವಾಣಿ MAPE ಅನ್ನು ಮುದ್ರಿಸಿ: + + ```python + print('Multi-step forecast MAPE: ', mape(eval_df['prediction'], eval_df['actual'])*100, '%') + ``` + + ```output + Multi-step forecast MAPE: 1.1460048657704118 % + ``` + + ಒಳ್ಳೆಯ ಕಡಿಮೆ ಸಂಖ್ಯೆ ಉತ್ತಮ: MAPE 10 ಇರುವ ಭವಿಷ್ಯವಾಣಿ 10% ತಪ್ಪಿದೆ ಎಂದು ಪರಿಗಣಿಸಿ. + +1. ಆದರೆ ಯಾವಾಗಲೂ ಹಾಗೆಯೇ, ಈ ರೀತಿಯ ನಿಖರತೆ ಅಳೆಯುವಿಕೆಯನ್ನು ದೃಶ್ಯವಾಗಿ ನೋಡುವುದು ಸುಲಭ, ಆದ್ದರಿಂದ ಅದನ್ನು ರೇಖಾಚಿತ್ರಗೊಳಿಸೋಣ: + + ```python + if(HORIZON == 1): + ## ಏಕ ಹಂತದ ಭವಿಷ್ಯವಾಣಿ ರೇಖಾಚಿತ್ರಣ + eval_df.plot(x='timestamp', y=['actual', 'prediction'], style=['r', 'b'], figsize=(15, 8)) + + else: + ## ಬಹು ಹಂತದ ಭವಿಷ್ಯವಾಣಿ ರೇಖಾಚಿತ್ರಣ + plot_df = eval_df[(eval_df.h=='t+1')][['timestamp', 'actual']] + for t in range(1, HORIZON+1): + plot_df['t+'+str(t)] = eval_df[(eval_df.h=='t+'+str(t))]['prediction'].values + + fig = plt.figure(figsize=(15, 8)) + ax = plt.plot(plot_df['timestamp'], plot_df['actual'], color='red', linewidth=4.0) + ax = fig.add_subplot(111) + for t in range(1, HORIZON+1): + x = plot_df['timestamp'][(t-1):] + y = plot_df['t+'+str(t)][0:len(x)] + ax.plot(x, y, color='blue', linewidth=4*math.pow(.9,t), alpha=math.pow(0.8,t)) + + ax.legend(loc='best') + + plt.xlabel('timestamp', fontsize=12) + plt.ylabel('load', fontsize=12) + plt.show() + ``` + + ![a time series model](../../../../translated_images/accuracy.2c47fe1bf15f44b3656651c84d5e2ba9b37cd929cd2aa8ab6cc3073f50570f4e.kn.png) + +🏆 ಅತ್ಯುತ್ತಮ ನಿಖರತೆಯೊಂದಿಗೆ ಮಾದರಿಯನ್ನು ತೋರಿಸುವ ಅತ್ಯಂತ ಚೆನ್ನಾದ ರೇಖಾಚಿತ್ರ. ಶುಭಾಶಯಗಳು! + +--- + +## 🚀ಸವಾಲು + +ಟೈಮ್ ಸೀರಿಸ್ ಮಾದರಿಯ ನಿಖರತೆಯನ್ನು ಪರೀಕ್ಷಿಸುವ ವಿಧಾನಗಳನ್ನು ಆಳವಾಗಿ ಅಧ್ಯಯನ ಮಾಡಿ. ಈ ಪಾಠದಲ್ಲಿ ನಾವು MAPE ಬಗ್ಗೆ ಸ್ಪರ್ಶಿಸಿದ್ದೇವೆ, ಆದರೆ ನೀವು ಬಳಸಬಹುದಾದ ಇತರ ವಿಧಾನಗಳಿವೆಯೇ? ಅವುಗಳನ್ನು ಸಂಶೋಧಿಸಿ ಮತ್ತು ಟಿಪ್ಪಣಿಗಳನ್ನು ಸೇರಿಸಿ. ಸಹಾಯಕ ದಾಖಲೆ [ಇಲ್ಲಿ](https://otexts.com/fpp2/accuracy.html) ಲಭ್ಯವಿದೆ + +## [ಪಾಠೋತ್ತರ ಪ್ರಶ್ನೋತ್ತರ](https://ff-quizzes.netlify.app/en/ml/) + +## ವಿಮರ್ಶೆ ಮತ್ತು ಸ್ವಯಂ ಅಧ್ಯಯನ + +ಈ ಪಾಠವು ARIMA ಬಳಸಿ ಟೈಮ್ ಸೀರಿಸ್ ಭವಿಷ್ಯವಾಣಿಯ ಮೂಲಭೂತಗಳನ್ನು ಮಾತ್ರ ಸ್ಪರ್ಶಿಸುತ್ತದೆ. [ಈ ಸಂಗ್ರಹಾಲಯ](https://microsoft.github.io/forecasting/) ಮತ್ತು ಅದರ ವಿವಿಧ ಮಾದರಿ ಪ್ರಕಾರಗಳನ್ನು ಆಳವಾಗಿ ಅಧ್ಯಯನ ಮಾಡಿ ಟೈಮ್ ಸೀರಿಸ್ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸುವ ಇತರ ವಿಧಾನಗಳನ್ನು ತಿಳಿದುಕೊಳ್ಳಲು ಸಮಯ ತೆಗೆದುಕೊಳ್ಳಿ. + +## ನಿಯೋಜನೆ + +[ಹೊಸ ARIMA ಮಾದರಿ](assignment.md) + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವಾಗಿ ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/7-TimeSeries/2-ARIMA/assignment.md b/translations/kn/7-TimeSeries/2-ARIMA/assignment.md new file mode 100644 index 000000000..0630e763e --- /dev/null +++ b/translations/kn/7-TimeSeries/2-ARIMA/assignment.md @@ -0,0 +1,27 @@ + +# ಹೊಸ ARIMA ಮಾದರಿ + +## ಸೂಚನೆಗಳು + +ನೀವು ಈಗಾಗಲೇ ARIMA ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿದ್ದೀರಿ, ಹೊಸ ಡೇಟಾ ಬಳಸಿ ಹೊಸದೊಂದು ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿ ([Duke ನಿಂದ ಈ ಡೇಟಾಸೆಟ್‌ಗಳಲ್ಲಿ ಒಂದನ್ನು ಪ್ರಯತ್ನಿಸಿ](http://www2.stat.duke.edu/~mw/ts_data_sets.html)). ನಿಮ್ಮ ಕೆಲಸವನ್ನು ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ ಟಿಪ್ಪಣಿ ಮಾಡಿ, ಡೇಟಾ ಮತ್ತು ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ದೃಶ್ಯೀಕರಿಸಿ, ಮತ್ತು MAPE ಬಳಸಿ ಅದರ ನಿಖರತೆಯನ್ನು ಪರೀಕ್ಷಿಸಿ. + +## ಮೌಲ್ಯಮಾಪನ + +| ಮಾನದಂಡಗಳು | ಉದಾಹರಣೀಯ | ತೃಪ್ತಿಕರ | ಸುಧಾರಣೆಯ ಅಗತ್ಯವಿದೆ | +| -------- | ------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | ----------------------------------- | +| | ಹೊಸ ARIMA ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿ, ಪರೀಕ್ಷಿಸಿ, ದೃಶ್ಯೀಕರಣಗಳೊಂದಿಗೆ ವಿವರಿಸಿ ಮತ್ತು ನಿಖರತೆಯನ್ನು ಸೂಚಿಸಿದ ನೋಟ್ಬುಕ್ ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿದೆ. | ಪ್ರಸ್ತುತಪಡಿಸಿದ ನೋಟ್ಬುಕ್ ಟಿಪ್ಪಣಿಸದ ಅಥವಾ ದೋಷಗಳಿರುವುದು | ಅಪೂರ್ಣ ನೋಟ್ಬುಕ್ ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿದೆ | + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವಾಗಿ ಪರಿಗಣಿಸಬೇಕು. ಪ್ರಮುಖ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/7-TimeSeries/2-ARIMA/solution/Julia/README.md b/translations/kn/7-TimeSeries/2-ARIMA/solution/Julia/README.md new file mode 100644 index 000000000..218f2eb18 --- /dev/null +++ b/translations/kn/7-TimeSeries/2-ARIMA/solution/Julia/README.md @@ -0,0 +1,17 @@ + +ಇದು ತಾತ್ಕಾಲಿಕ ಪ್ಲೇಸ್‌ಹೋಲ್ಡರ್ ಆಗಿದೆ + +--- + + +**ಅಸ್ವೀಕಾರ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/7-TimeSeries/2-ARIMA/solution/R/README.md b/translations/kn/7-TimeSeries/2-ARIMA/solution/R/README.md new file mode 100644 index 000000000..786ca8c6b --- /dev/null +++ b/translations/kn/7-TimeSeries/2-ARIMA/solution/R/README.md @@ -0,0 +1,17 @@ + +ಇದು ತಾತ್ಕಾಲಿಕ ಪ್ಲೇಸ್‌ಹೋಲ್ಡರ್ ಆಗಿದೆ + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/7-TimeSeries/2-ARIMA/solution/notebook.ipynb b/translations/kn/7-TimeSeries/2-ARIMA/solution/notebook.ipynb new file mode 100644 index 000000000..8a9016174 --- /dev/null +++ b/translations/kn/7-TimeSeries/2-ARIMA/solution/notebook.ipynb @@ -0,0 +1,1101 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "source": [ + "# ARIMA ಬಳಸಿ ಕಾಲ ಸರಣಿ ಮುನ್ಸೂಚನೆ\n", + "\n", + "ಈ ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ, ನಾವು ಹೇಗೆ ಮಾಡುವುದು ಎಂದು ತೋರಿಸುತ್ತೇವೆ:\n", + "- ARIMA ಕಾಲ ಸರಣಿ ಮುನ್ಸೂಚನೆ ಮಾದರಿಗಾಗಿ ಕಾಲ ಸರಣಿ ಡೇಟಾವನ್ನು ತರಬೇತಿಗೆ ಸಿದ್ಧಪಡಿಸುವುದು\n", + "- ಸರಳ ARIMA ಮಾದರಿಯನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸಿ ಮುಂದಿನ HORIZON ಹಂತಗಳನ್ನು ಮುನ್ಸೂಚಿಸುವುದು (ಕಾಲ *t+1* ರಿಂದ *t+HORIZON* ವರೆಗೆ)\n", + "- ಮಾದರಿಯನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡುವುದು\n", + "\n", + "ಈ ಉದಾಹರಣೆಯ ಡೇಟಾ GEFCom2014 ಮುನ್ಸೂಚನೆ ಸ್ಪರ್ಧೆಯಿಂದ1 ತೆಗೆದುಕೊಳ್ಳಲಾಗಿದೆ. ಇದು 2012 ರಿಂದ 2014 ರವರೆಗೆ 3 ವರ್ಷಗಳ ಗಂಟೆಗಂಟೆ ವಿದ್ಯುತ್ ಲೋಡ್ ಮತ್ತು ತಾಪಮಾನ ಮೌಲ್ಯಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. ಕಾರ್ಯವು ಭವಿಷ್ಯದ ವಿದ್ಯುತ್ ಲೋಡ್ ಮೌಲ್ಯಗಳನ್ನು ಮುನ್ಸೂಚಿಸುವುದಾಗಿದೆ. ಈ ಉದಾಹರಣೆಯಲ್ಲಿ, ನಾವು ಇತಿಹಾಸದ ಲೋಡ್ ಡೇಟಾವನ್ನು ಮಾತ್ರ ಬಳಸಿ ಒಂದು ಕಾಲ ಹಂತ ಮುನ್ಸೂಚಿಸುವುದನ್ನು ತೋರಿಸುತ್ತೇವೆ.\n", + "\n", + "1ಟಾವ್ ಹಾಂಗ್, ಪಿಯೆರ್ರೆ ಪಿನ್ಸನ್, ಶು ಫ್ಯಾನ್, ಹಮಿದ್ರೆಜಾ ಜರೈಪೂರ್, ಅಲ್ಬೆರ್ಟೋ ಟ್ರೊಕೋಲ್ಲಿ ಮತ್ತು ರಾಬ್ ಜೆ. ಹಿಂಡ್ಮನ್, \"ಪ್ರೊಬಬಿಲಿಸ್ಟಿಕ್ ಎನರ್ಜಿ ಫೋರ್ಕಾಸ್ಟಿಂಗ್: ಗ್ಲೋಬಲ್ ಎನರ್ಜಿ ಫೋರ್ಕಾಸ್ಟಿಂಗ್ ಸ್ಪರ್ಧೆ 2014 ಮತ್ತು ಮುಂದಿನದು\", ಇಂಟರ್‌ನ್ಯಾಷನಲ್ ಜರ್ನಲ್ ಆಫ್ ಫೋರ್ಕಾಸ್ಟಿಂಗ್, ವಾಲ್ಯೂಮ್ 32, ಸಂಖ್ಯೆ 3, ಪುಟಗಳು 896-913, ಜುಲೈ-ಸೆಪ್ಟೆಂಬರ್, 2016.\n" + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "## ಅವಲಂಬನೆಗಳನ್ನು ಸ್ಥಾಪಿಸಿ\n", + "ಕೆಲವು ಅಗತ್ಯವಿರುವ ಅವಲಂಬನೆಗಳನ್ನು ಸ್ಥಾಪಿಸುವುದರಿಂದ ಪ್ರಾರಂಭಿಸಿ. ಈ ಗ್ರಂಥಾಲಯಗಳು ಮತ್ತು ಅವುಗಳ ಸಂಬಂಧಿತ ಆವೃತ್ತಿಗಳು ಪರಿಹಾರಕ್ಕಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುವುದಾಗಿ ತಿಳಿದುಬಂದಿವೆ:\n", + "\n", + "* `statsmodels == 0.12.2`\n", + "* `matplotlib == 3.4.2`\n", + "* `scikit-learn == 0.24.2`\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 16, + "source": [ + "!pip install statsmodels" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "/bin/sh: pip: command not found\n" + ] + } + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 17, + "source": [ + "import os\n", + "import warnings\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import pandas as pd\n", + "import datetime as dt\n", + "import math\n", + "\n", + "from pandas.plotting import autocorrelation_plot\n", + "from statsmodels.tsa.statespace.sarimax import SARIMAX\n", + "from sklearn.preprocessing import MinMaxScaler\n", + "from common.utils import load_data, mape\n", + "from IPython.display import Image\n", + "\n", + "%matplotlib inline\n", + "pd.options.display.float_format = '{:,.2f}'.format\n", + "np.set_printoptions(precision=2)\n", + "warnings.filterwarnings(\"ignore\") # specify to ignore warning messages\n" + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 18, + "source": [ + "energy = load_data('./data')[['load']]\n", + "energy.head(10)" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
load
2012-01-01 00:00:002,698.00
2012-01-01 01:00:002,558.00
2012-01-01 02:00:002,444.00
2012-01-01 03:00:002,402.00
2012-01-01 04:00:002,403.00
2012-01-01 05:00:002,453.00
2012-01-01 06:00:002,560.00
2012-01-01 07:00:002,719.00
2012-01-01 08:00:002,916.00
2012-01-01 09:00:003,105.00
\n", + "
" + ], + "text/plain": [ + " load\n", + "2012-01-01 00:00:00 2,698.00\n", + "2012-01-01 01:00:00 2,558.00\n", + "2012-01-01 02:00:00 2,444.00\n", + "2012-01-01 03:00:00 2,402.00\n", + "2012-01-01 04:00:00 2,403.00\n", + "2012-01-01 05:00:00 2,453.00\n", + "2012-01-01 06:00:00 2,560.00\n", + "2012-01-01 07:00:00 2,719.00\n", + "2012-01-01 08:00:00 2,916.00\n", + "2012-01-01 09:00:00 3,105.00" + ] + }, + "metadata": {}, + "execution_count": 18 + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "ಎಲ್ಲಾ ಲಭ್ಯವಿರುವ ಲೋಡ್ ಡೇಟಾವನ್ನು (ಜನವರಿ 2012 ರಿಂದ ಡಿಸೆಂಬರ್ 2014) ಚಿತ್ರಿಸಿ\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 19, + "source": [ + "energy.plot(y='load', subplots=True, figsize=(15, 8), fontsize=12)\n", + "plt.xlabel('timestamp', fontsize=12)\n", + "plt.ylabel('load', fontsize=12)\n", + "plt.show()" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + } + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "## ತರಬೇತಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಡೇಟಾ ಸೆಟ್‌ಗಳನ್ನು ರಚಿಸಿ\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 20, + "source": [ + "train_start_dt = '2014-11-01 00:00:00'\n", + "test_start_dt = '2014-12-30 00:00:00' " + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 21, + "source": [ + "energy[(energy.index < test_start_dt) & (energy.index >= train_start_dt)][['load']].rename(columns={'load':'train'}) \\\n", + " .join(energy[test_start_dt:][['load']].rename(columns={'load':'test'}), how='outer') \\\n", + " .plot(y=['train', 'test'], figsize=(15, 8), fontsize=12)\n", + "plt.xlabel('timestamp', fontsize=12)\n", + "plt.ylabel('load', fontsize=12)\n", + "plt.show()" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + } + } + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 22, + "source": [ + "train = energy.copy()[(energy.index >= train_start_dt) & (energy.index < test_start_dt)][['load']]\n", + "test = energy.copy()[energy.index >= test_start_dt][['load']]\n", + "\n", + "print('Training data shape: ', train.shape)\n", + "print('Test data shape: ', test.shape)" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Training data shape: (1416, 1)\n", + "Test data shape: (48, 1)\n" + ] + } + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 23, + "source": [ + "scaler = MinMaxScaler()\n", + "train['load'] = scaler.fit_transform(train)\n", + "train.head(10)" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
load
2014-11-01 00:00:000.10
2014-11-01 01:00:000.07
2014-11-01 02:00:000.05
2014-11-01 03:00:000.04
2014-11-01 04:00:000.06
2014-11-01 05:00:000.10
2014-11-01 06:00:000.19
2014-11-01 07:00:000.31
2014-11-01 08:00:000.40
2014-11-01 09:00:000.48
\n", + "
" + ], + "text/plain": [ + " load\n", + "2014-11-01 00:00:00 0.10\n", + "2014-11-01 01:00:00 0.07\n", + "2014-11-01 02:00:00 0.05\n", + "2014-11-01 03:00:00 0.04\n", + "2014-11-01 04:00:00 0.06\n", + "2014-11-01 05:00:00 0.10\n", + "2014-11-01 06:00:00 0.19\n", + "2014-11-01 07:00:00 0.31\n", + "2014-11-01 08:00:00 0.40\n", + "2014-11-01 09:00:00 0.48" + ] + }, + "metadata": {}, + "execution_count": 23 + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "ಮೂಲ vs ಮಾಪನಗೊಳಿಸಿದ ಡೇಟಾ:\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 24, + "source": [ + "energy[(energy.index >= train_start_dt) & (energy.index < test_start_dt)][['load']].rename(columns={'load':'original load'}).plot.hist(bins=100, fontsize=12)\n", + "train.rename(columns={'load':'scaled load'}).plot.hist(bins=100, fontsize=12)\n", + "plt.show()" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + } + }, + { + "output_type": "display_data", + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + } + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "ನಾವು ಪರೀಕ್ಷಾ ಡೇಟಾವನ್ನು ಕೂಡಾ ಪ್ರಮಾಣಗೊಳಿಸೋಣ\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 25, + "source": [ + "test['load'] = scaler.transform(test)\n", + "test.head()" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
load
2014-12-30 00:00:000.33
2014-12-30 01:00:000.29
2014-12-30 02:00:000.27
2014-12-30 03:00:000.27
2014-12-30 04:00:000.30
\n", + "
" + ], + "text/plain": [ + " load\n", + "2014-12-30 00:00:00 0.33\n", + "2014-12-30 01:00:00 0.29\n", + "2014-12-30 02:00:00 0.27\n", + "2014-12-30 03:00:00 0.27\n", + "2014-12-30 04:00:00 0.30" + ] + }, + "metadata": {}, + "execution_count": 25 + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "## ARIMA ವಿಧಾನವನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸಿ\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 26, + "source": [ + "# Specify the number of steps to forecast ahead\n", + "HORIZON = 3\n", + "print('Forecasting horizon:', HORIZON, 'hours')" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Forecasting horizon: 3 hours\n" + ] + } + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 27, + "source": [ + "order = (4, 1, 0)\n", + "seasonal_order = (1, 1, 0, 24)\n", + "\n", + "model = SARIMAX(endog=train, order=order, seasonal_order=seasonal_order)\n", + "results = model.fit()\n", + "\n", + "print(results.summary())\n" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + " SARIMAX Results \n", + "==========================================================================================\n", + "Dep. Variable: load No. Observations: 1416\n", + "Model: SARIMAX(4, 1, 0)x(1, 1, 0, 24) Log Likelihood 3477.239\n", + "Date: Thu, 30 Sep 2021 AIC -6942.477\n", + "Time: 14:36:28 BIC -6911.050\n", + "Sample: 11-01-2014 HQIC -6930.725\n", + " - 12-29-2014 \n", + "Covariance Type: opg \n", + "==============================================================================\n", + " coef std err z P>|z| [0.025 0.975]\n", + "------------------------------------------------------------------------------\n", + "ar.L1 0.8403 0.016 52.226 0.000 0.809 0.872\n", + "ar.L2 -0.5220 0.034 -15.388 0.000 -0.588 -0.456\n", + "ar.L3 0.1536 0.044 3.470 0.001 0.067 0.240\n", + "ar.L4 -0.0778 0.036 -2.158 0.031 -0.148 -0.007\n", + "ar.S.L24 -0.2327 0.024 -9.718 0.000 -0.280 -0.186\n", + "sigma2 0.0004 8.32e-06 47.358 0.000 0.000 0.000\n", + "===================================================================================\n", + "Ljung-Box (L1) (Q): 0.05 Jarque-Bera (JB): 1464.60\n", + "Prob(Q): 0.83 Prob(JB): 0.00\n", + "Heteroskedasticity (H): 0.84 Skew: 0.14\n", + "Prob(H) (two-sided): 0.07 Kurtosis: 8.02\n", + "===================================================================================\n", + "\n", + "Warnings:\n", + "[1] Covariance matrix calculated using the outer product of gradients (complex-step).\n" + ] + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "## ಮಾದರಿಯನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಿ\n" + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "ಪ್ರತಿ HORIZON ಹಂತಕ್ಕೆ ಒಂದು ಪರೀಕ್ಷಾ ಡೇಟಾ ಪಾಯಿಂಟ್ ರಚಿಸಿ.\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 28, + "source": [ + "test_shifted = test.copy()\n", + "\n", + "for t in range(1, HORIZON):\n", + " test_shifted['load+'+str(t)] = test_shifted['load'].shift(-t, freq='H')\n", + " \n", + "test_shifted = test_shifted.dropna(how='any')\n", + "test_shifted.head(5)" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
loadload+1load+2
2014-12-30 00:00:000.330.290.27
2014-12-30 01:00:000.290.270.27
2014-12-30 02:00:000.270.270.30
2014-12-30 03:00:000.270.300.41
2014-12-30 04:00:000.300.410.57
\n", + "
" + ], + "text/plain": [ + " load load+1 load+2\n", + "2014-12-30 00:00:00 0.33 0.29 0.27\n", + "2014-12-30 01:00:00 0.29 0.27 0.27\n", + "2014-12-30 02:00:00 0.27 0.27 0.30\n", + "2014-12-30 03:00:00 0.27 0.30 0.41\n", + "2014-12-30 04:00:00 0.30 0.41 0.57" + ] + }, + "metadata": {}, + "execution_count": 28 + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "ಪರೀಕ್ಷಾ ಡೇಟಾದ ಮೇಲೆ ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿ\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 29, + "source": [ + "%%time\n", + "training_window = 720 # dedicate 30 days (720 hours) for training\n", + "\n", + "train_ts = train['load']\n", + "test_ts = test_shifted\n", + "\n", + "history = [x for x in train_ts]\n", + "history = history[(-training_window):]\n", + "\n", + "predictions = list()\n", + "\n", + "# let's user simpler model for demonstration\n", + "order = (2, 1, 0)\n", + "seasonal_order = (1, 1, 0, 24)\n", + "\n", + "for t in range(test_ts.shape[0]):\n", + " model = SARIMAX(endog=history, order=order, seasonal_order=seasonal_order)\n", + " model_fit = model.fit()\n", + " yhat = model_fit.forecast(steps = HORIZON)\n", + " predictions.append(yhat)\n", + " obs = list(test_ts.iloc[t])\n", + " # move the training window\n", + " history.append(obs[0])\n", + " history.pop(0)\n", + " print(test_ts.index[t])\n", + " print(t+1, ': predicted =', yhat, 'expected =', obs)" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "2014-12-30 00:00:00\n", + "1 : predicted = [0.32 0.29 0.28] expected = [0.32945389435989236, 0.2900626678603402, 0.2739480752014323]\n", + "2014-12-30 01:00:00\n", + "2 : predicted = [0.3 0.29 0.3 ] expected = [0.2900626678603402, 0.2739480752014323, 0.26812891674127126]\n", + "2014-12-30 02:00:00\n", + "3 : predicted = [0.27 0.28 0.32] expected = [0.2739480752014323, 0.26812891674127126, 0.3025962399283795]\n", + "2014-12-30 03:00:00\n", + "4 : predicted = [0.28 0.32 0.42] expected = [0.26812891674127126, 0.3025962399283795, 0.40823634735899716]\n", + "2014-12-30 04:00:00\n", + "5 : predicted = [0.3 0.39 0.54] expected = [0.3025962399283795, 0.40823634735899716, 0.5689346463742166]\n", + "2014-12-30 05:00:00\n", + "6 : predicted = [0.4 0.55 0.66] expected = [0.40823634735899716, 0.5689346463742166, 0.6799462846911368]\n", + "2014-12-30 06:00:00\n", + "7 : predicted = [0.57 0.68 0.75] expected = [0.5689346463742166, 0.6799462846911368, 0.7309758281110115]\n", + "2014-12-30 07:00:00\n", + "8 : predicted = [0.68 0.75 0.8 ] expected = [0.6799462846911368, 0.7309758281110115, 0.7511190689346463]\n", + "2014-12-30 08:00:00\n", + "9 : predicted = [0.75 0.8 0.82] expected = [0.7309758281110115, 0.7511190689346463, 0.7636526410026856]\n", + "2014-12-30 09:00:00\n", + "10 : predicted = [0.77 0.78 0.78] expected = [0.7511190689346463, 0.7636526410026856, 0.7381378692927483]\n", + "2014-12-30 10:00:00\n", + "11 : predicted = [0.76 0.75 0.74] expected = [0.7636526410026856, 0.7381378692927483, 0.7188898836168307]\n", + "2014-12-30 11:00:00\n", + "12 : predicted = [0.77 0.76 0.75] expected = [0.7381378692927483, 0.7188898836168307, 0.7090420769919425]\n", + "2014-12-30 12:00:00\n", + "13 : predicted = [0.7 0.68 0.69] expected = [0.7188898836168307, 0.7090420769919425, 0.7081468218442255]\n", + "2014-12-30 13:00:00\n", + "14 : predicted = [0.72 0.73 0.76] expected = [0.7090420769919425, 0.7081468218442255, 0.7385854968666068]\n", + "2014-12-30 14:00:00\n", + "15 : predicted = [0.71 0.73 0.86] expected = [0.7081468218442255, 0.7385854968666068, 0.8478066248880931]\n", + "2014-12-30 15:00:00\n", + "16 : predicted = [0.73 0.85 0.97] expected = [0.7385854968666068, 0.8478066248880931, 0.9516562220232765]\n", + "2014-12-30 16:00:00\n", + "17 : predicted = [0.87 0.99 0.97] expected = [0.8478066248880931, 0.9516562220232765, 0.934198746642793]\n", + "2014-12-30 17:00:00\n", + "18 : predicted = [0.94 0.92 0.86] expected = [0.9516562220232765, 0.934198746642793, 0.8876454789615038]\n", + "2014-12-30 18:00:00\n", + "19 : predicted = [0.94 0.89 0.82] expected = [0.934198746642793, 0.8876454789615038, 0.8294538943598924]\n", + "2014-12-30 19:00:00\n", + "20 : predicted = [0.88 0.82 0.71] expected = [0.8876454789615038, 0.8294538943598924, 0.7197851387645477]\n", + "2014-12-30 20:00:00\n", + "21 : predicted = [0.83 0.72 0.58] expected = [0.8294538943598924, 0.7197851387645477, 0.5747538048343777]\n", + "2014-12-30 21:00:00\n", + "22 : predicted = [0.72 0.58 0.47] expected = [0.7197851387645477, 0.5747538048343777, 0.4592658907788718]\n", + "2014-12-30 22:00:00\n", + "23 : predicted = [0.58 0.47 0.39] expected = [0.5747538048343777, 0.4592658907788718, 0.3858549686660697]\n", + "2014-12-30 23:00:00\n", + "24 : predicted = [0.46 0.38 0.34] expected = [0.4592658907788718, 0.3858549686660697, 0.34377797672336596]\n", + "2014-12-31 00:00:00\n", + "25 : predicted = [0.38 0.34 0.33] expected = [0.3858549686660697, 0.34377797672336596, 0.32542524619516544]\n", + "2014-12-31 01:00:00\n", + "26 : predicted = [0.36 0.34 0.34] expected = [0.34377797672336596, 0.32542524619516544, 0.33034914950760963]\n", + "2014-12-31 02:00:00\n", + "27 : predicted = [0.32 0.32 0.35] expected = [0.32542524619516544, 0.33034914950760963, 0.3706356311548791]\n", + "2014-12-31 03:00:00\n", + "28 : predicted = [0.32 0.36 0.47] expected = [0.33034914950760963, 0.3706356311548791, 0.470008952551477]\n", + "2014-12-31 04:00:00\n", + "29 : predicted = [0.37 0.48 0.65] expected = [0.3706356311548791, 0.470008952551477, 0.6145926589077886]\n", + "2014-12-31 05:00:00\n", + "30 : predicted = [0.48 0.64 0.75] expected = [0.470008952551477, 0.6145926589077886, 0.7247090420769919]\n", + "2014-12-31 06:00:00\n", + "31 : predicted = [0.63 0.73 0.79] expected = [0.6145926589077886, 0.7247090420769919, 0.786034019695613]\n", + "2014-12-31 07:00:00\n", + "32 : predicted = [0.71 0.76 0.79] expected = [0.7247090420769919, 0.786034019695613, 0.8012533572068039]\n", + "2014-12-31 08:00:00\n", + "33 : predicted = [0.79 0.82 0.83] expected = [0.786034019695613, 0.8012533572068039, 0.7994628469113696]\n", + "2014-12-31 09:00:00\n", + "34 : predicted = [0.82 0.83 0.81] expected = [0.8012533572068039, 0.7994628469113696, 0.780214861235452]\n", + "2014-12-31 10:00:00\n", + "35 : predicted = [0.8 0.78 0.76] expected = [0.7994628469113696, 0.780214861235452, 0.7587287376902416]\n", + "2014-12-31 11:00:00\n", + "36 : predicted = [0.77 0.75 0.74] expected = [0.780214861235452, 0.7587287376902416, 0.7367949865711727]\n", + "2014-12-31 12:00:00\n", + "37 : predicted = [0.77 0.76 0.76] expected = [0.7587287376902416, 0.7367949865711727, 0.7188898836168307]\n", + "2014-12-31 13:00:00\n", + "38 : predicted = [0.75 0.75 0.78] expected = [0.7367949865711727, 0.7188898836168307, 0.7273948075201431]\n", + "2014-12-31 14:00:00\n", + "39 : predicted = [0.73 0.75 0.87] expected = [0.7188898836168307, 0.7273948075201431, 0.8299015219337511]\n", + "2014-12-31 15:00:00\n", + "40 : predicted = [0.74 0.85 0.96] expected = [0.7273948075201431, 0.8299015219337511, 0.909579230080573]\n", + "2014-12-31 16:00:00\n", + "41 : predicted = [0.83 0.94 0.93] expected = [0.8299015219337511, 0.909579230080573, 0.855863921217547]\n", + "2014-12-31 17:00:00\n", + "42 : predicted = [0.94 0.93 0.88] expected = [0.909579230080573, 0.855863921217547, 0.7721575649059982]\n", + "2014-12-31 18:00:00\n", + "43 : predicted = [0.87 0.82 0.77] expected = [0.855863921217547, 0.7721575649059982, 0.7023276633840643]\n", + "2014-12-31 19:00:00\n", + "44 : predicted = [0.79 0.73 0.63] expected = [0.7721575649059982, 0.7023276633840643, 0.6195165622202325]\n", + "2014-12-31 20:00:00\n", + "45 : predicted = [0.7 0.59 0.46] expected = [0.7023276633840643, 0.6195165622202325, 0.5425246195165621]\n", + "2014-12-31 21:00:00\n", + "46 : predicted = [0.6 0.47 0.36] expected = [0.6195165622202325, 0.5425246195165621, 0.4735899731423454]\n", + "CPU times: user 12min 15s, sys: 2min 39s, total: 14min 54s\n", + "Wall time: 2min 36s\n" + ] + } + ], + "metadata": { + "scrolled": true + } + }, + { + "cell_type": "markdown", + "source": [ + "ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ನಿಜವಾದ ಲೋಡ್‌ಗಳೊಂದಿಗೆ ಹೋಲಿಸಿ\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 30, + "source": [ + "eval_df = pd.DataFrame(predictions, columns=['t+'+str(t) for t in range(1, HORIZON+1)])\n", + "eval_df['timestamp'] = test.index[0:len(test.index)-HORIZON+1]\n", + "eval_df = pd.melt(eval_df, id_vars='timestamp', value_name='prediction', var_name='h')\n", + "eval_df['actual'] = np.array(np.transpose(test_ts)).ravel()\n", + "eval_df[['prediction', 'actual']] = scaler.inverse_transform(eval_df[['prediction', 'actual']])\n", + "eval_df.head()" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
timestamphpredictionactual
02014-12-30 00:00:00t+13,008.743,023.00
12014-12-30 01:00:00t+12,955.532,935.00
22014-12-30 02:00:00t+12,900.172,899.00
32014-12-30 03:00:00t+12,917.692,886.00
42014-12-30 04:00:00t+12,946.992,963.00
\n", + "
" + ], + "text/plain": [ + " timestamp h prediction actual\n", + "0 2014-12-30 00:00:00 t+1 3,008.74 3,023.00\n", + "1 2014-12-30 01:00:00 t+1 2,955.53 2,935.00\n", + "2 2014-12-30 02:00:00 t+1 2,900.17 2,899.00\n", + "3 2014-12-30 03:00:00 t+1 2,917.69 2,886.00\n", + "4 2014-12-30 04:00:00 t+1 2,946.99 2,963.00" + ] + }, + "metadata": {}, + "execution_count": 30 + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "ಎಲ್ಲಾ ಭವಿಷ್ಯವಾಣಿಗಳ ಮೇಲೆ **ಸರಾಸರಿ ಸಾಪೇಕ್ಷ ಶೇಕಡಾವಾರು ದೋಷ (MAPE)** ಅನ್ನು ಲೆಕ್ಕಹಾಕಿ\n", + "\n", + "$$MAPE = \\frac{1}{n} \\sum_{t=1}^{n}|\\frac{actual_t - predicted_t}{actual_t}|$$\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 31, + "source": [ + "if(HORIZON > 1):\n", + " eval_df['APE'] = (eval_df['prediction'] - eval_df['actual']).abs() / eval_df['actual']\n", + " print(eval_df.groupby('h')['APE'].mean())" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "h\n", + "t+1 0.01\n", + "t+2 0.01\n", + "t+3 0.02\n", + "Name: APE, dtype: float64\n" + ] + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 32, + "source": [ + "print('One step forecast MAPE: ', (mape(eval_df[eval_df['h'] == 't+1']['prediction'], eval_df[eval_df['h'] == 't+1']['actual']))*100, '%')" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "One step forecast MAPE: 0.5570581332313952 %\n" + ] + } + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 33, + "source": [ + "print('Multi-step forecast MAPE: ', mape(eval_df['prediction'], eval_df['actual'])*100, '%')" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Multi-step forecast MAPE: 1.1460048657704118 %\n" + ] + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "ಪರೀಕ್ಷಾ ಸೆಟ್‌ನ ಮೊದಲ ವಾರದ ಭವಿಷ್ಯವಾಣಿಗಳು ಮತ್ತು ವಾಸ್ತವಗಳನ್ನು ಪ್ಲಾಟ್ ಮಾಡಿ\n" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 34, + "source": [ + "if(HORIZON == 1):\n", + " ## Plotting single step forecast\n", + " eval_df.plot(x='timestamp', y=['actual', 'prediction'], style=['r', 'b'], figsize=(15, 8))\n", + "\n", + "else:\n", + " ## Plotting multi step forecast\n", + " plot_df = eval_df[(eval_df.h=='t+1')][['timestamp', 'actual']]\n", + " for t in range(1, HORIZON+1):\n", + " plot_df['t+'+str(t)] = eval_df[(eval_df.h=='t+'+str(t))]['prediction'].values\n", + "\n", + " fig = plt.figure(figsize=(15, 8))\n", + " ax = plt.plot(plot_df['timestamp'], plot_df['actual'], color='red', linewidth=4.0)\n", + " ax = fig.add_subplot(111)\n", + " for t in range(1, HORIZON+1):\n", + " x = plot_df['timestamp'][(t-1):]\n", + " y = plot_df['t+'+str(t)][0:len(x)]\n", + " ax.plot(x, y, color='blue', linewidth=4*math.pow(.9,t), alpha=math.pow(0.8,t))\n", + " \n", + " ax.legend(loc='best')\n", + " \n", + "plt.xlabel('timestamp', fontsize=12)\n", + "plt.ylabel('load', fontsize=12)\n", + "plt.show()" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "No handles with labels found to put in legend.\n" + ] + }, + { + "output_type": "display_data", + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + } + } + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "source": [], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ], + "metadata": { + "kernel_info": { + "name": "python3" + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3.7.0 64-bit" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.0" + }, + "nteract": { + "version": "nteract-front-end@1.0.0" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + }, + "coopTranslator": { + "original_hash": "c193140200b9684da27e3890211391b6", + "translation_date": "2025-12-19T17:39:15+00:00", + "source_file": "7-TimeSeries/2-ARIMA/solution/notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/translations/kn/7-TimeSeries/2-ARIMA/working/notebook.ipynb b/translations/kn/7-TimeSeries/2-ARIMA/working/notebook.ipynb new file mode 100644 index 000000000..8c74f25bc --- /dev/null +++ b/translations/kn/7-TimeSeries/2-ARIMA/working/notebook.ipynb @@ -0,0 +1,59 @@ +{ + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": 3 + }, + "orig_nbformat": 2, + "coopTranslator": { + "original_hash": "523ec472196307b3c4235337353c9ceb", + "translation_date": "2025-12-19T17:37:45+00:00", + "source_file": "7-TimeSeries/2-ARIMA/working/notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "# ARIMA ಬಳಸಿ ಕಾಲ ಸರಣಿ ಮುನ್ಸೂಚನೆ\n", + "\n", + "ಈ ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ, ನಾವು ಹೇಗೆ ಮಾಡುವುದು ಎಂದು ತೋರಿಸುತ್ತೇವೆ:\n", + "- ARIMA ಕಾಲ ಸರಣಿ ಮುನ್ಸೂಚನೆ ಮಾದರಿಗಾಗಿ ಕಾಲ ಸರಣಿ ಡೇಟಾವನ್ನು ತರಬೇತಿಗೆ ಸಿದ್ಧಪಡಿಸುವುದು\n", + "- ಸರಳ ARIMA ಮಾದರಿಯನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸಿ ಮುಂದಿನ HORIZON ಹಂತಗಳನ್ನು ಮುನ್ಸೂಚಿಸುವುದು (ಕಾಲ *t+1* ರಿಂದ *t+HORIZON* ವರೆಗೆ)\n", + "- ಮಾದರಿಯನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡುವುದು\n", + "\n", + "ಈ ಉದಾಹರಣೆಯಲ್ಲಿನ ಡೇಟಾ GEFCom2014 ಮುನ್ಸೂಚನೆ ಸ್ಪರ್ಧೆಯಿಂದ ತೆಗೆದುಕೊಳ್ಳಲಾಗಿದೆ1. ಇದು 2012 ರಿಂದ 2014 ರವರೆಗೆ 3 ವರ್ಷಗಳ ಗಂಟೆಗಂಟೆ ವಿದ್ಯುತ್ ಲೋಡ್ ಮತ್ತು ತಾಪಮಾನ ಮೌಲ್ಯಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. ಕಾರ್ಯವು ಭವಿಷ್ಯದ ವಿದ್ಯುತ್ ಲೋಡ್ ಮೌಲ್ಯಗಳನ್ನು ಮುನ್ಸೂಚಿಸುವುದಾಗಿದೆ. ಈ ಉದಾಹರಣೆಯಲ್ಲಿ, ನಾವು ಇತಿಹಾಸದ ಲೋಡ್ ಡೇಟಾವನ್ನು ಮಾತ್ರ ಬಳಸಿಕೊಂಡು ಒಂದು ಕಾಲ ಹಂತ ಮುನ್ಸೂಚಿಸುವುದನ್ನು ತೋರಿಸುತ್ತೇವೆ.\n", + "\n", + "1ಟಾವ್ ಹಾಂಗ್, ಪಿಯೆರ್ರೆ ಪಿನ್ಸನ್, ಶು ಫ್ಯಾನ್, ಹಮಿದ್ರೆಜಾ ಜರೈಪೌರ್, ಅಲ್ಬೆರ್ಟೋ ಟ್ರೊಕೋಲ್ಲಿ ಮತ್ತು ರಾಬ್ ಜೆ. ಹಿಂಡ್ಮನ್, \"ಪ್ರೊಬಬಿಲಿಸ್ಟಿಕ್ ಎನರ್ಜಿ ಫೋರ್ಕಾಸ್ಟಿಂಗ್: ಗ್ಲೋಬಲ್ ಎನರ್ಜಿ ಫೋರ್ಕಾಸ್ಟಿಂಗ್ ಸ್ಪರ್ಧೆ 2014 ಮತ್ತು ನಂತರ\", ಇಂಟರ್‌ನ್ಯಾಷನಲ್ ಜರ್ನಲ್ ಆಫ್ ಫೋರ್ಕಾಸ್ಟಿಂಗ್, ವಾಲ್ಯೂಮ್ 32, ಸಂಖ್ಯೆ 3, ಪುಟಗಳು 896-913, ಜುಲೈ-ಸೆಪ್ಟೆಂಬರ್, 2016.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pip install statsmodels" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/kn/7-TimeSeries/3-SVR/README.md b/translations/kn/7-TimeSeries/3-SVR/README.md new file mode 100644 index 000000000..dde65f936 --- /dev/null +++ b/translations/kn/7-TimeSeries/3-SVR/README.md @@ -0,0 +1,402 @@ + +# ಸಮಯ ಸರಣಿ ಭವಿಷ್ಯವಾಣಿ ಸಹಾಯ ವಕ್ಟರ್ ರೆಗ್ರೆಸರ್‌ನೊಂದಿಗೆ + +ಹಿಂದಿನ ಪಾಠದಲ್ಲಿ, ನೀವು ಸಮಯ ಸರಣಿ ಭವಿಷ್ಯವಾಣಿಗಾಗಿ ARIMA ಮಾದರಿಯನ್ನು ಹೇಗೆ ಬಳಸುವುದು ಎಂದು ಕಲಿತಿರಿ. ಈಗ ನೀವು ನಿರಂತರ ಡೇಟಾವನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಬಳಸುವ ರೆಗ್ರೆಸರ್ ಮಾದರಿ ಆಗಿರುವ Support Vector Regressor ಮಾದರಿಯನ್ನು ನೋಡಲಿದ್ದೀರಿ. + +## [ಪೂರ್ವ-ಪಾಠ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) + +## ಪರಿಚಯ + +ಈ ಪಾಠದಲ್ಲಿ, ನೀವು ರೆಗ್ರೆಷನ್‌ಗಾಗಿ [**SVM**: **S**ಪೋರ್ಟ್ **V**ೆಕ್ಟರ್ **M**ಶೀನ್](https://en.wikipedia.org/wiki/Support-vector_machine) ಬಳಸಿ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸುವ ವಿಶೇಷ ವಿಧಾನವನ್ನು ಕಂಡುಹಿಡಿಯುತ್ತೀರಿ, ಅಥವಾ **SVR: Support Vector Regressor**. + +### ಸಮಯ ಸರಣಿಯ ಸಂದರ್ಭದಲ್ಲಿ SVR [^1] + +ಸಮಯ ಸರಣಿ ಭವಿಷ್ಯವಾಣಿಯಲ್ಲಿ SVR ಮಹತ್ವವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವ ಮೊದಲು, ನೀವು ತಿಳಿದುಕೊಳ್ಳಬೇಕಾದ ಕೆಲವು ಪ್ರಮುಖ ಸಂಪ್ರದಾಯಗಳು ಇಲ್ಲಿವೆ: + +- **ರೆಗ್ರೆಷನ್:** ನಿರಂತರ ಮೌಲ್ಯಗಳನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ನೀಡಲಾದ ಇನ್ಪುಟ್‌ಗಳ ಸೆಟ್‌ನಿಂದ ಸೂಪರ್ವೈಸ್ಡ್ ಲರ್ನಿಂಗ್ ತಂತ್ರ. ಆಲೋಚನೆ ಎಂದರೆ ಫೀಚರ್ ಸ್ಪೇಸ್‌ನಲ್ಲಿ ಅತಿ ಹೆಚ್ಚು ಡೇಟಾ ಪಾಯಿಂಟ್‌ಗಳನ್ನು ಹೊಂದಿರುವ ವಕ್ರರೇಖೆ (ಅಥವಾ ರೇಖೆ) ಅನ್ನು ಹೊಂದಿಸುವುದು. ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ [ಇಲ್ಲಿ ಕ್ಲಿಕ್ ಮಾಡಿ](https://en.wikipedia.org/wiki/Regression_analysis). +- **ಸಪೋರ್ಟ್ ವೆಕ್ಟರ್ ಮಷೀನ್ (SVM):** ವರ್ಗೀಕರಣ, ರೆಗ್ರೆಷನ್ ಮತ್ತು ಔಟ್‌ಲೈಯರ್ ಪತ್ತೆಗಾಗಿ ಬಳಸುವ ಒಂದು ವಿಧದ ಸೂಪರ್ವೈಸ್ಡ್ ಮಷೀನ್ ಲರ್ನಿಂಗ್ ಮಾದರಿ. ಈ ಮಾದರಿ ಫೀಚರ್ ಸ್ಪೇಸ್‌ನಲ್ಲಿ ಒಂದು ಹೈಪರ್ಪ್ಲೇನ್ ಆಗಿದ್ದು, ವರ್ಗೀಕರಣದಲ್ಲಿ ಇದು ಗಡಿಬಿಡಿ ಆಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಮತ್ತು ರೆಗ್ರೆಷನ್‌ನಲ್ಲಿ ಅತ್ಯುತ್ತಮ ಹೊಂದಾಣಿಕೆಯ ರೇಖೆಯಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. SVM ನಲ್ಲಿ, ಸಾಮಾನ್ಯವಾಗಿ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಹೆಚ್ಚಿನ ಆಯಾಮಗಳ ಸ್ಥಳಕ್ಕೆ ಪರಿವರ್ತಿಸಲು Kernel ಫಂಕ್ಷನ್ ಬಳಸಲಾಗುತ್ತದೆ, ಇದರಿಂದ ಅವುಗಳನ್ನು ಸುಲಭವಾಗಿ ವಿಭಜಿಸಬಹುದು. SVM ಗಳ ಬಗ್ಗೆ ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ [ಇಲ್ಲಿ ಕ್ಲಿಕ್ ಮಾಡಿ](https://en.wikipedia.org/wiki/Support-vector_machine). +- **ಸಪೋರ್ಟ್ ವೆಕ್ಟರ್ ರೆಗ್ರೆಸರ್ (SVR):** SVM ರ ಒಂದು ವಿಧ, ಅತಿ ಹೆಚ್ಚು ಡೇಟಾ ಪಾಯಿಂಟ್‌ಗಳನ್ನು ಹೊಂದಿರುವ ಅತ್ಯುತ್ತಮ ಹೊಂದಾಣಿಕೆಯ ರೇಖೆಯನ್ನು (SVM ನಲ್ಲಿ ಹೈಪರ್ಪ್ಲೇನ್) ಕಂಡುಹಿಡಿಯಲು. + +### ಏಕೆ SVR? [^1] + +ಹಿಂದಿನ ಪಾಠದಲ್ಲಿ ನೀವು ARIMA ಬಗ್ಗೆ ಕಲಿತಿರಿ, ಇದು ಸಮಯ ಸರಣಿ ಡೇಟಾವನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಅತ್ಯಂತ ಯಶಸ್ವಿ ಸಾಂಖ್ಯಿಕ ರೇಖೀಯ ವಿಧಾನವಾಗಿದೆ. ಆದರೆ, ಅನೇಕ ಸಂದರ್ಭಗಳಲ್ಲಿ, ಸಮಯ ಸರಣಿ ಡೇಟಾದಲ್ಲಿ *ಅರೇಖೀಯತೆ* ಇರುತ್ತದೆ, ಇದನ್ನು ರೇಖೀಯ ಮಾದರಿಗಳಿಂದ ನಕ್ಷೆ ಹಾಕಲಾಗುವುದಿಲ್ಲ. ಇಂತಹ ಸಂದರ್ಭಗಳಲ್ಲಿ, ರೆಗ್ರೆಷನ್ ಕಾರ್ಯಗಳಿಗೆ ಡೇಟಾದಲ್ಲಿನ ಅರೇಖೀಯತೆಯನ್ನು ಪರಿಗಣಿಸುವ SVM ಯ ಶಕ್ತಿ SVR ಅನ್ನು ಸಮಯ ಸರಣಿ ಭವಿಷ್ಯವಾಣಿಯಲ್ಲಿ ಯಶಸ್ವಿಯಾಗಿಸುತ್ತದೆ. + +## ಅಭ್ಯಾಸ - SVR ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿ + +ಡೇಟಾ ತಯಾರಿಕೆಗೆ ಮೊದಲ ಕೆಲವು ಹಂತಗಳು ಹಿಂದಿನ [ARIMA](https://github.com/microsoft/ML-For-Beginners/tree/main/7-TimeSeries/2-ARIMA) ಪಾಠದಂತೆಯೇ ಇವೆ. + +ಈ ಪಾಠದಲ್ಲಿ [_/working_](https://github.com/microsoft/ML-For-Beginners/tree/main/7-TimeSeries/3-SVR/working) ಫೋಲ್ಡರ್ ತೆರೆಯಿರಿ ಮತ್ತು [_notebook.ipynb_](https://github.com/microsoft/ML-For-Beginners/blob/main/7-TimeSeries/3-SVR/working/notebook.ipynb) ಫೈಲ್ ಅನ್ನು ಹುಡುಕಿ.[^2] + +1. ನೋಟ್ಬುಕ್ ಅನ್ನು ರನ್ ಮಾಡಿ ಮತ್ತು ಅಗತ್ಯವಿರುವ ಲೈಬ್ರರಿಗಳನ್ನು ಆಮದುಮಾಡಿ: [^2] + + ```python + import sys + sys.path.append('../../') + ``` + + ```python + import os + import warnings + import matplotlib.pyplot as plt + import numpy as np + import pandas as pd + import datetime as dt + import math + + from sklearn.svm import SVR + from sklearn.preprocessing import MinMaxScaler + from common.utils import load_data, mape + ``` + +2. `/data/energy.csv` ಫೈಲ್‌ನಿಂದ ಡೇಟಾವನ್ನು ಪಾಂಡಾಸ್ ಡೇಟಾಫ್ರೇಮ್‌ಗೆ ಲೋಡ್ ಮಾಡಿ ಮತ್ತು ನೋಡಿ: [^2] + + ```python + energy = load_data('../../data')[['load']] + ``` + +3. ಜನವರಿ 2012 ರಿಂದ ಡಿಸೆಂಬರ್ 2014 ರವರೆಗೆ ಲಭ್ಯವಿರುವ ಎಲ್ಲಾ ಎನರ್ಜಿ ಡೇಟಾವನ್ನು ಪ್ಲಾಟ್ ಮಾಡಿ: [^2] + + ```python + energy.plot(y='load', subplots=True, figsize=(15, 8), fontsize=12) + plt.xlabel('timestamp', fontsize=12) + plt.ylabel('load', fontsize=12) + plt.show() + ``` + + ![ಪೂರ್ಣ ಡೇಟಾ](../../../../translated_images/full-data.a82ec9957e580e976f651a4fc38f280b9229c6efdbe3cfe7c60abaa9486d2cbe.kn.png) + + ಈಗ, ನಮ್ಮ SVR ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸೋಣ. + +### ತರಬೇತಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಡೇಟಾಸೆಟ್‌ಗಳನ್ನು ರಚಿಸಿ + +ನಿಮ್ಮ ಡೇಟಾ ಈಗ ಲೋಡ್ ಆಗಿದೆ, ಆದ್ದರಿಂದ ನೀವು ಅದನ್ನು ತರಬೇತಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಸೆಟ್‌ಗಳಾಗಿ ವಿಭಜಿಸಬಹುದು. ನಂತರ ನೀವು SVR ಗೆ ಅಗತ್ಯವಿರುವ ಸಮಯ-ಹಂತ ಆಧಾರಿತ ಡೇಟಾಸೆಟ್ ರಚಿಸಲು ಡೇಟಾವನ್ನು ಮರುರೂಪಗೊಳಿಸುವಿರಿ. ನೀವು ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ತರಬೇತಿ ಸೆಟ್‌ನಲ್ಲಿ ತರಬೇತಿಮಾಡುತ್ತೀರಿ. ಮಾದರಿ ತರಬೇತಿ ಮುಗಿದ ನಂತರ, ನೀವು ಅದರ ನಿಖರತೆಯನ್ನು ತರಬೇತಿ ಸೆಟ್, ಪರೀಕ್ಷಾ ಸೆಟ್ ಮತ್ತು ನಂತರ ಸಂಪೂರ್ಣ ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ಮೌಲ್ಯಮಾಪನ ಮಾಡುತ್ತೀರಿ. ಮಾದರಿ ಭವಿಷ್ಯದ ಸಮಯ ಅವಧಿಗಳಿಂದ ಮಾಹಿತಿ ಪಡೆಯದಂತೆ ಪರೀಕ್ಷಾ ಸೆಟ್ ತರಬೇತಿ ಸೆಟ್‌ನ ನಂತರದ ಅವಧಿಯನ್ನು ಒಳಗೊಂಡಿರಬೇಕು ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಬೇಕು [^2] (*ಒವರ್‌ಫಿಟಿಂಗ್* ಎಂದು ಕರೆಯಲ್ಪಡುವ ಪರಿಸ್ಥಿತಿ). + +1. 2014 ಸೆಪ್ಟೆಂಬರ್ 1 ರಿಂದ ಅಕ್ಟೋಬರ್ 31 ರವರೆಗೆ ಎರಡು ತಿಂಗಳ ಅವಧಿಯನ್ನು ತರಬೇತಿ ಸೆಟ್‌ಗೆ ಮೀಸಲಿಡಿ. ಪರೀಕ್ಷಾ ಸೆಟ್ 2014 ನವೆಂಬರ್ 1 ರಿಂದ ಡಿಸೆಂಬರ್ 31 ರವರೆಗೆ ಎರಡು ತಿಂಗಳ ಅವಧಿಯನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ: [^2] + + ```python + train_start_dt = '2014-11-01 00:00:00' + test_start_dt = '2014-12-30 00:00:00' + ``` + +2. ವ್ಯತ್ಯಾಸಗಳನ್ನು ದೃಶ್ಯೀಕರಿಸಿ: [^2] + + ```python + energy[(energy.index < test_start_dt) & (energy.index >= train_start_dt)][['load']].rename(columns={'load':'train'}) \ + .join(energy[test_start_dt:][['load']].rename(columns={'load':'test'}), how='outer') \ + .plot(y=['train', 'test'], figsize=(15, 8), fontsize=12) + plt.xlabel('timestamp', fontsize=12) + plt.ylabel('load', fontsize=12) + plt.show() + ``` + + ![ತರಬೇತಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಡೇಟಾ](../../../../translated_images/train-test.ead0cecbfc341921d4875eccf25fed5eefbb860cdbb69cabcc2276c49e4b33e5.kn.png) + + + +### ತರಬೇತಿಗಾಗಿ ಡೇಟಾವನ್ನು ತಯಾರಿಸಿ + +ಈಗ, ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಫಿಲ್ಟರಿಂಗ್ ಮತ್ತು ಸ್ಕೇಲಿಂಗ್ ಮೂಲಕ ತರಬೇತಿಗಾಗಿ ತಯಾರಿಸಬೇಕಾಗಿದೆ. ನೀವು ಬೇಕಾದ ಕಾಲಾವಧಿಗಳು ಮತ್ತು ಕಾಲಮ್‌ಗಳನ್ನು ಮಾತ್ರ ಒಳಗೊಂಡಂತೆ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಫಿಲ್ಟರ್ ಮಾಡಿ, ಮತ್ತು ಡೇಟಾ 0 ಮತ್ತು 1 ನಡುವಿನ ಅಂತರಾಳದಲ್ಲಿ ಪ್ರಕ್ಷೇಪಿತವಾಗುವಂತೆ ಸ್ಕೇಲ್ ಮಾಡಬೇಕು. + +1. ಪ್ರಾರಂಭಿಕ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಮೇಲ್ಕಂಡ ಕಾಲಾವಧಿಗಳನ್ನೂ ಮತ್ತು 'load' ಕಾಲಮ್ ಜೊತೆಗೆ ದಿನಾಂಕವನ್ನು ಮಾತ್ರ ಒಳಗೊಂಡಂತೆ ಫಿಲ್ಟರ್ ಮಾಡಿ: [^2] + + ```python + train = energy.copy()[(energy.index >= train_start_dt) & (energy.index < test_start_dt)][['load']] + test = energy.copy()[energy.index >= test_start_dt][['load']] + + print('Training data shape: ', train.shape) + print('Test data shape: ', test.shape) + ``` + + ```output + Training data shape: (1416, 1) + Test data shape: (48, 1) + ``` + +2. ತರಬೇತಿ ಡೇಟಾವನ್ನು (0, 1) ವ್ಯಾಪ್ತಿಯಲ್ಲಿ ಸ್ಕೇಲ್ ಮಾಡಿ: [^2] + + ```python + scaler = MinMaxScaler() + train['load'] = scaler.fit_transform(train) + ``` + +4. ಈಗ, ಪರೀಕ್ಷಾ ಡೇಟಾವನ್ನು ಸ್ಕೇಲ್ ಮಾಡಿ: [^2] + + ```python + test['load'] = scaler.transform(test) + ``` + +### ಸಮಯ-ಹಂತಗಳೊಂದಿಗೆ ಡೇಟಾ ರಚಿಸಿ [^1] + +SVR ಗಾಗಿ, ನೀವು ಇನ್ಪುಟ್ ಡೇಟಾವನ್ನು `[batch, timesteps]` ರೂಪಕ್ಕೆ ಪರಿವರ್ತಿಸುತ್ತೀರಿ. ಆದ್ದರಿಂದ, ನೀವು ಇತ್ತೀಚೆಗೆ ಇರುವ `train_data` ಮತ್ತು `test_data` ಅನ್ನು ಮರುರೂಪಗೊಳಿಸಿ, ಹೊಸ ಆಯಾಮವು ಸಮಯ ಹಂತಗಳನ್ನು ಸೂಚಿಸುತ್ತದೆ. + +```python +# ನಂಪೈ ಅರೆಗಳಾಗಿ ಪರಿವರ್ತನೆ ಮಾಡಲಾಗುತ್ತಿದೆ +train_data = train.values +test_data = test.values +``` + +ಈ ಉದಾಹರಣೆಗೆ, ನಾವು `timesteps = 5` ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತೇವೆ. ಆದ್ದರಿಂದ, ಮಾದರಿಗೆ ಇನ್ಪುಟ್‌ಗಳು ಮೊದಲ 4 ಸಮಯ ಹಂತಗಳ ಡೇಟಾಗಳಾಗಿದ್ದು, ಔಟ್‌ಪುಟ್ 5ನೇ ಸಮಯ ಹಂತದ ಡೇಟಾಗಿರುತ್ತದೆ. + +```python +timesteps=5 +``` + +ನೋಡಿದಂತೆ, ತರಬೇತಿ ಡೇಟಾವನ್ನು 2D ಟೆನ್ಸರ್‌ಗೆ ಪರಿವರ್ತಿಸುವ nested list comprehension: + +```python +train_data_timesteps=np.array([[j for j in train_data[i:i+timesteps]] for i in range(0,len(train_data)-timesteps+1)])[:,:,0] +train_data_timesteps.shape +``` + +```output +(1412, 5) +``` + +ಪರೀಕ್ಷಾ ಡೇಟಾವನ್ನು 2D ಟೆನ್ಸರ್‌ಗೆ ಪರಿವರ್ತಿಸುವುದು: + +```python +test_data_timesteps=np.array([[j for j in test_data[i:i+timesteps]] for i in range(0,len(test_data)-timesteps+1)])[:,:,0] +test_data_timesteps.shape +``` + +```output +(44, 5) +``` + +ತರಬೇತಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಡೇಟಾದಿಂದ ಇನ್ಪುಟ್ ಮತ್ತು ಔಟ್‌ಪುಟ್‌ಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡುವುದು: + +```python +x_train, y_train = train_data_timesteps[:,:timesteps-1],train_data_timesteps[:,[timesteps-1]] +x_test, y_test = test_data_timesteps[:,:timesteps-1],test_data_timesteps[:,[timesteps-1]] + +print(x_train.shape, y_train.shape) +print(x_test.shape, y_test.shape) +``` + +```output +(1412, 4) (1412, 1) +(44, 4) (44, 1) +``` + +### SVR ಅನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸಿ [^1] + +ಈಗ, SVR ಅನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸುವ ಸಮಯ. ಈ ಅನುಷ್ಠಾನ ಕುರಿತು ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ, ನೀವು [ಈ ಡಾಕ್ಯುಮೆಂಟೇಶನ್](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVR.html) ಅನ್ನು ನೋಡಿ. ನಮ್ಮ ಅನುಷ್ಠಾನಕ್ಕಾಗಿ, ನಾವು ಈ ಹಂತಗಳನ್ನು ಅನುಸರಿಸುತ್ತೇವೆ: + + 1. `SVR()` ಅನ್ನು ಕರೆಸಿ ಮತ್ತು ಮಾದರಿ ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು kernel, gamma, c ಮತ್ತು epsilon ಅನ್ನು ಪಾಸ್ ಮಾಡಿ + 2. `fit()` ಫಂಕ್ಷನ್ ಅನ್ನು ಕರೆಸಿ ತರಬೇತಿ ಡೇಟಾಗೆ ಮಾದರಿಯನ್ನು ತಯಾರಿಸಿ + 3. `predict()` ಫಂಕ್ಷನ್ ಅನ್ನು ಕರೆಸಿ ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ಮಾಡಿ + +ಈಗ ನಾವು SVR ಮಾದರಿಯನ್ನು ರಚಿಸುತ್ತೇವೆ. ಇಲ್ಲಿ ನಾವು [RBF kernel](https://scikit-learn.org/stable/modules/svm.html#parameters-of-the-rbf-kernel) ಅನ್ನು ಬಳಸುತ್ತೇವೆ ಮತ್ತು ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು gamma, C ಮತ್ತು epsilon ಅನ್ನು ಕ್ರಮವಾಗಿ 0.5, 10 ಮತ್ತು 0.05 ಎಂದು ಹೊಂದಿಸುತ್ತೇವೆ. + +```python +model = SVR(kernel='rbf',gamma=0.5, C=10, epsilon = 0.05) +``` + +#### ತರಬೇತಿ ಡೇಟಾದ ಮೇಲೆ ಮಾದರಿಯನ್ನು ಹೊಂದಿಸಿ [^1] + +```python +model.fit(x_train, y_train[:,0]) +``` + +```output +SVR(C=10, cache_size=200, coef0=0.0, degree=3, epsilon=0.05, gamma=0.5, + kernel='rbf', max_iter=-1, shrinking=True, tol=0.001, verbose=False) +``` + +#### ಮಾದರಿ ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ಮಾಡಿ [^1] + +```python +y_train_pred = model.predict(x_train).reshape(-1,1) +y_test_pred = model.predict(x_test).reshape(-1,1) + +print(y_train_pred.shape, y_test_pred.shape) +``` + +```output +(1412, 1) (44, 1) +``` + +ನೀವು ನಿಮ್ಮ SVR ಅನ್ನು ನಿರ್ಮಿಸಿದ್ದೀರಿ! ಈಗ ಅದನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡೋಣ. + +### ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಿ [^1] + +ಮೌಲ್ಯಮಾಪನಕ್ಕಾಗಿ, ಮೊದಲು ನಾವು ಡೇಟಾವನ್ನು ಮೂಲ ಮಾಪಕಕ್ಕೆ ಮರುಸ್ಕೇಲ್ ಮಾಡುತ್ತೇವೆ. ನಂತರ, ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಪರಿಶೀಲಿಸಲು, ನಾವು ಮೂಲ ಮತ್ತು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿದ ಸಮಯ ಸರಣಿ ಪ್ಲಾಟ್ ಅನ್ನು ಚಿತ್ರಿಸುತ್ತೇವೆ ಮತ್ತು MAPE ಫಲಿತಾಂಶವನ್ನು ಮುದ್ರಿಸುತ್ತೇವೆ. + +ಭವಿಷ್ಯವಾಣಿ ಮತ್ತು ಮೂಲ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಸ್ಕೇಲ್ ಮಾಡಿ: + +```python +# ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ಮಾಪನ ಮಾಡುವುದು +y_train_pred = scaler.inverse_transform(y_train_pred) +y_test_pred = scaler.inverse_transform(y_test_pred) + +print(len(y_train_pred), len(y_test_pred)) +``` + +```python +# ಮೂಲ ಮೌಲ್ಯಗಳನ್ನು ಮಾಪನಗೊಳಿಸುವುದು +y_train = scaler.inverse_transform(y_train) +y_test = scaler.inverse_transform(y_test) + +print(len(y_train), len(y_test)) +``` + +#### ತರಬೇತಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಡೇಟಾದ ಮೇಲೆ ಮಾದರಿ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಪರಿಶೀಲಿಸಿ [^1] + +ನಮ್ಮ ಪ್ಲಾಟ್‌ನ x-ಅಕ್ಷದಲ್ಲಿ ತೋರಿಸಲು ಡೇಟಾಸೆಟ್‌ನಿಂದ ಟೈಮ್‌ಸ್ಟ್ಯಾಂಪ್‌ಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತೇವೆ. ನಾವು ಮೊದಲ ```timesteps-1``` ಮೌಲ್ಯಗಳನ್ನು ಮೊದಲ ಔಟ್‌ಪುಟ್‌ಗೆ ಇನ್ಪುಟ್ ಆಗಿ ಬಳಸುತ್ತಿದ್ದೇವೆ, ಆದ್ದರಿಂದ ಔಟ್‌ಪುಟ್‌ಗಾಗಿ ಟೈಮ್‌ಸ್ಟ್ಯಾಂಪ್‌ಗಳು ಅದರಿಂದ ನಂತರ ಪ್ರಾರಂಭವಾಗುತ್ತವೆ. + +```python +train_timestamps = energy[(energy.index < test_start_dt) & (energy.index >= train_start_dt)].index[timesteps-1:] +test_timestamps = energy[test_start_dt:].index[timesteps-1:] + +print(len(train_timestamps), len(test_timestamps)) +``` + +```output +1412 44 +``` + +ತರಬೇತಿ ಡೇಟಾದ ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ಪ್ಲಾಟ್ ಮಾಡಿ: + +```python +plt.figure(figsize=(25,6)) +plt.plot(train_timestamps, y_train, color = 'red', linewidth=2.0, alpha = 0.6) +plt.plot(train_timestamps, y_train_pred, color = 'blue', linewidth=0.8) +plt.legend(['Actual','Predicted']) +plt.xlabel('Timestamp') +plt.title("Training data prediction") +plt.show() +``` + +![ತರಬೇತಿ ಡೇಟಾ ಭವಿಷ್ಯವಾಣಿ](../../../../translated_images/train-data-predict.3c4ef4e78553104ffdd53d47a4c06414007947ea328e9261ddf48d3eafdefbbf.kn.png) + +ತರಬೇತಿ ಡೇಟಾದ MAPE ಅನ್ನು ಮುದ್ರಿಸಿ + +```python +print('MAPE for training data: ', mape(y_train_pred, y_train)*100, '%') +``` + +```output +MAPE for training data: 1.7195710200875551 % +``` + +ಪರೀಕ್ಷಾ ಡೇಟಾದ ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ಪ್ಲಾಟ್ ಮಾಡಿ + +```python +plt.figure(figsize=(10,3)) +plt.plot(test_timestamps, y_test, color = 'red', linewidth=2.0, alpha = 0.6) +plt.plot(test_timestamps, y_test_pred, color = 'blue', linewidth=0.8) +plt.legend(['Actual','Predicted']) +plt.xlabel('Timestamp') +plt.show() +``` + +![ಪರೀಕ್ಷಾ ಡೇಟಾ ಭವಿಷ್ಯವಾಣಿ](../../../../translated_images/test-data-predict.8afc47ee7e52874f514ebdda4a798647e9ecf44a97cc927c535246fcf7a28aa9.kn.png) + +ಪರೀಕ್ಷಾ ಡೇಟಾದ MAPE ಅನ್ನು ಮುದ್ರಿಸಿ + +```python +print('MAPE for testing data: ', mape(y_test_pred, y_test)*100, '%') +``` + +```output +MAPE for testing data: 1.2623790187854018 % +``` + +🏆 ನೀವು ಪರೀಕ್ಷಾ ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ಅತ್ಯುತ್ತಮ ಫಲಿತಾಂಶವನ್ನು ಪಡೆದಿದ್ದೀರಿ! + +### ಸಂಪೂರ್ಣ ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ಮಾದರಿ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಪರಿಶೀಲಿಸಿ [^1] + +```python +# ಲೋಡ್ ಮೌಲ್ಯಗಳನ್ನು numpy ಅರೆ ಆಗಿ ಹೊರತೆಗೆಯುವುದು +data = energy.copy().values + +# ಮಾಪನ +data = scaler.transform(data) + +# ಮಾದರಿ ಇನ್‌ಪುಟ್ ಅಗತ್ಯದ ಪ್ರಕಾರ 2D ಟೆನ್ಸರ್ ಗೆ ಪರಿವರ್ತಿಸುವುದು +data_timesteps=np.array([[j for j in data[i:i+timesteps]] for i in range(0,len(data)-timesteps+1)])[:,:,0] +print("Tensor shape: ", data_timesteps.shape) + +# ಡೇಟಾದಿಂದ ಇನ್‌ಪುಟ್‌ಗಳು ಮತ್ತು ಔಟ್‌ಪುಟ್‌ಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡುವುದು +X, Y = data_timesteps[:,:timesteps-1],data_timesteps[:,[timesteps-1]] +print("X shape: ", X.shape,"\nY shape: ", Y.shape) +``` + +```output +Tensor shape: (26300, 5) +X shape: (26300, 4) +Y shape: (26300, 1) +``` + +```python +# ಮಾದರಿ ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿ +Y_pred = model.predict(X).reshape(-1,1) + +# ವಿಲೋಮ ಮಾಪನ ಮತ್ತು ಆಕಾರ ಬದಲಿಸಿ +Y_pred = scaler.inverse_transform(Y_pred) +Y = scaler.inverse_transform(Y) +``` + +```python +plt.figure(figsize=(30,8)) +plt.plot(Y, color = 'red', linewidth=2.0, alpha = 0.6) +plt.plot(Y_pred, color = 'blue', linewidth=0.8) +plt.legend(['Actual','Predicted']) +plt.xlabel('Timestamp') +plt.show() +``` + +![ಪೂರ್ಣ ಡೇಟಾ ಭವಿಷ್ಯವಾಣಿ](../../../../translated_images/full-data-predict.4f0fed16a131c8f3bcc57a3060039dc7f2f714a05b07b68c513e0fe7fb3d8964.kn.png) + +```python +print('MAPE: ', mape(Y_pred, Y)*100, '%') +``` + +```output +MAPE: 2.0572089029888656 % +``` + + + +🏆 ಅತ್ಯುತ್ತಮ ಪ್ಲಾಟ್‌ಗಳು, ಉತ್ತಮ ನಿಖರತೆಯ ಮಾದರಿಯನ್ನು ತೋರಿಸುತ್ತಿವೆ. ಶುಭಾಶಯಗಳು! + +--- + +## 🚀ಸವಾಲು + +- ಮಾದರಿಯನ್ನು ರಚಿಸುವಾಗ ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು (gamma, C, epsilon) ಅನ್ನು ಬದಲಾಯಿಸಿ ಮತ್ತು ಡೇಟಾದ ಮೇಲೆ ಮೌಲ್ಯಮಾಪನ ಮಾಡಿ ಯಾವ ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್‌ಗಳ ಸೆಟ್ ಪರೀಕ್ಷಾ ಡೇಟಾದ ಮೇಲೆ ಉತ್ತಮ ಫಲಿತಾಂಶ ನೀಡುತ್ತದೆ ಎಂದು ನೋಡಿ. ಈ ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್‌ಗಳ ಬಗ್ಗೆ ತಿಳಿಯಲು, ನೀವು [ಈ ಡಾಕ್ಯುಮೆಂಟೇಶನ್](https://scikit-learn.org/stable/modules/svm.html#parameters-of-the-rbf-kernel) ಅನ್ನು ನೋಡಿ. +- ಮಾದರಿಗಾಗಿ ವಿಭಿನ್ನ kernel ಫಂಕ್ಷನ್‌ಗಳನ್ನು ಪ್ರಯತ್ನಿಸಿ ಮತ್ತು ಅವುಗಳ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ವಿಶ್ಲೇಷಿಸಿ. ಸಹಾಯಕ ಡಾಕ್ಯುಮೆಂಟೇಶನ್ [ಇಲ್ಲಿ](https://scikit-learn.org/stable/modules/svm.html#kernel-functions) ಲಭ್ಯವಿದೆ. +- ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಹಿಂದಕ್ಕೆ ನೋಡಲು ಮಾದರಿಗಾಗಿ `timesteps` ಗೆ ವಿಭಿನ್ನ ಮೌಲ್ಯಗಳನ್ನು ಪ್ರಯತ್ನಿಸಿ. + +## [ಪೋಸ್ಟ್-ಪಾಠ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) + +## ವಿಮರ್ಶೆ ಮತ್ತು ಸ್ವಯಂ ಅಧ್ಯಯನ + +ಈ ಪಾಠವು ಸಮಯ ಸರಣಿ ಭವಿಷ್ಯವಾಣಿಗಾಗಿ SVR ಅನ್ವಯವನ್ನು ಪರಿಚಯಿಸುವುದಾಗಿತ್ತು. SVR ಬಗ್ಗೆ ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ, ನೀವು [ಈ ಬ್ಲಾಗ್](https://www.analyticsvidhya.com/blog/2020/03/support-vector-regression-tutorial-for-machine-learning/) ಅನ್ನು ನೋಡಿ. ಈ [scikit-learn ಡಾಕ್ಯುಮೆಂಟೇಶನ್](https://scikit-learn.org/stable/modules/svm.html) ಸಾಮಾನ್ಯವಾಗಿ SVM ಗಳ, [SVR ಗಳ](https://scikit-learn.org/stable/modules/svm.html#regression) ಮತ್ತು ಬಳಸಬಹುದಾದ ವಿವಿಧ [kernel ಫಂಕ್ಷನ್‌ಗಳು](https://scikit-learn.org/stable/modules/svm.html#kernel-functions) ಮತ್ತು ಅವುಗಳ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳ ಕುರಿತು ಸಮಗ್ರ ವಿವರಣೆ ನೀಡುತ್ತದೆ. + +## ನಿಯೋಜನೆ + +[ಹೊಸ SVR ಮಾದರಿ](assignment.md) + + + +## ಕ್ರೆಡಿಟ್‌ಗಳು + + +[^1]: ಈ ವಿಭಾಗದ ಪಠ್ಯ, ಕೋಡ್ ಮತ್ತು ಔಟ್‌ಪುಟ್ ಅನ್ನು [@AnirbanMukherjeeXD](https://github.com/AnirbanMukherjeeXD) ಕೊಡುಗೆ ನೀಡಿದ್ದಾರೆ +[^2]: ಈ ವಿಭಾಗದ ಪಠ್ಯ, ಕೋಡ್ ಮತ್ತು ಔಟ್‌ಪುಟ್ ಅನ್ನು [ARIMA](https://github.com/microsoft/ML-For-Beginners/tree/main/7-TimeSeries/2-ARIMA) ನಿಂದ ತೆಗೆದುಕೊಂಡಿದೆ + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ತಪ್ಪುಗಳು ಇರಬಹುದು ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/7-TimeSeries/3-SVR/assignment.md b/translations/kn/7-TimeSeries/3-SVR/assignment.md new file mode 100644 index 000000000..e3764fa8b --- /dev/null +++ b/translations/kn/7-TimeSeries/3-SVR/assignment.md @@ -0,0 +1,31 @@ + +# ಹೊಸ SVR ಮಾದರಿ + +## ಸೂಚನೆಗಳು [^1] + +ನೀವು ಈಗಾಗಲೇ SVR ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿದ್ದೀರಿ, ಹೊಸ ಡೇಟಾ ಬಳಸಿ ಹೊಸದೊಂದು ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿ (Duke ನಿಂದ [ಈ ಡೇಟಾಸೆಟ್‌ಗಳಲ್ಲಿ ಒಂದನ್ನು ಪ್ರಯತ್ನಿಸಿ](http://www2.stat.duke.edu/~mw/ts_data_sets.html)). ನಿಮ್ಮ ಕೆಲಸವನ್ನು ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ ಟಿಪ್ಪಣಿ ಮಾಡಿ, ಡೇಟಾ ಮತ್ತು ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ದೃಶ್ಯೀಕರಿಸಿ, ಮತ್ತು ಸೂಕ್ತ ಪ್ಲಾಟ್‌ಗಳು ಮತ್ತು MAPE ಬಳಸಿ ಅದರ ನಿಖರತೆಯನ್ನು ಪರೀಕ್ಷಿಸಿ. ವಿವಿಧ ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್‌ಗಳನ್ನು ಮತ್ತು ಟೈಮ್‌ಸ್ಟೆಪ್ಸ್‌ಗಾಗಿ ವಿಭಿನ್ನ ಮೌಲ್ಯಗಳನ್ನು ಪ್ರಯತ್ನಿಸಿ. + +## ರೂಬ್ರಿಕ್ [^1] + +| ಮಾನದಂಡಗಳು | ಉದಾಹರಣೀಯ | ಸಮರ್ಪಕ | ಸುಧಾರಣೆಯ ಅಗತ್ಯ | +| -------- | ------------------------------------------------------------ | --------------------------------------------------------- | ----------------------------------- | +| | SVR ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿ, ಪರೀಕ್ಷಿಸಿ, ದೃಶ್ಯೀಕರಣಗಳೊಂದಿಗೆ ವಿವರಿಸಿ ಮತ್ತು ನಿಖರತೆಯನ್ನು ಸೂಚಿಸುವ ನೋಟ್ಬುಕ್ ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿದೆ. | ಪ್ರಸ್ತುತಪಡಿಸಿದ ನೋಟ್ಬುಕ್ ಟಿಪ್ಪಣಿಸದಿರುವುದು ಅಥವಾ ದೋಷಗಳನ್ನು ಹೊಂದಿದೆ. | ಅಪೂರ್ಣ ನೋಟ್ಬುಕ್ ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿದೆ | + + + +[^1]:ಈ ವಿಭಾಗದ ಪಠ್ಯವು [ARIMA ನಿಂದ ನೀಡಲಾದ ಕಾರ್ಯ](https://github.com/microsoft/ML-For-Beginners/tree/main/7-TimeSeries/2-ARIMA/assignment.md) ಆಧಾರಿತವಾಗಿದೆ. + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/7-TimeSeries/3-SVR/solution/notebook.ipynb b/translations/kn/7-TimeSeries/3-SVR/solution/notebook.ipynb new file mode 100644 index 000000000..4a868f8bd --- /dev/null +++ b/translations/kn/7-TimeSeries/3-SVR/solution/notebook.ipynb @@ -0,0 +1,1035 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "fv9OoQsMFk5A" + }, + "source": [ + "# ಸಪೋರ್ಟ್ ವೆಕ್ಟರ್ ರೆಗ್ರೆಸರ್ ಬಳಸಿ ಕಾಲ ಸರಣಿ ಭವಿಷ್ಯವಾಣಿ\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ಈ ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ, ನಾವು ಹೇಗೆ ಮಾಡುವುದು ಎಂದು ತೋರಿಸುತ್ತೇವೆ:\n", + "\n", + "- 2D ಕಾಲ ಸರಣಿ ಡೇಟಾವನ್ನು SVM ರೆಗ್ರೆಸರ್ ಮಾದರಿಗಾಗಿ ತರಬೇತಿಗೆ ಸಿದ್ಧಪಡಿಸುವುದು\n", + "- RBF ಕರ್ಣೆಲ್ ಬಳಸಿ SVR ಅನ್ನು ಜಾರಿಗೆ ತರುವುದು\n", + "- ಪ್ಲಾಟ್‌ಗಳು ಮತ್ತು MAPE ಬಳಸಿ ಮಾದರಿಯನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡುವುದು\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## ಮೋಡ್ಯೂಲ್‌ಗಳನ್ನು ಆಮದು ಮಾಡಿಕೊಳ್ಳುವುದು\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import sys\n", + "sys.path.append('../../')" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "id": "M687KNlQFp0-" + }, + "outputs": [], + "source": [ + "import os\n", + "import warnings\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import pandas as pd\n", + "import datetime as dt\n", + "import math\n", + "\n", + "from sklearn.svm import SVR\n", + "from sklearn.preprocessing import MinMaxScaler\n", + "from common.utils import load_data, mape" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Cj-kfVdMGjWP" + }, + "source": [ + "## ಡೇಟಾ ಸಿದ್ಧತೆ\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "8fywSjC6GsRz" + }, + "source": [ + "### ಡೇಟಾ ಲೋಡ್ ಮಾಡಿ\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 363 + }, + "id": "aBDkEB11Fumg", + "outputId": "99cf7987-0509-4b73-8cc2-75d7da0d2740" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
load
2012-01-01 00:00:002698.0
2012-01-01 01:00:002558.0
2012-01-01 02:00:002444.0
2012-01-01 03:00:002402.0
2012-01-01 04:00:002403.0
\n", + "
" + ], + "text/plain": [ + " load\n", + "2012-01-01 00:00:00 2698.0\n", + "2012-01-01 01:00:00 2558.0\n", + "2012-01-01 02:00:00 2444.0\n", + "2012-01-01 03:00:00 2402.0\n", + "2012-01-01 04:00:00 2403.0" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "energy = load_data('../../data')[['load']]\n", + "energy.head(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "O0BWP13rGnh4" + }, + "source": [ + "### ಡೇಟಾವನ್ನು ಚಿತ್ರಿಸಿ\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 486 + }, + "id": "hGaNPKu_Gidk", + "outputId": "7f89b326-9057-4f49-efbe-cb100ebdf76d" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA4kAAAH1CAYAAABbUbvGAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAC4S0lEQVR4nOzdd7wU1d0G8OfcQu9dQUA6goI0RQXFimL3jb3FrjHRmNg19hJrYo29d8WKFQQFC0WlSu8gvVzqBe695/1jd/bOzk7vs/t88/GTy+7M7NnZmTOn/o6QUoKIiIiIiIgIAIqiTgARERERERHFByuJRERERERElMFKIhEREREREWWwkkhEREREREQZrCQSERERERFRBiuJRERERERElFESdQKi0KxZM9m+ffuok0FERERERBSJX375Za2UsrneewVZSWzfvj0mTZoUdTKIiIiIiIgiIYRYbPQeh5sSERERERFRBiuJRERERERElMFKIhEREREREWUU5JxEIiIiIiIiANi1axeWLVuG8vLyqJMSiFq1aqFNmzYoLS21vQ8riUREREREVLCWLVuG+vXro3379hBCRJ0cX0kpsW7dOixbtgx77rmn7f043JSIiIiIiApWeXk5mjZtmncVRAAQQqBp06aOe0lZSSQiIiIiooKWjxVEhZvvxkoiERERERFRhOrVq+fLcW6//XY89NBDno/DSiIRERERERFlsJJIREREREQUA1JKXHvttejZsyf23ntvvPPOOwCALVu24LDDDkOfPn2w99574+OPP87sc88996BLly446KCDMHv2bF/SweimREREREREAO74dAZ+/2OTr8fca/cGuO24Hra2HT58OCZPnowpU6Zg7dq16N+/PwYPHozmzZvjww8/RIMGDbB27Vrsv//+OP744/Hrr7/i7bffxuTJk1FRUYE+ffqgb9++ntPMnkQiIiIiIqIYGDduHM444wwUFxejZcuWOPjggzFx4kRIKXHTTTdhn332weGHH47ly5dj1apVGDt2LE466STUqVMHDRo0wPHHH+9LOtiTSEREREREBNju8QvbG2+8gTVr1uCXX35BaWkp2rdv73hZCyfYk0hERERERBQDgwYNwjvvvIPKykqsWbMG33//PQYMGICysjK0aNECpaWlGD16NBYvXgwAGDx4MD766CNs374dmzdvxqeffupLOtiT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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "energy.plot(y='load', subplots=True, figsize=(15, 8), fontsize=12)\n", + "plt.xlabel('timestamp', fontsize=12)\n", + "plt.ylabel('load', fontsize=12)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IPuNor4eGwYY" + }, + "source": [ + "### ತರಬೇತಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಡೇಟಾ ರಚಿಸಿ\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "id": "ysvsNyONGt0Q" + }, + "outputs": [], + "source": [ + "train_start_dt = '2014-11-01 00:00:00'\n", + "test_start_dt = '2014-12-30 00:00:00'" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 548 + }, + "id": "SsfdLoPyGy9w", + "outputId": "d6d6c25b-b1f4-47e5-91d1-707e043237d7" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA4kAAAITCAYAAACqpFnEAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAEAAElEQVR4nOz9d7gkyVUmjL+RmVV1bdvpHitpRiOLJCQhCdCHkxAsEny4FQiz2mXNhzD74yfWsAgjFrMLfBghBAtIeCuMkLBCFllkRjNyYzTe9vS073v7+qrKjO+PyBMZmRURGSdv3+rb3fE+Tz/3dt2Kyqw0kXHO+573CCklIiIiIiIiIiIiIiIiIiIAILnQOxARERERERERERERERGxexCDxIiIiIiIiIiIiIiIiAiNGCRGREREREREREREREREaMQgMSIiIiIiIiIiIiIiIkIjBokRERERERERERERERERGjFIjIiIiIiIiIiIiIiIiNDILvQOXAhcccUV8vrrr7/QuxEREREREREREREREXFBcMstt5ySUh6y/e2yDBKvv/563HzzzRd6NyIiIiIiIiIiIiIiIi4IhBAPuf4W5aYRERERERERERERERERGjFIjIiIiIiIiIiIiIiIiNCIQWJERERERERERERERESExmVZkxgRERERERERERERcXljNBrhyJEj2NzcvNC7sqOYmZnBddddh16vFzwmBokREREREREREREREZcdjhw5gsXFRVx//fUQQlzo3dkRSClx+vRpHDlyBDfccEPwuCg3jYiIiIiIiIiIiIi47LC5uYmDBw9esgEiAAghcPDgQTZbGoPEiIiIiIiIiIiIiIjLEpdygEjo8h1jkBgRERERERERERERETFlLC0t4Td+4zfY4772a78WS0tL53+HDMQgMSIiIiIiIiIiIiIiYspwBYnj8dg77u1vfzv27du3Q3ulEI1rIiIiIiIiIiIiIiIipozXvOY1uO+++/Cc5zwHvV4PMzMz2L9/P+68807cfffd+KZv+iY88sgj2NzcxKtf/Wq86lWvAgBcf/31uPnmm7G6uoqXvexl+NIv/VJ85CMfwbXXXou//du/xezs7Lb3LQaJERERERERERERERGXNX7q72/HHUfPndfP/Lxr9uB/fv0znH//+Z//edx222349Kc/jfe///34uq/7Otx2223ahfT3fu/3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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "energy[(energy.index < test_start_dt) & (energy.index >= train_start_dt)][['load']].rename(columns={'load':'train'}) \\\n", + " .join(energy[test_start_dt:][['load']].rename(columns={'load':'test'}), how='outer') \\\n", + " .plot(y=['train', 'test'], figsize=(15, 8), fontsize=12)\n", + "plt.xlabel('timestamp', fontsize=12)\n", + "plt.ylabel('load', fontsize=12)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "XbFTqBw6G1Ch" + }, + "source": [ + "### ತರಬೇತಿಗಾಗಿ ಡೇಟಾ ಸಿದ್ಧಪಡಿಸುವುದು\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ಈಗ, ನಿಮ್ಮ ಡೇಟಾವನ್ನು ತರಬೇತಿಗಾಗಿ ತಯಾರಿಸಲು ಫಿಲ್ಟರಿಂಗ್ ಮತ್ತು ಸ್ಕೇಲಿಂಗ್ ಮಾಡುವ ಅಗತ್ಯವಿದೆ.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "cYivRdQpHDj3", + "outputId": "a138f746-461c-4fd6-bfa6-0cee094c4aa1" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Training data shape: (1416, 1)\n", + "Test data shape: (48, 1)\n" + ] + } + ], + "source": [ + "train = energy.copy()[(energy.index >= train_start_dt) & (energy.index < test_start_dt)][['load']]\n", + "test = energy.copy()[energy.index >= test_start_dt][['load']]\n", + "\n", + "print('Training data shape: ', train.shape)\n", + "print('Test data shape: ', test.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ಡೇಟಾವನ್ನು (0, 1) ಶ್ರೇಣಿಯಲ್ಲಿ ಮಾಪಿಸಿ.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 363 + }, + "id": "3DNntGQnZX8G", + "outputId": "210046bc-7a66-4ccd-d70d-aa4a7309949c" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
load
2014-11-01 00:00:000.101611
2014-11-01 01:00:000.065801
2014-11-01 02:00:000.046106
2014-11-01 03:00:000.042525
2014-11-01 04:00:000.059087
\n", + "
" + ], + "text/plain": [ + " load\n", + "2014-11-01 00:00:00 0.101611\n", + "2014-11-01 01:00:00 0.065801\n", + "2014-11-01 02:00:00 0.046106\n", + "2014-11-01 03:00:00 0.042525\n", + "2014-11-01 04:00:00 0.059087" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "scaler = MinMaxScaler()\n", + "train['load'] = scaler.fit_transform(train)\n", + "train.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 206 + }, + "id": "26Yht-rzZexe", + "outputId": "20326077-a38a-4e78-cc5b-6fd7af95d301" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
load
2014-12-30 00:00:000.329454
2014-12-30 01:00:000.290063
2014-12-30 02:00:000.273948
2014-12-30 03:00:000.268129
2014-12-30 04:00:000.302596
\n", + "
" + ], + "text/plain": [ + " load\n", + "2014-12-30 00:00:00 0.329454\n", + "2014-12-30 01:00:00 0.290063\n", + "2014-12-30 02:00:00 0.273948\n", + "2014-12-30 03:00:00 0.268129\n", + "2014-12-30 04:00:00 0.302596" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "test['load'] = scaler.transform(test)\n", + "test.head(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "x0n6jqxOQ41Z" + }, + "source": [ + "### ಕಾಲಚರಣಗಳೊಂದಿಗೆ ಡೇಟಾ ರಚನೆ ಮಾಡುವುದು\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "fdmxTZtOQ8xs" + }, + "source": [ + "ನಮ್ಮ SVR ಗಾಗಿ, ನಾವು ಇನ್‌ಪುಟ್ ಡೇಟಾವನ್ನು `[batch, timesteps]` ರೂಪಕ್ಕೆ ಪರಿವರ್ತಿಸುತ್ತೇವೆ. ಆದ್ದರಿಂದ, ನಾವು ಇತ್ತೀಚಿನ `train_data` ಮತ್ತು `test_data` ಅನ್ನು ಪುನರ್‌ರೂಪಗೊಳಿಸುತ್ತೇವೆ ಹಾಗಾಗಿ ಒಂದು ಹೊಸ ಆಯಾಮವು timesteps ಅನ್ನು ಸೂಚಿಸುತ್ತದೆ. ನಮ್ಮ ಉದಾಹರಣೆಗೆ, ನಾವು `timesteps = 5` ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತೇವೆ. ಆದ್ದರಿಂದ, ಮಾದರಿಯ ಇನ್‌ಪುಟ್‌ಗಳು ಮೊದಲ 4 timesteps ಗಾಗಿ ಡೇಟಾಗಳಾಗಿದ್ದು, ಔಟ್‌ಪುಟ್ 5ನೇ timestep ಗಾಗಿ ಡೇಟಾಗಿರುತ್ತದೆ.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "id": "Rpju-Sc2HFm0" + }, + "outputs": [], + "source": [ + "# Converting to numpy arrays\n", + "\n", + "train_data = train.values\n", + "test_data = test.values" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "# Selecting the timesteps\n", + "\n", + "timesteps=5" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "O-JrsrsVJhUQ", + "outputId": "c90dbe71-bacc-4ec4-b452-f82fe5aefaef" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(1412, 5)" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Converting data to 2D tensor\n", + "\n", + "train_data_timesteps=np.array([[j for j in train_data[i:i+timesteps]] for i in range(0,len(train_data)-timesteps+1)])[:,:,0]\n", + "train_data_timesteps.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "exJD8AI7KE4g", + "outputId": "ce90260c-f327-427d-80f2-77307b5a6318" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(44, 5)" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Converting test data to 2D tensor\n", + "\n", + "test_data_timesteps=np.array([[j for j in test_data[i:i+timesteps]] for i in range(0,len(test_data)-timesteps+1)])[:,:,0]\n", + "test_data_timesteps.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "id": "2u0R2sIsLuq5" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(1412, 4) (1412, 1)\n", + "(44, 4) (44, 1)\n" + ] + } + ], + "source": [ + "x_train, y_train = train_data_timesteps[:,:timesteps-1],train_data_timesteps[:,[timesteps-1]]\n", + "x_test, y_test = test_data_timesteps[:,:timesteps-1],test_data_timesteps[:,[timesteps-1]]\n", + "\n", + "print(x_train.shape, y_train.shape)\n", + "print(x_test.shape, y_test.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "8wIPOtAGLZlh" + }, + "source": [ + "## SVR ಮಾದರಿ ರಚನೆ ಮಾಡುವುದು\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "id": "EhA403BEPEiD" + }, + "outputs": [], + "source": [ + "# Create model using RBF kernel\n", + "\n", + "model = SVR(kernel='rbf',gamma=0.5, C=10, epsilon = 0.05)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "GS0UA3csMbqp", + "outputId": "d86b6f05-5742-4c1d-c2db-c40510bd4f0d" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "SVR(C=10, cache_size=200, coef0=0.0, degree=3, epsilon=0.05, gamma=0.5,\n", + " kernel='rbf', max_iter=-1, shrinking=True, tol=0.001, verbose=False)" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Fit model on training data\n", + "\n", + "model.fit(x_train, y_train[:,0])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Rz_x8S3UrlcF" + }, + "source": [ + "### ಮಾದರಿ ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿ\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "XR0gnt3MnuYS", + "outputId": "157e40ab-9a23-4b66-a885-0d52a24b2364" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(1412, 1) (44, 1)\n" + ] + } + ], + "source": [ + "# Making predictions\n", + "\n", + "y_train_pred = model.predict(x_train).reshape(-1,1)\n", + "y_test_pred = model.predict(x_test).reshape(-1,1)\n", + "\n", + "print(y_train_pred.shape, y_test_pred.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "_2epncg-SGzr" + }, + "source": [ + "## ಮಾದರಿ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ವಿಶ್ಲೇಷಣೆ ಮಾಡುವುದು\n" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1412 44\n" + ] + } + ], + "source": [ + "# Scaling the predictions\n", + "\n", + "y_train_pred = scaler.inverse_transform(y_train_pred)\n", + "y_test_pred = scaler.inverse_transform(y_test_pred)\n", + "\n", + "print(len(y_train_pred), len(y_test_pred))" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "xmm_YLXhq7gV", + "outputId": "18392f64-4029-49ac-c71a-a4e2411152a1" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1412 44\n" + ] + } + ], + "source": [ + "# Scaling the original values\n", + "\n", + "y_train = scaler.inverse_transform(y_train)\n", + "y_test = scaler.inverse_transform(y_test)\n", + "\n", + "print(len(y_train), len(y_test))" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "u3LBj93coHEi", + "outputId": "d4fd49e8-8c6e-4bb0-8ef9-ca0b26d725b4" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1412 44\n" + ] + } + ], + "source": [ + "# Extract the timesteps for x-axis\n", + "\n", + "train_timestamps = energy[(energy.index < test_start_dt) & (energy.index >= train_start_dt)].index[timesteps-1:]\n", + "test_timestamps = energy[test_start_dt:].index[timesteps-1:]\n", + "\n", + "print(len(train_timestamps), len(test_timestamps))" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(25,6))\n", + "plt.plot(train_timestamps, y_train, color = 'red', linewidth=2.0, alpha = 0.6)\n", + "plt.plot(train_timestamps, y_train_pred, color = 'blue', linewidth=0.8)\n", + "plt.legend(['Actual','Predicted'])\n", + "plt.xlabel('Timestamp')\n", + "plt.title(\"Training data prediction\")\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "LnhzcnYtXHCm", + "outputId": "f5f0d711-f18b-4788-ad21-d4470ea2c02b" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "MAPE for training data: 1.7195710200875551 %\n" + ] + } + ], + "source": [ + "print('MAPE for training data: ', mape(y_train_pred, y_train)*100, '%')" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 225 + }, + "id": "53Q02FoqQH4V", + "outputId": "53e2d59b-5075-4765-ad9e-aed56c966583" + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(10,3))\n", + "plt.plot(test_timestamps, y_test, color = 'red', linewidth=2.0, alpha = 0.6)\n", + "plt.plot(test_timestamps, y_test_pred, color = 'blue', linewidth=0.8)\n", + "plt.legend(['Actual','Predicted'])\n", + "plt.xlabel('Timestamp')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "clOAUH-SXCJG", + "outputId": "a3aa85ff-126a-4a4a-cd9e-90b9cc465ef5" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "MAPE for testing data: 1.2623790187854018 %\n" + ] + } + ], + "source": [ + "print('MAPE for testing data: ', mape(y_test_pred, y_test)*100, '%')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "DHlKvVCId5ue" + }, + "source": [ + "## ಸಂಪೂರ್ಣ ಡೇಟಾಸೆಟ್ ಭವಿಷ್ಯವಾಣಿ\n" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "cOFJ45vreO0N", + "outputId": "35628e33-ecf9-4966-8036-f7ea86db6f16" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tensor shape: (26300, 5)\n", + "X shape: (26300, 4) \n", + "Y shape: (26300, 1)\n" + ] + } + ], + "source": [ + "# Extracting load values as numpy array\n", + "data = energy.copy().values\n", + "\n", + "# Scaling\n", + "data = scaler.transform(data)\n", + "\n", + "# Transforming to 2D tensor as per model input requirement\n", + "data_timesteps=np.array([[j for j in data[i:i+timesteps]] for i in range(0,len(data)-timesteps+1)])[:,:,0]\n", + "print(\"Tensor shape: \", data_timesteps.shape)\n", + "\n", + "# Selecting inputs and outputs from data\n", + "X, Y = data_timesteps[:,:timesteps-1],data_timesteps[:,[timesteps-1]]\n", + "print(\"X shape: \", X.shape,\"\\nY shape: \", Y.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "id": "ESSAdQgwexIi" + }, + "outputs": [], + "source": [ + "# Make model predictions\n", + "Y_pred = model.predict(X).reshape(-1,1)\n", + "\n", + "# Inverse scale and reshape\n", + "Y_pred = scaler.inverse_transform(Y_pred)\n", + "Y = scaler.inverse_transform(Y)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 328 + }, + "id": "M_qhihN0RVVX", + "outputId": "a89cb23e-1d35-437f-9d63-8b8907e12f80" + }, + "outputs": [ + { + "data": { + "image/png": "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/vvvj1/96ldYt25duq5TTjkFEydOBAAMHjwYRx55JA4//HCcfvrpWLp0KXr16oXnnnsOPXv2xJgxY7B+/XpccsklOProo3H00Ufjhx9+AABUV1fjzDPPxMEHH4zrr78eQgglv7WdkloIIYQQQgghhESX2lpg8mTghBMy2zZvDq8/hBBCCCGEEOXEYjF88803OPvsswEAkydPxsyZM9GjRw/06dMH22yzDSZMmICWlhYcf/zxOPPMMzFlyhTMmzcPs2fPRlVVFQ466CD88Y9/zKp3/fr1uOGGGzB69Gj06NEDNTU16NatG26++WZ06dIFd955JwDgyiuvxN/+9jeccMIJWL58Oc466yzMmTMH//73v3HCCSfggQcewNdff42+ffsq+b1UcBFCCCGEEEJIqfPMM0B1NfDxx2H3hBBCCCGEkJJG09TX6ebwtHnzZvTs2RNAwoPruuuuw9ixY3HMMcegR48eAIAhQ4Zg+vTp6fxadXV1WLBgAUaPHo3f/e53qKysxC677ILTTjstp/5x48bhpJNOStfVrVs3y3589913WTm76uvrsWnTJowePRqfJSNInHvuuejataun328HFVyEEEIIIYQQUupUV4fdA0IIIYQQQsoCRdH3PJHKwWVmyy23TH8WQuDFF1/EWWedlVVm0KBByvqh6zrGjRuHTp06KavTCebgIoQQQgghhBBCCCGEEEIIKWHOOussvPrqq2hrawMAzJ8/H42NjTjppJPw0UcfIR6PY82aNRgxYkTOsccddxxGjx6NJUuWAABqamoAAFtttRUaGhrS5c4880y8+OKL6e8ppdtJJ52EDz74AADwzTffoLa2VslvooKLEEIIIYQQQgghhBBCCCGkhLn++utx0EEH4cgjj8QhhxyCm266CbFYDBdddBH2228/HHTQQbj66qvxi1/8IufYHXbYAX369MHFF1+Mww8/HJdffjkA4De/+Q0GDBiAnj17YsyYMXjhhRcwceJEHHbYYTjooIPQq1cvAMCDDz6I0aNH4+CDD8Znn32GPfbYQ8lv0kQY/nKSHHXUUWLixIlhd4MQQgghhBBCipubbnLe37t3YfpBCCGEEEJIiTFnzhwceOCBYXejJLA6l5qmTRJCHGVVnh5chBBCCCGEEFLuRNjwkRBCCCGEEEKsoIKLEEIIIYQQQgghhBBCCCGEFBVUcBFCCCGE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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(30,8))\n", + "plt.plot(Y, color = 'red', linewidth=2.0, alpha = 0.6)\n", + "plt.plot(Y_pred, color = 'blue', linewidth=1)\n", + "plt.legend(['Actual','Predicted'])\n", + "plt.xlabel('Timestamp')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "AcN7pMYXVGTK", + "outputId": "7e1c2161-47ce-496c-9d86-7ad9ae0df770" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "MAPE: 2.0572089029888656 %\n" + ] + } + ], + "source": [ + "print('MAPE: ', mape(Y_pred, Y)*100, '%')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಪ್ರಮುಖ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "collapsed_sections": [], + "name": "Recurrent_Neural_Networks.ipynb", + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.1" + }, + "coopTranslator": { + "original_hash": "f8f3967282314d3995245835bdaa8418", + "translation_date": "2025-12-19T17:36:12+00:00", + "source_file": "7-TimeSeries/3-SVR/solution/notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} \ No newline at end of file diff --git a/translations/kn/7-TimeSeries/3-SVR/working/notebook.ipynb b/translations/kn/7-TimeSeries/3-SVR/working/notebook.ipynb new file mode 100644 index 000000000..4c787208e --- /dev/null +++ b/translations/kn/7-TimeSeries/3-SVR/working/notebook.ipynb @@ -0,0 +1,711 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "fv9OoQsMFk5A" + }, + "source": [ + "# ಸಪೋರ್ಟ್ ವೆಕ್ಟರ್ ರೆಗ್ರೆಸರ್ ಬಳಸಿ ಕಾಲ ಸರಣಿ ಭವಿಷ್ಯವಾಣಿ\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ಈ ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ, ನಾವು ಹೇಗೆ ಮಾಡುವುದು ಎಂದು ತೋರಿಸುತ್ತೇವೆ:\n", + "\n", + "- 2D ಕಾಲ ಸರಣಿ ಡೇಟಾವನ್ನು SVM ರೆಗ್ರೆಸರ್ ಮಾದರಿಗಾಗಿ ತರಬೇತಿಗೆ ಸಿದ್ಧಪಡಿಸುವುದು\n", + "- RBF ಕರ್ಣಲ್ ಬಳಸಿ SVR ಅನ್ನು ಜಾರಿಗೆ ತರುವುದು\n", + "- ಪ್ಲಾಟ್‌ಗಳು ಮತ್ತು MAPE ಬಳಸಿ ಮಾದರಿಯನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡುವುದು\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## ಮೋಡ್ಯೂಲ್‌ಗಳನ್ನು ಆಮದು ಮಾಡಿಕೊಳ್ಳುವುದು\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import sys\n", + "sys.path.append('../../')" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "id": "M687KNlQFp0-" + }, + "outputs": [], + "source": [ + "import os\n", + "import warnings\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import pandas as pd\n", + "import datetime as dt\n", + "import math\n", + "\n", + "from sklearn.svm import SVR\n", + "from sklearn.preprocessing import MinMaxScaler\n", + "from common.utils import load_data, mape" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Cj-kfVdMGjWP" + }, + "source": [ + "## ಡೇಟಾ ಸಿದ್ಧತೆ\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "8fywSjC6GsRz" + }, + "source": [ + "### ಡೇಟಾ ಲೋಡ್ ಮಾಡಿ\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 363 + }, + "id": "aBDkEB11Fumg", + "outputId": "99cf7987-0509-4b73-8cc2-75d7da0d2740" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
load
2012-01-01 00:00:002698.0
2012-01-01 01:00:002558.0
2012-01-01 02:00:002444.0
2012-01-01 03:00:002402.0
2012-01-01 04:00:002403.0
\n", + "
" + ], + "text/plain": [ + " load\n", + "2012-01-01 00:00:00 2698.0\n", + "2012-01-01 01:00:00 2558.0\n", + "2012-01-01 02:00:00 2444.0\n", + "2012-01-01 03:00:00 2402.0\n", + "2012-01-01 04:00:00 2403.0" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "energy = load_data('../../data')[['load']]\n", + "energy.head(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "O0BWP13rGnh4" + }, + "source": [ + "### ಡೇಟಾವನ್ನು ಚಿತ್ರಿಸಿ\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 486 + }, + "id": "hGaNPKu_Gidk", + "outputId": "7f89b326-9057-4f49-efbe-cb100ebdf76d" + }, + "outputs": [], + "source": [ + "energy.plot(y='load', subplots=True, figsize=(15, 8), fontsize=12)\n", + "plt.xlabel('timestamp', fontsize=12)\n", + "plt.ylabel('load', fontsize=12)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IPuNor4eGwYY" + }, + "source": [ + "### ತರಬೇತಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಡೇಟಾ ರಚಿಸಿ\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "ysvsNyONGt0Q" + }, + "outputs": [], + "source": [ + "train_start_dt = '2014-11-01 00:00:00'\n", + "test_start_dt = '2014-12-30 00:00:00'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 548 + }, + "id": "SsfdLoPyGy9w", + "outputId": "d6d6c25b-b1f4-47e5-91d1-707e043237d7" + }, + "outputs": [], + "source": [ + "energy[(energy.index < test_start_dt) & (energy.index >= train_start_dt)][['load']].rename(columns={'load':'train'}) \\\n", + " .join(energy[test_start_dt:][['load']].rename(columns={'load':'test'}), how='outer') \\\n", + " .plot(y=['train', 'test'], figsize=(15, 8), fontsize=12)\n", + "plt.xlabel('timestamp', fontsize=12)\n", + "plt.ylabel('load', fontsize=12)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "XbFTqBw6G1Ch" + }, + "source": [ + "### ತರಬೇತಿಗಾಗಿ ಡೇಟಾ ಸಿದ್ಧಪಡಿಸುವುದು\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ಈಗ, ನಿಮ್ಮ ಡೇಟಾವನ್ನು ತರಬೇತಿಗಾಗಿ ತಯಾರಿಸಲು ಫಿಲ್ಟರಿಂಗ್ ಮತ್ತು ಸ್ಕೇಲಿಂಗ್ ಮಾಡುವ ಅಗತ್ಯವಿದೆ.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "cYivRdQpHDj3", + "outputId": "a138f746-461c-4fd6-bfa6-0cee094c4aa1" + }, + "outputs": [], + "source": [ + "train = energy.copy()[(energy.index >= train_start_dt) & (energy.index < test_start_dt)][['load']]\n", + "test = energy.copy()[energy.index >= test_start_dt][['load']]\n", + "\n", + "print('Training data shape: ', train.shape)\n", + "print('Test data shape: ', test.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ಡೇಟಾವನ್ನು (0, 1) ಶ್ರೇಣಿಯಲ್ಲಿ ಮಾಪಿಸಿ.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 363 + }, + "id": "3DNntGQnZX8G", + "outputId": "210046bc-7a66-4ccd-d70d-aa4a7309949c" + }, + "outputs": [], + "source": [ + "scaler = MinMaxScaler()\n", + "train['load'] = scaler.fit_transform(train)\n", + "train.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 206 + }, + "id": "26Yht-rzZexe", + "outputId": "20326077-a38a-4e78-cc5b-6fd7af95d301" + }, + "outputs": [], + "source": [ + "test['load'] = scaler.transform(test)\n", + "test.head(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "x0n6jqxOQ41Z" + }, + "source": [ + "### ಕಾಲಚರಣಗಳೊಂದಿಗೆ ಡೇಟಾ ರಚನೆ\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "fdmxTZtOQ8xs" + }, + "source": [ + "ನಮ್ಮ SVR ಗಾಗಿ, ನಾವು ಇನ್‌ಪುಟ್ ಡೇಟಾವನ್ನು `[batch, timesteps]` ರೂಪಕ್ಕೆ ಪರಿವರ್ತಿಸುತ್ತೇವೆ. ಆದ್ದರಿಂದ, ನಾವು ಇತ್ತೀಚಿನ `train_data` ಮತ್ತು `test_data` ಅನ್ನು ಪುನರ್‌ರೂಪಗೊಳಿಸುತ್ತೇವೆ ಹಾಗಾಗಿ ಒಂದು ಹೊಸ ಆಯಾಮವು timesteps ಅನ್ನು ಸೂಚಿಸುತ್ತದೆ. ನಮ್ಮ ಉದಾಹರಣೆಗೆ, ನಾವು `timesteps = 5` ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತೇವೆ. ಆದ್ದರಿಂದ, ಮಾದರಿಯ ಇನ್‌ಪುಟ್‌ಗಳು ಮೊದಲ 4 timesteps ಗಾಗಿ ಡೇಟಾಗಳಾಗಿದ್ದು, ಔಟ್‌ಪುಟ್ 5ನೇ timestep ಗಾಗಿ ಡೇಟಾಗಿರುತ್ತದೆ.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "Rpju-Sc2HFm0" + }, + "outputs": [], + "source": [ + "# Converting to numpy arrays\n", + "\n", + "train_data = train.values\n", + "test_data = test.values" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Selecting the timesteps\n", + "\n", + "timesteps=None" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "O-JrsrsVJhUQ", + "outputId": "c90dbe71-bacc-4ec4-b452-f82fe5aefaef" + }, + "outputs": [], + "source": [ + "# Converting data to 2D tensor\n", + "\n", + "train_data_timesteps=None" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "exJD8AI7KE4g", + "outputId": "ce90260c-f327-427d-80f2-77307b5a6318" + }, + "outputs": [], + "source": [ + "# Converting test data to 2D tensor\n", + "\n", + "test_data_timesteps=None" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "2u0R2sIsLuq5" + }, + "outputs": [], + "source": [ + "x_train, y_train = None\n", + "x_test, y_test = None\n", + "\n", + "print(x_train.shape, y_train.shape)\n", + "print(x_test.shape, y_test.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "8wIPOtAGLZlh" + }, + "source": [ + "## SVR ಮಾದರಿ ರಚನೆ ಮಾಡುವುದು\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "EhA403BEPEiD" + }, + "outputs": [], + "source": [ + "# Create model using RBF kernel\n", + "\n", + "model = None" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "GS0UA3csMbqp", + "outputId": "d86b6f05-5742-4c1d-c2db-c40510bd4f0d" + }, + "outputs": [], + "source": [ + "# Fit model on training data" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Rz_x8S3UrlcF" + }, + "source": [ + "### ಮಾದರಿ ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿ\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "XR0gnt3MnuYS", + "outputId": "157e40ab-9a23-4b66-a885-0d52a24b2364" + }, + "outputs": [], + "source": [ + "# Making predictions\n", + "\n", + "y_train_pred = None\n", + "y_test_pred = None" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "_2epncg-SGzr" + }, + "source": [ + "## ಮಾದರಿ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ವಿಶ್ಲೇಷಣೆ ಮಾಡುವುದು\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Scaling the predictions\n", + "\n", + "y_train_pred = scaler.inverse_transform(y_train_pred)\n", + "y_test_pred = scaler.inverse_transform(y_test_pred)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "xmm_YLXhq7gV", + "outputId": "18392f64-4029-49ac-c71a-a4e2411152a1" + }, + "outputs": [], + "source": [ + "# Scaling the original values\n", + "\n", + "y_train = scaler.inverse_transform(y_train)\n", + "y_test = scaler.inverse_transform(y_test)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "u3LBj93coHEi", + "outputId": "d4fd49e8-8c6e-4bb0-8ef9-ca0b26d725b4" + }, + "outputs": [], + "source": [ + "# Extract the timesteps for x-axis\n", + "\n", + "train_timestamps = None\n", + "test_timestamps = None" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.figure(figsize=(25,6))\n", + "# plot original output\n", + "# plot predicted output\n", + "plt.legend(['Actual','Predicted'])\n", + "plt.xlabel('Timestamp')\n", + "plt.title(\"Training data prediction\")\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "LnhzcnYtXHCm", + "outputId": "f5f0d711-f18b-4788-ad21-d4470ea2c02b" + }, + "outputs": [], + "source": [ + "print('MAPE for training data: ', mape(y_train_pred, y_train)*100, '%')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 225 + }, + "id": "53Q02FoqQH4V", + "outputId": "53e2d59b-5075-4765-ad9e-aed56c966583" + }, + "outputs": [], + "source": [ + "plt.figure(figsize=(10,3))\n", + "# plot original output\n", + "# plot predicted output\n", + "plt.legend(['Actual','Predicted'])\n", + "plt.xlabel('Timestamp')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "clOAUH-SXCJG", + "outputId": "a3aa85ff-126a-4a4a-cd9e-90b9cc465ef5" + }, + "outputs": [], + "source": [ + "print('MAPE for testing data: ', mape(y_test_pred, y_test)*100, '%')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "DHlKvVCId5ue" + }, + "source": [ + "## ಸಂಪೂರ್ಣ ಡೇಟಾಸೆಟ್ ಭವಿಷ್ಯವಾಣಿ\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "cOFJ45vreO0N", + "outputId": "35628e33-ecf9-4966-8036-f7ea86db6f16" + }, + "outputs": [], + "source": [ + "# Extracting load values as numpy array\n", + "data = None\n", + "\n", + "# Scaling\n", + "data = None\n", + "\n", + "# Transforming to 2D tensor as per model input requirement\n", + "data_timesteps=None\n", + "\n", + "# Selecting inputs and outputs from data\n", + "X, Y = None, None" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "ESSAdQgwexIi" + }, + "outputs": [], + "source": [ + "# Make model predictions\n", + "\n", + "# Inverse scale and reshape\n", + "Y_pred = None\n", + "Y = None" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 328 + }, + "id": "M_qhihN0RVVX", + "outputId": "a89cb23e-1d35-437f-9d63-8b8907e12f80" + }, + "outputs": [], + "source": [ + "plt.figure(figsize=(30,8))\n", + "# plot original output\n", + "# plot predicted output\n", + "plt.legend(['Actual','Predicted'])\n", + "plt.xlabel('Timestamp')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "AcN7pMYXVGTK", + "outputId": "7e1c2161-47ce-496c-9d86-7ad9ae0df770" + }, + "outputs": [], + "source": [ + "print('MAPE: ', mape(Y_pred, Y)*100, '%')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ತಪ್ಪುಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "collapsed_sections": [], + "name": "Recurrent_Neural_Networks.ipynb", + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.1" + }, + "coopTranslator": { + "original_hash": "e86ce102239a14c44585623b9b924a74", + "translation_date": "2025-12-19T17:34:36+00:00", + "source_file": "7-TimeSeries/3-SVR/working/notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} \ No newline at end of file diff --git a/translations/kn/7-TimeSeries/README.md b/translations/kn/7-TimeSeries/README.md new file mode 100644 index 000000000..ec75649f8 --- /dev/null +++ b/translations/kn/7-TimeSeries/README.md @@ -0,0 +1,39 @@ + +# ಕಾಲ ಸರಣಿಯ ಭವಿಷ್ಯವಾಣಿ ಪರಿಚಯ + +ಕಾಲ ಸರಣಿಯ ಭವಿಷ್ಯವಾಣಿ ಎಂದರೆ ಏನು? ಇದು ಭೂತಕಾಲದ ಪ್ರವೃತ್ತಿಗಳನ್ನು ವಿಶ್ಲೇಷಿಸಿ ಭವಿಷ್ಯದ ಘಟನೆಗಳನ್ನು ಊಹಿಸುವುದಾಗಿದೆ. + +## ಪ್ರಾದೇಶಿಕ ವಿಷಯ: ವಿಶ್ವದ ವಿದ್ಯುತ್ ಬಳಕೆ ✨ + +ಈ ಎರಡು ಪಾಠಗಳಲ್ಲಿ, ನೀವು ಕಾಲ ಸರಣಿಯ ಭವಿಷ್ಯವಾಣಿಗೆ ಪರಿಚಿತರಾಗುತ್ತೀರಿ, ಇದು ಯಂತ್ರ ಅಧ್ಯಯನದ ಒಂದು ಸ್ವಲ್ಪ ಕಡಿಮೆ ಪರಿಚಿತ ಕ್ಷೇತ್ರವಾಗಿದ್ದು, ಕೈಗಾರಿಕೆ ಮತ್ತು ವ್ಯವಹಾರ ಅನ್ವಯಿಕೆಗಳ ಸೇರಿದಂತೆ ಇತರ ಕ್ಷೇತ್ರಗಳಲ್ಲಿ ಅತ್ಯಂತ ಮೌಲ್ಯವಂತವಾಗಿದೆ. ನ್ಯೂರಲ್ ನೆಟ್‌ವರ್ಕ್‌ಗಳನ್ನು ಈ ಮಾದರಿಗಳ ಉಪಯುಕ್ತತೆಯನ್ನು ಹೆಚ್ಚಿಸಲು ಬಳಸಬಹುದು, ಆದರೆ ನಾವು ಇವುಗಳನ್ನು ಶ್ರೇಣೀಕೃತ ಯಂತ್ರ ಅಧ್ಯಯನದ ಸಂದರ್ಭದಲ್ಲಿ ಅಧ್ಯಯನ ಮಾಡುತ್ತೇವೆ ಏಕೆಂದರೆ ಮಾದರಿಗಳು ಭೂತಕಾಲದ ಆಧಾರದ ಮೇಲೆ ಭವಿಷ್ಯದ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಊಹಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತವೆ. + +ನಮ್ಮ ಪ್ರಾದೇಶಿಕ ಗಮನವು ವಿಶ್ವದ ವಿದ್ಯುತ್ ಬಳಕೆಯ ಮೇಲೆ ಇದೆ, ಇದು ಭೂತಕಾಲದ ಲೋಡ್ ಮಾದರಿಗಳ ಆಧಾರದ ಮೇಲೆ ಭವಿಷ್ಯದ ವಿದ್ಯುತ್ ಬಳಕೆಯನ್ನು ಊಹಿಸುವುದನ್ನು ಕಲಿಯಲು ಆಸಕ್ತಿದಾಯಕ ಡೇಟಾಸೆಟ್ ಆಗಿದೆ. ಈ ರೀತಿಯ ಭವಿಷ್ಯವಾಣಿ ವ್ಯವಹಾರ ಪರಿಸರದಲ್ಲಿ ಅತ್ಯಂತ ಸಹಾಯಕವಾಗಬಹುದು ಎಂದು ನೀವು ನೋಡಬಹುದು. + +![electric grid](../../../translated_images/electric-grid.0c21d5214db09ffae93c06a87ca2abbb9ba7475ef815129c5b423d7f9a7cf136.kn.jpg) + +ರಾಜಸ್ಥಾನದಲ್ಲಿ ರಸ್ತೆಯ ಮೇಲೆ ವಿದ್ಯುತ್ ಕಂಬಗಳ ಫೋಟೋವನ್ನು [Peddi Sai hrithik](https://unsplash.com/@shutter_log?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) ಅವರು [Unsplash](https://unsplash.com/s/photos/electric-india?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) ನಲ್ಲಿ ತೆಗೆದಿದ್ದಾರೆ + +## ಪಾಠಗಳು + +1. [ಕಾಲ ಸರಣಿಯ ಭವಿಷ್ಯವಾಣಿಗೆ ಪರಿಚಯ](1-Introduction/README.md) +2. [ARIMA ಕಾಲ ಸರಣಿ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸುವುದು](2-ARIMA/README.md) +3. [ಕಾಲ ಸರಣಿ ಭವಿಷ್ಯವಾಣಿಗೆ Support Vector Regressor ನಿರ್ಮಿಸುವುದು](3-SVR/README.md) + +## ಕ್ರೆಡಿಟ್ಸ್ + +"ಕಾಲ ಸರಣಿಯ ಭವಿಷ್ಯವಾಣಿ ಪರಿಚಯ" ಅನ್ನು ⚡️ [Francesca Lazzeri](https://twitter.com/frlazzeri) ಮತ್ತು [Jen Looper](https://twitter.com/jenlooper) ರವರು ಬರೆಯಲಾಗಿದೆ. ಈ ನೋಟ್ಬುಕ್‌ಗಳು ಮೊದಲು ಆನ್ಲೈನ್‌ನಲ್ಲಿ [Azure "Deep Learning For Time Series" ರೆಪೊ](https://github.com/Azure/DeepLearningForTimeSeriesForecasting) ನಲ್ಲಿ ಪ್ರಕಟವಾಗಿದ್ದು, ಮೂಲತಃ Francesca Lazzeri ಅವರು ಬರೆದಿದ್ದಾರೆ. SVR ಪಾಠವನ್ನು [Anirban Mukherjee](https://github.com/AnirbanMukherjeeXD) ಅವರು ಬರೆದಿದ್ದಾರೆ. + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವಾಗಿ ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/8-Reinforcement/1-QLearning/README.md b/translations/kn/8-Reinforcement/1-QLearning/README.md new file mode 100644 index 000000000..5ce5c1a96 --- /dev/null +++ b/translations/kn/8-Reinforcement/1-QLearning/README.md @@ -0,0 +1,336 @@ + +# ಬಲವರ್ಧಿತ ಅಧ್ಯಯನ ಮತ್ತು ಕ್ಯೂ-ಅಧ್ಯಯನಕ್ಕೆ ಪರಿಚಯ + +![ಯಂತ್ರ ಅಧ್ಯಯನದಲ್ಲಿ ಬಲವರ್ಧನೆಯ ಸಾರಾಂಶವನ್ನು ಸ್ಕೆಚ್‌ನೋಟ್‌ನಲ್ಲಿ](../../../../translated_images/ml-reinforcement.94024374d63348dbb3571c343ca7ddabef72adac0b8086d47164b769ba3a8a1d.kn.png) +> ಸ್ಕೆಚ್‌ನೋಟ್: [ಟೊಮೊಮಿ ಇಮುರಾ](https://www.twitter.com/girlie_mac) + +ಬಲವರ್ಧಿತ ಅಧ್ಯಯನವು ಮೂರು ಪ್ರಮುಖ ಕಲ್ಪನೆಗಳನ್ನು ಒಳಗೊಂಡಿದೆ: ಏಜೆಂಟ್, ಕೆಲವು ಸ್ಥಿತಿಗಳು ಮತ್ತು ಪ್ರತಿ ಸ್ಥಿತಿಗೆ ಕ್ರಿಯೆಗಳ ಒಂದು ಸೆಟ್. ನಿರ್ದಿಷ್ಟ ಸ್ಥಿತಿಯಲ್ಲಿ ಕ್ರಿಯೆಯನ್ನು ನಿರ್ವಹಿಸುವ ಮೂಲಕ, ಏಜೆಂಟ್‌ಗೆ ಬಹುಮಾನ ನೀಡಲಾಗುತ್ತದೆ. ಮತ್ತೆ ಕಂಪ್ಯೂಟರ್ ಆಟ ಸೂಪರ್ ಮಾರಿಯೋವನ್ನು ಕಲ್ಪಿಸಿ. ನೀವು ಮಾರಿಯೋ, ನೀವು ಆಟದ ಮಟ್ಟದಲ್ಲಿ ಇದ್ದೀರಿ, ಒಂದು ಹಿಮ್ಮುಖದ ಬದಿಯ ಬಳಿ ನಿಂತಿದ್ದೀರಿ. ನಿಮ್ಮ ಮೇಲಿರುವುದು ನಾಣ್ಯ. ನೀವು ಮಾರಿಯೋ ಆಗಿದ್ದೀರಿ, ಆಟದ ಮಟ್ಟದಲ್ಲಿ, ನಿರ್ದಿಷ್ಟ ಸ್ಥಾನದಲ್ಲಿ ... ಅದು ನಿಮ್ಮ ಸ್ಥಿತಿ. ಬಲಕ್ಕೆ ಒಂದು ಹೆಜ್ಜೆ ಸಾಗುವುದು (ಒಂದು ಕ್ರಿಯೆ) ನಿಮ್ಮನ್ನು ಬದಿಯ ಮೇಲೆ ಕಳುಹಿಸುತ್ತದೆ, ಮತ್ತು ಅದರಿಂದ ನಿಮಗೆ ಕಡಿಮೆ ಸಂಖ್ಯಾತ್ಮಕ ಅಂಕ ಸಿಗುತ್ತದೆ. ಆದರೆ, ಜಂಪ್ ಬಟನ್ ಒತ್ತಿದರೆ ನೀವು ಒಂದು ಅಂಕ ಪಡೆಯುತ್ತೀರಿ ಮತ್ತು ಜೀವಂತವಾಗಿರುತ್ತೀರಿ. ಅದು ಧನಾತ್ಮಕ ಫಲಿತಾಂಶ ಮತ್ತು ಅದಕ್ಕೆ ಧನಾತ್ಮಕ ಸಂಖ್ಯಾತ್ಮಕ ಅಂಕ ನೀಡಬೇಕು. + +ಬಲವರ್ಧಿತ ಅಧ್ಯಯನ ಮತ್ತು ಸಿಮ್ಯುಲೇಟರ್ (ಆಟ) ಬಳಸಿ, ನೀವು ಆಟವನ್ನು ಹೇಗೆ ಆಡಬೇಕು ಎಂದು ಕಲಿಯಬಹುದು, ಬಹುಮಾನವನ್ನು ಗರಿಷ್ಠಗೊಳಿಸುವುದು ಎಂದರೆ ಜೀವಂತವಾಗಿದ್ದು ಸಾಧ್ಯವಾದಷ್ಟು ಅಂಕಗಳನ್ನು ಪಡೆಯುವುದು. + +[![ಬಲವರ್ಧಿತ ಅಧ್ಯಯನಕ್ಕೆ ಪರಿಚಯ](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) + +> 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ ಡ್ಮಿಟ್ರಿ ಬಲವರ್ಧಿತ ಅಧ್ಯಯನವನ್ನು ಚರ್ಚಿಸುವುದನ್ನು ಕೇಳಿ + +## [ಪೂರ್ವ-ವ್ಯಾಖ್ಯಾನ ಪ್ರಶ್ನೋತ್ತರ](https://ff-quizzes.netlify.app/en/ml/) + +## ಪೂರ್ವಾಪೇಕ್ಷೆಗಳು ಮತ್ತು ಸೆಟಪ್ + +ಈ ಪಾಠದಲ್ಲಿ, ನಾವು ಪೈಥಾನ್‌ನಲ್ಲಿ ಕೆಲವು ಕೋಡ್‌ಗಳೊಂದಿಗೆ ಪ್ರಯೋಗ ಮಾಡಲಿದ್ದೇವೆ. ನೀವು ಈ ಪಾಠದ ಜುಪಿಟರ್ ನೋಟ್ಬುಕ್ ಕೋಡ್ ಅನ್ನು ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್‌ನಲ್ಲಿ ಅಥವಾ ಕ್ಲೌಡ್‌ನಲ್ಲಿ ಎಲ್ಲಿ ಬೇಕಾದರೂ ಚಾಲನೆ ಮಾಡಬಲ್ಲಿರಿ. + +ನೀವು [ಪಾಠ ನೋಟ್ಬುಕ್](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) ತೆರೆಯಬಹುದು ಮತ್ತು ಈ ಪಾಠವನ್ನು ಅನುಸರಿಸಬಹುದು. + +> **ಗಮನಿಸಿ:** ನೀವು ಈ ಕೋಡ್ ಅನ್ನು ಕ್ಲೌಡ್‌ನಿಂದ ತೆರೆಯುತ್ತಿದ್ದರೆ, ನೀವು [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) ಫೈಲ್ ಅನ್ನು ಕೂಡ ಪಡೆಯಬೇಕು, ಇದು ನೋಟ್ಬುಕ್ ಕೋಡ್‌ನಲ್ಲಿ ಬಳಸಲಾಗುತ್ತದೆ. ಅದನ್ನು ನೋಟ್ಬುಕ್ ಇರುವ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ ಸೇರಿಸಿ. + +## ಪರಿಚಯ + +ಈ ಪಾಠದಲ್ಲಿ, ನಾವು ರಷ್ಯನ್ ಸಂಗೀತ ರಚಯಿತೃ [ಸೆರ್ಗೇ ಪ್ರೊಕೊಫಿಯೆವ್](https://en.wikipedia.org/wiki/Sergei_Prokofiev) ಅವರ ಸಂಗೀತ ಕಥೆಯ ಪ್ರೇರಣೆಯಿಂದ **[ಪೀಟರ್ ಮತ್ತು ವೋಲ್ಫ್](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)** ಜಗತ್ತನ್ನು ಅನ್ವೇಷಿಸುವೆವು. ನಾವು **ಬಲವರ್ಧಿತ ಅಧ್ಯಯನ** ಬಳಸಿ ಪೀಟರ್ ತನ್ನ ಪರಿಸರವನ್ನು ಅನ್ವೇಷಿಸಿ, ರುಚಿಕರ ಆಪಲ್ಗಳನ್ನು ಸಂಗ್ರಹಿಸಿ ಮತ್ತು ನರಿ ಭೇಟಿಯಾಗುವುದನ್ನು ತಪ್ಪಿಸುವಂತೆ ಮಾಡುತ್ತೇವೆ. + +**ಬಲವರ್ಧಿತ ಅಧ್ಯಯನ** (RL) ಒಂದು ಅಧ್ಯಯನ ತಂತ್ರಜ್ಞಾನ, ಇದು ನಮಗೆ ಒಂದು **ಪರಿಸರ**ದಲ್ಲಿ **ಏಜೆಂಟ್**ನ ಅತ್ಯುತ್ತಮ ವರ್ತನೆಯನ್ನು ಅನೇಕ ಪ್ರಯೋಗಗಳನ್ನು ನಡೆಸಿ ಕಲಿಯಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಈ ಪರಿಸರದಲ್ಲಿ ಏಜೆಂಟ್‌ಗೆ ಕೆಲವು **ಗುರಿ** ಇರಬೇಕು, ಅದು **ಬಹುಮಾನ ಕಾರ್ಯ** ಮೂಲಕ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗುತ್ತದೆ. + +## ಪರಿಸರ + +ಸರಳತೆಗೆ, ಪೀಟರ್‌ನ ಜಗತ್ತನ್ನು `width` x `height` ಗಾತ್ರದ ಚದರ ಫಲಕ ಎಂದು ಪರಿಗಣಿಸೋಣ, ಹೀಗೆ: + +![ಪೀಟರ್‌ನ ಪರಿಸರ](../../../../translated_images/environment.40ba3cb66256c93fa7e92f6f7214e1d1f588aafa97d266c11d108c5c5d101b6c.kn.png) + +ಈ ಫಲಕದ ಪ್ರತಿ ಸೆಲ್ ಇವುಗಳಲ್ಲಿ ಒಂದಾಗಿರಬಹುದು: + +* **ಭೂಮಿ**, ಇದರಲ್ಲಿ ಪೀಟರ್ ಮತ್ತು ಇತರ ಜೀವಿಗಳು ನಡೆಯಬಹುದು. +* **ನೀರು**, ಇದರಲ್ಲಿ ನೀವು ಸ್ಪಷ್ಟವಾಗಿ ನಡೆಯಲು ಸಾಧ್ಯವಿಲ್ಲ. +* **ಮರ** ಅಥವಾ **ಹುಲ್ಲು**, ವಿಶ್ರಾಂತಿ ಪಡೆಯಲು ಸ್ಥಳ. +* **ಆಪಲ್**, ಇದು ಪೀಟರ್ ತನ್ನ ಆಹಾರಕ್ಕಾಗಿ ಹುಡುಕಲು ಇಚ್ಛಿಸುವ ವಸ್ತು. +* **ನರಿ**, ಇದು ಅಪಾಯಕಾರಿಯಾಗಿದ್ದು ತಪ್ಪಿಸಿಕೊಳ್ಳಬೇಕು. + +ಈ ಪರಿಸರದೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು Python ನಲ್ಲಿ ಪ್ರತ್ಯೇಕ ಮಾಯಾಜಾಲ [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) ಇದೆ. ಈ ಕೋಡ್ ನಮ್ಮ ಕಲ್ಪನೆಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಮುಖ್ಯವಲ್ಲದ ಕಾರಣ, ನಾವು ಈ ಮಾಯಾಜಾಲವನ್ನು ಆಮದುಮಾಡಿ ಮಾದರಿ ಫಲಕವನ್ನು ರಚಿಸಲು ಬಳಸುತ್ತೇವೆ (ಕೋಡ್ ಬ್ಲಾಕ್ 1): + +```python +from rlboard import * + +width, height = 8,8 +m = Board(width,height) +m.randomize(seed=13) +m.plot() +``` + +ಈ ಕೋಡ್ ಮೇಲಿನ ಪರಿಸರದ ಚಿತ್ರವನ್ನು ಮುದ್ರಣ ಮಾಡಬೇಕು. + +## ಕ್ರಿಯೆಗಳು ಮತ್ತು ನೀತಿ + +ನಮ್ಮ ಉದಾಹರಣೆಯಲ್ಲಿ, ಪೀಟರ್‌ನ ಗುರಿ ಆಪಲ್ ಹುಡುಕುವುದು, ನರಿ ಮತ್ತು ಇತರ ಅಡ್ಡಿ ಅಡ್ಡಿಗಳನ್ನು ತಪ್ಪಿಸುವುದು. ಇದಕ್ಕಾಗಿ, ಅವನು ಸುತ್ತಾಡಿ ಆಪಲ್ ಕಂಡುಹಿಡಿಯಬಹುದು. + +ಆದ್ದರಿಂದ, ಯಾವುದೇ ಸ್ಥಾನದಲ್ಲಿ ಅವನು ಕೆಳಗಿನ ಕ್ರಿಯೆಗಳೊಂದನ್ನು ಆಯ್ಕೆ ಮಾಡಬಹುದು: ಮೇಲಕ್ಕೆ, ಕೆಳಗೆ, ಎಡಕ್ಕೆ ಮತ್ತು ಬಲಕ್ಕೆ. + +ನಾವು ಆ ಕ್ರಿಯೆಗಳನ್ನು ಡಿಕ್ಷನರಿಯಾಗಿ ವ್ಯಾಖ್ಯಾನಿಸಿ, ಅವುಗಳನ್ನು ಸಂಬಂಧಿತ ಸಂಯೋಜನೆ ಬದಲಾವಣೆಗಳ ಜೋಡಿಗೆ ನಕ್ಷೆ ಮಾಡುತ್ತೇವೆ. ಉದಾಹರಣೆಗೆ, ಬಲಕ್ಕೆ ಸಾಗುವುದು (`R`) ಜೋಡಿ `(1,0)`ಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ. (ಕೋಡ್ ಬ್ಲಾಕ್ 2): + +```python +actions = { "U" : (0,-1), "D" : (0,1), "L" : (-1,0), "R" : (1,0) } +action_idx = { a : i for i,a in enumerate(actions.keys()) } +``` + +ಸಾರಾಂಶವಾಗಿ, ಈ ದೃಶ್ಯದ ತಂತ್ರ ಮತ್ತು ಗುರಿ ಹೀಗಿವೆ: + +- **ತಂತ್ರ**, ನಮ್ಮ ಏಜೆಂಟ್ (ಪೀಟರ್) ಗೆ ಸಂಬಂಧಿಸಿದಂತೆ, ಅದನ್ನು **ನೀತಿ** ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ನೀತಿ ಎಂದರೆ ಯಾವುದೇ ಸ್ಥಿತಿಯಲ್ಲಿ ಕ್ರಿಯೆಯನ್ನು ನೀಡುವ ಕಾರ್ಯ. ನಮ್ಮಲ್ಲಿ, ಸಮಸ್ಯೆಯ ಸ್ಥಿತಿ ಫಲಕದಿಂದ ಮತ್ತು ಆಟಗಾರನ ಪ್ರಸ್ತುತ ಸ್ಥಾನದಿಂದ ಪ್ರತಿನಿಧಿಸಲಾಗಿದೆ. + +- **ಗುರಿ**, ಬಲವರ್ಧಿತ ಅಧ್ಯಯನದ ಗುರಿ ಉತ್ತಮ ನೀತಿಯನ್ನು ಕಲಿಯುವುದು, ಇದು ಸಮಸ್ಯೆಯನ್ನು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಪರಿಹರಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಆದಾಗ್ಯೂ, ಮೂಲಭೂತವಾಗಿ, ನಾವು ಸರಳ ನೀತಿ ಎಂದರೆ **ಯಾದೃಚ್ಛಿಕ ನಡೆ** ಅನ್ನು ಪರಿಗಣಿಸೋಣ. + +## ಯಾದೃಚ್ಛಿಕ ನಡೆ + +ಮೊದಲು, ನಾವು ಯಾದೃಚ್ಛಿಕ ನಡೆ ತಂತ್ರವನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸಿ ನಮ್ಮ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸೋಣ. ಯಾದೃಚ್ಛಿಕ ನಡೆ ಮೂಲಕ, ನಾವು ಅನುಮತಿಸಲಾದ ಕ್ರಿಯೆಗಳಲ್ಲಿಂದ ಯಾದೃಚ್ಛಿಕವಾಗಿ ಮುಂದಿನ ಕ್ರಿಯೆಯನ್ನು ಆಯ್ಕೆ ಮಾಡುತ್ತೇವೆ, ಆಪಲ್ ತಲುಪುವವರೆಗೆ (ಕೋಡ್ ಬ್ಲಾಕ್ 3). + +1. ಕೆಳಗಿನ ಕೋಡ್ ಬಳಸಿ ಯಾದೃಚ್ಛಿಕ ನಡೆ ಅನುಷ್ಠಾನಗೊಳಿಸಿ: + + ```python + def random_policy(m): + return random.choice(list(actions)) + + def walk(m,policy,start_position=None): + n = 0 # ಹೆಜ್ಜೆಗಳ ಸಂಖ್ಯೆ + # ಪ್ರಾರಂಭಿಕ ಸ್ಥಾನವನ್ನು ಹೊಂದಿಸಿ + if start_position: + m.human = start_position + else: + m.random_start() + while True: + if m.at() == Board.Cell.apple: + return n # ಯಶಸ್ಸು! + if m.at() in [Board.Cell.wolf, Board.Cell.water]: + return -1 # ನರಿ ತಿಂದ ಅಥವಾ ಮುಳುಗಿದ + while True: + a = actions[policy(m)] + new_pos = m.move_pos(m.human,a) + if m.is_valid(new_pos) and m.at(new_pos)!=Board.Cell.water: + m.move(a) # ನಿಜವಾದ ಚಲನೆ ಮಾಡಿ + break + n+=1 + + walk(m,random_policy) + ``` + + `walk` ಕರೆ ಸಂಬಂಧಿತ ಮಾರ್ಗದ ಉದ್ದವನ್ನು ಹಿಂತಿರುಗಿಸಬೇಕು, ಇದು ಪ್ರತಿ ಓಟದಲ್ಲಿ ಬದಲಾಗಬಹುದು. + +1. ಯಾದೃಚ್ಛಿಕ ನಡೆ ಪ್ರಯೋಗವನ್ನು ಹಲವಾರು ಬಾರಿ (ಹೇಳಿ, 100) ನಡೆಸಿ, ಫಲಿತಾಂಶದ ಅಂಕಿಅಂಶಗಳನ್ನು ಮುದ್ರಿಸಿ (ಕೋಡ್ ಬ್ಲಾಕ್ 4): + + ```python + def print_statistics(policy): + s,w,n = 0,0,0 + for _ in range(100): + z = walk(m,policy) + if z<0: + w+=1 + else: + s += z + n += 1 + print(f"Average path length = {s/n}, eaten by wolf: {w} times") + + print_statistics(random_policy) + ``` + + ಗಮನಿಸಿ, ಮಾರ್ಗದ ಸರಾಸರಿ ಉದ್ದವು ಸುಮಾರು 30-40 ಹೆಜ್ಜೆಗಳಷ್ಟಿದೆ, ಇದು ಬಹಳಷ್ಟು, ಏಕೆಂದರೆ ಸಮೀಪದ ಆಪಲ್‌ಗೆ ಸರಾಸರಿ ದೂರವು ಸುಮಾರು 5-6 ಹೆಜ್ಜೆಗಳಷ್ಟಿದೆ. + + ನೀವು ಪೀಟರ್‌ನ ಚಲನವಲನವನ್ನು ಯಾದೃಚ್ಛಿಕ ನಡೆ ಸಮಯದಲ್ಲಿ ಹೇಗಿದೆ ಎಂದು ಕೂಡ ನೋಡಬಹುದು: + + ![ಪೀಟರ್‌ನ ಯಾದೃಚ್ಛಿಕ ನಡೆ](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) + +## ಬಹುಮಾನ ಕಾರ್ಯ + +ನಮ್ಮ ನೀತಿಯನ್ನು ಹೆಚ್ಚು ಬುದ್ಧಿವಂತಿಕೆಯಿಂದ ಮಾಡಲು, ಯಾವ ಚಲನೆಗಳು "ಮೇಲ್ಮಟ್ಟ" ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕು. ಇದಕ್ಕಾಗಿ, ನಾವು ನಮ್ಮ ಗುರಿಯನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಬೇಕು. + +ಗುರಿಯನ್ನು **ಬಹುಮಾನ ಕಾರ್ಯ** ಮೂಲಕ ವ್ಯಾಖ್ಯಾನಿಸಬಹುದು, ಇದು ಪ್ರತಿ ಸ್ಥಿತಿಗೆ ಕೆಲವು ಅಂಕ ಮೌಲ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ. ಸಂಖ್ಯೆ ಹೆಚ್ಚು ಇದ್ದರೆ, ಬಹುಮಾನ ಕಾರ್ಯ ಉತ್ತಮ. (ಕೋಡ್ ಬ್ಲಾಕ್ 5) + +```python +move_reward = -0.1 +goal_reward = 10 +end_reward = -10 + +def reward(m,pos=None): + pos = pos or m.human + if not m.is_valid(pos): + return end_reward + x = m.at(pos) + if x==Board.Cell.water or x == Board.Cell.wolf: + return end_reward + if x==Board.Cell.apple: + return goal_reward + return move_reward +``` + +ಬಹುಮಾನ ಕಾರ್ಯಗಳ ಬಗ್ಗೆ ಆಸಕ್ತಿದಾಯಕ ವಿಷಯವೆಂದರೆ, ಬಹುತೇಕ ಸಂದರ್ಭಗಳಲ್ಲಿ, *ನಾವು ಆಟದ ಕೊನೆಯಲ್ಲಿ ಮಾತ್ರ ಮಹತ್ವದ ಬಹುಮಾನವನ್ನು ಪಡೆಯುತ್ತೇವೆ*. ಇದರರ್ಥ ನಮ್ಮ ಅಲ್ಗೋರಿದಮ್ "ಚೆನ್ನಾದ" ಹೆಜ್ಜೆಗಳನ್ನು ನೆನಪಿಡಬೇಕು, ಅವು ಕೊನೆಯಲ್ಲಿ ಧನಾತ್ಮಕ ಬಹುಮಾನಕ್ಕೆ ಕಾರಣವಾಗುತ್ತವೆ ಮತ್ತು ಅವುಗಳ ಮಹತ್ವವನ್ನು ಹೆಚ್ಚಿಸಬೇಕು. ಹಾಗೆಯೇ, ಕೆಟ್ಟ ಫಲಿತಾಂಶಗಳಿಗೆ ಕಾರಣವಾಗುವ ಎಲ್ಲಾ ಚಲನೆಯನ್ನು ತಡೆಯಬೇಕು. + +## ಕ್ಯೂ-ಅಧ್ಯಯನ + +ನಾವು ಇಲ್ಲಿ ಚರ್ಚಿಸುವ ಅಲ್ಗೋರಿದಮ್ ಅನ್ನು **ಕ್ಯೂ-ಅಧ್ಯಯನ** ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಈ ಅಲ್ಗೋರಿದಮ್‌ನಲ್ಲಿ, ನೀತಿ ಒಂದು ಕಾರ್ಯ (ಅಥವಾ ಡೇಟಾ ರಚನೆ) ಮೂಲಕ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗುತ್ತದೆ, ಅದನ್ನು **ಕ್ಯೂ-ಟೇಬಲ್** ಎಂದು ಕರೆಯುತ್ತಾರೆ. ಇದು ನೀಡಲಾದ ಸ್ಥಿತಿಯಲ್ಲಿ ಪ್ರತಿ ಕ್ರಿಯೆಯ "ಚೆನ್ನಾಗಿರುವಿಕೆ" ಅನ್ನು ದಾಖಲಿಸುತ್ತದೆ. + +ಇದನ್ನು ಕ್ಯೂ-ಟೇಬಲ್ ಎಂದು ಕರೆಯುತ್ತಾರೆ ಏಕೆಂದರೆ ಅದನ್ನು ಟೇಬಲ್ ಅಥವಾ ಬಹು-ಮಾನದ ಅರೇ ಆಗಿ ಪ್ರತಿನಿಧಿಸುವುದು ಅನುಕೂಲಕರ. ನಮ್ಮ ಫಲಕವು `width` x `height` ಆಯಾಮಗಳಿದ್ದು, ನಾವು ಕ್ಯೂ-ಟೇಬಲ್ ಅನ್ನು numpy ಅರೇ ಆಗಿ `width` x `height` x `len(actions)` ಆಕಾರದಲ್ಲಿ ಪ್ರತಿನಿಧಿಸಬಹುದು: (ಕೋಡ್ ಬ್ಲಾಕ್ 6) + +```python +Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions) +``` + +ನಾವು ಕ್ಯೂ-ಟೇಬಲ್‌ನ ಎಲ್ಲಾ ಮೌಲ್ಯಗಳನ್ನು ಸಮಾನ ಮೌಲ್ಯದಿಂದ ಪ್ರಾರಂಭಿಸುತ್ತೇವೆ, ನಮ್ಮಲ್ಲಿ - 0.25. ಇದು "ಯಾದೃಚ್ಛಿಕ ನಡೆ" ನೀತಿಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ, ಏಕೆಂದರೆ ಪ್ರತಿ ಸ್ಥಿತಿಯಲ್ಲಿ ಎಲ್ಲಾ ಚಲನೆಗಳು ಸಮಾನವಾಗಿ ಉತ್ತಮ. ನಾವು `plot` ಕಾರ್ಯಕ್ಕೆ ಕ್ಯೂ-ಟೇಬಲ್ ಅನ್ನು ಪಾಸ್ ಮಾಡಿ ಫಲಕದಲ್ಲಿ ಟೇಬಲ್ ಅನ್ನು ದೃಶ್ಯೀಕರಿಸಬಹುದು: `m.plot(Q)`. + +![ಪೀಟರ್‌ನ ಪರಿಸರ](../../../../translated_images/env_init.04e8f26d2d60089e128f21d22e5fef57d580e559f0d5937b06c689e5e7cdd438.kn.png) + +ಪ್ರತಿ ಸೆಲ್‌ನ ಮಧ್ಯದಲ್ಲಿ ಚಲನೆಯ ಇಚ್ಛಿತ ದಿಕ್ಕನ್ನು ಸೂಚಿಸುವ "ಬಾಣ" ಇದೆ. ಎಲ್ಲಾ ದಿಕ್ಕುಗಳು ಸಮಾನವಾಗಿರುವುದರಿಂದ, ಬಿಂದು ಪ್ರದರ್ಶಿಸಲಾಗುತ್ತದೆ. + +ಈಗ ನಾವು ಸಿಮ್ಯುಲೇಶನ್ ನಡೆಸಿ, ನಮ್ಮ ಪರಿಸರವನ್ನು ಅನ್ವೇಷಿಸಿ, ಮತ್ತು ಕ್ಯೂ-ಟೇಬಲ್ ಮೌಲ್ಯಗಳ ಉತ್ತಮ ವಿತರಣೆ ಕಲಿಯಬೇಕು, ಇದು ಆಪಲ್‌ಗೆ ದಾರಿಯನ್ನು ಹೆಚ್ಚು ವೇಗವಾಗಿ ಕಂಡುಹಿಡಿಯಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. + +## ಕ್ಯೂ-ಅಧ್ಯಯನದ ಸಾರಾಂಶ: ಬೆಲ್ಮನ್ ಸಮೀಕರಣ + +ನಾವು ಚಲಿಸಲು ಪ್ರಾರಂಭಿಸಿದಾಗ, ಪ್ರತಿ ಕ್ರಿಯೆಗೆ ಸಂಬಂಧಿಸಿದ ಬಹುಮಾನ ಇರುತ್ತದೆ, ಅಂದರೆ ನಾವು ತಕ್ಷಣದ ಬಹುಮಾನ ಆಧರಿಸಿ ಮುಂದಿನ ಕ್ರಿಯೆಯನ್ನು ಆಯ್ಕೆ ಮಾಡಬಹುದು. ಆದರೆ, ಬಹುತೇಕ ಸ್ಥಿತಿಗಳಲ್ಲಿ, ಚಲನೆ ನಮ್ಮ ಗುರಿ ಆಪಲ್ ತಲುಪುವುದನ್ನು ಸಾಧಿಸುವುದಿಲ್ಲ, ಆದ್ದರಿಂದ ಯಾವ ದಿಕ್ಕು ಉತ್ತಮ ಎಂದು ತಕ್ಷಣ ನಿರ್ಧರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. + +> ತಕ್ಷಣದ ಫಲಿತಾಂಶವೇ ಮುಖ್ಯವಲ್ಲ, ಆದರೆ ಸಿಮ್ಯುಲೇಶನ್ ಕೊನೆಯಲ್ಲಿ ಪಡೆಯುವ ಅಂತಿಮ ಫಲಿತಾಂಶವೇ ಮುಖ್ಯ. + +ಈ ವಿಳಂಬಿತ ಬಹುಮಾನವನ್ನು ಪರಿಗಣಿಸಲು, ನಾವು **[ಡೈನಾಮಿಕ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್](https://en.wikipedia.org/wiki/Dynamic_programming)** ತತ್ವಗಳನ್ನು ಬಳಸಬೇಕು, ಇದು ನಮ್ಮ ಸಮಸ್ಯೆಯನ್ನು ಪುನರಾವರ್ತಿತವಾಗಿ ಯೋಚಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. + +ನಾವು ಈಗ ಸ್ಥಿತಿ *s* ನಲ್ಲಿ ಇದ್ದೇವೆಂದು ಕಲ್ಪಿಸೋಣ, ಮತ್ತು ಮುಂದಿನ ಸ್ಥಿತಿ *s'* ಗೆ ಸಾಗಲು ಬಯಸುತ್ತೇವೆ. ಇದರಿಂದ, ನಾವು ತಕ್ಷಣದ ಬಹುಮಾನ *r(s,a)* ಪಡೆಯುತ್ತೇವೆ, ಇದು ಬಹುಮಾನ ಕಾರ್ಯದಿಂದ ವ್ಯಾಖ್ಯಾನಿತ, ಜೊತೆಗೆ ಕೆಲವು ಭವಿಷ್ಯ ಬಹುಮಾನ. ನಮ್ಮ ಕ್ಯೂ-ಟೇಬಲ್ ಪ್ರತಿ ಕ್ರಿಯೆಯ "ಆಕರ್ಷಕತೆ" ಅನ್ನು ಸರಿಯಾಗಿ ಪ್ರತಿಬಿಂಬಿಸುವುದಾಗಿ ಊಹಿಸಿದರೆ, ಸ್ಥಿತಿ *s'* ನಲ್ಲಿ ನಾವು ಕ್ರಿಯೆ *a'* ಆಯ್ಕೆಮಾಡುತ್ತೇವೆ, ಅದು ಗರಿಷ್ಠ ಮೌಲ್ಯದ *Q(s',a')* ಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ. ಆದ್ದರಿಂದ, ಸ್ಥಿತಿ *s* ನಲ್ಲಿ ನಾವು ಪಡೆಯಬಹುದಾದ ಅತ್ಯುತ್ತಮ ಭವಿಷ್ಯ ಬಹುಮಾನವನ್ನು `max`a'*Q(s',a')* ಎಂದು ವ್ಯಾಖ್ಯಾನಿಸಬಹುದು (ಇಲ್ಲಿ ಗರಿಷ್ಠವು ಎಲ್ಲಾ ಸಾಧ್ಯ ಕ್ರಿಯೆಗಳ ಮೇಲೆ ಲೆಕ್ಕಿಸಲಾಗುತ್ತದೆ). + +ಇದು ಸ್ಥಿತಿ *s* ನಲ್ಲಿ ಕ್ರಿಯೆ *a* ಗೆ ಕ್ಯೂ-ಟೇಬಲ್ ಮೌಲ್ಯವನ್ನು ಲೆಕ್ಕಿಸುವ **ಬೆಲ್ಮನ್ ಸೂತ್ರ** ನೀಡುತ್ತದೆ: + + + +ಇಲ್ಲಿ γ ಅನ್ನು **ಡಿಸ್ಕೌಂಟ್ ಫ್ಯಾಕ್ಟರ್** ಎಂದು ಕರೆಯುತ್ತಾರೆ, ಇದು ನೀವು ಪ್ರಸ್ತುತ ಬಹುಮಾನವನ್ನು ಭವಿಷ್ಯ ಬಹುಮಾನಕ್ಕಿಂತ ಎಷ್ಟು ಪ್ರಾಧಾನ್ಯತೆ ನೀಡಬೇಕು ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸುತ್ತದೆ. + +## ಅಧ್ಯಯನ ಅಲ್ಗೋರಿದಮ್ + +ಮೇಲಿನ ಸಮೀಕರಣವನ್ನು ಆಧರಿಸಿ, ನಾವು ಈಗ ನಮ್ಮ ಅಧ್ಯಯನ ಅಲ್ಗೋರಿದಮ್‌ಗೆ ಪ್ಸ್ಯೂಡೋ-ಕೋಡ್ ಬರೆಯಬಹುದು: + +* ಎಲ್ಲಾ ಸ್ಥಿತಿಗಳು ಮತ್ತು ಕ್ರಿಯೆಗಳಿಗಾಗಿ ಸಮಾನ ಸಂಖ್ಯೆಗಳೊಂದಿಗೆ ಕ್ಯೂ-ಟೇಬಲ್ Q ಅನ್ನು ಪ್ರಾರಂಭಿಸಿ +* ಅಧ್ಯಯನ ದರ α ← 1 ಸೆಟ್ ಮಾಡಿ +* ಅನೇಕ ಬಾರಿ ಸಿಮ್ಯುಲೇಶನ್ ಪುನರಾವರ್ತಿಸಿ + 1. ಯಾದೃಚ್ಛಿಕ ಸ್ಥಾನದಿಂದ ಪ್ರಾರಂಭಿಸಿ + 1. ಪುನರಾವರ್ತಿಸಿ + 1. ಸ್ಥಿತಿ *s* ನಲ್ಲಿ ಕ್ರಿಯೆ *a* ಆಯ್ಕೆಮಾಡಿ + 2. ಕ್ರಿಯೆಯನ್ನು ನಿರ್ವಹಿಸಿ ಮತ್ತು ಹೊಸ ಸ್ಥಿತಿ *s'* ಗೆ ಸಾಗಿರಿ + 3. ಆಟದ ಅಂತ್ಯ ಅಥವಾ ಒಟ್ಟು ಬಹುಮಾನ ತುಂಬಾ ಕಡಿಮೆ ಇದ್ದರೆ ಸಿಮ್ಯುಲೇಶನ್ ನಿಲ್ಲಿಸಿ + 4. ಹೊಸ ಸ್ಥಿತಿಯಲ್ಲಿ ಬಹುಮಾನ *r* ಲೆಕ್ಕಿಸಿ + 5. ಬೆಲ್ಮನ್ ಸಮೀಕರಣದ ಪ್ರಕಾರ ಕ್ಯೂ-ಕಾರ್ಯವನ್ನು ನವೀಕರಿಸಿ: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))* + 6. *s* ← *s'* + 7. ಒಟ್ಟು ಬಹುಮಾನವನ್ನು ನವೀಕರಿಸಿ ಮತ್ತು α ಅನ್ನು ಕಡಿಮೆ ಮಾಡಿ. + +## ಅನ್ವೇಷಣೆ ಮತ್ತು ಉಪಯೋಗ + +ಮೇಲಿನ ಅಲ್ಗೋರಿದಮ್‌ನಲ್ಲಿ, ನಾವು 2.1 ಹಂತದಲ್ಲಿ ಕ್ರಿಯೆಯನ್ನು ಹೇಗೆ ಆಯ್ಕೆ ಮಾಡಬೇಕು ಎಂದು ಸ್ಪಷ್ಟಪಡಿಸಿಲ್ಲ. ನಾವು ಕ್ರಿಯೆಯನ್ನು ಯಾದೃಚ್ಛಿಕವಾಗಿ ಆಯ್ಕೆ ಮಾಡಿದರೆ, ನಾವು ಪರಿಸರವನ್ನು ಯಾದೃಚ್ಛಿಕವಾಗಿ **ಅನ್ವೇಷಿಸುತ್ತೇವೆ**, ಮತ್ತು ನಾವು ಬಹುಶಃ ಹೆಚ್ಚು ಸಾರಿ ಸಾಯಬಹುದು ಮತ್ತು ಸಾಮಾನ್ಯವಾಗಿ ಹೋಗದ ಪ್ರದೇಶಗಳನ್ನು ಅನ್ವೇಷಿಸಬಹುದು. ಪರ್ಯಾಯವಾಗಿ, ನಾವು ಈಗಾಗಲೇ ತಿಳಿದಿರುವ ಕ್ಯೂ-ಟೇಬಲ್ ಮೌಲ್ಯಗಳನ್ನು **ಉಪಯೋಗಿಸಿ**, ಸ್ಥಿತಿ *s* ನಲ್ಲಿ ಅತ್ಯುತ್ತಮ ಕ್ರಿಯೆಯನ್ನು (ಹೆಚ್ಚಿನ ಕ್ಯೂ-ಮೌಲ್ಯ) ಆಯ್ಕೆ ಮಾಡಬಹುದು. ಆದರೆ ಇದು ಇತರ ಸ್ಥಿತಿಗಳನ್ನು ಅನ್ವೇಷಿಸುವುದನ್ನು ತಡೆಯುತ್ತದೆ ಮತ್ತು ನಾವು ಅತ್ಯುತ್ತಮ ಪರಿಹಾರವನ್ನು ಕಂಡುಹಿಡಿಯದಿರಬಹುದು. + +ಆದ್ದರಿಂದ, ಉತ್ತಮ ವಿಧಾನವು ಅನ್ವೇಷಣೆ ಮತ್ತು ಉಪಯೋಗದ ನಡುವೆ ಸಮತೋಲನ ಸಾಧಿಸುವುದು. ಇದು ಸ್ಥಿತಿ *s* ನಲ್ಲಿ ಕ್ರಿಯೆಯನ್ನು ಕ್ಯೂ-ಟೇಬಲ್ ಮೌಲ್ಯಗಳಿಗೆ ಅನುಪಾತಿಕ ಪ್ರಾಬಬಿಲಿಟಿಗಳೊಂದಿಗೆ ಆಯ್ಕೆಮಾಡುವ ಮೂಲಕ ಮಾಡಬಹುದು. ಆರಂಭದಲ್ಲಿ, ಕ್ಯೂ-ಟೇಬಲ್ ಮೌಲ್ಯಗಳು ಎಲ್ಲವೂ ಸಮಾನವಾಗಿರುವಾಗ, ಇದು ಯಾದೃಚ್ಛಿಕ ಆಯ್ಕೆ ಆಗಿರುತ್ತದೆ, ಆದರೆ ನಾವು ನಮ್ಮ ಪರಿಸರವನ್ನು ಹೆಚ್ಚು ಕಲಿತಂತೆ, ನಾವು ಅತ್ಯುತ್ತಮ ಮಾರ್ಗವನ್ನು ಅನುಸರಿಸುವ ಸಾಧ್ಯತೆ ಹೆಚ್ಚಾಗುತ್ತದೆ ಮತ್ತು ಏಜೆಂಟ್‌ಗಿಗೆ ಕೆಲವೊಮ್ಮೆ ಅನ್ವೇಷಿಸದ ಮಾರ್ಗವನ್ನು ಆಯ್ಕೆಮಾಡಲು ಅವಕಾಶ ನೀಡುತ್ತದೆ. + +## ಪೈಥಾನ್ ಅನುಷ್ಠಾನ + +ನಾವು ಈಗ ಅಧ್ಯಯನ ಅಲ್ಗೋರಿದಮ್ ಅನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸಲು ಸಿದ್ಧರಾಗಿದ್ದೇವೆ. ಅದಕ್ಕೆ ಮುಂಚೆ, ನಾವು ಕ್ಯೂ-ಟೇಬಲ್‌ನ任意 ಸಂಖ್ಯೆಗಳನ್ನೂ ಸಂಬಂಧಿತ ಕ್ರಿಯೆಗಳ ಪ್ರಾಬಬಿಲಿಟಿಗಳ ವೆಕ್ಟರ್‌ಗೆ ಪರಿವರ್ತಿಸುವ ಕಾರ್ಯ ಬೇಕಾಗುತ್ತದೆ. + +1. `probs()` ಎಂಬ ಕಾರ್ಯವನ್ನು ರಚಿಸಿ: + + ```python + def probs(v,eps=1e-4): + v = v-v.min()+eps + v = v/v.sum() + return v + ``` + + ನಾವು ಮೂಲ ವೆಕ್ಟರ್‌ಗೆ ಕೆಲವು `eps` ಸೇರಿಸುತ್ತೇವೆ, ಆರಂಭಿಕ ಸ್ಥಿತಿಯಲ್ಲಿ ಎಲ್ಲ ಘಟಕಗಳೂ ಸಮಾನವಾಗಿರುವಾಗ ಶೂನ್ಯದಿಂದ ಭಾಗಿಸುವುದನ್ನು ತಪ್ಪಿಸಲು. + +5000 ಪ್ರಯೋಗಗಳ ಮೂಲಕ ಅಧ್ಯಯನ ಅಲ್ಗೋರಿದಮ್ ಅನ್ನು ನಡೆಸಿ, ಇದನ್ನು **ಎಪೋಕ್ಸ್** ಎಂದು ಕರೆಯುತ್ತಾರೆ: (ಕೋಡ್ ಬ್ಲಾಕ್ 8) +```python + for epoch in range(5000): + + # ಪ್ರಾರಂಭಿಕ ಬಿಂದುವನ್ನು ಆಯ್ಕೆಮಾಡಿ + m.random_start() + + # ಪ್ರಯಾಣವನ್ನು ಪ್ರಾರಂಭಿಸಿ + n=0 + cum_reward = 0 + while True: + x,y = m.human + v = probs(Q[x,y]) + a = random.choices(list(actions),weights=v)[0] + dpos = actions[a] + m.move(dpos,check_correctness=False) # ನಾವು ಆಟಗಾರನಿಗೆ ಫಲಕದ ಹೊರಗೆ ಚಲಿಸಲು ಅನುಮತಿಸುತ್ತೇವೆ, ಇದು ಎಪಿಸೋಡ್ ಅನ್ನು ಮುಕ್ತಾಯಗೊಳಿಸುತ್ತದೆ + r = reward(m) + cum_reward += r + if r==end_reward or cum_reward < -1000: + lpath.append(n) + break + alpha = np.exp(-n / 10e5) + gamma = 0.5 + ai = action_idx[a] + Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max()) + n+=1 +``` + +ಈ ಅಲ್ಗೋರಿದಮ್ ಅನ್ನು ನಿರ್ವಹಿಸಿದ ನಂತರ, ಕ್ಯೂ-ಟೇಬಲ್ ಮೌಲ್ಯಗಳು ನವೀಕರಿಸಲಾಗುತ್ತದೆ, ಅವು ಪ್ರತಿ ಹೆಜ್ಜೆಯಲ್ಲಿ ವಿಭಿನ್ನ ಕ್ರಿಯೆಗಳ ಆಕರ್ಷಕತೆಯನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತವೆ. ನಾವು ಕ್ಯೂ-ಟೇಬಲ್ ಅನ್ನು ದೃಶ್ಯೀಕರಿಸಲು ಪ್ರಯತ್ನಿಸಬಹುದು, ಪ್ರತಿ ಸೆಲ್‌ನಲ್ಲಿ ಒಂದು ವೆಕ್ಟರ್ ಅನ್ನು ಚಿತ್ರಿಸಿ ಅದು ಚಲನೆಯ ಇಚ್ಛಿತ ದಿಕ್ಕನ್ನು ಸೂಚಿಸುತ್ತದೆ. ಸರಳತೆಗೆ, ನಾವು ಬಾಣದ ತಲೆ ಬದಲು ಸಣ್ಣ ವೃತ್ತವನ್ನು ಬಿಡುತ್ತೇವೆ. + + + +## ನೀತಿ ಪರಿಶೀಲನೆ + +ಕ್ಯೂ-ಟೇಬಲ್ ಪ್ರತಿ ಸ್ಥಿತಿಯಲ್ಲಿ ಪ್ರತಿ ಕ್ರಿಯೆಯ "ಆಕರ್ಷಕತೆ" ಅನ್ನು ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ, ಆದ್ದರಿಂದ ಅದನ್ನು ಬಳಸಿ ನಮ್ಮ ಜಗತ್ತಿನಲ್ಲಿ ಪರಿಣಾಮಕಾರಿ ನ್ಯಾವಿಗೇಶನ್ ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವುದು ಸುಲಭ. ಸರಳ ಪ್ರಕರಣದಲ್ಲಿ, ನಾವು ಗರಿಷ್ಠ ಕ್ಯೂ-ಟೇಬಲ್ ಮೌಲ್ಯಕ್ಕೆ ಹೊಂದಿಕೆಯಾಗುವ ಕ್ರಿಯೆಯನ್ನು ಆಯ್ಕೆ ಮಾಡಬಹುದು: (ಕೋಡ್ ಬ್ಲಾಕ್ 9) + +```python +def qpolicy_strict(m): + x,y = m.human + v = probs(Q[x,y]) + a = list(actions)[np.argmax(v)] + return a + +walk(m,qpolicy_strict) +``` + +> ನೀವು ಮೇಲಿನ ಕೋಡ್ ಅನ್ನು ಹಲವಾರು ಬಾರಿ ಪ್ರಯತ್ನಿಸಿದರೆ, ಕೆಲವೊಮ್ಮೆ ಅದು "ಹ್ಯಾಂಗ್" ಆಗುತ್ತದೆ ಎಂದು ನೀವು ಗಮನಿಸಬಹುದು, ಮತ್ತು ಅದನ್ನು ಮಧ್ಯಂತರಗೊಳಿಸಲು ನೀವು ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ STOP ಬಟನ್ ಒತ್ತಬೇಕಾಗುತ್ತದೆ. ಇದು ಸಂಭವಿಸುವುದು ಏಕೆಂದರೆ ಎರಡು ಸ್ಥಿತಿಗಳು ಪರಸ್ಪರ ಅತ್ಯುತ್ತಮ Q-ಮೌಲ್ಯದ ದೃಷ್ಟಿಯಿಂದ "ಸೂಚಿಸುವ" ಸಂದರ್ಭಗಳು ಇರಬಹುದು, ಇಂತಹ ಸಂದರ್ಭದಲ್ಲಿ ಏಜೆಂಟ್ ಆ ಸ್ಥಿತಿಗಳ ನಡುವೆ ಅನಂತಕಾಲ ಚಲಿಸುತ್ತಿರುತ್ತದೆ. + +## 🚀ಸವಾಲು + +> **ಕಾರ್ಯ 1:** `walk` ಫಂಕ್ಷನ್ ಅನ್ನು ಮಾರ್ಪಡಿಸಿ, ಮಾರ್ಗದ ಗರಿಷ್ಠ ಉದ್ದವನ್ನು ನಿರ್ದಿಷ್ಟ ಹೆಜ್ಜೆಗಳ ಸಂಖ್ಯೆಯಿಂದ (ಹೇಳಿ, 100) ಮಿತಿಗೊಳಿಸಿ, ಮತ್ತು ಮೇಲಿನ ಕೋಡ್ ಈ ಮೌಲ್ಯವನ್ನು ಸಮಯಕಾಲಕ್ಕೆ ಹಿಂತಿರುಗಿಸುವುದನ್ನು ಗಮನಿಸಿ. + +> **ಕಾರ್ಯ 2:** `walk` ಫಂಕ್ಷನ್ ಅನ್ನು ಮಾರ್ಪಡಿಸಿ, ಅದು ಈಗಾಗಲೇ ಹೋಗಿದ್ದ ಸ್ಥಳಗಳಿಗೆ ಹಿಂದಿರುಗದಂತೆ ಮಾಡಿ. ಇದರಿಂದ `walk` ಲೂಪ್ ಆಗುವುದನ್ನು ತಡೆಯಬಹುದು, ಆದರೆ ಏಜೆಂಟ್ ಇನ್ನೂ ತಪ್ಪಿಸಿಕೊಳ್ಳಲು ಸಾಧ್ಯವಿಲ್ಲದ ಸ್ಥಳದಲ್ಲಿ "ಹುಡುಗಲ್ಪಟ್ಟ" ಸ್ಥಿತಿಯಲ್ಲಿ ಇರಬಹುದು. + +## ನ್ಯಾವಿಗೇಶನ್ + +ಮುಂಬರುವ ನ್ಯಾವಿಗೇಶನ್ ನೀತಿ ತರಬೇತಿಯ ಸಮಯದಲ್ಲಿ ನಾವು ಬಳಸಿದ ನೀತಿಯೇ ಉತ್ತಮವಾಗಿರುತ್ತದೆ, ಅದು ಅನ್ವೇಷಣೆ ಮತ್ತು ಉಪಯೋಗವನ್ನು ಸಂಯೋಜಿಸುತ್ತದೆ. ಈ ನೀತಿಯಲ್ಲಿ, ನಾವು Q-ಟೇಬಲ್‌ನ ಮೌಲ್ಯಗಳಿಗೆ ಅನುಪಾತವಾಗಿ ಪ್ರತಿ ಕ್ರಿಯೆಯನ್ನು ನಿರ್ದಿಷ್ಟ ಸಾಧ್ಯತೆಯಿಂದ ಆಯ್ಕೆಮಾಡುತ್ತೇವೆ. ಈ ತಂತ್ರವು ಏಜೆಂಟ್ ಈಗಾಗಲೇ ಅನ್ವೇಷಿಸಿದ ಸ್ಥಾನಕ್ಕೆ ಹಿಂತಿರುಗುವ ಸಾಧ್ಯತೆಯನ್ನು ಇನ್ನೂ ಹೊಂದಿರಬಹುದು, ಆದರೆ ಕೆಳಗಿನ ಕೋಡ್‌ನಿಂದ ನೀವು ನೋಡಬಹುದು, ಇದು ಗುರಿ ಸ್ಥಳಕ್ಕೆ ತುಂಬಾ ಚಿಕ್ಕ ಸರಾಸರಿ ಮಾರ್ಗವನ್ನು ನೀಡುತ್ತದೆ (`print_statistics` 100 ಬಾರಿ ಸಿಮ್ಯುಲೇಶನ್ ನಡೆಸುತ್ತದೆ): (ಕೋಡ್ ಬ್ಲಾಕ್ 10) + +```python +def qpolicy(m): + x,y = m.human + v = probs(Q[x,y]) + a = random.choices(list(actions),weights=v)[0] + return a + +print_statistics(qpolicy) +``` + +ಈ ಕೋಡ್ ಅನ್ನು ಚಲಾಯಿಸಿದ ನಂತರ, ನೀವು ಹಿಂದಿನದಿಗಿಂತ ಬಹಳ ಕಡಿಮೆ ಸರಾಸರಿ ಮಾರ್ಗದ ಉದ್ದವನ್ನು 3-6 ರ ವ್ಯಾಪ್ತಿಯಲ್ಲಿ ಪಡೆಯಬೇಕು. + +## ಕಲಿಕೆಯ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಪರಿಶೀಲಿಸುವುದು + +ನಾವು ಉಲ್ಲೇಖಿಸಿದಂತೆ, ಕಲಿಕೆಯ ಪ್ರಕ್ರಿಯೆ ಅನ್ವೇಷಣೆ ಮತ್ತು ಸಮಸ್ಯಾ ಸ್ಥಳದ ರಚನೆಯ ಬಗ್ಗೆ ಪಡೆದ ಜ್ಞಾನವನ್ನು ಅನ್ವೇಷಿಸುವ ನಡುವಿನ ಸಮತೋಲನವಾಗಿದೆ. ಕಲಿಕೆಯ ಫಲಿತಾಂಶಗಳು (ಏಜೆಂಟ್ ಗುರಿ ತಲುಪಲು ಚಿಕ್ಕ ಮಾರ್ಗವನ್ನು ಕಂಡುಹಿಡಿಯುವ ಸಾಮರ್ಥ್ಯ) ಸುಧಾರಿತವಾಗಿದೆ, ಆದರೆ ಕಲಿಕೆಯ ಪ್ರಕ್ರಿಯೆಯ ಸಮಯದಲ್ಲಿ ಸರಾಸರಿ ಮಾರ್ಗದ ಉದ್ದ ಹೇಗೆ ವರ್ತಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಗಮನಿಸುವುದು ಸಹ ಆಸಕ್ತಿದಾಯಕವಾಗಿದೆ: + + + +ಕಲಿಕೆಗಳನ್ನು ಸಂಕ್ಷಿಪ್ತವಾಗಿ ಹೇಳುವುದಾದರೆ: + +- **ಸರಾಸರಿ ಮಾರ್ಗದ ಉದ್ದ ಹೆಚ್ಚಾಗುತ್ತದೆ**. ಇಲ್ಲಿ ನಾವು ನೋಡುತ್ತಿರುವುದು ಪ್ರಾರಂಭದಲ್ಲಿ ಸರಾಸರಿ ಮಾರ್ಗದ ಉದ್ದ ಹೆಚ್ಚಾಗುತ್ತದೆ. ಇದು ಬಹುಶಃ ಪರಿಸರದ ಬಗ್ಗೆ ಏನೂ ತಿಳಿಯದಿರುವಾಗ, ನಾವು ಕೆಟ್ಟ ಸ್ಥಿತಿಗಳಲ್ಲಿ, ನೀರು ಅಥವಾ ನರಿ ಬಳಿ ಸಿಕ್ಕಿಬಿದ್ದಿರಬಹುದು ಎಂಬುದರಿಂದ ಆಗುತ್ತದೆ. ನಾವು ಹೆಚ್ಚು ಕಲಿತಂತೆ ಮತ್ತು ಈ ಜ್ಞಾನವನ್ನು ಬಳಸಲು ಪ್ರಾರಂಭಿಸಿದಂತೆ, ನಾವು ಪರಿಸರವನ್ನು ಹೆಚ್ಚು ಅನ್ವೇಷಿಸಬಹುದು, ಆದರೆ ಆಪಲ್ಗಳು ಎಲ್ಲಿವೆ ಎಂಬುದನ್ನು ಇನ್ನೂ ಚೆನ್ನಾಗಿ ತಿಳಿಯದು. + +- **ಕಲಿತಂತೆ ಮಾರ್ಗದ ಉದ್ದ ಕಡಿಮೆಯಾಗುತ್ತದೆ**. ನಾವು ಸಾಕಷ್ಟು ಕಲಿತ ನಂತರ, ಏಜೆಂಟ್ ಗುರಿಯನ್ನು ಸಾಧಿಸುವುದು ಸುಲಭವಾಗುತ್ತದೆ, ಮತ್ತು ಮಾರ್ಗದ ಉದ್ದ ಕಡಿಮೆಯಾಗಲು ಪ್ರಾರಂಭಿಸುತ್ತದೆ. ಆದಾಗ್ಯೂ, ನಾವು ಇನ್ನೂ ಅನ್ವೇಷಣೆಗೆ ತೆರೆಯಲಾಗಿದ್ದು, ನಾವು ಉತ್ತಮ ಮಾರ್ಗದಿಂದ ದೂರ ಹೋಗಿ ಹೊಸ ಆಯ್ಕೆಗಳನ್ನು ಅನ್ವೇಷಿಸುವುದರಿಂದ ಮಾರ್ಗವು ಅತ್ಯುತ್ತಮಕ್ಕಿಂತ ಹೆಚ್ಚು ಉದ್ದವಾಗಬಹುದು. + +- **ಉದ್ದವು ಅಕಸ್ಮಾತ್ ಹೆಚ್ಚಾಗುತ್ತದೆ**. ಈ ಗ್ರಾಫ್‌ನಲ್ಲಿ ನಾವು ಮತ್ತೊಂದು ಗಮನಿಸುವುದು, ಕೆಲ ಸಮಯದಲ್ಲಿ ಉದ್ದವು ಅಕಸ್ಮಾತ್ ಹೆಚ್ಚಾಗಿದೆ. ಇದು ಪ್ರಕ್ರಿಯೆಯ ಸಾಂಖ್ಯಿಕ ಸ್ವಭಾವವನ್ನು ಸೂಚಿಸುತ್ತದೆ, ಮತ್ತು ನಾವು ಕೆಲ ಸಮಯದಲ್ಲಿ Q-ಟೇಬಲ್ ಗುಣಾಂಕಗಳನ್ನು ಹೊಸ ಮೌಲ್ಯಗಳಿಂದ ಮರುಬರೆಯುವ ಮೂಲಕ "ಹಾಳು" ಮಾಡಬಹುದು. ಇದನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಕಲಿಕೆಯ ದರವನ್ನು ಕಡಿಮೆ ಮಾಡುವುದು (ಉದಾಹರಣೆಗೆ, ತರಬೇತಿಯ ಕೊನೆಯಲ್ಲಿ, ನಾವು Q-ಟೇಬಲ್ ಮೌಲ್ಯಗಳನ್ನು ಸಣ್ಣ ಮೌಲ್ಯದಿಂದ ಮಾತ್ರ ಸರಿಪಡಿಸುತ್ತೇವೆ) ಸೂಕ್ತ. + +ಒಟ್ಟಾರೆ, ಕಲಿಕೆಯ ಪ್ರಕ್ರಿಯೆಯ ಯಶಸ್ಸು ಮತ್ತು ಗುಣಮಟ್ಟವು ಕಲಿಕೆಯ ದರ, ಕಲಿಕೆಯ ದರ ಕುಸಿತ, ಮತ್ತು ಡಿಸ್ಕೌಂಟ್ ಫ್ಯಾಕ್ಟರ್ ಮುಂತಾದ ಪರಿಮಾಣಗಳ ಮೇಲೆ ಬಹುಮಟ್ಟಿಗೆ ಅವಲಂಬಿತವಾಗಿದೆ. ಅವುಗಳನ್ನು ಸಾಮಾನ್ಯವಾಗಿ **ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು** ಎಂದು ಕರೆಯುತ್ತಾರೆ, ಮತ್ತು ತರಬೇತಿಯ ಸಮಯದಲ್ಲಿ ನಾವು ಸುಧಾರಿಸುವ **ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು** (ಉದಾಹರಣೆಗೆ, Q-ಟೇಬಲ್ ಗುಣಾಂಕಗಳು) ಇಂದ ವಿಭಿನ್ನವಾಗಿವೆ. ಉತ್ತಮ ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್ ಮೌಲ್ಯಗಳನ್ನು ಹುಡುಕುವ ಪ್ರಕ್ರಿಯೆಯನ್ನು **ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್ ಆಪ್ಟಿಮೈಜೆಷನ್** ಎಂದು ಕರೆಯುತ್ತಾರೆ, ಮತ್ತು ಇದು ಪ್ರತ್ಯೇಕ ವಿಷಯಕ್ಕೆ ಅರ್ಹವಾಗಿದೆ. + +## [ಪೋಸ್ಟ್-ಲೆಕ್ಚರ್ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) + +## ಅಸೈನ್‌ಮೆಂಟ್ +[ಹೆಚ್ಚು ವಾಸ್ತವಿಕ ಜಗತ್ತು](assignment.md) + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/8-Reinforcement/1-QLearning/assignment.md b/translations/kn/8-Reinforcement/1-QLearning/assignment.md new file mode 100644 index 000000000..b78fc8619 --- /dev/null +++ b/translations/kn/8-Reinforcement/1-QLearning/assignment.md @@ -0,0 +1,41 @@ + +# ಹೆಚ್ಚು ವಾಸ್ತವಿಕ ಜಗತ್ತು + +ನಮ್ಮ ಪರಿಸ್ಥಿತಿಯಲ್ಲಿ, ಪೀಟರ್ ಬಹಳಷ್ಟು ದಣಿವಾಗದೆ ಅಥವಾ ಹಸಿವಾಗದೆ ಸುತ್ತಾಡಲು ಸಾಧ್ಯವಾಯಿತು. ಹೆಚ್ಚು ವಾಸ್ತವಿಕ ಜಗತ್ತಿನಲ್ಲಿ, ನಾವು ಸಮಯಕಾಲಕ್ಕೆ ಕುಳಿತು ವಿಶ್ರಾಂತಿ ಪಡೆಯಬೇಕಾಗುತ್ತದೆ, ಮತ್ತು ತಾನೇ ಆಹಾರ ಸೇವಿಸಬೇಕಾಗುತ್ತದೆ. ಕೆಳಗಿನ ನಿಯಮಗಳನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸುವ ಮೂಲಕ ನಮ್ಮ ಜಗತ್ತನ್ನು ಹೆಚ್ಚು ವಾಸ್ತವಿಕವಾಗಿಸೋಣ: + +1. ಒಂದು ಸ್ಥಳದಿಂದ ಮತ್ತೊಂದು ಸ್ಥಳಕ್ಕೆ ಚಲಿಸುವ ಮೂಲಕ, ಪೀಟರ್ **ಶಕ್ತಿ** ಕಳೆದುಕೊಳ್ಳುತ್ತಾನೆ ಮತ್ತು ಕೆಲವು **ದಣಿವು** ಗಳಿಸುತ್ತಾನೆ. +2. ಪೀಟರ್ ಸೇಬುಗಳನ್ನು ತಿಂದರೆ ಹೆಚ್ಚು ಶಕ್ತಿ ಗಳಿಸಬಹುದು. +3. ಪೀಟರ್ ಮರದ ಕೆಳಗೆ ಅಥವಾ ಹುಲ್ಲಿನ ಮೇಲೆ ವಿಶ್ರಾಂತಿ ತೆಗೆದುಕೊಂಡರೆ (ಅಂದರೆ ಮರ ಅಥವಾ ಹುಲ್ಲು ಇರುವ ಬೋರ್ಡ್ ಸ್ಥಳಕ್ಕೆ ನಡೆಯುವ ಮೂಲಕ) ದಣಿವು ಕಡಿಮೆಯಾಗುತ್ತದೆ. +4. ಪೀಟರ್ ನಾಯಿ ಹತ್ಯೆ ಮಾಡಬೇಕಾಗಿದೆ. +5. ನಾಯಿ ಹತ್ಯೆ ಮಾಡಲು, ಪೀಟರ್ ಗೆ ನಿರ್ದಿಷ್ಟ ಮಟ್ಟದ ಶಕ್ತಿ ಮತ್ತು ದಣಿವು ಇರಬೇಕು, ಇಲ್ಲದಿದ್ದರೆ ಅವನು ಯುದ್ಧವನ್ನು ಸೋಲುತ್ತಾನೆ. +## ಸೂಚನೆಗಳು + +ನಿಮ್ಮ ಪರಿಹಾರಕ್ಕಾಗಿ ಮೂಲ [notebook.ipynb](notebook.ipynb) ನೋಟ್ಬುಕ್ ಅನ್ನು ಪ್ರಾರಂಭಿಕ ಬಿಂದುವಾಗಿ ಬಳಸಿ. + +ಮೇಲಿನ ಆಟದ ನಿಯಮಗಳ ಪ್ರಕಾರ ಬಹುಮಾನ ಕಾರ್ಯವನ್ನು ತಿದ್ದುಪಡಿ ಮಾಡಿ, reinforcement learning ಆಲ್ಗಾರಿದಮ್ ಅನ್ನು ಚಲಾಯಿಸಿ ಆಟವನ್ನು ಗೆಲ್ಲಲು ಉತ್ತಮ ತಂತ್ರವನ್ನು ಕಲಿಯಿರಿ, ಮತ್ತು ಯಾದೃಚ್ಛಿಕ ನಡಿಗೆ ಮತ್ತು ನಿಮ್ಮ ಆಲ್ಗಾರಿದಮ್ ಫಲಿತಾಂಶಗಳನ್ನು ಗೆಲುವಿನ ಮತ್ತು ಸೋಲಿನ ಆಟಗಳ ಸಂಖ್ಯೆಯ ದೃಷ್ಟಿಯಿಂದ ಹೋಲಿಸಿ. + +> **ಗಮನಿಸಿ**: ನಿಮ್ಮ ಹೊಸ ಜಗತ್ತಿನಲ್ಲಿ, ಸ್ಥಿತಿ ಹೆಚ್ಚು ಸಂಕೀರ್ಣವಾಗಿದೆ, ಮತ್ತು ಮಾನವ ಸ್ಥಾನಕ್ಕೆ ಜೊತೆಗೆ ದಣಿವು ಮತ್ತು ಶಕ್ತಿ ಮಟ್ಟಗಳೂ ಸೇರಿವೆ. ನೀವು ಸ್ಥಿತಿಯನ್ನು (Board,energy,fatigue) ಎಂಬ ಟ್ಯೂಪಲ್ ಆಗಿ ಪ್ರತಿನಿಧಿಸಬಹುದು, ಅಥವಾ ಸ್ಥಿತಿಗಾಗಿ ಒಂದು ವರ್ಗವನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಬಹುದು (ನೀವು ಅದನ್ನು `Board` ನಿಂದ ವಂಶಪಾರಂಪರ್ಯವಾಗಿ ಪಡೆಯಬಹುದು), ಅಥವಾ ಮೂಲ `Board` ವರ್ಗವನ್ನು [rlboard.py](../../../../8-Reinforcement/1-QLearning/rlboard.py) ಒಳಗೆ ತಿದ್ದುಪಡಿ ಮಾಡಬಹುದು. + +ನಿಮ್ಮ ಪರಿಹಾರದಲ್ಲಿ, ದಯವಿಟ್ಟು ಯಾದೃಚ್ಛಿಕ ನಡಿಗೆ ತಂತ್ರಕ್ಕಾಗಿ ಜವಾಬ್ದಾರಿಯಿರುವ ಕೋಡ್ ಅನ್ನು ಉಳಿಸಿ, ಮತ್ತು ಕೊನೆಯಲ್ಲಿ ನಿಮ್ಮ ಆಲ್ಗಾರಿದಮ್ ಫಲಿತಾಂಶಗಳನ್ನು ಯಾದೃಚ್ಛಿಕ ನಡಿಗೆಯೊಂದಿಗೆ ಹೋಲಿಸಿ. + +> **ಗಮನಿಸಿ**: ಇದನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ನೀವು ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್‌ಗಳನ್ನು ಹೊಂದಿಸಬೇಕಾಗಬಹುದು, ವಿಶೇಷವಾಗಿ ಎಪೋಕ್‌ಗಳ ಸಂಖ್ಯೆಯನ್ನು. ಯಾಕಂದರೆ ಆಟದ ಯಶಸ್ಸು (ನಾಯಿಯನ್ನು ಹೋರಾಡುವುದು) ಅಪರೂಪದ ಘಟನೆ, ನೀವು ಬಹಳ ಹೆಚ್ಚು ತರಬೇತಿ ಸಮಯವನ್ನು ನಿರೀಕ್ಷಿಸಬಹುದು. +## ಮೌಲ್ಯಮಾಪನ + +| ಮಾನದಂಡಗಳು | ಉದಾಹರಣೀಯ | ತೃಪ್ತಿಕರ | ಸುಧಾರಣೆಯ ಅಗತ್ಯವಿದೆ | +| -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | +| | ಹೊಸ ಜಗತ್ತಿನ ನಿಯಮಗಳ ವ್ಯಾಖ್ಯಾನ, Q-ಲರ್ನಿಂಗ್ ಆಲ್ಗಾರಿದಮ್ ಮತ್ತು ಕೆಲವು ಪಠ್ಯ ವಿವರಣೆಗಳೊಂದಿಗೆ ನೋಟ್ಬುಕ್ ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿದೆ. Q-ಲರ್ನಿಂಗ್ ಯಾದೃಚ್ಛಿಕ ನಡಿಗೆಯೊಂದಿಗೆ ಹೋಲಿಸಿದಾಗ ಫಲಿತಾಂಶಗಳನ್ನು ಗಮನಾರ್ಹವಾಗಿ ಸುಧಾರಿಸುತ್ತದೆ. | ನೋಟ್ಬುಕ್ ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿದೆ, Q-ಲರ್ನಿಂಗ್ ಅನುಷ್ಠಾನಗೊಳಿಸಲಾಗಿದೆ ಮತ್ತು ಯಾದೃಚ್ಛಿಕ ನಡಿಗೆಯೊಂದಿಗೆ ಹೋಲಿಸಿದಾಗ ಫಲಿತಾಂಶಗಳನ್ನು ಸುಧಾರಿಸುತ್ತದೆ, ಆದರೆ ಗಮನಾರ್ಹವಾಗಿ ಅಲ್ಲ; ಅಥವಾ ನೋಟ್ಬುಕ್ ಕಡಿಮೆ ದಾಖಲೆಗೊಳಿಸಲಾಗಿದೆ ಮತ್ತು ಕೋಡ್ ಚೆನ್ನಾಗಿ ರಚಿಸಲ್ಪಟ್ಟಿಲ್ಲ | ಜಗತ್ತಿನ ನಿಯಮಗಳನ್ನು ಮರು ವ್ಯಾಖ್ಯಾನಿಸಲು ಕೆಲವು ಪ್ರಯತ್ನಗಳು ಮಾಡಲಾಗಿದೆ, ಆದರೆ Q-ಲರ್ನಿಂಗ್ ಆಲ್ಗಾರಿದಮ್ ಕಾರ್ಯನಿರ್ವಹಿಸುವುದಿಲ್ಲ, ಅಥವಾ ಬಹುಮಾನ ಕಾರ್ಯ ಸಂಪೂರ್ಣವಾಗಿ ವ್ಯಾಖ್ಯಾನಿಸಲ್ಪಟ್ಟಿಲ್ಲ | + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/8-Reinforcement/1-QLearning/notebook.ipynb b/translations/kn/8-Reinforcement/1-QLearning/notebook.ipynb new file mode 100644 index 000000000..34c61fce1 --- /dev/null +++ b/translations/kn/8-Reinforcement/1-QLearning/notebook.ipynb @@ -0,0 +1,413 @@ +{ + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.0" + }, + "orig_nbformat": 2, + "kernelspec": { + "name": "python3", + "display_name": "Python 3.7.0 64-bit ('3.7')" + }, + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + }, + "coopTranslator": { + "original_hash": "17e5a668646eabf5aabd0e9bfcf17876", + "translation_date": "2025-12-19T17:26:52+00:00", + "source_file": "8-Reinforcement/1-QLearning/notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "# ಪೀಟರ್ ಮತ್ತು ನರಿ: ಬಲವರ್ಧಿತ ಅಧ್ಯಯನ ಪ್ರಾಥಮಿಕ\n", + "\n", + "ಈ ಪಾಠದಲ್ಲಿ, ನಾವು ಮಾರ್ಗ ಹುಡುಕುವ ಸಮಸ್ಯೆಗೆ ಬಲವರ್ಧಿತ ಅಧ್ಯಯನವನ್ನು ಹೇಗೆ ಅನ್ವಯಿಸಬೇಕೆಂದು ಕಲಿಯೋಣ. ಈ ಸನ್ನಿವೇಶವು ರಷ್ಯನ್ ಸಂಗೀತಕಾರ [ಸರ್ಗೇಯಿ ಪ್ರೊಕೊಫಿಯೆವ್](https://en.wikipedia.org/wiki/Sergei_Prokofiev) ರಚಿಸಿದ [ಪೀಟರ್ ಮತ್ತು ನರಿ](https://en.wikipedia.org/wiki/Peter_and_the_Wolf) ಸಂಗೀತ ಪರಿಕಥೆಯಿಂದ ಪ್ರೇರಿತವಾಗಿದೆ. ಇದು ಯುವ ಪಯನಿಯರ್ ಪೀಟರ್ ಬಗ್ಗೆ ಕಥೆ, ಅವನು ಧೈರ್ಯವಾಗಿ ತನ್ನ ಮನೆಯಿಂದ ಕಾಡಿನ ತೆರೆಯ ಕಡೆಗೆ ಹೋಗಿ ನರಿಯನ್ನು ಹಿಂಬಾಲಿಸುತ್ತಾನೆ. ನಾವು ಪೀಟರ್‌ಗೆ ಸುತ್ತಲೂ ಇರುವ ಪ್ರದೇಶವನ್ನು ಅನ್ವೇಷಿಸಲು ಮತ್ತು ಅತ್ಯುತ್ತಮ ನ್ಯಾವಿಗೇಶನ್ ನಕ್ಷೆಯನ್ನು ನಿರ್ಮಿಸಲು ಸಹಾಯ ಮಾಡುವ ಯಂತ್ರ ಅಧ್ಯಯನ ಆಲ್ಗಾರಿದಮ್ಗಳನ್ನು ತರಬೇತಿಮಾಡುತ್ತೇವೆ.\n", + "\n", + "ಮೊದಲು, ಕೆಲವು ಉಪಯುಕ್ತ ಗ್ರಂಥಾಲಯಗಳನ್ನು ಆಮದು ಮಾಡೋಣ:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import random\n", + "import math" + ] + }, + { + "source": [ + "## ಬಲವರ್ಧಿತ ಅಧ್ಯಯನದ ಅವಲೋಕನ\n", + "\n", + "**ಬಲವರ್ಧಿತ ಅಧ್ಯಯನ** (RL) ಎಂಬುದು ನಾವು ಅನೇಕ ಪ್ರಯೋಗಗಳನ್ನು ನಡೆಸುವ ಮೂಲಕ ಕೆಲವು **ಪರಿಸರ**ದಲ್ಲಿ **ಏಜೆಂಟ್**ನ ಅತ್ಯುತ್ತಮ ವರ್ತನೆಯನ್ನು ಕಲಿಯಲು ಅನುಮತಿಸುವ ಅಧ್ಯಯನ ತಂತ್ರವಾಗಿದೆ. ಈ ಪರಿಸರದಲ್ಲಿರುವ ಏಜೆಂಟ್‌ಗೆ ಕೆಲವು **ಗುರಿ** ಇರಬೇಕು, ಅದು **ಪ್ರಶಸ್ತಿ ಕಾರ್ಯ** ಮೂಲಕ ನಿರ್ಧರಿಸಲಾಗುತ್ತದೆ.\n", + "\n", + "## ಪರಿಸರ\n", + "\n", + "ಸರಳತೆಗೆ, ಪೀಟರ್‌ನ ಜಗತ್ತನ್ನು `width` x `height` ಗಾತ್ರದ ಚದರ ಫಲಕ ಎಂದು ಪರಿಗಣಿಸೋಣ. ಈ ಫಲಕದ ಪ್ರತಿ ಸೆಲ್ ಇವುಗಳಲ್ಲಿ ಒಂದಾಗಿರಬಹುದು:\n", + "* **ಭೂಮಿ**, ಇದರಲ್ಲಿ ಪೀಟರ್ ಮತ್ತು ಇತರ ಜೀವಿಗಳು ನಡೆಯಬಹುದು\n", + "* **ನೀರು**, ಇದರಲ್ಲಿ ನೀವು ಸ್ಪಷ್ಟವಾಗಿ ನಡೆಯಲು ಸಾಧ್ಯವಿಲ್ಲ\n", + "* **ಮರ** ಅಥವಾ **ಹುಲ್ಲು** - ನೀವು ವಿಶ್ರಾಂತಿ ಪಡೆಯಬಹುದಾದ ಸ್ಥಳ\n", + "* **ಸೇಬು**, ಇದು ಪೀಟರ್ ತನ್ನನ್ನು ತಾನು ಆಹಾರ ನೀಡಲು ಕಂಡು ಸಂತೋಷ ಪಡುವುದನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತದೆ\n", + "* **ನರಿ**, ಇದು ಅಪಾಯಕಾರಿಯಾಗಿದ್ದು ತಪ್ಪಿಸಿಕೊಳ್ಳಬೇಕು\n", + "\n", + "ಪರಿಸರದೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು, ನಾವು `Board` ಎಂಬ ವರ್ಗವನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವೆವು. ಈ ನೋಟ್ಬುಕ್ ತುಂಬಾ ಗೊಂದಲವಾಗದಂತೆ, ಫಲಕದೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವ ಎಲ್ಲಾ ಕೋಡ್ ಅನ್ನು ಪ್ರತ್ಯೇಕ `rlboard` ಮೋಡ್ಯೂಲ್‌ಗೆ ಸ್ಥಳಾಂತರಿಸಿದ್ದೇವೆ, ಅದನ್ನು ಈಗ ನಾವು ಆಮದು ಮಾಡಿಕೊಳ್ಳುತ್ತೇವೆ. ಅನುಷ್ಠಾನದ ಒಳಗಿನ ವಿವರಗಳನ್ನು ತಿಳಿದುಕೊಳ್ಳಲು ನೀವು ಈ ಮೋಡ್ಯೂಲ್ ಅನ್ನು ನೋಡಬಹುದು.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "source": [ + "ನಾವು ಈಗ ಒಂದು ಯಾದೃಚ್ಛಿಕ ಫಲಕವನ್ನು ರಚಿಸಿ ಅದು ಹೇಗಿದೆ ಎಂದು ನೋಡೋಣ:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# code block 1" + ] + }, + { + "source": [ + "## ಕ್ರಿಯೆಗಳು ಮತ್ತು ನೀತಿ\n", + "\n", + "ನಮ್ಮ ಉದಾಹರಣೆಯಲ್ಲಿ, ಪೀಟರ್ ಗುರಿ ಒಂದು ಸೇಬು ಹುಡುಕುವುದು, ನರಿ ಮತ್ತು ಇತರ ಅಡ್ಡಿಗಳನ್ನು ತಪ್ಪಿಸುವುದು. ಆ ಕ್ರಿಯೆಗಳನ್ನು ಡಿಕ್ಷನರಿಯಾಗಿ ವ್ಯಾಖ್ಯಾನಿಸಿ, ಮತ್ತು ಅವುಗಳನ್ನು ಸಂಬಂಧಿಸಿದ ಸಂಯೋಜನೆ ಬದಲಾವಣೆಗಳ ಜೋಡಿಗಳೊಂದಿಗೆ ನಕ್ಷೆ ಮಾಡಿ.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# code block 2" + ] + }, + { + "source": [ + "ನಮ್ಮ ಏಜೆಂಟ್ (ಪೀಟರ್) ನ ತಂತ್ರವನ್ನು **ನೀತಿ** ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಸರಳವಾದ ನೀತಿಯನ್ನು **ಯಾದೃಚ್ಛಿಕ ನಡೆ** ಎಂದು ಪರಿಗಣಿಸೋಣ.\n", + "\n", + "## ಯಾದೃಚ್ಛಿಕ ನಡೆ\n", + "\n", + "ಮೊದಲು ನಾವು ಯಾದೃಚ್ಛಿಕ ನಡೆ ತಂತ್ರವನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸುವ ಮೂಲಕ ನಮ್ಮ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸೋಣ.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "source": [ + "# Let's run a random walk experiment several times and see the average number of steps taken: code block 3" + ], + "cell_type": "code", + "metadata": {}, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# code block 4" + ] + }, + { + "source": [ + "## ಬಹುಮಾನ ಕಾರ್ಯ\n", + "\n", + "ನಮ್ಮ ನೀತಿಯನ್ನು ಹೆಚ್ಚು ಬುದ್ಧಿವಂತವಾಗಿಸಲು, ಯಾವ ಚಲನೆಗಳು ಇತರರಿಗಿಂತ \"ಉತ್ತಮ\" ಎಂಬುದನ್ನು ನಾವು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕಾಗಿದೆ.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "#code block 5" + ] + }, + { + "source": [ + "## Q-ಲರ್ನಿಂಗ್\n", + "\n", + "Q-ಟೇಬಲ್ ಅಥವಾ ಬಹು-ಆಯಾಮದ ಅರೆ ಅನ್ನು ನಿರ್ಮಿಸಿ. ನಮ್ಮ ಬೋರ್ಡ್‌ನ ಆಯಾಮಗಳು `width` x `height` ಇದ್ದುದರಿಂದ, ನಾವು Q-ಟೇಬಲ್ ಅನ್ನು numpy ಅರೆ ಮೂಲಕ `width` x `height` x `len(actions)` ಆಕಾರದಲ್ಲಿ ಪ್ರತಿನಿಧಿಸಬಹುದು:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "# code block 6" + ] + }, + { + "source": [ + "Q-ಟೇಬಲ್ ಅನ್ನು ಬೋರ್ಡ್ ಮೇಲೆ ಟೇಬಲ್ ಅನ್ನು ದೃಶ್ಯೀಕರಿಸಲು `plot` ಫಂಕ್ಷನ್‌ಗೆ ಪಾಸ್ ಮಾಡಿ:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "output_type": "error", + "ename": "NameError", + "evalue": "name 'm' is not defined", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mQ\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mNameError\u001b[0m: name 'm' is not defined" + ] + } + ], + "source": [ + "m.plot(Q)" + ] + }, + { + "source": [ + "## Q-ಲರ್ನಿಂಗ್‌ನ ಸಾರಾಂಶ: ಬೆಲ್‌ಮನ್ ಸಮೀಕರಣ ಮತ್ತು ಲರ್ನಿಂಗ್ ಆಲ್ಗಾರಿಥಮ್\n", + "\n", + "ನಮ್ಮ ಲರ್ನಿಂಗ್ ಆಲ್ಗಾರಿಥಮ್‌ಗೆ ಪ್ಸ್ಯೂಡೋ-ಕೋಡ್ ಬರೆಯಿರಿ:\n", + "\n", + "* ಎಲ್ಲಾ ಸ್ಥಿತಿಗಳು ಮತ್ತು ಕ್ರಿಯೆಗಳಿಗಾಗಿ ಸಮಾನ ಸಂಖ್ಯೆಗಳೊಂದಿಗೆ Q-ಟೇಬಲ್ Q ಅನ್ನು ಪ್ರಾರಂಭಿಸಿ\n", + "* ಲರ್ನಿಂಗ್ ದರವನ್ನು $\\alpha\\leftarrow 1$ ಎಂದು ಸೆಟ್ ಮಾಡಿ\n", + "* ಅನೇಕ ಬಾರಿ ಸಿಮ್ಯುಲೇಶನ್ ಅನ್ನು ಪುನರಾವರ್ತಿಸಿ\n", + " 1. ಯಾದೃಚ್ಛಿಕ ಸ್ಥಾನದಿಂದ ಪ್ರಾರಂಭಿಸಿ\n", + " 1. ಪುನರಾವರ್ತಿಸಿ\n", + " 1. ಸ್ಥಿತಿ $s$ ನಲ್ಲಿ ಕ್ರಿಯೆ $a$ ಆಯ್ಕೆಮಾಡಿ\n", + " 2. ಹೊಸ ಸ್ಥಿತಿ $s'$ ಗೆ ಹೋಗಿ ಕ್ರಿಯೆಯನ್ನು ನಿರ್ವಹಿಸಿ\n", + " 3. ನಾವು ಗೇಮ್ ಅಂತ್ಯದ ಸ್ಥಿತಿಯನ್ನು ಎದುರಿಸಿದರೆ, ಅಥವಾ ಒಟ್ಟು ಬಹುಮಾನ ತುಂಬಾ ಕಡಿಮೆ ಇದ್ದರೆ - ಸಿಮ್ಯುಲೇಶನ್ ನಿಂದ ನಿರ್ಗಮಿಸಿ \n", + " 4. ಹೊಸ ಸ್ಥಿತಿಯಲ್ಲಿ ಬಹುಮಾನ $r$ ಅನ್ನು ಲೆಕ್ಕಿಸಿ\n", + " 5. ಬೆಲ್‌ಮನ್ ಸಮೀಕರಣದ ಪ್ರಕಾರ Q-ಫಂಕ್ಷನ್ ಅನ್ನು ನವೀಕರಿಸಿ: $Q(s,a)\\leftarrow (1-\\alpha)Q(s,a)+\\alpha(r+\\gamma\\max_{a'}Q(s',a'))$\n", + " 6. $s\\leftarrow s'$\n", + " 7. ಒಟ್ಟು ಬಹುಮಾನವನ್ನು ನವೀಕರಿಸಿ ಮತ್ತು $\\alpha$ ಅನ್ನು ಕಡಿಮೆ ಮಾಡಿ.\n", + "\n", + "## ಅನ್ವೇಷಣೆ ವಿರುದ್ಧ ಶೋಷಣೆ\n", + "\n", + "ಅತ್ಯುತ್ತಮ ವಿಧಾನವು ಅನ್ವೇಷಣೆ ಮತ್ತು ಶೋಷಣೆಯ ನಡುವೆ ಸಮತೋಲನ ಸಾಧಿಸುವುದಾಗಿದೆ. ನಾವು ನಮ್ಮ ಪರಿಸರವನ್ನು ಹೆಚ್ಚು ತಿಳಿದುಕೊಳ್ಳುವಂತೆ, ನಾವು ಅತ್ಯುತ್ತಮ ಮಾರ್ಗವನ್ನು ಅನುಸರಿಸುವ ಸಾಧ್ಯತೆ ಹೆಚ್ಚಾಗುತ್ತದೆ, ಆದಾಗ್ಯೂ, ಕೆಲವೊಮ್ಮೆ ಅನ್ವೇಷಿಸಲ್ಪಟ್ಟಿಲ್ಲದ ಮಾರ್ಗವನ್ನು ಆಯ್ಕೆಮಾಡುವುದು.\n", + "\n", + "## ಪೈಥಾನ್ ಅನುಷ್ಠಾನ\n", + "\n", + "ಈಗ ನಾವು ಲರ್ನಿಂಗ್ ಆಲ್ಗಾರಿಥಮ್ ಅನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸಲು ಸಿದ್ಧರಾಗಿದ್ದೇವೆ. ಅದಕ್ಕೆ ಮುಂಚೆ, Q-ಟೇಬಲ್‌ನ任意 ಸಂಖ್ಯೆಗಳನ್ನೂ ಸಂಬಂಧಿತ ಕ್ರಿಯೆಗಳ ಪ್ರಾಬಬಿಲಿಟಿಗಳ ವೆಕ್ಟರ್‌ಗೆ ಪರಿವರ್ತಿಸುವ ಕೆಲವು ಫಂಕ್ಷನ್ ಬೇಕಾಗುತ್ತದೆ:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "# code block 7" + ] + }, + { + "source": [ + "ನಾವು ಮೂಲ ವೆಕ್ಟರ್‌ಗೆ ಸಣ್ಣ ಪ್ರಮಾಣದ `eps` ಅನ್ನು ಸೇರಿಸುತ್ತೇವೆ, ಇದರಿಂದ ಪ್ರಾರಂಭಿಕ ಸಂದರ್ಭದಲ್ಲಿ, ವೆಕ್ಟರ್‌ನ ಎಲ್ಲಾ ಘಟಕಗಳು ಒಂದೇ ಆಗಿದ್ದಾಗ 0 ರಿಂದ ಭಾಗಿಸುವುದನ್ನು ತಪ್ಪಿಸಬಹುದು.\n", + "\n", + "ನಾವು 5000 ಪ್ರಯೋಗಗಳಿಗಾಗಿ ನಡೆಸುವ ನಿಜವಾದ ಕಲಿಕೆ ಆಲ್ಗಾರಿಥಮ್, ಇದನ್ನು **epochs** ಎಂದೂ ಕರೆಯುತ್ತಾರೆ:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "" + ] + } + ], + "source": [ + "\n", + "from IPython.display import clear_output\n", + "\n", + "lpath = []\n", + "\n", + "# code block 8" + ] + }, + { + "source": [ + "ಈ ಆಲ್ಗೋರಿದಮ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಿದ ನಂತರ, ಪ್ರತಿ ಹಂತದಲ್ಲಿ ವಿಭಿನ್ನ ಕ್ರಿಯೆಗಳ ಆಕರ್ಷಕತೆಯನ್ನು ನಿರ್ಧರಿಸುವ ಮೌಲ್ಯಗಳೊಂದಿಗೆ Q-ಟೇಬಲ್ ನವೀಕರಿಸಬೇಕು. ಟೇಬಲ್ ಅನ್ನು ಇಲ್ಲಿ ದೃಶ್ಯೀಕರಿಸಿ:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", + "image/png": "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Tz9N/fr1mTRpEuecc47RkY4gpWTOnDmcd9553HHHHSxdupS8vLyIt6sKt6KcBCkl2dnZfPjhh8yaNYusrKyoK47BYJD9+/fz6KOPsnz5cnJzc42OdMqZPn069957L02bNmXKlCm8+eabjB8/Hl3XI9quKtyKcpK6dOlCVlYWVquVTp064ff7jY50hOzsbLp160b37t1ZuHAhV1111fG/SflbxowZw4wZM/jss8/YtGkTt956K5MnT474jShU4VaUkzBr1iwef/xxLr74Ylq3bs20adOYMWOG0bHKSSmZPXs2s2fPxuVyMWbMGAYNGsT8+fONjnbKGTVqFEVFRbjdbq699loyMjIi3qYq3LXEU089Rc+ePfH5fDXmRrCBQIDvvvuO9957j0AgEFVDEb1792bRokU0atSIzz//nOnTp9O7d2+jYx3h4osv5scff+Scc87h3nvvZcWKFVG9e2RNdcMNNzB48GDatWvH6NGjq2XjKlW4a4nx48fz2Wef0aNHD5544gl+/fVXgsGg0bEqJKWkZcuWfPfdd2RlZdGgQYOoGopo2bIlubm5TJw4EQCfz8fTTz/N/v37DU4WIoSgbdu2LFq0iIULF6LrOpmZmcyaNYuioiKj4ymVpAp3LVG2peovv/xC9+7dee2113j11Vf55ptvjI52VF9++SW33nord911Fw6HgyFDhvDpp58aHaucEIIff/yR22+/nauvvpoNGzYwbdo0XnvtNXbs2GF0PADq16/PunXrqF+/Pq+88grr16/niiuuYObMmZSWlhodT6kEVbhrocsuu4xXXnmFRo0a8ccffzBo0CB27txpdKwjxMfH43Q6sdlspKSk4HQ6mTp1qtGx/uLss8+mZ8+eADRu3JjBgwczc+ZM8vPzjQ12mAEDBtC4cehWsD179uTCCy/koYceiqqhJ+XvUQtwaikhBNdffz0ul4vrr7+ecePGsWPHDq655hruu+8+EhIS/nLT3urUo0cP7rzzTnRdp27duvznP//hnXfeoWPHjkyYMIHevXuTmJgYdYsxWrduzfjx4xk4cCDNmjXj5ZdfJjY21uhYR+jevTupqal06tSJ2267jREjRmCxqFJQGdX9c6h63LWcw+GgWbNmfPzxx6xfv55zzz2X/v37s3DhQtatW2dYLiEEW7dupX///rRt25asrCx69+7N+vXr2bJlCzff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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "m.plot(Q)" + ] + }, + { + "source": [ + "## ನೀತಿ ಪರಿಶೀಲನೆ\n", + "\n", + "ಪ್ರತಿ ಸ್ಥಿತಿಯಲ್ಲಿ ಪ್ರತಿ ಕ್ರಿಯೆಯ \"ಆಕರ್ಷಕತೆ\" ಅನ್ನು Q-ಟೇಬಲ್ ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ, ಆದ್ದರಿಂದ ನಮ್ಮ ಜಗತ್ತಿನಲ್ಲಿ ಪರಿಣಾಮಕಾರಿಯಾದ ನ್ಯಾವಿಗೇಶನ್ ಅನ್ನು ನಿರ್ಧರಿಸಲು ಇದನ್ನು ಬಳಸುವುದು ಬಹಳ ಸುಲಭವಾಗಿದೆ. ಸರಳವಾದ ಪ್ರಕರಣದಲ್ಲಿ, ನಾವು ಅತ್ಯುನ್ನತ Q-ಟೇಬಲ್ ಮೌಲ್ಯಕ್ಕೆ ಹೊಂದಿಕೆಯಾಗುವ ಕ್ರಿಯೆಯನ್ನು ಆಯ್ಕೆ ಮಾಡಬಹುದು:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "2" + ] + }, + "metadata": {}, + "execution_count": 13 + } + ], + "source": [ + "# code block 9" + ] + }, + { + "source": [ + "ನೀವು ಮೇಲಿನ ಕೋಡ್ ಅನ್ನು ಹಲವಾರು ಬಾರಿ ಪ್ರಯತ್ನಿಸಿದರೆ, ಕೆಲವೊಮ್ಮೆ ಅದು \"ಹ್ಯಾಂಗ್\" ಆಗುತ್ತದೆ ಎಂದು ಗಮನಿಸಬಹುದು, ಮತ್ತು ಅದನ್ನು ಮಧ್ಯಂತರಗೊಳಿಸಲು ನೀವು ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ STOP ಬಟನ್ ಒತ್ತಬೇಕಾಗುತ್ತದೆ.\n", + "\n", + "> **ಕಾರ್ಯ 1:** `walk` ಫಂಕ್ಷನ್ ಅನ್ನು ಮಾರ್ಪಡಿಸಿ, ಪಥದ ಗರಿಷ್ಠ ಉದ್ದವನ್ನು ನಿರ್ದಿಷ್ಟ ಹಂತಗಳ ಸಂಖ್ಯೆಯಿಂದ (ಹೇಳಿದಂತೆ, 100) ಮಿತಿಗೊಳಿಸಿ, ಮತ್ತು ಮೇಲಿನ ಕೋಡ್ ಈ ಮೌಲ್ಯವನ್ನು ಸಮಯಕಾಲಕ್ಕೆ ಹಿಂತಿರುಗಿಸುವುದನ್ನು ಗಮನಿಸಿ.\n", + "\n", + "> **ಕಾರ್ಯ 2:** `walk` ಫಂಕ್ಷನ್ ಅನ್ನು ಮಾರ್ಪಡಿಸಿ, ಅದು ಈಗಾಗಲೇ ಹೋಗಿದ್ದ ಸ್ಥಳಗಳಿಗೆ ಹಿಂದಿರುಗದಂತೆ ಮಾಡಿ. ಇದರಿಂದ `walk` ಲೂಪ್ ಆಗುವುದನ್ನು ತಡೆಯುತ್ತದೆ, ಆದಾಗ್ಯೂ, ಏಜೆಂಟ್ ಇನ್ನೂ \"ಬಂದಿ\" ಆಗಿ ಹೊರಬರಲು ಸಾಧ್ಯವಿಲ್ಲದ ಸ್ಥಳದಲ್ಲಿ ಸಿಲುಕಬಹುದು.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Average path length = 5.31, eaten by wolf: 0 times\n" + ] + } + ], + "source": [ + "\n", + "# code block 10" + ] + }, + { + "source": [ + "## ಕಲಿಕೆಯ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಪರಿಶೀಲಿಸುವುದು\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[]" + ] + }, + "metadata": {}, + "execution_count": 57 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "plt.plot(lpath)" + ] + }, + { + "source": [ + "## ವ್ಯಾಯಾಮ\n", + "## ಇನ್ನಷ್ಟು ವಾಸ್ತವಿಕ ಪೀಟರ್ ಮತ್ತು ವುಲ್ಫ್ ಜಗತ್ತು\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/kn/8-Reinforcement/1-QLearning/solution/Julia/README.md b/translations/kn/8-Reinforcement/1-QLearning/solution/Julia/README.md new file mode 100644 index 000000000..0730e5aaa --- /dev/null +++ b/translations/kn/8-Reinforcement/1-QLearning/solution/Julia/README.md @@ -0,0 +1,17 @@ + +ಇದು ತಾತ್ಕಾಲಿಕ ಪ್ಲೇಸ್‌ಹೋಲ್ಡರ್ ಆಗಿದೆ + +--- + + +**ಅಸ್ವೀಕಾರ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವಾಗಿ ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/8-Reinforcement/1-QLearning/solution/R/README.md b/translations/kn/8-Reinforcement/1-QLearning/solution/R/README.md new file mode 100644 index 000000000..ed7da4d3e --- /dev/null +++ b/translations/kn/8-Reinforcement/1-QLearning/solution/R/README.md @@ -0,0 +1,17 @@ + +ಇದು ತಾತ್ಕಾಲಿಕ ಪ್ಲೇಸ್‌ಹೋಲ್ಡರ್ ಆಗಿದೆ + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/8-Reinforcement/1-QLearning/solution/assignment-solution.ipynb b/translations/kn/8-Reinforcement/1-QLearning/solution/assignment-solution.ipynb new file mode 100644 index 000000000..f280adbb2 --- /dev/null +++ b/translations/kn/8-Reinforcement/1-QLearning/solution/assignment-solution.ipynb @@ -0,0 +1,426 @@ +{ + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.0" + }, + "orig_nbformat": 2, + "kernelspec": { + "name": "python3", + "display_name": "Python 3.7.0 64-bit ('3.7')" + }, + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + }, + "coopTranslator": { + "original_hash": "eadbd20d2a075efb602615ad90b1e97a", + "translation_date": "2025-12-19T17:29:33+00:00", + "source_file": "8-Reinforcement/1-QLearning/solution/assignment-solution.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "# ಪೀಟರ್ ಮತ್ತು ನರಿ: ವಾಸ್ತವಿಕ ಪರಿಸರ\n", + "\n", + "ನಮ್ಮ ಪರಿಸ್ಥಿತಿಯಲ್ಲಿ, ಪೀಟರ್ ಬಹಳಷ್ಟು ದಣಿವಾಗದೆ ಅಥವಾ ಹಸಿವಾಗದೆ ಸುತ್ತಾಡಲು ಸಾಧ್ಯವಾಯಿತು. ಹೆಚ್ಚು ವಾಸ್ತವಿಕ ಜಗತ್ತಿನಲ್ಲಿ, ನಾವು ಸಮಯಕಾಲಕ್ಕೆ ಕುಳಿತು ವಿಶ್ರಾಂತಿ ಪಡೆಯಬೇಕು ಮತ್ತು ತಿನ್ನಬೇಕು. ನಮ್ಮ ಜಗತ್ತನ್ನು ಹೆಚ್ಚು ವಾಸ್ತವಿಕವಾಗಿಸಲು, ಕೆಳಗಿನ ನಿಯಮಗಳನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸೋಣ:\n", + "\n", + "1. ಒಂದು ಸ್ಥಳದಿಂದ ಮತ್ತೊಂದು ಸ್ಥಳಕ್ಕೆ ಚಲಿಸುವಾಗ, ಪೀಟರ್ **ಶಕ್ತಿ** ಕಳೆದುಕೊಳ್ಳುತ್ತಾನೆ ಮತ್ತು ಕೆಲವು **ದಣಿವು** ಪಡೆಯುತ್ತಾನೆ.\n", + "2. ಪೀಟರ್ ಸೇಬುಗಳನ್ನು ತಿಂದರೆ ಹೆಚ್ಚು ಶಕ್ತಿ ಪಡೆಯಬಹುದು.\n", + "3. ಪೀಟರ್ ಮರದ ಕೆಳಗೆ ಅಥವಾ ಹುಲ್ಲಿನ ಮೇಲೆ ವಿಶ್ರಾಂತಿ ತೆಗೆದುಕೊಂಡರೆ ದಣಿವಿನಿಂದ ಮುಕ್ತನಾಗಬಹುದು (ಅಂದರೆ ಮರ ಅಥವಾ ಹುಲ್ಲು ಇರುವ ಬೋರ್ಡ್ ಸ್ಥಳಕ್ಕೆ ನಡೆಯುವುದು - ಹಸಿರು ಮೈದಾನ)\n", + "4. ಪೀಟರ್ ನರನ್ನು ಹುಡುಕಿ ಕೊಲ್ಲಬೇಕು\n", + "5. ನರನ್ನು ಕೊಲ್ಲಲು, ಪೀಟರ್‌ಗೆ ನಿರ್ದಿಷ್ಟ ಮಟ್ಟದ ಶಕ್ತಿ ಮತ್ತು ದಣಿವು ಬೇಕಾಗುತ್ತದೆ, ಇಲ್ಲದಿದ್ದರೆ ಅವನು ಯುದ್ಧವನ್ನು ಸೋಲುತ್ತಾನೆ.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import random\n", + "import math\n", + "from rlboard import *" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "width, height = 8,8\n", + "m = Board(width,height)\n", + "m.randomize(seed=13)\n", + "m.plot()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "actions = { \"U\" : (0,-1), \"D\" : (0,1), \"L\" : (-1,0), \"R\" : (1,0) }\n", + "action_idx = { a : i for i,a in enumerate(actions.keys()) }" + ] + }, + { + "source": [ + "## ಸ್ಥಿತಿಯನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವುದು\n", + "\n", + "ನಮ್ಮ ಹೊಸ ಆಟದ ನಿಯಮಗಳಲ್ಲಿ, ನಾವು ಪ್ರತಿ ಬೋರ್ಡ್ ಸ್ಥಿತಿಯಲ್ಲಿ ಶಕ್ತಿ ಮತ್ತು ದಣಿವನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ. ಆದ್ದರಿಂದ ನಾವು `state` ಎಂಬ ವಸ್ತುವನ್ನು ರಚಿಸುವೆವು, ಇದು ಪ್ರಸ್ತುತ ಸಮಸ್ಯೆಯ ಸ್ಥಿತಿಯ ಬಗ್ಗೆ ಅಗತ್ಯವಿರುವ ಎಲ್ಲಾ ಮಾಹಿತಿಯನ್ನು ಹೊತ್ತುಕೊಳ್ಳುತ್ತದೆ, ಇದರಲ್ಲಿ ಬೋರ್ಡಿನ ಸ್ಥಿತಿ, ಪ್ರಸ್ತುತ ಶಕ್ತಿ ಮತ್ತು ದಣಿವಿನ ಮಟ್ಟಗಳು, ಮತ್ತು ನಾವು ಟರ್ಮಿನಲ್ ಸ್ಥಿತಿಯಲ್ಲಿ ನರಿ ಗೆಲ್ಲಬಹುದೇ ಎಂಬುದೂ ಸೇರಿದೆ:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "class state:\n", + " def __init__(self,board,energy=10,fatigue=0,init=True):\n", + " self.board = board\n", + " self.energy = energy\n", + " self.fatigue = fatigue\n", + " self.dead = False\n", + " if init:\n", + " self.board.random_start()\n", + " self.update()\n", + "\n", + " def at(self):\n", + " return self.board.at()\n", + "\n", + " def update(self):\n", + " if self.at() == Board.Cell.water:\n", + " self.dead = True\n", + " return\n", + " if self.at() == Board.Cell.tree:\n", + " self.fatigue = 0\n", + " if self.at() == Board.Cell.apple:\n", + " self.energy = 10\n", + "\n", + " def move(self,a):\n", + " self.board.move(a)\n", + " self.energy -= 1\n", + " self.fatigue += 1\n", + " self.update()\n", + "\n", + " def is_winning(self):\n", + " return self.energy > self.fatigue" + ] + }, + { + "source": [ + "ನಾವು ಸಮಸ್ಯೆಯನ್ನು ರ್ಯಾಂಡಮ್ ವಾಕ್ ಬಳಸಿ ಪರಿಹರಿಸಲು ಪ್ರಯತ್ನಿಸೋಣ ಮತ್ತು ನಾವು ಯಶಸ್ವಿಯಾಗುತ್ತೇವೋ ನೋಡೋಣ:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "tags": [] + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0" + ] + }, + "metadata": {}, + "execution_count": 5 + } + ], + "source": [ + "def random_policy(state):\n", + " return random.choice(list(actions))\n", + "\n", + "def walk(board,policy):\n", + " n = 0 # number of steps\n", + " s = state(board)\n", + " while True:\n", + " if s.at() == Board.Cell.wolf:\n", + " if s.is_winning():\n", + " return n # success!\n", + " else:\n", + " return -n # failure!\n", + " if s.at() == Board.Cell.water:\n", + " return 0 # died\n", + " a = actions[policy(m)]\n", + " s.move(a)\n", + " n+=1\n", + "\n", + "walk(m,random_policy)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Killed by wolf = 5, won: 1 times, drown: 94 times\n" + ] + } + ], + "source": [ + "def print_statistics(policy):\n", + " s,w,n = 0,0,0\n", + " for _ in range(100):\n", + " z = walk(m,policy)\n", + " if z<0:\n", + " w+=1\n", + " elif z==0:\n", + " n+=1\n", + " else:\n", + " s+=1\n", + " print(f\"Killed by wolf = {w}, won: {s} times, drown: {n} times\")\n", + "\n", + "print_statistics(random_policy)" + ] + }, + { + "source": [ + "## ಬಹುಮಾನ ಕಾರ್ಯ\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "def reward(s):\n", + " r = s.energy-s.fatigue\n", + " if s.at()==Board.Cell.wolf:\n", + " return 100 if s.is_winning() else -100\n", + " if s.at()==Board.Cell.water:\n", + " return -100\n", + " return r" + ] + }, + { + "source": [ + "## Q-ಲರ್ನಿಂಗ್ ಆಲ್ಗಾರಿಥಮ್\n", + "\n", + "ವಾಸ್ತವಿಕ ಲರ್ನಿಂಗ್ ಆಲ್ಗಾರಿಥಮ್ ಬಹುಮಟ್ಟಿಗೆ ಬದಲಾಗದೆ ಇರುತ್ತದೆ, ನಾವು ಕೇವಲ ಬೋರ್ಡ್ ಸ್ಥಾನ ಬದಲು `state` ಅನ್ನು ಬಳಸುತ್ತೇವೆ.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "def probs(v,eps=1e-4):\n", + " v = v-v.min()+eps\n", + " v = v/v.sum()\n", + " return v" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "" + ] + } + ], + "source": [ + "\n", + "from IPython.display import clear_output\n", + "\n", + "lpath = []\n", + "\n", + "for epoch in range(10000):\n", + " clear_output(wait=True)\n", + " print(f\"Epoch = {epoch}\",end='')\n", + "\n", + " # Pick initial point\n", + " s = state(m)\n", + " \n", + " # Start travelling\n", + " n=0\n", + " cum_reward = 0\n", + " while True:\n", + " x,y = s.board.human\n", + " v = probs(Q[x,y])\n", + " while True:\n", + " a = random.choices(list(actions),weights=v)[0]\n", + " dpos = actions[a]\n", + " if s.board.is_valid(s.board.move_pos(s.board.human,dpos)):\n", + " break \n", + " s.move(dpos)\n", + " r = reward(s)\n", + " if abs(r)==100: # end of game\n", + " print(f\" {n} steps\",end='\\r')\n", + " lpath.append(n)\n", + " break\n", + " alpha = np.exp(-n / 3000)\n", + " gamma = 0.5\n", + " ai = action_idx[a]\n", + " Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max())\n", + " n+=1" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAW4AAAFpCAYAAAC8p8I3AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOzdd3xUVd7H8c+Zmt5J6CC9qVQpKoqIoggIuouCoojCIkXQXUV3F0XEh10bYAFBUQFBwRXXroggIjYiKkWE0EsI6Zle7j3PH5mMsBBqkjsJ580rr2Tu3Mz9zoT8cubcc88RUkoURVGU6sNkdABFURTlzKjCrSiKUs2owq0oilLNqMKtKIpSzajCrSiKUs2owq0oilLNVFrhFkL0FUL8LoTIEkJMrqzjKIqinG9EZYzjFkKYge1AH+AA8CNwq5Rya4UfTFEU5TxTWS3uS4AsKeUuKaUfeAsYWEnHUhRFOa9UVuGuB+w/6vaB0DZFURTlHFmMOrAQYhQwCsBqtXa66KKLjIpySj6fD4fDQVpamtFRylVUVITVaiU2NtboKOXKzs4mPT0ds9lsdJRy7du3j4YNGxodo1zBYJDc3Fzq1KljdJRyOZ1OgsEgSUlJRkcpV25uLgkJCdjtdqOjlGvLli14PB5xwjullBX+AXQHPjvq9sPAw+Xtn56eLiPZjh075Lx584yOcVIrVqyQ69evNzrGSU2bNk0WFBQYHaNcuq7LcePGGR3jpPLz8+X06dONjnFS69atk++9957RMU5q7ty5cseOHUbHOKlQXTxhzaysrpIfgeZCiAuEEDbgFuD9SjqWoijKeaVSukqklEEhxDjgM8AMLJBSbqmMYymKopxvKq2PW0r5MfBxZT2+oijK+UpdOakoilLNqMKtKIpSzajCrSiKUs2owq0oilLNqMKtKIpSzajCrSiKUs3U2MK9cOHCsqs2FaXKeb1eli9fbnSM0/L222/j9/uNjlGut956K6LzGaHGFe6VK1cycOBAgsEggwYNYvHixYbkkFJy3333GXJsxVhPPfUUw4cPJzc3l4EDB7Jp0yajI53QTz/9xMCBAyksLGTo0KHMnDnT6EjHyMzMZODAgRQVFTF06FBmzZpldKSIUaMKdzAYJCsrixtuuIF+/foxatQotm3bhs/nq9IcL7zwAq1ateKWW26hZcuWzJkzp0qPX9mklBQUFBgdIyK53W42bdrEI488wk033cTFF1/Mnj170HXd6GjH0HWdPXv20LlzZwYNGsTkyZPZvHkzbrfb6GhAab7du3fTtWtXBg0axIMPPsjmzZvxeDxGR4sINapwHz58mF27dtG3b1/69u1Lly5dsNlsbN68ucoyFBQUUFRUxKJFi/D5fCxcuJCCggIKCwurLENlW716NdOnTzc6RkRavXo1HTt2JD09ndtvv52hQ4fy0Ucf4fV6jY52DJfLxRdffMGQIUO45ZZbqF+/Pq1bt2bdunVGRwNKZxhcvXo1f/rTnxgyZAiNGjWiVatWfP3110ZHiwiGTetaGerXr0/Lli0ZPXo0hw4dYvz48TRt2pROnTpVWQaPx4OmacTFxfH999+zb98+4uLi8Hg8JCcnV1mOyrJixQq2b9/Ov//9b6OjRKR+/foxZMgQfv/9d6644gruuusupk+fTkxMjNHRjhEfH8+AAQMYOXIke/fu5aGHHkJKyQMPPGB0NAASEhLo168fI0eOZM+ePTz44IMAEZPPaDWqcAP079+fNm3acOeddzJ+/HgaNGhQpcevV68eMTEx/OlPf2LZsmVcdNFFNG7cmMGDB5ORkRHRc1GXR0qJrut8+eWX7Ny5k3HjxlXJ8whPYWmqXm8Mp02bxv79+5k4cSLdunWjY8eORkc6oa5du/Kvf/2LcePGcfvtt9OoUSOjIx2je/fuzJgxg3HjxvHll1/y5ZdfGh0pYlSv34jTkJGRQY8ePYiNjaV79+6GTIo/ceJEfvjhB6ZOnYrD4WDTpk38+9//ZtCgQWRnZ1d5nnO1f/9+rrzySj7//HPuu+++KlmsYf/+/Xz33Xfce++9bNu2rVr1bbZo0YKrrrqKWbNm0aBBAyyWyGwfJScn06NHDxITE+natSvNmzc3OtIxyvKtW7eOtLS0iMhXUFCAw+EwOkbNa3FHAqvVitVqZdmyZeFtixYt4uDBgzz//PM0adKEP//5zyQkJBiY8vT89NNPvPnmm3z66adVurrOqFGjaNq0Kffccw8333wzr7/+Op07d66y458rIQRXXXUVq1ev5ocffqBXr15GR6q2oqKijI5AMBhk4cKFHDx4ELvdTt26dRk2bBhCnHiBmsqmCncVqlevHnfeeSfffvstjz76KM8++6xhP/jTsXXrVt5//30eeOCBKi3aH3zwAX369GHo0KE89NBD6LrOY489Rmpq6nH7Dho0iBtvvLHKsinnp2AwyIwZM3jzzTdxOp2MGjWKYcOGHbPP119/zSuvvHLC7+/cuTPjx4+vsDw1snA/+OCDzJ49OyKLYosWLWjRogVdu3Zl5MiRzJo1i+jo6Ih7O33kyBFmzJjBc889d8KCWZkuvfRSlixZwk033cTkyZN54oknuPnmm2nXrt1x+y5fvpypU6ee9PE+++wz0tPTKyvuSU2cOJHRo0fTuXNn4uPjDclwKgsXLuTWW2/lww8/NDrKCQkhmDVrFg8++KBhJ8VHjBjBf//7XzZs2MCzzz7LgQMHjjt30atXL/7xj3+c8Pvj4uIqNE9kVYsKkpOTQ+3atSOycJdp2bIl48ePp3///gwfPpzbb78dq9VqdCwAtm3bxrRp01i0aJEhJwZTUlKoX78+48aN4/rrr+fAgQO0adPmhH2cDz/8MJMnTz7p4xn5/yA1NZXCwsKIG8d9tHr16nHw4EGjY5RLCEHt2rXJyckxLMOrr75K9+7deffdd+nQoQM333wzmZmZx+1XVb8vNbJwVwdCCDp06MCaNWt4/fXX+de//kWbNm0YPHiwYZmOHDnC/Pnz8fv9PP/884aO5njqqacoKSnhww8/5Kuvvip3PyFERP+BBhg6dCiLFi1i3LhxRkdRzpLVamXAgAHhqTSGDx9u6P89VbgjwB133MGqVavCfcr9+/evkv8QUkrWr1/PkSNH6N+/P5MnT+ZPf/oTF198MSkpKZV+/FNJSEhg6NChRsc4ZyNGjKBjx46qcJ8jIQRSSkOKpdVqZdq0aezevZuYmBgyMjKqPMPRatxwwOpICMHVV1/N6NGjyczMpFOnTpX+1lVKSZs2bVi6dCnr1q2jXr16/N///R/XXXcddevWrdRjn2+EEKSmpqppAs5B06ZNueyyy3jzzTcNzXHBBRcYXrRBFe6IYrfbmTp1Kj/88APPP/98pR5r/fr19O7dm4cffpioqCh69uzJxo0bK/WY5yshBPPnz6/QUQXnG7PZjNVqjbipA4xSI7tKhg0bRq1atYyOcdYsFgszZsyo1GPk5eWRlpaGx+Ph5ptvZvXq1eTm5lbqMc9nqamp3H777UbHOCEhBH/729+MjnFKXbp0UVM1h9TIwn3NNdcYHSHiDRgwgAkTJuDxeMjIyODJJ5/kwIEDRseqsRITE+nbt6/RMU5ICFEtziW0adPG6AgRo0YWbuXUhBDs2LGDNWvWkJOTw8GDB7HZbEbHUhTlNKjCfR6z2Wzq3YmiVEPq5KSiKEo1owq3oihKNaMKt6IoSjWjCreiKEo1owq3oihKNXNOo0qEEHsAB6ABQSllZyFECvA20BjYA/xZSllzVspVFEUxWEW0uHtJKdtLKcuWJ5kMrJJSNgdWhW4riqIoFaQyukoGAm+Evn4DUMuTKIqiVKBzLdwS+FwIkSmEGBXaliGlLFsR9zBg/FRaiqIoNci5Xjl5mZTyoBAiHVgphNh29J1SSimEOOGsMKFCPwpKl/XZsWPHOUapPAcOHKCoqCiiM+bl5aHrekRndLlc7N69m7y8PKOjlMvv90f0a1hSUoLL5YrojIcPH47435eioiL2798f0ZNWnWzVpHMq3FLKg6HPR4QQK4BLgBwhRB0pZbYQog5wpJzvnQfMA0hNTZVr1qw5lyiVqqioiAMHDhDJGXfu3ElMTAz5+flGRylXXl4e69evx263Gx2lXE6nM6J/zl6vl29zv+W/a/5rdJRyxWTH0NvTO6KXazt48CCZmZlkZWUZHaVcJ339pJRn9QHEAvFHfb0e6As8BUwObZ8M/PtUj5Weni4j2Y4dO+S8efOMjnFSK1askOvXrzc6xklNmzZNFhQUGB2jXLquy3Hjxhkd46Ty8/Nlp+mdJBH8r/a62vK9994z+qU6qblz58odO3YYHeOkQnXxhDXzXFrcGcCK0DJCFmCJlPJTIcSPwDIhxEhgL/DncziGoiiK8j/OunBLKXcBF59gez7Q+1xCKYqiKOVTV04qiqJUM6pwK4qiVDOqcCuKolQzqnAriqJUM6pwK4qiVDOqcCuKolQzqnAriqJUM6pwK4qiVDM1rnBLKZk5cyaHDh2K6AlkFEVRzlaNKtw7duzgggsuIC0tjbvuuosbb1RTgSuKUvPUmMItpeSHH37gr3/9K23atGHx4sXUqVOH3377zehoNcaBAwfYtWuX0TEU5bx3rvNxRwwpJYcPH6ZBgwbMmjWLBx98kJSUlIie5rS6kFIyZcoUpJSYTCZ8Ph9PPvkkZrPZ6Gh89tlnNGnShObNmxsdRVGqTI0p3CaTiX79+tGrVy80TeOXX34hOTmZJ5980uhoQGnx03U9IordmdJ1nXfffZcVK1ZgsVgYNGgQU6dONfS5OBwOrrnmGq677jqWLl1KcXExK1asMCyPolSlGtNVAtCiRQt27drFNddcw+LFi/n000+NjgSUrgiyadMmhgwZwpYtWygqKjI60hmZMGECc+fO5euvv2bDhg0sWrSI0aNHG5pp586dtG7dmrvvvptnnnmGYDDIgQMHDM2kKFWlRhVuk8lEdHQ0ZrMZu90eMSutPPXUUzz22GM888wzjBkzhg8++MDoSGfk+uuvp2/fvqxcuZJ69eoxaNAg5s+fb2imd955h5tuuomXX36ZjRs30r9/f0P/UGuaxiuvvMI333xjWIaaYNOmTRF/HuXzzz/H5XIZmqHGdJVEqszMTJKSkpgzZw6PPPIIl156KZs3byYnJ4eMjMhfR3nFihXs3buXuXPncvjwYb766isef/xxLBZj/+uUnYSuVasW69evZ+/evWzfvt2wPEIIoqOj+eqrr5g7dy6xsbHMmTOH0EIjyikEAgHuuece6tevj9frxe128+KLL0bU67dz504ee+wx2rdvz7Jly2jdujUPPPCAIVlqZOGOjo7G6/UipTT8B9+qVSuWLVtGVlYWkydP5r333uOpp55i9erVrFy5MvwuwehC+L+klHz11Vds3bqVSZMmERMTg8PhQNd1EhMTjY5HfHw8q1ev5sUXX6Rbt25ceumlhuYxmUwMGzaM4uJicnNzcblcdOzYEYCZM2fSsWNHLBYL0dHRuFwuNm/ezJdffsm4ceOIjY3FZKpRb37PmNPpZMeOHTz55JO4XC4GDBiAw+EI//7u37+fYcOGnfB7V61aRUpKSqXmk1Jy8OBB4uPjueOOO9i6dSvTp09n1KhR4X0+/vhjZsyYcdz3pqWlsXLlygrNE1nVooLMmTOHTp06sWHDBsMLd2xsLI0aNWLKlCmMHDmSjz/+mEWLFnHZZZcxYMAApJQMHTqUtm3b0r17d0OzHm3t2rV88MEHPP300+HXMD4+3uBUfzCbzRw4cIDU1FRuvfVWw3/OZRITE0lMTERKSWZmJlD67mDq1Km0a9eOwYMHc/fdd9OnTx969epF06ZN+fnnn6lbt67ByY01efJknn32Wb799ltefPFF9u/ff8x1GPXq1Qu/nv+rKn72gUCAV199lX/84x/Mnj2bL7/8km3btjFw4MDwPtdee225GStajSzcQoiIumry3nvv5S9/+Qsvv/wyq1evDm9ftWoVAG+88Qbr1q2LiML9008/8fHHHwMcU7QjUdnPOBIzCiHCuZ599lkAfvnlF0aMGEHv3r2pV68eycnJzJw5k6VLl3L//fdH5POoKrNnz6Zly5bMmzePe++9lz179rBq1aqIeU1sNhv33nsvd955J6+++ipRUVEkJiby0UcfGZKnRhbuSGQymRgzZswJ77vjjjuqOM3xpJTs2bOHpUuXcvXVV3P55ZdHzC9NeSI93/+6+OKLWbx4MTNmzKBTp040aNCA9evX06lTJ6OjGc5qtTJ//nw2bNhAfHw8r776qtGRjtOqVSumTJnC888/T+/evenbt69hWVThVoDSUREPPfQQr732GrGxsUbHOS09e/akR48eRsc4I23atCE7O5sFCxbQs2dPFi5cyF/+8pdq90eooplMJvr06cPll1+OyWTCZrMZHek4iYmJXHvttfTo0cPw8xKqcCsAWCwWli1bZnSMM2K1WrFarUbHOGMrV64kKyuL9evXs3PnTqPjRJSoqCijI5xSJJzrUYVbUQzQrFkzmjVrZnQMpZqqsWOQlixZct6//VQUpWaqsS3u1q1bGx1BURSlUtTYFreiKEpNpQq3oihKNaMKt6IoSjWjCreiKEo1owq3oihKNXPKwi2EWCCEOCKE2HzUthQhxEohxI7Q5+TQdiGEmC2EyBJC/CqE6FiZ4RVFUc5Hp9Pifh3434vyJwOrpJTNgVWh2wDXAc1DH6OAORUTU1GU6kRdQ1G5Tlm4pZRrgYL/2TwQeCP09RvAjUdtXyhLfQckCSHqVFRYRVGqh0ianbMmOts+7gwpZXbo68NA2VIu9YD9R+13ILRNURRFqSDnfHJSlv5pPeM/r0KIUUKIDUKIDR6P51xjKIqinDfOtnDnlHWBhD4fCW0/CDQ4ar/6oW3HkVLOk1J2llJ2jo6OPssYiqIo55+znavkfeAOYEbo83+P2j5OCPEW0BUoPqpLpVyapvHee++dZZTKl5eXx86dOyM64+bNm9m7dy85OTlGRynX4cOH+fTTT4nkP9QlJSUR/XN2u93EZsfS5L0mRkcpV/yeeDa7Nkd0P/euXbuwWCxs3rz51DsbRNO0cu87ZeEWQiwFrgTShBAHgEcpLdjLhBAjgb3An0O7fwxcD2QBbmDE6QT0+wVjxkTuiucxMTp33BET0auy7927l8TExIjOaLfbqVWrVkQv1GCxWCL6NXQ6nXSxd2FGxvGL0kaKbYXbcJgcEf06xsTE8GTKk7gz3EZHKZdf+Mu975SFW0p5azl39T7BvhIYe9rJwt9n4vBh49dbLE9iYhZ16uRHxJqQ5cnJySEjI+OsM0op+f777xk8ePAx20ePHs3DDz9cISuSrFq1ik6dOmGz2XA4HCSnJJFTeIj42ERKAkf4vHAhu9xbMAUs2EUcQjeT7ThEt+S+XHPBLfjdPurXakhJSQmxsbEUFhYSExNDIBBA0zRiY2ORUhIdHU1BQQFxcXE4HA4SExPDt30+H4mJifh8PqSUREVFYTKZwuuULlmyJKJ/zgUFBfz4448RnVHXdfLy8iI646+//kr+hfkUNys2Okq54kxx5d5XY6d1VU5fMBhk/fr1XHPNNfh8vmPue+yxx7BarUycOJGYmJhzPpaUOvmBQ+xybcGEzvvZL9EstiN+3Y+NaFrYunLIt49iTxGtkjrQKPUiEqzJ/G31MOKtqYzt8A9q2epgC9gwmUzoug6ULn2laRpSSnw+H0IINE1DCEEgEAjfL4TA7/eH34YGg8GIXCZLUU5GFe7znKZprFixgokTJx5XtMs8+uijFBcX88QTT5zzUmESycYj3zNr43QyYjNomNiI4mCAX3ZvZc+h/bRp1gBrwMb2XVnktSjigsTWCA5glwlEiwSW/ryAlikXcm2z/kTZohFCYDab0XU93KcaCASwWq1omobFYkHTNOx2O0IILBYLwWCwNIuUBAIBVbiVakfNVXKeE0Lw3XffkZ1d/jnkYDDIO++8UyGLo5qEmc5pV1En0Iktvxfw65ZcNv6aTckhG3Z3bVz7Yzi43c+Wjbl8v3EjW3b9yNqf1uBxBVm/81uOOPKZu/5FCnx5OBwOoPStucfjwWKxYDIJYmKi8Xo9WK1WfD4fUVFRuFyucGs7NjY2XMQr4l2EolQ11eI+z2VnZ/P777+fcgRASUkJGzZsoGvXrud0PF3XiTXHMLv/bO5aMYJPNn+M7oNoGYVN2vgpS+NPl9zEyD5dKHYVYfPYOOD+BG9JPnkFhezQdhIMmBk4pz8rx68GwGazERUVhdfjZvOqGWT9uJhgUKN19zvodMPjOBwOUlNT8Xq9REdHk5eXh91uJxgM4na7SU1NPafnpChVTbW4z3Nms/m0ugpOd79TMZlM2O12vE4PL980l+tb9cNiNtOkVhO6NevGRY3bsTd3L1sObibfUUB2fjax+Y1w/Z7IhQmt8RTnge5FKxbcPftuhBB4vV4KCvJx5Gxh55Z1FJZ4qdduAEl12+MoKSEuLo7c3FyEELhcLtLS0rBYLFgsFpKSks75OSlKVVMt7vNcrVq1aNCgwSn3s9vttG3b9pyPJ6XE7/eTnJxMIBBgzk0v8Y/of/Ju5rsUOYuINccSI6LxCT9H8rdRXFhMvDWBgd0H4nQ4iSaF/NwjmJIP4c8JoGlBrFYrq1fM5MiebyjM3k+HqyZx+YBJBIOl93k8HpKTk9E0jZiYGIqLizGbzUgpcTqdJCYmnvPzUpSqpFrc5zmTycSIESNo1qzZSfd76qmnsFgq5u+8yWTCZDIhpSQ5OoXHr32cIZ1vxRlwsSt3N5sPbuXH3T+yr3A/Teo3pWHdhuzK3oXD6yBepHJJw57kbfBhb32Y1957hYDfy49r/oPXZ2Hg6AV06TMq/Phlw/zMZjNA+HYZNYudUh2pFvd5TghBu3btuOyyyzCZTGzfvv2Y+zMyMmjUqBG9e/eukJOTUFq4nU4nsbGxuFwuEuwJzOj3JI9f9yiDXhxMYUkhWft3kR6fRoEznzhrPF63FwKS3Nx84qyx9Ok0gAMHtvO1XMF3Y14jWZP07XUbjVp3x2q14na7sdvt4ZOTTqcTm82G3+8nJiYGTdPQdf2cR8mcqaysLOrUqRPRFyEpkU8VbgWz2cycOXO4++67ycrKCo+NBmjYsCHz588nJSWlQo5VNs46NTWVgoICkpKScLlc2Kw2/E4/H479kD0Fe/gg8wNcXhemoIlYWwwlRSUgBR63F7vZxpCrh9D54s6s/fVz5q+fwhX9hnBxtxvQNA2n00lKSgolJSUkJiZSVFREWloaDoeD6Oho8vPziYmJQUqJy+Wqkiv8ioqKmDt3bvgPSoMGDRg+fHilH1epmVThPs9JKZFSMnnyZJYuXXpM0Qb48ccfGTVqFCtXriQuLu6cuxaEENjtdgoKCoiOjqa4uBir1UowGCQuLg4pJc3SmzG+z3iklNgsZg6v+4LDP7xLjD2K1F7XkdS9N1a7ncLCQgKHg3iKBJdefRM2mw0pJUlJSeTt2cOPr75AwYF9JDdtTac77iEpvVa4v1vXdXRdr7J5UwoKCvjss894/fXX2bFjB//85z+5/fbbVVeNclZU4T5PlRXs/fv388gjj7B8+fLjinaZ77//ni5duvD666/TuXNnzGbzWRecshZ3YmIixcXFJCQk4Ha7sVgs4bHY+L2YfF62TRmP9HupP2gYnR/+P3Rhwmo2sXvev8j/JZOgppOVV4Q99wi+zT+y4Zu1HPn1JwKaRushd9Fh8C34fV40r4+lo27HWeJkwJSpJFzQlIwGDTGZTLhcLux2+7m8lKf1nCdNmsQbb7zBrFmzGDlyJA899BDPPPMMf/3rXyv12KcjPz+f5OTkCusKUyqfKtznISkluq7z7rvvsnz5ct59992TzkQG8Pvvv/OXv/yFUaNGMWTIEFJSUs66eJvNZgKBQPgqxrITiWazGc1RzKF5T+Hal0Xr+x/HGp9AoKgQ764dIMAnod7g22g0fCxBl4N6X62i8/bfyP9mLY0vv4oLh95NMOjHVViI31GMJkFHMuDvjxHUdL5+cyG/rlvH6Fdep0nHTuGTlpVJCMFzzz3HbbfdRvfu3Vm7di1vvPEG3377baUf+2RycnL45ptvWLlyJVdeeSVNmzalc+fOhmZSTo8q3OeZspb2vHnzuP/++8OTLZ2OX375hbFjx7J+/XoWLFiA1Wo94+IthDhmHpGyPxhSSggG2Tvn/9ByDtFk2F/w5x4mmHsYgaTsMEKCf99uvFKiAwktW5PUvhOaP4inKJ+SvTvRpESToEmJLiWaDrqUBHVJxxsGENB13vzr/dzyf/+m+TleUHS6UlNTadiwIZmZmaSmpjJhwoQqOe7JbNy4kVdeeYWXX36ZBQsW8NFHH7Fw4UKjYymnQRXu84ymabz66qs8/PDDeL3es3qMJUuWoGkar732GlFRUWf0vVJKgsEgycnJx5yctFgs7F+xGE/Wb1xw218g4EXoIETo45jHKC3gINHcLvxSlhbrUIHWdIkuCRfvoCbRpE4wtE+7nr3wef3MHTOaSW8vp3XHjmf1OpyJsvHiEyZMoF27doZfal9SUsLbb7/NvHnzmD59Ok888QRLlizh/fffZ8CAAYZmU05NFe7ziK7rvPXWW4wdO/aUXSMnI6XkP//5DykpKTz55JNndAGLyWQiKiqK7OxsUlNTycvLIzY2Fp/bRcEX79Ny2Fg0dzHSBAiBKdRCN4k/ji2lLF0sT0ooK9K6RNclQamj6RJNg2CocAd0naCEoK6j6QJN12nd41KOHDiAJy/vrF+H0yWlZMeOHcTFxXHJJZdU+vFOR3x8PDfffDPPPPMMmZmZrFmzhszMTMaMGWN0NOU0qMJ9HlmyZAnDhw8/pmuk7GKYshnzymMymcJ901A6A99LL72Epmk8/fTTxMWVP3fw0cpa3NHR0QQCgfCJwfx1X2CLjcObdxCzSWAyl54oE2YwH1W4dVnaqpa6AE1HlzpSgtRDLW29rEBLAnpp90hQlwQlpQVcL+1GCQR1Uus34qX7JjB/y1ZEJfZ1SymZOHEiP//8c6Ud40wJIWjcuDEej4eDBw/y8ccfc+WVV1bYRVZK5VKnkSPQo48+espCehHdQoQAACAASURBVKYWLFjAhAkTjuvP7tKlC/369TtlX3VGRgZjxx6/Rsb8+fO57777zmiZqrJjlX2WUuL4aT0xjZuheVzoHhfS7QKvCzxuhNeN2efB7PMgvKW3pdeF9LrRPW50txvd7UJ3u9DcTjS3m4DbddSHE7/rjw+vw4HX5aBu86ZovrPrLqoJ2rZty9y5c2nRogUzZ87kzjvvNDqScppU4Y4gH330Ea1bt6ZHjx506dKFKVOmnPNjlnWP3H///RQWFoa3R0VF0aRJE959911atGhxyseJi4tj2rRprF+/njZt2hzz+G+88QYjRow4rT82ZfNne71eLBYLfr8/tM2E1Pzhwq17XEiPC+lxQ6hYC2/p13g8cNR+utdF0BP6cLsJup0EQ0Xb73bhczrxuxz4XE68TjdepxOv04mnuLjcIZAV6bbbbuPtt9+u9ONUZw6Hgx9++IEnnniC4hP8XDRNo7i4+JiPOXPm0L59e3r3Pm4xrhpPvS+qZLm5uWzatOm09v3++++5+uqrsdlsvP3227zyyivhJcnOhpSSnJwcXnrpJYqL/1iiqW7duvzrX//ixhtvPKNLr+Pi4ujWrRvLly/n1ltvZdOmTUgp0TSNL774gk8//fSUrXdd1/H5fCQlJeF2u0lISMDv9+P3+ZH5OdhDXTfCLDCZBMIsECYTpW0MSRDQdJ2grhPUSrtBAqGvA1IS0EIfusQf1AnqUFJSjDkmFr8m8etH3R+6CKcy7dq1i+joaOrXr1+pxzkXHTp0IDMzkyuvvNKwDD179qRr16706dOHFi1a8Pzzz5OWlha+v6CggDlz5hzzPUOGDGHjxo1VHTUiqMJdyfLz81mzZs1p7bt161ZcLhdr167l7rvvJiYmhtzc3HO6JFvXdQKBQHhypfT0dKZMmcKgQYPOar4MIQStW7fmhRde4K9//Ss//PBD+D6/v/zFTcuYTCZsNhv5+fnUqlWLwsJC4uPjiUpIJPurT7GZTJCUBKHijal0SEnQ70PYo9Ep67cGn8uBOy8Xv6bjC+r4dYlP0/EFJZrJgiUtgwCC4kMHiKldD7+uE9DAp2kEdcjNPoz/LEfWnK7XXnuN2267LaLnJnn66afp1KmTYUXwo48+YtCgQdx1110sWLCAtLQ07rzzzmMuTkpNTWXVqlWG5ItEqnBXslatWvH444+f1r7Lli3j0Ucf5dlnn+XWW2/loosuol27dmd9bCEE6enpTJs2jb/97W9kZWXxn//8hw4dOpxTIRFC0L17d1577TXGjRvH999/z6OPPkrv3r1P2Veu6zp+v59atUovP09KSsLv91Nn8HByv1lF0e+b0Oo1JDYtHd0k0E2CoIDg/p1YGzRFAp6cQwRKivH6fKXdHkENvybxBCW+oIZX0/Ej0Pfvw4+Z6AYNKc7ORsTGEtDAq+kUFxSwa8tW2t9wI1TSZeeZmZlYLBYuvvjiSnn8mqJJkyYsX76cmJgYunXrxsqVK3n88ccZPHiwmhKgHKpwR5Abb7yRPn36cO+99/LOO++c9kiNk7FarfTq1YvVq1cTDAZJTU095peh7CrKUymb26PssmiLxUKbNm147733wl0fpzvTnq7r4XUiy94J2Os2RLfYCLjcsHsHaBq2uDgCUsMM+EuKEb/+UDpWW9MIaDp+Tcev/dE9EpR6aOw2BDQNb1EBvqBOfl4enoCGH0FCg8YUFhZy5OBhvP4gN4wZU2nFIT8/H5PJVGETdNVUrVu3Jjs7m3vuuYdevXqRnZ3NpZdeqor2SajCHUFsNhs2m42lS5dW6OOazeZyV3rRNI1GjRoRHx9PSUlJuY/RsWPHY4bvlUlISDijLEIIbDYbDocDu92Ox+MJF3HNHo1fl8iAhrmkmKAWQDu0PzQcUCAADRm+yMav6wQ1gV8/uu9aD/d5B/XSC26CWgBNg0BQw+N0UpCdgy4BYSI6rnK6MPx+P7///nuFLD5xPvjss8/YtWsXX3/9NVlZWUbHiXhqVMl5zmKxMHjwYBo2bFjuPkIIHnjggQqZjKlsBZykpCQ8Hg/x8fHouo7FYqHxsLvxhfqpXQUFuJ0OfJqOV9PxaDpuTccb1PEES2/7NfCFWt3HtLx1vfSKSb3s5GXpNl1CSUFh6YrwJhNdbhqMiKqc2QFdLhcffPABgwcPrpTHr4maNGnCHXfcYXSMakG1uJXTmu2voiZjKpvWNS8vj7i4OIqKirDZbAQCAepe2oeNOuhSR5cBdIcbgnrp+UlR2saQUg9dhAPB0MU2/tDJSr9eNlpE4tdK7w+UFXApEVFReD2+0n20IO2vvJKGTZpUyPP6XyNHjjxuFESkEkLw1ltvGR1DOQOqxa1UKSklgUCAtLQ03G43iYmJ4ZVoHC438V16lraygxpOhxN3oLSF7Q7ooa9laYs7qOMJanhCI0q8QQ1fUMOnafiDEr+m4dd0AqFiHgjquJxu/D4/8bVqce1fRmOOiqagoKDCn+OuXbuA0hZkdSCEoGXLlkbHUM6AKtxKlSq7AMftdmO1WvF6veFZAqPj42kxdCTeoAwVaA1vaLSIN6jhDWpHFe3SLhRvUIa7V3yaxBfqLvFrAr8Ofk0eM947ICUZzZtTUlBI9/4DKmUhhYcffpiZM2eqk2tKpVGFW6lyZRftCCHCI1qklFgsFpKbtaT+NQNChTrUqg6W9m3/0b8t8QRK7/eF9vOFRpkEQsW7tLtEKy3iusSvQ1DTadPzSjRhocdNN2OxWCplzclJkyYdc/GIolQ0VbiVKlVWtGNiYggEAkRHR4cXUfB4PJhi40ht1x4/ptJWt1baNeIOarjDRTxYerIyfLu0Ne7VSsdw+3SJN1h6sY1f1/CFWtu6MJFcrx4ORwkX9uyJpmm4XK4Kf47dunUzfNpWpWZTJyeVKlU2reuRI0dITU0lPz+fuLg4AoEASUlJaJpGiyHD2bluDXvXrkIgwnNyA0gpwhNaBeUfQwMDUhLUQicjQ5e0+8r6uDUdabHRrmcvfly1hhe//QZbVBRSyjMezqgokUC1uJUqVXZyMi4uDp/PR2xsbPiCHK/Xi9/vxyQErQfcjGaNwqOF+rYDGp7AH61r99F93prEG5Slre1Qt8nRwwSDmGhwUQcCCC6/+SY0q41gMEgwGMTpdBr9kijKGTtl4RZCLBBCHBFCbD5q22NCiINCiJ9DH9cfdd/DQogsIcTvQohrKyu4Un2ZzWY0TcNqtR4zj4rFYgkPO2x41bXEtGqLNyhxByXuoI776BOToe1l/d++QGl/ty980vKPfu/0Zi2ISU5hz5atXNirF7FxceF5yNX800p1dDot7teBvifY/pyUsn3o42MAIUQb4Bagbeh7XhJCVP5qrMo5OZO5tM9V2ZqTZdO5lp2klFKGiymUXhbfb9rTmJJTjyrYWqiAS1yhk5LewB/F3KOBJ1S0vZqGbrGSUL8Rlrh4igsKGHzfBFpeckl43LoQolJOTipKZTtl4ZZSrgVOd7DrQOAtKaVPSrkbyAIiY60mpVx2uz1cMKG0RXx0QZNSVtiwuf/tKomJiQnPgeLxeMIr7NhsNuo2a84tLy0gvmFjPAE99FHaReIrG99ddjWlpodHoviCEl9Q4pcCrz9ASUEhHa7uw9UjRhAVHY3D4UDTtEo7Oakole1c+rjHCSF+DXWlJIe21QP2H7XPgdC24wghRgkhNgghNgQCnnOIoZyrpKQkkpNLf4Rms5nRo0fz/PPPhy9xj42NpXbt2hVyrLIrJ4uKioiKigrPjxIMBomNjcVutyOlxOv14nA4aHZJN254/P/oMPjP+KQIjzLxmy1ccPmV4SGC3qBGVFo6cbXr4tW00svhfQFsMTEMGj+ePnfdhRACr9dLUlISZrMZi8VCfHx8hTwvRalKZ9vBNweYRumSrdOAZ4C7zuQBpJTzgHkA8fEZ0uc7yyTKORNC8Prrr+NyuRBCULduXeLi4rjiiivCJw7PZEHgU7HZbKSnp2M2m6lVq1b4QpWjZx4sG05nMpno1Kcv7bpfRv+/TQZCq7ybBDFJSTiPuvLRYrODEMfMsW2LiiK9YUP00JDD6OhohBDhdxDqIhmlOjqrwi2lzCn7WggxH/gwdPMg0OCoXeuHtikRTAhBo0aNjtveqlWrSjne0X3ZR3fRlPnfeVFMJhPW5GTikpOP2zc54/TeCZQ9YtnxVMFWqrOz6ioRQtQ56uYgoGzEyfvALUIIuxDiAqA58MP/fr+iKIpy9sSpRhQIIZYCVwJpQA7waOh2e0q7SvYAo6WU2aH9/05pt0kQmCil/ORUIRITU2SLFvef7XOodFari7Zt807YKo0Uhw8fxm63h/uqI9H27du54IILInokx6ZNm7jwwguNjlGuQCDAnj17aN68udFRylVQUIDf76+w8yKVYc+ePWyttZVAbMDoKOXa/ux2iguKT/jW8JSFuyrEx6dLv/93o2OUKyFhD3XrfsO2bcOMjlKuRo0+5aWXatGpUyejo5Rr5syZjBgxokL7yyva3//+d6ZPn250jHIVFRWxcOFCJkyYYHSUcm3YsIH8/HyuvTZyL+NYtGgRPXv2jOjGWMuWLTly5MgJC3eEXH0g8Psjt6UYCOSjafaIzqhp0cTGxkZ0i9tqtZKYmBixGcvmTInUfFCa0Wq1RnTGmJgY3G53RGe02+3ExcVFdMaTnYdRl7wriqJUM6pwK4qiVDOqcCuKolQzqnAriqJUM6pwK4qiVDOqcCuKolQzqnCfpzZv3hyeiU9RlOolQsZxK1Vl//79LFy4EJ/Ph81mo1WrVtx8881Gx1IU5QyoFvd5RErJ3r17+eWXXxg3bhwtW7Zk6dKlVbqQgqIo504V7vOI1+tl9uzZzJo1i8cff5zWrVtz/fXXs3jxYqOjnRWv1xuez1tRzieqq+Q8Eh0dzYQJE7j33nt56aWXuOiii7j88st59913jY52xj755BN27dpFbm4uF154If3798dmsxkdS1GqhGpxn2eaNGnClVdeyezZs3n44Yfp3Lkza9asMTrWGbv//vupU6cOffv25ZFHHsHtdhsdqVwvvPACHk9krvL00UcfkZWVZXQM5Qypwn2eqVu3Lvfddx933XUX48ePZ8yYMXz++ef8+uuv1aav+5///CczZ86kfv36/Prrr6xYsYJ7773X6FjlWrFiBX6/3+gYJ/Ttt99y8GDkr3Wyb98+HnvsMaNjlGvPnj1MnTq1yo6nCvd5qnnz5uFZ5h5//HGee+45tmzZYnSs0zJlyhQmT57Mxo0b2bhxI6NHj2bWrFlGx6qWateuzeHDh9E0zegoJ+X1etm9e7fRMcrl9XrZu3dvlR1PFW4Fi8XCK6+8wsKFC6tFt4nVauWGG27g448/JjMzk4suuojY2FijY1VL48aNY+7cuRHd1aQcTxVuBShd5/GRRx7hu+++Y926dUbHOaVp06Yxfvx4+vXrx4svvhheXFhRzgeqcCthSUlJjB07lmXLlrFt27Zq0+etKEar6sWnVeFWjhEfH8+sWbN46qmn+Omnn4yOoyjVQlU3clThVo4jhODFF1/kww8/ZPXq1UbHKVeTJk2QUrJr1y6jo5Tryy+/pGfPntjtdqOjlOuOO+5gwYIFRscol5SS5cuXM2jQIKOjlCstLY2GDRuycePGKjmeKtzKCUVFRTF+/HjWrl3Lhg0bIrLbpDoU7tWrV9OzZ0+ioqKMjlKu4cOH8/rrrxsdo1xSSt555x1uvPFGo6OUq6xw//zzz1VyPFW4lXKlpKTw0EMPMXfuXLZt22Z0HEVRQlThVk4qKiqK+fPnM2fOHL755huj4yiKgircymkQQjB9+nTWrl1bLcZ5K2cuNzeXN954w+gYx3nvvfcYO3YsBw4cYMyYMRHZeNB1nYkTJ7Jo0SIWLVrExIkT0XW9Uo+pCrdyWuLj4xkzZgyffPIJmzdvjsg+70hSUlJChw4dePXVVxkzZgzXX3+90ZHKdffdd5OXl8cDDzxAhw4d2Llzp9GRgNKC+P3333PJJZeQmppKgwYN2Lp1a6UXxTPl9/tZs2YNvXr1olevXqxZs6bSpzhQhVs5bUlJSTz55JM888wzbN682eg4ANSrV4+EhASjYxxny5Yt9OjRgxEjRjB79myio6Mj8iTqwYMH8fl8rF+/nuuuu47Bgwfz22+/RcQf5u+++47Y2FgGDRpEp06duPvuu9myZQv79u0zOtoxJk2axLx582jfvj3t27dn3rx5TJo0qVKPqQq3ckbMZjPz589nyZIlEdFtMmrUKC655BKjYxzniy++oHfv3lx66aU0btyYK664IiLf5v/yyy9cdNFF1K5dm759+9K9e3fWr18fEYW7R48euFwupkyZwnPPPcekSZNo164djRs3NjraMV544QWGDBlCdHQ0drudIUOG8MILL1TqMdV83MoZs1gsPPjgg8yZMwe73U737t2NjhRxxo0bR+vWrXn++ed58803Wbp0Kdu3bzc61nGuv/56/v3vf7Nr1y5uvfVWRowYwUcffYTJFBltumHDhrFt2zb+/ve/h1vekcZkMvHcc8+FhwI+99xzlf76qcKtnJXk5GQmTJjAQw89xAUXXEDt2rWNjhRREhMTyczMZNGiRXTr1i2ip51955132LNnD0uWLGHdunWkp6cbHSmsXbt2tG3blp49e0ZUrqMJIbjxxhvDE3VVxbw5qnArZy0uLq7S3xJWVyaTiXr16vHQQw8BVT+XxZlIS0sjNTWVTp06RWROIUTEFu2jVeVEZ6dszwshGgghVgshtgohtggh7gttTxFCrBRC7Ah9Tg5tF0KI2UKILCHEr0KIjpX9JBTjCCEi8pc9UlSX16e65FRKnU5HTBB4QErZBugGjBVCtAEmA6uklM2BVaHbANcBzUMfo4A5FZ5aURTlPHbKwi2lzJZS/hT62gH8BtQDBgJlI/bfAMomEhgILJSlvgOShBB1Kjy5oijKeeqMTn0KIRoDHYDvgQwpZXborsNARujresD+o77tQGjb/z7WKCHEBiHEhkAgMhdSVRRFiUSnXbiFEHHAf4CJUsqSo++TpYM+z2jgp5RynpSys5Sys9UafSbfqiiKcl47rcIthLBSWrTflFK+G9qcU9YFEvp8JLT9INDgqG+vH9qmKIqiVIDTGVUigFeB36SUzx511/vAHaGv7wD+e9T24aHRJd2A4qO6VBRFUZRzdDrjuC8Fbgc2CSHKZgl/BJgBLBNCjAT2An8O3fcxcD2QBbiBERWaWFEU5Tx3ysItpVwHlDfAs/cJ9pfA2DOPYvzcCKcW+RkjYY6JU4n0jJGeD1TGilIdMp6IiITgiYnJsn3724yOUS6z2U9iohObLcXoKOUKBktISrJU6dVbZ+rIkSOkpqZiNpuNjlKuAwcOYbHUNTrGSWgETIewpluNDlIu3a0TF4yLyFkbyxQUFBAXF4fNZjM6SrkWL15MYWHhCRvNEVG44+MzpNOZY3SMciUmZvHUU6u55557jI5Srvfee4+MjAy6du2Kz+fDarX+MW+xSeewby+FwRykLrFgAwSegJsYcwJNE9oidDM2mxVN0xBCEAwGEUJgMpkIBoPYbLbw57LHDwaDmM3mY/YtuwIvGAxitZYWl7Ir8p544gnGjh1LcnKyQa/SyUkp+fOfJ/DOO88bHaVcdnsB7aZcQ+YjmUZHKVftb2ozN28uAwcONDpKuV5++WV69+5Ns2bNjI5SroyMDHJyck5YuNVcJTWMpmnk5+cTFW/jh8IPSY9qRNDkZafzF7L9e3F4nTi8xdSNborH7yHdWp8dUb+xOz+LcV3/jt8XQAiB0+lECIHdbsfpdJKWlobT6SQlJYXi4mJSUlIoKSkhNjaWoqIirFYrNpsNm82GxWLB6XRGbIFWlOpOFe4aJqvoF/5T+ByiWHDYtxerjCIYlMSSTJq9HkkkU+R24dEDpNjrg27lk53vEm2JZ9qXD3JLu5HUjWlAfHw8UkqCwSCpqam4XC7sdjt5eXnExcVRUlJCdHQ0Pp+PpKQkpJRomhaeIc1ms5Gfn09SUhIWi/pvpigVSf1G1TC1Yhrx1qqNpESlcFGti2iS3opdh/bwxrqlNGuRSK3YOHb8mo25XpBL2/TEHIwi2pJEgSMPe0w8C36YQ7/WN9I2+WIsFitWq5Xc3FzS09NxuVykpKZSkJ9PYmIixcXFxMbGUlJSgtVaum9sbCwmkwmXy0VycnLEzOusKDWJKtw1TDQxzOu3gAc//xsfbf2EzzZ/gV23kZFcG3+uHZ8jjebpjThUtButSOfbn7+lfrsUsg4folmqnyJ3MV6fRtMrWpFkiUYIQVxcHH6/H58jm+3b3sdR4iAlvS5pTXqjaRpRUVHhfuyytfZMJhNer5fo6Gg165yiVDDVHKphTCYTLVKa8Y+r/o7JItiZv5NCTyFxUbG4/W7cARcN0hvQOq09CZ5mNE5og2O7RPh1zPjYd+QQn21axfQPnwBKT9jpug5S4+DWz1jz1kQyP/4HmZ8/gwid19Z1HV3Xw0OrTCYTUspqO9RKUSKdKtw1jNVqJeAP0L1+d/4z9D+kxaViMpsp8hZjtVnwaX62HthCriOX3/dt4+sN39Ioph0DMm7nl1W/06VVA2IcZpZ/spxAMACAo6SII3t/ZO1Hz1PkttPl5lfpc9ebBLTSUSV+vz88gqXsJKWu66q1rSiVRHWV1DDFxcXh/ujWtdvwzYR1DH7lZrLzs7FLGzZpJwo7ufm5SL9ORnJtNKmRcySPAR2HUPRbEYn2InyJ0ezcv51WF7TlqxVPsy3zQxpc0JrLrh5Fu0tuoKSkhLiYGLxeLykpKWiaRiAQwOl0IqUkJiaGvLw8UlNT1clJRalg6jeqhik7WWixWPB6vWTE1GbBrQv4YNMHzPlyDocKssEvibfE06ZeG2zCxpGiI8RYonGUOBAaxBc3xpFQxNT/TuRPTYeQ9duvJNVuQ/+RM0nNaITX6yUmJga/34/VasXtdofHb0dHl870qGka8fHx6uSkolQCVbhrmLITgoFAIHwRTstaLWjRaxKX1OtCjiuHJ995koN5h9iVs5OUqFRs2MjPy8PnDuB1ehhz4xjG9xhHccwBXn/uXyQf0Xhg2nySazXA7XYTHR2N1+vFbreHL8op6+cuOzlZVtDtdrvBr4ii1DyqcNcwuq5jsVjw+/3HnCSUEro36U5UdBR92/TFarPidDixmQUHd22nVmIqPgkxKbWIskWRnJRMSUkhv1/wM73u6kfj5u0RQqBpGiaTCWdeLgGLmYCmk1q3HiaTKVy8gfC+6gSlcq6OHDlCWlqaevd2FFW4a5ioqKjwuGqfzwcQnhvEbrfj9/uJj4onb8N6ogIeHEdyiD+0l5KiQpIu7EBC+24492Sx2+Nh/+EjbPr6G7p1vIzAwX0c2rGNqOhoSuKS2fv1KvZt/oW4WnWIadKCuNQ06rVtS0bzluHL4BMTE9Uvm3LWsrOzWbt2LWvXrqVHjx40a9aMrl27Gh0rIqjCXcO4XC5SU1NxOp1ERUWh6zo+nw8hBB6PhyiPg91vziU2ORV/dAyJtWqT0OMKpBAIwHNgL7K4ALseJHb3dnr43MhVH3Lo4B6EyUJhwE90ej1a9O5L097XIjWd379Zy+HNv7BvYyYOj5cbH/knyWlpFBcXk5qaqoq3clY2btzIm2++yZw5c1iwYAGff/65KtwhqnDXMAkJCaVzlURF4Xa7MZlMWK1WpJTEWs38PP4eEps0J7nnNZjMFpAa/oP7SifulRKz2UJis1boUhLboCnNBt+Cpun43CVYouPQpE4gEMRTXIAuQdMl9dtdTB0pKc7P5/1Zz/LqvaMZ9/pikpKSKm0mwEAggMViUcMNa6iioiKWL1/OnDlzmDp1KjNmzGDx4sW8//77DBgwwOh4hlNNoRqmpKSEtLS08JA8q9VKIBDAW5jP93ffSEzdetS57iZ0RzF6cQHSUYzwOhEeJ3hdSFcJWkEuwYJcdJeDYHE+mqMQ4ffjLyogUFhI0FFC0OUi6HYRcLvwOx34nKXdMwMnPoDzcDYv3Dmc/Tt3omlahT6/vLw8Nm7cyC233MLPP//M4cOHK/TxlciQmJjI4MGDefrpp/npp59YuXIlGzdupF+/fkZHiwiqcNcwUVFRuFwuhBAEAgE0TcNsNpP7wTJSGjSl3rWDCORlg9eN8Loxed0Irwfh82LyehAeF8JTeh8eJ9LtRHM7CHrcBN1Ogh4nuidUtJ1Ogk4nPpcTv8uJz+Ui4PHS45ah5OzeyZbVX1Z4i3jZsmU89NBDzJo1i6lTp/Lyyy9X6OMrkUEIQZMmTQgEAhw6dIjRo0dz1VVXRfRc7lVJFe4aJiYmhqKiIgA8Hk/pKA+fB8f2X0lq1Y5g3mHwuksLt8+FyefG7Hdj9rkx+T0Inxvhc4PHhfS6kV4X0u1GelxoHjdBt4ugy0XA5SDgcuJ3Owm6XPidLvwuBz63AxPQ+MKL+f6//6U4N7fCntvevXvZv38/r7zyCrNnz2bu3LlIKdm0aVOFHUOJHG3btuWFF15g0aJFNGjQgNtvv93oSBFDFe4IIKWkqKiIFStWsHTp0nN6rOLiYjIyMpBSEhcXh8ViIXvNZ+Dzo2sBNI8L6SktzKUtbhdmnxuLz4XJ60L4QsXa60G63eguN7rHheZxoLtLi3fA80c3ScDlxOd24nM58LuceJ0uPM4SajdrhqOgAGdhYQW9SlCnTh1q167NunXrGDFiRPhEVfPmzSvsGErk6dWrV7W8+tbr9VJYWMjgwYMpLCzE6/VW2GNXv1ejhtm5cydZWVm89NJLXHLJJTzyyCPn9HiJiYnk5OQQHx+Py+XCbDYTY7fisJnR/V70IEiTCUwgTQJMApPZhBAgdRC6BF0idYmuaeh66QlITdfRdAhqkoCU+HVJUJMEdZ2ADgFdJxC67dd1grpADwagAsdx22w2mjRpwgsvvICu66SnpyOEICoqqsKOUNx5nAAAIABJREFUoSgVZebMmSxfvpzly5dz1VVXMXz4cCZNmlQhj60Kt0F8Ph/Tp0/HZDJh/n/2zjxMiur63++t3qene1b2fTMoRECWQNxQIqIRlyRuuH0JKjHiL0YFJLgnGjdcokYkiiARxYhbNCFxjcEFRVAEkQAyyLDNMHvvtdzfH91dzigDA0zTPXjf5+mnq6uqqz59u/vUrXPPPcfh4Nlnn7Wnix8I0WiUQCAAYM9ajMViWPFYsuesgUNzYGlgOQSWpmFpAg2BJVMG27IwLYllSttoG5ZMGmgzuWyYSYOdMK2UsZboJuiWTBlxC1PXD/jzfJvx48czfvx45syZwx//+Efee++9Vj+HQrE/rFixghdffNF+/f7773PYYYfx/PPPs3DhQhYtWkR5eTldu3Y94HMpw51B0rMWH3vsMY4//nj69+8PwF133cW7777L1KlT6dmzJ7179261czocDrs6TXpg0ulw0bB+Lb5AAcLnw3BoCEey1y00AcKBACySRtewwLRMdFMmH5ZElxa6AQnTxJBJg50woWLzJvLad0TXHOgmyZ64BQkjmXQqU1x++eVUV1ezdOlSVqxYwVFHHZWxcymyixCCm266iTvvvJPrr78+23K46aabdtthGDRoEOPHj7df79y5k549e3L00UdTWVmJx+NptQLKynBnkIqKCgYPHsytt97Kr3/9a1avXk3Xrl2ZOXMmV155JYFAoNWjLtKj7kIIO5e2p7QduNzUr/0c0acf0uNBahrSIZBCkgg3IDx54HJhGgZ6wiAei1D75RoShkHMkMQtScwwiZkWcRMC/QZiut248vKIhSMYQqCbkriZdJls+3ozdZWViAxGARQXF1NYWMimTZsYNGiQijjIIVrzdy2EYMCAAbz00kutdswD4frrr99tp8Ttdje5a163bh0PP/wwo0aNYsqUKVx77bXKcLcF3njjDaZNm8bQoUNZtWoV/fv35//+7/8YOXJkxs6ZTuva0NCA3+/HMAw4cgQlo05k5z+fx4yGKezZBzMvD1MTOITE3LkV4fSA202ioY74rgoSZtKPHTctDFOSMCS6aWIYEt202LrqY+IGOEs7ENcN8OeD20tCCmp3VbN5/XpG//Iyijt1ythnBbj66qv5yU9+wpgxYygsLMzouRQt51DOUZOXl9ei/X71q18xefJkZs6cyZo1a1pVg4oqyRBSSjuDXiKRYObMmQQCATt7XqbIy8ujrq4OIQSxWAzDSBY7iMYTGJYkHgnTsHMbsVA99V9vor7sK8I1tYS2fk39pg2EK5JGO91z1k1JIjXoaFgSw5KYMj1gaVK3bSt1O3aw43//o2b7dio2l7H9q41YFvT+4ZH48vMz+nkhabxnzZqV8fMoFPuKEII77rij1Y+retwZQgjBaaedxg9/+EPuvvtuHn30UdasWcM999yT0fMmEgny8/OJRqO43W5M08Q0TXxdumA4XGDoiIYGpNuNrKrEIS2E0JIz3gFTJgcm9bSv2pIkUhEjugW6tFKRJSR94VJikhzEjMdiRENRLCHw5AeJxeNYlpXxXCU//elP7fEDxaGJpmlomoZhGG0yNLC1UT3uDNK+fXu2bdtGXV0d1113HcuWLTso503fpja+Xe194a/RSjsSMU0ikRjhujqiuklUt4jqFhHDIqKbRAyLqCGJGxA3LOKGRcIgFTWSjBbRLYlpfNMLT5gWFoJwfZhoNIphWAz66TiOu2DCQfm8Qgj69u17UM6lyA59+vTh+OOP56mnnsq2lJxAXboyiBACp9PJb37zm4N2TrfbTTQatXsn8E3xXq2wHcbXm5DSxAxF0EwLh5AIJKQHMwFLymTMtmXZPe94ymgnrORApW5Z6DJp0E0LDMAk6ULpf/RxONDI8/pUZkBFq5CusJTO9/59RxnuQ4x0Dch0WlfDMNB1Hcuy6HnxFXz824/RLAvDSqAhcGiSZELXJBYyOelGSgxJKn5bohvJiTUJ08IwIWGRmnCT8oNbJnHDwuH1oHlcjLt8MvX19Xi9XmW8Fa3C6NGjD+lBz31BGe5DjEAgwK5du/B6vYRCIYQQuFwuHA4HvX50NMvy8kk01KEJcGoCzRIIIdNZXTFlssdtkexxmxYYqZmSycHKpNFOWCZxE3QzuV/ClEinix+ffR7rVn5Kj4ED8fv9yh+paDV69OiRbQk5w167QkKIbkKIt4UQXwgh1gghfpNaf4sQYqsQ4tPU49RG75khhNgghFgnhDg5kx9A0ZRQKERBQQFSSrxeLy6XC9M0sSyLiK5z4oNP2vHYETPp247qFpGUnztqmkQNk6huEjOs5EM3SRhmctJNKkQwYaSnt5vELTBMi/4/PoZP3n6bKY/Nwe12EwqF1K2tQpEBWtIdMoBrpZQrhBAB4BMhxOupbfdLKe9tvLMQ4gjgPGAA0Bl4QwhxmJSydRMzK3aL2+0mFos1qfmYdlW43W487TvQ8egT+fq/b6Kl/IaCpJ9boiGRqZ530ndtWhaGlN9Mebe+CRFMWBZxM+nv9gQLiMYS/OjUU+nYowemaeJyuVShA4UiA+y1xy2l3C6lXJFabgDWAl328JYzgGellHEp5SZgAzCiNcQq9o7X66WhoQEhBIlEAsuycDgcyWRTeXk4C4vpPOLHxA2ZiipJ9qyjhkw+p6JMooZF3DSJmZKYSeqR7G3HzeQAZdJVYmEJJwNO/AnRRIIfn34mgWAQ0zTx+/3KcCsUGWCfRo2EED2BIUA6rm2KEGKVEGKuEKIota4LsKXR28rZs6FXtCL19fW0a9cOy7KShtrpRNd1dF2npqYGf14eA867hK4njCVqJV0hYd0knDCJpMIDIylXSThlwGO6ScwwiOsmcd1KulqM5ECl6XDxg2OOp3pXFUf95CS6DBxIbW0tLpeLXbt2tXoFHIVCsQ+GWwiRDywGrpZS1gOPAn2AwcB2YJ+mrgkhLhdCLBdCLNf16L68VbEHgsEg1dXVaJpGJBJB13VcLhcul4vCwkIikQgOl4vuJ52K4fLZcdtRUyZjuc3Ua0MSNSz7ETMkMVMSTfu4LQleL+379EU6HUTq6+jSvz/BggIKCwvRdZ3i4mKVP0ShyAAtGvIXQrhIGu2npZQvAEgpdzba/hfg1dTLrUC3Rm/vmlrXBCnlHGAOQCDQQcbj+yNf8W0ikQjBlKsiXeU9Hc+dSCTwer2YpsmIs84mWl3Fq7fcQFNvxjfx3KYlkwWBU1PcDZnMHKhbFlI4yA8WgdvD9k1lXH7PPQw49lii0agdv97Q0EAwGFTGW6FoZVoSVSKAJ4C1Usr7Gq1vnD3oLGB1avkV4DwhhEcI0QvoB3zUepIVe8Ln81FfX2/nSjEMw54u7Pf7icViSCmpr6/n+F9OZuwNt2A4XMnetGEl/d6GRUI4iDZaFzMtElIjZpjEDUkcQSQaY0fZ11x08630+9GPkpkIPR47flz5uBWKzNCSHvfRwEXA50KIT1PrfgecL4QYTDLFRRkwGUBKuUYI8RzwBcmIlCtVRMnBw+Fw4HQ6cTqd9mSF9HLjbU6nE7fHw6gL/o++Q0fy+qMPU78rWR9SAqMmXMB/n/4rUoJlSZy+PLr98Ies/eADLAkSQXGnjlzwu99R3K0bTpfLPm76nE6nUxluhSID7NVwSymXArv79/1jD++5Hbj9AHQp9hNN0ygtLW12e0FBAQB+vx9I5lNp3749A4477jv7jp146X7rcLlc+/1ehUKxZ9RcZIVCoWhj5Mh8ZInHU51tEc3idtcTi8Wors5djZFIhFAolNMadV2ntrY2x/NNmDn9W/R4anHoDjzVnmxLaRZ3yE0kEsnp32IsFqO+vj6nNe7pfyJy4U9UXFwsr7vuumzLaJZwOExlZSU9e/bMtpRm2b59Ox6Ph+Li4mxLaZZ169bRu3fvnHajfPbZZwwaNCjbMppF13WWLv2KmpofZFtKs3i91QwZEqdThqsfHQibNm2iffv2tsswF7n33nuprq7e/SBRuqBtNh/t27eXucz69evlnDlzsi1jj7z44ovy/fffz7aMPfL73/9eVldXZ1tGs1iWJadMmZJtGXukqqpKDh16u0ymBMvNR8eOS+VLL72U7abaI7Nnz5br16/Ptow9krKLu7WZysetUCgUbQxluBUKhaKNoQy3QqFQtDGU4VYoFIo2hjLcCoVC0cZQhluhUCjaGMpwKxQKRRtDGW6FQqFoYyjDrWhCKBQiHA5nW4ZCodgDOZKrRJFtLMti8eLFbNy4EafTSa9evfjZz36m0rIqFDmI6nErADBNk+nTpzNy5EgGDRrE1KlTsy1JoVA0gzLcCgAmT57M4sWL2bVrF7qu88wzzzBlypRsy1IoFLtBuUoUADzyyCOMGjWKSy65BI/Hw/Tp01mxYkW2Ze2Vbdu2kZ+fTzAYzLaU3bJt2zYCgQCBQCDbUhSHEKrHrQDA7XYzZswYqqurmTt3LkcffbRdhiyXeeyxx/joo9wtafroo4+yfPnybMtQHGIow60AkrUqZ82axcSJE/H5fEybNk0NTCraBLW1tdx1113ZlnFQUYb7IGIYBqFQKNsy9kjv3r156aWXuOyyy3K8Uo1CARMnTuT000+nT58+9OvX76C597JdyUkZ7oPEhx9+yKJFi7j11ltZsmQJkUgk25KapaSkhD59+vDxxx9nW4pC0SxfffUVPp+Pq6++mt69ezN16lQ+//xzTNPM2DnLyspYsmQJU6ZM4V//+hdfffVVxs61J9q04Q6FQixYsGCv+0kpuf3225k5cybvv//+QVD2Xa655hpqa2uZMGECM2bMYNu2bVnR0VLuueceZsyYkW0ZCsV3SCQS3HDDDVx66aXs2rWLL774go0bN9KtWze2bNmCZVkZO/cLL7zAggULmDVrFgsXLuS5557L2Ln2RO6PPjXDzJkz+eyzzzj99NMZPXo0Dz30EAMGDLC3X3zxxWzdutV+PW3aNPLy8ujevftB1/roo49y5ZVXMnLkSC699FK2b9/OZZddxhtvvGH7kYUQOedTFkIgpcw5XWnSt6q5qk9xYKTLdAGUl5dzySWXAOByuZgxYwYnnXQSv/vd74hGo4wePZoJEybwt7/9LWM1TdeuXUtlZSUPPPAAV1xxBf/73/947733+Ne//gXAuHHjdjv/IRP/7TZpuGtra/n666958MEH0XWd9957j5EjR9K3b180LXkTsXDhQrp27Wq/x+/329sONhMnTuTUU09l2LBh/PWvf2Xy5MnMnDmT4cOH2z/Md955h4KCgqzo2x3BYJBrr72WO+64g5kzZ2Zbzm75z3/+g6ZpHH/88dmW0izFxcVUV1djWVbWfn9tidraWnbt2gXAypUrueOOOwDo2rUrr7zyir1ffn4+Qghef/11Kisruffee1mzZg15eXkZ03bYYYdRUlLCSy+9xJw5c3j66aeprq7mmmuuAeAf//gHQ4cO/c773nrrLYqKilpVS5s03B988AGDBw8mPz+fqVOnsmLFCkaPHs0LL7yAx+PJtrzv4PV6Of7443nwwQfp1q0bxcXF9O7dO6fjpIUQeDwe4vF4tqU0i2EYADkdtvjb3/6WMWPG8JOf/CSnLsy5hmmaLFy4kM2bN/O///0PgEGDBrFy5co9vi8vL48ePXrw0EMPZVyjw+Fg4MCBLFy4EF3X+fjjjznnnHPsGP1zzz2Xc889N+M6oI0a7lNOOYXZs2ezYcMGrrnmGi655BJmzpyZk0Y7zc0330xNTQ2rV69uM77j/v378+677/LFF19wxBFHZFuO4hAnkUgwZswYbrjhhmxLaZZx48Yxbtw4Fi9ezPz587PmpmuThhvg4Ycfpry8nEceeYRnnnmGnj17ZlvSXikqKuLYY4/NtowW07lzZ9xuN2VlZRx++OE55UuOxWIkEgl0XScajeL1enNKn2LfcDgcTJo0KdsyWszPf/7zrJ6/zRrubt260bVrV0aMGIHD4ci2nEOW66+/nlNPPZVRo0a1up/uQDjyyCNxu93U19fz6KOPsnHjRgoLC7Mtqwm1tbV8+eWX1NXVsXz5cnr06EHfvn2zLUtxCNBmDTck/bDKaGcWTdMyGl61P7z66qtMmDCBY445hvfee4+OHTuyaNEiJk+enG1pTfjoo4+47bbbqKio4KmnnsIwDJ5++ulsy1IcAqhhbsVeueWWW3IqsqRjx45s27aNI488knPPPZetW7c2iSDKBUKhEC+99BJPPPEE/fr1484772To0KF26JhCcSDs1XALIbxCiI+EEJ8JIdYIIW5Nre8lhFgmhNgghFgkhHCn1ntSrzektvfM7EdQZJpRo0bx5ZdfZluGzbBhw1i5ciVTp07l73//O/PmzeOYY47Jtqwm5OXlMXbsWBYtWsTChQvZtm0bq1evblNjHIrcpSWukjhwopQyJIRwAUuFEP8ErgHul1I+K4SYDUwCHk0910gp+wohzgPuAg5OjIwiIwghePPNN7MtowkfffQRq1at4osvvmDz5s05NzCpaRo9evRg7ty5tG/fnjfeeINRo0ZlNM5Y8f1hr4ZbJmeIpDMjuVIPCZwITEitnw/cQtJwn5FaBngeeFgIIaTKWNSmyTXDKIRg0KBBDBo0KNtSmmXIkCG88sorLFq0iKeffjqnw1UVbYsW+biFEA4hxKdABfA6sBGolVIaqV3KgS6p5S7AFoDU9jqgpDVFKxRtiXPPPVcZbUWr0iLDLaU0pZSDga7ACKD/gZ5YCHG5EGK5EGJ5NBo90MMpFArF94Z9iiqRUtYCbwOjgEIhRNrV0hVIZ3TaCnQDSG0vAKp2c6w5UsphUsphPp9vP+UrFArF94+WRJW0E0IUppZ9wEnAWpIG/Bep3S4BXk4tv5J6TWr7W8q/rVAoFK1HS6JKOgHzhRAOkob+OSnlq0KIL4BnhRB/AFYCT6T2fwJYIITYAFQD52VAt0KhUHxvaUlUySpgyG7Wf0XS3/3t9THg7FZRp1AoFIrvoGZOKhQKRRtDGW6FQqFoYyjDrVAoFG2MnMgOaFkW7733XrZlNMuOHTvYvn17TmssKyujpqYm5zL5Naa6upqPP/4Yv9+fbSnNEolEcvp7DoVCeL3VdOyYuxqLitZRVtaQ0+24fft2Vq1axc6dO7MtpVn29F/OCcMtpaSq6juh3jlDXV0d0Wg0pzWGw2GefFKjoSF3NXbvnuBHP6ohFotlW0qz1NQYXHRR7rah0xmh07iP8U17IdtSmsW9KUg4fE5O/19isRg31N5AzJm7v8W4bL5sYE4YbofDwemnn55tGc2yYcMGTNPMaY2WZVFR0YEdO0ZlW0qzlJSsYuzYsTlVkKExUkoWLHidTZty93v2eKoJdryXTadvyraUZun4XkcG7BqQ0/+X7du3s+24bdT1rcu2lGbJd+Q3u035uBUKhaKNoQy3QqFQtDGU4VYoFIo2hjLcCoVC0cZQhluhUCjaGMpwKxQKRRtDGW6FQqFoYyjDrVAoFG0MZbgVCoWijXHIGO5Zs2aRSCSyLUOhUCgyTps33O+88w5HHXUUPXv2ZPTo0dxyyy3ZlqRQKBQZpU0bbl3X2bhxI//v//0/jjjiCObNm0dNTQ27du3KtjSFQqHIGG3acMdiMTZu3MjAgQP597//zWuvvUa7du346quvsi1tryQSCZ5//vlsy1AoFG2QNm24A4EAI0eOZOLEiZx00knMnDmTsrIyRoz4TinMnCMej/PII49kW4ZCkXPce++9VFdXZ1tGTtOmDTfA2LFjWbJkCX/4wx946aWXsi1HoVDsJ6tWraJPnz50796dn/3sZ1x00UXZlpSztHnD7fV66dKlC08//TSHH344hYWFlJeXZ1uWQqHYByzL4tNPP2XatGn07duX5557jvz8fDZu3JhtaTlJmzfcaYQQdOvWjf79+/Pmm29mW44iy5SXl/Pqq69mW4aihViWxdatW+nSpQtlZWU88MADlJaWUlFRkW1pOckhY7jT/PSnP2XFihWq1/09ZuLEiUybNo01a9Zw/PHHqyijNoDT6WTs2LFcccUVFBcX89RTT/Hoo48yY8YMPv3005yupZoNcqJ0WWvSqVMnvF4vmzZtokuXLgghsi1pt2zZsoUuXbpkW0ab4euvv25xrcrly5czb948OnXqRFlZGZs2baKkpCRnfwuKJIMHD2bt2rXceOONLF26lNLSUgCmTJlCRUUFDzzwAB06dKCgoCDLSrPPIWe4Ae666y6GDBnCJ598krN/1gsuuIBPPvkk2zLaDHPnzmXTppbVWdy+fTsPPvggJ598Mueccw7PPvssw4YNy7BCxYHicDjIz8/n/vvvb7J+3rx57Nixg+nTp9O/f3+6devGhAkT0LRDzmHQYg5Jww0wffp07rnnHqZPn55tKYpWYF9mxA4ZMoTevXvTvn17fvnLX7J06dKcvYArWkbHjh2ZP38+S5cuZe3atVx22WWMGzeOs88+O9vSssIhe8k67bTTeOONN1T+ku8hL7zwAiNGjOCdd97hn//8J+3bt8+2JEUrccwxxzBp0iSmTp1KWVkZ7777brYlZYVDtsft9/u54YYbuO222/jDH/6QbTk2O3bsYOPGjYTDYd5//326detGjx49si3rkKJXr1707NmTcePGfa9vpw9VNE2jf//+HHbYYd/bO6lD9ledDg90Op05NQX+lVde4Y9//CN1dXU88sgj/OUvf8m2pEMSIYQy2oc4mqYpw90cQgivEOIjIcRnQog1QohbU+vnCSE2CSE+TT0Gp9YLIcSfhBAbhBCrhBBHZfpDNEfv3r1xuVysW7cuWxKasHnzZjZs2MDs2bPp3Lkzf/rTn3C73axYsSLb0hQKRRuiJV2SOHCilHIQMBgYJ4QYmdo2VUo5OPX4NLXuFKBf6nE58Ghri94Xrr76ahYvXkxNTU02ZQDQpUsXevTowZIlS1iyZAnLli1D13UGDBiQbWkKhaINsVcft5RSAqHUS1fqIffwljOAp1Lv+1AIUSiE6CSl3H7AavcDv9/P448/no1Tfwen00nfvn3585//jKZpvPLKK5x99tl4PJ5sS1MoFG2IFjkBhRAOIcSnQAXwupRyWWrT7Sl3yP1CiLT16QJsafT28tQ6BXDyySfz8ssv43Q6efHFF7nggguyLUmhULQxWmS4pZSmlHIw0BUYIYQYCMwA+gPDgWJgnwKmhRCXCyGWCyGWR6PRfZTd9rn44ou/twMrCoXiwNinYXcpZS3wNjBOSrldJokDTwLpJNhbgW6N3tY1te7bx5ojpRwmpRzm8/n2T71CoVB8D2lJVEk7IURhatkHnAR8KYTolFongDOB1am3vAJcnIouGQnUZcu/rVAoFIciLZmA0wmYL4RwkDT0z0kpXxVCvCWEaAcI4FPgV6n9/wGcCmwAIsDE1petUCgU319aElWyChiym/UnNrO/BK48cGkKhUKh2B1qaplCoVC0MZThVigUijaGMtwKhULRxlCGW6FQKNoYynArFApFGyMn8nEbhsFjjz2WbRnNUldXR3l5eU5r/Oqrr+jePY/S0lXZltIswWAZCxYsyOncLIZRzcCBufs9OxwxCjYVMPCxgdmW0ix52/P4IPYBO3bsyLaUZlm9ejV96vqQKMjdQitfG183uy0nDLfD4WDMmDHZltEs5eXlaJqW0xqdTicjRxbzwx/+MNtSmuWJJ8r4/e+PRdcD2ZbSLCedtIIXX8zd77m+vp7FiyuYOGb30yMkEomFlBKBsNcBaMJhr8skq1atora2luOOOy7j59pf6urqmDViFl27ds22lGYZpY1qdltOGG4hBH379s22jD2yfv36nNa4evVqOnTokNMa/X4/DQ09iceLsi2lGSSa5m7VNty+fTv5+fkEAq1zsaqursbv99OrVy+qqqqSK3069eFaCgoK+azibd6LvEpDrAbLEPi1YsLxMJF4mEm9b8Xr8tEpvytF/hLq6upwuVyEQiFKS0vZtWsXwWCQSCRCaWkp4XAYh8OBruuYponD4SAcDtvbCgoKqKystKuxpwtX7Ny5E4fDkdO/xYKCArp27Uq3bt0IhUL4fD7C4TAulwun00k0GiUQCNjb4vE4QghcLheRSIRgMEhDQwM+nw9d1/F4PCSnsIDb7SYUCpGfn084HCYvLw/DMLAsC4/HQ0NDA4FAgEgkgtfrxbIsDMPA6XTi9XrtHEZ7KgSSE4ZboThU+fOf/8yJJ57ICSec0KrHjRohPo++Q8ioo7x+DVWxHXirAwjLSXutF118P+SLXR/jdAQYGBiMlu/gs+oPeHXDIk7ucTZjepxGB28XpJR4vV7i8bhtRNLGybIs2xiljUh6XyEEkUgEt9ttP7vd7lb9jAeDUChEQUEBoVCIoqIiDMNA13WKi4upqamhqKjINsJSSuLxOKWlpdTU1FBcXEwkEiEvL49oNIoQAsuy7GNWVVVRUFBAXV0dTqcTTdOorq6msLCQqqoqgsEg9fX1CCHweDxEo1E8Hk+Lks8pw61QtEE0ofGnjx5BN+N0DXald1FvPA4/895aQDDg5rAenajaHKYqvoZBA2spdrdHNy06+fqwZscqMJy083Tg5MNOB7CNTnpZ0zQsy0LTNAzDaHJuIUST0nBtuYSYz+cjFArhdDqpr6/H4XCgaRp1dXVcddVVDBs2jMmTJxOJROzPXFtbi9frpb6+HqfTSSwWw+lMmlJN0+yLW0FBAYlEAr/fj2VZzJ8/nzfffJPHHnuMgoICdF23t0kpW2y0QRluhaJN4nHk8Yfhf+bMRWdQ4TbZ4KwmT+RRLHqQF/MQKctn19YoX+6owJP3Od6qYmqKd+F3FuPU3NTVx4glEozsehxO6cLv9xMOhxFCJG/9XZJELIzL6QDhxZISh8NBPB7H7/djGAYul4twOEwgEGizhjscDlNUVER9fT35+fmYpomu6wSDQf7xj3/w8ssvY5omF198MYWFhcTjcYLBoN3jDoVCuN2O+SXYAAAgAElEQVRuYrEYgN3jLiwspLa2loKCArZu3cqbb77J9OnTicfjPPnkk9TW1hIMBgmFkjVq0sbe5/O1qC1VOKBC0QaJxWL0bteT5855jnq9lrc3vMO/1/6bL3as4eOvVvD6Z+9wyUmXcsbgczg2eD7VO6Czv4ianZXUh+r4onwdX5Sv54+v34Hm1QiHwwSDQUzTxCVj/PXGH7D4D0fw7K2HoYercLvdCCEoLCwkHA7bvdK8vDxqampsw5Vp1qxZYxu71sDlcmEYBg6HA9M0k4O6qTsKgGg0yvTp0+nRowfLli1DCGH7ow3DQNM0pJRomobD4cDhcNj+brfbzapVqxg+fDhXXHEF4XAYSAZjpN1KLpcLl8tl9+ZVj1uhOITJy8ujsrKSLv7OPPqz2Vz13FVU1FTQt6QfDunASpj87b1F+B1+orEIbqeLnR856d9jGNsqNlJfUkGp3o1n/rWIsT3HceqPTqWyshKvGz7514PUhXTadx9Gv8E/QbjyiMfjOBwOqqur7cHJ4uJiKisrKSkpyXiPu6qqigceeACn04lpmnTr1o3LLrvsgI/rdDrRdR1N09B13f4cc+fObXIxSiQSTJgwgYsuuoizzjqLnj17ctdddyGlTF7sXC4gaYgvu+wydu7cycKFC3n22Wepq6uzj2OaJnPmzOGyyy7DsiycTqc9juBwOFqu+4A/uUKhOOhEIhHy8/MBGOYdxjMXLeSMv5zJlxXrCDgD+ISPuIhTGd/FjsrtVO+q5qfDT6PU3RkLB0fmD+Pfn/2TYo8Tj+aioaGBuooN/P2VB6jYvJz2XY7i2HNmUdi+J5oQOBwOLMuipKSEcDiM0+mkqqqKQCBATU0NeXl55OXlZeSzSimpqqri448/Zu7cuaxfv54bbriBSy+99IAvGNFolOLiYurr6wkGgxiGQSKRYOHChSQSTWO8t23bxl133cVrr72G3+9n+fLlmKbZZB9N03jttdeQUrJy5crdfpY5c+Zw3nnnUVhYSCgUQgiB1+slkUjYPf69oVwlCkUbJN07k1KiCY2+xf1481dv0rfjYdTH6lm3438s37yCVVtWEcgPMnzAcKJ6lK93bkY4Neq3Jhjd5xTy85zc+NcpbNq2ga83rObLzz/h2NNn8PMpCyjp2BtBcjAybVDSYYFCCJxOJ5Zl2S6CxrRmD1xKyfTp05kzZw533HEHHTp04De/+Q0PPvjgAR87feHxeDxUV1cTiUQA0HXd3ue+++5rModj9erVLFu27DtGG5I+7hUrVjQx2h06dGD+/Pn2a6fTSbt27dB1nYKCAvx+P5C8i1KuEoXiEEbTNGKxGCLVG9Z1nY4FHVky+VVe+/w1Xv38H3yw5n12VO0kkghTZTmIOxJYCQsMWLvuC8YOP5njSn9B+1GCq+47nx9UOhg8bAyHDT2FvPwC20inox6EECQSCVwuF6Zp4na77UHKbxuc9O1/a33Wu+66iwsuuACHw8Hzzz/PkiVLWLp06QEfOx0GWF9fT3Fxsd3jTrs+IGnEX3zxRYqKinZrrPfGmDFjmlwIDMNg165dFBYWUldXZ/e4VTigQnGIE4vFbNdENBrF7/dTW1tLIBDgxL5j+PnwX7BkxRJ2NOwgEUsQ8OYTjUSJRxMgBcYJBt07dOPEESdSXFRMcEcxW97/jJN+diWl7TtTVVWF3+9H13WcTqdtpNPxyV6vl9raWnviTiAQyGgcd4cOHbjwwgtZsGABpmly3XXXtcpx0+GALlfSXZQeIGxsoH0+H/tb0PyXv/wld999N//+97/tdQ6Hg2Aw2CQcELAHgFvCIWe4DcOweyEKxaFKXl4e9fX1QPIPn56Nl/bZhsNhTh5yMnW1teS53URrq/h6/sPENqzF26kL/X/7exIuFw5g147t7Fi5DY+/Pd2696W+upqiQICErrPh7y/wyd8WIFxe+p9+Dn1Gn0hRSQmmaVJaWkooFKKkpMSOY84UBQUFdOzYkXPOOYfJkye3Wr6beDxOfn4+kUgEn89nz2L0er32PolEAo/HY0ee7AtnnHEGQJOBTikl4XAYv99vr3e73U165XvjkDHcUkqWL1/OBx98gKZpjBw5kqFDh7bZ+FKFYk+Ew2F7Nl80GiU/P9+OG04/71y5DFG+ibLXnsPl83PkrfeD5kI4NMxdO1h74/WYQsOKWVhrP6f9kUdR9vw8trz7NpGGevK79eIHZ57P+NtmYRk6X7z1On+deD7ugiJO/H/XkN+xMz369aOurg6fz2cPlmaK2tpa8vLyWjVJWWP/vZTSdvG89NJLdOzYkYaGBjZv3syKFSu+MxGpJWzYsIGhQ4eyYcMG+3xnnXWW3bFsHHq4L7bqkDHclmVx1llnMWvWLHt58+bNynArDkk8Hk8TH3cikcDr9aLrOl6vl13v/ovNs26k23mXMmDaHQgB4XVrSf8dpBAMvPE+pIDYju0UfbiURCKBQ2gMmzINnC7i0QiJaIRIVQWWlPQYOpzuQ0dQV13N4ptmEuzWnUvufQBfMJjxHnemcLlcxONxNE2zp/ILIZr0kB966CEeeuih/Tr+tddey7Zt25g1axaQ9NdfffXVeDweLMvC7XbbF4t9acNDJqrkxhtv5PHHH6ekpISOHTvy2GOPcdNNN2VbVpslEolw8803Z1uGohnS0RyNJ4BYloUQgsp3lrD+gVvoOWEywd6HEd9aRrx8MyIWRsTCEAtDNEx045dE1q/FaKil/YhRdD7meAq69yJauYPw1i3EqnZhhMMY0Qh6JEK8IUSsvg6Hw8HxF11M/ZYtPP7rK+wwtrZIOqwy7W9OG9JZs2btt1/726SNNiS/txtvvJG6umQ7hkIhotGonQelpe3YNi+Tu+Hqq6/m/PPPZ/z48TidThYvXsxzzz2XbVltFl3XW2XUXpEZ0lEdjWfyRSIRRNVOdr70V7qfeQGe4lKsuio0NIRIzQgEBGAhwUouY0kSkRCmlBgWmJbEkhJLJpeN9LMlMbHQTXB7fBwz4UJefvB+Hv7lRK5b+EzGP28ikcDn87XqcdPT171eLzU1NUgpeeSRR7j33nubuEaKiopwOBxNwiJramp2e8yCggJcLpd9IbUsy95XSsnjjz+Ow+Hg5ptvtiNVTNPcp3DAQ6bHXVpaSmFhIU8++SRXXXUVPp+PkpKSbMtSKDJC2qedzjxXV1dHYUEBOz5fSbC0I/7CEqxQLcQiiHgILR7BEQ+jxSPJR7r3HQ1DLATRMFYkjIyEMCMhjEgII9xAIhxCDzWQCDWQCDcQb0g+x0L1WIbOSZMupaa8nIaKiox+3o0bN7J06VIuuOCCVj1uQ0MDhYWFJBIJAoEAjz32GLfddluTyTdHHHEEK1asoLy8nI0bN1JRUcHy5csZPnz4d453+OGH89Zbb1FeXs7nn39OeXk5H330EYMGDbL3MU2TP//5z9x9991s27bNngofiURa3OM+ZAy3pmksXryYp556iqOOOooHH3xwj/lsc5WXX36ZrVu3ZluGIsdJJyTyeDyYppkMa6urpfY/S9B8XvSGGohFkNEIxJKGWotHcMbDOOIRRCwC8Yi9jxkJI6MRrGgYKxrBikQwIhGMSAg9EiaRfg6HSYRDJMIh4uEQeiyBy5/PO89mtsedprXHrHw+H5FIBKfTyc6dO7/jXh0wYACzZ8+muLjY9oXX19fTrl07Zs2aRb9+/ex9PR4P1113Hf369SMejxMIBNB1nQ4dOvDEE08wYsSIJseeNWsW4XDYHmz9XocDDho0iIEDc7esU3Ps3LmTn//855x55pk888wzeL1e5s2bl21Zihwl7RqB5B8+kUjg0QSxr76gZMxpWNEwpqbh0ESye6aBQ3OgaWBJEJYESyItibQspCmxLDAtC8sCw5LolkSXFrqZdKEYlpVcZ0kMM7UsoWPPHuit5A8+2Oi6Tl5eHrFYjF/96ld2dEma7du3M23aNEzTpH///jz88MN4vV4ikQhDhgxh7NixrF+/HoCxY8dywgkn2C6dSCTCLbfcwsqVK7Esi82bNzc5txCCK6+8khdeeAG3271PoYaHnOFuK1iWxfr16+0fyY4dO/D5fIwbN45LLrmESZMmsXPnTjp06JBlpYpcpHH4mh3SpgmkZWLFIhgaaJoDSxNITYAmkA4BacNkgbQklmVhmclnwwLDtDAk6IaFIZN+7YRpJQ25aWFYFglLoJsS3bLQTYtYuPWy9R1s0gUMnE4nTzzxBP/5z3+YMGGCvb26upoPP/yQPn36cOedd+JwOIhEIng8HuLxeJNIkEAgQLt27ewoH7/fz0033cQpp5zCihUrvnPuP/3pT5x//vlNCli0lEPScB933HG8/fbb9O3bN+vhgJs3b+aNN974znrTNFm2bJn9OhwOs2HDBu6//35uuOEGTj75ZN54441W9+kpDg0SiYQ9U9E0TbxeL7G6WsxwhNjObfiCBZiaA80hEBoIhwChYaFhITGkxLSSBtkw071qiSEtEibo6R61mRyMjEajxHUdPD4SlkwZbtAtk3gkQiZjSqSUvP322xmpYdk4qZPD4eDdd9/9zj6HH344ixYtIj8/H6fTyeuvv05FRQWFhYUMGjSISy65BMMw+NGPfsSyZcsoKyvD5/Nx5pln4vV6efnllznttNP47LPPmhz3448/5uyzz7Y7b/sSmXNIGu5JkyYxZMiQVskedqA0rhTSGI/Hw+OPP27r27JlC8cddxznn38+Tz75JK+99hqffPLJwZZr4/P5GD9+PC+++CJnnXVW1nS0dc466ywWLFjAyJEjWzUiwuv1UlFRgRACv9+frIMYyMeSUP/lGhz9+iN8XtC0VE87FUmiGwiPF1NaScNrGIS3bSEWDhMzLRKmJG5I4pZJ3ABXSQcIBIlFosQTCYRhkkjtp1uShGGyefVq+g4fsXfR+4mUktmzZ+82215rkK70EwqFmD17Nqeffjrr1q1j3bp19vlnzZrFPffcgxCCqqoqrrnmGn784x/z/PPPc9ZZZ9npWSdPnszzzz/PfffdByRnct94441NjHKXLl0YM2YMf/3rX5k+fTp5eXktzgqY5pA03LlE9+7dmThx9xW5G9OxY0eWLFnCvHnzGD16NJMmTToI6prH7XZz5JFH8s477yjDfQAcddRRTJ06tdVD2dLFetOTRQKBAA2hBo6Yfjtrbr0a8/MwpT8YiPS4MTWBKUDEI1i1NTg6dMYyTBo2rME0JLF4nLiuEzct4gZEDZO4YREzLfQd29BxIP0FOAoKkZEYhsOJbkLCtNjw+So0dx5HHHNsq322g0m6sK/X68Xr9fLRRx9RWlrKhRdeaO/z5Zdfsm7dOt59913OPfdcJk2aRHFxsR3uZ5qmXTzBNE3y8/MZP348c+fO5f7776esrMzORwJQWFjI/fffz1VXXUWvXr3sqkP7MgFHGe4cweVy8YMf/IDbb7+9yTRYhaI5TNO07+aSvUYHIlCEblho4TDVX3xKQd/+aKaBwzIRehy9citsL0/GalugWxYJK9mDThjJXrRJKnZbQiKeIKabxOoaiG/ZQsy0MFwe/B07s61sMw0NEXqOOIyBGXBjHAzShX3j8TjFxcUUFRWxZcsWYrGYPakJkr3uTZs2ceedd7JmzRpeeeUVnnzySaSU+Hw+O3xw4MCBXHfddVx//fUsWrToO+4PTdOIRqNs376dww8/3J7k43K5iMViLZ7O32LDLYRwAMuBrVLK04QQvYBngRLgE+AiKWVCCOEBngKGAlXAuVLKspaep7W44IILeOaZZ9qcj7gthjAqDj7pqdpp451OrxoCLK+XRDwGukG4tgbC9YhQA5om0BBIJKa0sGTScBsWKZ/1N75rI+3/tpL+cMuSmFJiWmDqOqGaWmKRKA6PFylbP0zvYJGfn29XY6+trcXtdrNx40Z+/OMfc/LJJ1NfX28PYM6ePRspJX//+98ZNWoU06dPt6vd+/1+pJRce+21LFiwoInRnjJlit0jTycH27BhA507d7bLxe3rHdm+9Lh/A6wFgqnXdwH3SymfFULMBiYBj6aea6SUfYUQ56X2O3cfztMqTJ48mfHjx7c5w50rTJo0iTVr1lBVVcUnn3xiD84ocoN4PG5nsItEIuTl5SXTrB7+Q4qOGcvOf72EhYGsqsIpLDTDQmgCkTLclmxkiKVM+rZN2cSAG40GLw2ZHLA0pcTQJfGaOiwJDq+X8dOm2jlSMsGMGTO4++67M3LstMspkUhQUFCAlJJjjz2WE088kVgsZlem0TSNfv36cc011wDwwAMP8Nvf/tYOJ0wkEvYsyfvuu8822jfffDNXXHEFXq/XnuXq9XqJxWJ2VkfArhbf0tS4LereCSG6Aj8FHk+9FsCJwPOpXeYDZ6aWz0i9JrV9jMjC5VgIoWZO7ic1NTVs3LiRadOmccYZZ+D1etmxY0e2ZSka4ff7CYVCTXJJFxQUEBcOgj36YlgQ1y2ikSjRaIKIaRE1LCJG8jlqWMSMpLGO6jI5MGlZJFLhf7qUxC2JYUoMKUikety6ZaH585OuBLcP3TAYddLJGStbBrBs2TJGjRqVkWPn5eU1acO0y6O+vh6fz0d9fb1d3f7www+332cYhl1LMhaL4XK5mhQBTtOvXz+KiopwuVxomkYwGCQajVJQUGDnR0n3tPcln3lLe9wPANOAQOp1CVArpUxP5i8HuqSWuwBbAKSUhhCiLrX/rharagXy8/NZvHjxwTzlIcP8+fO5/PLL6du3L4lEgjPPPJMHH3xwvzOkKVqfSCRCIBBoslxXV0cgEEDr2Q+tXWdiO8rRZQIHAodGKjNgsq8mZdNed3pyjR0tYproZtJ4J6x0PLfEMCFWU4sl4MgxJ+AtLqGyspLCwkJbT1sineclHUeddlWmixK7XC6klDgcjiaDh0IIO+46ncOk8SNNuhp8ep2u63acd9rFlfajNx7A3Bt77XELIU4DKqSUrRqbJoS4XAixXAixvLWycClah6uvvprbbruN//73vxQVFXHhhRdy2223ZVuWohFpv2s0GrUHvNK39T2OHo23S3eipkUsFR2S7GFbxAyDmGEQNUyihvnNdttIpwYqTZmM504b81Sct24lXSilPXvx1eo1nPbrKQSDwYxWv8kk6VDAtHFuHNOdzsCYzr7Yq1evJoUR0vMz0i6StP+7qqoKSJYsGzhwoL0tHXWiaRqmaTZ5H7R+HPfRwOlCiFMBL0kf94NAoRDCmep1dwXSCTa2At2AciGEEyggOUjZBCnlHGAOQIcOHdpmTshDmEWLFrF69Wo+/PBDnnvuuTbZmzqUSf/x03/+dARE2uAMm3obf79wPNFoCIcQyYFJmex1S8ACrHQWQCSGkYwkSRpnC8OEhJU05rplpaJPkgbcEwjSvu8PaNe3L8WdOtnlvjL1OTM5YJ8uEhwMBqmrq8PtduNyuexKQtXV1QQCASKRCIWFhRx77LG8/PLLhMNhpkyZQrdu3WzDDlBeXm5nAhw6dCidOnWy86Snc8rU1NTYleXTpcsSiUTrhgNKKWcAMwCEEKOB66SUFwgh/gb8gmRkySXAy6m3vJJ6/UFq+1uyrSbr/R6Tzvmyr1NxFd8lEz9/0zTtP3r6lj4SieB2u4lGoxT27kNe915UrPkUTWg47JSuFhINKVI9wNTgpGnJVArXdD4SYfe0dcsiZiZdJgnLJBAsRHO76TVoEIHCQurr69E0LSO97ltuuYUbbrjBroTe2qSzA8ZiMQoLC7EsC9M0KS4utsuyRaNRAoEAUko7PwxAZWUllZWVzR47fReUzr2taRo1NTX4/X6qq6ttH3ra7ZIuFtwSDuRSNh24RgixgaQP+4nU+ieAktT6a4DrD+AciizicDiU0W4FMtEb9fv9NDQ0EAqFcDqddjxyJBKhpKSESCTCKY88SVy3iBsmUd1MuUdk8jlhEdWT7pN42o1iSqImxAxBzLBImBZxM7leNy0ShklRl+70O/pYvHl+xp53Hg0NDZSWlmZscDLtg85Ujz4QCFBTU4Pb7aampsaOq04XQN61axcOh4P6+noikQjDhw+nW7duez1ux44dOeGEE+wLgsfjQdM0ux5oaWmpHcmSvijtSxvuk+GWUr4jpTwttfyVlHKElLKvlPJsKWU8tT6Wet03tf2rfTmHQqHYO9FolLy8PHw+n52EPz0DsK6uDq/Xi3S6GXTRpUlDbSYNd0T/xredjC4xk/5vUzYy4slp7XHDIm77uyXBjl3oPWwE28rK+MnEidQ1hPD5fNTW1jYp9dWWiEQidsX1YDBohzQWFhba7hHTNPH7/Xi9Xo4++mjmz59PYWFhs8d0u908/vjjjB49Go/HQ0NDA7quI6W0o1VqamqScfepCjjAPrWhmu2hULRBPB4Puq7bUQrRaNSewZefn58sDFBUTOmo49DadSJqSCKGRcRMhgR+ExYov1k2LWK6mexlG8kQwbhpkrAk7mAB7fv2o6piJ5GGEL0HDyYQCBCPx/H7/Rm7M5s6dep38li3Jl6vl3A4jNPpJBwO2+GA6YtgQ0MDDoeDWCxm16Q8/PDDWblyJfPmzSMYDBIIBAgGgwSDQe6//37WrVvHqFGjCAQCJBIJ8vLy7LuGdGX3QCCAYRhNih9nIhxQoVDkEI2nYqcjIhrnzkgPWvYaMYphF1/KW/ffgx4J2++XqYk4UiYHKU3S/m6S6VztCTgW3uJS8jt0IhKN4vF4uev1f9saGg+KZoLi4uKMHDdN4/JiaRqXJ2u8LZ0+V9M02rdvzymnnMLXX3+NYRj2zEjAHm9I59e2LMuOHmn8HUFyfKJx1ElLUYZboWiDmKZph6qlDadhGGiahq7r9rPb7ebYSb/ClJJX/3ArsomBSkaYmJJkTHd6Wrv8Ji+3IQWaKamrqaFnp05ces89aKlMePF43I5JFkK0yUrvjY1uenYjJHvi6XS50LQ3nN7WeOJM45A+XddxuVx2pIiu6/Z7E4mEvS39nTW+ULQU5SpRKNog6ZjtWCxmJ/dPr0tXLU/f6muaxogJF/OLe/9E1yHDk/7s1KPLsBF4O3QkZlqph6TfcaOJWySnwFsQi0Q56qSfMPGPfySvqAiPx4NlWeTn5xOPx8nPz2+zcdxpw5qeDJM2no2NbnqqeroHns7kl3arpEMW0ymcXS6XXczZsiycTqe93eVyYRhGk23pC96+3LW0vUukQtFGiEajVFZWEovFKC8vR9d1SktLW+34aTeCEAKfz4cQwl5XVFSEEILOnTvb20+8+P849uxzMRv1AB0uF5ZlYpnf9MSdbjd6o2K5AG6vF7fXa/cOg8GgnVairSaYguQF0OPxNGlD+MZdkt7WmHQ19t1tS7Mnv/X++LS/jTLcCkWG+O9//8u1115LRUUF1157LSUlJTz99NOtdvzGE1PSBmRvz44WJgrzNhM33dxx2yqNUyg3/ix7+ny58NmVq0ShyACRSIQ333yTuXPnMnDgQP7yl78wYMAAli5dmm1pikMAkQuTGouKiuRFF12UbRnNEo/H7VlUuUpdXR1OpzNjM8xag507d7JzZylSZiYCoTUoLNxKjx5d9r7jXjBNk82bN9O7d282btxIz549qa+vx7KsA/odmaZJVVUV7du3P2CNmSIcDmOaJsFgcO87Z4mqqiry8/NbPFMxGyxYsICamprddutzwnALISqBMAc5g+A+UIrStj8obfuH0rZ/HGraekgp2+1uQ04YbgAhxHIp5bBs69gdStv+obTtH0rb/vF90qZ83AqFQtHGUIZboVAo2hi5ZLjnZFvAHlDa9g+lbf9Q2vaP7422nPFxKxQKhaJl5FKPW6FQKBQtIOuGWwgxTgixTgixQQiR9aILQogyIcTnQohPhRDLU+uKhRCvCyHWp56LDpKWuUKICiHE6kbrdqtFJPlTqh1XCSGOypK+W4QQW1Pt92mq5F1624yUvnVCiJMzqKubEOJtIcQXQog1QojfpNZnve32oC3r7ZY6l1cI8ZEQ4rOUvltT63sJIZaldCwSQrhT6z2p1xtS23tmQds8IcSmRm03OLU+G/8JhxBipRDi1dTrzLTbt6sTH8wH4AA2Ar0BN/AZcESWNZUBpd9adzdwfWr5euCug6TlOOAoYPXetACnAv8EBDASWJYlfbeQLG/37X2PSH2/HqBX6nt3ZEhXJ+Co1HIA+F/q/Flvuz1oy3q7pc4ngPzUsgtYlmqT54DzUutnA1ekln8NzE4tnwcsyoK2ecAvdrN/Nv4T1wALgVdTrzPSbtnucY8ANshkNZ0EyfqVZ2RZ0+44A5ifWp4PnHkwTiqlfBeobqGWM4CnZJIPSRZz7pQFfc1xBvCslDIupdwEbCD5/WdC13Yp5YrUcgOwFuhCDrTdHrQ1x0Frt5QmKaUMpV66Ug8JnAg8n1r/7bZLt+nzwBghMpPEYw/amuOg/ieEEF2BnwKPp14LMtRu2TbcXYAtjV6Xs+cf8cFAAv8WQnwihLg8ta6DlHJ7ankH0CE70vaoJZfackrq1nRuI7dSVvSlbkGHkOyd5VTbfUsb5Ei7pW73PwUqgNdJ9vJrpZTGbjTY+lLb60jWoD0o2qSU6ba7PdV29wsh0vPYD3bbPQBMA9KpFkvIULtl23DnIsdIKY8CTgGuFEIc13ijTN7b5EQoTi5pacSjQB9gMLAdmJUtIUKIfGAxcLWUsr7xtmy33W605Uy7SSlNKeVgoCvJ3n3/bGn5Nt/WJoQYCMwgqXE4UEyykPlBRQhxGlAhpfzkYJwv24Z7K9C4ZHLX1LqsIaXcmnquAF4k+cPdmb7FSj1XZE9hs1pyoi2llDtTfy4L+Avf3NYfVH1CCBdJw/i0lPKF1OqcaLvdacuVdmuMlLIWeBsYRdLNkE4D3ViDrS+1vQCoOojaxqXcT1ImC5Y/SXba7mjgdCFEGUmX74nAg2So3bJtuD8G+qVGXt0knfSvZEuMEMIvhAikl4GxwOqUpktSu10CvJwdhR0Bo5UAAAF0SURBVLAHLa8AF6dG0kcCdY3cAgeNb/kQzyLZfml956VG03sB/YCPMqRBAE8Aa6WU9zXalPW2a05bLrRbSkc7IURhatkHnETSD/828IvUbt9uu3Sb/gJ4K3U3c7C0fdnoYixI+pAbt91B+V6llDOklF2llD1J2rG3pJQXkKl2+//t2z1uwkAQhuG3g5qOlgNQpUxBC9fIMZByi5wgkVJwBeAANBAgRX5ukibFDIIGJBf2stL7SC7ASPtphEfyjt3GZLXJQUx+v4l9tHnhLCNigv8BfJ7yEHtPK+AHWAKDjvK8E7fNf8T+2NO1LMTk/CXreAAeCuV7zfX3+eccXvx+nvm+gGmLuR6JbZA9sMtjdg+1u5GteN1yrTGwzRxH4Pni2tgQw9EF0Mvv+/n5N8+PCmRbZ+2OwBvnJ086vyZy3Qnnp0paqZtvTkpSZUpvlUiSGrJxS1JlbNySVBkbtyRVxsYtSZWxcUtSZWzcklQZG7ckVeYf2tkbinO+r1AAAAAASUVORK5CYII=\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "m.plot(Q)" + ] + }, + { + "source": [ + "## ಫಲಿತಾಂಶಗಳು\n", + "\n", + "ನಾವು ಪೀಟರ್ ಅವರನ್ನು ನರಿ ವಿರುದ್ಧ ಹೋರಾಡಲು ತರಬೇತಿ ನೀಡುವಲ್ಲಿ ಯಶಸ್ವಿಯಾಗಿದ್ದೇವೋ ನೋಡೋಣ!\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Killed by wolf = 1, won: 9 times, drown: 90 times\n" + ] + } + ], + "source": [ + "def qpolicy(m):\n", + " x,y = m.human\n", + " v = probs(Q[x,y])\n", + " a = random.choices(list(actions),weights=v)[0]\n", + " return a\n", + "\n", + "print_statistics(qpolicy)" + ] + }, + { + "source": [ + "ನಾವು ಈಗ ಮುಳುಗುವ ಪ್ರಕರಣಗಳನ್ನು ಬಹಳ ಕಡಿಮೆ ನೋಡುತ್ತಿದ್ದೇವೆ, ಆದರೆ ಪೀಟರ್ ಇನ್ನೂ ಯಾವಾಗಲೂ ನಾಯಿ ಹತ್ಯೆ ಮಾಡಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ. ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್‌ಗಳೊಂದಿಗೆ ಆಟವಾಡಿ ಈ ಫಲಿತಾಂಶವನ್ನು ಸುಧಾರಿಸಲು ಪ್ರಯತ್ನಿಸಿ.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[]" + ] + }, + "metadata": {}, + "execution_count": 13 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYoAAAD4CAYAAADy46FuAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAcD0lEQVR4nO3df3BV553f8fdHPxHCQgJkIEACrIkd4raxrcZksrOTCVmM3UzwH04Gz86azXrDtHHa7HZnEryZ1tMknkna7XrDrONdN2aDM1kTrzetaYpLKHYm05nasRw7trFNkLExkrGRkQAbJPTjfvvHeSQuQjrge4UkxOc1c9E53/Occ5/nHul+OD+kq4jAzMxsLBWT3QEzM5vaHBRmZpbLQWFmZrkcFGZmlstBYWZmuaomuwPjbd68ebF06dLJ7oaZ2UXlmWeeeScimkdbNu2CYunSpbS2tk52N8zMLiqSDoy1zKeezMwsl4PCzMxyOSjMzCyXg8LMzHI5KMzMLJeDwszMcjkozMwsl4NihOO9/Tz6XMdkd8PMbMqYdr9wV66vP/I8j734FlcuuIyrFjRMdnfMzCadjyhGePNYLwA9fYOT3BMzs6nBQWFmZrkcFGZmlstBYWZmuRwUZmaWy0FhZma5HBRmZpbLQWFmZrkcFGZmlstBYWZmuRwUZmaWy0ExhpjsDpiZTRHnDApJWyQdlvTiKMv+XFJImpfmJWmzpDZJz0u6tqjtBkn70mNDUf06SS+kdTZLUqrPkbQrtd8lqWl8hnyO8U7Ek5iZXUTO54jih8DakUVJS4A1wBtF5RuBFemxEbgvtZ0D3AVcD3wcuKvojf8+4EtF6w091yZgd0SsAHaneTMzm2DnDIqI+CXQNcqie4CvceZZmnXAg5F5EmiUtBC4AdgVEV0R0Q3sAtamZQ0R8WREBPAgcHPRtram6a1FdTMzm0AlXaOQtA7oiIjfjFi0CDhYNN+eann19lHqAPMj4lCafguYn9OfjZJaJbV2dna+3+GYmVmO9x0UkmYCfwH8x/HvzujS0caY15cj4v6IaImIlubm5onqlpnZJaGUI4rfAZYBv5H0OrAY+LWkBUAHsKSo7eJUy6svHqUO8HY6NUX6eriEvpqZWZned1BExAsRcXlELI2IpWSni66NiLeA7cBt6e6nVcCxdPpoJ7BGUlO6iL0G2JmWHZe0Kt3tdBvwaHqq7cDQ3VEbiupmZjaBzuf22IeA/wdcKald0u05zXcA+4E24L8BXwaIiC7gW8DT6fHNVCO1+UFa51XgsVT/DvD7kvYBn0nzZmY2warO1SAibj3H8qVF0wHcMUa7LcCWUeqtwNWj1I8Aq8/VPzMzu7D8m9lmZpbLQWFmZrkcFGZmlstBYWZmuRwUZmaWy0FhZma5HBRmZpbLQWFmZrkcFGZmlstBYWZmuRwUZmaWy0FhZma5HBRmZpbLQWFmZrkcFGZmlstBMYYY8xO6zcwuLQ6KEaTJ7oGZ2dRyPh+FukXSYUkvFtX+i6RXJD0v6b9LaixadqekNkl7Jd1QVF+bam2SNhXVl0l6KtV/Iqkm1WvTfFtavnS8Bm1mZufvfI4ofgisHVHbBVwdEf8c+C1wJ4CklcB64KNpne9LqpRUCdwL3AisBG5NbQG+C9wTEVcA3cDQZ3LfDnSn+j2pnZmZTbBzBkVE/BLoGlH7eUQMpNkngcVpeh2wLSJORcRrQBvw8fRoi4j9EdEHbAPWSRLwaeCRtP5W4OaibW1N048Aq1N7MzObQONxjeKPgcfS9CLgYNGy9lQbqz4XOFoUOkP1M7aVlh9L7c8iaaOkVkmtnZ2dZQ/IzMxOKysoJH0DGAB+PD7dKU1E3B8RLRHR0tzcPJldMTObdqpKXVHSHwGfBVZHDN9M2gEsKWq2ONUYo34EaJRUlY4aitsPbatdUhUwO7U3M7MJVNIRhaS1wNeAz0XEyaJF24H16Y6lZcAK4FfA08CKdIdTDdkF7+0pYJ4AbknrbwAeLdrWhjR9C/B4USCZmdkEOecRhaSHgE8B8yS1A3eR3eVUC+xK15efjIh/HRF7JD0MvER2SuqOiBhM2/kKsBOoBLZExJ70FF8Htkn6NvAs8ECqPwD8SFIb2cX09eMwXjMze5/OGRQRceso5QdGqQ21vxu4e5T6DmDHKPX9ZHdFjaz3Ap8/V//MzOzC8m9mm5lZLgeFmZnlclCYmVkuB4WZmeVyUJiZWS4HhZmZ5XJQmJlZLgeFmZnlclCYmVkuB4WZmeVyUJiZWS4HhZmZ5XJQmJlZLgeFmZnlclCMyZ+RZGYGDoqzaLI7YGY2xTgozMws1zmDQtIWSYclvVhUmyNpl6R96WtTqkvSZkltkp6XdG3ROhtS+32SNhTVr5P0Qlpns9Jnq471HGZmNrHO54jih8DaEbVNwO6IWAHsTvMANwIr0mMjcB9kb/pkn7V9PdnHnt5V9MZ/H/ClovXWnuM5zMxsAp0zKCLil0DXiPI6YGua3grcXFR/MDJPAo2SFgI3ALsioisiuoFdwNq0rCEinoyIAB4csa3RnsPMzCZQqdco5kfEoTT9FjA/TS8CDha1a0+1vHr7KPW85ziLpI2SWiW1dnZ2ljAcMzMbS9kXs9ORwAW9l/RczxER90dES0S0NDc3X8iumJldckoNirfTaSPS18Op3gEsKWq3ONXy6otHqec9h5mZTaBSg2I7MHTn0gbg0aL6benup1XAsXT6aCewRlJTuoi9BtiZlh2XtCrd7XTbiG2N9hxmZjaBqs7VQNJDwKeAeZLaye5e+g7wsKTbgQPAF1LzHcBNQBtwEvgiQER0SfoW8HRq982IGLpA/mWyO6vqgMfSg5znMDOzCXTOoIiIW8dYtHqUtgHcMcZ2tgBbRqm3AlePUj8y2nOYmdnE8m9mm5lZLgeFmZnlclCYmVkuB4WZmeVyUJiZWS4HhZmZ5XJQmJlZLgeFmZnlclCYmVkuB4WZmeVyUJiZWS4HhZmZ5XJQjCEu6EcxmZldPBwUI2Qfi2FmZkMcFGZmlstBYWZmuRwUZmaWq6ygkPRnkvZIelHSQ5JmSFom6SlJbZJ+Iqkmta1N821p+dKi7dyZ6nsl3VBUX5tqbZI2ldNXMzMrTclBIWkR8O+Aloi4GqgE1gPfBe6JiCuAbuD2tMrtQHeq35PaIWllWu+jwFrg+5IqJVUC9wI3AiuBW1NbMzObQOWeeqoC6iRVATOBQ8CngUfS8q3AzWl6XZonLV+t7BajdcC2iDgVEa8BbcDH06MtIvZHRB+wLbU1M7MJVHJQREQH8JfAG2QBcQx4BjgaEQOpWTuwKE0vAg6mdQdS+7nF9RHrjFU/i6SNkloltXZ2dpY6JDMzG0U5p56ayP6Hvwz4AFBPdupowkXE/RHREhEtzc3Nk9EFM7Npq5xTT58BXouIzojoB34KfBJoTKeiABYDHWm6A1gCkJbPBo4U10esM1bdzMwmUDlB8QawStLMdK1hNfAS8ARwS2qzAXg0TW9P86Tlj0dEpPr6dFfUMmAF8CvgaWBFuouqhuyC9/Yy+mtmZiWoOneT0UXEU5IeAX4NDADPAvcD/wvYJunbqfZAWuUB4EeS2oAusjd+ImKPpIfJQmYAuCMiBgEkfQXYSXZH1ZaI2FNqf83MrDQlBwVARNwF3DWivJ/sjqWRbXuBz4+xnbuBu0ep7wB2lNNHMzMrj38z28zMcjkozMwsl4PCzMxyOSjMzCyXg8LMzHI5KMzMLJeDwszMcjkozMwsl4PCzMxyOSjMzCyXg8LMzHI5KMYQk90BM7MpwkExgia7A2ZmU4yDwszMcjkozMwsl4PCzMxyOSjMzCxXWUEhqVHSI5JekfSypE9ImiNpl6R96WtTaitJmyW1SXpe0rVF29mQ2u+TtKGofp2kF9I6m9Nnc19QrQe6L/RTmJldVMo9ovge8L8j4irgXwAvA5uA3RGxAtid5gFuBFakx0bgPgBJc8g+TvV6so9QvWsoXFKbLxWtt7bM/pqZ2ftUclBImg38HvAAQET0RcRRYB2wNTXbCtycptcBD0bmSaBR0kLgBmBXRHRFRDewC1ibljVExJMREcCDRdsyM7MJUs4RxTKgE/h7Sc9K+oGkemB+RBxKbd4C5qfpRcDBovXbUy2v3j5K/SySNkpqldTa2dlZxpDMzGykcoKiCrgWuC8irgFOcPo0EwDpSOCC/5JzRNwfES0R0dLc3Hyhn87M7JJSTlC0A+0R8VSaf4QsON5Op41IXw+n5R3AkqL1F6daXn3xKHUzM5tAJQdFRLwFHJR0ZSqtBl4CtgNDdy5tAB5N09uB29LdT6uAY+kU1U5gjaSmdBF7DbAzLTsuaVW62+m2om2ZmdkEqSpz/X8L/FhSDbAf+CJZ+Dws6XbgAPCF1HYHcBPQBpxMbYmILknfAp5O7b4ZEV1p+svAD4E64LH0MDOzCVRWUETEc0DLKItWj9I2gDvG2M4WYMso9Vbg6nL6aGZm5fFvZpuZWS4HhZmZ5XJQmJlZLgeFmZnlclCYmVkuB4WZmeVyUJiZWS4HhZmZ5XJQmJlZLgeFmZnlclCMIS74H0c3M7s4OCjMzCyXg8LMzHI5KMzMLJeDwszMcjkozMwsl4PCzMxylR0UkiolPSvpZ2l+maSnJLVJ+kn6mFQk1ab5trR8adE27kz1vZJuKKqvTbU2SZvK7auZmb1/43FE8VXg5aL57wL3RMQVQDdwe6rfDnSn+j2pHZJWAuuBjwJrge+n8KkE7gVuBFYCt6a2ZmY2gcoKCkmLgX8F/CDNC/g08EhqshW4OU2vS/Ok5atT+3XAtog4FRGvAW3Ax9OjLSL2R0QfsC21NTOzCVTuEcVfA18DCml+LnA0IgbSfDuwKE0vAg4CpOXHUvvh+oh1xqqfRdJGSa2SWjs7O8sckpmZFSs5KCR9FjgcEc+MY39KEhH3R0RLRLQ0NzdPdnfMzKaVqjLW/STwOUk3ATOABuB7QKOkqnTUsBjoSO07gCVAu6QqYDZwpKg+pHidsepmZjZBSj6iiIg7I2JxRCwluxj9eET8AfAEcEtqtgF4NE1vT/Ok5Y9HRKT6+nRX1DJgBfAr4GlgRbqLqiY9x/ZS+2tmZqUp54hiLF8Htkn6NvAs8ECqPwD8SFIb0EX2xk9E7JH0MPASMADcERGDAJK+AuwEKoEtEbHnAvTXzMxyjEtQRMQvgF+k6f1kdyyNbNMLfH6M9e8G7h6lvgPYMR59NDOz0vg3s83MLJeDwszMcjkozMwsl4PCzMxyOSjMzCyXg8LMzHI5KMzMLJeDwszMcjkoxpD9dREzM3NQmJlZLgeFmZnlclCYmVkuB4WZmeVyUJiZWS4HhZmZ5XJQmJlZLgeFmZnlKjkoJC2R9ISklyTtkfTVVJ8jaZekfelrU6pL0mZJbZKel3Rt0bY2pPb7JG0oql8n6YW0zmZJKmewZmb2/pVzRDEA/HlErARWAXdIWglsAnZHxApgd5oHuBFYkR4bgfsgCxbgLuB6so9QvWsoXFKbLxWtt7aM/pqZWQlKDoqIOBQRv07T7wIvA4uAdcDW1GwrcHOaXgc8GJkngUZJC4EbgF0R0RUR3cAuYG1a1hART0b29zQeLNqWmZlNkHG5RiFpKXAN8BQwPyIOpUVvAfPT9CLgYNFq7amWV28fpT7a82+U1CqptbOzs6yxmJnZmcoOCkmzgH8C/jQijhcvS0cCF/yv60XE/RHREhEtzc3NF/rpzMwuKWUFhaRqspD4cUT8NJXfTqeNSF8Pp3oHsKRo9cWplldfPErdzMwmUDl3PQl4AHg5Iv6qaNF2YOjOpQ3Ao0X129LdT6uAY+kU1U5gjaSmdBF7DbAzLTsuaVV6rtuKtmVmZhOkqox1Pwn8IfCCpOdS7S+A7wAPS7odOAB8IS3bAdwEtAEngS8CRESXpG8BT6d234yIrjT9ZeCHQB3wWHqYmdkEKjkoIuL/AmP9XsPqUdoHcMcY29oCbBml3gpcXWofzcysfP7NbDMzy+WgMDOzXA4KMzPL5aAwM7NcDgozM8vloDAzs1wOCjMzy+WgGMMF/wNVZmYXCQeFmZnlclCYmVkuB4WZmeVyUJiZWS4HhZmZ5XJQmJlZLgfFGArhG2TNzMBBMab/+vPfTnYXzMymBAfFGJ450D3ZXTAzmxKmfFBIWitpr6Q2SZsmuz9mZpeaKR0UkiqBe4EbgZXArZJWTmQfBgtT+1rFwGCBvoHC+1pnsBDEJXQNJuLSGu9oLobxXwx9vFSV/JnZE+TjQFtE7AeQtA1YB7w03k+0efc+Hn2u44zaVf/hMXr7z34TvuLyWWfVRn6THzrWS0//IALmN8xgRnUlFcr+hlQEvPbOCQCWzatHQHt3D32DBRY11tFxtIfFTXVUV1Yg4GTfIDNrK6nU2R9Rvu/wewDMm1XL7Lqq4b9RNdQy0j9Kz10oBK8fOQnA7zTXD2+nkNoMtR3p1c4Tw9M1lRX0DRZYPi9bv79QoL27h4UNM6itrkSCrhN9HD3Zz4KGGdRWV9A3UODQsV4AFjTMQILKCtHe3TO83eWpP719g7yZ2i6fV4+Uhduxnn7m1NecHleaCLKbDw6kcS2dOxOACgnpdN+XN2evdSGgQiCJUwODHOw63Ye59TUcOdE3vJ3uk/3MrqumQtA3UKDrZN/w98TyefVUVJz5YrWl/TE0lo7uHhrqqmmYUdqPmkbbGTkKEezvPEF1pVjUWDe8rwEuq62iqb6GqgpxaqBA57un6BssUFNZweKmOoJsnxQiOPJeH8d6+gFY1FhHbXXF8Is+UAj6BgrU11ZSCHi3d4BZtZWcGijQ2z9IVWUFM2sqqa48+/+hEcGrnSe4bEYV82bV0j9YoLJCw/uuvqaSGdWVw/sAsp+RUh3v6efIiT5m1lTSN1BgoBDMrqumb6BAT//gcLs59TXMrqtGguM9A0DwzntZHySYXVdNY101kqgs2ucDg9l2evsLzK2vQYI3j/ayYPYM3u0d4J33TgHZz5okIrLv41MDBebNqh3e1pH3TvFu7wAfnDuT4z39w889ZOHsGcysqSTIfrbf6DrJ5ZdlP1uQ/Vyf7Btk863XsGr53JJfr7FM9aBYBBwsmm8Hrh/ZSNJGYCPABz/4wZKeaH5DLVctaOCNrpP0DwZz62uoqhS9/aeQsh+W9u4eFjXW8eH5sxCj/AAXlWZUV7LnzeME2ZvGrNoqqioqUHqDmlVbxQsdx1j5gQYEvPNe9kP7sSWNdBztYW59DUvmZG94zxzoZs7MGi5vqD3rKdu7e+jpH6SupoKrFjScmRA63a1I8xUSrx85ycqFDSxrrh/9rx/mBMW/XNpE32Dwm4NH+UjquyQOdvXwobn1zJ2VvZGf7Bvk8VcO87EljdRWVzBYCH72/CEAPrakkRnVFQwGw0Exb1YNH1nYMPxDMBQUH1l4ekyvdZ5gyZw6qtIb0FA3h95MD6RxrZg/iwjoHyxQIfFq5wmuuHwWVy64DAIqKkQhHSkOFuKMoLjuQ038/KW3uX7ZHN463svcWTU0zaxhUWMW3Md7+3nu4FE63z3F/IYZw8E1ZOiNeuXCBgI4drKfmsoKrlrYMMoLfQ4l/gd7f+cJls+bxfLm+uGgqKmqYFFTHR+efxmDEVRI/M/fvAlA32CBD8+/jKpKMfT/nc53T/Gr17uA7GfjA411w13qGyiw66W3uemfLUASz7cf5YrLZ6XgLXDkvVO8ffwU1y+bPWr/Xu08wbu9A3zqysuprhADheDNoz3MqKpkUVMdr3a+N9x2xeWzsu+BEh3v7ecXezupTM8DWRj29A8yt76GhY0zeLHjONcsaaS+torBQnC0p4/X3zkdsBFZP4719PPh+ZdRiDjj5//p17s41tPP714xDwQLZs/g7eOnuHLBLN5py4LiqgWnx/D28V5aD3RzxeWz+MDs7HVt7e1noBCsXNjAqfT6DrnuQ010dPec/h5K4VyIGH5tKiXqqitpnFld8muVR1P5cE/SLcDaiPiTNP+HwPUR8ZWx1mlpaYnW1taJ6qKZ2bQg6ZmIaBlt2ZS+RgF0AEuK5henmpmZTZCpHhRPAyskLZNUA6wHtk9yn8zMLilT+hpFRAxI+gqwE6gEtkTEnknulpnZJWVKBwVAROwAdkx2P8zMLlVT/dSTmZlNMgeFmZnlclCYmVkuB4WZmeWa0r9wVwpJncCBElefB7wzjt25GHjMlwaP+dJQzpg/FBHNoy2YdkFRDkmtY/1m4nTlMV8aPOZLw4Uas089mZlZLgeFmZnlclCc6f7J7sAk8JgvDR7zpeGCjNnXKMzMLJePKMzMLJeDwszMcjkoEklrJe2V1CZp02T3p1SSlkh6QtJLkvZI+mqqz5G0S9K+9LUp1SVpcxr385KuLdrWhtR+n6QNkzWm8yWpUtKzkn6W5pdJeiqN7SfpT9UjqTbNt6XlS4u2cWeq75V0w+SM5PxIapT0iKRXJL0s6RPTfT9L+rP0ff2ipIckzZhu+1nSFkmHJb1YVBu3/SrpOkkvpHU2S+fxebtDHzx/KT/I/oT5q8ByoAb4DbBysvtV4lgWAtem6cuA3wIrgf8MbEr1TcB30/RNwGNknyy6Cngq1ecA+9PXpjTdNNnjO8fY/z3wD8DP0vzDwPo0/bfAv0nTXwb+Nk2vB36SplemfV8LLEvfE5WTPa6c8W4F/iRN1wCN03k/k3008mtAXdH+/aPptp+B3wOuBV4sqo3bfgV+ldoqrXvjOfs02S/KVHgAnwB2Fs3fCdw52f0ap7E9Cvw+sBdYmGoLgb1p+u+AW4va703LbwX+rqh+Rrup9iD79MPdwKeBn6UfgneAqpH7mOzzTT6RpqtSO43c78XtptoDmJ3eNDWiPm33cwqKg+nNryrt5xum434Glo4IinHZr2nZK0X1M9qN9fCpp8zQN+CQ9lS7qKVD7WuAp4D5EXEoLXoLmJ+mxxr7xfaa/DXwNaCQ5ucCRyNiIM0X9394bGn5sdT+YhrzMqAT+Pt0uu0HkuqZxvs5IjqAvwTeAA6R7bdnmN77ech47ddFaXpkPZeDYpqSNAv4J+BPI+J48bLI/isxbe6LlvRZ4HBEPDPZfZlAVWSnJ+6LiGuAE2SnJIZNw/3cBKwjC8kPAPXA2knt1CSYjP3qoMh0AEuK5hen2kVJUjVZSPw4In6aym9LWpiWLwQOp/pYY7+YXpNPAp+T9Dqwjez00/eARklDn+JY3P/hsaXls4EjXFxjbgfaI+KpNP8IWXBM5/38GeC1iOiMiH7gp2T7fjrv5yHjtV870vTIei4HReZpYEW6e6KG7MLX9knuU0nSHQwPAC9HxF8VLdoODN35sIHs2sVQ/bZ098Qq4Fg6xN0JrJHUlP4ntybVppyIuDMiFkfEUrJ993hE/AHwBHBLajZyzEOvxS2pfaT6+nS3zDJgBdmFvyknIt4CDkq6MpVWAy8xjfcz2SmnVZJmpu/zoTFP2/1cZFz2a1p2XNKq9BreVrStsU32RZup8iC7e+C3ZHdAfGOy+1PGOH6X7LD0eeC59LiJ7NzsbmAf8H+AOam9gHvTuF8AWoq29cdAW3p8cbLHdp7j/xSn73paTvYG0Ab8I1Cb6jPSfFtavrxo/W+k12Iv53E3yCSP9WNAa9rX/4Ps7pZpvZ+B/wS8ArwI/IjszqVptZ+Bh8iuwfSTHTnePp77FWhJr9+rwN8w4oaI0R7+Ex5mZpbLp57MzCyXg8LMzHI5KMzMLJeDwszMcjkozMwsl4PCzMxyOSjMzCzX/wfjiuCHCiJzlAAAAABJRU5ErkJggg==\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "plt.plot(lpath)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/kn/8-Reinforcement/1-QLearning/solution/notebook.ipynb b/translations/kn/8-Reinforcement/1-QLearning/solution/notebook.ipynb new file mode 100644 index 000000000..31d928bbb --- /dev/null +++ b/translations/kn/8-Reinforcement/1-QLearning/solution/notebook.ipynb @@ -0,0 +1,579 @@ +{ + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.0" + }, + "orig_nbformat": 2, + "kernelspec": { + "name": "python3", + "display_name": "Python 3.7.0 64-bit ('3.7')" + }, + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + }, + "coopTranslator": { + "original_hash": "488431336543f71f14d4aaf0399e3381", + "translation_date": "2025-12-19T17:33:00+00:00", + "source_file": "8-Reinforcement/1-QLearning/solution/notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "# ಪೀಟರ್ ಮತ್ತು ನರಿ: ಬಲವರ್ಧಿತ ಅಧ್ಯಯನ ಪ್ರಾಥಮಿಕ\n", + "\n", + "ಈ ಪಾಠದಲ್ಲಿ, ನಾವು ಮಾರ್ಗ ಹುಡುಕುವ ಸಮಸ್ಯೆಗೆ ಬಲವರ್ಧಿತ ಅಧ್ಯಯನವನ್ನು ಹೇಗೆ ಅನ್ವಯಿಸಬೇಕೆಂದು ಕಲಿಯೋಣ. ಈ ಸನ್ನಿವೇಶವು ರಷ್ಯನ್ ಸಂಗೀತಕಾರ [ಸರ್ಗೇಯಿ ಪ್ರೊಕೊಫಿಯೆವ್](https://en.wikipedia.org/wiki/Sergei_Prokofiev) ರಚಿಸಿದ [ಪೀಟರ್ ಮತ್ತು ನರಿ](https://en.wikipedia.org/wiki/Peter_and_the_Wolf) ಸಂಗೀತ ಪರಿಕಥೆಯಿಂದ ಪ್ರೇರಿತವಾಗಿದೆ. ಇದು ಯುವ ಪಯನಿಯರ್ ಪೀಟರ್ ಬಗ್ಗೆ ಕಥೆ, ಅವನು ಧೈರ್ಯವಾಗಿ ತನ್ನ ಮನೆಯಿಂದ ಕಾಡಿನ ತೆರೆಯ ಕಡೆಗೆ ಹೋಗಿ ನರಿಯನ್ನು ಹಿಂಬಾಲಿಸುತ್ತಾನೆ. ನಾವು ಪೀಟರ್‌ಗೆ ಸುತ್ತಲೂ ಇರುವ ಪ್ರದೇಶವನ್ನು ಅನ್ವೇಷಿಸಲು ಮತ್ತು ಅತ್ಯುತ್ತಮ ನ್ಯಾವಿಗೇಶನ್ ನಕ್ಷೆಯನ್ನು ನಿರ್ಮಿಸಲು ಸಹಾಯ ಮಾಡುವ ಯಂತ್ರ ಅಧ್ಯಯನ ಆಲ್ಗಾರಿದಮ್ಗಳನ್ನು ತರಬೇತುಗೊಳಿಸುವೆವು.\n", + "\n", + "ಮೊದಲು, ಕೆಲವು ಉಪಯುಕ್ತ ಗ್ರಂಥಾಲಯಗಳನ್ನು ಆಮದು ಮಾಡೋಣ:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import random\n", + "import math" + ] + }, + { + "source": [ + "## ಬಲವರ್ಧಿತ ಅಧ್ಯಯನದ ಅವಲೋಕನ\n", + "\n", + "**ಬಲವರ್ಧಿತ ಅಧ್ಯಯನ** (RL) ಎಂಬುದು ನಾವು ಅನೇಕ ಪ್ರಯೋಗಗಳನ್ನು ನಡೆಸುವ ಮೂಲಕ ಕೆಲವು **ಪರಿಸರ**ದಲ್ಲಿ **ಏಜೆಂಟ್**ನ ಅತ್ಯುತ್ತಮ ವರ್ತನೆಯನ್ನು ಕಲಿಯಲು ಅನುಮತಿಸುವ ಅಧ್ಯಯನ ತಂತ್ರವಾಗಿದೆ. ಈ ಪರಿಸರದಲ್ಲಿರುವ ಏಜೆಂಟ್‌ಗೆ ಕೆಲವು **ಗುರಿ** ಇರಬೇಕು, ಅದು **ಪ್ರಶಸ್ತಿ ಕಾರ್ಯ** ಮೂಲಕ ನಿರ್ಧರಿಸಲಾಗುತ್ತದೆ.\n", + "\n", + "## ಪರಿಸರ\n", + "\n", + "ಸರಳತೆಗೆ, ಪೀಟರ್‌ನ ಜಗತ್ತನ್ನು `width` x `height` ಗಾತ್ರದ ಚದರ ಫಲಕ ಎಂದು ಪರಿಗಣಿಸೋಣ. ಈ ಫಲಕದ ಪ್ರತಿ ಸೆಲ್ ಇವುಗಳಲ್ಲಿ ಒಂದಾಗಿರಬಹುದು:\n", + "* **ಭೂಮಿ**, ಇದರಲ್ಲಿ ಪೀಟರ್ ಮತ್ತು ಇತರ ಜೀವಿಗಳು ನಡೆಯಬಹುದು\n", + "* **ನೀರು**, ಇದರಲ್ಲಿ ನೀವು ಸ್ಪಷ್ಟವಾಗಿ ನಡೆಯಲು ಸಾಧ್ಯವಿಲ್ಲ\n", + "* **ಮರ** ಅಥವಾ **ಹುಲ್ಲು** - ನೀವು ವಿಶ್ರಾಂತಿ ಪಡೆಯಬಹುದಾದ ಸ್ಥಳ\n", + "* **ಸೇಬು**, ಇದು ಪೀಟರ್ ತನ್ನನ್ನು ತಾನು ಆಹಾರ ನೀಡಲು ಕಂಡು ಸಂತೋಷ ಪಡುವುದನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತದೆ\n", + "* **ನರಿ**, ಇದು ಅಪಾಯಕಾರಿಯಾಗಿದ್ದು ತಪ್ಪಿಸಿಕೊಳ್ಳಬೇಕು\n", + "\n", + "ಪರಿಸರದೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು, ನಾವು `Board` ಎಂಬ ವರ್ಗವನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವೆವು. ಈ ನೋಟ್ಬುಕ್ ತುಂಬಾ ಗೊಂದಲವಾಗದಂತೆ, ಫಲಕದೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವ ಎಲ್ಲಾ ಕೋಡ್ ಅನ್ನು ಪ್ರತ್ಯೇಕ `rlboard` ಮೋಡ್ಯೂಲ್‌ಗೆ ಸ್ಥಳಾಂತರಿಸಿದ್ದೇವೆ, ಅದನ್ನು ಈಗ ನಾವು ಆಮದು ಮಾಡಿಕೊಳ್ಳುತ್ತೇವೆ. ಅನುಷ್ಠಾನದ ಒಳಗಿನ ವಿವರಗಳನ್ನು ತಿಳಿದುಕೊಳ್ಳಲು ನೀವು ಈ ಮೋಡ್ಯೂಲ್ ಅನ್ನು ನೋಡಬಹುದು.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "from rlboard import *" + ] + }, + { + "source": [ + "ನಾವು ಈಗ ಒಂದು ಯಾದೃಚ್ಛಿಕ ಫಲಕವನ್ನು ರಚಿಸಿ ಅದು ಹೇಗಿದೆ ಎಂದು ನೋಡೋಣ:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "width, height = 8,8\n", + "m = Board(width,height)\n", + "m.randomize(seed=13)\n", + "m.plot()" + ] + }, + { + "source": [ + "## ಕ್ರಿಯೆಗಳು ಮತ್ತು ನೀತಿ\n", + "\n", + "ನಮ್ಮ ಉದಾಹರಣೆಯಲ್ಲಿ, ಪೀಟರ್ ಗುರಿ ಒಂದು ಸೇಬು ಹುಡುಕುವುದು, ನರಿ ಮತ್ತು ಇತರ ಅಡ್ಡಿಗಳನ್ನು ತಪ್ಪಿಸುವುದು. ಇದಕ್ಕಾಗಿ, ಅವನು ಮೂಲತಃ ಸುತ್ತಾಡಬಹುದು ಮತ್ತು ಸೇಬು ಕಂಡುಹಿಡಿಯಬಹುದು. ಆದ್ದರಿಂದ, ಯಾವುದೇ ಸ್ಥಾನದಲ್ಲಿ ಅವನು ಕೆಳಗಿನ ಕ್ರಿಯೆಗಳಲ್ಲೊಂದು ಆಯ್ಕೆಮಾಡಬಹುದು: ಮೇಲಕ್ಕೆ, ಕೆಳಗೆ, ಎಡಕ್ಕೆ ಮತ್ತು ಬಲಕ್ಕೆ. ನಾವು ಆ ಕ್ರಿಯೆಗಳನ್ನು ಡಿಕ್ಷನರಿಯಾಗಿ ವ್ಯಾಖ್ಯಾನಿಸಿ, ಅವುಗಳನ್ನು ಸಂಬಂಧಿತ ಸಂಯೋಜನೆ ಬದಲಾವಣೆಗಳ ಜೋಡಿಗಳೊಂದಿಗೆ ನಕ್ಷೆ ಮಾಡುತ್ತೇವೆ. ಉದಾಹರಣೆಗೆ, ಬಲಕ್ಕೆ ಸಾಗುವುದು (`R`) ಜೋಡಿ `(1,0)` ಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "actions = { \"U\" : (0,-1), \"D\" : (0,1), \"L\" : (-1,0), \"R\" : (1,0) }\n", + "action_idx = { a : i for i,a in enumerate(actions.keys()) }" + ] + }, + { + "source": [ + "ನಮ್ಮ ಏಜೆಂಟ್ (ಪೀಟರ್) ನ ತಂತ್ರವನ್ನು **ನೀತಿ** ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಸರಳವಾದ ನೀತಿಯನ್ನು **ಯಾದೃಚ್ಛಿಕ ನಡೆ** ಎಂದು ಪರಿಗಣಿಸೋಣ.\n", + "\n", + "## ಯಾದೃಚ್ಛಿಕ ನಡೆ\n", + "\n", + "ಮೊದಲು ನಾವು ಯಾದೃಚ್ಛಿಕ ನಡೆ ತಂತ್ರವನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸುವ ಮೂಲಕ ನಮ್ಮ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸೋಣ.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "tags": [] + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "18" + ] + }, + "metadata": {}, + "execution_count": 5 + } + ], + "source": [ + "def random_policy(m):\n", + " return random.choice(list(actions))\n", + "\n", + "def walk(m,policy,start_position=None):\n", + " n = 0 # number of steps\n", + " # set initial position\n", + " if start_position:\n", + " m.human = start_position \n", + " else:\n", + " m.random_start()\n", + " while True:\n", + " if m.at() == Board.Cell.apple:\n", + " return n # success!\n", + " if m.at() in [Board.Cell.wolf, Board.Cell.water]:\n", + " return -1 # eaten by wolf or drowned\n", + " while True:\n", + " a = actions[policy(m)]\n", + " new_pos = m.move_pos(m.human,a)\n", + " if m.is_valid(new_pos) and m.at(new_pos)!=Board.Cell.water:\n", + " m.move(a) # do the actual move\n", + " break\n", + " n+=1\n", + "\n", + "walk(m,random_policy)" + ] + }, + { + "source": [ + "ನಾವು ಯಾದೃಚ್ಛಿಕ ನಡೆ ಪ್ರಯೋಗವನ್ನು ಹಲವಾರು ಬಾರಿ ನಡೆಸಿ ತೆಗೆದುಕೊಂಡ ಸರಾಸರಿ ಹೆಜ್ಜೆಗಳ ಸಂಖ್ಯೆಯನ್ನು ನೋಡೋಣ:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Average path length = 32.87096774193548, eaten by wolf: 7 times\n" + ] + } + ], + "source": [ + "def print_statistics(policy):\n", + " s,w,n = 0,0,0\n", + " for _ in range(100):\n", + " z = walk(m,policy)\n", + " if z<0:\n", + " w+=1\n", + " else:\n", + " s += z\n", + " n += 1\n", + " print(f\"Average path length = {s/n}, eaten by wolf: {w} times\")\n", + "\n", + "print_statistics(random_policy)" + ] + }, + { + "source": [ + "## ಬಹುಮಾನ ಕಾರ್ಯ\n", + "\n", + "ನಮ್ಮ ನೀತಿಯನ್ನು ಹೆಚ್ಚು ಬುದ್ಧಿವಂತವಾಗಿಸಲು, ಯಾವ ಚಲನೆಗಳು ಇತರರಿಗಿಂತ \"ಉತ್ತಮ\" ಎಂಬುದನ್ನು ನಾವು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕಾಗುತ್ತದೆ.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "move_reward = -0.1\n", + "goal_reward = 10\n", + "end_reward = -10\n", + "\n", + "def reward(m,pos=None):\n", + " pos = pos or m.human\n", + " if not m.is_valid(pos):\n", + " return end_reward\n", + " x = m.at(pos)\n", + " if x==Board.Cell.water or x == Board.Cell.wolf:\n", + " return end_reward\n", + " if x==Board.Cell.apple:\n", + " return goal_reward\n", + " return move_reward" + ] + }, + { + "source": [ + "## Q-ಲರ್ನಿಂಗ್\n", + "\n", + "Q-ಟೇಬಲ್ ಅಥವಾ ಬಹು-ಆಯಾಮದ ಅರೆ ಅನ್ನು ನಿರ್ಮಿಸಿ. ನಮ್ಮ ಬೋರ್ಡ್‌ನ ಆಯಾಮಗಳು `width` x `height` ಇದ್ದುದರಿಂದ, ನಾವು Q-ಟೇಬಲ್ ಅನ್ನು numpy ಅರೆ ಮೂಲಕ `width` x `height` x `len(actions)` ಆಕಾರದಲ್ಲಿ ಪ್ರತಿನಿಧಿಸಬಹುದು:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions)" + ] + }, + { + "source": [ + "Q-ಟೇಬಲ್ ಅನ್ನು ಪ್ಲಾಟ್ ಫಂಕ್ಷನ್‌ಗೆ ಪಾಸ್ ಮಾಡಿ ಟೇಬಲ್ ಅನ್ನು ಬೋರ್ಡ್ ಮೇಲೆ ದೃಶ್ಯೀಕರಿಸಲು:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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1fB4PKxatYoRI0bw4YcfMn/+fDp27Mj69eutjlZjx44d2O12rrrqKv71r3+xcOFCCgoKOHDggNXRanz66acMGjSIDh064Ha7efHFF1m0aFFY/QX42muv8bvf/Q6n08mll17Kn/70J1577bVGXacUtzhC586d2b59O/369aNNmzZs2bKF7Oxsq2PVkp2dzY8//kj//v1JTU3l+++/p0uXLlbHqhEVFUXr1q1RStG/f38CgQCHDh2iVatWVkerkZaWhmmatGnThvPOO4+ioiKSkpKIj4+3OlqNdu3asWfPHs4//3zOPPNMtm/fTufOneudj/Fky87OJjc3l/79+9OiRQs2btzY6O8XKW5xhO7du1NQUMD8+fN57733eP/99znvvPOsjlXLeeedx5dffsn69eu55557yMvLo3v37lbHquFwOOjcuTNvvvkmLpeLoUOHopQiKyvL6mg1MjIySElJYebMmXi9XiZNmkRWVhaJiYlWR6vRsWNHXC4Xf/vb31i7di0vv/wy55xzTlgVd69evdi4cSPLly/nmWeeYc2aNY0+dBcms7yLcPPFF1/w3Xff8cMPP4TdmCJAcnIyubm5vPfee1x99dVhVdrV+vfvz9atW8nJyWHlypVhtSVb7b777uPee+9lypQpfP/991bHOaq3336bwsJClixZwrZt26yOcwSbzcaWLVv4/PPPUUoxY8aMRl+nFLeoU7du3ejWrZvVMeo1ZMgQqyMc09SpU62OUC+lFH/5y1+sjlGvVq1aceedd1odo14XX3zxSVuXDJUIIUSEkeIWQogII8UthBARRopbCCEijBS3EEJEGCluIYSIMMcsbqXU6Uqpz5RS3yulvlNK/SG0PF0p9YlSKjf0OS20XCmlnldK7VBKbVJKndvY/wghhDiVHM8WdxC4T2vdFbgA+L1SqivwELBCa90JWBH6GuBXQKfQx3jgxQZPLYQQp7BjFrfWulBr/Z/Q7UrgByALuA6YF3rYPOD60O3rgPm6yv8BqUqp8LlAgxBCRLifNcatlGoHnAOsBVporQtDd+0HWoRuZwE/Hva0vaFlP32t8Uqp9Uqp9YGA52fGFkKIU9dxF7dSKhFYBEzSWte6ar2uumr4z7pyuNZ6tta6t9a6t8MR93OeKoQQp7TjKm6llIOq0l6otX4/tLioeggk9Ln6Ir4FwOmHPb11aJkQQogG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1r+LXq+XioqKsM5Y3/tEhcObKD09Xd9///1Wx6iTy+Xi4MGDtGvXzuoodSosLCQmJob09HSro9Rp27ZttG/fPqyHUTZu3MjZZ59tdYw6BQIBvv56F4cONf7F+n+p2NhSzjnHR6tGmv2oIeTl5ZGZmdnoM9WciGeeeYbS0tKj7yTSWlv+kZmZqcNZbm6unj17ttUx6vXBBx/o1atXWx2jXo8//rguLS21OkadTNPUEyZMsDpGvUpKSnSvXjm66pJg4fnRsuXXevHixVZ/q+o1a9YsnZuba3WMeoV68aidKWPcQggRYaS4hRAiwkhxCyFEhJHiFkKICCPFLYQQEUaKWwghIowUtxBCRBgpbiGEiDBS3EIIEWGkuIUQIsJIcQshRISR4hZCiAgjxS2EEBFGilsIISKMFLcQQkQYKW4hhIgwTba4V69eHdZTZAWDQdatW2d1jHqVlJSQm5trdYx67dixg5KSEqtj1Oubb74hGAxaHSOiuVwuNm/ebHWMeu3du5eCgoKTsq4wmXOy4axfv54PPviA2NhY/vWvf3HxxRdz2WWXWR2rlnfffZeNGzcSHR3NkiVLGD16NGeeeabVsWp55plnqKiowGazEQgEeOSRR4iLi7M6Vg2Px8O0adNwOByYpklSUhKTJ0+2OlYtO3bsYO7cucTExLBkyRKys7MZNmyY1bEizssvv8zu3btxOBy89dZbTJo0iebNm1sdq4Zpmjz22GM1G4pKKf70pz9hszXednGT2uLWWrNhwwZM0+QPf/gDLVu25PPPPw+rLW+tNf/85z/p3r07d999N0VFRezatSvsMs6bN48bbriB3/72t3zyySe43W6rY9Xi9Xr597//zejRo7nxxhuZP39+2H0Pd+3axf79+5kwYQJnn302H374YVhljARaaxYuXMill17K+PHj2bhxI8XFxWH1fTRNk7fffpvhw4dz8803884772CaZqOus0kVd35+Pps2baKyspJf/epXjB49mtjYWFavXm11tBrvv/8+F1xwAXPnzmXy5MlMmzaNhQsXUlFRYXW0GlOnTiUnJ4fbbruN5cuX88YbbzB+/HirY9Uybtw4Jk2axI033ojP5+P5559nypQpVseqUVlZyfz588nKymLw4MEMHjyYiy66iEWLFlkdLaL87W9/48477+Shhx7ixRdf5B//+AdTp05t9GL8OcaP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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "m.plot(Q)" + ] + }, + { + "source": [ + "## Q-ಲರ್ನಿಂಗ್‌ನ ಸಾರಾಂಶ: ಬೆಲ್‌ಮನ್ ಸಮೀಕರಣ ಮತ್ತು ಲರ್ನಿಂಗ್ ಆಲ್ಗಾರಿಥಮ್\n", + "\n", + "ನಮ್ಮ ಲರ್ನಿಂಗ್ ಆಲ್ಗಾರಿಥಮ್‌ಗೆ ಪ್ಸ್ಯೂಡೋ-ಕೋಡ್ ಬರೆಯಿರಿ:\n", + "\n", + "* ಎಲ್ಲಾ ಸ್ಥಿತಿಗಳು ಮತ್ತು ಕ್ರಿಯೆಗಳಿಗಾಗಿ ಸಮಾನ ಸಂಖ್ಯೆಗಳೊಂದಿಗೆ Q-ಟೇಬಲ್ Q ಅನ್ನು ಪ್ರಾರಂಭಿಸಿ\n", + "* ಲರ್ನಿಂಗ್ ದರವನ್ನು $\\alpha\\leftarrow 1$ ಎಂದು ಸೆಟ್ ಮಾಡಿ\n", + "* ಅನೇಕ ಬಾರಿ ಸಿಮ್ಯುಲೇಶನ್ ಅನ್ನು ಪುನರಾವರ್ತಿಸಿ\n", + " 1. ಯಾದೃಚ್ಛಿಕ ಸ್ಥಾನದಿಂದ ಪ್ರಾರಂಭಿಸಿ\n", + " 1. ಪುನರಾವರ್ತಿಸಿ\n", + " 1. ಸ್ಥಿತಿ $s$ ನಲ್ಲಿ ಕ್ರಿಯೆ $a$ ಆಯ್ಕೆಮಾಡಿ\n", + " 2. ಹೊಸ ಸ್ಥಿತಿಗೆ $s'$ ಹೋಗಿ ಕ್ರಿಯೆಯನ್ನು ನಿರ್ವಹಿಸಿ\n", + " 3. ನಾವು ಆಟದ ಅಂತ್ಯದ ಸ್ಥಿತಿಯನ್ನು ಎದುರಿಸಿದರೆ, ಅಥವಾ ಒಟ್ಟು ಬಹುಮಾನ ತುಂಬಾ ಕಡಿಮೆ ಇದ್ದರೆ - ಸಿಮ್ಯುಲೇಶನ್ ನಿಂದ ನಿರ್ಗಮಿಸಿ \n", + " 4. ಹೊಸ ಸ್ಥಿತಿಯಲ್ಲಿ ಬಹುಮಾನ $r$ ಅನ್ನು ಲೆಕ್ಕಿಸಿ\n", + " 5. ಬೆಲ್‌ಮನ್ ಸಮೀಕರಣದ ಪ್ರಕಾರ Q-ಫಂಕ್ಷನ್ ಅನ್ನು ನವೀಕರಿಸಿ: $Q(s,a)\\leftarrow (1-\\alpha)Q(s,a)+\\alpha(r+\\gamma\\max_{a'}Q(s',a'))$\n", + " 6. $s\\leftarrow s'$\n", + " 7. ಒಟ್ಟು ಬಹುಮಾನವನ್ನು ನವೀಕರಿಸಿ ಮತ್ತು $\\alpha$ ಅನ್ನು ಕಡಿಮೆ ಮಾಡಿ.\n", + "\n", + "## ಅನ್ವೇಷಣೆ ವಿರುದ್ಧ ಉಪಯೋಗ\n", + "\n", + "ಅತ್ಯುತ್ತಮ ವಿಧಾನವು ಅನ್ವೇಷಣೆ ಮತ್ತು ಉಪಯೋಗದ ನಡುವೆ ಸಮತೋಲನ ಸಾಧಿಸುವುದಾಗಿದೆ. ನಾವು ನಮ್ಮ ಪರಿಸರವನ್ನು ಹೆಚ್ಚು ತಿಳಿದುಕೊಳ್ಳುವಂತೆ, ನಾವು ಅತ್ಯುತ್ತಮ ಮಾರ್ಗವನ್ನು ಅನುಸರಿಸುವ ಸಾಧ್ಯತೆ ಹೆಚ್ಚಾಗುತ್ತದೆ, ಆದಾಗ್ಯೂ, ಕೆಲವೊಮ್ಮೆ ಅನ್ವೇಷಿಸಲ್ಪಟ್ಟಿಲ್ಲದ ಮಾರ್ಗವನ್ನು ಆಯ್ಕೆಮಾಡುವುದು.\n", + "\n", + "## ಪೈಥಾನ್ ಅನುಷ್ಠಾನ\n", + "\n", + "ಈಗ ನಾವು ಲರ್ನಿಂಗ್ ಆಲ್ಗಾರಿಥಮ್ ಅನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸಲು ಸಿದ್ಧರಾಗಿದ್ದೇವೆ. ಅದಕ್ಕೆ ಮುಂಚೆ, Q-ಟೇಬಲ್‌ನ任意 ಸಂಖ್ಯೆಗಳನ್ನೂ ಸಂಬಂಧಿತ ಕ್ರಿಯೆಗಳ ಪ್ರಾಬಬಿಲಿಟಿಗಳ ವೆಕ್ಟರ್‌ಗೆ ಪರಿವರ್ತಿಸುವ ಕೆಲವು ಫಂಕ್ಷನ್ ಬೇಕಾಗುತ್ತದೆ:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "def probs(v,eps=1e-4):\n", + " v = v-v.min()+eps\n", + " v = v/v.sum()\n", + " return v" + ] + }, + { + "source": [ + "ನಾವು ಮೂಲ ವೆಕ್ಟರ್‌ಗೆ ಸಣ್ಣ ಪ್ರಮಾಣದ `eps` ಅನ್ನು ಸೇರಿಸುತ್ತೇವೆ, ಇದರಿಂದ ಪ್ರಾರಂಭಿಕ ಸಂದರ್ಭದಲ್ಲಿ, ವೆಕ್ಟರ್‌ನ ಎಲ್ಲಾ ಘಟಕಗಳು ಒಂದೇ ಆಗಿದ್ದಾಗ 0 ರಿಂದ ಭಾಗಿಸುವುದನ್ನು ತಪ್ಪಿಸಬಹುದು.\n", + "\n", + "ನಾವು 5000 ಪ್ರಯೋಗಗಳಿಗಾಗಿ ನಡೆಸುವ ನಿಜವಾದ ಕಲಿಕೆ ಆಲ್ಗಾರಿಥಮ್, ಇದನ್ನು **epochs** ಎಂದೂ ಕರೆಯುತ್ತಾರೆ:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "" + ] + } + ], + "source": [ + "\n", + "from IPython.display import clear_output\n", + "\n", + "lpath = []\n", + "\n", + "for epoch in range(10000):\n", + " clear_output(wait=True)\n", + " print(f\"Epoch = {epoch}\",end='')\n", + "\n", + " # Pick initial point\n", + " m.random_start()\n", + " \n", + " # Start travelling\n", + " n=0\n", + " cum_reward = 0\n", + " while True:\n", + " x,y = m.human\n", + " v = probs(Q[x,y])\n", + " a = random.choices(list(actions),weights=v)[0]\n", + " dpos = actions[a]\n", + " m.move(dpos,check_correctness=False) # we allow player to move outside the board, which terminates episode\n", + " r = reward(m)\n", + " cum_reward += r\n", + " if r==end_reward or cum_reward < -1000:\n", + " print(f\" {n} steps\",end='\\r')\n", + " lpath.append(n)\n", + " break\n", + " alpha = np.exp(-n / 3000)\n", + " gamma = 0.5\n", + " ai = action_idx[a]\n", + " Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max())\n", + " n+=1" + ] + }, + { + "source": [ + "ಈ ಆಲ್ಗೋರಿದಮ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಿದ ನಂತರ, ಪ್ರತಿ ಹಂತದಲ್ಲಿ ವಿಭಿನ್ನ ಕ್ರಿಯೆಗಳ ಆಕರ್ಷಕತೆಯನ್ನು ನಿರ್ಧರಿಸುವ ಮೌಲ್ಯಗಳೊಂದಿಗೆ Q-ಟೇಬಲ್ ನವೀಕರಿಸಬೇಕು. ಟೇಬಲ್ ಅನ್ನು ಇಲ್ಲಿ ದೃಶ್ಯೀಕರಿಸಿ:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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DBhgaPG22+307NmTbt26hQv1W2+9xWuvvUbv3r0544wzDP/lEqvUr7UIevPNN7n55ptPuWhX8Xg8XHPNNaxcuTJCyequZcuWMWHCBGbMmMFzzz3HE088YXSkOkkIgc1mw2w289RTT7Fs2TKWLl164r9YCywWS/h2dtdddx2apjFv3jw+/vhjo6PFLFW4I2TBggXcddddR/VnCyFwOBwnbDUIIUhISDhq27Zt27j55pv57rvvopK3LiguLmbt2rUsWLCAl19+mcTERFq0aMHatWuNjlbnTZkyhT179sTkxcCxY8fy9NNPs3v3bj744AOj48QkVbhrSNM03n77bSZPnkxZWdlR32vVqhWzZ88+YX+d1WplyZIlpKSkHDVJZ/v27Vx55ZXs2LGjQY42SU5O5qyzzmLZsmWMGzeOyy67jBdffJFdu3ZRVlbWIF+TSLHb7XTp0oWcnJxqRzwZyW63M3bsWDZv3szKlStj/t+6trt0VOGuASklK1eu5Prrr6ekpCS8vXHjxvTv359vv/2WzMzMk/pHPfvss/n111+55557jmp95+bm0q9fP/Lz86PyHGKZxWKhdevWLF68mBUrVjBnzhzuv/9+9u/fz7XXXsvy5cvZs2eP0THrrAsvvJDmzZvz5ptvxmTxdjgcPPjggyxZsiTmuw1r+xeLKtw1oOs6f//734/q027atCnTpk3jk08+oVGjRid9rKrp8ZMmTeK22247agnQiooK5s6dG/Otjmg477zzWLZsGX6/n48//pg777yTKVOm8N5777FmzRreeOMNHnnkEbxer9FRj+nLL7/kvPPOi8klXYUQjBkzBiEE//d//2d0nGMSQvDMM8+wZs2amOzWqZKZmUnLli354YcfauV8qnDXgBCCVq1ahdcZsVqtTJ8+nVGjRpGcnPy73z4JIcjIyOC+++5j/Pjx4e12u73WR1IkJCQwatSomFnf4qabbjpqpl9cXBwPP/wwo0eP5txzz+XKK6/kiSeeCA91ixUrVqzgvPPOIy4uzugo1frLX/5Cy5YtefLJJ2PqtasihOCuu+7il19+4ZNPPonJjFWFe9OmTbVyPlW4a0AIwfTp05k8eTJt27Zl/fr1jB49+jcXGn/vf7S0tDRmzJjByy+/TJs2bZg9e3a4ZVRbqropYr0rok2bNgwaNIi33nqLjh070r17d7766isOHDhg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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "m.plot(Q)" + ] + }, + { + "source": [ + "## ನೀತಿ ಪರಿಶೀಲನೆ\n", + "\n", + "ಪ್ರತಿ ಸ್ಥಿತಿಯಲ್ಲಿ ಪ್ರತಿ ಕ್ರಿಯೆಯ \"ಆಕರ್ಷಕತೆ\" ಅನ್ನು Q-ಟೇಬಲ್ ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ, ಆದ್ದರಿಂದ ನಮ್ಮ ಜಗತ್ತಿನಲ್ಲಿ ಪರಿಣಾಮಕಾರಿಯಾದ ನ್ಯಾವಿಗೇಶನ್ ಅನ್ನು ನಿರ್ಧರಿಸಲು ಇದನ್ನು ಬಳಸುವುದು ಬಹಳ ಸುಲಭವಾಗಿದೆ. ಸರಳವಾದ ಪ್ರಕರಣದಲ್ಲಿ, ನಾವು ಅತ್ಯುನ್ನತ Q-ಟೇಬಲ್ ಮೌಲ್ಯಕ್ಕೆ ಹೊಂದಿಕೊಂಡಿರುವ ಕ್ರಿಯೆಯನ್ನು ಆಯ್ಕೆ ಮಾಡಬಹುದು:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "2" + ] + }, + "metadata": {}, + "execution_count": 13 + } + ], + "source": [ + "def qpolicy_strict(m):\n", + " x,y = m.human\n", + " v = probs(Q[x,y])\n", + " a = list(actions)[np.argmax(v)]\n", + " return a\n", + "\n", + "walk(m,qpolicy_strict)" + ] + }, + { + "source": [ + "ನೀವು ಮೇಲಿನ ಕೋಡ್ ಅನ್ನು ಹಲವಾರು ಬಾರಿ ಪ್ರಯತ್ನಿಸಿದರೆ, ಕೆಲವೊಮ್ಮೆ ಅದು \"ಹ್ಯಾಂಗ್\" ಆಗುತ್ತದೆ ಎಂದು ಗಮನಿಸಬಹುದು, ಮತ್ತು ಅದನ್ನು ಮಧ್ಯಂತರಗೊಳಿಸಲು ನೀವು ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ STOP ಬಟನ್ ಒತ್ತಬೇಕಾಗುತ್ತದೆ.\n", + "\n", + "> **ಕಾರ್ಯ 1:** `walk` ಫಂಕ್ಷನ್ ಅನ್ನು ಮಾರ್ಪಡಿಸಿ, ಪಥದ ಗರಿಷ್ಠ ಉದ್ದವನ್ನು ನಿರ್ದಿಷ್ಟ ಸಂಖ್ಯೆಯ ಹೆಜ್ಜೆಗಳ ಮೂಲಕ (ಹೇಳಿದಂತೆ, 100) ಮಿತಿಗೊಳಿಸಿ, ಮತ್ತು ಮೇಲಿನ ಕೋಡ್ ಈ ಮೌಲ್ಯವನ್ನು ಸಮಯಕಾಲಕ್ಕೆ ಹಿಂತಿರುಗಿಸುವುದನ್ನು ಗಮನಿಸಿ.\n", + "\n", + "> **ಕಾರ್ಯ 2:** `walk` ಫಂಕ್ಷನ್ ಅನ್ನು ಮಾರ್ಪಡಿಸಿ, ಅದು ಈಗಾಗಲೇ ಹೋಗಿದ್ದ ಸ್ಥಳಗಳಿಗೆ ಹಿಂದಿರುಗದಂತೆ ಮಾಡಿ. ಇದರಿಂದ `walk` ಲೂಪ್ ಆಗುವುದನ್ನು ತಡೆಯುತ್ತದೆ, ಆದರೂ ಏಜೆಂಟ್ ಇನ್ನೂ \"ಬಂದಿ\" ಆಗಿ ಹೊರಬರಲು ಸಾಧ್ಯವಿಲ್ಲದ ಸ್ಥಳದಲ್ಲಿ ಸಿಲುಕಬಹುದು.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Average path length = 3.45, eaten by wolf: 0 times\n" + ] + } + ], + "source": [ + "\n", + "def qpolicy(m):\n", + " x,y = m.human\n", + " v = probs(Q[x,y])\n", + " a = random.choices(list(actions),weights=v)[0]\n", + " return a\n", + "\n", + "print_statistics(qpolicy)" + ] + }, + { + "source": [ + "## ಕಲಿಕೆಯ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಪರಿಶೀಲಿಸುವುದು\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[]" + ] + }, + "metadata": {}, + "execution_count": 15 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "plt.plot(lpath)" + ] + }, + { + "source": [ + "ನಾವು ಇಲ್ಲಿ ನೋಡುತ್ತಿರುವುದು ಪ್ರಾರಂಭದಲ್ಲಿ ಸರಾಸರಿ ಮಾರ್ಗದ ಉದ್ದವು ಹೆಚ್ಚಾಗಿದೆ. ಇದು ಬಹುಶಃ ಪರಿಸರದ ಬಗ್ಗೆ ನಮಗೆ ಏನೂ ತಿಳಿದಿಲ್ಲದಿರುವ ಕಾರಣದಿಂದಾಗಿದ್ದು - ನಾವು ಕೆಟ್ಟ ಸ್ಥಿತಿಗಳಾದ ನೀರು ಅಥವಾ ನರಿ ಒಳಗೆ ಸಿಕ್ಕಿಕೊಳ್ಳುವ ಸಾಧ್ಯತೆ ಇದೆ. ನಾವು ಹೆಚ್ಚು ಕಲಿತಂತೆ ಮತ್ತು ಈ ಜ್ಞಾನವನ್ನು ಬಳಸಲು ಪ್ರಾರಂಭಿಸಿದಂತೆ, ನಾವು ಪರಿಸರವನ್ನು ಹೆಚ್ಚು ಕಾಲ ಅನ್ವೇಷಿಸಬಹುದು, ಆದರೆ ನಾವು ಇನ್ನೂ ಸೇಬುಗಳು ಎಲ್ಲಿವೆ ಎಂಬುದನ್ನು ಚೆನ್ನಾಗಿ ತಿಳಿಯುವುದಿಲ್ಲ.\n", + "\n", + "ನಾವು ಸಾಕಷ್ಟು ಕಲಿತ ನಂತರ, ಏಜೆಂಟ್ ಗುರಿಯನ್ನು ಸಾಧಿಸುವುದು ಸುಲಭವಾಗುತ್ತದೆ, ಮತ್ತು ಮಾರ್ಗದ ಉದ್ದವು ಕಡಿಮೆಯಾಗಲು ಪ್ರಾರಂಭಿಸುತ್ತದೆ. ಆದಾಗ್ಯೂ, ನಾವು ಇನ್ನೂ ಅನ್ವೇಷಣೆಗೆ ತೆರೆಯಲಾಗಿದ್ದು, ನಾವು ಬಹುಶಃ ಉತ್ತಮ ಮಾರ್ಗದಿಂದ ದೂರ ಸರಿದು, ಹೊಸ ಆಯ್ಕೆಗಳನ್ನು ಅನ್ವೇಷಿಸುತ್ತೇವೆ, ಇದರಿಂದ ಮಾರ್ಗವು ಆದರ್ಶಕ್ಕಿಂತ ಹೆಚ್ಚು ಉದ್ದವಾಗುತ್ತದೆ.\n", + "\n", + "ನಾವು ಈ ಗ್ರಾಫ್‌ನಲ್ಲಿ ಇನ್ನೂ ಗಮನಿಸುವುದು ಏನೆಂದರೆ, ಕೆಲವು ಸಮಯದಲ್ಲಿ ಉದ್ದವು ತೀವ್ರವಾಗಿ ಹೆಚ್ಚಾಗಿದೆ. ಇದು ಪ್ರಕ್ರಿಯೆಯ ಅಸ್ಪಷ್ಟ ಸ್ವಭಾವವನ್ನು ಸೂಚಿಸುತ್ತದೆ, ಮತ್ತು ನಾವು ಕೆಲವು ಸಮಯದಲ್ಲಿ Q-ಟೇಬಲ್ ಗುಣಾಂಕಗಳನ್ನು \"ಹಾಳು\" ಮಾಡಬಹುದು, ಅವುಗಳನ್ನು ಹೊಸ ಮೌಲ್ಯಗಳಿಂದ ಮರುಬರೆಯುವ ಮೂಲಕ. ಇದನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಕಲಿಕೆಯ ದರವನ್ನು ಕಡಿಮೆ ಮಾಡಬೇಕು (ಅಂದರೆ ತರಬೇತಿಯ ಕೊನೆಯಲ್ಲಿ ನಾವು Q-ಟೇಬಲ್ ಮೌಲ್ಯಗಳನ್ನು ಸಣ್ಣ ಮೌಲ್ಯದಿಂದ ಮಾತ್ರ ಸರಿಪಡಿಸುತ್ತೇವೆ).\n", + "\n", + "ಒಟ್ಟಾರೆ, ಕಲಿಕೆಯ ಪ್ರಕ್ರಿಯೆಯ ಯಶಸ್ಸು ಮತ್ತು ಗುಣಮಟ್ಟವು ಕಲಿಕೆಯ ದರ, ಕಲಿಕೆಯ ದರ ಕುಸಿತ ಮತ್ತು ಡಿಸ್ಕೌಂಟ್ ಫ್ಯಾಕ್ಟರ್ ಮುಂತಾದ ಪರಿಮಾಣಗಳ ಮೇಲೆ ಬಹಳ ಅವಲಂಬಿತವಾಗಿದೆ ಎಂಬುದನ್ನು ನೆನಪಿಡುವುದು ಮುಖ್ಯ. ಅವುಗಳನ್ನು ಸಾಮಾನ್ಯವಾಗಿ **ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು** ಎಂದು ಕರೆಯುತ್ತಾರೆ, ತರಬೇತಿಯ ಸಮಯದಲ್ಲಿ ನಾವು ಆಪ್ಟಿಮೈಸ್ ಮಾಡುವ **ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು** (ಉದಾ. Q-ಟೇಬಲ್ ಗುಣಾಂಕಗಳು) ಇಂದ ವಿಭಿನ್ನವಾಗಿಸಲು. ಉತ್ತಮ ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್ ಮೌಲ್ಯಗಳನ್ನು ಹುಡುಕುವ ಪ್ರಕ್ರಿಯೆಯನ್ನು **ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್ ಆಪ್ಟಿಮೈಜೆಷನ್** ಎಂದು ಕರೆಯುತ್ತಾರೆ, ಮತ್ತು ಇದು ಪ್ರತ್ಯೇಕ ವಿಷಯಕ್ಕೆ ಅರ್ಹವಾಗಿದೆ.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "source": [ + "## ವ್ಯಾಯಾಮ\n", + "#### ಇನ್ನಷ್ಟು ವಾಸ್ತವಿಕ ಪೀಟರ್ ಮತ್ತು ನರಿ ಲೋಕ\n", + "\n", + "ನಮ್ಮ ಪರಿಸ್ಥಿತಿಯಲ್ಲಿ, ಪೀಟರ್ ಬಹಳಷ್ಟು ದಣಿವಾಗದೆ ಅಥವಾ ಹಸಿವಾಗದೆ ಸುತ್ತಾಡಲು ಸಾಧ್ಯವಾಯಿತು. ಇನ್ನಷ್ಟು ವಾಸ್ತವಿಕ ಲೋಕದಲ್ಲಿ, ಅವನು ಸಮಯಕಾಲಕ್ಕೆ ಕುಳಿತು ವಿಶ್ರಾಂತಿ ಪಡೆಯಬೇಕು ಮತ್ತು ತಾನೇ ಆಹಾರ ಸೇವಿಸಬೇಕು. ಕೆಳಗಿನ ನಿಯಮಗಳನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸುವ ಮೂಲಕ ನಮ್ಮ ಲೋಕವನ್ನು ಇನ್ನಷ್ಟು ವಾಸ್ತವಿಕವಾಗಿಸೋಣ:\n", + "\n", + "1. ಒಂದು ಸ್ಥಳದಿಂದ ಮತ್ತೊಂದು ಸ್ಥಳಕ್ಕೆ ಚಲಿಸುವ ಮೂಲಕ, ಪೀಟರ್ **ಶಕ್ತಿ** ಕಳೆದುಕೊಳ್ಳುತ್ತಾನೆ ಮತ್ತು ಕೆಲವು **ದಣಿವು** ಗಳಿಸುತ್ತಾನೆ.\n", + "2. ಪೀಟರ್ ಸೇಬುಗಳನ್ನು ತಿಂದರೆ ಹೆಚ್ಚು ಶಕ್ತಿ ಗಳಿಸಬಹುದು.\n", + "3. ಪೀಟರ್ ಮರದ ಕೆಳಗೆ ಅಥವಾ ಹುಲ್ಲಿನ ಮೇಲೆ (ಅಂದರೆ ಹಸಿರು ಮೈದಾನದಲ್ಲಿ ಮರ ಅಥವಾ ಹುಲ್ಲು ಇರುವ ಬೋರ್ಡ್ ಸ್ಥಳಕ್ಕೆ ನಡೆಯುವ ಮೂಲಕ) ವಿಶ್ರಾಂತಿ ಪಡೆದು ದಣಿವಿನಿಂದ ಮುಕ್ತನಾಗಬಹುದು.\n", + "4. ಪೀಟರ್ ನರನ್ನು ಹುಡುಕಿ ಕೊಲ್ಲಬೇಕು.\n", + "5. ನರನ್ನು ಕೊಲ್ಲಲು, ಪೀಟರ್‌ಗೆ ನಿರ್ದಿಷ್ಟ ಮಟ್ಟದ ಶಕ್ತಿ ಮತ್ತು ದಣಿವು ಬೇಕಾಗುತ್ತದೆ, ಇಲ್ಲದಿದ್ದರೆ ಅವನು ಯುದ್ಧವನ್ನು ಸೋಲುತ್ತಾನೆ.\n", + "\n", + "ಮೇಲಿನ ಬಹುಮಾನ ಕಾರ್ಯವನ್ನು ಆಟದ ನಿಯಮಗಳ ಪ್ರಕಾರ ಬದಲಿಸಿ, reinforcement learning ಆಲ್ಗಾರಿದಮ್ ಅನ್ನು ಚಲಿಸಿ ಆಟವನ್ನು ಗೆಲ್ಲಲು ಉತ್ತಮ ತಂತ್ರವನ್ನು ಕಲಿಯಿರಿ, ಮತ್ತು ನಿಮ್ಮ ಆಲ್ಗಾರಿದಮ್‌ನೊಂದಿಗೆ ಯಾದೃಚ್ಛಿಕ ನಡಿಗೆ ಫಲಿತಾಂಶಗಳನ್ನು ಗೆಲುವಿನ ಮತ್ತು ಸೋಲಿನ ಆಟಗಳ ಸಂಖ್ಯೆಯ ದೃಷ್ಟಿಯಿಂದ ಹೋಲಿಸಿ.\n", + "\n", + "> **ಗಮನಿಸಿ**: ಇದನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು, ವಿಶೇಷವಾಗಿ epochs ಸಂಖ್ಯೆಯನ್ನು ಹೊಂದಿಕೊಳಬೇಕಾಗಬಹುದು. ಯಾಕಂದರೆ ಆಟದ ಯಶಸ್ಸು (ನರನೊಂದಿಗೆ ಹೋರಾಟ) ಅಪರೂಪದ ಘಟನೆ, ನೀವು ಬಹಳ ಹೆಚ್ಚು ತರಬೇತಿ ಸಮಯವನ್ನು ನಿರೀಕ್ಷಿಸಬಹುದು.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/kn/8-Reinforcement/2-Gym/README.md b/translations/kn/8-Reinforcement/2-Gym/README.md new file mode 100644 index 000000000..8f26604bd --- /dev/null +++ b/translations/kn/8-Reinforcement/2-Gym/README.md @@ -0,0 +1,356 @@ + +# ಕಾರ್ಟ್‌ಪೋಲ್ ಸ್ಕೇಟಿಂಗ್ + +ಹಿಂದಿನ ಪಾಠದಲ್ಲಿ ನಾವು ಪರಿಹರಿಸುತ್ತಿದ್ದ ಸಮಸ್ಯೆ ಆಟದ ಸಮಸ್ಯೆಯಂತೆ ಕಾಣಬಹುದು, ನಿಜವಾದ ಜೀವನದ ಸಂದರ್ಭಗಳಿಗೆ ಅನ್ವಯಿಸುವುದಿಲ್ಲ ಎಂದು ಭಾಸವಾಗಬಹುದು. ಆದರೆ ಇದು ಸತ್ಯವಲ್ಲ, ಏಕೆಂದರೆ ಅನೇಕ ನಿಜವಾದ ಜಗತ್ತಿನ ಸಮಸ್ಯೆಗಳು ಕೂಡ ಈ ದೃಶ್ಯವನ್ನು ಹಂಚಿಕೊಳ್ಳುತ್ತವೆ - ಚೆಸ್ ಅಥವಾ ಗೋ ಆಟವನ್ನೂ ಸೇರಿಸಿ. ಅವುಗಳು ಸಮಾನವಾಗಿವೆ, ಏಕೆಂದರೆ ನಮಗೂ ನಿಯಮಗಳೊಂದಿಗೆ ಒಂದು ಬೋರ್ಡ್ ಇದೆ ಮತ್ತು **ವಿಭಜಿತ ಸ್ಥಿತಿ** ಇದೆ. + +## [ಪೂರ್ವ-ಪಾಠ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) + +## ಪರಿಚಯ + +ಈ ಪಾಠದಲ್ಲಿ ನಾವು Q-ಲರ್ನಿಂಗ್‌ನ ಅದೇ ತತ್ವಗಳನ್ನು **ನಿರಂತರ ಸ್ಥಿತಿ** ಹೊಂದಿರುವ ಸಮಸ್ಯೆಗೆ ಅನ್ವಯಿಸುವೆವು, ಅಂದರೆ ಒಂದು ಅಥವಾ ಹೆಚ್ಚು ನಿಜವಾದ ಸಂಖ್ಯೆಗಳ ಮೂಲಕ ನೀಡಲ್ಪಡುವ ಸ್ಥಿತಿ. ನಾವು ಕೆಳಗಿನ ಸಮಸ್ಯೆಯನ್ನು ಎದುರಿಸುವೆವು: + +> **ಸಮಸ್ಯೆ**: ಪೀಟರ್ ನಾಯಿ ಹಂದಿಯಿಂದ ತಪ್ಪಿಸಿಕೊಳ್ಳಲು, ಅವನು ವೇಗವಾಗಿ ಚಲಿಸಲು ಸಾಧ್ಯವಾಗಬೇಕು. ನಾವು ನೋಡೋಣ ಪೀಟರ್ ಹೇಗೆ ಸ್ಕೇಟ್ ಮಾಡುವುದು ಕಲಿಯಬಹುದು, ವಿಶೇಷವಾಗಿ, ಸಮತೋಲನವನ್ನು ಕಾಯ್ದುಕೊಳ್ಳಲು, Q-ಲರ್ನಿಂಗ್ ಬಳಸಿ. + +![ದ ಗ್ರೇಟ್ ಎಸ್ಕೇಪ್!](../../../../translated_images/escape.18862db9930337e3fce23a9b6a76a06445f229dadea2268e12a6f0a1fde12115.kn.png) + +> ಪೀಟರ್ ಮತ್ತು ಅವನ ಸ್ನೇಹಿತರು ನಾಯಿ ಹಂದಿಯಿಂದ ತಪ್ಪಿಸಲು ಸೃಜನಶೀಲರಾಗುತ್ತಾರೆ! ಚಿತ್ರ [ಜೆನ್ ಲೂಪರ್](https://twitter.com/jenlooper) ಅವರಿಂದ + +ನಾವು ಸಮತೋಲನದ ಸರಳೀಕೃತ ಆವೃತ್ತಿಯನ್ನು ಬಳಸುತ್ತೇವೆ, ಇದನ್ನು **ಕಾರ್ಟ್‌ಪೋಲ್** ಸಮಸ್ಯೆ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಕಾರ್ಟ್‌ಪೋಲ್ ಜಗತ್ತಿನಲ್ಲಿ, ನಮಗೆ ಎಡಕ್ಕೆ ಅಥವಾ ಬಲಕ್ಕೆ ಚಲಿಸುವ ಹೋರಿಜಾಂಟಲ್ ಸ್ಲೈಡರ್ ಇದೆ, ಮತ್ತು ಗುರಿ ಸ್ಲೈಡರ್ ಮೇಲಿನ ಲಂಬ ಕಂಬವನ್ನು ಸಮತೋಲನದಲ್ಲಿಡುವುದು. + +a cartpole + +## ಪೂರ್ವಾಪೇಕ್ಷಿತಗಳು + +ಈ ಪಾಠದಲ್ಲಿ, ನಾವು **OpenAI Gym** ಎಂಬ ಗ್ರಂಥಾಲಯವನ್ನು ಬಳಸುತ್ತೇವೆ ವಿವಿಧ **ಪರಿಸರಗಳನ್ನು** ಅನುಕರಿಸಲು. ನೀವು ಈ ಪಾಠದ ಕೋಡ್ ಅನ್ನು ಸ್ಥಳೀಯವಾಗಿ (ಉದಾ. Visual Studio Code ನಿಂದ) ಚಾಲನೆ ಮಾಡಬಹುದು, ಆ ಸಂದರ್ಭದಲ್ಲಿ ಅನುಕರಣ ಹೊಸ ವಿಂಡೋದಲ್ಲಿ ತೆರೆಯುತ್ತದೆ. ಆನ್‌ಲೈನ್‌ನಲ್ಲಿ ಕೋಡ್ ಚಾಲನೆ ಮಾಡುವಾಗ, ನೀವು ಕೆಲವು ತಿದ್ದುಪಡಿ ಮಾಡಬೇಕಾಗಬಹುದು, ಇದನ್ನು ಇಲ್ಲಿ ವಿವರಿಸಲಾಗಿದೆ [ಇಲ್ಲಿ](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7). + +## OpenAI Gym + +ಹಿಂದಿನ ಪಾಠದಲ್ಲಿ, ಆಟದ ನಿಯಮಗಳು ಮತ್ತು ಸ್ಥಿತಿಯನ್ನು ನಾವು ಸ್ವತಃ ವ್ಯಾಖ್ಯಾನಿಸಿದ `Board` ವರ್ಗದಿಂದ ನೀಡಲಾಗಿತ್ತು. ಇಲ್ಲಿ ನಾವು ಸಮತೋಲನದ ಕಂಬದ ಭೌತಶಾಸ್ತ್ರವನ್ನು ಅನುಕರಿಸುವ ವಿಶೇಷ **ಅನುಕರಣ ಪರಿಸರ** ಅನ್ನು ಬಳಸುತ್ತೇವೆ. ಬಲವರ್ಧನೆ ಕಲಿಕೆ ಆಲ್ಗಾರಿದಮ್ಗಳ ತರಬೇತಿಗೆ ಅತ್ಯಂತ ಜನಪ್ರಿಯ ಅನುಕರಣ ಪರಿಸರಗಳಲ್ಲಿ ಒಂದಾಗಿದೆ [Gym](https://gym.openai.com/), ಇದು [OpenAI](https://openai.com/) ಮೂಲಕ ನಿರ್ವಹಿಸಲಾಗುತ್ತದೆ. ಈ ಜಿಮ್ ಬಳಸಿ ನಾವು ಕಾರ್ಟ್‌ಪೋಲ್ ಅನುಕರಣದಿಂದ ಅಟಾರಿ ಆಟಗಳವರೆಗೆ ವಿಭಿನ್ನ **ಪರಿಸರಗಳನ್ನು** ರಚಿಸಬಹುದು. + +> **ಗಮನಿಸಿ**: OpenAI Gym ನಿಂದ ಲಭ್ಯವಿರುವ ಇತರ ಪರಿಸರಗಳನ್ನು ನೀವು [ಇಲ್ಲಿ](https://gym.openai.com/envs/#classic_control) ನೋಡಬಹುದು. + +ಮೊದಲು, ಜಿಮ್ ಅನ್ನು ಸ್ಥಾಪಿಸಿ ಮತ್ತು ಅಗತ್ಯ ಗ್ರಂಥಾಲಯಗಳನ್ನು ಆಮದು ಮಾಡಿಕೊಳ್ಳೋಣ (ಕೋಡ್ ಬ್ಲಾಕ್ 1): + +```python +import sys +!{sys.executable} -m pip install gym + +import gym +import matplotlib.pyplot as plt +import numpy as np +import random +``` + +## ಅಭ್ಯಾಸ - ಕಾರ್ಟ್‌ಪೋಲ್ ಪರಿಸರವನ್ನು ಪ್ರಾರಂಭಿಸಿ + +ಕಾರ್ಟ್‌ಪೋಲ್ ಸಮತೋಲನ ಸಮಸ್ಯೆಯೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು, ನಾವು ಸಂಬಂಧಿಸಿದ ಪರಿಸರವನ್ನು ಪ್ರಾರಂಭಿಸಬೇಕು. ಪ್ರತಿ ಪರಿಸರವು ಕೆಳಗಿನೊಂದಿಗೆ ಸಂಬಂಧಿಸಿದೆ: + +- **ನಿರೀಕ್ಷಣಾ ಸ್ಥಳ** ಇದು ಪರಿಸರದಿಂದ ನಾವು ಪಡೆಯುವ ಮಾಹಿತಿಯ ರಚನೆಯನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ. ಕಾರ್ಟ್‌ಪೋಲ್ ಸಮಸ್ಯೆಗೆ, ನಾವು ಕಂಬದ ಸ್ಥಾನ, ವೇಗ ಮತ್ತು ಕೆಲವು ಇತರ ಮೌಲ್ಯಗಳನ್ನು ಪಡೆಯುತ್ತೇವೆ. + +- **ಕ್ರಿಯೆ ಸ್ಥಳ** ಇದು ಸಾಧ್ಯವಾದ ಕ್ರಿಯೆಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ. ನಮ್ಮ ಪ್ರಕರಣದಲ್ಲಿ ಕ್ರಿಯೆ ಸ್ಥಳವು ವಿಭಜಿತವಾಗಿದೆ, ಮತ್ತು ಎರಡು ಕ್ರಿಯೆಗಳಿವೆ - **ಎಡ** ಮತ್ತು **ಬಲ**. (ಕೋಡ್ ಬ್ಲಾಕ್ 2) + +1. ಪ್ರಾರಂಭಿಸಲು, ಕೆಳಗಿನ ಕೋಡ್ ಅನ್ನು ಟೈಪ್ ಮಾಡಿ: + + ```python + env = gym.make("CartPole-v1") + print(env.action_space) + print(env.observation_space) + print(env.action_space.sample()) + ``` + +ಪರಿಸರ ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂದು ನೋಡಲು, 100 ಹಂತಗಳ ಸಣ್ಣ ಅನುಕರಣವನ್ನು ನಡೆಸೋಣ. ಪ್ರತಿ ಹಂತದಲ್ಲಿ, ನಾವು ತೆಗೆದುಕೊಳ್ಳಬೇಕಾದ ಕ್ರಿಯೆಯೊಂದನ್ನು ನೀಡುತ್ತೇವೆ - ಈ ಅನುಕರಣದಲ್ಲಿ ನಾವು `action_space` ನಿಂದ ಯಾದೃಚ್ಛಿಕವಾಗಿ ಕ್ರಿಯೆಯನ್ನು ಆಯ್ಕೆ ಮಾಡುತ್ತೇವೆ. + +1. ಕೆಳಗಿನ ಕೋಡ್ ಅನ್ನು ಚಾಲನೆ ಮಾಡಿ ಮತ್ತು ಅದು ಏನಾಗುತ್ತದೆ ನೋಡಿ. + + ✅ ನೆನಪಿಡಿ, ಈ ಕೋಡ್ ಅನ್ನು ಸ್ಥಳೀಯ Python ಸ್ಥಾಪನೆಯಲ್ಲಿ ಚಾಲನೆ ಮಾಡುವುದು ಆದ್ಯತೆ! (ಕೋಡ್ ಬ್ಲಾಕ್ 3) + + ```python + env.reset() + + for i in range(100): + env.render() + env.step(env.action_space.sample()) + env.close() + ``` + + ನೀವು ಈ ಚಿತ್ರಕ್ಕೆ ಸಮಾನವಾದುದನ್ನು ನೋಡಬಹುದು: + + ![ನಾನ್-ಬ್ಯಾಲನ್ಸಿಂಗ್ ಕಾರ್ಟ್‌ಪೋಲ್](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) + +1. ಅನುಕರಣದ ಸಮಯದಲ್ಲಿ, ನಾವು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸಬೇಕೆಂದು ನಿರ್ಧರಿಸಲು ನಿರೀಕ್ಷಣೆಗಳನ್ನು ಪಡೆಯಬೇಕಾಗುತ್ತದೆ. ವಾಸ್ತವದಲ್ಲಿ, ಸ್ಟೆಪ್ ಫಂಕ್ಷನ್ ಪ್ರಸ್ತುತ ನಿರೀಕ್ಷಣೆಗಳನ್ನು, ಬಹುಮಾನ ಕಾರ್ಯವನ್ನು ಮತ್ತು ಅನುಕರಣವನ್ನು ಮುಂದುವರಿಸಲು ಅರ್ಥವಿರುವುದೇ ಇಲ್ಲವೇ ಎಂಬುದನ್ನು ಸೂಚಿಸುವ ಡನ್ ಫ್ಲಾಗ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ: (ಕೋಡ್ ಬ್ಲಾಕ್ 4) + + ```python + env.reset() + + done = False + while not done: + env.render() + obs, rew, done, info = env.step(env.action_space.sample()) + print(f"{obs} -> {rew}") + env.close() + ``` + + ನೀವು ನೋಟ್ಬುಕ್ ಔಟ್‌ಪುಟ್‌ನಲ್ಲಿ ಈ ರೀತಿಯುದನ್ನು ನೋಡುತ್ತೀರಿ: + + ```text + [ 0.03403272 -0.24301182 0.02669811 0.2895829 ] -> 1.0 + [ 0.02917248 -0.04828055 0.03248977 0.00543839] -> 1.0 + [ 0.02820687 0.14636075 0.03259854 -0.27681916] -> 1.0 + [ 0.03113408 0.34100283 0.02706215 -0.55904489] -> 1.0 + [ 0.03795414 0.53573468 0.01588125 -0.84308041] -> 1.0 + ... + [ 0.17299878 0.15868546 -0.20754175 -0.55975453] -> 1.0 + [ 0.17617249 0.35602306 -0.21873684 -0.90998894] -> 1.0 + ``` + + ಅನುಕರಣದ ಪ್ರತಿ ಹಂತದಲ್ಲಿ ಹಿಂತಿರುಗಿಸುವ ನಿರೀಕ್ಷಣಾ ವೆಕ್ಟರ್ ಕೆಳಗಿನ ಮೌಲ್ಯಗಳನ್ನು ಹೊಂದಿದೆ: + - ಕಾರ್ಟ್‌ನ ಸ್ಥಾನ + - ಕಾರ್ಟ್‌ನ ವೇಗ + - ಕಂಬದ ಕೋನ + - ಕಂಬದ ತಿರುಗುವ ದರ + +1. ಆ ಸಂಖ್ಯೆಗಳ ಕನಿಷ್ಠ ಮತ್ತು ಗರಿಷ್ಠ ಮೌಲ್ಯಗಳನ್ನು ಪಡೆಯಿರಿ: (ಕೋಡ್ ಬ್ಲಾಕ್ 5) + + ```python + print(env.observation_space.low) + print(env.observation_space.high) + ``` + + ನೀವು ಗಮನಿಸಬಹುದು ಪ್ರತಿ ಅನುಕರಣ ಹಂತದಲ್ಲಿ ಬಹುಮಾನ ಮೌಲ್ಯವು ಸದಾ 1 ಆಗಿರುತ್ತದೆ. ಇದಕ್ಕೆ ಕಾರಣ ನಮ್ಮ ಗುರಿ ಸಾಧ್ಯವಾದಷ್ಟು ದೀರ್ಘಕಾಲ ಜೀವಿಸುವುದು, ಅಂದರೆ ಕಂಬವನ್ನು ಸಮತೋಲನದಲ್ಲಿಡುವುದು. + + ✅ ವಾಸ್ತವದಲ್ಲಿ, ಕಾರ್ಟ್‌ಪೋಲ್ ಅನುಕರಣವನ್ನು 100連続 ಪ್ರಯೋಗಗಳಲ್ಲಿ ಸರಾಸರಿ 195 ಬಹುಮಾನವನ್ನು ಪಡೆಯಲು ಸಾಧ್ಯವಾದರೆ ಅದು ಪರಿಹರಿಸಲಾಗಿದೆ ಎಂದು ಪರಿಗಣಿಸಲಾಗುತ್ತದೆ. + +## ಸ್ಥಿತಿ ವಿಭಜನೆ + +Q-ಲರ್ನಿಂಗ್‌ನಲ್ಲಿ, ನಾವು ಪ್ರತಿ ಸ್ಥಿತಿಯಲ್ಲಿ ಏನು ಮಾಡಬೇಕೆಂದು ವ್ಯಾಖ್ಯಾನಿಸುವ Q-ಟೇಬಲ್ ನಿರ್ಮಿಸಬೇಕಾಗುತ್ತದೆ. ಇದನ್ನು ಮಾಡಲು, ಸ್ಥಿತಿಯು **ವಿಭಜಿತ** ಆಗಿರಬೇಕು, ಅಂದರೆ ನಿರ್ದಿಷ್ಟ ಸಂಖ್ಯೆಯ ವಿಭಜಿತ ಮೌಲ್ಯಗಳನ್ನು ಹೊಂದಿರಬೇಕು. ಆದ್ದರಿಂದ, ನಾವು ನಮ್ಮ ನಿರೀಕ್ಷಣೆಗಳನ್ನು ಹೇಗೆಂದರೆ **ವಿಭಜಿಸಬೇಕು**, ಅವುಗಳನ್ನು ನಿರ್ದಿಷ್ಟ ಸ್ಥಿತಿಗಳ ಸಮೂಹಕ್ಕೆ ನಕ್ಷೆ ಮಾಡಬೇಕು. + +ಇದಕ್ಕೆ ಕೆಲವು ವಿಧಾನಗಳಿವೆ: + +- **ಬಿನ್‌ಗಳಿಗೆ ವಿಭಜನೆ**. ನಾವು ಒಂದು ಮೌಲ್ಯದ ಅಂತರವನ್ನು ತಿಳಿದಿದ್ದರೆ, ಆ ಅಂತರವನ್ನು ಹಲವಾರು **ಬಿನ್‌ಗಳಾಗಿ** ವಿಭಜಿಸಬಹುದು, ನಂತರ ಮೌಲ್ಯವನ್ನು ಅದು ಸೇರಿದ ಬಿನ್ ಸಂಖ್ಯೆಯಿಂದ ಬದಲಾಯಿಸಬಹುದು. ಇದನ್ನು numpy [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) ವಿಧಾನ ಬಳಸಿ ಮಾಡಬಹುದು. ಈ ಸಂದರ್ಭದಲ್ಲಿ, ನಾವು ನಿಖರವಾಗಿ ಸ್ಥಿತಿಯ ಗಾತ್ರವನ್ನು ತಿಳಿದುಕೊಳ್ಳುತ್ತೇವೆ, ಏಕೆಂದರೆ ಅದು ನಾವು ಆಯ್ಕೆಮಾಡಿದ ಬಿನ್‌ಗಳ ಸಂಖ್ಯೆಯ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿರುತ್ತದೆ. + +✅ ನಾವು ರೇಖೀಯ ಇಂಟರ್‌ಪೋಲೇಶನ್ ಬಳಸಿ ಮೌಲ್ಯಗಳನ್ನು ಕೆಲವು ನಿರ್ದಿಷ್ಟ ಅಂತರಕ್ಕೆ (ಉದಾ. -20 ರಿಂದ 20) ತಂದು, ನಂತರ ಸಂಖ್ಯೆಗಳನ್ನೂ ಸುತ್ತುವರಿದಂತೆ ಪೂರ್ಣಾಂಕಗಳಿಗೆ ಪರಿವರ್ತಿಸಬಹುದು. ಇದು ಸ್ಥಿತಿಯ ಗಾತ್ರದ ಮೇಲೆ ಸ್ವಲ್ಪ ಕಡಿಮೆ ನಿಯಂತ್ರಣ ನೀಡುತ್ತದೆ, ವಿಶೇಷವಾಗಿ ನಮಗೆ ಇನ್‌ಪುಟ್ ಮೌಲ್ಯಗಳ ನಿಖರ ಶ್ರೇಣಿಗಳು ತಿಳಿದಿಲ್ಲದಿದ್ದರೆ. ಉದಾಹರಣೆಗೆ, ನಮ್ಮ ಪ್ರಕರಣದಲ್ಲಿ 4 ಮೌಲ್ಯಗಳಲ್ಲಿ 2 ಕ್ಕೆ ಮೇಲ್ಭಾಗ/ಕೆಳಭಾಗ ಮಿತಿ ಇಲ್ಲ, ಇದು ಅನಂತ ಸಂಖ್ಯೆಯ ಸ್ಥಿತಿಗಳಿಗೆ ಕಾರಣವಾಗಬಹುದು. + +ನಮ್ಮ ಉದಾಹರಣೆಯಲ್ಲಿ, ನಾವು ಎರಡನೇ ವಿಧಾನವನ್ನು ಅನುಸರಿಸುವೆವು. ನೀವು ನಂತರ ಗಮನಿಸಬಹುದು, ನಿರ್ದಿಷ್ಟ ಮೇಲ್ಭಾಗ/ಕೆಳಭಾಗ ಮಿತಿಗಳಿಲ್ಲದಿದ್ದರೂ, ಆ ಮೌಲ್ಯಗಳು ಅಪರೂಪವಾಗಿ ನಿರ್ದಿಷ್ಟ ನಿರ್ದಿಷ್ಟ ಅಂತರದ ಹೊರಗೆ ಹೋಗುತ್ತವೆ, ಆದ್ದರಿಂದ ಅತಿ ಮಿತಿಯ ಸ್ಥಿತಿಗಳು ಬಹಳ ಅಪರೂಪವಾಗಿರುತ್ತವೆ. + +1. ಇಲ್ಲಿ ನಮ್ಮ ಮಾದರಿಯಿಂದ ನಿರೀಕ್ಷಣೆಯನ್ನು ತೆಗೆದು 4 ಪೂರ್ಣಾಂಕ ಮೌಲ್ಯಗಳ ಟ್ಯೂಪಲ್ ಅನ್ನು ಉತ್ಪಾದಿಸುವ ಫಂಕ್ಷನ್ ಇದೆ: (ಕೋಡ್ ಬ್ಲಾಕ್ 6) + + ```python + def discretize(x): + return tuple((x/np.array([0.25, 0.25, 0.01, 0.1])).astype(np.int)) + ``` + +1. ಇನ್ನೊಂದು ವಿಭಜನೆ ವಿಧಾನವನ್ನು ಬಿನ್‌ಗಳ ಬಳಕೆ ಮೂಲಕ ಅನ್ವೇಷಿಸೋಣ: (ಕೋಡ್ ಬ್ಲಾಕ್ 7) + + ```python + def create_bins(i,num): + return np.arange(num+1)*(i[1]-i[0])/num+i[0] + + print("Sample bins for interval (-5,5) with 10 bins\n",create_bins((-5,5),10)) + + ints = [(-5,5),(-2,2),(-0.5,0.5),(-2,2)] # ಪ್ರತಿ ಪರಿಮಾಣದ ಮೌಲ್ಯಗಳ ಮಧ್ಯಂತರಗಳು + nbins = [20,20,10,10] # ಪ್ರತಿ ಪರಿಮಾಣದ ಬಿನ್‌ಗಳ ಸಂಖ್ಯೆ + bins = [create_bins(ints[i],nbins[i]) for i in range(4)] + + def discretize_bins(x): + return tuple(np.digitize(x[i],bins[i]) for i in range(4)) + ``` + +1. ಈಗ ಸಣ್ಣ ಅನುಕರಣವನ್ನು ನಡೆಸಿ ಆ ವಿಭಜಿತ ಪರಿಸರ ಮೌಲ್ಯಗಳನ್ನು ಗಮನಿಸೋಣ. ನೀವು `discretize` ಮತ್ತು `discretize_bins` ಎರಡನ್ನೂ ಪ್ರಯತ್ನಿಸಿ ವ್ಯತ್ಯಾಸವಿದೆಯೇ ಎಂದು ನೋಡಿ. + + ✅ `discretize_bins` ಬಿನ್ ಸಂಖ್ಯೆಯನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ, ಇದು 0-ಆಧಾರಿತವಾಗಿದೆ. ಆದ್ದರಿಂದ ಇನ್‌ಪುಟ್ ಮೌಲ್ಯದ ಸುತ್ತಲೂ 0 ಇರುವ ಮೌಲ್ಯಗಳಿಗೆ ಇದು ಅಂತರದ ಮಧ್ಯಭಾಗದ ಸಂಖ್ಯೆಯನ್ನು (10) ಹಿಂತಿರುಗಿಸುತ್ತದೆ. `discretize` ನಲ್ಲಿ, ನಾವು ಔಟ್‌ಪುಟ್ ಮೌಲ್ಯಗಳ ಶ್ರೇಣಿಯನ್ನು ಪರಿಗಣಿಸಿಲ್ಲ, ಅವು ನೆಗೆಟಿವ್ ಆಗಿರಬಹುದು, ಆದ್ದರಿಂದ ಸ್ಥಿತಿ ಮೌಲ್ಯಗಳು ಸರಿದೂಗಿಲ್ಲ, ಮತ್ತು 0 0 ಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ. (ಕೋಡ್ ಬ್ಲಾಕ್ 8) + + ```python + env.reset() + + done = False + while not done: + #env.render() + obs, rew, done, info = env.step(env.action_space.sample()) + #print(discretize_bins(obs)) + print(discretize(obs)) + env.close() + ``` + + ✅ ನೀವು ಪರಿಸರ ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂದು ನೋಡಲು `env.render` ಆರಂಭವಾಗುವ ಸಾಲನ್ನು ಅನ್ಕಮೆಂಟ್ ಮಾಡಬಹುದು. ಇಲ್ಲದಿದ್ದರೆ ನೀವು ಅದನ್ನು ಹಿನ್ನೆಲೆಯಲ್ಲಿ ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದು, ಇದು ವೇಗವಾಗಿದೆ. ನಾವು ನಮ್ಮ Q-ಲರ್ನಿಂಗ್ ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿ ಈ "ಅದೃಶ್ಯ" ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯನ್ನು ಬಳಸುತ್ತೇವೆ. + +## Q-ಟೇಬಲ್ ರಚನೆ + +ಹಿಂದಿನ ಪಾಠದಲ್ಲಿ, ಸ್ಥಿತಿ 0 ರಿಂದ 8 ರವರೆಗೆ ಸರಳ ಸಂಖ್ಯೆಗಳ ಜೋಡಿ ಆಗಿತ್ತು, ಆದ್ದರಿಂದ Q-ಟೇಬಲ್ ಅನ್ನು 8x8x2 ಆಕಾರದ numpy ಟೆನ್ಸರ್ ಮೂಲಕ ಪ್ರತಿನಿಧಿಸುವುದು ಅನುಕೂಲಕರವಾಗಿತ್ತು. ನಾವು ಬಿನ್‌ಗಳ ವಿಭಜನೆ ಬಳಸಿದರೆ, ಸ್ಥಿತಿ ವೆಕ್ಟರ್ ಗಾತ್ರವೂ ತಿಳಿದಿರುತ್ತದೆ, ಆದ್ದರಿಂದ ನಾವು ಅದೇ ವಿಧಾನವನ್ನು ಬಳಸಬಹುದು ಮತ್ತು ಸ್ಥಿತಿಯನ್ನು 20x20x10x10x2 ಆಕಾರದ ಅರೇ ಮೂಲಕ ಪ್ರತಿನಿಧಿಸಬಹುದು (ಇಲ್ಲಿ 2 ಕ್ರಿಯೆ ಸ್ಥಳದ ಆಯಾಮ, ಮತ್ತು ಮೊದಲ ಆಯಾಮಗಳು ನಿರೀಕ್ಷಣಾ ಸ್ಥಳದ ಪ್ರತಿ ಪರಿಮಾಣಕ್ಕೆ ನಾವು ಆಯ್ಕೆಮಾಡಿದ ಬಿನ್‌ಗಳ ಸಂಖ್ಯೆಗೆ ಹೊಂದಿಕೆಯಾಗಿವೆ). + +ಆದರೆ, ಕೆಲವೊಮ್ಮೆ ನಿರೀಕ್ಷಣಾ ಸ್ಥಳದ ನಿಖರ ಆಯಾಮಗಳು ತಿಳಿದಿರಲಾರವು. `discretize` ಫಂಕ್ಷನ್‌ನ ಸಂದರ್ಭದಲ್ಲಿ, ನಮ್ಮ ಸ್ಥಿತಿ ನಿರ್ದಿಷ್ಟ ಮಿತಿಗಳೊಳಗಿರುತ್ತದೆ ಎಂದು ನಾವು ಎಂದಿಗೂ ಖಚಿತವಾಗಿರಲಾರವು, ಏಕೆಂದರೆ ಕೆಲವು ಮೂಲ ಮೌಲ್ಯಗಳಿಗೆ ಮಿತಿ ಇಲ್ಲ. ಆದ್ದರಿಂದ, ನಾವು ಸ್ವಲ್ಪ ವಿಭಿನ್ನ ವಿಧಾನವನ್ನು ಬಳಸುತ್ತೇವೆ ಮತ್ತು Q-ಟೇಬಲ್ ಅನ್ನು ಡಿಕ್ಷನರಿ ಮೂಲಕ ಪ್ರತಿನಿಧಿಸುತ್ತೇವೆ. + +1. *(ಸ್ಥಿತಿ, ಕ್ರಿಯೆ)* ಜೋಡಿಯನ್ನು ಡಿಕ್ಷನರಿ ಕೀ ಆಗಿ ಬಳಸಿ, ಮತ್ತು ಮೌಲ್ಯವು Q-ಟೇಬಲ್ ಎಂಟ್ರಿ ಮೌಲ್ಯಕ್ಕೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ. (ಕೋಡ್ ಬ್ಲಾಕ್ 9) + + ```python + Q = {} + actions = (0,1) + + def qvalues(state): + return [Q.get((state,a),0) for a in actions] + ``` + + ಇಲ್ಲಿ ನಾವು `qvalues()` ಎಂಬ ಫಂಕ್ಷನ್ ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತೇವೆ, ಇದು ನೀಡಲಾದ ಸ್ಥಿತಿಗೆ ಸಂಬಂಧಿಸಿದ ಎಲ್ಲಾ ಸಾಧ್ಯ ಕ್ರಿಯೆಗಳಿಗಾಗಿ Q-ಟೇಬಲ್ ಮೌಲ್ಯಗಳ ಪಟ್ಟಿಯನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ. ಎಂಟ್ರಿ Q-ಟೇಬಲ್‌ನಲ್ಲಿ ಇಲ್ಲದಿದ್ದರೆ, ನಾವು ಡೀಫಾಲ್ಟ್ ಆಗಿ 0 ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತೇವೆ. + +## Q-ಲರ್ನಿಂಗ್ ಪ್ರಾರಂಭಿಸೋಣ + +ಈಗ ನಾವು ಪೀಟರ್‌ಗೆ ಸಮತೋಲನ ಕಲಿಸಲು ಸಿದ್ಧರಾಗಿದ್ದೇವೆ! + +1. ಮೊದಲು, ಕೆಲವು ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್‌ಗಳನ್ನು ಸೆಟ್ ಮಾಡೋಣ: (ಕೋಡ್ ಬ್ಲಾಕ್ 10) + + ```python + # ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು + alpha = 0.3 + gamma = 0.9 + epsilon = 0.90 + ``` + + ಇಲ್ಲಿ, `alpha` ಎಂಬುದು **ಕಲಿಕೆಯ ದರ** ಆಗಿದ್ದು, ಪ್ರತಿ ಹಂತದಲ್ಲಿ Q-ಟೇಬಲ್‌ನ ಪ್ರಸ್ತುತ ಮೌಲ್ಯಗಳನ್ನು ಎಷ್ಟು ಮಟ್ಟಿಗೆ ಸರಿಪಡಿಸಬೇಕೆಂದು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ. ಹಿಂದಿನ ಪಾಠದಲ್ಲಿ ನಾವು 1 ರಿಂದ ಪ್ರಾರಂಭಿಸಿ, ನಂತರ ತರಬೇತಿಯ ಸಮಯದಲ್ಲಿ `alpha` ಅನ್ನು ಕಡಿಮೆ ಮಾಡಿದ್ದೇವೆ. ಈ ಉದಾಹರಣೆಯಲ್ಲಿ ಸರಳತೆಗೆ ನಾವು ಅದನ್ನು ಸ್ಥಿರವಾಗಿರಿಸುವೆವು, ಮತ್ತು ನೀವು ನಂತರ `alpha` ಮೌಲ್ಯಗಳನ್ನು ಹೊಂದಿಸಲು ಪ್ರಯೋಗ ಮಾಡಬಹುದು. + + `gamma` ಎಂಬುದು **ರಿಯಾಯಿತಿ ಕಡಿತಾಂಶ** ಆಗಿದ್ದು, ಭವಿಷ್ಯದ ಬಹುಮಾನವನ್ನು ಪ್ರಸ್ತುತ ಬಹುಮಾನಕ್ಕಿಂತ ಎಷ್ಟು ಆದ್ಯತೆ ನೀಡಬೇಕೆಂದು ತೋರಿಸುತ್ತದೆ. + + `epsilon` ಎಂಬುದು **ಅನ್ವೇಷಣೆ/ಶೋಷಣೆ ಅಂಶ** ಆಗಿದ್ದು, ನಾವು ಅನ್ವೇಷಣೆಗೆ ಆದ್ಯತೆ ನೀಡಬೇಕೇ ಅಥವಾ ಶೋಷಣೆಗೆ ನೀಡಬೇಕೇ ಎಂದು ನಿರ್ಧರಿಸುತ್ತದೆ. ನಮ್ಮ ಆಲ್ಗಾರಿದಮ್ನಲ್ಲಿ, ನಾವು `epsilon` ಶೇಕಡಾವಾರು ಸಂದರ್ಭಗಳಲ್ಲಿ Q-ಟೇಬಲ್ ಮೌಲ್ಯಗಳ ಪ್ರಕಾರ ಮುಂದಿನ ಕ್ರಿಯೆಯನ್ನು ಆಯ್ಕೆಮಾಡುತ್ತೇವೆ, ಉಳಿದ ಸಂದರ್ಭಗಳಲ್ಲಿ ಯಾದೃಚ್ಛಿಕ ಕ್ರಿಯೆಯನ್ನು ನಿರ್ವಹಿಸುತ್ತೇವೆ. ಇದು ನಮಗೆ ಹಿಂದೆ ನೋಡದ ಹುಡುಕಾಟ ಪ್ರದೇಶಗಳನ್ನು ಅನ್ವೇಷಿಸಲು ಅವಕಾಶ ನೀಡುತ್ತದೆ. + + ✅ ಸಮತೋಲನದ ದೃಷ್ಟಿಯಿಂದ - ಯಾದೃಚ್ಛಿಕ ಕ್ರಿಯೆ ಆಯ್ಕೆಮಾಡುವುದು (ಅನ್ವೇಷಣೆ) ತಪ್ಪು ದಿಕ್ಕಿನಲ್ಲಿ ಯಾದೃಚ್ಛಿಕ ಹೊಡೆತದಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ, ಮತ್ತು ಕಂಬವು ಆ "ತಪ್ಪುಗಳಿಂದ" ಸಮತೋಲನವನ್ನು ಹೇಗೆ ಮರುಸ್ಥಾಪಿಸಿಕೊಳ್ಳಬೇಕೆಂದು ಕಲಿಯಬೇಕು. + +### ಆಲ್ಗಾರಿದಮ್ನ ಸುಧಾರಣೆ + +ಹಿಂದಿನ ಪಾಠದಿಂದ ನಮ್ಮ ಆಲ್ಗಾರಿದಮ್ನಲ್ಲಿ ಎರಡು ಸುಧಾರಣೆಗಳನ್ನು ಮಾಡಬಹುದು: + +- **ಸರಾಸರಿ ಸಂಗ್ರಹಿತ ಬಹುಮಾನವನ್ನು ಲೆಕ್ಕಿಸು**, ಹಲವಾರು ಅನುಕರಣಗಳ ಮೇಲೆ. ನಾವು ಪ್ರಗತಿಯನ್ನು ಪ್ರತಿ 5000 ಪುನರಾವೃತ್ತಿಗಳಲ್ಲಿ ಮುದ್ರಿಸುವೆವು, ಮತ್ತು ಆ ಅವಧಿಯಲ್ಲಿ ನಮ್ಮ ಸಂಗ್ರಹಿತ ಬಹುಮಾನವನ್ನು ಸರಾಸರಿ ಮಾಡುತ್ತೇವೆ. ಅಂದರೆ, ನಾವು 195 ಕ್ಕಿಂತ ಹೆಚ್ಚು ಅಂಕಗಳನ್ನು ಪಡೆಯುತ್ತಿದ್ದರೆ - ನಾವು ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲಾಗಿದೆ ಎಂದು ಪರಿಗಣಿಸಬಹುದು, ಅಗತ್ಯಕ್ಕಿಂತಲೂ ಉತ್ತಮ ಗುಣಮಟ್ಟದೊಂದಿಗೆ. + +- **ಗರಿಷ್ಠ ಸರಾಸರಿ ಸಂಗ್ರಹಿತ ಫಲಿತಾಂಶ** `Qmax` ಅನ್ನು ಲೆಕ್ಕಿಸು, ಮತ್ತು ಆ ಫಲಿತಾಂಶಕ್ಕೆ ಹೊಂದಿಕೆಯಾಗುವ Q-ಟೇಬಲ್ ಅನ್ನು ಸಂಗ್ರಹಿಸೋಣ. ತರಬೇತಿ ನಡೆಸುವಾಗ ನೀವು ಗಮನಿಸುವಿರಿ ಕೆಲವೊಮ್ಮೆ ಸರಾಸರಿ ಸಂಗ್ರಹಿತ ಫಲಿತಾಂಶ ಕುಸಿಯಲು ಪ್ರಾರಂಭಿಸುತ್ತದೆ, ಮತ್ತು ನಾವು ತರಬೇತಿಯ ಸಮಯದಲ್ಲಿ ಗಮನಿಸಿದ ಅತ್ಯುತ್ತಮ ಮಾದರಿಯ Q-ಟೇಬಲ್ ಮೌಲ್ಯಗಳನ್ನು ಕಾಯ್ದುಕೊಳ್ಳಲು ಬಯಸುತ್ತೇವೆ. + +1. ಮುಂದಿನ ಚಿತ್ರಣಕ್ಕಾಗಿ ಪ್ರತಿ ಅನುಕರಣದಲ್ಲಿ ಎಲ್ಲಾ ಸಂಗ್ರಹಿತ ಬಹುಮಾನಗಳನ್ನು `rewards` ವೆಕ್ಟರ್‌ನಲ್ಲಿ ಸಂಗ್ರಹಿಸೋಣ. (ಕೋಡ್ ಬ್ಲಾಕ್ 11) + + ```python + def probs(v,eps=1e-4): + v = v-v.min()+eps + v = v/v.sum() + return v + + Qmax = 0 + cum_rewards = [] + rewards = [] + for epoch in range(100000): + obs = env.reset() + done = False + cum_reward=0 + # == ಅನುಕರಣೆ ನಡೆಸಿ == + while not done: + s = discretize(obs) + if random.random() Qmax: + Qmax = np.average(cum_rewards) + Qbest = Q + cum_rewards=[] + ``` + +ನೀವು ಆ ಫಲಿತಾಂಶಗಳಿಂದ ಗಮನಿಸಬಹುದಾದವು: + +- **ನಮ್ಮ ಗುರಿಗೆ ಹತ್ತಿರ**. ನಾವು 100+連続 ಅನುಕರಣಗಳಲ್ಲಿ 195 ಸಂಗ್ರಹಿತ ಬಹುಮಾನಗಳನ್ನು ಪಡೆಯುವ ಗುರಿಗೆ ಬಹಳ ಹತ್ತಿರವಿದ್ದೇವೆ, ಅಥವಾ ನಾವು ಅದನ್ನು ನಿಜವಾಗಿಯೂ ಸಾಧಿಸಿದ್ದೇವೆ! ಕಡಿಮೆ ಅಂಕಗಳನ್ನು ಪಡೆದರೂ, ನಾವು ಖಚಿತವಾಗಿಲ್ಲ, ಏಕೆಂದರೆ ನಾವು 5000 ಪ್ರಯೋಗಗಳ ಸರಾಸರಿಯನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತೇವೆ, ಮತ್ತು ಅಧಿಕೃತ ಮಾನದಂಡದಲ್ಲಿ ಕೇವಲ 100 ಪ್ರಯೋಗಗಳು ಬೇಕಾಗಿವೆ. + +- **ಬಹುಮಾನ ಕುಸಿಯಲು ಪ್ರಾರಂಭ**. ಕೆಲವೊಮ್ಮೆ ಬಹುಮಾನ ಕುಸಿಯಲು ಪ್ರಾರಂಭಿಸುತ್ತದೆ, ಅಂದರೆ ನಾವು ಈಗಾಗಲೇ ಕಲಿತ ಮೌಲ್ಯಗಳನ್ನು Q-ಟೇಬಲ್‌ನಲ್ಲಿ ಹಾಳುಮಾಡಬಹುದು, ಅದು ಪರಿಸ್ಥಿತಿಯನ್ನು ಕೆಟ್ಟದಾಗಿಸುತ್ತದೆ. + +ಈ ಗಮನಿಕೆ ತರಬೇತಿ ಪ್ರಗತಿಯನ್ನು ಚಿತ್ರಿಸುವಾಗ ಸ್ಪಷ್ಟವಾಗಿ ಕಾಣುತ್ತದೆ. + +## ತರಬೇತಿ ಪ್ರಗತಿ ಚಿತ್ರಣ + +ತರಬೇತಿಯ ಸಮಯದಲ್ಲಿ, ನಾವು ಪ್ರತಿ ಪುನರಾವೃತ್ತಿಯಲ್ಲಿ ಸಂಗ್ರಹಿತ ಬಹುಮಾನ ಮೌಲ್ಯವನ್ನು `rewards` ವೆಕ್ಟರ್‌ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಿದ್ದೇವೆ. ಇದನ್ನು ಪುನರಾವೃತ್ತಿ ಸಂಖ್ಯೆಯ ವಿರುದ್ಧ ಚಿತ್ರಿಸಿದಾಗ ಇದು ಹೀಗೆ ಕಾಣುತ್ತದೆ: + +```python +plt.plot(rewards) +``` + +![ಕಚ್ಚಾ ಪ್ರಗತಿ](../../../../translated_images/train_progress_raw.2adfdf2daea09c596fc786fa347a23e9aceffe1b463e2257d20a9505794823ec.kn.png) + +ಈ ಗ್ರಾಫ್‌ನಿಂದ ಏನನ್ನೂ ಹೇಳಲು ಸಾಧ್ಯವಿಲ್ಲ, ಏಕೆಂದರೆ ಸಾಂಖ್ಯಿಕ ತರಬೇತಿ ಪ್ರಕ್ರಿಯೆಯ ಸ್ವಭಾವದಿಂದ ತರಬೇತಿ ಅವಧಿಗಳ ಉದ್ದ ಬಹಳ ಬದಲಾಗುತ್ತದೆ. ಈ ಗ್ರಾಫ್‌ಗೆ ಹೆಚ್ಚು ಅರ್ಥ ನೀಡಲು, ನಾವು ಸರಣಿಯ 100 ಪ್ರಯೋಗಗಳ ಮೇಲೆ **ಚಲಿಸುವ ಸರಾಸರಿ** ಲೆಕ್ಕಿಸಬಹುದು. ಇದನ್ನು `np.convolve` ಬಳಸಿ ಸುಲಭವಾಗಿ ಮಾಡಬಹುದು: (ಕೋಡ್ ಬ್ಲಾಕ್ 12) + +```python +def running_average(x,window): + return np.convolve(x,np.ones(window)/window,mode='valid') + +plt.plot(running_average(rewards,100)) +``` + +![ತರಬೇತಿ ಪ್ರಗತಿ](../../../../translated_images/train_progress_runav.c71694a8fa9ab35935aff6f109e5ecdfdbdf1b0ae265da49479a81b5fae8f0aa.kn.png) + +## ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್‌ಗಳ ಬದಲಾವಣೆ + +ಕಲಿಕೆಯನ್ನು ಹೆಚ್ಚು ಸ್ಥಿರಗೊಳಿಸಲು, ತರಬೇತಿಯ ಸಮಯದಲ್ಲಿ ಕೆಲವು ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್‌ಗಳನ್ನು ಹೊಂದಿಸುವುದು ಅರ್ಥಪೂರ್ಣ. ವಿಶೇಷವಾಗಿ: + +- **ಕಲಿಕೆಯ ದರ** `alpha` ಗೆ, ನಾವು 1 ಗೆ ಹತ್ತಿರದ ಮೌಲ್ಯಗಳಿಂದ ಪ್ರಾರಂಭಿಸಿ, ನಂತರ ಆ ಪರಿಮಾಣವನ್ನು ನಿಧಾನವಾಗಿ ಕಡಿಮೆ ಮಾಡಬಹುದು. ಸಮಯದೊಂದಿಗೆ, ನಾವು Q-ಟೇಬಲ್‌ನಲ್ಲಿ ಉತ್ತಮ ಪ್ರಾಬಬಿಲಿಟಿ ಮೌಲ್ಯಗಳನ್ನು ಪಡೆಯುತ್ತೇವೆ, ಆದ್ದರಿಂದ ಅವುಗಳನ್ನು ಸ್ವಲ್ಪ ಸರಿಪಡಿಸಬೇಕು, ಸಂಪೂರ್ಣವಾಗಿ ಹೊಸ ಮೌಲ್ಯಗಳಿಂದ ಮರುಬರೆಯಬಾರದು. + +- **ಎಪ್ಸಿಲಾನ್ ಹೆಚ್ಚಿಸಿ**. ನಾವು `epsilon` ಅನ್ನು ನಿಧಾನವಾಗಿ ಹೆಚ್ಚಿಸಲು ಬಯಸಬಹುದು, ಅನ್ವೇಷಣೆಯನ್ನು ಕಡಿಮೆ ಮಾಡಿ ಶೋಷಣೆಯನ್ನು ಹೆಚ್ಚು ಮಾಡಲು. ಇದು ಕಡಿಮೆ ಮೌಲ್ಯದಿಂದ ಪ್ರಾರಂಭಿಸಿ 1 ರವರೆಗೆ ಹಾದುಹೋಗುವುದು ಅರ್ಥಪೂರ್ಣ. + +> **ಕಾರ್ಯ 1**: ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್ ಮೌಲ್ಯಗಳೊಂದಿಗೆ ಆಟವಾಡಿ ಮತ್ತು ನೀವು ಹೆಚ್ಚು ಸಂಗ್ರಹಿತ ಬಹುಮಾನವನ್ನು ಸಾಧಿಸಬಹುದೇ ಎಂದು ನೋಡಿ. ನೀವು 195 ಕ್ಕಿಂತ ಮೇಲಾಗುತ್ತೀರಾ? +> **ಕಾರ್ಯ 2**: ಸಮಸ್ಯೆಯನ್ನು ಅಧಿಕೃತವಾಗಿ ಪರಿಹರಿಸಲು, ನೀವು 100連続 ರನ್‌ಗಳಲ್ಲಿ ಸರಾಸರಿ 195 ಬಹುಮಾನವನ್ನು ಪಡೆಯಬೇಕು. ತರಬೇತಿ ಸಮಯದಲ್ಲಿ ಅದನ್ನು ಅಳೆಯಿರಿ ಮತ್ತು ನೀವು ಅಧಿಕೃತವಾಗಿ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಿದ್ದೀರಿ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ! + +## ಪರಿಣಾಮವನ್ನು ಕ್ರಿಯೆಯಲ್ಲಿ ನೋಡುವುದು + +ತರಬೇತಿಗೊಂಡ ಮಾದರಿ ಹೇಗೆ ವರ್ತಿಸುತ್ತದೆ ಎಂದು ವಾಸ್ತವವಾಗಿ ನೋಡುವುದು ಆಸಕ್ತಿದಾಯಕವಾಗಿರುತ್ತದೆ. ಸಿಮ್ಯುಲೇಶನ್ ಅನ್ನು ನಡೆಸಿ ಮತ್ತು ತರಬೇತಿ ಸಮಯದಲ್ಲಿ ಬಳಸಿದಂತೆ ಕ್ರಿಯೆ ಆಯ್ಕೆ ತಂತ್ರವನ್ನು ಅನುಸರಿಸಿ, Q-ಟೇಬಲ್‌ನ ಪ್ರಾಬಬಿಲಿಟಿ ವಿತರಣೆ ಪ್ರಕಾರ ಮಾದರಿಯನ್ನು ಸ್ಯಾಂಪಲ್ ಮಾಡಿ: (ಕೋಡ್ ಬ್ಲಾಕ್ 13) + +```python +obs = env.reset() +done = False +while not done: + s = discretize(obs) + env.render() + v = probs(np.array(qvalues(s))) + a = random.choices(actions,weights=v)[0] + obs,_,done,_ = env.step(a) +env.close() +``` + +ನೀವು ಈ ರೀತಿಯ ಏನಾದರೂ ನೋಡಬಹುದು: + +![a balancing cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) + +--- + +## 🚀ಸವಾಲು + +> **ಕಾರ್ಯ 3**: ಇಲ್ಲಿ, ನಾವು Q-ಟೇಬಲ್‌ನ ಅಂತಿಮ ನಕಲನ್ನು ಬಳಸುತ್ತಿದ್ದೇವೆ, ಅದು ಅತ್ಯುತ್ತಮವಾಗಿರದಿರಬಹುದು. ನಾವು ಅತ್ಯುತ್ತಮ ಕಾರ್ಯಕ್ಷಮತೆಯ Q-ಟೇಬಲ್ ಅನ್ನು `Qbest` ವ್ಯತ್ಯಯದಲ್ಲಿ ಸಂಗ್ರಹಿಸಿದ್ದೇವೆ ಎಂದು ನೆನಪಿಡಿ! `Qbest` ಅನ್ನು `Q` ಗೆ ನಕಲಿಸಿ ಅದೇ ಉದಾಹರಣೆಯನ್ನು ಪ್ರಯತ್ನಿಸಿ ಮತ್ತು ವ್ಯತ್ಯಾಸವನ್ನು ಗಮನಿಸಿ. + +> **ಕಾರ್ಯ 4**: ಇಲ್ಲಿ ನಾವು ಪ್ರತಿ ಹಂತದಲ್ಲಿಯೂ ಅತ್ಯುತ್ತಮ ಕ್ರಿಯೆಯನ್ನು ಆಯ್ಕೆ ಮಾಡುತ್ತಿರಲಿಲ್ಲ, ಬದಲಿಗೆ ಸಂಬಂಧಿತ ಪ್ರಾಬಬಿಲಿಟಿ ವಿತರಣೆ ಪ್ರಕಾರ ಸ್ಯಾಂಪಲ್ ಮಾಡುತ್ತಿದ್ದೇವೆ. ಯಾವಾಗಲೂ ಅತ್ಯುತ್ತಮ Q-ಟೇಬಲ್ ಮೌಲ್ಯ ಹೊಂದಿರುವ ಕ್ರಿಯೆಯನ್ನು ಆಯ್ಕೆ ಮಾಡುವುದು ಹೆಚ್ಚು ಅರ್ಥಪೂರ್ಣವಾಗುತ್ತದೆಯೇ? ಇದನ್ನು `np.argmax` ಫಂಕ್ಷನ್ ಬಳಸಿ ಅತ್ಯಧಿಕ Q-ಟೇಬಲ್ ಮೌಲ್ಯಕ್ಕೆ ಹೊಂದಿರುವ ಕ್ರಿಯೆ ಸಂಖ್ಯೆಯನ್ನು ಕಂಡುಹಿಡಿಯಬಹುದು. ಈ ತಂತ್ರವನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸಿ ಮತ್ತು ಅದು ಸಮತೋಲನವನ್ನು ಸುಧಾರಿಸುತ್ತದೆಯೇ ಎಂದು ನೋಡಿ. + +## [ಪೋಸ್ಟ್-ಲೆಕ್ಚರ್ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) + +## ನಿಯೋಜನೆ +[ಮೌಂಟನ್ ಕಾರ್ ತರಬೇತಿ](assignment.md) + +## ಸಮಾರೋಪ + +ನಾವು ಈಗಾಗಲೇ ಏಜೆಂಟ್‌ಗಳನ್ನು ಉತ್ತಮ ಫಲಿತಾಂಶಗಳನ್ನು ಸಾಧಿಸಲು ತರಬೇತಿಗೊಳಿಸುವುದನ್ನು ಕಲಿತಿದ್ದೇವೆ, ಅದು ಆಟದ ಇಚ್ಛಿತ ಸ್ಥಿತಿಯನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವ ಬಹುಮಾನ ಕಾರ್ಯವನ್ನು ಒದಗಿಸುವ ಮೂಲಕ ಮತ್ತು ಹುಡುಕಾಟ ಸ್ಥಳವನ್ನು ಬುದ್ಧಿವಂತಿಕೆಯಿಂದ ಅನ್ವೇಷಿಸಲು ಅವಕಾಶ ನೀಡುವ ಮೂಲಕ. ನಾವು ಡಿಸ್ಕ್ರೀಟ್ ಮತ್ತು ನಿರಂತರ ಪರಿಸರಗಳ ಪ್ರಕರಣಗಳಲ್ಲಿ Q-ಲರ್ನಿಂಗ್ ಆಲ್ಗಾರಿಥಮ್ ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಅನ್ವಯಿಸಿದ್ದೇವೆ, ಆದರೆ ಡಿಸ್ಕ್ರೀಟ್ ಕ್ರಿಯೆಗಳೊಂದಿಗೆ. + +ಕ್ರಿಯಾ ಸ್ಥಿತಿಯೂ ನಿರಂತರವಾಗಿರುವ ಮತ್ತು ಅವಲೋಕನ ಸ್ಥಳವು ಹೆಚ್ಚು ಸಂಕೀರ್ಣವಾಗಿರುವ ಪರಿಸ್ಥಿತಿಗಳನ್ನು ಅಧ್ಯಯನ ಮಾಡುವುದು ಕೂಡ ಮುಖ್ಯ, ಉದಾಹರಣೆಗೆ ಅಟಾರಿ ಆಟದ ಪರದೆ ಚಿತ್ರ. ಆ ಸಮಸ್ಯೆಗಳಲ್ಲಿ ಉತ್ತಮ ಫಲಿತಾಂಶಗಳನ್ನು ಸಾಧಿಸಲು ನಾವು ಸಾಮಾನ್ಯವಾಗಿ ನ್ಯೂರಲ್ ನೆಟ್‌ವರ್ಕ್‌ಗಳಂತಹ ಶಕ್ತಿಶಾಲಿ ಯಂತ್ರ ಕಲಿಕೆ ತಂತ್ರಗಳನ್ನು ಬಳಸಬೇಕಾಗುತ್ತದೆ. ಆ ಹೆಚ್ಚು ಪ್ರಗತಿಶೀಲ ವಿಷಯಗಳು ನಮ್ಮ ಮುಂದಿನ ಹೆಚ್ಚಿನ ಪ್ರಗತಿಶೀಲ AI ಕೋರ್ಸ್‌ನ ವಿಷಯವಾಗಿವೆ. + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/8-Reinforcement/2-Gym/assignment.md b/translations/kn/8-Reinforcement/2-Gym/assignment.md new file mode 100644 index 000000000..d9587c2a1 --- /dev/null +++ b/translations/kn/8-Reinforcement/2-Gym/assignment.md @@ -0,0 +1,61 @@ + +# ಪರ್ವತ ಕಾರ್ ತರಬೇತಿ + +[OpenAI Gym](http://gym.openai.com) ಅನ್ನು ಎಲ್ಲಾ ಪರಿಸರಗಳು ಒಂದೇ API ಒದಗಿಸುವಂತೆ ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ - ಅಂದರೆ ಒಂದೇ ವಿಧಾನಗಳು `reset`, `step` ಮತ್ತು `render`, ಮತ್ತು **ಕ್ರಿಯೆ ಸ್ಥಳ** ಮತ್ತು **ನಿರೀಕ್ಷಣಾ ಸ್ಥಳ** ಎಂಬ ಒಂದೇ ಅವಧಾರಣೆಗಳು. ಆದ್ದರಿಂದ, ಕಡಿಮೆ ಕೋಡ್ ಬದಲಾವಣೆಗಳೊಂದಿಗೆ ವಿಭಿನ್ನ ಪರಿಸರಗಳಿಗೆ ಒಂದೇ ಬಲವರ್ಧಿತ ಕಲಿಕೆ ಆಲ್ಗಾರಿದಮ್ಗಳನ್ನು ಹೊಂದಿಸಲು ಸಾಧ್ಯವಾಗಬೇಕು. + +## ಪರ್ವತ ಕಾರ್ ಪರಿಸರ + +[ಪರ್ವತ ಕಾರ್ ಪರಿಸರ](https://gym.openai.com/envs/MountainCar-v0/) ಒಂದು ಕಣಿವೆಗೆ ಸಿಲುಕಿದ ಕಾರನ್ನು ಹೊಂದಿದೆ: + + + +ಗುರಿ ಕಾರ್ ಅನ್ನು ಕಣಿವೆಯಿಂದ ಹೊರತೆಗೆದು ಧ್ವಜವನ್ನು ಹಿಡಿಯುವುದು, ಪ್ರತಿ ಹಂತದಲ್ಲಿ ಕೆಳಗಿನ ಕ್ರಿಯೆಗಳಲ್ಲಿ ಒಂದನ್ನು ಮಾಡುವುದು: + +| ಮೌಲ್ಯ | ಅರ್ಥ | +|---|---| +| 0 | ಎಡಕ್ಕೆ ವೇಗ ಹೆಚ್ಚಿಸು | +| 1 | ವೇಗ ಹೆಚ್ಚಿಸಬೇಡಿ | +| 2 | ಬಲಕ್ಕೆ ವೇಗ ಹೆಚ್ಚಿಸು | + +ಈ ಸಮಸ್ಯೆಯ ಮುಖ್ಯ ತಂತ್ರವೆಂದರೆ, ಕಾರಿನ ಎಂಜಿನ್ ಪರ್ವತವನ್ನು ಒಂದೇ ಬಾರಿ ಏರುವಷ್ಟು ಶಕ್ತಿಶಾಲಿ ಅಲ್ಲ. ಆದ್ದರಿಂದ, ಯಶಸ್ವಿಯಾಗಲು ಏಕಮಾರ್ಗದಲ್ಲಿ ಹೋದರೆ ಆಗುವುದಿಲ್ಲ, ಬದಲಾಗಿ ಹಿಂದಕ್ಕೆ ಮುಂದೆ ಚಲಿಸಿ ವೇಗವನ್ನು ಸಂಗ್ರಹಿಸಬೇಕು. + +ನಿರೀಕ್ಷಣಾ ಸ್ಥಳದಲ್ಲಿ ಕೇವಲ ಎರಡು ಮೌಲ್ಯಗಳಿವೆ: + +| ಸಂಖ್ಯೆ | ನಿರೀಕ್ಷಣೆ | ಕನಿಷ್ಠ | ಗರಿಷ್ಠ | +|-----|--------------|-----|-----| +| 0 | ಕಾರ್ ಸ್ಥಾನ | -1.2| 0.6 | +| 1 | ಕಾರ್ ವೇಗ | -0.07 | 0.07 | + +ಪರ್ವತ ಕಾರ್ ಗೆ ಬಹುಶಃ ಕಷ್ಟಕರವಾದ ಬಹುಮಾನ ವ್ಯವಸ್ಥೆ ಇದೆ: + + * ಕಾರ್ ಪರ್ವತದ ಮೇಲ್ಭಾಗದಲ್ಲಿ ಧ್ವಜವನ್ನು ತಲುಪಿದರೆ (ಸ್ಥಾನ = 0.5) 0 ಬಹುಮಾನ ನೀಡಲಾಗುತ್ತದೆ. + * ಕಾರ್ ಸ್ಥಾನ 0.5 ಕಿಂತ ಕಡಿಮೆ ಇದ್ದರೆ -1 ಬಹುಮಾನ ನೀಡಲಾಗುತ್ತದೆ. + +ಕಾರ್ ಸ್ಥಾನ 0.5 ಕ್ಕಿಂತ ಹೆಚ್ಚು ಅಥವಾ ಎಪಿಸೋಡ್ ಉದ್ದ 200 ಕ್ಕಿಂತ ಹೆಚ್ಚು ಆಗಿದ್ರೆ ಎಪಿಸೋಡ್ ಮುಗಿಯುತ್ತದೆ. + +## ಸೂಚನೆಗಳು + +ನಮ್ಮ ಬಲವರ್ಧಿತ ಕಲಿಕೆ ಆಲ್ಗಾರಿದಮ್ನ್ನು ಪರ್ವತ ಕಾರ್ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲು ಹೊಂದಿಸಿ. ಇತ್ತೀಚಿನ [notebook.ipynb](notebook.ipynb) ಕೋಡ್ ನಿಂದ ಪ್ರಾರಂಭಿಸಿ, ಹೊಸ ಪರಿಸರವನ್ನು ಬದಲಿಸಿ, ಸ್ಥಿತಿ ವಿಭಜನೆ ಕಾರ್ಯಗಳನ್ನು ಬದಲಿಸಿ, ಮತ್ತು ಕಡಿಮೆ ಕೋಡ್ ಬದಲಾವಣೆಗಳೊಂದಿಗೆ ಅಲ್ಗಾರಿದಮ್ನ್ನು ತರಬೇತಿಗೆ ಪ್ರಯತ್ನಿಸಿ. ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್‌ಗಳನ್ನು ಹೊಂದಿಸಿ ಫಲಿತಾಂಶವನ್ನು ಉತ್ತಮಗೊಳಿಸಿ. + +> **ಗಮನಿಸಿ**: ಅಲ್ಗಾರಿದಮ್ನ್ನು ಸಮನ್ವಯಗೊಳಿಸಲು ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್‌ಗಳ ಹೊಂದಾಣಿಕೆ ಅಗತ್ಯವಾಗಬಹುದು. + +## ಮೌಲ್ಯಮಾಪನ + +| ಮಾನದಂಡ | ಉದಾಹರಣೀಯ | ತೃಪ್ತಿಕರ | ಸುಧಾರಣೆ ಅಗತ್ಯವಿದೆ | +| -------- | --------- | -------- | ----------------- | +| | Q-ಲರ್ನಿಂಗ್ ಆಲ್ಗಾರಿದಮ್ನ್ನು CartPole ಉದಾಹರಣೆಯಿಂದ ಯಶಸ್ವಿಯಾಗಿ ಹೊಂದಿಸಲಾಗಿದೆ, ಕಡಿಮೆ ಕೋಡ್ ಬದಲಾವಣೆಗಳೊಂದಿಗೆ, 200 ಹಂತಗಳೊಳಗೆ ಧ್ವಜ ಹಿಡಿಯುವ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲು ಸಾಧ್ಯವಾಗಿದೆ. | ಇಂಟರ್ನೆಟ್‌ನಿಂದ ಹೊಸ Q-ಲರ್ನಿಂಗ್ ಆಲ್ಗಾರಿದಮ್ನ್ನು ಸ್ವೀಕರಿಸಲಾಗಿದೆ, ಆದರೆ ಚೆನ್ನಾಗಿ ದಾಖಲೆ ಮಾಡಲಾಗಿದೆ; ಅಥವಾ ಇತ್ತೀಚಿನ ಆಲ್ಗಾರಿದಮ್ನ್ನು ಸ್ವೀಕರಿಸಲಾಗಿದೆ, ಆದರೆ ಬಯಸಿದ ಫಲಿತಾಂಶಗಳನ್ನು ತಲುಪಲಿಲ್ಲ | ವಿದ್ಯಾರ್ಥಿ ಯಾವುದೇ ಆಲ್ಗಾರಿದಮ್ನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಹೊಂದಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ, ಆದರೆ ಪರಿಹಾರಕ್ಕೆ ಪ್ರಮುಖ ಹಂತಗಳನ್ನು ಕೈಗೊಂಡಿದ್ದಾರೆ (ಸ್ಥಿತಿ ವಿಭಜನೆ, Q-ಟೇಬಲ್ ಡೇಟಾ ರಚನೆ ಇತ್ಯಾದಿ ಅನುಷ್ಠಾನಗೊಳಿಸಲಾಗಿದೆ) | + +--- + + +**ಅಸ್ವೀಕಾರ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/8-Reinforcement/2-Gym/notebook.ipynb b/translations/kn/8-Reinforcement/2-Gym/notebook.ipynb new file mode 100644 index 000000000..c6a7832ff --- /dev/null +++ b/translations/kn/8-Reinforcement/2-Gym/notebook.ipynb @@ -0,0 +1,400 @@ +{ + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.4" + }, + "orig_nbformat": 4, + "kernelspec": { + "name": "python3", + "display_name": "Python 3.7.4 64-bit ('base': conda)" + }, + "interpreter": { + "hash": "86193a1ab0ba47eac1c69c1756090baa3b420b3eea7d4aafab8b85f8b312f0c5" + }, + "coopTranslator": { + "original_hash": "f22f8f3daed4b6d34648d1254763105b", + "translation_date": "2025-12-19T17:24:15+00:00", + "source_file": "8-Reinforcement/2-Gym/notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "## ಕಾರ್ಟ್‌ಪೋಲ್ ಸ್ಕೇಟಿಂಗ್\n", + "\n", + "> **ಸಮಸ್ಯೆ**: ಪೀಟರ್ ನಾಯಿ ಹಕ್ಕಿಯಿಂದ ತಪ್ಪಿಸಿಕೊಳ್ಳಲು, ಅವನು ಅವನಿಗಿಂತ ವೇಗವಾಗಿ ಚಲಿಸಲು ಸಾಧ್ಯವಾಗಬೇಕು. ನಾವು ಪೀಟರ್ ಹೇಗೆ ಸ್ಕೇಟ್ ಮಾಡುವುದು, ವಿಶೇಷವಾಗಿ ಸಮತೋಲನವನ್ನು ಕಾಯ್ದುಕೊಳ್ಳುವುದು, Q-ಲರ್ನಿಂಗ್ ಬಳಸಿ ಕಲಿಯಬಹುದು ಎಂದು ನೋಡೋಣ.\n", + "\n", + "ಮೊದಲು, ಜಿಮ್ ಅನ್ನು ಸ್ಥಾಪಿಸಿ ಮತ್ತು ಅಗತ್ಯವಿರುವ ಗ್ರಂಥಾಲಯಗಳನ್ನು ಆಮದು ಮಾಡೋಣ:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#code block 1" + ] + }, + { + "source": [ + "## ಕಾರ್ಟ್‌ಪೋಲ್ ಪರಿಸರವನ್ನು ರಚಿಸಿ\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "source": [ + "#code block 2" + ], + "cell_type": "code", + "metadata": {}, + "execution_count": null, + "outputs": [] + }, + { + "source": [ + "ಪರಿಸರವು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂದು ನೋಡಲು, 100 ಹಂತಗಳಿಗಾಗಿ ಒಂದು ಚಿಕ್ಕ ಅನುಕರಣೆ ನಡೆಸೋಣ.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "source": [ + "#code block 3" + ], + "cell_type": "code", + "metadata": {}, + "execution_count": null, + "outputs": [] + }, + { + "source": [ + "ಸಿಮ್ಯುಲೇಶನ್ ಸಮಯದಲ್ಲಿ, ನಾವು ಹೇಗೆ ನಡೆದುಕೊಳ್ಳಬೇಕೆಂದು ನಿರ್ಧರಿಸಲು ಅವಲೋಕನಗಳನ್ನು ಪಡೆಯಬೇಕಾಗುತ್ತದೆ. ವಾಸ್ತವದಲ್ಲಿ, `step` ಫಂಕ್ಷನ್ ನಮಗೆ ಪ್ರಸ್ತುತ ಅವಲೋಕನಗಳು, ಬಹುಮಾನ ಫಂಕ್ಷನ್ ಮತ್ತು ಸಿಮ್ಯುಲೇಶನ್ ಮುಂದುವರೆಯಬೇಕೇ ಇಲ್ಲವೇ ಎಂಬುದನ್ನು ಸೂಚಿಸುವ `done` ಧ್ವಜವನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "source": [ + "#code block 4" + ], + "cell_type": "code", + "metadata": {}, + "execution_count": null, + "outputs": [] + }, + { + "source": [ + "ನಾವು ಆ ಸಂಖ್ಯೆಗಳ ಕನಿಷ್ಠ ಮತ್ತು ಗರಿಷ್ಠ ಮೌಲ್ಯವನ್ನು ಪಡೆಯಬಹುದು:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "[-4.8000002e+00 -3.4028235e+38 -4.1887903e-01 -3.4028235e+38]\n[4.8000002e+00 3.4028235e+38 4.1887903e-01 3.4028235e+38]\n" + ] + } + ], + "source": [ + "#code block 5" + ] + }, + { + "source": [ + "## ರಾಜ್ಯ ಡಿಸ್ಕ್ರೀಟೈಜೆಷನ್\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "#code block 6" + ] + }, + { + "source": [ + "ನಾವು ಬಿನ್‌ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಇನ್ನೊಂದು ಡಿಸ್ಕ್ರೀಟೈಜೆಷನ್ ವಿಧಾನವನ್ನು ಕೂಡ ಅನ್ವೇಷಿಸೋಣ:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Sample bins for interval (-5,5) with 10 bins\n [-5. -4. -3. -2. -1. 0. 1. 2. 3. 4. 5.]\n" + ] + } + ], + "source": [ + "#code block 7" + ] + }, + { + "source": [ + "ನಾವು ಈಗ ಒಂದು ಚಿಕ್ಕ ಅನುಕರಣೆ ನಡೆಸಿ ಆ ವಿಭಿನ್ನ ಪರಿಸರ ಮೌಲ್ಯಗಳನ್ನು ಗಮನಿಸೋಣ.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "(0, 0, -2, -2)\n(0, 1, -2, -5)\n(0, 2, -3, -8)\n(0, 3, -5, -11)\n(0, 3, -7, -14)\n(0, 4, -10, -17)\n(0, 3, -14, -15)\n(0, 3, -17, -12)\n(0, 3, -20, -16)\n(0, 4, -23, -19)\n" + ] + } + ], + "source": [ + "#code block 8" + ] + }, + { + "source": [ + "## Q-ಟೇಬಲ್ ರಚನೆ\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "#code block 9" + ] + }, + { + "source": [ + "## ನಾವು Q-ಲರ್ನಿಂಗ್ ಪ್ರಾರಂಭಿಸೋಣ!\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "#code block 10" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "0: 22.0, alpha=0.3, epsilon=0.9\n", + "5000: 70.1384, alpha=0.3, epsilon=0.9\n", + "10000: 121.8586, alpha=0.3, epsilon=0.9\n", + "15000: 149.6368, alpha=0.3, epsilon=0.9\n", + "20000: 168.2782, alpha=0.3, epsilon=0.9\n", + "25000: 196.7356, alpha=0.3, epsilon=0.9\n", + "30000: 220.7614, alpha=0.3, epsilon=0.9\n", + "35000: 233.2138, alpha=0.3, epsilon=0.9\n", + "40000: 248.22, alpha=0.3, epsilon=0.9\n", + "45000: 264.636, alpha=0.3, epsilon=0.9\n", + "50000: 276.926, alpha=0.3, epsilon=0.9\n", + "55000: 277.9438, alpha=0.3, epsilon=0.9\n", + "60000: 248.881, alpha=0.3, epsilon=0.9\n", + "65000: 272.529, alpha=0.3, epsilon=0.9\n", + "70000: 281.7972, alpha=0.3, epsilon=0.9\n", + "75000: 284.2844, alpha=0.3, epsilon=0.9\n", + "80000: 269.667, alpha=0.3, epsilon=0.9\n", + "85000: 273.8652, alpha=0.3, epsilon=0.9\n", + "90000: 278.2466, alpha=0.3, epsilon=0.9\n", + "95000: 269.1736, alpha=0.3, epsilon=0.9\n" + ] + } + ], + "source": [ + "#code block 11" + ] + }, + { + "source": [ + "## ತರಬೇತಿ ಪ್ರಗತಿಯನ್ನು ಚಿತ್ರಿಸುವುದು\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[]" + ] + }, + "metadata": {}, + "execution_count": 20 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "plt.plot(rewards)" + ] + }, + { + "source": [ + "ಈ ಗ್ರಾಫ್‌ನಿಂದ ಏನೂ ಹೇಳಲು ಸಾಧ್ಯವಿಲ್ಲ, ಏಕೆಂದರೆ ಸ್ಟೋಚಾಸ್ಟಿಕ್ ತರಬೇತಿ ಪ್ರಕ್ರಿಯೆಯ ಸ್ವಭಾವದಿಂದ ತರಬೇತಿ ಸೆಷನ್‌ಗಳ ಉದ್ದವು ಬಹಳ ವ್ಯತ್ಯಾಸವಾಗುತ್ತದೆ. ಈ ಗ್ರಾಫ್‌ನ ಅರ್ಥವನ್ನು ಹೆಚ್ಚು ಸ್ಪಷ್ಟಗೊಳಿಸಲು, ನಾವು ಪ್ರಯೋಗಗಳ ಸರಣಿಯ ಮೇಲೆ **ಚಲಿಸುವ ಸರಾಸರಿ** ಲೆಕ್ಕಹಾಕಬಹುದು, ಉದಾಹರಣೆಗೆ 100. ಇದನ್ನು ಸುಲಭವಾಗಿ `np.convolve` ಬಳಸಿ ಮಾಡಬಹುದು:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[]" + ] + }, + "metadata": {}, + "execution_count": 22 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "#code block 12" + ] + }, + { + "source": [ + "## ಪರಿವರ್ತನಶೀಲ ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು ಮತ್ತು ಕ್ರಿಯೆಯಲ್ಲಿ ಫಲಿತಾಂಶವನ್ನು ನೋಡುವುದು\n", + "\n", + "ಈಗ ತರಬೇತಿಗೊಂಡ ಮಾದರಿ ಹೇಗೆ ವರ್ತಿಸುತ್ತದೆ ಎಂದು ವಾಸ್ತವವಾಗಿ ನೋಡುವುದು ಆಸಕ್ತಿದಾಯಕವಾಗಿರುತ್ತದೆ. ಸಿಮ್ಯುಲೇಶನ್ ಅನ್ನು ನಡೆಸೋಣ, ಮತ್ತು ನಾವು ತರಬೇತಿಯ ಸಮಯದಲ್ಲಿ ಅನುಸರಿಸಿದ ಅದೇ ಕ್ರಿಯೆ ಆಯ್ಕೆ ತಂತ್ರವನ್ನು ಅನುಸರಿಸುವೆವು: Q-ಟೇಬಲ್‌ನ ಪ್ರಾಬಬಿಲಿಟಿ ವಿತರಣೆಯ ಪ್ರಕಾರ ಸ್ಯಾಂಪ್ಲಿಂಗ್ ಮಾಡುವುದು:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "# code block 13" + ] + }, + { + "source": [ + "## ಫಲಿತಾಂಶವನ್ನು ಅನಿಮೇಟೆಡ್ GIF ಗೆ ಉಳಿಸುವುದು\n", + "\n", + "ನೀವು ನಿಮ್ಮ ಸ್ನೇಹಿತರನ್ನು ಪ್ರಭಾವಿತಗೊಳಿಸಲು ಬಯಸಿದರೆ, ನೀವು ಸಮತೋಲನ ಕಂಬದ ಅನಿಮೇಟೆಡ್ GIF ಚಿತ್ರವನ್ನು ಅವರಿಗೆ ಕಳುಹಿಸಲು ಬಯಸಬಹುದು. ಇದನ್ನು ಮಾಡಲು, ನಾವು `env.render` ಅನ್ನು ಕರೆಸಿ ಚಿತ್ರ ಫ್ರೇಮ್ ಅನ್ನು ಉತ್ಪಾದಿಸಬಹುದು, ಮತ್ತು ನಂತರ ಅವುಗಳನ್ನು PIL ಗ್ರಂಥಾಲಯವನ್ನು ಬಳಸಿ ಅನಿಮೇಟೆಡ್ GIF ಗೆ ಉಳಿಸಬಹುದು:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "360\n" + ] + } + ], + "source": [ + "from PIL import Image\n", + "obs = env.reset()\n", + "done = False\n", + "i=0\n", + "ims = []\n", + "while not done:\n", + " s = discretize(obs)\n", + " img=env.render(mode='rgb_array')\n", + " ims.append(Image.fromarray(img))\n", + " v = probs(np.array([Qbest.get((s,a),0) for a in actions]))\n", + " a = random.choices(actions,weights=v)[0]\n", + " obs,_,done,_ = env.step(a)\n", + " i+=1\n", + "env.close()\n", + "ims[0].save('images/cartpole-balance.gif',save_all=True,append_images=ims[1::2],loop=0,duration=5)\n", + "print(i)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/kn/8-Reinforcement/2-Gym/solution/Julia/README.md b/translations/kn/8-Reinforcement/2-Gym/solution/Julia/README.md new file mode 100644 index 000000000..0f03fd809 --- /dev/null +++ b/translations/kn/8-Reinforcement/2-Gym/solution/Julia/README.md @@ -0,0 +1,17 @@ + +ಇದು ತಾತ್ಕಾಲಿಕ ಪ್ಲೇಸ್‌ಹೋಲ್ಡರ್ ಆಗಿದೆ + +--- + + +**ಅಸ್ವೀಕಾರ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/8-Reinforcement/2-Gym/solution/R/README.md b/translations/kn/8-Reinforcement/2-Gym/solution/R/README.md new file mode 100644 index 000000000..fec8a42e1 --- /dev/null +++ b/translations/kn/8-Reinforcement/2-Gym/solution/R/README.md @@ -0,0 +1,17 @@ + +ಇದು ತಾತ್ಕಾಲಿಕ ಪ್ಲೇಸ್‌ಹೋಲ್ಡರ್ ಆಗಿದೆ + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ತಪ್ಪುಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವಾಗಿ ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/8-Reinforcement/2-Gym/solution/notebook.ipynb b/translations/kn/8-Reinforcement/2-Gym/solution/notebook.ipynb new file mode 100644 index 000000000..77992541f --- /dev/null +++ b/translations/kn/8-Reinforcement/2-Gym/solution/notebook.ipynb @@ -0,0 +1,532 @@ +{ + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.0" + }, + "orig_nbformat": 4, + "kernelspec": { + "name": "python3", + "display_name": "Python 3.7.0 64-bit ('3.7')" + }, + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + }, + "coopTranslator": { + "original_hash": "5c0e485e58d63c506f1791c4dbf990ce", + "translation_date": "2025-12-19T17:28:27+00:00", + "source_file": "8-Reinforcement/2-Gym/solution/notebook.ipynb", + "language_code": "kn" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "## ಕಾರ್ಟ್‌ಪೋಲ್ ಸ್ಕೇಟಿಂಗ್\n", + "\n", + "> **ಸಮಸ್ಯೆ**: ಪೀಟರ್ ನಾಯಿ ಹಕ್ಕಿಯಿಂದ ತಪ್ಪಿಸಿಕೊಳ್ಳಲು, ಅವನು ಅವನಿಗಿಂತ ವೇಗವಾಗಿ ಚಲಿಸಲು ಸಾಧ್ಯವಾಗಬೇಕು. ನಾವು ಪೀಟರ್ ಹೇಗೆ ಸ್ಕೇಟ್ ಮಾಡುವುದು, ವಿಶೇಷವಾಗಿ ಸಮತೋಲನವನ್ನು ಕಾಯ್ದುಕೊಳ್ಳುವುದು, Q-ಲರ್ನಿಂಗ್ ಬಳಸಿ ಕಲಿಯಬಹುದು ಎಂದು ನೋಡೋಣ.\n", + "\n", + "ಮೊದಲು, ಜಿಮ್ ಅನ್ನು ಸ್ಥಾಪಿಸಿ ಮತ್ತು ಅಗತ್ಯವಿರುವ ಗ್ರಂಥಾಲಯಗಳನ್ನು ಆಮದು ಮಾಡೋಣ:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Requirement already satisfied: gym in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (0.18.3)\n", + "Requirement already satisfied: Pillow<=8.2.0 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from gym) (7.0.0)\n", + "Requirement already satisfied: scipy in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from gym) (1.4.1)\n", + "Requirement already satisfied: numpy>=1.10.4 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from gym) (1.19.2)\n", + "Requirement already satisfied: cloudpickle<1.7.0,>=1.2.0 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from gym) (1.6.0)\n", + "Requirement already satisfied: pyglet<=1.5.15,>=1.4.0 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from gym) (1.5.15)\n", + "\u001b[33mWARNING: You are using pip version 20.2.3; however, version 21.1.2 is available.\n", + "You should consider upgrading via the '/Library/Frameworks/Python.framework/Versions/3.7/bin/python3.7 -m pip install --upgrade pip' command.\u001b[0m\n" + ] + } + ], + "source": [ + "import sys\n", + "!pip install gym \n", + "\n", + "import gym\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import random" + ] + }, + { + "source": [ + "## ಕಾರ್ಟ್‌ಪೋಲ್ ಪರಿಸರವನ್ನು ರಚಿಸಿ\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "source": [ + "env = gym.make(\"CartPole-v1\")\n", + "print(env.action_space)\n", + "print(env.observation_space)\n", + "print(env.action_space.sample())" + ], + "cell_type": "code", + "metadata": {}, + "execution_count": 2, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Discrete(2)\nBox(-3.4028234663852886e+38, 3.4028234663852886e+38, (4,), float32)\n0\n" + ] + } + ] + }, + { + "source": [ + "ಪರಿಸರವು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂದು ನೋಡಲು, 100 ಹಂತಗಳಿಗಾಗಿ ಒಂದು ಚಿಕ್ಕ ಅನುಕರಣೆ ನಡೆಸೋಣ.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "source": [ + "env.reset()\n", + "\n", + "for i in range(100):\n", + " env.render()\n", + " env.step(env.action_space.sample())\n", + "env.close()" + ], + "cell_type": "code", + "metadata": {}, + "execution_count": 3, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/gym/logger.py:30: UserWarning: \u001b[33mWARN: You are calling 'step()' even though this environment has already returned done = True. You should always call 'reset()' once you receive 'done = True' -- any further steps are undefined behavior.\u001b[0m\n warnings.warn(colorize('%s: %s'%('WARN', msg % args), 'yellow'))\n" + ] + } + ] + }, + { + "source": [ + "ಸಿಮ್ಯುಲೇಶನ್ ಸಮಯದಲ್ಲಿ, ನಾವು ಹೇಗೆ ನಡೆದುಕೊಳ್ಳಬೇಕೆಂದು ನಿರ್ಧರಿಸಲು ಗಮನಾರ್ಹ ಮಾಹಿತಿಗಳನ್ನು ಪಡೆಯಬೇಕಾಗುತ್ತದೆ. ವಾಸ್ತವದಲ್ಲಿ, `step` ಫಂಕ್ಷನ್ ನಮಗೆ ಪ್ರಸ್ತುತ ಗಮನಾರ್ಹ ಮಾಹಿತಿಗಳು, ಬಹುಮಾನ ಫಂಕ್ಷನ್ ಮತ್ತು ಸಿಮ್ಯುಲೇಶನ್ ಮುಂದುವರೆಯಬೇಕೇ ಇಲ್ಲವೇ ಎಂಬುದನ್ನು ಸೂಚಿಸುವ `done` ಧ್ವಜವನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "source": [ + "env.reset()\n", + "\n", + "done = False\n", + "while not done:\n", + " env.render()\n", + " obs, rew, done, info = env.step(env.action_space.sample())\n", + " print(f\"{obs} -> {rew}\")\n", + "env.close()" + ], + "cell_type": "code", + "metadata": {}, + "execution_count": 4, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "[ 0.03044442 -0.19543914 -0.04496216 0.28125618] -> 1.0\n", + "[ 0.02653564 -0.38989186 -0.03933704 0.55942606] -> 1.0\n", + "[ 0.0187378 -0.19424049 -0.02814852 0.25461393] -> 1.0\n", + "[ 0.01485299 -0.38894946 -0.02305624 0.53828712] -> 1.0\n", + "[ 0.007074 -0.19351108 -0.0122905 0.23842953] -> 1.0\n", + "[ 0.00320378 0.00178427 -0.00752191 -0.05810469] -> 1.0\n", + "[ 0.00323946 0.19701326 -0.008684 -0.35315131] -> 1.0\n", + "[ 0.00717973 0.00201587 -0.01574703 -0.06321931] -> 1.0\n", + "[ 0.00722005 0.19736001 -0.01701141 -0.36082863] -> 1.0\n", + "[ 0.01116725 0.39271958 -0.02422798 -0.65882671] -> 1.0\n", + "[ 0.01902164 0.19794307 -0.03740452 -0.37387001] -> 1.0\n", + "[ 0.0229805 0.39357584 -0.04488192 -0.67810827] -> 1.0\n", + "[ 0.03085202 0.58929164 -0.05844408 -0.98457719] -> 1.0\n", + "[ 0.04263785 0.78514572 -0.07813563 -1.2950295 ] -> 1.0\n", + "[ 0.05834076 0.98116859 -0.10403622 -1.61111521] -> 1.0\n", + "[ 0.07796413 0.78741784 -0.13625852 -1.35259196] -> 1.0\n", + "[ 0.09371249 0.98396202 -0.16331036 -1.68461179] -> 1.0\n", + "[ 0.11339173 0.79106371 -0.1970026 -1.44691436] -> 1.0\n", + "[ 0.12921301 0.59883361 -0.22594088 -1.22169133] -> 1.0\n" + ] + } + ] + }, + { + "source": [ + "ನಾವು ಆ ಸಂಖ್ಯೆಗಳ ಕನಿಷ್ಠ ಮತ್ತು ಗರಿಷ್ಠ ಮೌಲ್ಯವನ್ನು ಪಡೆಯಬಹುದು:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "[-4.8000002e+00 -3.4028235e+38 -4.1887903e-01 -3.4028235e+38]\n[4.8000002e+00 3.4028235e+38 4.1887903e-01 3.4028235e+38]\n" + ] + } + ], + "source": [ + "print(env.observation_space.low)\n", + "print(env.observation_space.high)" + ] + }, + { + "source": [ + "## ರಾಜ್ಯ ಡಿಸ್ಕ್ರೀಟೈಜೆಷನ್\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "def discretize(x):\n", + " return tuple((x/np.array([0.25, 0.25, 0.01, 0.1])).astype(np.int))" + ] + }, + { + "source": [ + "ನಾವು ಬಿನ್‌ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಇನ್ನೊಂದು ಡಿಸ್ಕ್ರೀಟೈಜೆಷನ್ ವಿಧಾನವನ್ನು ಕೂಡ ಅನ್ವೇಷಿಸೋಣ:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Sample bins for interval (-5,5) with 10 bins\n [-5. -4. -3. -2. -1. 0. 1. 2. 3. 4. 5.]\n" + ] + } + ], + "source": [ + "def create_bins(i,num):\n", + " return np.arange(num+1)*(i[1]-i[0])/num+i[0]\n", + "\n", + "print(\"Sample bins for interval (-5,5) with 10 bins\\n\",create_bins((-5,5),10))\n", + "\n", + "ints = [(-5,5),(-2,2),(-0.5,0.5),(-2,2)] # intervals of values for each parameter\n", + "nbins = [20,20,10,10] # number of bins for each parameter\n", + "bins = [create_bins(ints[i],nbins[i]) for i in range(4)]\n", + "\n", + "def discretize_bins(x):\n", + " return tuple(np.digitize(x[i],bins[i]) for i in range(4))" + ] + }, + { + "source": [ + "ನಾವು ಈಗ ಒಂದು ಚಿಕ್ಕ ಅನುಕರಣೆ ನಡೆಸಿ ಆ ವಿಭಿನ್ನ ಪರಿಸರ ಮೌಲ್ಯಗಳನ್ನು ಗಮನಿಸೋಣ.\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "(0, 0, -1, -3)\n(0, 0, -2, 0)\n(0, 0, -2, -3)\n(0, 1, -3, -6)\n(0, 2, -4, -9)\n(0, 3, -6, -12)\n(0, 2, -8, -9)\n(0, 3, -10, -13)\n(0, 4, -13, -16)\n(0, 4, -16, -19)\n(0, 4, -20, -17)\n(0, 4, -24, -20)\n" + ] + } + ], + "source": [ + "env.reset()\n", + "\n", + "done = False\n", + "while not done:\n", + " #env.render()\n", + " obs, rew, done, info = env.step(env.action_space.sample())\n", + " #print(discretize_bins(obs))\n", + " print(discretize(obs))\n", + "env.close()" + ] + }, + { + "source": [ + "## ಕ್ಯೂ-ಟೇಬಲ್ ರಚನೆ\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "Q = {}\n", + "actions = (0,1)\n", + "\n", + "def qvalues(state):\n", + " return [Q.get((state,a),0) for a in actions]" + ] + }, + { + "source": [ + "## ನಾವು Q-ಲರ್ನಿಂಗ್ ಪ್ರಾರಂಭಿಸೋಣ!\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "# hyperparameters\n", + "alpha = 0.3\n", + "gamma = 0.9\n", + "epsilon = 0.90" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "0: 108.0, alpha=0.3, epsilon=0.9\n" + ] + } + ], + "source": [ + "def probs(v,eps=1e-4):\n", + " v = v-v.min()+eps\n", + " v = v/v.sum()\n", + " return v\n", + "\n", + "Qmax = 0\n", + "cum_rewards = []\n", + "rewards = []\n", + "for epoch in range(100000):\n", + " obs = env.reset()\n", + " done = False\n", + " cum_reward=0\n", + " # == do the simulation ==\n", + " while not done:\n", + " s = discretize(obs)\n", + " if random.random() Qmax:\n", + " Qmax = np.average(cum_rewards)\n", + " Qbest = Q\n", + " cum_rewards=[]" + ] + }, + { + "source": [ + "## ತರಬೇತಿ ಪ್ರಗತಿಯನ್ನು ಚಿತ್ರಿಸುವುದು\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[]" + ] + }, + "metadata": {}, + "execution_count": 20 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "plt.plot(rewards)" + ] + }, + { + "source": [ + "ಈ ಗ್ರಾಫ್‌ನಿಂದ ಏನೂ ಹೇಳಲು ಸಾಧ್ಯವಿಲ್ಲ, ಏಕೆಂದರೆ ಸ್ಟೋಚಾಸ್ಟಿಕ್ ತರಬೇತಿ ಪ್ರಕ್ರಿಯೆಯ ಸ್ವಭಾವದಿಂದ ತರಬೇತಿ ಸೆಷನ್‌ಗಳ ಉದ್ದವು ಬಹಳ ವ್ಯತ್ಯಾಸವಾಗುತ್ತದೆ. ಈ ಗ್ರಾಫ್‌ನ ಅರ್ಥವನ್ನು ಹೆಚ್ಚು ಸ್ಪಷ್ಟಗೊಳಿಸಲು, ನಾವು ಪ್ರಯೋಗಗಳ ಸರಣಿಯ ಮೇಲೆ **ಚಲಿಸುವ ಸರಾಸರಿ** ಲೆಕ್ಕಹಾಕಬಹುದು, ಉದಾಹರಣೆಗೆ 100. ಇದನ್ನು ಸುಲಭವಾಗಿ `np.convolve` ಬಳಸಿ ಮಾಡಬಹುದು:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[]" + ] + }, + "metadata": {}, + "execution_count": 22 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "def running_average(x,window):\n", + " return np.convolve(x,np.ones(window)/window,mode='valid')\n", + "\n", + "plt.plot(running_average(rewards,100))" + ] + }, + { + "source": [ + "## ಪರಿವರ್ತನಶೀಲ ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು ಮತ್ತು ಕ್ರಿಯೆಯಲ್ಲಿ ಫಲಿತಾಂಶವನ್ನು ನೋಡುವುದು\n", + "\n", + "ಈಗ ತರಬೇತಿಗೊಂಡ ಮಾದರಿ ಹೇಗೆ ವರ್ತಿಸುತ್ತದೆ ಎಂದು ವಾಸ್ತವವಾಗಿ ನೋಡುವುದು ಆಸಕ್ತಿದಾಯಕವಾಗಿರುತ್ತದೆ. ಸಿಮ್ಯುಲೇಶನ್ ಅನ್ನು ನಡೆಸೋಣ, ಮತ್ತು ನಾವು ತರಬೇತಿಯ ಸಮಯದಲ್ಲಿ ಅನುಸರಿಸಿದ ಅದೇ ಕ್ರಿಯೆ ಆಯ್ಕೆ ತಂತ್ರವನ್ನು ಅನುಸರಿಸುವೆವು: Q-ಟೇಬಲ್‌ನ ಪ್ರಾಬಬಿಲಿಟಿ ವಿತರಣೆಯ ಪ್ರಕಾರ ಸ್ಯಾಂಪ್ಲಿಂಗ್ ಮಾಡುವುದು:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "obs = env.reset()\n", + "done = False\n", + "while not done:\n", + " s = discretize(obs)\n", + " env.render()\n", + " v = probs(np.array(qvalues(s)))\n", + " a = random.choices(actions,weights=v)[0]\n", + " obs,_,done,_ = env.step(a)\n", + "env.close()" + ] + }, + { + "source": [ + "## ಫಲಿತಾಂಶವನ್ನು ಅನಿಮೇಟೆಡ್ GIF ಗೆ ಉಳಿಸುವುದು\n", + "\n", + "ನೀವು ನಿಮ್ಮ ಸ್ನೇಹಿತರನ್ನು ಪ್ರಭಾವಿತಗೊಳಿಸಲು ಬಯಸಿದರೆ, ನೀವು ಸಮತೋಲನ ಕಂಬದ ಅನಿಮೇಟೆಡ್ GIF ಚಿತ್ರವನ್ನು ಅವರಿಗೆ ಕಳುಹಿಸಲು ಬಯಸಬಹುದು. ಇದನ್ನು ಮಾಡಲು, ನಾವು `env.render` ಅನ್ನು ಕರೆಸಿ ಚಿತ್ರ ಫ್ರೇಮ್ ಅನ್ನು ಉತ್ಪಾದಿಸಬಹುದು, ಮತ್ತು ನಂತರ ಅವುಗಳನ್ನು PIL ಗ್ರಂಥಾಲಯವನ್ನು ಬಳಸಿ ಅನಿಮೇಟೆಡ್ GIF ಗೆ ಉಳಿಸಬಹುದು:\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "360\n" + ] + } + ], + "source": [ + "from PIL import Image\n", + "obs = env.reset()\n", + "done = False\n", + "i=0\n", + "ims = []\n", + "while not done:\n", + " s = discretize(obs)\n", + " img=env.render(mode='rgb_array')\n", + " ims.append(Image.fromarray(img))\n", + " v = probs(np.array([Qbest.get((s,a),0) for a in actions]))\n", + " a = random.choices(actions,weights=v)[0]\n", + " obs,_,done,_ = env.step(a)\n", + " i+=1\n", + "env.close()\n", + "ims[0].save('images/cartpole-balance.gif',save_all=True,append_images=ims[1::2],loop=0,duration=5)\n", + "print(i)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/kn/8-Reinforcement/README.md b/translations/kn/8-Reinforcement/README.md new file mode 100644 index 000000000..75e658809 --- /dev/null +++ b/translations/kn/8-Reinforcement/README.md @@ -0,0 +1,69 @@ + +# ಬಲವರ್ಧಿತ ಅಧ್ಯಯನಕ್ಕೆ ಪರಿಚಯ + +ಬಲವರ್ಧಿತ ಅಧ್ಯಯನ, RL, ಮೇಲ್ವಿಚಾರಿತ ಅಧ್ಯಯನ ಮತ್ತು ಮೇಲ್ವಿಚಾರಣೆಯಿಲ್ಲದ ಅಧ್ಯಯನದ ಪಕ್ಕದಲ್ಲಿ ಮೂಲ ಯಂತ್ರ ಅಧ್ಯಯನ ಪರಿಕಲ್ಪನೆಗಳಲ್ಲಿ ಒಂದಾಗಿ ಪರಿಗಣಿಸಲಾಗಿದೆ. RL ಎಲ್ಲವೂ ನಿರ್ಧಾರಗಳ ಬಗ್ಗೆ: ಸರಿಯಾದ ನಿರ್ಧಾರಗಳನ್ನು ನೀಡುವುದು ಅಥವಾ ಕನಿಷ್ಠ ಅವುಗಳಿಂದ ಕಲಿಯುವುದು. + +ನೀವು ಷೇರು ಮಾರುಕಟ್ಟೆಂತಹ ಅನುಕರಿಸಿದ ಪರಿಸರವನ್ನು ಹೊಂದಿದ್ದೀರಿ ಎಂದು ಕಲ್ಪಿಸಿ. ನೀವು ನೀಡಿದ ನಿಯಮವನ್ನು ಜಾರಿಗೆ ತಂದರೆ ಏನಾಗುತ್ತದೆ? ಅದು ಧನಾತ್ಮಕ ಅಥವಾ ಋಣಾತ್ಮಕ ಪರಿಣಾಮ ಹೊಂದಿದೆಯೇ? ಏನಾದರೂ ಋಣಾತ್ಮಕವಾದುದು ಸಂಭವಿಸಿದರೆ, ನೀವು ಈ _ಋಣಾತ್ಮಕ ಬಲವರ್ಧನೆ_ ತೆಗೆದುಕೊಳ್ಳಬೇಕು, ಅದರಿಂದ ಕಲಿಯಬೇಕು ಮತ್ತು ದಿಕ್ಕು ಬದಲಾಯಿಸಬೇಕು. ಅದು ಧನಾತ್ಮಕ ಫಲಿತಾಂಶವಾದರೆ, ನೀವು ಆ _ಧನಾತ್ಮಕ ಬಲವರ್ಧನೆ_ ಮೇಲೆ ನಿರ್ಮಿಸಬೇಕು. + +![peter and the wolf](../../../translated_images/peter.779730f9ba3a8a8d9290600dcf55f2e491c0640c785af7ac0d64f583c49b8864.kn.png) + +> ಪೀಟರ್ ಮತ್ತು ಅವನ ಸ್ನೇಹಿತರು ಹಸಿವಿನ ನರಿ ತಪ್ಪಿಸಿಕೊಳ್ಳಬೇಕಾಗಿದೆ! ಚಿತ್ರವನ್ನು [ಜೆನ್ ಲೂಪರ್](https://twitter.com/jenlooper) ನೀಡಿದ್ದಾರೆ + +## ಪ್ರಾದೇಶಿಕ ವಿಷಯ: ಪೀಟರ್ ಮತ್ತು ನರಿ (ರಷ್ಯಾ) + +[ಪೀಟರ್ ಮತ್ತು ನರಿ](https://en.wikipedia.org/wiki/Peter_and_the_Wolf) ರಷ್ಯಾದ ಸಂಗೀತ ರಚನೆಗಾರ [ಸೆರ್ಗೇ ಪ್ರೊಕೊಫಿಯೆವ್](https://en.wikipedia.org/wiki/Sergei_Prokofiev) ರಚಿಸಿದ ಸಂಗೀತ ಕಥೆ. ಇದು ಯುವ ಪಯನಿಯರ್ ಪೀಟರ್ ಬಗ್ಗೆ ಕಥೆ, ಅವನು ಧೈರ್ಯವಾಗಿ ತನ್ನ ಮನೆಯಿಂದ ಕಾಡಿನ ತೆರೆಯ ಕಡೆಗೆ ಹೋಗಿ ನರಿಯನ್ನು ಹಿಂಬಾಲಿಸುತ್ತಾನೆ. ಈ ವಿಭಾಗದಲ್ಲಿ, ನಾವು ಪೀಟರ್‌ಗೆ ಸಹಾಯ ಮಾಡುವ ಯಂತ್ರ ಅಧ್ಯಯನ ಆಲ್ಗಾರಿದಮ್ಗಳನ್ನು ತರಬೇತಿಮಾಡುತ್ತೇವೆ: + +- **ಸುತ್ತಲೂ ಇರುವ ಪ್ರದೇಶವನ್ನು ಅನ್ವೇಷಿಸಿ** ಮತ್ತು ಅತ್ಯುತ್ತಮ ನ್ಯಾವಿಗೇಶನ್ ನಕ್ಷೆಯನ್ನು ನಿರ್ಮಿಸಿ +- **ಸ್ಕೇಟ್ಬೋರ್ಡ್ ಬಳಸುವುದು ಮತ್ತು ಅದರಲ್ಲಿ ಸಮತೋಲನ ಸಾಧಿಸುವುದನ್ನು ಕಲಿಯಿರಿ**, ವೇಗವಾಗಿ ಸುತ್ತಾಡಲು. + +[![Peter and the Wolf](https://img.youtube.com/vi/Fmi5zHg4QSM/0.jpg)](https://www.youtube.com/watch?v=Fmi5zHg4QSM) + +> 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ ಪ್ರೊಕೊಫಿಯೆವ್ ಅವರ ಪೀಟರ್ ಮತ್ತು ನರಿ ಕೇಳಿ + +## ಬಲವರ್ಧಿತ ಅಧ್ಯಯನ + +ಹಿಂದಿನ ವಿಭಾಗಗಳಲ್ಲಿ, ನೀವು ಯಂತ್ರ ಅಧ್ಯಯನ ಸಮಸ್ಯೆಗಳ ಎರಡು ಉದಾಹರಣೆಗಳನ್ನು ನೋಡಿದ್ದೀರಿ: + +- **ಮೇಲ್ವಿಚಾರಿತ**, ಇಲ್ಲಿ ನಾವು ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲು ಮಾದರಿ ಪರಿಹಾರಗಳನ್ನು ಸೂಚಿಸುವ ಡೇಟಾಸೆಟ್‌ಗಳನ್ನು ಹೊಂದಿದ್ದೇವೆ. [ವರ್ಗೀಕರಣ](../4-Classification/README.md) ಮತ್ತು [ರಿಗ್ರೆಶನ್](../2-Regression/README.md) ಮೇಲ್ವಿಚಾರಿತ ಅಧ್ಯಯನ ಕಾರ್ಯಗಳಾಗಿವೆ. +- **ಮೇಲ್ವಿಚಾರಣೆಯಿಲ್ಲದ**, ಇಲ್ಲಿ ನಮಗೆ ಲೇಬಲ್ ಮಾಡಲಾದ ತರಬೇತಿ ಡೇಟಾ ಇಲ್ಲ. ಮೇಲ್ವಿಚಾರಣೆಯಿಲ್ಲದ ಅಧ್ಯಯನದ ಮುಖ್ಯ ಉದಾಹರಣೆ [ಗುಚ್ಛೀಕರಣ](../5-Clustering/README.md). + +ಈ ವಿಭಾಗದಲ್ಲಿ, ನಾವು ಲೇಬಲ್ ಮಾಡಲಾದ ತರಬೇತಿ ಡೇಟಾ ಅಗತ್ಯವಿಲ್ಲದ ಹೊಸ ತರದ ಅಧ್ಯಯನ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಚಯಿಸುವೆವು. ಇಂತಹ ಸಮಸ್ಯೆಗಳ ಹಲವು ವಿಧಗಳಿವೆ: + +- **[ಅರ್ಧ-ಮೇಲ್ವಿಚಾರಿತ ಅಧ್ಯಯನ](https://wikipedia.org/wiki/Semi-supervised_learning)**, ಇಲ್ಲಿ ನಮಗೆ ಪೂರ್ವ-ತರಬೇತಿಗಾಗಿ ಬಳಸಬಹುದಾದ ಅನೇಕ ಲೇಬಲ್ ಮಾಡದ ಡೇಟಾ ಇರುತ್ತದೆ. +- **[ಬಲವರ್ಧಿತ ಅಧ್ಯಯನ](https://wikipedia.org/wiki/Reinforcement_learning)**, ಇದರಲ್ಲಿ ಏಜೆಂಟ್ ಕೆಲವು ಅನುಕರಿಸಿದ ಪರಿಸರದಲ್ಲಿ ಪ್ರಯೋಗಗಳನ್ನು ನಡೆಸಿ ಹೇಗೆ ವರ್ತಿಸಬೇಕೆಂದು ಕಲಿಯುತ್ತಾನೆ. + +### ಉದಾಹರಣೆ - ಕಂಪ್ಯೂಟರ್ ಆಟ + +ನೀವು ಕಂಪ್ಯೂಟರ್‌ಗೆ ಚೆಸ್ ಅಥವಾ [ಸೂಪರ್ ಮಾರಿಯೋ](https://wikipedia.org/wiki/Super_Mario) ಆಟವನ್ನು ಆಡಿಸಲು ಕಲಿಸಲು ಬಯಸಿದರೆ. ಕಂಪ್ಯೂಟರ್ ಆಟ ಆಡಲು, ನಾವು ಪ್ರತಿ ಆಟದ ಸ್ಥಿತಿಯಲ್ಲಿ ಯಾವ ಚಲನೆ ಮಾಡಬೇಕೆಂದು ಊಹಿಸಬೇಕಾಗುತ್ತದೆ. ಇದು ವರ್ಗೀಕರಣ ಸಮಸ್ಯೆಯಂತೆ ತೋರುತ್ತದೆ, ಆದರೆ ಅಲ್ಲ - ಏಕೆಂದರೆ ನಮಗೆ ಸ್ಥಿತಿಗಳು ಮತ್ತು ಸಂಬಂಧಿತ ಕ್ರಿಯೆಗಳ ಡೇಟಾಸೆಟ್ ಇಲ್ಲ. ನಾವು ಕೆಲವು ಡೇಟಾ ಹೊಂದಿದ್ದರೂ, ಉದಾಹರಣೆಗೆ ಇತ್ತೀಚಿನ ಚೆಸ್ ಪಂದ್ಯಗಳು ಅಥವಾ ಸೂಪರ್ ಮಾರಿಯೋ ಆಟಗಾರರ ರೆಕಾರ್ಡಿಂಗ್, ಆ ಡೇಟಾ ಸಾಕಷ್ಟು ದೊಡ್ಡ ಸಂಖ್ಯೆಯ ಸಾಧ್ಯ ಸ್ಥಿತಿಗಳನ್ನು ಒಳಗೊಂಡಿರಲಾರದು. + +ಇದಕ್ಕೆ ಬದಲಾಗಿ, **ಬಲವರ್ಧಿತ ಅಧ್ಯಯನ** (RL) ಆಲೋಚನೆ ಆಧಾರಿತವಾಗಿದೆ *ಕಂಪ್ಯೂಟರ್ ಅನ್ನು ಅನೇಕ ಬಾರಿ ಆಟ ಆಡಿಸುವುದು ಮತ್ತು ಫಲಿತಾಂಶವನ್ನು ಗಮನಿಸುವುದು*. ಆದ್ದರಿಂದ, ಬಲವರ್ಧಿತ ಅಧ್ಯಯನವನ್ನು ಅನ್ವಯಿಸಲು, ನಮಗೆ ಎರಡು ವಸ್ತುಗಳು ಬೇಕಾಗಿವೆ: + +- **ಒಂದು ಪರಿಸರ** ಮತ್ತು **ಒಂದು ಅನುಕರಣೆ**, ಇದು ನಮಗೆ ಆಟವನ್ನು ಅನೇಕ ಬಾರಿ ಆಡಲು ಅನುಮತಿಸುತ್ತದೆ. ಈ ಅನುಕರಣೆ ಎಲ್ಲಾ ಆಟದ ನಿಯಮಗಳು ಮತ್ತು ಸಾಧ್ಯ ಸ್ಥಿತಿಗಳು ಮತ್ತು ಕ್ರಿಯೆಗಳನ್ನೂ ನಿರ್ಧರಿಸುತ್ತದೆ. + +- **ಒಂದು ಬಹುಮಾನ ಕಾರ್ಯ**, ಇದು ಪ್ರತಿ ಚಲನೆ ಅಥವಾ ಆಟದ ಸಮಯದಲ್ಲಿ ನಾವು ಎಷ್ಟು ಚೆನ್ನಾಗಿ ಮಾಡಿದ್ದೇವೆ ಎಂದು ಹೇಳುತ್ತದೆ. + +ಇತರ ಯಂತ್ರ ಅಧ್ಯಯನ ವಿಧಗಳಿಗಿಂತ RL ಮುಖ್ಯ ವ್ಯತ್ಯಾಸವೆಂದರೆ, RL ನಲ್ಲಿ ನಾವು ಆಟ ಮುಗಿಯುವವರೆಗೆ ನಾವು ಗೆಲುವು ಅಥವಾ ಸೋಲು ತಿಳಿಯುವುದಿಲ್ಲ. ಆದ್ದರಿಂದ, ಒಂದು ನಿರ್ದಿಷ್ಟ ಚಲನೆ ಒಳ್ಳೆಯದೋ ಇಲ್ಲವೋ ಹೇಳಲು ಸಾಧ್ಯವಿಲ್ಲ - ನಾವು ಆಟದ ಕೊನೆಯಲ್ಲಿ ಮಾತ್ರ ಬಹುಮಾನ ಪಡೆಯುತ್ತೇವೆ. ಮತ್ತು ನಮ್ಮ ಗುರಿ ಅಸ್ಪಷ್ಟ ಪರಿಸ್ಥಿತಿಗಳಲ್ಲಿ ಮಾದರಿಯನ್ನು ತರಬೇತಿಮಾಡಲು ಆಲ್ಗಾರಿದಮ್ಗಳನ್ನು ವಿನ್ಯಾಸಗೊಳಿಸುವುದು. ನಾವು **Q-ಅಧ್ಯಯನ** ಎಂಬ ಒಂದು RL ಆಲ್ಗಾರಿದಮ್ನ ಬಗ್ಗೆ ಕಲಿಯುತ್ತೇವೆ. + +## ಪಾಠಗಳು + +1. [ಬಲವರ್ಧಿತ ಅಧ್ಯಯನ ಮತ್ತು Q-ಅಧ್ಯಯನಕ್ಕೆ ಪರಿಚಯ](1-QLearning/README.md) +2. [ಜಿಮ್ ಅನುಕರಣೆ ಪರಿಸರವನ್ನು ಬಳಸುವುದು](2-Gym/README.md) + +## ಕ್ರೆಡಿಟ್ಸ್ + +"ಬಲವರ್ಧಿತ ಅಧ್ಯಯನಕ್ಕೆ ಪರಿಚಯ" ಅನ್ನು ♥️ ಸಹಿತ [ಡ್ಮಿತ್ರಿ ಸೋಶ್ನಿಕೋವ್](http://soshnikov.com) ರಚಿಸಿದ್ದಾರೆ + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/9-Real-World/1-Applications/README.md b/translations/kn/9-Real-World/1-Applications/README.md new file mode 100644 index 000000000..fca417ea1 --- /dev/null +++ b/translations/kn/9-Real-World/1-Applications/README.md @@ -0,0 +1,161 @@ + +# ಪೋಸ್ಟ್‌ಸ್ಕ್ರಿಪ್ಟ್: ನೈಜ ಜಗತ್ತಿನಲ್ಲಿ ಯಂತ್ರ ಅಧ್ಯಯನ + +![ನೈಜ ಜಗತ್ತಿನಲ್ಲಿ ಯಂತ್ರ ಅಧ್ಯಯನದ ಸಾರಾಂಶವನ್ನು ಸ್ಕೆಚ್‌ನೋಟ್‌ನಲ್ಲಿ](../../../../translated_images/ml-realworld.26ee2746716155771f8076598b6145e6533fe4a9e2e465ea745f46648cbf1b84.kn.png) +> ಸ್ಕೆಚ್‌ನೋಟ್: [ಟೊಮೊಮಿ ಇಮುರು](https://www.twitter.com/girlie_mac) + +ಈ ಪಠ್ಯಕ್ರಮದಲ್ಲಿ, ನೀವು ತರಬೇತಿಗಾಗಿ ಡೇಟಾವನ್ನು ಸಿದ್ಧಪಡಿಸುವ ಮತ್ತು ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಗಳನ್ನು ರಚಿಸುವ ಅನೇಕ ವಿಧಾನಗಳನ್ನು ಕಲಿತಿದ್ದೀರಿ. ನೀವು ಶ್ರೇಣೀಕರಣ, ಗುಂಪುಬದ್ಧತೆ, ವರ್ಗೀಕರಣ, ನೈಸರ್ಗಿಕ ಭಾಷಾ ಪ್ರಕ್ರಿಯೆ ಮತ್ತು ಕಾಲ ಸರಣಿ ಮಾದರಿಗಳ ಸರಣಿಯನ್ನು ನಿರ್ಮಿಸಿದ್ದೀರಿ. ಅಭಿನಂದನೆಗಳು! ಈಗ, ನೀವು ಇದಕ್ಕೆ ಏನು ಉಪಯೋಗವಿದೆ ಎಂದು ಆಶ್ಚರ್ಯಪಡಬಹುದು... ಈ ಮಾದರಿಗಳ ನೈಜ ಜಗತ್ತಿನ ಅನ್ವಯಿಕೆಗಳು ಯಾವುವು? + +ಕಂಪನಿಗಳಲ್ಲಿ ಹೆಚ್ಚಿನ ಆಸಕ್ತಿ ಆಕರ್ಷಿಸಿರುವುದು ಸಾಮಾನ್ಯವಾಗಿ ಡೀಪ್ ಲರ್ನಿಂಗ್ ಬಳಸುವ AI ಆಗಿದ್ದರೂ, ಶ್ರೇಣೀಕರಣ ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಗಳಿಗೆ ಇನ್ನೂ ಮೌಲ್ಯಯುತ ಅನ್ವಯಿಕೆಗಳಿವೆ. ನೀವು ಇವುಗಳಲ್ಲಿ ಕೆಲವು ಅನ್ವಯಿಕೆಗಳನ್ನು ಇಂದೇ ಬಳಸಬಹುದು! ಈ ಪಾಠದಲ್ಲಿ, ಎಂಟು ವಿಭಿನ್ನ ಕೈಗಾರಿಕೆಗಳು ಮತ್ತು ವಿಷಯ ಕ್ಷೇತ್ರಗಳು ಈ ಮಾದರಿಗಳನ್ನು ತಮ್ಮ ಅನ್ವಯಿಕೆಗಳನ್ನು ಹೆಚ್ಚು ಕಾರ್ಯಕ್ಷಮ, ನಂಬಿಕಯೋಗ್ಯ, ಬುದ್ಧಿವಂತ ಮತ್ತು ಬಳಕೆದಾರರಿಗೆ ಮೌಲ್ಯಯುತವಾಗಿಸಲು ಹೇಗೆ ಬಳಸುತ್ತವೆ ಎಂಬುದನ್ನು ನೀವು ಅನ್ವೇಷಿಸುವಿರಿ. + +## [ಪೂರ್ವ-ಪಾಠ ಪರೀಕ್ಷೆ](https://ff-quizzes.netlify.app/en/ml/) + +## 💰 ಹಣಕಾಸು + +ಹಣಕಾಸು ಕ್ಷೇತ್ರವು ಯಂತ್ರ ಅಧ್ಯಯನಕ್ಕೆ ಅನೇಕ ಅವಕಾಶಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ. ಈ ಕ್ಷೇತ್ರದ ಅನೇಕ ಸಮಸ್ಯೆಗಳು ಯಂತ್ರ ಅಧ್ಯಯನ ಬಳಸಿ ಮಾದರೀಕರಿಸಿ ಪರಿಹರಿಸಬಹುದಾಗಿದೆ. + +### ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್ ಮೋಸ ಪತ್ತೆ + +ನಾವು ಈ ಕೋರ್ಸ್‌ನಲ್ಲಿ ಮೊದಲು [ಕೆ-ಮೀನ್ಸ್ ಗುಂಪುಬದ್ಧತೆ](../../5-Clustering/2-K-Means/README.md) ಬಗ್ಗೆ ಕಲಿತಿದ್ದೇವೆ, ಆದರೆ ಇದನ್ನು ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್ ಮೋಸ ಸಂಬಂಧಿತ ಸಮಸ್ಯೆಗಳನ್ನು ಹೇಗೆ ಪರಿಹರಿಸಲು ಬಳಸಬಹುದು? + +ಕೆ-ಮೀನ್ಸ್ ಗುಂಪುಬದ್ಧತೆ ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್ ಮೋಸ ಪತ್ತೆ ತಂತ್ರದಲ್ಲಿ **ಔಟ್‌ಲೈಯರ್ ಪತ್ತೆ** ಎಂದು ಕರೆಯಲ್ಪಡುವ ತಂತ್ರದಲ್ಲಿ ಸಹಾಯಕವಾಗುತ್ತದೆ. ಔಟ್‌ಲೈಯರ್‌ಗಳು ಅಥವಾ ಡೇಟಾ ಸೆಟ್‌ನ ವೀಕ್ಷಣೆಗಳಲ್ಲಿ ವ್ಯತ್ಯಾಸಗಳು, ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್ ಸಾಮಾನ್ಯವಾಗಿ ಬಳಸಲಾಗುತ್ತಿದೆಯೇ ಅಥವಾ ಏನಾದರೂ ಅಸಾಮಾನ್ಯವಾಗುತ್ತಿದೆಯೇ ಎಂದು ತಿಳಿಸುವುದಕ್ಕೆ ಸಹಾಯ ಮಾಡುತ್ತವೆ. ಕೆಳಗಿನ ಕಾಗದದಲ್ಲಿ ತೋರಿಸಿದಂತೆ, ನೀವು ಕೆ-ಮೀನ್ಸ್ ಗುಂಪುಬದ್ಧತೆ ಆಲ್ಗಾರಿದಮ್ ಬಳಸಿ ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್ ಡೇಟಾವನ್ನು ವರ್ಗೀಕರಿಸಿ, ಪ್ರತಿ ವ್ಯವಹಾರವನ್ನು ಅದು ಎಷ್ಟು ಔಟ್‌ಲೈಯರ್ ಆಗಿದೆ ಎಂಬುದರ ಆಧಾರದ ಮೇಲೆ ಗುಂಪಿಗೆ ನಿಯೋಜಿಸಬಹುದು. ನಂತರ, ಮೋಸ ಮತ್ತು ಕಾನೂನುಬದ್ಧ ವ್ಯವಹಾರಗಳಿಗಾಗಿ ಅತಿ ಅಪಾಯಕಾರಿಯಾದ ಗುಂಪುಗಳನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಬಹುದು. +[ಉಲ್ಲೇಖ](https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.680.1195&rep=rep1&type=pdf) + +### ಸಂಪತ್ತು ನಿರ್ವಹಣೆ + +ಸಂಪತ್ತು ನಿರ್ವಹಣೆಯಲ್ಲಿ, ವ್ಯಕ್ತಿ ಅಥವಾ ಸಂಸ್ಥೆ ತಮ್ಮ ಗ್ರಾಹಕರ ಪರವಾಗಿ ಹೂಡಿಕೆಗಳನ್ನು ನಿರ್ವಹಿಸುತ್ತಾರೆ. ಅವರ ಕೆಲಸವು ದೀರ್ಘಕಾಲಿಕವಾಗಿ ಸಂಪತ್ತನ್ನು ಉಳಿಸಿ ಬೆಳೆಯಿಸುವುದಾಗಿದೆ, ಆದ್ದರಿಂದ ಉತ್ತಮ ಪ್ರದರ್ಶನ ನೀಡುವ ಹೂಡಿಕೆಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡುವುದು ಅತ್ಯಾವಶ್ಯಕ. + +ನಿರ್ದಿಷ್ಟ ಹೂಡಿಕೆಯು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಅಂದಾಜಿಸಲು ಒಂದು ವಿಧಾನವು ಸಾಂಖ್ಯಿಕ ಶ್ರೇಣೀಕರಣ. [ರೇಖೀಯ ಶ್ರೇಣೀಕರಣ](../../2-Regression/1-Tools/README.md) ಒಂದು ಉಪಯುಕ್ತ ಸಾಧನವಾಗಿದೆ, ಇದು ನಿಧಿಯು ಕೆಲವು ಮಾನದಂಡದ ಹೋಲಿಕೆಯಲ್ಲಿ ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ನಾವು ಶ್ರೇಣೀಕರಣದ ಫಲಿತಾಂಶಗಳು ಸಾಂಖ್ಯಿಕವಾಗಿ ಮಹತ್ವಪೂರ್ಣವೋ ಅಥವಾ ಗ್ರಾಹಕರ ಹೂಡಿಕೆಗಳಿಗೆ ಎಷ್ಟು ಪರಿಣಾಮ ಬೀರುತ್ತವೋ ಎಂದು ನಿರ್ಧರಿಸಬಹುದು. ನೀವು ಬಹುಶ್ರೇಣೀಕರಣ ಬಳಸಿ ನಿಮ್ಮ ವಿಶ್ಲೇಷಣೆಯನ್ನು ಇನ್ನಷ್ಟು ವಿಸ್ತರಿಸಬಹುದು, ಅಲ್ಲಿ ಹೆಚ್ಚುವರಿ ಅಪಾಯ ಅಂಶಗಳನ್ನು ಪರಿಗಣಿಸಬಹುದು. ನಿರ್ದಿಷ್ಟ ನಿಧಿಗೆ ಇದು ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ ಎಂಬ ಉದಾಹರಣೆಗೆ, ಕೆಳಗಿನ ಕಾಗದವನ್ನು ನೋಡಿ, ಇದು ಶ್ರೇಣೀಕರಣ ಬಳಸಿ ನಿಧಿ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡುತ್ತದೆ. +[ಉಲ್ಲೇಖ](http://www.brightwoodventures.com/evaluating-fund-performance-using-regression/) + +## 🎓 ಶಿಕ್ಷಣ + +ಶಿಕ್ಷಣ ಕ್ಷೇತ್ರವೂ ಯಂತ್ರ ಅಧ್ಯಯನ ಅನ್ವಯಿಸಲು ಬಹಳ ಆಸಕ್ತಿದಾಯಕ ಕ್ಷೇತ್ರವಾಗಿದೆ. ಪರೀಕ್ಷೆಗಳಲ್ಲಿ ಅಥವಾ ಪ್ರಬಂಧಗಳಲ್ಲಿ ನಕಲಿ ಪತ್ತೆ ಮಾಡುವುದು ಅಥವಾ ತಿದ್ದುಪಡಿ ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿ ಅನೈಚ್ಛಿಕ ಅಥವಾ ಉದ್ದೇಶಿತ ಪಕ್ಷಪಾತವನ್ನು ನಿರ್ವಹಿಸುವಂತಹ ಸಮಸ್ಯೆಗಳು ಇವೆ. + +### ವಿದ್ಯಾರ್ಥಿ ವರ್ತನೆ ಭವಿಷ್ಯವಾಣಿ + +[ಕೋರ್ಸೆರಾ](https://coursera.com), ಒಂದು ಆನ್‌ಲೈನ್ ಮುಕ್ತ ಕೋರ್ಸ್ ಪೂರೈಕೆದಾರ, ತಮ್ಮ ತಂತ್ರಜ್ಞಾನ ಬ್ಲಾಗ್‌ನಲ್ಲಿ ಅನೇಕ ಎಂಜಿನಿಯರಿಂಗ್ ನಿರ್ಧಾರಗಳನ್ನು ಚರ್ಚಿಸುತ್ತಾರೆ. ಈ ಪ್ರಕರಣ ಅಧ್ಯಯನದಲ್ಲಿ, ಅವರು ಕಡಿಮೆ NPS (ನೆಟ್ ಪ್ರೊಮೋಟರ್ ಸ್ಕೋರ್) ರೇಟಿಂಗ್ ಮತ್ತು ಕೋರ್ಸ್ ಉಳಿಸುವಿಕೆ ಅಥವಾ ಬಿಟ್ಟುಹೋಗುವಿಕೆಗೆ ಯಾವುದೇ ಸಂಬಂಧವಿದೆಯೇ ಎಂದು ಅನ್ವೇಷಿಸಲು ಶ್ರೇಣೀಕರಣ ರೇಖೆಯನ್ನು ಚಿತ್ರಿಸಿದ್ದಾರೆ. +[ಉಲ್ಲೇಖ](https://medium.com/coursera-engineering/controlled-regression-quantifying-the-impact-of-course-quality-on-learner-retention-31f956bd592a) + +### ಪಕ್ಷಪಾತ ಕಡಿಮೆ ಮಾಡುವುದು + +[ಗ್ರಾಮ್ಮರ್ಲಿ](https://grammarly.com), ಒಂದು ಬರವಣಿಗೆ ಸಹಾಯಕ, ತನ್ನ ಉತ್ಪನ್ನಗಳಲ್ಲಿ ಸುಧಾರಿತ [ನೈಸರ್ಗಿಕ ಭಾಷಾ ಪ್ರಕ್ರಿಯೆ ವ್ಯವಸ್ಥೆಗಳನ್ನು](../../6-NLP/README.md) ಬಳಸುತ್ತದೆ. ಅವರು ತಮ್ಮ ತಂತ್ರಜ್ಞಾನ ಬ್ಲಾಗ್‌ನಲ್ಲಿ ಯಂತ್ರ ಅಧ್ಯಯನದಲ್ಲಿ ಲಿಂಗ ಪಕ್ಷಪಾತವನ್ನು ಹೇಗೆ ನಿರ್ವಹಿಸಿದರೋ ಎಂಬುದರ ಬಗ್ಗೆ ಆಸಕ್ತಿದಾಯಕ ಪ್ರಕರಣ ಅಧ್ಯಯನವನ್ನು ಪ್ರಕಟಿಸಿದ್ದಾರೆ, ಇದು ನಮ್ಮ [ಪರಿಚಯಾತ್ಮಕ ನ್ಯಾಯತೆಯ ಪಾಠದಲ್ಲಿ](../../1-Introduction/3-fairness/README.md) ನೀವು ಕಲಿತಿದ್ದೀರಿ. +[ಉಲ್ಲೇಖ](https://www.grammarly.com/blog/engineering/mitigating-gender-bias-in-autocorrect/) + +## 👜 ಚಿಲ್ಲರೆ ವ್ಯಾಪಾರ + +ಚಿಲ್ಲರೆ ವ್ಯಾಪಾರ ಕ್ಷೇತ್ರವು ಯಂತ್ರ ಅಧ್ಯಯನದಿಂದ ಬಹುಮಾನ ಪಡೆಯಬಹುದು, ಉತ್ತಮ ಗ್ರಾಹಕ ಪ್ರಯಾಣವನ್ನು ರಚಿಸುವುದರಿಂದ ಹಿಡಿದು ಸರಕಿನ ಸಂಗ್ರಹಣೆಯನ್ನು ಸೂಕ್ತ ರೀತಿಯಲ್ಲಿ ನಿರ್ವಹಿಸುವವರೆಗೆ. + +### ಗ್ರಾಹಕ ಪ್ರಯಾಣ ವೈಯಕ್ತೀಕರಣ + +ವೇಫೇರ್‌ನಲ್ಲಿ, ಮನೆ ಸಾಮಗ್ರಿಗಳನ್ನು ಮಾರುವ ಕಂಪನಿಯಲ್ಲಿ, ಗ್ರಾಹಕರಿಗೆ ಅವರ ರುಚಿ ಮತ್ತು ಅಗತ್ಯಗಳಿಗೆ ತಕ್ಕ ಸರಿಯಾದ ಉತ್ಪನ್ನಗಳನ್ನು ಕಂಡುಹಿಡಿಯಲು ಸಹಾಯ ಮಾಡುವುದು ಅತ್ಯಂತ ಮುಖ್ಯ. ಈ ಲೇಖನದಲ್ಲಿ, ಕಂಪನಿಯ ಎಂಜಿನಿಯರ್‌ಗಳು ಯಂತ್ರ ಅಧ್ಯಯನ ಮತ್ತು NLP ಅನ್ನು "ಗ್ರಾಹಕರಿಗೆ ಸರಿಯಾದ ಫಲಿತಾಂಶಗಳನ್ನು ತಲುಪಿಸಲು" ಹೇಗೆ ಬಳಸುತ್ತಾರೆ ಎಂದು ವಿವರಿಸಿದ್ದಾರೆ. ವಿಶೇಷವಾಗಿ, ಅವರ ಕ್ವೇರಿ ಇಂಟೆಂಟ್ ಎಂಜಿನ್ ಎಂಟಿಟಿ ಎಕ್ಸ್ಟ್ರಾಕ್ಷನ್, ವರ್ಗೀಕರಣ ತರಬೇತಿ, ಆಸ್ತಿ ಮತ್ತು ಅಭಿಪ್ರಾಯ ಎಕ್ಸ್ಟ್ರಾಕ್ಷನ್, ಮತ್ತು ಗ್ರಾಹಕ ವಿಮರ್ಶೆಗಳಲ್ಲಿ ಭಾವನೆ ಟ್ಯಾಗಿಂಗ್ ಅನ್ನು ಬಳಸುವಂತೆ ನಿರ್ಮಿಸಲಾಗಿದೆ. ಇದು ಆನ್‌ಲೈನ್ ಚಿಲ್ಲರೆ ವ್ಯಾಪಾರದಲ್ಲಿ NLP ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ ಎಂಬ ಕ್ಲಾಸಿಕ್ ಉದಾಹರಣೆ. +[ಉಲ್ಲೇಖ](https://www.aboutwayfair.com/tech-innovation/how-we-use-machine-learning-and-natural-language-processing-to-empower-search) + +### ಸರಕಿನ ನಿರ್ವಹಣೆ + +[ಸ್ಟಿಚ್ಫಿಕ್ಸ್](https://stitchfix.com) ಎಂಬ, ಗ್ರಾಹಕರಿಗೆ ಬಟ್ಟೆಗಳನ್ನು ಕಳುಹಿಸುವ ಬಾಕ್ಸ್ ಸೇವೆ, ಶಿಫಾರಸುಗಳು ಮತ್ತು ಸರಕಿನ ನಿರ್ವಹಣೆಗೆ ಯಂತ್ರ ಅಧ್ಯಯನವನ್ನು ಬಹಳಷ್ಟು ಅವಲಂಬಿಸಿದೆ. ಅವರ ಶೈಲಿಯ ತಂಡಗಳು ಮಾರಾಟ ತಂಡಗಳೊಂದಿಗೆ ಸಹಕರಿಸುತ್ತವೆ: "ನಮ್ಮ ಡೇಟಾ ವಿಜ್ಞಾನಿಗಳಲ್ಲಿ ಒಬ್ಬರು ಜನ್ಯ ಆಲ್ಗಾರಿದಮ್‌ನೊಂದಿಗೆ ಪ್ರಯೋಗ ಮಾಡಿ, ಇಂದಿನ ದಿನದಲ್ಲಿ ಇಲ್ಲದ ಯಶಸ್ವಿ ಬಟ್ಟೆಯನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಅದನ್ನು ಬಟ್ಟೆಗಳಿಗೆ ಅನ್ವಯಿಸಿದರು. ನಾವು ಅದನ್ನು ಮಾರಾಟ ತಂಡಕ್ಕೆ ತಂದುಕೊಟ್ಟಿದ್ದೇವೆ ಮತ್ತು ಈಗ ಅವರು ಅದನ್ನು ಉಪಕರಣವಾಗಿ ಬಳಸಬಹುದು." +[ಉಲ್ಲೇಖ](https://www.zdnet.com/article/how-stitch-fix-uses-machine-learning-to-master-the-science-of-styling/) + +## 🏥 ಆರೋಗ್ಯ ಸೇವೆ + +ಆರೋಗ್ಯ ಸೇವೆ ಕ್ಷೇತ್ರವು ಸಂಶೋಧನಾ ಕಾರ್ಯಗಳನ್ನು ಮತ್ತು ರೋಗಿಗಳನ್ನು ಮರುಪ್ರವೇಶಿಸುವಂತಹ ಲಾಜಿಸ್ಟಿಕ್ ಸಮಸ್ಯೆಗಳನ್ನು ಸುಧಾರಿಸಲು ಯಂತ್ರ ಅಧ್ಯಯನವನ್ನು ಬಳಸಬಹುದು. + +### ಕ್ಲಿನಿಕಲ್ ಟ್ರಯಲ್‌ಗಳ ನಿರ್ವಹಣೆ + +ಕ್ಲಿನಿಕಲ್ ಟ್ರಯಲ್‌ಗಳಲ್ಲಿ ವಿಷಕಾರಕತೆ ಔಷಧಿ ತಯಾರಕರಿಗೆ ಪ್ರಮುಖ ಚಿಂತೆ. ಎಷ್ಟು ವಿಷಕಾರಕತೆ ಸಹಿಸಬಹುದೆ? ಈ ಅಧ್ಯಯನದಲ್ಲಿ, ವಿವಿಧ ಕ್ಲಿನಿಕಲ್ ಟ್ರಯಲ್ ವಿಧಾನಗಳನ್ನು ವಿಶ್ಲೇಷಿಸಿ, ಕ್ಲಿನಿಕಲ್ ಟ್ರಯಲ್ ಫಲಿತಾಂಶಗಳ ಸಾಧ್ಯತೆಗಳನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಹೊಸ ವಿಧಾನವನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಲಾಗಿದೆ. ವಿಶೇಷವಾಗಿ, ಅವರು ರ್ಯಾಂಡಮ್ ಫಾರೆಸ್ಟ್ ಬಳಸಿ [ವರ್ಗೀಕರಣ](../../4-Classification/README.md) ಮಾಡಬಹುದಾದ ಮಾದರಿಯನ್ನು ರಚಿಸಿದ್ದಾರೆ, ಇದು ಔಷಧಿ ಗುಂಪುಗಳನ್ನು ವಿಭಜಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. +[ಉಲ್ಲೇಖ](https://www.sciencedirect.com/science/article/pii/S2451945616302914) + +### ಆಸ್ಪತ್ರೆ ಮರುಪ್ರವೇಶ ನಿರ್ವಹಣೆ + +ಆಸ್ಪತ್ರೆ ಸೇವೆ ದುಬಾರಿ, ವಿಶೇಷವಾಗಿ ರೋಗಿಗಳನ್ನು ಮರುಪ್ರವೇಶಿಸಬೇಕಾದಾಗ. ಈ ಕಾಗದವು ಯಂತ್ರ ಅಧ್ಯಯನ ಬಳಸಿ ಮರುಪ್ರವೇಶ ಸಾಧ್ಯತೆಯನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡುವ ಕಂಪನಿಯ ಬಗ್ಗೆ ಚರ್ಚಿಸುತ್ತದೆ, [ಗುಂಪುಬದ್ಧತೆ](../../5-Clustering/README.md) ಆಲ್ಗಾರಿದಮ್‌ಗಳನ್ನು ಬಳಸಿಕೊಂಡು. ಈ ಗುಂಪುಗಳು ವಿಶ್ಲೇಷಕರಿಗೆ "ಸಾಮಾನ್ಯ ಕಾರಣವನ್ನು ಹಂಚಿಕೊಳ್ಳಬಹುದಾದ ಮರುಪ್ರವೇಶ ಗುಂಪುಗಳನ್ನು ಕಂಡುಹಿಡಿಯಲು" ಸಹಾಯ ಮಾಡುತ್ತವೆ. +[ಉಲ್ಲೇಖ](https://healthmanagement.org/c/healthmanagement/issuearticle/hospital-readmissions-and-machine-learning) + +### ರೋಗ ನಿರ್ವಹಣೆ + +ಇತ್ತೀಚಿನ ಮಹಾಮಾರಿ ಯಂತ್ರ ಅಧ್ಯಯನವು ರೋಗ ಹರಡುವಿಕೆಯನ್ನು ತಡೆಯಲು ಹೇಗೆ ಸಹಾಯ ಮಾಡಬಹುದು ಎಂಬುದರ ಮೇಲೆ ಬೆಳಕು ಚೆಲ್ಲಿದೆ. ಈ ಲೇಖನದಲ್ಲಿ, ನೀವು ARIMA, ಲಾಜಿಸ್ಟಿಕ್ ವಕ್ರಗಳು, ರೇಖೀಯ ಶ್ರೇಣೀಕರಣ ಮತ್ತು SARIMA ಬಳಕೆಯನ್ನು ಗುರುತಿಸಬಹುದು. "ಈ ಕೆಲಸವು ಈ ವೈರಸ್ ಹರಡುವಿಕೆಯನ್ನು ಲೆಕ್ಕಹಾಕಲು ಮತ್ತು ಹೀಗಾಗಿ ಸಾವುಗಳು, ಗುಣಮುಖತೆಗಳು ಮತ್ತು ದೃಢೀಕೃತ ಪ್ರಕರಣಗಳನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಪ್ರಯತ್ನವಾಗಿದೆ, ಇದರಿಂದ ನಾವು ಉತ್ತಮವಾಗಿ ಸಿದ್ಧರಾಗಲು ಮತ್ತು ಬದುಕಲು ಸಹಾಯವಾಗುತ್ತದೆ." +[ಉಲ್ಲೇಖ](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7979218/) + +## 🌲 ಪರಿಸರ ಮತ್ತು ಹಸಿರು ತಂತ್ರಜ್ಞಾನ + +ಪ್ರಕೃತಿ ಮತ್ತು ಪರಿಸರವು ಅನೇಕ ಸಂವೇದನಾಶೀಲ ವ್ಯವಸ್ಥೆಗಳನ್ನು ಒಳಗೊಂಡಿವೆ, ಅಲ್ಲಿ ಪ್ರಾಣಿಗಳು ಮತ್ತು ಪ್ರಕೃತಿಯ ನಡುವಿನ ಪರಸ್ಪರ ಕ್ರಿಯೆ ಮುಖ್ಯವಾಗುತ್ತದೆ. ಈ ವ್ಯವಸ್ಥೆಗಳನ್ನು ನಿಖರವಾಗಿ ಅಳೆಯುವುದು ಮತ್ತು ಏನಾದರೂ ಸಂಭವಿಸಿದರೆ, ಉದಾಹರಣೆಗೆ ಕಾಡು ಬೆಂಕಿ ಅಥವಾ ಪ್ರಾಣಿ ಜನಸಂಖ್ಯೆಯ ಕುಸಿತ, ಸೂಕ್ತವಾಗಿ ಕ್ರಮ ಕೈಗೊಳ್ಳುವುದು ಮುಖ್ಯ. + +### ಕಾಡು ನಿರ್ವಹಣೆ + +ನೀವು ಹಿಂದಿನ ಪಾಠಗಳಲ್ಲಿ [ರೀಇನ್ಫೋರ್ಸ್ಮೆಂಟ್ ಲರ್ನಿಂಗ್](../../8-Reinforcement/README.md) ಬಗ್ಗೆ ಕಲಿತಿದ್ದೀರಿ. ಇದು ಪ್ರಕೃತಿಯಲ್ಲಿ ಮಾದರಿಗಳನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಬಹಳ ಉಪಯುಕ್ತವಾಗಬಹುದು. ವಿಶೇಷವಾಗಿ, ಇದು ಕಾಡು ಬೆಂಕಿ ಮತ್ತು ಆಕ್ರಮಣಕಾರಿ ಪ್ರಭೇದಗಳ ಹರಡುವಿಕೆಯನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಲು ಬಳಸಬಹುದು. ಕೆನಡಾದಲ್ಲಿ, ಸಂಶೋಧಕರ ಗುಂಪು ರೀಇನ್ಫೋರ್ಸ್ಮೆಂಟ್ ಲರ್ನಿಂಗ್ ಬಳಸಿ ಉಪಗ್ರಹ ಚಿತ್ರಗಳಿಂದ ಕಾಡು ಬೆಂಕಿ ಗತಿಶೀಲತೆ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸಿದ್ದಾರೆ. "ಸ್ಥಳೀಯವಾಗಿ ಹರಡುವ ಪ್ರಕ್ರಿಯೆ (SSP)" ಎಂಬ ನವೀನ ವಿಧಾನವನ್ನು ಬಳಸಿ, ಅವರು ಕಾಡು ಬೆಂಕಿಯನ್ನು "ಭೂದೃಶ್ಯದಲ್ಲಿ ಯಾವುದೇ ಸೆಲ್‌ನಲ್ಲಿ ಏಜೆಂಟ್" ಎಂದು ಕಲ್ಪಿಸಿದ್ದಾರೆ. "ಬೆಂಕಿ ಯಾವುದೇ ಸಮಯದಲ್ಲಿ ಉತ್ತರ, ದಕ್ಷಿಣ, ಪೂರ್ವ ಅಥವಾ ಪಶ್ಚಿಮಕ್ಕೆ ಹರಡಬಹುದು ಅಥವಾ ಹರಡದಿರಬಹುದು." + +ಈ ವಿಧಾನವು ಸಾಮಾನ್ಯ RL ವ್ಯವಸ್ಥೆಯನ್ನು ತಿರುಗಿಸುತ್ತದೆ ಏಕೆಂದರೆ ಸಂಬಂಧಿತ ಮಾರ್ಕೋವ್ ನಿರ್ಧಾರ ಪ್ರಕ್ರಿಯೆಯ (MDP) ಗತಿಶೀಲತೆ ತಕ್ಷಣದ ಕಾಡು ಬೆಂಕಿ ಹರಡುವಿಕೆಗೆ ತಿಳಿದಿರುವ ಕಾರ್ಯವಾಗಿದೆ." ಈ ಗುಂಪು ಬಳಸಿದ ಕ್ಲಾಸಿಕ್ ಆಲ್ಗಾರಿದಮ್‌ಗಳ ಬಗ್ಗೆ ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ ಕೆಳಗಿನ ಲಿಂಕ್ ನೋಡಿ. +[ಉಲ್ಲೇಖ](https://www.frontiersin.org/articles/10.3389/fict.2018.00006/full) + +### ಪ್ರಾಣಿಗಳ ಚಲನೆ ಸಂವೇದನೆ + +ಡೀಪ್ ಲರ್ನಿಂಗ್ ಪ್ರಾಣಿಗಳ ಚಲನೆಗಳನ್ನು ದೃಶ್ಯವಾಗಿ ಟ್ರ್ಯಾಕ್ ಮಾಡುವಲ್ಲಿ ಕ್ರಾಂತಿ ತಂದಿದ್ದರೂ (ನೀವು ನಿಮ್ಮದೇ [ಪೋಲರ್ ಬೆರ್ ಟ್ರ್ಯಾಕರ್](https://docs.microsoft.com/learn/modules/build-ml-model-with-azure-stream-analytics/?WT.mc_id=academic-77952-leestott) ಅನ್ನು ಇಲ್ಲಿ ನಿರ್ಮಿಸಬಹುದು), ಕ್ಲಾಸಿಕ್ ಯಂತ್ರ ಅಧ್ಯಯನ ಈ ಕಾರ್ಯದಲ್ಲಿ ಇನ್ನೂ ಸ್ಥಾನ ಹೊಂದಿದೆ. + +ಕೃಷಿ ಪ್ರಾಣಿಗಳ ಚಲನೆಗಳನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಲು ಸೆನ್ಸಾರ್‌ಗಳು ಮತ್ತು IoT ಈ ರೀತಿಯ ದೃಶ್ಯ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಬಳಸುತ್ತವೆ, ಆದರೆ ಮೂಲಭೂತ ಯಂತ್ರ ಅಧ್ಯಯನ ತಂತ್ರಗಳು ಡೇಟಾ ಪೂರ್ವಸಿದ್ಧತೆಗೆ ಉಪಯುಕ್ತವಾಗಿವೆ. ಉದಾಹರಣೆಗೆ, ಈ ಕಾಗದದಲ್ಲಿ ಕುರಿಗಳ ಸ್ಥಿತಿಗಳನ್ನು ವಿವಿಧ ವರ್ಗೀಕರಣ ಆಲ್ಗಾರಿದಮ್‌ಗಳ ಬಳಕೆಯಿಂದ ಮೇಲ್ವಿಚಾರಣೆ ಮತ್ತು ವಿಶ್ಲೇಷಣೆ ಮಾಡಲಾಗಿದೆ. ನೀವು ಪುಟ 335 ರಲ್ಲಿ ROC ವಕ್ರವನ್ನು ಗುರುತಿಸಬಹುದು. +[ಉಲ್ಲೇಖ](https://druckhaus-hofmann.de/gallery/31-wj-feb-2020.pdf) + +### ⚡️ ಶಕ್ತಿ ನಿರ್ವಹಣೆ + +ನಮ್ಮ [ಕಾಲ ಸರಣಿ ಭವಿಷ್ಯವಾಣಿ](../../7-TimeSeries/README.md) ಪಾಠಗಳಲ್ಲಿ, ನಾವು ಸರಬರಾಜು ಮತ್ತು ಬೇಡಿಕೆಯನ್ನು ಅರ್ಥಮಾಡಿಕೊಂಡು ಪಟ್ಟಣಕ್ಕೆ ಆದಾಯ ತರುವ ಸ್ಮಾರ್ಟ್ ಪಾರ್ಕಿಂಗ್ ಮೀಟರ್‌ಗಳ ಕಲ್ಪನೆಯನ್ನು ಉಲ್ಲೇಖಿಸಿದ್ದೇವೆ. ಈ ಲೇಖನದಲ್ಲಿ, ಐರ್ಲೆಂಡ್‌ನಲ್ಲಿ ಸ್ಮಾರ್ಟ್ ಮೀಟರಿಂಗ್ ಆಧಾರಿತ ಭವಿಷ್ಯದ ಶಕ್ತಿ ಬಳಕೆಯನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಗುಂಪುಬದ್ಧತೆ, ಶ್ರೇಣೀಕರಣ ಮತ್ತು ಕಾಲ ಸರಣಿ ಭವಿಷ್ಯವಾಣಿ ಹೇಗೆ ಸಂಯೋಜಿತವಾಗಿವೆ ಎಂಬುದನ್ನು ವಿವರಿಸಲಾಗಿದೆ. +[ಉಲ್ಲೇಖ](https://www-cdn.knime.com/sites/default/files/inline-images/knime_bigdata_energy_timeseries_whitepaper.pdf) + +## 💼 ವಿಮೆ + +ವಿಮೆ ಕ್ಷೇತ್ರವು ಸಹ ಯಂತ್ರ ಅಧ್ಯಯನವನ್ನು ಬಳಸಿಕೊಂಡು ಆರ್ಥಿಕ ಮತ್ತು ಅಕ್ಟ್ಯೂರಿಯಲ್ ಮಾದರಿಗಳನ್ನು ರಚಿಸಿ ಸುಧಾರಿಸುತ್ತದೆ. + +### ಅಸ್ಥಿರತೆ ನಿರ್ವಹಣೆ + +ಮೆಟ್‌ಲೈಫ್, ಒಂದು ಜೀವ ವಿಮೆ ಪೂರೈಕೆದಾರ, ತಮ್ಮ ಆರ್ಥಿಕ ಮಾದರಿಗಳಲ್ಲಿನ ಅಸ್ಥಿರತೆಯನ್ನು ವಿಶ್ಲೇಷಿಸಿ ಕಡಿಮೆ ಮಾಡುವ ವಿಧಾನವನ್ನು ಮುಕ್ತವಾಗಿ ಹಂಚಿಕೊಳ್ಳುತ್ತದೆ. ಈ ಲೇಖನದಲ್ಲಿ ನೀವು ದ್ವಿಮೂಲಕ ಮತ್ತು ಕ್ರಮಬದ್ಧ ವರ್ಗೀಕರಣದ ದೃಶ್ಯೀಕರಣಗಳನ್ನು ಗಮನಿಸಬಹುದು. ನೀವು ಭವಿಷ್ಯವಾಣಿ ದೃಶ್ಯೀಕರಣಗಳನ್ನು ಕೂಡ ಕಂಡುಹಿಡಿಯುತ್ತೀರಿ. +[ಉಲ್ಲೇಖ](https://investments.metlife.com/content/dam/metlifecom/us/investments/insights/research-topics/macro-strategy/pdf/MetLifeInvestmentManagement_MachineLearnedRanking_070920.pdf) + +## 🎨 ಕಲೆ, ಸಂಸ್ಕೃತಿ ಮತ್ತು ಸಾಹಿತ್ಯ + +ಕಲೆಯಲ್ಲಿಯೂ, ಉದಾಹರಣೆಗೆ ಪತ್ರಿಕೋದ್ಯಮದಲ್ಲಿ, ಅನೇಕ ಆಸಕ್ತಿದಾಯಕ ಸಮಸ್ಯೆಗಳಿವೆ. ನಕಲಿ ಸುದ್ದಿಯನ್ನು ಪತ್ತೆಹಚ್ಚುವುದು ದೊಡ್ಡ ಸಮಸ್ಯೆ, ಏಕೆಂದರೆ ಇದು ಜನರ ಅಭಿಪ್ರಾಯವನ್ನು ಪ್ರಭಾವಿತಗೊಳಿಸುತ್ತದೆ ಮತ್ತು ಪ್ರಜಾಪ್ರಭುತ್ವಗಳನ್ನು ಕುಸಿತಗೊಳಿಸಬಹುದು. ಸಂಗ್ರಹಾಲಯಗಳು ಕೂಡ ವಸ್ತುಗಳ ನಡುವಿನ ಸಂಪರ್ಕಗಳನ್ನು ಕಂಡುಹಿಡಿಯುವುದರಿಂದ ಸಂಪನ್ಮೂಲ ಯೋಜನೆಗೆ ಯಂತ್ರ ಅಧ್ಯಯನದಿಂದ ಲಾಭ ಪಡೆಯಬಹುದು. + +### ನಕಲಿ ಸುದ್ದಿ ಪತ್ತೆ + +ಇಂದಿನ ಮಾಧ್ಯಮದಲ್ಲಿ ನಕಲಿ ಸುದ್ದಿಯನ್ನು ಪತ್ತೆಹಚ್ಚುವುದು ಬೆಕ್ಕು ಮತ್ತು ಇಲಿ ಆಟವಾಗಿದೆ. ಈ ಲೇಖನದಲ್ಲಿ, ಸಂಶೋಧಕರು ನಾವು ಕಲಿತ ಯಂತ್ರ ಅಧ್ಯಯನ ತಂತ್ರಗಳನ್ನು ಸಂಯೋಜಿಸಿ ಪರೀಕ್ಷಿಸಿ ಉತ್ತಮ ಮಾದರಿಯನ್ನು ನಿಯೋಜಿಸಬಹುದು ಎಂದು ಸೂಚಿಸಿದ್ದಾರೆ: "ಈ ವ್ಯವಸ್ಥೆ ನೈಸರ್ಗಿಕ ಭಾಷಾ ಪ್ರಕ್ರಿಯೆ ಆಧಾರಿತವಾಗಿದ್ದು, ಡೇಟಾದಿಂದ ಲಕ್ಷಣಗಳನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ ಮತ್ತು ನಂತರ ಈ ಲಕ್ಷಣಗಳನ್ನು ನೈವ್ ಬೇಯ್ಸ್, ಸಪೋರ್ಟ್ ವೆಕ್ಟರ್ ಮಷೀನ್ (SVM), ರ್ಯಾಂಡಮ್ ಫಾರೆಸ್ಟ್ (RF), ಸ್ಟೋಚಾಸ್ಟಿಕ್ ಗ್ರೇಡಿಯಂಟ್ ಡಿಸೆಂಟ್ (SGD), ಮತ್ತು ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಷನ್ (LR) ಮುಂತಾದ ಯಂತ್ರ ಅಧ್ಯಯನ ವರ್ಗೀಕರಣಗಳ ತರಬೇತಿಗೆ ಬಳಸಲಾಗುತ್ತದೆ." +[ಉಲ್ಲೇಖ](https://www.irjet.net/archives/V7/i6/IRJET-V7I6688.pdf) + +ಈ ಲೇಖನವು ವಿಭಿನ್ನ ಯಂತ್ರ ಅಧ್ಯಯನ ಕ್ಷೇತ್ರಗಳನ್ನು ಸಂಯೋಜಿಸುವ ಮೂಲಕ ನಕಲಿ ಸುದ್ದಿಯ ಹರಡುವಿಕೆಯನ್ನು ತಡೆಯಲು ಮತ್ತು ನಿಜವಾದ ಹಾನಿಯನ್ನು ತಡೆಯಲು ಸಹಾಯ ಮಾಡುವ ಆಸಕ್ತಿದಾಯಕ ಫಲಿತಾಂಶಗಳನ್ನು ತರುತ್ತದೆ; ಈ ಸಂದರ್ಭದಲ್ಲಿ, COVID ಚಿಕಿತ್ಸೆಗಳ ಬಗ್ಗೆ ಹರಡುವ ಗಾಸಿಪ್‌ಗಳು ಹಿಂಸಾಚಾರಕ್ಕೆ ಪ್ರೇರಣೆ ನೀಡಿದವು. + +### ಸಂಗ್ರಹಾಲಯ ಯಂತ್ರ ಅಧ್ಯಯನ + +ಸಂಗ್ರಹಾಲಯಗಳು AI ಕ್ರಾಂತಿಯ ಮುಂಭಾಗದಲ್ಲಿವೆ, ಅಲ್ಲಿ ಸಂಗ್ರಹಗಳನ್ನು ವರ್ಗೀಕರಿಸುವುದು ಮತ್ತು ಡಿಜಿಟೈಸ್ ಮಾಡುವುದರಿಂದ ವಸ್ತುಗಳ ನಡುವಿನ ಸಂಪರ್ಕಗಳನ್ನು ಕಂಡುಹಿಡಿಯುವುದು ತಂತ್ರಜ್ಞಾನ ಅಭಿವೃದ್ಧಿಯೊಂದಿಗೆ ಸುಲಭವಾಗುತ್ತಿದೆ. [ಇನ್ ಕೋಡಿಸೆ ರೇಷಿಯೋ](https://www.sciencedirect.com/science/article/abs/pii/S0306457321001035#:~:text=1.,studies%20over%20large%20historical%20sources.) ಮುಂತಾದ ಯೋಜನೆಗಳು ವಾಟಿಕನ್ ಆರ್ಕೈವ್ಸ್ ಮುಂತಾದ ಅಪ್ರಾಪ್ಯ ಸಂಗ್ರಹಗಳ ರಹಸ್ಯಗಳನ್ನು ಅನಾವರಣಗೊಳಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತಿವೆ. ಆದರೆ, ಸಂಗ್ರಹಾಲಯಗಳ ವ್ಯಾಪಾರ ಭಾಗವೂ ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಗಳಿಂದ ಲಾಭ ಪಡೆಯುತ್ತಿದೆ. + +ಉದಾಹರಣೆಗೆ, ಚಿಕಾಗೋ ಆರ್ಟ್ ಇನ್ಸ್ಟಿಟ್ಯೂಟ್ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸಿ ಪ್ರೇಕ್ಷಕರ ಆಸಕ್ತಿಯನ್ನು ಮತ್ತು ಅವರು ಪ್ರದರ್ಶನಗಳಿಗೆ ಯಾವಾಗ ಹಾಜರಾಗುತ್ತಾರೆ ಎಂಬುದನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡುತ್ತದೆ. ಗುರಿಯು ಪ್ರತಿ ಬಾರಿ ಬಳಕೆದಾರರು ಸಂಗ್ರಹಾಲಯಕ್ಕೆ ಭೇಟಿ ನೀಡುವಾಗ ವೈಯಕ್ತಿಕ ಮತ್ತು ಸುಧಾರಿತ ಭೇಟಿ ಅನುಭವಗಳನ್ನು ಸೃಷ್ಟಿಸುವುದು. "2017 ಹಣಕಾಸು ವರ್ಷದಲ್ಲಿ, ಮಾದರಿ ಹಾಜರಾತಿ ಮತ್ತು ಪ್ರವೇಶಗಳನ್ನು 1 ಶೇಕಡಾ ನಿಖರತೆಯೊಳಗೆ ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿತು ಎಂದು ಆಂಡ್ರ್ಯೂ ಸಿಮ್ನಿಕ್, ಚಿಕಾಗೋ ಆರ್ಟ್ ಇನ್ಸ್ಟಿಟ್ಯೂಟ್‌ನ ಹಿರಿಯ ಉಪಾಧ್ಯಕ್ಷರು ಹೇಳಿದ್ದಾರೆ." +[ಉಲ್ಲೇಖ](https://www.chicagobusiness.com/article/20180518/ISSUE01/180519840/art-institute-of-chicago-uses-data-to-make-exhibit-choices) + +## 🏷 ಮಾರುಕಟ್ಟೆ + +### ಗ್ರಾಹಕ ವಿಭಾಗೀಕರಣ + +ಅತ್ಯಂತ ಪರಿಣಾಮಕಾರಿ ಮಾರುಕಟ್ಟೆ ತಂತ್ರಗಳು ವಿವಿಧ ಗುಂಪುಗಳ ಆಧಾರದ ಮೇಲೆ ಗ್ರಾಹಕರನ್ನು ವಿಭಿನ್ನ ರೀತಿಯಲ್ಲಿ ಗುರಿಯಾಗಿಸುತ್ತವೆ. ಈ ಲೇಖನದಲ್ಲಿ, ವಿಭಜಿತ ಮಾರುಕಟ್ಟೆಗೆ ಬೆಂಬಲ ನೀಡಲು ಗುಂಪುಬದ್ಧತೆ ಆಲ್ಗಾರಿದಮ್‌ಗಳ ಬಳಕೆಯನ್ನು ಚರ್ಚಿಸಲಾಗಿದೆ. ವಿಭಜಿತ ಮಾರುಕಟ್ಟೆ ಕಂಪನಿಗಳಿಗೆ ಬ್ರ್ಯಾಂಡ್ ಗುರುತನ್ನು ಸುಧಾರಿಸಲು, ಹೆಚ್ಚು ಗ್ರಾಹಕರಿಗೆ ತಲುಪಲು ಮತ್ತು ಹೆಚ್ಚು ಹಣ ಗಳಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. +[ಉಲ್ಲೇಖ](https://ai.inqline.com/machine-learning-for-marketing-customer-segmentation/) + +## 🚀 ಸವಾಲು + +ನೀವು ಈ ಪಠ್ಯಕ್ರಮದಲ್ಲಿ ಕಲಿತ ಕೆಲವು ತಂತ್ರಗಳನ್ನು ಉಪಯೋಗಿಸುವ ಮತ್ತೊಂದು ಕ್ಷೇತ್ರವನ್ನು ಗುರುತಿಸಿ, ಅದು ಯಂತ್ರ ಅಧ್ಯಯನವನ್ನು ಹೇಗೆ ಬಳಸುತ್ತದೆ ಎಂಬುದನ್ನು ಕಂಡುಹಿಡಿಯಿರಿ. +## [ಪೋಸ್ಟ್-ಲೆಕ್ಚರ್ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) + +## ವಿಮರ್ಶೆ ಮತ್ತು ಸ್ವಯಂ ಅಧ್ಯಯನ + +ವೇಫೇರ್ ಡೇಟಾ ಸೈನ್ಸ್ ತಂಡವು ತಮ್ಮ ಕಂಪನಿಯಲ್ಲಿ ಎಂಎಲ್ ಅನ್ನು ಹೇಗೆ ಬಳಸುತ್ತಾರೆ ಎಂಬುದರ ಬಗ್ಗೆ ಹಲವಾರು ಆಸಕ್ತಿದಾಯಕ ವೀಡಿಯೊಗಳನ್ನು ಹೊಂದಿದೆ. ಅದನ್ನು [ನೋಡುವುದು](https://www.youtube.com/channel/UCe2PjkQXqOuwkW1gw6Ameuw/videos) ಮೌಲ್ಯವಿದೆ! + +## ನಿಯೋಜನೆ + +[ಎಂಎಲ್ ಸ್ಕ್ಯಾವೆಂಜರ್ ಹಂಟ್](assignment.md) + +--- + + +**ಅಸ್ವೀಕಾರ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/9-Real-World/1-Applications/assignment.md b/translations/kn/9-Real-World/1-Applications/assignment.md new file mode 100644 index 000000000..da9d164e8 --- /dev/null +++ b/translations/kn/9-Real-World/1-Applications/assignment.md @@ -0,0 +1,29 @@ + +# ಎಂಎಲ್ ಸ್ಕ್ಯಾವೆಂಜರ್ ಹಂಟ್ + +## ಸೂಚನೆಗಳು + +ಈ ಪಾಠದಲ್ಲಿ, ನೀವು ಕ್ಲಾಸಿಕಲ್ ಎಂಎಲ್ ಬಳಸಿ ಪರಿಹರಿಸಲಾದ ಅನೇಕ ನೈಜ ಜೀವನದ ಬಳಕೆ ಪ್ರಕರಣಗಳ ಬಗ್ಗೆ ಕಲಿತಿದ್ದೀರಿ. ಆಳವಾದ ಕಲಿಕೆ, ಎಐಯಲ್ಲಿ ಹೊಸ ತಂತ್ರಗಳು ಮತ್ತು ಸಾಧನಗಳ ಬಳಕೆ, ಮತ್ತು ನ್ಯೂರಲ್ ನೆಟ್‌ವರ್ಕ್‌ಗಳನ್ನು ಉಪಯೋಗಿಸುವುದರಿಂದ ಈ ಕ್ಷೇತ್ರಗಳಲ್ಲಿ ಸಹಾಯ ಮಾಡುವ ಸಾಧನಗಳ ಉತ್ಪಾದನೆ ವೇಗವಾಗಿ ನಡೆಯುತ್ತಿದೆ, ಈ ಪಠ್ಯಕ್ರಮದಲ್ಲಿನ ತಂತ್ರಗಳನ್ನು ಬಳಸುವ ಕ್ಲಾಸಿಕ್ ಎಂಎಲ್ ಇನ್ನೂ ಮಹತ್ವವನ್ನು ಹೊಂದಿದೆ. + +ಈ ನಿಯೋಜನೆಯಲ್ಲಿ, ನೀವು ಹ್ಯಾಕಾಥಾನ್‌ನಲ್ಲಿ ಭಾಗವಹಿಸುತ್ತಿದ್ದೀರಿ ಎಂದು ಕಲ್ಪಿಸಿ. ಈ ಪಠ್ಯಕ್ರಮದಲ್ಲಿ ಕಲಿತದ್ದನ್ನು ಬಳಸಿ ಕ್ಲಾಸಿಕ್ ಎಂಎಲ್ ಉಪಯೋಗಿಸಿ ಈ ಪಾಠದಲ್ಲಿ ಚರ್ಚಿಸಲಾದ ಕ್ಷೇತ್ರಗಳಲ್ಲಿ ಒಂದರಲ್ಲಿ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲು ಪರಿಹಾರವನ್ನು ಪ್ರಸ್ತಾಪಿಸಿ. ನಿಮ್ಮ ಆಲೋಚನೆಯನ್ನು ಹೇಗೆ ಅನುಷ್ಠಾನಗೊಳಿಸುವಿರಿ ಎಂಬುದನ್ನು ಚರ್ಚಿಸುವ ಪ್ರಸ್ತುತಿಯನ್ನು ರಚಿಸಿ. ನಿಮ್ಮ ಕಲ್ಪನೆಯನ್ನು ಬೆಂಬಲಿಸಲು ಮಾದರಿ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸಿ ಎಂಎಲ್ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿದರೆ ಹೆಚ್ಚುವರಿ ಅಂಕಗಳು! + +## ರೂಬ್ರಿಕ್ + +| ಮಾನದಂಡಗಳು | ಉದಾಹರಣೀಯ | ತೃಪ್ತಿಕರ | ಸುಧಾರಣೆ ಅಗತ್ಯವಿದೆ | +| -------- | ------------------------------------------------------------------- | ------------------------------------------------- | ---------------------- | +| | ಪವರ್‌ಪಾಯಿಂಟ್ ಪ್ರಸ್ತುತಿ ನೀಡಲಾಗಿದೆ - ಮಾದರಿ ನಿರ್ಮಾಣಕ್ಕೆ ಹೆಚ್ಚುವರಿ ಅಂಕಗಳು | ನವೀನತೆ ಇಲ್ಲದ, ಮೂಲಭೂತ ಪ್ರಸ್ತುತಿ ನೀಡಲಾಗಿದೆ | ಕೆಲಸ ಅಪೂರ್ಣವಾಗಿದೆ | + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/9-Real-World/2-Debugging-ML-Models/README.md b/translations/kn/9-Real-World/2-Debugging-ML-Models/README.md new file mode 100644 index 000000000..b84ec800f --- /dev/null +++ b/translations/kn/9-Real-World/2-Debugging-ML-Models/README.md @@ -0,0 +1,185 @@ + +# ಪೋಸ್ಟ್‌ಸ್ಕ್ರಿಪ್ಟ್: ಜವಾಬ್ದಾರಿಯುತ AI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ ಘಟಕಗಳನ್ನು ಬಳಸಿ ಯಂತ್ರ ಅಧ್ಯಯನದಲ್ಲಿ ಮಾದರಿ ಡಿಬಗಿಂಗ್ + +## [ಪೂರ್ವ-ಪಾಠ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) + +## ಪರಿಚಯ + +ಯಂತ್ರ ಅಧ್ಯಯನವು ನಮ್ಮ ದೈನಂದಿನ ಜೀವನವನ್ನು ಪ್ರಭಾವಿಸುತ್ತದೆ. AI ನಮ್ಮನ್ನು ವ್ಯಕ್ತಿಗಳಾಗಿ ಮತ್ತು ಸಮಾಜವಾಗಿ ಪ್ರಭಾವಿಸುವ ಆರೋಗ್ಯಸೇವೆ, ಹಣಕಾಸು, ಶಿಕ್ಷಣ ಮತ್ತು ಉದ್ಯೋಗದಂತಹ ಕೆಲವು ಅತ್ಯಂತ ಪ್ರಮುಖ ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ ತನ್ನ ಮಾರ್ಗವನ್ನು ಕಂಡುಕೊಳ್ಳುತ್ತಿದೆ. ಉದಾಹರಣೆಗೆ, ವ್ಯವಸ್ಥೆಗಳು ಮತ್ತು ಮಾದರಿಗಳು ದೈನಂದಿನ ನಿರ್ಧಾರ-ಮೇಕಿಂಗ್ ಕಾರ್ಯಗಳಲ್ಲಿ ಭಾಗವಹಿಸುತ್ತವೆ, ಉದಾಹರಣೆಗೆ ಆರೋಗ್ಯ ನಿರ್ಣಯಗಳು ಅಥವಾ ಮೋಸ ಪತ್ತೆ. ಪರಿಣಾಮವಾಗಿ, AI ಯಲ್ಲಿ ಪ್ರಗತಿಗಳು ಮತ್ತು ವೇಗವಾಗಿ ಸ್ವೀಕಾರವು ಬೆಳೆಯುತ್ತಿರುವ ಸಾಮಾಜಿಕ ನಿರೀಕ್ಷೆಗಳು ಮತ್ತು ನಿಯಂತ್ರಣಗಳೊಂದಿಗೆ ಎದುರಿಸುತ್ತಿವೆ. ನಾವು ನಿರಂತರವಾಗಿ AI ವ್ಯವಸ್ಥೆಗಳು ನಿರೀಕ್ಷೆಗಳನ್ನು ತಪ್ಪಿಸುತ್ತಿರುವ ಪ್ರದೇಶಗಳನ್ನು ನೋಡುತ್ತೇವೆ; ಅವು ಹೊಸ ಸವಾಲುಗಳನ್ನು ಹೊರತರುತ್ತವೆ; ಮತ್ತು ಸರ್ಕಾರಗಳು AI ಪರಿಹಾರಗಳನ್ನು ನಿಯಂತ್ರಿಸಲು ಪ್ರಾರಂಭಿಸುತ್ತಿವೆ. ಆದ್ದರಿಂದ, ಈ ಮಾದರಿಗಳನ್ನು ವಿಶ್ಲೇಷಿಸಿ ಎಲ್ಲರಿಗೂ ನ್ಯಾಯಸಮ್ಮತ, ನಂಬಿಕಯೋಗ್ಯ, ಒಳಗೊಂಡ, ಪಾರದರ್ಶಕ ಮತ್ತು ಹೊಣೆಗಾರಿಕೆಯ ಫಲಿತಾಂಶಗಳನ್ನು ಒದಗಿಸುವುದು ಮುಖ್ಯ. + +ಈ ಪಠ್ಯಕ್ರಮದಲ್ಲಿ, ನಾವು ಮಾದರಿಯಲ್ಲಿ ಜವಾಬ್ದಾರಿಯುತ AI ಸಮಸ್ಯೆಗಳಿದ್ದರೆ ಅವುಗಳನ್ನು ಅಳೆಯಲು ಬಳಸಬಹುದಾದ ಪ್ರಾಯೋಗಿಕ ಸಾಧನಗಳನ್ನು ನೋಡುತ್ತೇವೆ. ಪರಂಪರাগত ಯಂತ್ರ ಅಧ್ಯಯನ ಡಿಬಗಿಂಗ್ ತಂತ್ರಗಳು ಸಾಮಾನ್ಯವಾಗಿ ಸಂಗ್ರಹಿತ ಶುದ್ಧತೆ ಅಥವಾ ಸರಾಸರಿ ದೋಷ ನಷ್ಟದಂತಹ ಪ್ರಮಾಣಾತ್ಮಕ ಲೆಕ್ಕಾಚಾರಗಳ ಮೇಲೆ ಆಧಾರಿತವಾಗಿರುತ್ತವೆ. ನೀವು ಈ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸಲು ಬಳಸುತ್ತಿರುವ ಡೇಟಾದಲ್ಲಿ ಜಾತಿ, ಲಿಂಗ, ರಾಜಕೀಯ ದೃಷ್ಟಿಕೋನ, ಧರ್ಮ ಅಥವಾ ಇಂತಹ ಜನಾಂಗಗಳನ್ನು ಅಸಮಾನವಾಗಿ ಪ್ರತಿನಿಧಿಸುವಂತಹ ಕೆಲವು ಜನಾಂಗಗಳು ಇಲ್ಲದಿದ್ದರೆ ಏನಾಗಬಹುದು ಎಂದು ಕಲ್ಪಿಸಿ ನೋಡಿ. ಮಾದರಿಯ ಔಟ್‌ಪುಟ್ ಕೆಲವು ಜನಾಂಗವನ್ನು ಪ್ರಾಧಾನ್ಯ ನೀಡುವಂತೆ ವ್ಯಾಖ್ಯಾನಿಸಿದರೆ? ಇದು ಈ ಸಂವೇದನಾಶೀಲ ಲಕ್ಷಣ ಗುಂಪುಗಳ ಅತಿವ್ಯಕ್ತ ಅಥವಾ ಅಲ್ಪಪ್ರತಿನಿಧಾನವನ್ನು ಪರಿಚಯಿಸಬಹುದು, ಇದರಿಂದ ಮಾದರಿಯಿಂದ ನ್ಯಾಯ, ಒಳಗೊಂಡಿಕೆ ಅಥವಾ ನಂಬಿಕಯೋಗ್ಯತೆ ಸಮಸ್ಯೆಗಳು ಉಂಟಾಗಬಹುದು. ಮತ್ತೊಂದು ಕಾರಣವೆಂದರೆ, ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಗಳನ್ನು ಕಪ್ಪು ಪೆಟ್ಟಿಗೆಗಳು ಎಂದು ಪರಿಗಣಿಸಲಾಗುತ್ತದೆ, ಇದು ಮಾದರಿಯ ಭವಿಷ್ಯವಾಣಿ ಏಕೆ ಆಗುತ್ತದೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಮತ್ತು ವಿವರಿಸಲು ಕಷ್ಟವಾಗುತ್ತದೆ. ಈ ಎಲ್ಲವುಗಳು ಡೇಟಾ ವಿಜ್ಞಾನಿಗಳು ಮತ್ತು AI ಅಭಿವೃದ್ಧಿಪಡಿಸುವವರು ಸಮರ್ಪಕ ಸಾಧನಗಳಿಲ್ಲದೆ ಮಾದರಿಯ ನ್ಯಾಯತೆ ಅಥವಾ ನಂಬಿಕಯೋಗ್ಯತೆಯನ್ನು ಡಿಬಗ್ ಮತ್ತು ಅಳೆಯುವಾಗ ಎದುರಿಸುವ ಸವಾಲುಗಳಾಗಿವೆ. + +ಈ ಪಾಠದಲ್ಲಿ, ನೀವು ನಿಮ್ಮ ಮಾದರಿಗಳನ್ನು ಡಿಬಗ್ ಮಾಡಲು ಕಲಿಯುತ್ತೀರಿ: + +- **ದೋಷ ವಿಶ್ಲೇಷಣೆ**: ನಿಮ್ಮ ಡೇಟಾ ವಿತರಣದಲ್ಲಿ ಮಾದರಿಯು ಎಲ್ಲಿ ಹೆಚ್ಚಿನ ದೋಷ ದರಗಳನ್ನು ಹೊಂದಿದೆ ಎಂದು ಗುರುತಿಸಿ. +- **ಮಾದರಿ ಅವಲೋಕನ**: ವಿವಿಧ ಡೇಟಾ ಗುಂಪುಗಳ ನಡುವೆ ಹೋಲಿಕೆ ವಿಶ್ಲೇಷಣೆ ಮಾಡಿ ನಿಮ್ಮ ಮಾದರಿಯ ಕಾರ್ಯಕ್ಷಮತೆ ಅಳತೆಗಳಲ್ಲಿ ವ್ಯತ್ಯಾಸಗಳನ್ನು ಕಂಡುಹಿಡಿಯಿರಿ. +- **ಡೇಟಾ ವಿಶ್ಲೇಷಣೆ**: ನಿಮ್ಮ ಡೇಟಾದಲ್ಲಿ ಅತಿವ್ಯಕ್ತ ಅಥವಾ ಅಲ್ಪಪ್ರತಿನಿಧಾನ ಇರುವ ಸ್ಥಳಗಳನ್ನು ಪರಿಶೀಲಿಸಿ, ಇದು ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ಒಂದು ಡೇಟಾ ಜನಾಂಗವನ್ನು ಇತರರಿಗಿಂತ ಪ್ರಾಧಾನ್ಯ ನೀಡಲು ತಿರುಗಿಸಬಹುದು. +- **ಲಕ್ಷಣ ಮಹತ್ವ**: ಜಾಗತಿಕ ಮಟ್ಟದಲ್ಲಿ ಅಥವಾ ಸ್ಥಳೀಯ ಮಟ್ಟದಲ್ಲಿ ನಿಮ್ಮ ಮಾದರಿಯ ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ಯಾವ ಲಕ್ಷಣಗಳು ಚಾಲನೆ ಮಾಡುತ್ತವೆ ಎಂದು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಿ. + +## ಪೂರ್ವಾಪೇಕ್ಷಿತ + +ಪೂರ್ವಾಪೇಕ್ಷಿತವಾಗಿ, ದಯವಿಟ್ಟು [ಜವಾಬ್ದಾರಿಯುತ AI ಸಾಧನಗಳು ಅಭಿವೃದ್ಧಿಪಡಿಸುವವರಿಗೆ](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard) ಎಂಬ ವಿಮರ್ಶೆಯನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ + +> ![ಜವಾಬ್ದಾರಿಯುತ AI ಸಾಧನಗಳ ಗಿಫ್](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif) + +## ದೋಷ ವಿಶ್ಲೇಷಣೆ + +ಸರಾಸರಿ ಶುದ್ಧತೆ ಅಥವಾ ತಪ್ಪು ಭವಿಷ್ಯವಾಣಿಗಳ ಮೇಲೆ ಆಧಾರಿತ ಮಾದರಿ ಕಾರ್ಯಕ್ಷಮತೆ ಅಳತೆಗಳು ಸಾಮಾನ್ಯವಾಗಿ ಸರಿಯಾದ ಮತ್ತು ತಪ್ಪಾದ ಭವಿಷ್ಯವಾಣಿಗಳ ಲೆಕ್ಕಾಚಾರಗಳಾಗಿವೆ. ಉದಾಹರಣೆಗೆ, 0.001 ದೋಷ ನಷ್ಟದೊಂದಿಗೆ 89% ಶುದ್ಧತೆ ಹೊಂದಿರುವ ಮಾದರಿಯನ್ನು ಉತ್ತಮ ಕಾರ್ಯಕ್ಷಮತೆ ಎಂದು ಪರಿಗಣಿಸಬಹುದು. ದೋಷಗಳು ನಿಮ್ಮ ಮೂಲ ಡೇಟಾ ಸೆಟ್‌ನಲ್ಲಿ ಸಮಾನವಾಗಿ ವಿತರಿಸಲ್ಪಡುವುದಿಲ್ಲ. ನೀವು 89% ಮಾದರಿ ಶುದ್ಧತೆ ಅಂಕೆಯನ್ನು ಪಡೆಯಬಹುದು ಆದರೆ ಮಾದರಿ 42% ಸಮಯದಲ್ಲಿ ವಿಫಲವಾಗುತ್ತಿರುವ ಡೇಟಾದ ವಿಭಿನ್ನ ಪ್ರದೇಶಗಳನ್ನು ಕಂಡುಹಿಡಿಯಬಹುದು. ಈ ವಿಫಲತೆ ಮಾದರಿಯ ನ್ಯಾಯತೆ ಅಥವಾ ನಂಬಿಕಯೋಗ್ಯತೆ ಸಮಸ್ಯೆಗಳಿಗೆ ಕಾರಣವಾಗಬಹುದು. ಮಾದರಿ ಉತ್ತಮವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿರುವ ಅಥವಾ ಇಲ್ಲದಿರುವ ಪ್ರದೇಶಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಅತ್ಯಾವಶ್ಯಕ. ನಿಮ್ಮ ಮಾದರಿಯಲ್ಲಿ ಹೆಚ್ಚಿನ ತಪ್ಪುಗಳಿರುವ ಡೇಟಾ ಪ್ರದೇಶವು ಪ್ರಮುಖ ಡೇಟಾ ಜನಾಂಗವಾಗಬಹುದು. + +![ಮಾದರಿ ದೋಷಗಳನ್ನು ವಿಶ್ಲೇಷಿಸಿ ಮತ್ತು ಡಿಬಗ್ ಮಾಡಿ](../../../../translated_images/ea-error-distribution.117452e1177c1dd84fab2369967a68bcde787c76c6ea7fdb92fcf15d1fce8206.kn.png) + +RAI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್‌ನ ದೋಷ ವಿಶ್ಲೇಷಣೆ ಘಟಕವು ವಿವಿಧ ಗುಂಪುಗಳಲ್ಲಿ ಮಾದರಿ ವಿಫಲತೆ ಹೇಗೆ ವಿತರಿಸಲಾಗಿದೆ ಎಂಬುದನ್ನು ಮರದ ದೃಶ್ಯೀಕರಣದೊಂದಿಗೆ ತೋರಿಸುತ್ತದೆ. ಇದು ನಿಮ್ಮ ಡೇಟಾ ಸೆಟ್‌ನಲ್ಲಿ ಹೆಚ್ಚಿನ ದೋಷ ದರ ಇರುವ ಲಕ್ಷಣಗಳು ಅಥವಾ ಪ್ರದೇಶಗಳನ್ನು ಗುರುತಿಸಲು ಉಪಯುಕ್ತವಾಗಿದೆ. ಹೆಚ್ಚಿನ ದೋಷಗಳು ಎಲ್ಲಿಂದ ಬರುತ್ತಿವೆ ಎಂದು ನೋಡಿಕೊಂಡು, ನೀವು ಮೂಲ ಕಾರಣವನ್ನು ಪರಿಶೀಲಿಸಲು ಪ್ರಾರಂಭಿಸಬಹುದು. ನೀವು ವಿಶ್ಲೇಷಣೆ ಮಾಡಲು ಡೇಟಾ ಗುಂಪುಗಳನ್ನು ರಚಿಸಬಹುದು. ಈ ಡೇಟಾ ಗುಂಪುಗಳು ಡಿಬಗಿಂಗ್ ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿ ಸಹಾಯ ಮಾಡುತ್ತವೆ, ಏಕೆಂದರೆ ಒಂದು ಗುಂಪಿನಲ್ಲಿ ಮಾದರಿ ಕಾರ್ಯಕ್ಷಮತೆ ಉತ್ತಮವಾಗಿದ್ದರೆ ಮತ್ತೊಂದರಲ್ಲಿ ತಪ್ಪುಗಳಾಗಿರುವುದನ್ನು ತಿಳಿಯಲು. + +![ದೋಷ ವಿಶ್ಲೇಷಣೆ](../../../../translated_images/ea-error-cohort.6886209ea5d438c4daa8bfbf5ce3a7042586364dd3eccda4a4e3d05623ac702a.kn.png) + +ಮರ ನಕ್ಷೆಯ ದೃಶ್ಯ ಸೂಚಕಗಳು ಸಮಸ್ಯೆ ಪ್ರದೇಶಗಳನ್ನು ವೇಗವಾಗಿ ಕಂಡುಹಿಡಿಯಲು ಸಹಾಯ ಮಾಡುತ್ತವೆ. ಉದಾಹರಣೆಗೆ, ಮರದ ನೋಡ್‌ಗೆ ಹೆಚ್ಚು ಕಪ್ಪು ಕೆಂಪು ಬಣ್ಣ ಇದ್ದರೆ, ದೋಷ ದರ ಹೆಚ್ಚು ಇದೆ. + +ಹೀಟ್ ಮ್ಯಾಪ್ ಮತ್ತೊಂದು ದೃಶ್ಯೀಕರಣ ಕಾರ್ಯಕ್ಷಮತೆ, ಬಳಕೆದಾರರು ಒಂದು ಅಥವಾ ಎರಡು ಲಕ್ಷಣಗಳನ್ನು ಬಳಸಿ ದೋಷ ದರವನ್ನು ಪರಿಶೀಲಿಸಲು ಬಳಸಬಹುದು, ಇದು ಸಂಪೂರ್ಣ ಡೇಟಾ ಸೆಟ್ ಅಥವಾ ಗುಂಪುಗಳಲ್ಲಿ ಮಾದರಿ ದೋಷಗಳಿಗೆ ಕಾರಣವಾದ ಅಂಶವನ್ನು ಕಂಡುಹಿಡಿಯಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. + +![ದೋಷ ವಿಶ್ಲೇಷಣೆ ಹೀಟ್‌ಮ್ಯಾಪ್](../../../../translated_images/ea-heatmap.8d27185e28cee3830c85e1b2e9df9d2d5e5c8c940f41678efdb68753f2f7e56c.kn.png) + +ನೀವು ದೋಷ ವಿಶ್ಲೇಷಣೆಯನ್ನು ಬಳಸಬೇಕಾಗಿರುವಾಗ: + +* ಮಾದರಿ ವಿಫಲತೆಗಳು ಡೇಟಾ ಸೆಟ್ ಮತ್ತು ವಿವಿಧ ಇನ್‌ಪುಟ್ ಮತ್ತು ಲಕ್ಷಣ ಆಯಾಮಗಳಲ್ಲಿ ಹೇಗೆ ವಿತರಿಸಲಾಗಿದೆ ಎಂಬುದನ್ನು ಆಳವಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಿ. +* ಸಂಗ್ರಹಿತ ಕಾರ್ಯಕ್ಷಮತೆ ಅಳತೆಗಳನ್ನು ವಿಭಜಿಸಿ ತಪ್ಪು ಗುಂಪುಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಕಂಡುಹಿಡಿದು ನಿಮ್ಮ ಗುರಿತಗೊಂಡ ಪರಿಹಾರ ಕ್ರಮಗಳನ್ನು ತಿಳಿಸಿ. + +## ಮಾದರಿ ಅವಲೋಕನ + +ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಯ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಲು ಅದರ ವರ್ತನೆಯನ್ನು ಸಮಗ್ರವಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಅಗತ್ಯ. ಇದು ದೋಷ ದರ, ಶುದ್ಧತೆ, ರಿಕಾಲ್, ಪ್ರೆಸಿಷನ್ ಅಥವಾ MAE (ಸರಾಸರಿ ಪರಮಾಣು ದೋಷ) ಮುಂತಾದ metrics ಗಳನ್ನು ಪರಿಶೀಲಿಸುವ ಮೂಲಕ ಸಾಧ್ಯ. ಒಂದು ಕಾರ್ಯಕ್ಷಮತೆ ಅಳತೆ ಉತ್ತಮವಾಗಿದ್ದರೂ, ಮತ್ತೊಂದು ಅಳತೆಯಲ್ಲಿ ತಪ್ಪುಗಳು ಬಹಿರಂಗವಾಗಬಹುದು. ಜೊತೆಗೆ, ಸಂಪೂರ್ಣ ಡೇಟಾ ಸೆಟ್ ಅಥವಾ ಗುಂಪುಗಳಲ್ಲಿ metrics ಗಳ ವ್ಯತ್ಯಾಸಗಳನ್ನು ಹೋಲಿಸುವುದು ಮಾದರಿ ಉತ್ತಮವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿರುವ ಅಥವಾ ಇಲ್ಲದಿರುವ ಸ್ಥಳಗಳನ್ನು ಬೆಳಗಿಸುತ್ತದೆ. ಇದು ವಿಶೇಷವಾಗಿ ಸಂವೇದನಾಶೀಲ ಮತ್ತು ಅಸಂವೇದನಾಶೀಲ ಲಕ್ಷಣಗಳ (ಉದಾ: ರೋಗಿಯ ಜಾತಿ, ಲಿಂಗ ಅಥವಾ ವಯಸ್ಸು) ನಡುವೆ ಮಾದರಿಯ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ನೋಡಲು ಮುಖ್ಯ, ಏಕೆಂದರೆ ಇದು ಮಾದರಿಯ ಅನ್ಯಾಯವನ್ನು ಬಹಿರಂಗಪಡಿಸಬಹುದು. ಉದಾಹರಣೆಗೆ, ಸಂವೇದನಾಶೀಲ ಲಕ್ಷಣಗಳಿರುವ ಗುಂಪಿನಲ್ಲಿ ಮಾದರಿ ಹೆಚ್ಚು ತಪ್ಪುಗಳನ್ನು ಮಾಡುತ್ತಿರುವುದು ಕಂಡುಬಂದರೆ, ಇದು ಮಾದರಿಯ ಅನ್ಯಾಯವನ್ನು ಸೂಚಿಸುತ್ತದೆ. + +RAI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್‌ನ ಮಾದರಿ ಅವಲೋಕನ ಘಟಕವು ಡೇಟಾ ಪ್ರತಿನಿಧಾನದ ಕಾರ್ಯಕ್ಷಮತೆ metrics ಗಳ ವಿಶ್ಲೇಷಣೆಯಲ್ಲಿ ಮಾತ್ರವಲ್ಲದೆ, ಬಳಕೆದಾರರಿಗೆ ವಿವಿಧ ಗುಂಪುಗಳ ನಡುವೆ ಮಾದರಿಯ ವರ್ತನೆಯನ್ನು ಹೋಲಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. + +![ಡೇಟಾ ಗುಂಪುಗಳು - RAI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್‌ನಲ್ಲಿ ಮಾದರಿ ಅವಲೋಕನ](../../../../translated_images/model-overview-dataset-cohorts.dfa463fb527a35a0afc01b7b012fc87bf2cad756763f3652bbd810cac5d6cf33.kn.png) + +ಘಟಕದ ಲಕ್ಷಣ ಆಧಾರಿತ ವಿಶ್ಲೇಷಣೆ ಕಾರ್ಯಕ್ಷಮತೆ ಬಳಕೆದಾರರಿಗೆ ನಿರ್ದಿಷ್ಟ ಲಕ್ಷಣದ ಒಳಗಿನ ಡೇಟಾ ಉಪಗುಂಪುಗಳನ್ನು ಸಣ್ಣ ಮಟ್ಟದಲ್ಲಿ ಅನಾಮಲಿಗಳನ್ನು ಗುರುತಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಬಳಕೆದಾರರು ಆಯ್ಕೆಮಾಡಿದ ಲಕ್ಷಣಕ್ಕೆ (ಉದಾ: *"time_in_hospital < 3"* ಅಥವಾ *"time_in_hospital >= 7"*) ಗುಂಪುಗಳನ್ನು ರಚಿಸುತ್ತದೆ. ಇದು ಬಳಕೆದಾರರಿಗೆ ದೊಡ್ಡ ಡೇಟಾ ಗುಂಪಿನಿಂದ ನಿರ್ದಿಷ್ಟ ಲಕ್ಷಣವನ್ನು ವಿಭಜಿಸಿ, ಅದು ಮಾದರಿಯ ತಪ್ಪು ಫಲಿತಾಂಶಗಳಿಗೆ ಪ್ರಮುಖ ಕಾರಣವಾಗಿದೆಯೇ ಎಂದು ನೋಡಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. + +![ಲಕ್ಷಣ ಗುಂಪುಗಳು - RAI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್‌ನಲ್ಲಿ ಮಾದರಿ ಅವಲೋಕನ](../../../../translated_images/model-overview-feature-cohorts.c5104d575ffd0c80b7ad8ede7703fab6166bfc6f9125dd395dcc4ace2f522f70.kn.png) + +ಮಾದರಿ ಅವಲೋಕನ ಘಟಕವು ಎರಡು ವರ್ಗದ ವ್ಯತ್ಯಾಸ metrics ಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ: + +**ಮಾದರಿ ಕಾರ್ಯಕ್ಷಮತೆಯಲ್ಲಿ ವ್ಯತ್ಯಾಸ**: ಈ metrics ಗಳ ಸೆಟ್ ಆಯ್ಕೆಮಾಡಲಾದ ಕಾರ್ಯಕ್ಷಮತೆ ಅಳತೆಯ ಮೌಲ್ಯಗಳಲ್ಲಿ ಉಪಗುಂಪುಗಳ ನಡುವೆ ವ್ಯತ್ಯಾಸ (ತಾರತಮ್ಯ) ಲೆಕ್ಕಹಾಕುತ್ತದೆ. ಕೆಲವು ಉದಾಹರಣೆಗಳು: + +* ಶುದ್ಧತೆ ದರದಲ್ಲಿ ವ್ಯತ್ಯಾಸ +* ದೋಷ ದರದಲ್ಲಿ ವ್ಯತ್ಯಾಸ +* ಪ್ರೆಸಿಷನ್‌ನಲ್ಲಿ ವ್ಯತ್ಯಾಸ +* ರಿಕಾಲ್‌ನಲ್ಲಿ ವ್ಯತ್ಯಾಸ +* ಸರಾಸರಿ ಪರಮಾಣು ದೋಷ (MAE) ನಲ್ಲಿ ವ್ಯತ್ಯಾಸ + +**ಆಯ್ಕೆ ದರದಲ್ಲಿ ವ್ಯತ್ಯಾಸ**: ಈ metric ಉಪಗುಂಪುಗಳ ನಡುವೆ ಆಯ್ಕೆ ದರ (ಅನುಕೂಲ ಭವಿಷ್ಯವಾಣಿ) ಯ ವ್ಯತ್ಯಾಸವನ್ನು ಹೊಂದಿದೆ. ಉದಾಹರಣೆಗೆ ಸಾಲ ಮಂಜೂರಾತಿ ದರಗಳಲ್ಲಿ ವ್ಯತ್ಯಾಸ. ಆಯ್ಕೆ ದರ ಎಂದರೆ ಪ್ರತಿ ವರ್ಗದಲ್ಲಿ 1 (ದ್ವಿಪದ ವರ್ಗೀಕರಣದಲ್ಲಿ) ಎಂದು ವರ್ಗೀಕರಿಸಲ್ಪಟ್ಟ ಡೇಟಾ ಅಂಶಗಳ ಭಾಗ ಅಥವಾ ಭವಿಷ್ಯವಾಣಿ ಮೌಲ್ಯಗಳ ವಿತರಣೆ (ರೆಗ್ರೆಷನ್‌ನಲ್ಲಿ). + +## ಡೇಟಾ ವಿಶ್ಲೇಷಣೆ + +> "ನೀವು ಡೇಟಾವನ್ನು ಸಾಕಷ್ಟು ಕಾಲ ಹಿಂಸಿಸಿದರೆ, ಅದು ಯಾವುದಕ್ಕೂ ಒಪ್ಪಿಕೊಳ್ಳುತ್ತದೆ" - ರೋನಾಲ್ಡ್ ಕೋಸ್ + +ಈ ಹೇಳಿಕೆ ತೀವ್ರವಾಗಿದ್ದರೂ, ಡೇಟಾವನ್ನು ಯಾವುದೇ ನಿರ್ಣಯವನ್ನು ಬೆಂಬಲಿಸಲು ಮರುರೂಪಗೊಳಿಸಬಹುದು ಎಂಬುದು ಸತ್ಯ. ಇಂತಹ ಮರುರೂಪಣೆಯು ಕೆಲವೊಮ್ಮೆ ಅನೈಚ್ಛಿಕವಾಗಿ ಸಂಭವಿಸಬಹುದು. ನಾವು ಮಾನವರಾಗಿ ಎಲ್ಲರೂ ಪೂರ್ವಗ್ರಹ ಹೊಂದಿದ್ದೇವೆ, ಮತ್ತು ನೀವು ಡೇಟಾದಲ್ಲಿ ಪೂರ್ವಗ್ರಹವನ್ನು ಪರಿಚಯಿಸುತ್ತಿದ್ದೀರಾ ಎಂದು ಜಾಗೃತಿಯಿಂದ ತಿಳಿದುಕೊಳ್ಳುವುದು ಕಷ್ಟ. AI ಮತ್ತು ಯಂತ್ರ ಅಧ್ಯಯನದಲ್ಲಿ ನ್ಯಾಯತೆಯನ್ನು ಖಚಿತಪಡಿಸುವುದು ಸಂಕೀರ್ಣ ಸವಾಲಾಗಿದೆ. + +ಡೇಟಾ ಪರಂಪರাগত ಮಾದರಿ ಕಾರ್ಯಕ್ಷಮತೆ metrics ಗಾಗಿ ದೊಡ್ಡ ಅಂಧ ಪ್ರದೇಶವಾಗಿದೆ. ನೀವು ಹೆಚ್ಚಿನ ಶುದ್ಧತೆ ಅಂಕಗಳನ್ನು ಹೊಂದಿರಬಹುದು, ಆದರೆ ಇದು ನಿಮ್ಮ ಡೇಟಾ ಸೆಟ್‌ನಲ್ಲಿ ಇರುವ ಅಡಗಿದ ಪೂರ್ವಗ್ರಹವನ್ನು ಪ್ರತಿಬಿಂಬಿಸುವುದಿಲ್ಲ. ಉದಾಹರಣೆಗೆ, ಒಂದು ಕಂಪನಿಯ ಉದ್ಯೋಗಿಗಳ ಡೇಟಾ ಸೆಟ್‌ನಲ್ಲಿ 27% ಮಹಿಳೆಯರು ಕಾರ್ಯನಿರ್ವಹಣಾ ಹುದ್ದೆಗಳಲ್ಲಿ ಇದ್ದರೆ ಮತ್ತು 73% ಪುರುಷರು ಅದೇ ಹುದ್ದೆಯಲ್ಲಿ ಇದ್ದರೆ, ಈ ಡೇಟಾದ ಮೇಲೆ ತರಬೇತಿಗೊಂಡ ಉದ್ಯೋಗ ಜಾಹೀರಾತು AI ಮಾದರಿ ಹಿರಿಯ ಹುದ್ದೆಗಳಿಗಾಗಿ ಮುಖ್ಯವಾಗಿ ಪುರುಷರನ್ನು ಗುರಿಯಾಗಿಸಬಹುದು. ಈ ಅಸಮಾನತೆ ಮಾದರಿಯ ಭವಿಷ್ಯವಾಣಿಯನ್ನು ಒಂದು ಲಿಂಗಕ್ಕೆ ಪ್ರಾಧಾನ್ಯ ನೀಡುವಂತೆ ತಿರುಗಿಸಿದೆ. ಇದು AI ಮಾದರಿಯಲ್ಲಿ ಲಿಂಗ ಪೂರ್ವಗ್ರಹದ ನ್ಯಾಯತೆ ಸಮಸ್ಯೆಯನ್ನು ಬಹಿರಂಗಪಡಿಸುತ್ತದೆ. + +RAI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್‌ನ ಡೇಟಾ ವಿಶ್ಲೇಷಣೆ ಘಟಕವು ಡೇಟಾ ಸೆಟ್‌ನಲ್ಲಿ ಅತಿವ್ಯಕ್ತ ಮತ್ತು ಅಲ್ಪಪ್ರತಿನಿಧಾನ ಇರುವ ಪ್ರದೇಶಗಳನ್ನು ಗುರುತಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಇದು ಬಳಕೆದಾರರಿಗೆ ದೋಷಗಳು ಮತ್ತು ನ್ಯಾಯತೆ ಸಮಸ್ಯೆಗಳ ಮೂಲ ಕಾರಣವನ್ನು ಡೇಟಾ ಅಸಮಾನತೆಗಳಿಂದ ಅಥವಾ ನಿರ್ದಿಷ್ಟ ಡೇಟಾ ಗುಂಪಿನ ಪ್ರತಿನಿಧಾನದ ಕೊರತೆಯಿಂದ ಕಂಡುಹಿಡಿಯಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಇದು ಭವಿಷ್ಯವಾಣಿ ಮತ್ತು ನಿಜವಾದ ಫಲಿತಾಂಶಗಳ ಆಧಾರದ ಮೇಲೆ, ದೋಷ ಗುಂಪುಗಳು ಮತ್ತು ನಿರ್ದಿಷ್ಟ ಲಕ್ಷಣಗಳ ಆಧಾರದ ಮೇಲೆ ಡೇಟಾ ಸೆಟ್‌ಗಳನ್ನು ದೃಶ್ಯೀಕರಿಸಲು ಬಳಕೆದಾರರಿಗೆ ಸಾಮರ್ಥ್ಯ ನೀಡುತ್ತದೆ. ಕೆಲವೊಮ್ಮೆ ಅಲ್ಪಪ್ರತಿನಿಧಿತ ಡೇಟಾ ಗುಂಪನ್ನು ಕಂಡುಹಿಡಿಯುವುದರಿಂದ ಮಾದರಿ ಚೆನ್ನಾಗಿ ಕಲಿಯುತ್ತಿಲ್ಲ ಎಂದು ಬಹಿರಂಗವಾಗಬಹುದು, ಆದ್ದರಿಂದ ಹೆಚ್ಚಿನ ದೋಷಗಳು. ಡೇಟಾ ಪೂರ್ವಗ್ರಹ ಹೊಂದಿರುವ ಮಾದರಿ ಕೇವಲ ನ್ಯಾಯತೆ ಸಮಸ್ಯೆಯಲ್ಲ, ಅದು ಒಳಗೊಂಡ ಅಥವಾ ನಂಬಿಕಯೋಗ್ಯವಲ್ಲದ ಮಾದರಿಯನ್ನೂ ತೋರಿಸುತ್ತದೆ. + +![RAI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್‌ನ ಡೇಟಾ ವಿಶ್ಲೇಷಣೆ ಘಟಕ](../../../../translated_images/dataanalysis-cover.8d6d0683a70a5c1e274e5a94b27a71137e3d0a3b707761d7170eb340dd07f11d.kn.png) + +ನೀವು ಡೇಟಾ ವಿಶ್ಲೇಷಣೆಯನ್ನು ಬಳಸಬೇಕಾಗಿರುವಾಗ: + +* ವಿಭಿನ್ನ ಫಿಲ್ಟರ್‌ಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ ನಿಮ್ಮ ಡೇಟಾವನ್ನು ವಿಭಿನ್ನ ಆಯಾಮಗಳಲ್ಲಿ (ಗುಂಪುಗಳಾಗಿ) ವಿಭಜಿಸಿ ನಿಮ್ಮ ಡೇಟಾ ಅಂಕಿಅಂಶಗಳನ್ನು ಅನ್ವೇಷಿಸಿ. +* ವಿಭಿನ್ನ ಗುಂಪುಗಳು ಮತ್ತು ಲಕ್ಷಣ ಗುಂಪುಗಳ ಮೂಲಕ ನಿಮ್ಮ ಡೇಟಾ ವಿತರಣೆಯನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಿ. +* ನ್ಯಾಯತೆ, ದೋಷ ವಿಶ್ಲೇಷಣೆ ಮತ್ತು ಕಾರಣಾತ್ಮಕತೆ (ಇತರ ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ ಘಟಕಗಳಿಂದ ಪಡೆದ) ಸಂಬಂಧಿತ ನಿಮ್ಮ ಕಂಡುಹಿಡಿತಗಳು ನಿಮ್ಮ ಡೇಟಾ ವಿತರಣೆಯ ಫಲಿತಾಂಶವಾಗಿದೆಯೇ ಎಂದು ನಿರ್ಧರಿಸಿ. +* ಪ್ರತಿನಿಧಾನ ಸಮಸ್ಯೆಗಳು, ಲೇಬಲ್ ಶಬ್ದ, ಲಕ್ಷಣ ಶಬ್ದ, ಲೇಬಲ್ ಪೂರ್ವಗ್ರಹ ಮತ್ತು ಇತರ ಕಾರಣಗಳಿಂದ ಉಂಟಾಗುವ ದೋಷಗಳನ್ನು ತಗ್ಗಿಸಲು ಹೆಚ್ಚಿನ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸುವ ಪ್ರದೇಶಗಳನ್ನು ನಿರ್ಧರಿಸಿ. + +## ಮಾದರಿ ವಿವರಣೆ + +ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಗಳು ಸಾಮಾನ್ಯವಾಗಿ ಕಪ್ಪು ಪೆಟ್ಟಿಗೆಗಳಾಗಿವೆ. ಯಾವ ಪ್ರಮುಖ ಡೇಟಾ ಲಕ್ಷಣಗಳು ಮಾದರಿಯ ಭವಿಷ್ಯವಾಣಿಯನ್ನು ಚಾಲನೆ ಮಾಡುತ್ತವೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಸವಾಲಾಗಿರುತ್ತದೆ. ಮಾದರಿ ಏಕೆ ನಿರ್ದಿಷ್ಟ ಭವಿಷ್ಯವಾಣಿ ಮಾಡುತ್ತದೆ ಎಂಬುದಕ್ಕೆ ಪಾರದರ್ಶಕತೆ ಒದಗಿಸುವುದು ಮುಖ್ಯ. ಉದಾಹರಣೆಗೆ, AI ವ್ಯವಸ್ಥೆ ಒಂದು ಮಧುಮೇಹ ರೋಗಿಯು 30 ದಿನಗಳಲ್ಲಿ ಆಸ್ಪತ್ರೆಗೆ ಮರುಪ್ರವೇಶಿಸುವ ಅಪಾಯದಲ್ಲಿದ್ದಾನೆ ಎಂದು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿದರೆ, ಅದರ ಭವಿಷ್ಯವಾಣಿಗೆ ಕಾರಣವಾದ ಬೆಂಬಲಿಸುವ ಡೇಟಾವನ್ನು ಒದಗಿಸಬೇಕು. ಬೆಂಬಲಿಸುವ ಡೇಟಾ ಸೂಚಕಗಳು ಪಾರದರ್ಶಕತೆಯನ್ನು ತರಲು ಸಹಾಯ ಮಾಡುತ್ತವೆ, ಇದರಿಂದ ವೈದ್ಯರು ಅಥವಾ ಆಸ್ಪತ್ರೆಗಳು ಚೆನ್ನಾಗಿ ತಿಳಿದ ನಿರ್ಧಾರಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಬಹುದು. ಜೊತೆಗೆ, ವ್ಯಕ್ತಿಗತ ರೋಗಿಗೆ ಮಾದರಿ ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿದ ಕಾರಣವನ್ನು ವಿವರಿಸುವುದು ಆರೋಗ್ಯ ನಿಯಮಾವಳಿಗಳೊಂದಿಗೆ ಹೊಣೆಗಾರಿಕೆಯನ್ನು ಒದಗಿಸುತ್ತದೆ. ಜನರ ಜೀವನವನ್ನು ಪ್ರಭಾವಿಸುವ ರೀತಿಯಲ್ಲಿ ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಗಳನ್ನು ಬಳಸುವಾಗ, ಮಾದರಿಯ ವರ್ತನೆಯನ್ನು ಏನು ಪ್ರಭಾವಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಮತ್ತು ವಿವರಿಸುವುದು ಅತ್ಯಂತ ಮುಖ್ಯ. ಮಾದರಿ ವಿವರಣೆ ಮತ್ತು ವ್ಯಾಖ್ಯಾನವು ಕೆಳಗಿನ ಸಂದರ್ಭಗಳಲ್ಲಿ ಪ್ರಶ್ನೆಗಳಿಗೆ ಉತ್ತರ ನೀಡುತ್ತದೆ: + +* ಮಾದರಿ ಡಿಬಗಿಂಗ್: ನನ್ನ ಮಾದರಿ ಈ ತಪ್ಪು ಮಾಡಿದ್ದು ಏಕೆ? ನಾನು ನನ್ನ ಮಾದರಿಯನ್ನು ಹೇಗೆ ಸುಧಾರಿಸಬಹುದು? +* ಮಾನವ-AI ಸಹಕಾರ: ನಾನು ಮಾದರಿಯ ನಿರ್ಧಾರಗಳನ್ನು ಹೇಗೆ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಿ ಮತ್ತು ನಂಬಬಹುದು? +* ನಿಯಂತ್ರಣ ಅನುಕೂಲತೆ: ನನ್ನ ಮಾದರಿ ಕಾನೂನು ಅಗತ್ಯಗಳನ್ನು ಪೂರೈಸುತ್ತದೆಯೇ? + +RAI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್‌ನ ಲಕ್ಷಣ ಮಹತ್ವ ಘಟಕವು ನಿಮ್ಮನ್ನು ಡಿಬಗ್ ಮಾಡಲು ಮತ್ತು ಮಾದರಿ ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ಹೇಗೆ ಮಾಡುತ್ತದೆ ಎಂಬುದರ ಸಮಗ್ರ ಅರ್ಥವನ್ನು ಪಡೆಯಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಇದು ಯಂತ್ರ ಅಧ್ಯಯನ ವೃತ್ತಿಪರರು ಮತ್ತು ನಿರ್ಧಾರಗಾರರಿಗೆ ನಿಯಂತ್ರಣ ಅನುಕೂಲತೆಯಿಗಾಗಿ ಮಾದರಿಯ ವರ್ತನೆಯನ್ನು ಪ್ರಭಾವಿಸುವ ಲಕ್ಷಣಗಳನ್ನು ವಿವರಿಸಲು ಮತ್ತು ಸಾಕ್ಷ್ಯವನ್ನು ತೋರಿಸಲು ಉಪಯುಕ್ತ ಸಾಧನವಾಗಿದೆ. ನಂತರ, ಬಳಕೆದಾರರು ಜಾಗತಿಕ ಮತ್ತು ಸ್ಥಳೀಯ ವಿವರಣೆಗಳನ್ನು ಅನ್ವೇಷಿಸಿ ಯಾವ ಲಕ್ಷಣಗಳು ಮಾದರಿಯ ಭವಿಷ್ಯವಾಣಿಯನ್ನು ಚಾಲನೆ ಮಾಡುತ್ತವೆ ಎಂದು ಪರಿಶೀಲಿಸಬಹುದು. ಜಾಗತಿಕ ವಿವರಣೆಗಳು ಮಾದರಿಯ ಒಟ್ಟು ಭವಿಷ್ಯವಾಣಿಯನ್ನು ಪ್ರಭಾವಿಸಿದ ಪ್ರಮುಖ ಲಕ್ಷಣಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡುತ್ತವೆ. ಸ್ಥಳೀಯ ವಿವರಣೆಗಳು ವ್ಯಕ್ತಿಗತ ಪ್ರಕರಣಕ್ಕೆ ಮಾದರಿ ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿದ ಲಕ್ಷಣಗಳನ್ನು ತೋರಿಸುತ್ತವೆ. ಸ್ಥಳೀಯ ವಿವರಣೆಗಳನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡುವುದು ನಿರ್ದಿಷ್ಟ ಪ್ರಕರಣವನ್ನು ಡಿಬಗ್ ಅಥವಾ ಪರಿಶೀಲಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ, ಏಕೆಂದರೆ ಇದು ಮಾದರಿ ಸರಿಯಾದ ಅಥವಾ ತಪ್ಪು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿದ ಕಾರಣವನ್ನು ಉತ್ತಮವಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. + +![RAI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್‌ನ ಲಕ್ಷಣ ಮಹತ್ವ ಘಟಕ](../../../../translated_images/9-feature-importance.cd3193b4bba3fd4bccd415f566c2437fb3298c4824a3dabbcab15270d783606e.kn.png) + +* ಜಾಗತಿಕ ವಿವರಣೆಗಳು: ಉದಾಹರಣೆಗೆ, ಮಧುಮೇಹ ಆಸ್ಪತ್ರೆ ಮರುಪ್ರವೇಶ ಮಾದರಿಯ ಒಟ್ಟು ವರ್ತನೆಯನ್ನು ಯಾವ ಲಕ್ಷಣಗಳು ಪ್ರಭಾವಿಸುತ್ತವೆ? +* ಸ್ಥಳೀಯ ವಿವರಣೆಗಳು: ಉದಾಹರಣೆಗೆ, 60 ವರ್ಷಕ್ಕಿಂತ ಮೇಲ್ಪಟ್ಟ ಮಧುಮೇಹ ರೋಗಿಯು 30 ದಿನಗಳಲ್ಲಿ ಮರುಪ್ರವೇಶಿಸುವ ಅಥವಾ ಮರುಪ್ರವೇಶಿಸದಿರುವ ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿದ್ದು ಏಕೆ? + +ವಿಭಿನ್ನ ಗುಂಪುಗಳಲ್ಲಿನ ಮಾದರಿ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಪರಿಶೀಲಿಸುವ ಡಿಬಗಿಂಗ್ ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿ, ಲಕ್ಷಣ ಮಹತ್ವವು ಗುಂಪುಗಳಲ್ಲಿ ಲಕ್ಷಣದ ಪ್ರಭಾವದ ಮಟ್ಟವನ್ನು ತೋರಿಸುತ್ತದೆ. ಇದು ಮಾದರಿಯ ತಪ್ಪು ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ಚಾಲನೆ ಮಾಡುವ ಲಕ್ಷಣದ ಪ್ರಭಾವದ ಮಟ್ಟವನ್ನು ಹೋಲಿಸುವಾಗ ಅನಾಮಲಿಗಳನ್ನು ಬಹಿರಂಗಪಡಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಲಕ್ಷಣ ಮಹತ್ವ ಘಟಕವು ಲಕ್ಷಣದ ಮೌಲ್ಯಗಳು ಮಾದರಿಯ ಫಲಿತಾಂಶವನ್ನು ಧನಾತ್ಮಕ ಅಥವಾ ಋಣಾತ್ಮಕವಾಗಿ ಪ್ರಭಾವಿಸಿದವು ಎಂದು ತೋರಿಸಬಹುದು. ಉದಾಹರಣೆಗೆ, ಮಾದರಿ ತಪ್ಪು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿದರೆ, ಈ ಘಟಕವು ನೀವು ಆ ಭವಿಷ್ಯವಾಣಿಯನ್ನು ಚಾಲನೆ ಮಾಡಿದ ಲಕ್ಷಣಗಳು ಅಥವಾ ಲಕ್ಷಣ ಮೌಲ್ಯಗಳನ್ನು ವಿವರಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಈ ಮಟ್ಟದ ವಿವರವು ಡಿಬಗಿಂಗ್ ಮಾತ್ರವಲ್ಲದೆ ಪರಿಶೀಲನೆ ಪರಿಸ್ಥಿತಿಗಳಲ್ಲಿ ಪಾರದರ್ಶಕತೆ ಮತ್ತು ಹೊಣೆಗಾರಿಕೆಯನ್ನು ಒದಗಿಸುತ್ತದೆ. ಕೊನೆಗೆ, ಈ ಘಟಕವು ನ್ಯಾಯತೆ ಸಮಸ್ಯೆಗಳನ್ನು ಗುರುತಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಜಾತಿ ಅಥವಾ ಲಿಂಗದಂತಹ ಸಂವೇದನಾಶೀಲ ಲಕ್ಷಣವು ಮಾದರಿಯ ಭವಿಷ್ಯವಾಣಿಯನ್ನು ಹೆಚ್ಚು ಪ್ರಭಾವಿಸಿದರೆ, ಇದು ಮಾದರಿಯಲ್ಲಿ ಜಾತಿ ಅಥವಾ ಲಿಂಗ ಪೂರ್ವಗ್ರಹದ ಸೂಚನೆ ಆಗಬಹುದು. + +![ಲಕ್ಷಣ ಮಹತ್ವ](../../../../translated_images/9-features-influence.3ead3d3f68a84029f1e40d3eba82107445d3d3b6975d4682b23d8acc905da6d0.kn.png) + +ನೀವು ವಿವರಣಾತ್ಮಕತೆಯನ್ನು ಬಳಸಬೇಕಾಗಿರುವಾಗ: + +* ನಿಮ್ಮ AI ವ್ಯವಸ್ಥೆಯ ಭವಿಷ್ಯವಾಣಿಗಳು ಎಷ್ಟು ನಂಬಿಕಯೋಗ್ಯವೋ ತಿಳಿದುಕೊಳ್ಳಲು ಯಾವ ಲಕ್ಷಣಗಳು ಭವಿಷ್ಯವಾಣಿಗೆ ಅತ್ಯಂತ ಮುಖ್ಯವೋ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಿ. +* ಮೊದಲು ಅದನ್ನು ಅರ್ಥಮಾಡಿಕೊಂಡು ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ಡಿಬಗ್ ಮಾಡಲು, ಮಾದರಿ ಆರೋಗ್ಯಕರ ಲಕ್ಷಣಗಳನ್ನು ಬಳಸುತ್ತಿದೆಯೇ ಅಥವಾ ತಪ್ಪು ಸಂಬಂಧಗಳನ್ನು ಮಾತ್ರ ಬಳಸುತ್ತಿದೆಯೇ ಎಂದು ಗುರುತಿಸಿ. +* ಸಂವೇದನಾಶೀಲ ಲಕ್ಷಣಗಳ ಮೇಲೆ ಅಥವಾ ಅವುಗಳಿಗೆ ಹೆಚ್ಚು ಸಂಬಂಧಿಸಿದ ಲಕ್ಷಣಗಳ ಮೇಲೆ ಆಧಾರಿತ ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ಮಾಡುತ್ತಿರುವುದರಿಂದ ಅನ್ಯಾಯದ ಮೂಲಗಳನ್ನು ಬಹಿರಂಗಪಡಿಸಿ. +* ಸ್ಥಳೀಯ ವಿವರಣೆಗಳನ್ನು ರಚಿಸಿ ನಿಮ್ಮ ಮಾದರಿಯ ನಿರ್ಧಾರಗಳಲ್ಲಿ ಬಳಕೆದಾರರ ನಂಬಿಕೆಯನ್ನು ನಿರ್ಮಿಸಿ. +* AI ವ್ಯವಸ್ಥೆಯ ನಿಯಂತ್ರಣ ಪರಿಶೀಲನೆಯನ್ನು ಪೂರ್ಣಗೊಳಿಸಿ, ಮಾದರಿಗಳನ್ನು ಮಾನವರ ಮೇಲೆ ಮಾದರಿ ನಿರ್ಧಾರಗಳ ಪ್ರಭಾವವನ್ನು ಪರಿಶೀಲಿಸಿ. + +## ಸಮಾರೋಪ + +ಎಲ್ಲಾ RAI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ ಘಟಕಗಳು ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಗಳನ್ನು ಸಮಾಜಕ್ಕೆ ಕಡಿಮೆ ಹಾನಿಕರ ಮತ್ತು ಹೆಚ್ಚು ನಂಬಿಕಯೋಗ್ಯವಾಗುವಂತೆ ನಿರ್ಮಿಸಲು ಸಹಾಯ ಮಾಡುವ ಪ್ರಾಯೋಗಿಕ ಸಾಧನಗಳಾಗಿವೆ. ಇದು ಮಾನವ ಹಕ್ಕುಗಳಿಗೆ ಹಾನಿ ತಡೆಯಲು; ಕೆಲವು ಗುಂಪುಗಳನ್ನು ಜೀವನಾವಕಾಶಗಳಿಂದ ಭೇದಭಾವ ಅಥವಾ ಹೊರತುಪಡಿಸುವುದನ್ನು ತಡೆಯಲು; ಮತ್ತು ದೈಹಿಕ ಅಥವಾ ಮಾನಸಿಕ ಗಾಯದ ಅಪಾಯವನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಇದು ಸ್ಥಳೀಯ ವಿವರಣೆಗಳನ್ನು ರಚಿಸಿ ನಿಮ್ಮ ಮಾದರಿಯ ನಿರ್ಧಾರಗಳಲ್ಲಿ ನಂಬಿಕೆಯನ್ನು ನಿರ್ಮಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಕೆಲವು ಸಾಧ್ಯ ಹಾನಿಗಳನ್ನು ಈ ಕೆಳಗಿನಂತೆ ವರ್ಗೀಕರಿಸಬಹುದು: + +- **ಹಂಚಿಕೆ**, ಉದಾಹರಣೆಗೆ ಲಿಂಗ ಅಥವಾ ಜಾತಿ ಒಂದರಿಗಿಂತ ಮತ್ತೊಂದರಿಗಿಂತ ಪ್ರಾಧಾನ್ಯ ನೀಡಿದರೆ. +- **ಸೇವೆಯ ಗುಣಮಟ್ಟ**. ನೀವು ಒಂದು ನಿರ್ದಿಷ್ಟ ಸಂದರ್ಭಕ್ಕಾಗಿ ಡೇಟಾವನ್ನು ತರಬೇತಿಗೊಳಿಸಿದರೆ ಆದರೆ ವಾಸ್ತವಿಕತೆ ಹೆಚ್ಚು ಸಂಕೀರ್ಣವಾಗಿದ್ದರೆ, ಅದು ದೌರ್ಬಲ್ಯಪೂರ್ಣ ಸೇವೆಗೆ ಕಾರಣವಾಗುತ್ತದೆ. +- **ಸ್ಟೀರಿಯೋಟೈಪಿಂಗ್**. ನಿರ್ದಿಷ್ಟ ಗುಂಪನ್ನು ಪೂರ್ವನಿಯೋಜಿತ ಗುಣಲಕ್ಷಣಗಳೊಂದಿಗೆ ಸಂಯೋಜಿಸುವುದು. +- **ನಿಂದನೆ**. ಅನ್ಯಾಯವಾಗಿ ವಿಮರ್ಶೆ ಮಾಡುವುದು ಮತ್ತು ಏನಾದರೂ ಅಥವಾ ಯಾರಾದರೂ ಲೇಬಲ್ ಮಾಡುವುದು. +- **ಅತಿಯಾದ ಅಥವಾ ಕಡಿಮೆ ಪ್ರತಿನಿಧಾನ**. ಒಂದು ನಿರ್ದಿಷ್ಟ ಗುಂಪು ನಿರ್ದಿಷ್ಟ ವೃತ್ತಿಯಲ್ಲಿ ಕಾಣಿಸಿಕೊಳ್ಳುವುದಿಲ್ಲ ಎಂಬ ಕಲ್ಪನೆ, ಮತ್ತು ಅದನ್ನು ಪ್ರೋತ್ಸಾಹಿಸುವ ಯಾವುದೇ ಸೇವೆ ಅಥವಾ ಕಾರ್ಯವು ಹಾನಿಗೆ ಕಾರಣವಾಗುತ್ತದೆ. + +### ಅಜೂರ್ RAI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ + +[ಅಜೂರ್ RAI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್](https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) ಮುಕ್ತ ಮೂಲ ಸಾಧನಗಳ ಮೇಲೆ ನಿರ್ಮಿಸಲಾಗಿದೆ, ಇದನ್ನು ಪ್ರಮುಖ ಶೈಕ್ಷಣಿಕ ಸಂಸ್ಥೆಗಳು ಮತ್ತು ಮೈಕ್ರೋಸಾಫ್ಟ್ ಸೇರಿದಂತೆ ಸಂಸ್ಥೆಗಳು ಅಭಿವೃದ್ಧಿಪಡಿಸಿದ್ದವು, ಮತ್ತು ಡೇಟಾ ವಿಜ್ಞಾನಿಗಳು ಮತ್ತು AI ಅಭಿವೃದ್ಧಿಪಡಿಸುವವರು ಮಾದರಿ ವರ್ತನೆಯನ್ನು ಉತ್ತಮವಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು, AI ಮಾದರಿಗಳಿಂದ ಅಕಾಮ್ಯ ಸಮಸ್ಯೆಗಳನ್ನು ಕಂಡುಹಿಡಿದು ನಿವಾರಿಸಲು ಸಹಾಯಕವಾಗಿವೆ. + +- RAI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ [ಡಾಕ್ಯುಮೆಂಟೇಶನ್](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) ಪರಿಶೀಲಿಸಿ ವಿಭಿನ್ನ ಘಟಕಗಳನ್ನು ಹೇಗೆ ಬಳಸುವುದು ಎಂದು ತಿಳಿಯಿರಿ. + +- ಅಜೂರ್ ಮೆಷಿನ್ ಲರ್ನಿಂಗ್‌ನಲ್ಲಿ ಹೆಚ್ಚು ಜವಾಬ್ದಾರಿಯುತ AI ದೃಶ್ಯಾವಳಿಗಳನ್ನು ಡಿಬಗ್ ಮಾಡಲು ಕೆಲವು RAI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ [ನಮೂನಾ ನೋಟ್ಬುಕ್‌ಗಳು](https://github.com/Azure/RAI-vNext-Preview/tree/main/examples/notebooks) ಪರಿಶೀಲಿಸಿ. + +--- +## 🚀 ಸವಾಲು + +ಸಾಂಖ್ಯಿಕ ಅಥವಾ ಡೇಟಾ ಪಾಕ್ಷಿಕತೆಗಳನ್ನು ಮೊದಲಿನಿಂದಲೇ ಪರಿಹರಿಸಲು, ನಾವು: + +- ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ ಕೆಲಸ ಮಾಡುವ ಜನರ ನಡುವೆ ವೈವಿಧ್ಯಮಯ ಹಿನ್ನೆಲೆ ಮತ್ತು ದೃಷ್ಟಿಕೋನಗಳನ್ನು ಹೊಂದಿರಬೇಕು +- ನಮ್ಮ ಸಮಾಜದ ವೈವಿಧ್ಯತೆಯನ್ನು ಪ್ರತಿಬಿಂಬಿಸುವ ಡೇಟಾಸೆಟ್‌ಗಳಲ್ಲಿ ಹೂಡಿಕೆ ಮಾಡಬೇಕು +- ಪಾಕ್ಷಿಕತೆ ಸಂಭವಿಸಿದಾಗ ಅದನ್ನು ಪತ್ತೆಹಚ್ಚಲು ಮತ್ತು ಸರಿಪಡಿಸಲು ಉತ್ತಮ ವಿಧಾನಗಳನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಬೇಕು + +ಮಾದರಿ ನಿರ್ಮಾಣ ಮತ್ತು ಬಳಕೆಯಲ್ಲಿ ಅನ್ಯಾಯ ಸ್ಪಷ್ಟವಾಗಿರುವ ನೈಜ ಜೀವನದ ದೃಶ್ಯಾವಳಿಗಳನ್ನು ಯೋಚಿಸಿ. ಇನ್ನೇನು ಪರಿಗಣಿಸಬೇಕು? + +## [ಪಾಠೋತ್ತರ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) +## ವಿಮರ್ಶೆ ಮತ್ತು ಸ್ವಯಂ ಅಧ್ಯಯನ + +ಈ ಪಾಠದಲ್ಲಿ, ನೀವು ಜವಾಬ್ದಾರಿಯುತ AI ಅನ್ನು ಮೆಷಿನ್ ಲರ್ನಿಂಗ್‌ನಲ್ಲಿ ಸೇರಿಸುವ ಕೆಲವು ಪ್ರಾಯೋಗಿಕ ಸಾಧನಗಳನ್ನು ಕಲಿತಿದ್ದೀರಿ. + +ಈ ವಿಷಯಗಳಲ್ಲಿ ಇನ್ನಷ್ಟು ಆಳವಾಗಿ ತಿಳಿಯಲು ಈ ಕಾರ್ಯಾಗಾರವನ್ನು ವೀಕ್ಷಿಸಿ: + +- ಜವಾಬ್ದಾರಿಯುತ AI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್: Besmira Nushi ಮತ್ತು Mehrnoosh Sameki ಅವರಿಂದ RAI ಅನ್ನು ಪ್ರಾಯೋಗಿಕವಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸುವ ಒಟ್ಟು ಪರಿಹಾರ + +[![ಜವಾಬ್ದಾರಿಯುತ AI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್: Besmira Nushi ಮತ್ತು Mehrnoosh Sameki ಅವರಿಂದ RAI ಅನ್ನು ಪ್ರಾಯೋಗಿಕವಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸುವ ಒಟ್ಟು ಪರಿಹಾರ](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](https://www.youtube.com/watch?v=f1oaDNl3djg "ಜವಾಬ್ದಾರಿಯುತ AI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್: Besmira Nushi ಮತ್ತು Mehrnoosh Sameki ಅವರಿಂದ RAI ಅನ್ನು ಪ್ರಾಯೋಗಿಕವಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸುವ ಒಟ್ಟು ಪರಿಹಾರ") + +> 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ ವೀಡಿಯೋ ನೋಡಲು: Besmira Nushi ಮತ್ತು Mehrnoosh Sameki ಅವರಿಂದ ಜವಾಬ್ದಾರಿಯುತ AI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್: RAI ಅನ್ನು ಪ್ರಾಯೋಗಿಕವಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸುವ ಒಟ್ಟು ಪರಿಹಾರ + +ಜವಾಬ್ದಾರಿಯುತ AI ಮತ್ತು ಹೆಚ್ಚು ನಂಬಿಗಸ್ತ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸುವ ಬಗ್ಗೆ ಇನ್ನಷ್ಟು ತಿಳಿಯಲು ಕೆಳಗಿನ ವಸ್ತುಗಳನ್ನು ಉಲ್ಲೇಖಿಸಿ: + +- ಮೈಕ್ರೋಸಾಫ್ಟ್‌ನ RAI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ ಸಾಧನಗಳು ML ಮಾದರಿಗಳನ್ನು ಡಿಬಗ್ ಮಾಡಲು: [Responsible AI tools resources](https://aka.ms/rai-dashboard) + +- ಜವಾಬ್ದಾರಿಯುತ AI ಟೂಲ್‌ಕಿಟ್ ಅನ್ವೇಷಿಸಿ: [Github](https://github.com/microsoft/responsible-ai-toolbox) + +- ಮೈಕ್ರೋಸಾಫ್ಟ್‌ನ RAI ಸಂಪನ್ಮೂಲ ಕೇಂದ್ರ: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) + +- ಮೈಕ್ರೋಸಾಫ್ಟ್‌ನ FATE ಸಂಶೋಧನಾ ಗುಂಪು: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) + +## ನಿಯೋಜನೆ + +[RAI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ ಅನ್ವೇಷಿಸಿ](assignment.md) + +--- + + +**ಅಸ್ವೀಕಾರ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವಾಗಿ ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/9-Real-World/2-Debugging-ML-Models/assignment.md b/translations/kn/9-Real-World/2-Debugging-ML-Models/assignment.md new file mode 100644 index 000000000..b00112775 --- /dev/null +++ b/translations/kn/9-Real-World/2-Debugging-ML-Models/assignment.md @@ -0,0 +1,27 @@ + +# ಜವಾಬ್ದಾರಿಯುತ AI (RAI) ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ ಅನ್ವೇಷಣೆ + +## ಸೂಚನೆಗಳು + +ಈ ಪಾಠದಲ್ಲಿ ನೀವು RAI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ ಬಗ್ಗೆ ಕಲಿತಿರಿ, ಇದು "ಮುಕ್ತ ಮೂಲ" ಸಾಧನಗಳ ಮೇಲೆ ನಿರ್ಮಿತ ಘಟಕಗಳ ಸರಣಿ ಆಗಿದ್ದು, ಡೇಟಾ ವಿಜ್ಞಾನಿಗಳಿಗೆ AI ವ್ಯವಸ್ಥೆಗಳ ಮೇಲೆ ದೋಷ ವಿಶ್ಲೇಷಣೆ, ಡೇಟಾ ಅನ್ವೇಷಣೆ, ನ್ಯಾಯತೀರ್ಮಾನ ಮೌಲ್ಯಮಾಪನ, ಮಾದರಿ ವಿವರಣೆ, ಪ್ರತಿಕೂಲ/ಯಾವುದಾದರೂ-ಆಯ್ಕೆ ಮೌಲ್ಯಮಾಪನ ಮತ್ತು ಕಾರಣಾತ್ಮಕ ವಿಶ್ಲೇಷಣೆ ನಡೆಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ." ಈ ಕಾರ್ಯಕ್ಕಾಗಿ, RAI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್‌ನ ಕೆಲವು ಮಾದರಿ [ನೋಟ್ಬುಕ್‌ಗಳು](https://github.com/Azure/RAI-vNext-Preview/tree/main/examples/notebooks) ಅನ್ವೇಷಿಸಿ ಮತ್ತು ನಿಮ್ಮ ಕಂಡುಹಿಡಿತಗಳನ್ನು ಒಂದು ಪತ್ರಿಕೆ ಅಥವಾ ಪ್ರಸ್ತುತಿಯಲ್ಲಿ ವರದಿ ಮಾಡಿ. + +## ಮೌಲ್ಯಮಾಪನ ಮಾನದಂಡ + +| ಮಾನದಂಡ | ಉದಾತ್ತ | ತೃಪ್ತಿಕರ | ಸುಧಾರಣೆಯ ಅಗತ್ಯವಿದೆ | +| -------- | --------- | -------- | ----------------- | +| | RAI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್‌ನ ಘಟಕಗಳು, ಚಾಲನೆಯಲ್ಲಿದ್ದ ನೋಟ್ಬುಕ್ ಮತ್ತು ಅದನ್ನು ಚಾಲನೆ ಮಾಡಿದ ನಂತರ ಪಡೆದ ನಿರ್ಣಯಗಳನ್ನು ಚರ್ಚಿಸುವ ಪತ್ರಿಕೆ ಅಥವಾ ಪವರ್‌ಪಾಯಿಂಟ್ ಪ್ರಸ್ತುತಿ ನೀಡಲಾಗಿದೆ | ನಿರ್ಣಯಗಳಿಲ್ಲದೆ ಪತ್ರಿಕೆ ನೀಡಲಾಗಿದೆ | ಯಾವುದೇ ಪತ್ರಿಕೆ ನೀಡಲಾಗಿಲ್ಲ | + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/9-Real-World/README.md b/translations/kn/9-Real-World/README.md new file mode 100644 index 000000000..edbca8fc4 --- /dev/null +++ b/translations/kn/9-Real-World/README.md @@ -0,0 +1,34 @@ + +# ಪೋಸ್ಟ್‌ಸ್ಕ್ರಿಪ್ಟ್: ಕ್ಲಾಸಿಕ್ ಮೆಷಿನ್ ಲರ್ನಿಂಗ್‌ನ ನೈಜ ಜಗತ್ತಿನ ಅನ್ವಯಿಕೆಗಳು + +ಪಠ್ಯಕ್ರಮದ ಈ ವಿಭಾಗದಲ್ಲಿ, ನೀವು ಶ್ರೇಷ್ಟ ML ನ ಕೆಲವು ನೈಜ ಜಗತ್ತಿನ ಅನ್ವಯಿಕೆಗಳನ್ನು ಪರಿಚಯಿಸಿಕೊಳ್ಳುತ್ತೀರಿ. ನಾವು ಇಂಟರ್ನೆಟ್ ಅನ್ನು ಹುಡುಕಿ ಈ ತಂತ್ರಗಳನ್ನು ಬಳಸಿದ ಅನ್ವಯಿಕೆಗಳ ಬಗ್ಗೆ ಶ್ವೇತಪತ್ರಗಳು ಮತ್ತು ಲೇಖನಗಳನ್ನು ಕಂಡುಹಿಡಿದಿದ್ದೇವೆ, ನ್ಯೂರಲ್ ನೆಟ್‌ವರ್ಕ್‌ಗಳು, ಡೀಪ್ ಲರ್ನಿಂಗ್ ಮತ್ತು AI ಅನ್ನು ಸಾಧ್ಯವಾದಷ್ಟು ತಪ್ಪಿಸಿ. ವ್ಯವಹಾರ ವ್ಯವಸ್ಥೆಗಳು, ಪರಿಸರ ಅನ್ವಯಿಕೆಗಳು, ಹಣಕಾಸು, ಕಲೆ ಮತ್ತು ಸಂಸ್ಕೃತಿ ಮತ್ತು ಇನ್ನಷ್ಟು ಕ್ಷೇತ್ರಗಳಲ್ಲಿ ML ಹೇಗೆ ಬಳಸಲಾಗುತ್ತದೆ ಎಂಬುದನ್ನು ತಿಳಿಯಿರಿ. + +![chess](../../../translated_images/chess.e704a268781bdad85d1876b6c2295742fa0d856e7dcf3659147052df9d3db205.kn.jpg) + +> ಫೋಟೋ Alexis Fauvet ಅವರಿಂದ Unsplash ನಲ್ಲಿ + +## ಪಾಠ + +1. [ML ಗಾಗಿ ನೈಜ ಜಗತ್ತಿನ ಅನ್ವಯಿಕೆಗಳು](1-Applications/README.md) +2. [ಜವಾಬ್ದಾರಿಯುತ AI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ ಘಟಕಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಮೆಷಿನ್ ಲರ್ನಿಂಗ್‌ನಲ್ಲಿ ಮಾದರಿ ಡಿಬಗಿಂಗ್](2-Debugging-ML-Models/README.md) + +## ಕ್ರೆಡಿಟ್‌ಗಳು + +"ನೈಜ ಜಗತ್ತಿನ ಅನ್ವಯಿಕೆಗಳು" ಅನ್ನು [ಜೆನ್ ಲೂಪರ್](https://twitter.com/jenlooper) ಮತ್ತು [ಒರ್ನೆಲ್ಲಾ ಅಲ್ಟುನ್ಯಾನ್](https://twitter.com/ornelladotcom) ಸೇರಿದಂತೆ ತಂಡದವರು ಬರೆಯಲಾಗಿದೆ. + +"ಜವಾಬ್ದಾರಿಯುತ AI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ ಘಟಕಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಮೆಷಿನ್ ಲರ್ನಿಂಗ್‌ನಲ್ಲಿ ಮಾದರಿ ಡಿಬಗಿಂಗ್" ಅನ್ನು [ರೂತ್ ಯಾಕುಬು](https://twitter.com/ruthieyakubu) ಬರೆಯಲಾಗಿದೆ. + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/AGENTS.md b/translations/kn/AGENTS.md new file mode 100644 index 000000000..29da05998 --- /dev/null +++ b/translations/kn/AGENTS.md @@ -0,0 +1,347 @@ + +# AGENTS.md + +## Project Overview + +ಇದು **ಆರಂಭಿಕರಿಗಾಗಿ ಯಂತ್ರ ಅಧ್ಯಯನ**, ಪೈಥಾನ್ (ಮುಖ್ಯವಾಗಿ ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ ಬಳಸಿ) ಮತ್ತು R ಬಳಸಿ ಕ್ಲಾಸಿಕ್ ಯಂತ್ರ ಅಧ್ಯಯನ ತತ್ವಗಳನ್ನು ಒಳಗೊಂಡ 12 ವಾರಗಳ, 26 ಪಾಠಗಳ ಸಮಗ್ರ ಪಠ್ಯಕ್ರಮವಾಗಿದೆ. ಈ ರೆಪೊಸಿಟರಿ ಸ್ವಯಂ-ಗತಿಗತ ಅಧ್ಯಯನ ಸಂಪನ್ಮೂಲವಾಗಿ ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ, ಕೈಯಿಂದ ಮಾಡುವ ಯೋಜನೆಗಳು, ಪ್ರಶ್ನೋತ್ತರಗಳು ಮತ್ತು ನಿಯೋಜನೆಗಳೊಂದಿಗೆ. ಪ್ರತಿ ಪಾಠವು ವಿಶ್ವದ ವಿವಿಧ ಸಂಸ್ಕೃತಿಗಳು ಮತ್ತು ಪ್ರದೇಶಗಳಿಂದ ನೈಜ-ಜಗತ್ತಿನ ಡೇಟಾ ಮೂಲಕ ಯಂತ್ರ ಅಧ್ಯಯನ ತತ್ವಗಳನ್ನು ಅನ್ವೇಷಿಸುತ್ತದೆ. + +ಮುಖ್ಯ ಅಂಶಗಳು: +- **ಶೈಕ್ಷಣಿಕ ವಿಷಯ**: ಯಂತ್ರ ಅಧ್ಯಯನ ಪರಿಚಯ, ರಿಗ್ರೆಶನ್, ವರ್ಗೀಕರಣ, ಗುಂಪುಬದ್ಧತೆ, NLP, ಕಾಲ ಸರಣಿ, ಮತ್ತು ಬಲವರ್ಧಿತ ಅಧ್ಯಯನವನ್ನು ಒಳಗೊಂಡ 26 ಪಾಠಗಳು +- **ಪ್ರಶ್ನೋತ್ತರ ಅಪ್ಲಿಕೇಶನ್**: ಪೂರ್ವ ಮತ್ತು ನಂತರದ ಪಾಠ ಮೌಲ್ಯಮಾಪನಗಳೊಂದಿಗೆ Vue.js ಆಧಾರಿತ ಪ್ರಶ್ನೋತ್ತರ ಅಪ್ಲಿಕೇಶನ್ +- **ಬಹುಭಾಷಾ ಬೆಂಬಲ**: GitHub Actions ಮೂಲಕ 40+ ಭಾಷೆಗಳಿಗೆ ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳು +- **ದ್ವಿಭಾಷಾ ಬೆಂಬಲ**: ಪಾಠಗಳು ಪೈಥಾನ್ (ಜುಪಿಟರ್ ನೋಟ್ಬುಕ್‌ಗಳು) ಮತ್ತು R (R ಮಾರ್ಕ್‌ಡೌನ್ ಫೈಲ್‌ಗಳು) ಎರಡಲ್ಲಿಯೂ ಲಭ್ಯವಿವೆ +- **ಯೋಜನೆ ಆಧಾರಿತ ಅಧ್ಯಯನ**: ಪ್ರತಿ ವಿಷಯದಲ್ಲಿ ಪ್ರಾಯೋಗಿಕ ಯೋಜನೆಗಳು ಮತ್ತು ನಿಯೋಜನೆಗಳಿವೆ + +## Repository Structure + +``` +ML-For-Beginners/ +├── 1-Introduction/ # ML basics, history, fairness, techniques +├── 2-Regression/ # Regression models with Python/R +├── 3-Web-App/ # Flask web app for ML model deployment +├── 4-Classification/ # Classification algorithms +├── 5-Clustering/ # Clustering techniques +├── 6-NLP/ # Natural Language Processing +├── 7-TimeSeries/ # Time series forecasting +├── 8-Reinforcement/ # Reinforcement learning +├── 9-Real-World/ # Real-world ML applications +├── quiz-app/ # Vue.js quiz application +├── translations/ # Auto-generated translations +└── sketchnotes/ # Visual learning aids +``` + +ಪ್ರತಿ ಪಾಠ ಫೋಲ್ಡರ್ ಸಾಮಾನ್ಯವಾಗಿ ಒಳಗೊಂಡಿರುತ್ತದೆ: +- `README.md` - ಮುಖ್ಯ ಪಾಠ ವಿಷಯ +- `notebook.ipynb` - ಪೈಥಾನ್ ಜುಪಿಟರ್ ನೋಟ್ಬುಕ್ +- `solution/` - ಪರಿಹಾರ ಕೋಡ್ (ಪೈಥಾನ್ ಮತ್ತು R ಆವೃತ್ತಿಗಳು) +- `assignment.md` - ಅಭ್ಯಾಸ ವ್ಯಾಯಾಮಗಳು +- `images/` - ದೃಶ್ಯ ಸಂಪನ್ಮೂಲಗಳು + +## Setup Commands + +### For Python Lessons + +ಬಹುತೇಕ ಪಾಠಗಳು ಜುಪಿಟರ್ ನೋಟ್ಬುಕ್‌ಗಳನ್ನು ಬಳಸುತ್ತವೆ. ಅಗತ್ಯವಿರುವ ಅವಲಂಬನೆಗಳನ್ನು ಸ್ಥಾಪಿಸಿ: + +```bash +# ಈಗಾಗಲೇ ಸ್ಥಾಪಿಸಲಾಗದಿದ್ದರೆ Python 3.8+ ಅನ್ನು ಸ್ಥಾಪಿಸಿ +python --version + +# Jupyter ಅನ್ನು ಸ್ಥಾಪಿಸಿ +pip install jupyter + +# ಸಾಮಾನ್ಯ ML ಗ್ರಂಥಾಲಯಗಳನ್ನು ಸ್ಥಾಪಿಸಿ +pip install scikit-learn pandas numpy matplotlib seaborn + +# ನಿರ್ದಿಷ್ಟ ಪಾಠಗಳಿಗೆ, ಪಾಠ-ನಿರ್ದಿಷ್ಟ ಅಗತ್ಯಗಳನ್ನು ಪರಿಶೀಲಿಸಿ +# ಉದಾಹರಣೆ: ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಪಾಠ +pip install flask +``` + +### For R Lessons + +R ಪಾಠಗಳು `solution/R/` ಫೋಲ್ಡರ್‌ಗಳಲ್ಲಿ `.rmd` ಅಥವಾ `.ipynb` ಫೈಲ್‌ಗಳಾಗಿ ಇರುತ್ತವೆ: + +```bash +# R ಮತ್ತು ಅಗತ್ಯ ಪ್ಯಾಕೇಜುಗಳನ್ನು ಸ್ಥಾಪಿಸಿ +# R ಕಾನ್ಸೋಲ್‌ನಲ್ಲಿ: +install.packages(c("tidyverse", "tidymodels", "caret")) +``` + +### For Quiz Application + +ಪ್ರಶ್ನೋತ್ತರ ಅಪ್ಲಿಕೇಶನ್ `quiz-app/` ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ ಇರುವ Vue.js ಅಪ್ಲಿಕೇಶನ್ ಆಗಿದೆ: + +```bash +cd quiz-app +npm install +``` + +### For Documentation Site + +ದಾಖಲೆಗಳನ್ನು ಸ್ಥಳೀಯವಾಗಿ ಚಾಲನೆ ಮಾಡಲು: + +```bash +# ಡಾಕ್ಸಿಫೈ ಅನ್ನು ಸ್ಥಾಪಿಸಿ +npm install -g docsify-cli + +# ರೆಪೊಸಿಟರಿ ರೂಟ್‌ನಿಂದ ಸೇವೆ ನೀಡಿ +docsify serve + +# http://localhost:3000 ನಲ್ಲಿ ಪ್ರವೇಶಿಸಿ +``` + +## Development Workflow + +### Working with Lesson Notebooks + +1. ಪಾಠ ಡೈರೆಕ್ಟರಿಗೆ ನಾವಿಗೇಟ್ ಮಾಡಿ (ಉದಾ: `2-Regression/1-Tools/`) +2. ಜುಪಿಟರ್ ನೋಟ್ಬುಕ್ ತೆರೆಯಿರಿ: + ```bash + jupyter notebook notebook.ipynb + ``` +3. ಪಾಠ ವಿಷಯ ಮತ್ತು ವ್ಯಾಯಾಮಗಳನ್ನು ಮಾಡಿ +4. ಅಗತ್ಯವಿದ್ದರೆ `solution/` ಫೋಲ್ಡರ್‌ನಲ್ಲಿ ಪರಿಹಾರಗಳನ್ನು ಪರಿಶೀಲಿಸಿ + +### Python Development + +- ಪಾಠಗಳು ಸಾಮಾನ್ಯ ಪೈಥಾನ್ ಡೇಟಾ ಸೈನ್ಸ್ ಲೈಬ್ರರಿಗಳನ್ನು ಬಳಸುತ್ತವೆ +- ಸಂವಹನಾತ್ಮಕ ಅಧ್ಯಯನಕ್ಕಾಗಿ ಜುಪಿಟರ್ ನೋಟ್ಬುಕ್‌ಗಳು +- ಪ್ರತಿ ಪಾಠದ `solution/` ಫೋಲ್ಡರ್‌ನಲ್ಲಿ ಪರಿಹಾರ ಕೋಡ್ ಲಭ್ಯವಿದೆ + +### R Development + +- R ಪಾಠಗಳು `.rmd` ಫಾರ್ಮ್ಯಾಟ್ (R ಮಾರ್ಕ್‌ಡೌನ್) +- ಪರಿಹಾರಗಳು `solution/R/` ಉಪಡೈರೆಕ್ಟರಿಗಳಲ್ಲಿ ಇರುತ್ತವೆ +- R ನೋಟ್ಬುಕ್‌ಗಳನ್ನು ಚಾಲನೆ ಮಾಡಲು RStudio ಅಥವಾ R ಕರ್ಣಲ್ ಹೊಂದಿರುವ ಜುಪಿಟರ್ ಬಳಸಿ + +### Quiz Application Development + +```bash +cd quiz-app + +# ಅಭಿವೃದ್ಧಿ ಸರ್ವರ್ ಪ್ರಾರಂಭಿಸಿ +npm run serve +# http://localhost:8080 ನಲ್ಲಿ ಪ್ರವೇಶಿಸಿ + +# ಉತ್ಪಾದನೆಗಾಗಿ ನಿರ್ಮಿಸಿ +npm run build + +# ಲಿಂಟ್ ಮಾಡಿ ಮತ್ತು ಫೈಲ್‌ಗಳನ್ನು ಸರಿಪಡಿಸಿ +npm run lint +``` + +## Testing Instructions + +### Quiz Application Testing + +```bash +cd quiz-app + +# ಕೋಡ್ ಲಿಂಟ್ ಮಾಡಿ +npm run lint + +# ದೋಷಗಳಿಲ್ಲದಿರುವುದನ್ನು ಪರಿಶೀಲಿಸಲು ನಿರ್ಮಿಸಿ +npm run build +``` + +**ಗಮನಿಸಿ**: ಇದು ಮುಖ್ಯವಾಗಿ ಶೈಕ್ಷಣಿಕ ಪಠ್ಯಕ್ರಮ ರೆಪೊಸಿಟರಿ. ಪಾಠ ವಿಷಯಕ್ಕೆ ಸ್ವಯಂಚಾಲಿತ ಪರೀಕ್ಷೆಗಳು ಇಲ್ಲ. ಮಾನ್ಯತೆ ಈ ಮೂಲಕ ಮಾಡಲಾಗುತ್ತದೆ: +- ಪಾಠ ವ್ಯಾಯಾಮಗಳನ್ನು ಪೂರ್ಣಗೊಳಿಸುವ ಮೂಲಕ +- ನೋಟ್ಬುಕ್ ಸೆಲ್‌ಗಳನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಚಾಲನೆ ಮಾಡುವ ಮೂಲಕ +- ಪರಿಹಾರಗಳಲ್ಲಿ ನಿರೀಕ್ಷಿತ ಫಲಿತಾಂಶಗಳೊಂದಿಗೆ ಔಟ್‌ಪುಟ್ ಪರಿಶೀಲಿಸುವ ಮೂಲಕ + +## Code Style Guidelines + +### Python Code +- PEP 8 ಶೈಲಿ ಮಾರ್ಗಸೂಚಿಗಳನ್ನು ಅನುಸರಿಸಿ +- ಸ್ಪಷ್ಟ, ವಿವರಣಾತ್ಮಕ ಚರ ನಾಮಗಳನ್ನು ಬಳಸಿ +- ಸಂಕೀರ್ಣ ಕಾರ್ಯಾಚರಣೆಗಳಿಗೆ ಟಿಪ್ಪಣಿಗಳನ್ನು ಸೇರಿಸಿ +- ಜುಪಿಟರ್ ನೋಟ್ಬುಕ್‌ಗಳಲ್ಲಿ ತತ್ವಗಳನ್ನು ವಿವರಿಸುವ ಮಾರ್ಕ್‌ಡೌನ್ ಸೆಲ್‌ಗಳು ಇರಬೇಕು + +### JavaScript/Vue.js (Quiz App) +- Vue.js ಶೈಲಿ ಮಾರ್ಗಸೂಚಿಯನ್ನು ಅನುಸರಿಸುತ್ತದೆ +- `quiz-app/package.json` ನಲ್ಲಿ ESLint ಸಂರಚನೆ +- ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಶೀಲಿಸಲು ಮತ್ತು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸರಿಪಡಿಸಲು `npm run lint` ಅನ್ನು ಚಾಲನೆ ಮಾಡಿ + +### Documentation +- ಮಾರ್ಕ್‌ಡೌನ್ ಫೈಲ್‌ಗಳು ಸ್ಪಷ್ಟ ಮತ್ತು ಚೆನ್ನಾಗಿ ರಚಿಸಲ್ಪಟ್ಟಿರಬೇಕು +- ಕೋಡ್ ಉದಾಹರಣೆಗಳನ್ನು ಫೆನ್ಸ್ಡ್ ಕೋಡ್ ಬ್ಲಾಕ್‌ಗಳಲ್ಲಿ ಸೇರಿಸಿ +- ಆಂತರಿಕ ಉಲ್ಲೇಖಗಳಿಗೆ ಸಂಬಂಧಿತ ಲಿಂಕ್‌ಗಳನ್ನು ಬಳಸಿ +- ಇತ್ತೀಚಿನ ಸ್ವರೂಪಣಾ ನಿಯಮಗಳನ್ನು ಅನುಸರಿಸಿ + +## Build and Deployment + +### Quiz Application Deployment + +ಪ್ರಶ್ನೋತ್ತರ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು Azure Static Web Apps ಗೆ ನಿಯೋಜಿಸಬಹುದು: + +1. **ಪೂರ್ವಾಪೇಕ್ಷಿತಗಳು**: + - Azure ಖಾತೆ + - GitHub ರೆಪೊಸಿಟರಿ (ಹಾಗೂ ಫೋರ್ಕ್ ಮಾಡಲಾಗಿದೆ) + +2. **Azure ಗೆ ನಿಯೋಜಿಸಿ**: + - Azure Static Web App ಸಂಪನ್ಮೂಲವನ್ನು ರಚಿಸಿ + - GitHub ರೆಪೊಸಿಟರಿಯನ್ನು ಸಂಪರ್ಕಿಸಿ + - ಅಪ್ಲಿಕೇಶನ್ ಸ್ಥಳವನ್ನು ಸೆಟ್ ಮಾಡಿ: `/quiz-app` + - ಔಟ್‌ಪುಟ್ ಸ್ಥಳವನ್ನು ಸೆಟ್ ಮಾಡಿ: `dist` + - Azure ಸ್ವಯಂಚಾಲಿತವಾಗಿ GitHub Actions ವರ್ಕ್‌ಫ್ಲೋ ರಚಿಸುತ್ತದೆ + +3. **GitHub Actions Workflow**: + - `.github/workflows/azure-static-web-apps-*.yml` ನಲ್ಲಿ ವರ್ಕ್‌ಫ್ಲೋ ಫೈಲ್ ರಚಿಸಲಾಗಿದೆ + - ಮುಖ್ಯ ಶಾಖೆಗೆ ಪುಷ್ ಮಾಡಿದಾಗ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ನಿರ್ಮಿಸಿ ನಿಯೋಜಿಸುತ್ತದೆ + +### Documentation PDF + +ದಾಖಲೆಗಳಿಂದ PDF ರಚಿಸಿ: + +```bash +npm install +npm run convert +``` + +## Translation Workflow + +**ಮುಖ್ಯ**: ಅನುವಾದಗಳು GitHub Actions ಮೂಲಕ Co-op Translator ಬಳಸಿ ಸ್ವಯಂಚಾಲಿತವಾಗಿವೆ. + +- `main` ಶಾಖೆಗೆ ಬದಲಾವಣೆಗಳು ಪುಷ್ ಮಾಡಿದಾಗ ಅನುವಾದಗಳು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ರಚಿಸಲಾಗುತ್ತವೆ +- **ವಿಷಯವನ್ನು ಕೈಯಿಂದ ಅನುವಾದಿಸಬೇಡಿ** - ವ್ಯವಸ್ಥೆ ಇದನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ +- `.github/workflows/co-op-translator.yml` ನಲ್ಲಿ ವರ್ಕ್‌ಫ್ಲೋ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ +- ಅನುವಾದಕ್ಕೆ Azure AI/OpenAI ಸೇವೆಗಳನ್ನು ಬಳಸುತ್ತದೆ +- 40+ ಭಾಷೆಗಳಿಗೆ ಬೆಂಬಲ ನೀಡುತ್ತದೆ + +## Contributing Guidelines + +### For Content Contributors + +1. **ರೆಪೊಸಿಟರಿಯನ್ನು ಫೋರ್ಕ್ ಮಾಡಿ** ಮತ್ತು ಫೀಚರ್ ಶಾಖೆಯನ್ನು ರಚಿಸಿ +2. **ಪಾಠ ವಿಷಯದಲ್ಲಿ ಬದಲಾವಣೆ ಮಾಡಿ** - ಹೊಸ ಪಾಠಗಳನ್ನು ಸೇರಿಸುವಾಗ ಅಥವಾ ನವೀಕರಿಸುವಾಗ +3. **ಅನುವಾದಿತ ಫೈಲ್‌ಗಳನ್ನು ಬದಲಾಯಿಸಬೇಡಿ** - ಅವು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ರಚಿಸಲ್ಪಟ್ಟಿವೆ +4. **ನಿಮ್ಮ ಕೋಡ್ ಪರೀಕ್ಷಿಸಿ** - ಎಲ್ಲಾ ನೋಟ್ಬುಕ್ ಸೆಲ್‌ಗಳು ಯಶಸ್ವಿಯಾಗಿ ಚಾಲನೆ ಆಗುತ್ತವೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ +5. **ಲಿಂಕ್‌ಗಳು ಮತ್ತು ಚಿತ್ರಗಳು ಸರಿಯಾಗಿ ಕೆಲಸ ಮಾಡುತ್ತವೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಿ** +6. **ಸ್ಪಷ್ಟ ವಿವರಣೆಯೊಂದಿಗೆ ಪುಲ್ ರಿಕ್ವೆಸ್ಟ್ ಸಲ್ಲಿಸಿ** + +### Pull Request Guidelines + +- **ಶೀರ್ಷಿಕೆ ಸ್ವರೂಪ**: `[ವಿಭಾಗ] ಬದಲಾವಣೆಗಳ ಸಂಕ್ಷಿಪ್ತ ವಿವರಣೆ` + - ಉದಾ: `[Regression] ಪಾಠ 5 ರಲ್ಲಿ ಟೈಪೋ ಸರಿಪಡಿಸಿ` + - ಉದಾ: `[Quiz-App] ಅವಲಂಬನೆಗಳನ್ನು ನವೀಕರಿಸಿ` +- **ಸಲ್ಲಿಸುವ ಮೊದಲು**: + - ಎಲ್ಲಾ ನೋಟ್ಬುಕ್ ಸೆಲ್‌ಗಳು ದೋಷರಹಿತವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ + - ಪ್ರಶ್ನೋತ್ತರ ಅಪ್ಲಿಕೇಶನ್ ಬದಲಾಯಿಸಿದರೆ `npm run lint` ಅನ್ನು ಚಾಲನೆ ಮಾಡಿ + - ಮಾರ್ಕ್‌ಡೌನ್ ಸ್ವರೂಪಣೆಯನ್ನು ಪರಿಶೀಲಿಸಿ + - ಯಾವುದೇ ಹೊಸ ಕೋಡ್ ಉದಾಹರಣೆಗಳನ್ನು ಪರೀಕ್ಷಿಸಿ +- **PR ನಲ್ಲಿ ಇರಬೇಕಾದವು**: + - ಬದಲಾವಣೆಗಳ ವಿವರಣೆ + - ಬದಲಾವಣೆಗಳ ಕಾರಣ + - UI ಬದಲಾವಣೆಗಳಿದ್ದರೆ ಸ್ಕ್ರೀನ್‌ಶಾಟ್‌ಗಳು +- **ನಡವಳಿಕೆ ನಿಯಮಾವಳಿ**: [Microsoft Open Source Code of Conduct](CODE_OF_CONDUCT.md) ಅನುಸರಿಸಿ +- **CLA**: ನೀವು ಕೊಡುಗೆದಾರರ ಪರವಾನಗಿ ಒಪ್ಪಂದವನ್ನು ಸಹಿ ಮಾಡಬೇಕಾಗುತ್ತದೆ + +## Lesson Structure + +ಪ್ರತಿ ಪಾಠವು ಸुसಂಯೋಜಿತ ಮಾದರಿಯನ್ನು ಅನುಸರಿಸುತ್ತದೆ: + +1. **ಪೂರ್ವ-ವಕ್ತೃತ್ವ ಪ್ರಶ್ನೋತ್ತರ** - ಮೂಲಭೂತ ಜ್ಞಾನವನ್ನು ಪರೀಕ್ಷಿಸಿ +2. **ಪಾಠ ವಿಷಯ** - ಬರಹದ ಸೂಚನೆಗಳು ಮತ್ತು ವಿವರಣೆಗಳು +3. **ಕೋಡ್ ಪ್ರದರ್ಶನಗಳು** - ನೋಟ್ಬುಕ್‌ಗಳಲ್ಲಿ ಕೈಯಿಂದ ಮಾಡುವ ಉದಾಹರಣೆಗಳು +4. **ಜ್ಞಾನ ಪರಿಶೀಲನೆಗಳು** - ಸಂಪೂರ್ಣವಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಪರಿಶೀಲನೆ +5. **ಸವಾಲು** - ತತ್ವಗಳನ್ನು ಸ್ವತಂತ್ರವಾಗಿ ಅನ್ವಯಿಸಿ +6. **ನಿಯೋಜನೆ** - ವಿಸ್ತೃತ ಅಭ್ಯಾಸ +7. **ಪೋಸ್ಟ್-ವಕ್ತೃತ್ವ ಪ್ರಶ್ನೋತ್ತರ** - ಅಧ್ಯಯನ ಫಲಿತಾಂಶಗಳನ್ನು ಅಳೆಯಿರಿ + +## Common Commands Reference + +```bash +# ಪೈಥಾನ್/ಜುಪಿಟರ್ +jupyter notebook # ಜುಪಿಟರ್ ಸರ್ವರ್ ಪ್ರಾರಂಭಿಸಿ +jupyter notebook notebook.ipynb # ನಿರ್ದಿಷ್ಟ ನೋಟ್ಬುಕ್ ತೆರೆಯಿರಿ +pip install -r requirements.txt # ಅವಲಂಬನೆಗಳನ್ನು ಸ್ಥಾಪಿಸಿ (ಲಭ್ಯವಿದ್ದಲ್ಲಿ) + +# ಕ್ವಿಜ್ ಅಪ್ಲಿಕೇಶನ್ +cd quiz-app +npm install # ಅವಲಂಬನೆಗಳನ್ನು ಸ್ಥಾಪಿಸಿ +npm run serve # ಅಭಿವೃದ್ಧಿ ಸರ್ವರ್ +npm run build # ಉತ್ಪಾದನಾ ನಿರ್ಮಾಣ +npm run lint # ಲಿಂಟ್ ಮಾಡಿ ಮತ್ತು ಸರಿಪಡಿಸಿ + +# ಡಾಕ್ಯುಮೆಂಟೇಶನ್ +docsify serve # ಡಾಕ್ಯುಮೆಂಟೇಶನ್ ಅನ್ನು ಸ್ಥಳೀಯವಾಗಿ ಸೇವೆ ಮಾಡಿ +npm run convert # PDF ರಚಿಸಿ + +# ಗಿಟ್ ವರ್ಕ್‌ಫ್ಲೋ +git checkout -b feature/my-change # ವೈಶಿಷ್ಟ್ಯ ಶಾಖೆಯನ್ನು ರಚಿಸಿ +git add . # ಬದಲಾವಣೆಗಳನ್ನು ಹಂತಗೊಳಿಸಿ +git commit -m "Description" # ಬದಲಾವಣೆಗಳನ್ನು ಕಮಿಟ್ ಮಾಡಿ +git push origin feature/my-change # ರಿಮೋಟ್‌ಗೆ ಪುಷ್ ಮಾಡಿ +``` + +## Additional Resources + +- **Microsoft Learn Collection**: [ML for Beginners modules](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +- **Quiz App**: [Online quizzes](https://ff-quizzes.netlify.app/en/ml/) +- **Discussion Board**: [GitHub Discussions](https://github.com/microsoft/ML-For-Beginners/discussions) +- **Video Walkthroughs**: [YouTube Playlist](https://aka.ms/ml-beginners-videos) + +## Key Technologies + +- **Python**: ಯಂತ್ರ ಅಧ್ಯಯನ ಪಾಠಗಳ ಪ್ರಮುಖ ಭಾಷೆ (ಸ್ಕಿಕಿಟ್-ಲರ್ನ್, ಪಾಂಡಾಸ್, ನಂಪೈ, ಮ್ಯಾಟ್‌ಪ್ಲಾಟ್‌ಲಿಬ್) +- **R**: tidyverse, tidymodels, caret ಬಳಸಿ ಪರ್ಯಾಯ ಅನುಷ್ಠಾನ +- **Jupyter**: ಪೈಥಾನ್ ಪಾಠಗಳಿಗಾಗಿ ಸಂವಹನಾತ್ಮಕ ನೋಟ್ಬುಕ್‌ಗಳು +- **R Markdown**: R ಪಾಠಗಳಿಗಾಗಿ ದಾಖಲೆಗಳು +- **Vue.js 3**: ಪ್ರಶ್ನೋತ್ತರ ಅಪ್ಲಿಕೇಶನ್ ಫ್ರೇಮ್ವರ್ಕ್ +- **Flask**: ಯಂತ್ರ ಮಾದರಿ ನಿಯೋಜನೆಗಾಗಿ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಫ್ರೇಮ್ವರ್ಕ್ +- **Docsify**: ಡಾಕ್ಯುಮೆಂಟೇಶನ್ ಸೈಟ್ ಜನರೇಟರ್ +- **GitHub Actions**: ಸಿಐ/ಸಿಡಿ ಮತ್ತು ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳು + +## Security Considerations + +- **ಕೋಡ್‌ನಲ್ಲಿ ಯಾವುದೇ ರಹಸ್ಯಗಳಿಲ್ಲ**: API ಕೀಗಳು ಅಥವಾ ಪ್ರಮಾಣಪತ್ರಗಳನ್ನು ಎಂದಿಗೂ ಕಮಿಟ್ ಮಾಡಬೇಡಿ +- **ಅವಲಂಬನೆಗಳು**: npm ಮತ್ತು pip ಪ್ಯಾಕೇಜುಗಳನ್ನು ನವೀಕರಿಸಿ ಇಡಿ +- **ಬಳಕೆದಾರ ಇನ್‌ಪುಟ್**: Flask ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಉದಾಹರಣೆಗಳಲ್ಲಿ ಮೂಲಭೂತ ಇನ್‌ಪುಟ್ ಮಾನ್ಯತೆ ಇದೆ +- **ಸೂಕ್ಷ್ಮ ಡೇಟಾ**: ಉದಾಹರಣಾ ಡೇಟಾಸೆಟ್‌ಗಳು ಸಾರ್ವಜನಿಕ ಮತ್ತು ಸೂಕ್ಷ್ಮವಲ್ಲ + +## Troubleshooting + +### Jupyter Notebooks + +- **ಕರ್ಣಲ್ ಸಮಸ್ಯೆಗಳು**: ಸೆಲ್‌ಗಳು ಹ್ಯಾಂಗ್ ಆಗಿದ್ದರೆ ಕರ್ಣಲ್ ಮರುಪ್ರಾರಂಭಿಸಿ: Kernel → Restart +- **ಆಮದು ದೋಷಗಳು**: ಎಲ್ಲಾ ಅಗತ್ಯ ಪ್ಯಾಕೇಜುಗಳು pip ಮೂಲಕ ಸ್ಥಾಪಿತವಾಗಿವೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ +- **ಪಥ ಸಮಸ್ಯೆಗಳು**: ನೋಟ್ಬುಕ್‌ಗಳನ್ನು ಅವುಗಳ ಒಳಗೊಂಡಿರುವ ಡೈರೆಕ್ಟರಿಯಿಂದ ಚಾಲನೆ ಮಾಡಿ + +### Quiz Application + +- **npm install ವಿಫಲ**: npm ಕ್ಯಾಶೆ ತೆರವುಗೊಳಿಸಿ: `npm cache clean --force` +- **ಪೋರ್ಟ್ ಸಂಘರ್ಷಗಳು**: ಪೋರ್ಟ್ ಬದಲಾಯಿಸಲು: `npm run serve -- --port 8081` +- **ನಿರ್ಮಾಣ ದೋಷಗಳು**: `node_modules` ಅಳಿಸಿ ಮತ್ತು ಮರುಸ್ಥಾಪಿಸಿ: `rm -rf node_modules && npm install` + +### R Lessons + +- **ಪ್ಯಾಕೇಜ್ ಸಿಗಲಿಲ್ಲ**: ಸ್ಥಾಪಿಸಲು: `install.packages("package-name")` +- **RMarkdown ರೆಂಡರಿಂಗ್**: rmarkdown ಪ್ಯಾಕೇಜ್ ಸ್ಥಾಪಿತವಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ +- **ಕರ್ಣಲ್ ಸಮಸ್ಯೆಗಳು**: ಜುಪಿಟರ್‌ಗೆ IRkernel ಸ್ಥಾಪಿಸಬೇಕಾಗಬಹುದು + +## Project-Specific Notes + +- ಇದು ಮುಖ್ಯವಾಗಿ **ಅಧ್ಯಯನ ಪಠ್ಯಕ್ರಮ**, ಉತ್ಪಾದನಾ ಕೋಡ್ ಅಲ್ಲ +- ಕೈಯಿಂದ ಮಾಡುವ ಅಭ್ಯಾಸದ ಮೂಲಕ **ಯಂತ್ರ ಅಧ್ಯಯನ ತತ್ವಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ** ಮೇಲೆ ಗಮನ +- ಕೋಡ್ ಉದಾಹರಣೆಗಳು **ಸ್ಪಷ್ಟತೆಗಾಗಿ ಆದ್ಯತೆ ನೀಡಲಾಗಿದೆ** +- ಬಹುತೇಕ ಪಾಠಗಳು **ಸ್ವತಂತ್ರವಾಗಿವೆ** ಮತ್ತು ಸ್ವತಃ ಪೂರ್ಣಗೊಳ್ಳಬಹುದು +- **ಪರಿಹಾರಗಳು ಲಭ್ಯವಿವೆ**, ಆದರೆ ಕಲಿಯುವವರು ಮೊದಲು ವ್ಯಾಯಾಮಗಳನ್ನು ಪ್ರಯತ್ನಿಸಬೇಕು +- ರೆಪೊಸಿಟರಿ **Docsify** ಬಳಸಿ ವೆಬ್ ಡಾಕ್ಯುಮೆಂಟೇಶನ್ ಹೊಂದಿದೆ, ನಿರ್ಮಾಣ ಹಂತವಿಲ್ಲದೆ +- **ಸ್ಕೆಚ್‌ನೋಟ್ಸ್** ತತ್ವಗಳ ದೃಶ್ಯ ಸಾರಾಂಶಗಳನ್ನು ಒದಗಿಸುತ್ತವೆ +- **ಬಹುಭಾಷಾ ಬೆಂಬಲ** ವಿಷಯವನ್ನು ಜಾಗತಿಕವಾಗಿ ಲಭ್ಯವನ್ನಾಗಿಸುತ್ತದೆ + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/CODE_OF_CONDUCT.md b/translations/kn/CODE_OF_CONDUCT.md new file mode 100644 index 000000000..ce0cbc92c --- /dev/null +++ b/translations/kn/CODE_OF_CONDUCT.md @@ -0,0 +1,25 @@ + +# ಮೈಕ್ರೋಸಾಫ್ಟ್ ಓಪನ್ ಸೋರ್ಸ್ ನಡವಳಿಕೆ ಸಂಹಿತೆ + +ಈ ಯೋಜನೆ [ಮೈಕ್ರೋಸಾಫ್ಟ್ ಓಪನ್ ಸೋರ್ಸ್ ನಡವಳಿಕೆ ಸಂಹಿತೆ](https://opensource.microsoft.com/codeofconduct/) ಅನ್ನು ಅಂಗೀಕರಿಸಿದೆ. + +ಸಂಪನ್ಮೂಲಗಳು: + +- [ಮೈಕ್ರೋಸಾಫ್ಟ್ ಓಪನ್ ಸೋರ್ಸ್ ನಡವಳಿಕೆ ಸಂಹಿತೆ](https://opensource.microsoft.com/codeofconduct/) +- [ಮೈಕ್ರೋಸಾಫ್ಟ್ ನಡವಳಿಕೆ ಸಂಹಿತೆ FAQ](https://opensource.microsoft.com/codeofconduct/faq/) +- ಪ್ರಶ್ನೆಗಳು ಅಥವಾ ಚಿಂತೆಗಳಿಗಾಗಿ [opencode@microsoft.com](mailto:opencode@microsoft.com) ಸಂಪರ್ಕಿಸಿ + +--- + + +**ಅಸ್ವೀಕಾರ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/CONTRIBUTING.md b/translations/kn/CONTRIBUTING.md new file mode 100644 index 000000000..a4780dbe2 --- /dev/null +++ b/translations/kn/CONTRIBUTING.md @@ -0,0 +1,29 @@ + +# ಕೊಡುಗೆ ನೀಡುವುದು + +ಈ ಯೋಜನೆ ಕೊಡುಗೆಗಳು ಮತ್ತು ಸಲಹೆಗಳನ್ನು ಸ್ವಾಗತಿಸುತ್ತದೆ. ಬಹುತೇಕ ಕೊಡುಗೆಗಳಿಗೆ ನೀವು ಒಪ್ಪಿಕೊಳ್ಳಬೇಕಾಗುತ್ತದೆ +ನೀವು ನಿಮ್ಮ ಕೊಡುಗೆಯನ್ನು ಬಳಸಲು ಹಕ್ಕು ಹೊಂದಿದ್ದೀರಿ ಮತ್ತು ನಿಜವಾಗಿಯೂ ಹಕ್ಕುಗಳನ್ನು ನಮಗೆ ನೀಡುತ್ತೀರಿ ಎಂದು ಘೋಷಿಸುವ ಕೊಡುಗೆದಾರರ ಪರವಾನಗಿ ಒಪ್ಪಂದ (CLA). ವಿವರಗಳಿಗೆ ಭೇಟಿ ನೀಡಿ +https://cla.microsoft.com. + +> ಮಹತ್ವದ ಮಾಹಿತಿ: ಈ ರೆಪೊದಲ್ಲಿ ಪಠ್ಯವನ್ನು ಅನುವಾದಿಸುವಾಗ, ದಯವಿಟ್ಟು ಯಂತ್ರ ಅನುವಾದವನ್ನು ಬಳಸಬೇಡಿ. ನಾವು ಸಮುದಾಯದ ಮೂಲಕ ಅನುವಾದಗಳನ್ನು ಪರಿಶೀಲಿಸುವುದರಿಂದ, ದಯವಿಟ್ಟು ನೀವು ಪರಿಣತಿ ಹೊಂದಿರುವ ಭಾಷೆಗಳಲ್ಲಿ ಮಾತ್ರ ಅನುವಾದಗಳಿಗೆ ಸ್ವಯಂಸೇವಕನಾಗಿ ಸೇರಿ. + +ನೀವು ಪುಲ್ ರಿಕ್ವೆಸ್ಟ್ ಸಲ್ಲಿಸಿದಾಗ, CLA-ಬಾಟ್ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ನೀವು CLA ಒದಗಿಸಬೇಕೇ ಎಂದು ನಿರ್ಧರಿಸಿ PR ಅನ್ನು ಸೂಕ್ತವಾಗಿ ಅಲಂಕರಿಸುತ್ತದೆ (ಉದಾ: ಲೇಬಲ್, ಕಾಮೆಂಟ್). ಬಾಟ್ ನೀಡುವ ಸೂಚನೆಗಳನ್ನು ಅನುಸರಿಸಿ. ನಮ್ಮ CLA ಬಳಸುವ ಎಲ್ಲಾ ರೆಪೊಗಳಲ್ಲಿಯೂ ನೀವು ಇದನ್ನು ಒಂದೇ ಬಾರಿ ಮಾಡಬೇಕಾಗುತ್ತದೆ. + +ಈ ಯೋಜನೆ [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/) ಅನ್ನು ಅಂಗೀಕರಿಸಿದೆ. +ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) ಅನ್ನು ನೋಡಿ +ಅಥವಾ ಯಾವುದೇ ಹೆಚ್ಚುವರಿ ಪ್ರಶ್ನೆಗಳು ಅಥವಾ ಕಾಮೆಂಟ್‌ಗಳಿಗೆ [opencode@microsoft.com](mailto:opencode@microsoft.com) ಸಂಪರ್ಕಿಸಿ. + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/PyTorch_Fundamentals.ipynb b/translations/kn/PyTorch_Fundamentals.ipynb new file mode 100644 index 000000000..e2baf0fb9 --- /dev/null +++ b/translations/kn/PyTorch_Fundamentals.ipynb @@ -0,0 +1,2840 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [], + "gpuType": "T4", + "authorship_tag": "ABX9TyOgv0AozH1FKQBD+RkgT2bV", + "include_colab_link": true + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + }, + "accelerator": "GPU", + "coopTranslator": { + "original_hash": "0ca21b6ee62904d616f2e36dc1cf0da7", + "translation_date": "2025-12-19T16:17:17+00:00", + "source_file": "PyTorch_Fundamentals.ipynb", + "language_code": "kn" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"ಕೋಲಾಬ್‌ನಲ್ಲಿ\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "EHh5JllMh1rG", + "outputId": "f55755ad-c369-414c-85ec-6e9d4f061a02", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + } + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'2.2.1+cu121'" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "string" + } + }, + "metadata": {}, + "execution_count": 1 + } + ], + "source": [ + "import torch\n", + "torch.__version__" + ] + }, + { + "cell_type": "code", + "source": [ + "print(\"I am excited to run this\")" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "UPlb-duwXAfz", + "outputId": "cfd687e4-1238-49f4-ab6b-ee1305b740d2" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "I am excited to run this\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "import torch\n", + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "print(torch.__version__)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "byWVlJ9wXDSk", + "outputId": "fd74a5c4-4d4a-41b2-ef3c-562ea3e4811f" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "2.2.1+cu121\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "# **ಟೆನ್ಸರ್‌ಗಳಿಗೆ ಪರಿಚಯ**\n" + ], + "metadata": { + "id": "Osm80zoEYklS" + } + }, + { + "cell_type": "code", + "source": [ + "# scalar\n", + "scalar = torch.tensor(7)\n", + "scalar" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "-o8wvJ-VXZmI", + "outputId": "558816f5-1205-4de1-fe1f-2f96e9bd79e6" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor(7)" + ] + }, + "metadata": {}, + "execution_count": 4 + } + ] + }, + { + "cell_type": "code", + "source": [ + "scalar.ndim" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "mCZ2tXC4Y_Sg", + "outputId": "2d86dbdc-56e1-45c6-d3dd-14515f2a457a" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0" + ] + }, + "metadata": {}, + "execution_count": 5 + } + ] + }, + { + "cell_type": "code", + "source": [ + "scalar.item()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "ssN00By0ZQgS", + "outputId": "490f40d1-5135-4969-a6d3-c8c902cdc473" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "7" + ] + }, + "metadata": {}, + "execution_count": 6 + } + ] + }, + { + "cell_type": "code", + "source": [ + "# vector\n", + "vector = torch.tensor([7, 7])\n", + "vector\n", + "#vector.ndim\n", + "#vector.item()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Bws__5wlZnmF", + "outputId": "944e38f9-5ba1-4ddc-a9c6-cfb6a19bb488" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([7, 7])" + ] + }, + "metadata": {}, + "execution_count": 7 + } + ] + }, + { + "cell_type": "code", + "source": [ + "vector.shape" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "9pjCvnsZZzNG", + "outputId": "e030a4da-8f81-4858-fbce-86da2aaafe52" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "torch.Size([2])" + ] + }, + "metadata": {}, + "execution_count": 8 + } + ] + }, + { + "cell_type": "code", + "source": [ + "# Matrix\n", + "MATRIX = torch.tensor([[7, 8],[9, 10]])\n", + "MATRIX" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "a747hI9SaBGW", + "outputId": "af835ddb-81ff-4981-badb-441567194d15" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([[ 7, 8],\n", + " [ 9, 10]])" + ] + }, + "metadata": {}, + "execution_count": 9 + } + ] + }, + { + "cell_type": "code", + "source": [ + "MATRIX.ndim" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "XdTfFa7vaRUj", + "outputId": "0fbbab9c-8263-4cad-a380-0d2a16ca499e" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "2" + ] + }, + "metadata": {}, + "execution_count": 10 + } + ] + }, + { + "cell_type": "code", + "source": [ + "MATRIX[0]\n", + "MATRIX[1]" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "TFeD3jSDafm7", + "outputId": "69b44ab3-5ba7-451a-c6b2-f019a03d0c96" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([ 9, 10])" + ] + }, + "metadata": {}, + "execution_count": 11 + } + ] + }, + { + "cell_type": "code", + "source": [ + "# Tensor\n", + "TENSOR = torch.tensor([[[1, 2, 3],[3,6,9], [2,4,5]]])\n", + "TENSOR" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "ic3cE47tah42", + "outputId": "f250e295-91de-43ec-9d80-588a6fe0abde" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([[[1, 2, 3],\n", + " [3, 6, 9],\n", + " [2, 4, 5]]])" + ] + }, + "metadata": {}, + "execution_count": 12 + } + ] + }, + { + "cell_type": "code", + "source": [ + "TENSOR.shape" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Wvjf5fczbAM1", + "outputId": "9c72b5b8-bafe-4ae7-9883-b051e209eada" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "torch.Size([1, 3, 3])" + ] + }, + "metadata": {}, + "execution_count": 13 + } + ] + }, + { + "cell_type": "code", + "source": [ + "TENSOR.ndim" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "mwtXZwiMbN3m", + "outputId": "331a5e36-b1b0-4a5f-a9b8-e7049cbaa8f9" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "3" + ] + }, + "metadata": {}, + "execution_count": 14 + } + ] + }, + { + "cell_type": "code", + "source": [ + "TENSOR[0]" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "vzdZu_IfbP3J", + "outputId": "e24e7e71-e365-412d-ff50-fc094b56d2f3" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([[1, 2, 3],\n", + " [3, 6, 9],\n", + " [2, 4, 5]])" + ] + }, + "metadata": {}, + "execution_count": 15 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "# ಯಾದೃಚ್ಛಿಕ ಟೆನ್ಸರ್\n" + ], + "metadata": { + "id": "A8OL9eWfcRrJ" + } + }, + { + "cell_type": "code", + "source": [ + "random_tensor = torch.rand(3,4)\n", + "random_tensor" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "hAqSDE1EcVS_", + "outputId": "946171c3-d054-400c-f893-79110356888c" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([[0.4414, 0.7681, 0.8385, 0.3166],\n", + " [0.0468, 0.5812, 0.0670, 0.9173],\n", + " [0.2959, 0.3276, 0.7411, 0.4643]])" + ] + }, + "metadata": {}, + "execution_count": 16 + } + ] + }, + { + "cell_type": "code", + "source": [ + "random_tensor.ndim" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "g4fvPE5GcwzP", + "outputId": "8737f36b-6864-4059-eaed-6f9156c22306" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "2" + ] + }, + "metadata": {}, + "execution_count": 17 + } + ] + }, + { + "cell_type": "code", + "source": [ + "random_tensor.shape" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "XsAg99QmdAU6", + "outputId": "35467c11-257c-4f16-99aa-eca930bcbc36" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "torch.Size([3, 4])" + ] + }, + "metadata": {}, + "execution_count": 18 + } + ] + }, + { + "cell_type": "code", + "source": [ + "random_tensor.size()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "cii1pNdVdB68", + "outputId": "fc8d2de6-9215-43de-99f7-7b0d7f7d20fa" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "torch.Size([3, 4])" + ] + }, + "metadata": {}, + "execution_count": 19 + } + ] + }, + { + "cell_type": "code", + "source": [ + "random_image_tensor = torch.rand(size=(3, 224, 224)) #color channels, height, width\n", + "random_image_tensor.ndim, random_image_tensor.shape" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "aTKq2j0cdDjb", + "outputId": "6be42057-20b9-4faf-d79d-8b65c42cc27e" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "(3, torch.Size([3, 224, 224]))" + ] + }, + "metadata": {}, + "execution_count": 20 + } + ] + }, + { + "cell_type": "code", + "source": [ + "random_tensor_ofownsize = torch.rand(size=(5,10,10))\n", + "random_tensor_ofownsize.ndim, random_tensor_ofownsize.shape\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "IyhDdj-Pd6nC", + "outputId": "43e5e334-6d4d-4b67-f87d-7d364c6d8c67" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "(3, torch.Size([5, 10, 10]))" + ] + }, + "metadata": {}, + "execution_count": 21 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "ಶೂನ್ಯಗಳು ಮತ್ತು ಒಂದರ ಟೆನ್ಸರ್\n" + ], + "metadata": { + "id": "UOJW08uOert_" + } + }, + { + "cell_type": "code", + "source": [ + "zero = torch.zeros(size=(3, 4))\n", + "zero" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "uGvXtaXyefie", + "outputId": "d40d3e28-8667-4d2f-8b62-f0829c6162ad" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([[0., 0., 0., 0.],\n", + " [0., 0., 0., 0.],\n", + " [0., 0., 0., 0.]])" + ] + }, + "metadata": {}, + "execution_count": 22 + } + ] + }, + { + "cell_type": "code", + "source": [ + "zero*random_tensor" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "OyUkUPkDe0uH", + "outputId": "26c2e4be-36ba-4c6c-9a90-2704ec135828" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([[0., 0., 0., 0.],\n", + " [0., 0., 0., 0.],\n", + " [0., 0., 0., 0.]])" + ] + }, + "metadata": {}, + "execution_count": 23 + } + ] + }, + { + "cell_type": "code", + "source": [ + "ones = torch.ones(size=(3, 4))\n", + "ones\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "y_Ac62Aqe82G", + "outputId": "291de5d9-b9df-49de-c9d1-d098e3e9f4d8" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([[1., 1., 1., 1.],\n", + " [1., 1., 1., 1.],\n", + " [1., 1., 1., 1.]])" + ] + }, + "metadata": {}, + "execution_count": 24 + } + ] + }, + { + "cell_type": "code", + "source": [ + "ones.dtype" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "TvGOA9odfIEO", + "outputId": "45949ef4-6649-4b6c-d6af-2d4bfb8de832" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "torch.float32" + ] + }, + "metadata": {}, + "execution_count": 25 + } + ] + }, + { + "cell_type": "code", + "source": [ + "ones*zero" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "--pTyge-fI-8", + "outputId": "c4d9bb7e-829b-43db-e2db-b1a2d64e61f0" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([[0., 0., 0., 0.],\n", + " [0., 0., 0., 0.],\n", + " [0., 0., 0., 0.]])" + ] + }, + "metadata": {}, + "execution_count": 26 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "ಟೆನ್ಸರ್‌ಗಳ ವ್ಯಾಪ್ತಿ, ಟೆನ್ಸರ್-ಹೋಲುವದು\n" + ], + "metadata": { + "id": "qDcc7Z36fSJF" + } + }, + { + "cell_type": "code", + "source": [ + "one_to_ten = torch.arange(start = 1, end = 11, step = 1)\n", + "one_to_ten" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "w3CZB4zUfR1s", + "outputId": "197fcba1-da0a-4b4a-ed11-3974bd6c01aa" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])" + ] + }, + "metadata": {}, + "execution_count": 27 + } + ] + }, + { + "cell_type": "code", + "source": [ + "ten_zeros = torch.zeros_like(one_to_ten)\n", + "ten_zeros" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "WZh99BwVfRy8", + "outputId": "51ef8bfb-6fa0-4099-ff66-b97d65b2ddea" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])" + ] + }, + "metadata": {}, + "execution_count": 28 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "ಟೆನ್ಸರ್ ಡೇಟಾಟೈಪ್ಸ್\n" + ], + "metadata": { + "id": "pGGhgsbUgqbW" + } + }, + { + "cell_type": "code", + "source": [ + "float_32_tensor = torch.tensor([3.0, 6.0,9.0], dtype = None, device = None, requires_grad = False)\n", + "float_32_tensor" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "JORJl4XkfRsx", + "outputId": "71114171-0f49-481f-b6fc-6cb48e2fb895" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([3., 6., 9.])" + ] + }, + "metadata": {}, + "execution_count": 29 + } + ] + }, + { + "cell_type": "code", + "source": [ + "float_32_tensor.dtype" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "6wOPPwGyfRLn", + "outputId": "f23776a1-b682-404a-9f67-d5bcb0402666" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "torch.float32" + ] + }, + "metadata": {}, + "execution_count": 30 + } + ] + }, + { + "cell_type": "code", + "source": [ + "float_16_tensor = float_32_tensor.type(torch.float16)\n", + "float_16_tensor.dtype" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "tFsHCvmZfOYe", + "outputId": "d3aa305a-7591-47f5-97fd-61bff60b44bd" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "torch.float16" + ] + }, + "metadata": {}, + "execution_count": 31 + } + ] + }, + { + "cell_type": "code", + "source": [ + "float_16_tensor*float_32_tensor" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "TQiCGTPuwq0q", + "outputId": "98750fce-1ca3-4889-e269-8b753efdea96" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([ 9., 36., 81.])" + ] + }, + "metadata": {}, + "execution_count": 32 + } + ] + }, + { + "cell_type": "code", + "source": [ + "int_32_tensor = torch.tensor([3, 6, 9], dtype = torch.int32)\n", + "int_32_tensor" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "5hlrLvGUw5D_", + "outputId": "41d890a0-9aee-446c-d906-631ce2ab0995" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([3, 6, 9], dtype=torch.int32)" + ] + }, + "metadata": {}, + "execution_count": 33 + } + ] + }, + { + "cell_type": "code", + "source": [ + "int_32_tensor*float_32_tensor" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "ihApD9u3xTNW", + "outputId": "d295eed0-6996-4e0f-8502-ff4b55cd1373" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([ 9., 36., 81.])" + ] + }, + "metadata": {}, + "execution_count": 34 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x = torch.arange(0,100,10)" + ], + "metadata": { + "id": "utKhlb_KxWDQ" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "x" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "p78D74E9Rj7Y", + "outputId": "781a1614-a900-41f5-9e5d-358f0b2390aa" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90])" + ] + }, + "metadata": {}, + "execution_count": 36 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x.min()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "4BcSs5NeRkcj", + "outputId": "3f24a8dc-58e9-4a5f-9834-e85856a34f9d" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor(0)" + ] + }, + "metadata": {}, + "execution_count": 37 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x.max()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "hinqvXVLRm4q", + "outputId": "5c7d8a53-3913-4ac1-bba3-5ba8ff68250a" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor(90)" + ] + }, + "metadata": {}, + "execution_count": 38 + } + ] + }, + { + "cell_type": "code", + "source": [ + "torch.mean(x.type(torch.float32))" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "k7okc0_vRpnB", + "outputId": "91e5494f-dc57-417c-ea4d-25dbc547c893" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor(45.)" + ] + }, + "metadata": {}, + "execution_count": 39 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x.type(torch.float32).mean()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "29QcDTjHRq10", + "outputId": "62937c6c-78e0-49f2-dde3-1543ee8f7907" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor(45.)" + ] + }, + "metadata": {}, + "execution_count": 40 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x.sum()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "wlpY_G_sbdKF", + "outputId": "475d8258-af65-4011-a258-b93d4d8142d4" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor(450)" + ] + }, + "metadata": {}, + "execution_count": 41 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x.argmax()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "GT6HJzwhbk4n", + "outputId": "2e455c20-c322-4bcf-d07c-1259d3ccefc6" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor(9)" + ] + }, + "metadata": {}, + "execution_count": 42 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x.argmin()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "egL3oi2Mb19P", + "outputId": "f71fb32f-6338-44a3-b377-75bea0a3ab54" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor(0)" + ] + }, + "metadata": {}, + "execution_count": 43 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x[0]" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "p2U8DZKib3DP", + "outputId": "b9f613b9-74e9-45f4-ed01-05babb6a6793" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor(0)" + ] + }, + "metadata": {}, + "execution_count": 44 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x[9]" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "24qBFlGYcABe", + "outputId": "5813cfcb-7f63-4bd7-ee46-f95ccbfda939" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor(90)" + ] + }, + "metadata": {}, + "execution_count": 45 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x = torch.arange(1, 10)\n", + "x.shape" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "0GPOxEzkcBHO", + "outputId": "aefbd903-4f4c-4d2c-c90f-eccd682fe018" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "torch.Size([9])" + ] + }, + "metadata": {}, + "execution_count": 46 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x_reshaped = x.reshape(1,9)\n", + "x_reshaped, x_reshaped.shape" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "spmRgQjwddgp", + "outputId": "85a7c55c-2909-4ea2-fc68-386dddc65742" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "(tensor([[1, 2, 3, 4, 5, 6, 7, 8, 9]]), torch.Size([1, 9]))" + ] + }, + "metadata": {}, + "execution_count": 47 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x_reshaped.view(1,9)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "tH2ahWGydqqP", + "outputId": "65d92263-4fc4-434a-c06d-c5e08436f7fe" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([[1, 2, 3, 4, 5, 6, 7, 8, 9]])" + ] + }, + "metadata": {}, + "execution_count": 48 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x_stacked = torch.stack([x, x, x, x], dim = 1)\n", + "x_stacked" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "jgCeJcaud_-1", + "outputId": "7f293a37-6ef1-43b6-aee5-9d6d91c94f9e" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([[1, 1, 1, 1],\n", + " [2, 2, 2, 2],\n", + " [3, 3, 3, 3],\n", + " [4, 4, 4, 4],\n", + " [5, 5, 5, 5],\n", + " [6, 6, 6, 6],\n", + " [7, 7, 7, 7],\n", + " [8, 8, 8, 8],\n", + " [9, 9, 9, 9]])" + ] + }, + "metadata": {}, + "execution_count": 49 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x_stacked.squeeze()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "XhJHIK6cfPse", + "outputId": "06c47b89-3a9e-453e-bcc3-00cbcb0b8b49" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([[1, 1, 1, 1],\n", + " [2, 2, 2, 2],\n", + " [3, 3, 3, 3],\n", + " [4, 4, 4, 4],\n", + " [5, 5, 5, 5],\n", + " [6, 6, 6, 6],\n", + " [7, 7, 7, 7],\n", + " [8, 8, 8, 8],\n", + " [9, 9, 9, 9]])" + ] + }, + "metadata": {}, + "execution_count": 50 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x_stacked.unsqueeze(dim=1)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "ej2c3Xxzf0tq", + "outputId": "94024061-eb37-446d-c4a8-e4d16cb6de81" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([[[1, 1, 1, 1]],\n", + "\n", + " [[2, 2, 2, 2]],\n", + "\n", + " [[3, 3, 3, 3]],\n", + "\n", + " [[4, 4, 4, 4]],\n", + "\n", + " [[5, 5, 5, 5]],\n", + "\n", + " [[6, 6, 6, 6]],\n", + "\n", + " [[7, 7, 7, 7]],\n", + "\n", + " [[8, 8, 8, 8]],\n", + "\n", + " [[9, 9, 9, 9]]])" + ] + }, + "metadata": {}, + "execution_count": 52 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x_stacked.squeeze()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "4DJYo1a0f5M0", + "outputId": "efca2b47-1b14-44de-9a9a-2c83629d153f" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([[1, 1, 1, 1],\n", + " [2, 2, 2, 2],\n", + " [3, 3, 3, 3],\n", + " [4, 4, 4, 4],\n", + " [5, 5, 5, 5],\n", + " [6, 6, 6, 6],\n", + " [7, 7, 7, 7],\n", + " [8, 8, 8, 8],\n", + " [9, 9, 9, 9]])" + ] + }, + "metadata": {}, + "execution_count": 53 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x_stacked.unsqueeze(dim=-2)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "J4iEjn2ah2HL", + "outputId": "22395593-7c16-4162-beae-dd2bbe7bda35" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([[[1, 1, 1, 1]],\n", + "\n", + " [[2, 2, 2, 2]],\n", + "\n", + " [[3, 3, 3, 3]],\n", + "\n", + " [[4, 4, 4, 4]],\n", + "\n", + " [[5, 5, 5, 5]],\n", + "\n", + " [[6, 6, 6, 6]],\n", + "\n", + " [[7, 7, 7, 7]],\n", + "\n", + " [[8, 8, 8, 8]],\n", + "\n", + " [[9, 9, 9, 9]]])" + ] + }, + "metadata": {}, + "execution_count": 55 + } + ] + }, + { + "cell_type": "code", + "source": [ + "import torch\n", + "tensor = torch.tensor([1, 2, 3])\n", + "tensor = tensor - 10\n", + "tensor" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "cFfiD7Nth7Z_", + "outputId": "1139e1f8-fc1a-46ca-d636-f2bc4fd2eef6" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([-9, -8, -7])" + ] + }, + "metadata": {}, + "execution_count": 7 + } + ] + }, + { + "cell_type": "code", + "source": [ + "torch.mul(tensor, 10)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "dyA7BM_GHhqE", + "outputId": "0e3b9671-d9e8-4a32-87bb-59bc05986142" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([-90, -80, -70])" + ] + }, + "metadata": {}, + "execution_count": 9 + } + ] + }, + { + "cell_type": "code", + "source": [ + "torch.sub(tensor, 100)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "owtUsZ1KNegI", + "outputId": "189b7b23-0041-4e09-b991-cd209a48506a" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([-109, -108, -107])" + ] + }, + "metadata": {}, + "execution_count": 10 + } + ] + }, + { + "cell_type": "code", + "source": [ + "torch.add(tensor, 100)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "K5STXlQONsyc", + "outputId": "00cbb79a-0a1d-4e21-86ec-5c91c37a2d01" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([91, 92, 93])" + ] + }, + "metadata": {}, + "execution_count": 11 + } + ] + }, + { + "cell_type": "code", + "source": [ + "torch.divide(tensor, 2)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "xqMGnzIUNvp0", + "outputId": "c894cf3e-f148-45f8-cfc8-d78740735306" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([-4.5000, -4.0000, -3.5000])" + ] + }, + "metadata": {}, + "execution_count": 13 + } + ] + }, + { + "cell_type": "code", + "source": [ + "torch.matmul(tensor, tensor)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "ruGzKpV8NyBc", + "outputId": "fddb63bf-006f-48b6-ae28-287fbcda8bc5" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor(194)" + ] + }, + "metadata": {}, + "execution_count": 15 + } + ] + }, + { + "cell_type": "code", + "source": [ + "tensor@tensor" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "8GS3r9yTeGfD", + "outputId": "c80b12ac-30b5-4f3d-c38c-9e41ba511b0e" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor(194)" + ] + }, + "metadata": {}, + "execution_count": 16 + } + ] + }, + { + "cell_type": "code", + "source": [ + "%%time\n", + "tensor@tensor" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "QmuYHqXTemC0", + "outputId": "402fe3ba-70b5-4bb2-c83b-254db84ff810" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "CPU times: user 622 µs, sys: 0 ns, total: 622 µs\n", + "Wall time: 516 µs\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor(194)" + ] + }, + "metadata": {}, + "execution_count": 17 + } + ] + }, + { + "cell_type": "code", + "source": [ + "%%time\n", + "torch.matmul(tensor,tensor)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "dGr1fzdNepd8", + "outputId": "97bd6c91-bc25-4b38-cdf5-f22dcdef243e" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "CPU times: user 424 µs, sys: 998 µs, total: 1.42 ms\n", + "Wall time: 1.43 ms\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor(194)" + ] + }, + "metadata": {}, + "execution_count": 18 + } + ] + }, + { + "cell_type": "code", + "source": [ + "torch.rand(3,2)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "pGYDoK2gevfo", + "outputId": "2c8783d5-0453-47c5-c7ed-af10d25d6989" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([[0.5999, 0.0073],\n", + " [0.9321, 0.3026],\n", + " [0.3463, 0.3872]])" + ] + }, + "metadata": {}, + "execution_count": 20 + } + ] + }, + { + "cell_type": "code", + "source": [ + "torch.matmul(torch.rand(3,2), torch.rand(2,3))" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "KGBGQoB8e2DP", + "outputId": "4c2ef361-a2d0-41ee-c328-3992cbbc138d" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([[0.3528, 0.1893, 0.0714],\n", + " [1.2791, 0.7110, 0.2563],\n", + " [0.8812, 0.4553, 0.1803]])" + ] + }, + "metadata": {}, + "execution_count": 23 + } + ] + }, + { + "cell_type": "code", + "source": [ + "import torch" + ], + "metadata": { + "id": "ib8DMtkBe_LJ" + }, + "execution_count": 1, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "x = torch.rand(2,9)" + ], + "metadata": { + "id": "nJo8ZBdrQY1b" + }, + "execution_count": 2, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "x" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "wi6oRv4MQfgf", + "outputId": "55c99f55-31f6-4cf5-ba4e-19a47c3a0167" + }, + "execution_count": 3, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([[0.5894, 0.4391, 0.2018, 0.5417, 0.3844, 0.3592, 0.9209, 0.9269, 0.0681],\n", + " [0.0746, 0.1740, 0.6821, 0.6890, 0.0999, 0.7444, 0.2391, 0.4625, 0.8302]])" + ] + }, + "metadata": {}, + "execution_count": 3 + } + ] + }, + { + "cell_type": "code", + "source": [ + "y=torch.randn(2,3,5)\n", + "y" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Zpx8myAUQgoc", + "outputId": "07756d70-56bd-437c-c74e-9aecc1a77311" + }, + "execution_count": 5, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([[[ 1.5552, -0.4877, 0.5175, -1.7958, -0.6187],\n", + " [-0.3359, -1.9710, 0.0112, -1.7578, -1.5295],\n", + " [ 0.0932, 1.4079, 0.9108, 0.3328, -0.6978]],\n", + "\n", + " [[-0.9406, -1.0809, -0.2595, 0.1282, 1.6605],\n", + " [ 1.1624, 1.0902, 1.7092, -0.2842, -1.3780],\n", + " [-0.1534, -1.2795, -0.5495, 0.9902, 0.1822]]])" + ] + }, + "metadata": {}, + "execution_count": 5 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x_original = torch.rand(size=(224,224,3))\n", + "x_original" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "s4U-X9bJQnWe", + "outputId": "657a7a76-962c-4b41-a76b-902d0482266c" + }, + "execution_count": 6, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([[[0.4549, 0.6809, 0.2118],\n", + " [0.4824, 0.9008, 0.8741],\n", + " [0.1715, 0.1757, 0.1845],\n", + " ...,\n", + " [0.8741, 0.6594, 0.2610],\n", + " [0.0092, 0.1984, 0.1955],\n", + " [0.4236, 0.4182, 0.0251]],\n", + "\n", + " [[0.9174, 0.1661, 0.5852],\n", + " [0.1837, 0.2351, 0.3810],\n", + " [0.3726, 0.4808, 0.8732],\n", + " ...,\n", + " [0.6794, 0.0554, 0.9202],\n", + " [0.0864, 0.8750, 0.3558],\n", + " [0.8445, 0.9759, 0.4934]],\n", + "\n", + " [[0.1600, 0.2635, 0.7194],\n", + " [0.9488, 0.3405, 0.3647],\n", + " [0.6683, 0.5168, 0.9592],\n", + " ...,\n", + " [0.0521, 0.0140, 0.2445],\n", + " [0.3596, 0.3999, 0.2730],\n", + " [0.5926, 0.9877, 0.7784]],\n", + "\n", + " ...,\n", + "\n", + " [[0.4794, 0.5635, 0.3764],\n", + " [0.9124, 0.6094, 0.5059],\n", + " [0.4528, 0.4447, 0.5021],\n", + " ...,\n", + " [0.0089, 0.4816, 0.8727],\n", + " [0.2173, 0.6296, 0.2347],\n", + " [0.2028, 0.9931, 0.7201]],\n", + "\n", + " [[0.3116, 0.6459, 0.4703],\n", + " [0.0148, 0.2345, 0.7149],\n", + " [0.8393, 0.5804, 0.6691],\n", + " ...,\n", + " [0.2105, 0.9460, 0.2696],\n", + " [0.5918, 0.9295, 0.2616],\n", + " [0.2537, 0.7819, 0.4700]],\n", + "\n", + " [[0.6654, 0.1200, 0.5841],\n", + " [0.9147, 0.5522, 0.6529],\n", + " [0.1799, 0.5276, 0.5415],\n", + " ...,\n", + " [0.7536, 0.4346, 0.8793],\n", + " [0.3793, 0.1750, 0.7792],\n", + " [0.9266, 0.8325, 0.9974]]])" + ] + }, + "metadata": {}, + "execution_count": 6 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x_permuted=x_original.permute(2, 0, 1)\n", + "print(x_original.shape)\n", + "print(x_permuted.shape)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "DD19_zvbQzHo", + "outputId": "1d64ce1b-eb48-47e3-90b6-7f1340e7f2b2" + }, + "execution_count": 9, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "torch.Size([224, 224, 3])\n", + "torch.Size([3, 224, 224])\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "x_original[0,0,0]" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "NnPmMk4ZRF7w", + "outputId": "2cd5da7f-4a23-4a76-8c4a-bb982113f2a4" + }, + "execution_count": 10, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor(0.4549)" + ] + }, + "metadata": {}, + "execution_count": 10 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x_permuted[0,0,0]" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Z0ylNoAARgTo", + "outputId": "ddca0298-cddf-4048-9b71-a791655e5bed" + }, + "execution_count": 11, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor(0.4549)" + ] + }, + "metadata": {}, + "execution_count": 11 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x_original[0,0,0]=0.989" + ], + "metadata": { + "id": "RXw0xXsDRi4L" + }, + "execution_count": 13, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "x_original[0,0,0]" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "1sFdV6wzRo3f", + "outputId": "1cf87d2c-6d88-453a-d136-0f625a2800f1" + }, + "execution_count": 14, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor(0.9890)" + ] + }, + "metadata": {}, + "execution_count": 14 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x_permuted[0,0,0]" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "xTX-hx2SR1wp", + "outputId": "0d4908c4-c3bc-44e3-8ec6-1487104cc209" + }, + "execution_count": 15, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor(0.9890)" + ] + }, + "metadata": {}, + "execution_count": 15 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x=torch.arange(1,10).reshape(1,3,3)\n", + "x, x.shape" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "mZomOe7gR4Q8", + "outputId": "0b3c922f-ec11-46de-b8a5-9f9533d866ad" + }, + "execution_count": 18, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "(tensor([[[1, 2, 3],\n", + " [4, 5, 6],\n", + " [7, 8, 9]]]),\n", + " torch.Size([1, 3, 3]))" + ] + }, + "metadata": {}, + "execution_count": 18 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x[0]" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "3y7v4SQvSBs1", + "outputId": "8c53307d-e628-404d-db66-56c6bdffab7c" + }, + "execution_count": 19, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([[1, 2, 3],\n", + " [4, 5, 6],\n", + " [7, 8, 9]])" + ] + }, + "metadata": {}, + "execution_count": 19 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x[0][0]" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "hf9uG4xLSNya", + "outputId": "3075bc42-9ffa-426b-8a86-95628ffcd824" + }, + "execution_count": 21, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([1, 2, 3])" + ] + }, + "metadata": {}, + "execution_count": 21 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x[0][0][0]" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "zA4G2Se4SRB3", + "outputId": "324312d2-ed0a-49eb-f81f-e904e53992fe" + }, + "execution_count": 22, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor(1)" + ] + }, + "metadata": {}, + "execution_count": 22 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x[0][2][2]" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Mwy3zmKKSdbk", + "outputId": "d35172c3-b099-40a6-ddf1-a453c2adfa44" + }, + "execution_count": 23, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor(9)" + ] + }, + "metadata": {}, + "execution_count": 23 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x[:,1,1]" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "fE3nCM1KS7XT", + "outputId": "01f5d755-9737-4235-9f73-dce89ff6ba16" + }, + "execution_count": 24, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([5])" + ] + }, + "metadata": {}, + "execution_count": 24 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x[0,0,:]" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "luNDINKNTTxp", + "outputId": "091195ef-2f71-4602-e95f-529a69193150" + }, + "execution_count": 25, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([1, 2, 3])" + ] + }, + "metadata": {}, + "execution_count": 25 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x[0,:,2]" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "KG8A4xbfThCL", + "outputId": "5866bc41-9241-4619-be7b-e9206b3f80ab" + }, + "execution_count": 26, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([3, 6, 9])" + ] + }, + "metadata": {}, + "execution_count": 26 + } + ] + }, + { + "cell_type": "code", + "source": [ + "import numpy as np" + ], + "metadata": { + "id": "CZ3PX0qlTwHJ" + }, + "execution_count": 27, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "array = np.arange(1.0, 8.0)" + ], + "metadata": { + "id": "UOBeTumiT3Lf" + }, + "execution_count": 28, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "array" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "RzcO32E9UCQl", + "outputId": "430def24-c42c-461f-e5e7-398544c695d3" + }, + "execution_count": 29, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([1., 2., 3., 4., 5., 6., 7.])" + ] + }, + "metadata": {}, + "execution_count": 29 + } + ] + }, + { + "cell_type": "code", + "source": [ + "tensor = torch.from_numpy(array)\n", + "tensor" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "JJIL0q1DUC6O", + "outputId": "8a3b1d7c-4482-4d32-f34f-9212d9d3a177" + }, + "execution_count": 32, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([1., 2., 3., 4., 5., 6., 7.], dtype=torch.float64)" + ] + }, + "metadata": {}, + "execution_count": 32 + } + ] + }, + { + "cell_type": "code", + "source": [ + "array[3]=11.0" + ], + "metadata": { + "id": "j3Ce6q3DUIEK" + }, + "execution_count": 33, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "array" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "dc_BCVdjUsCc", + "outputId": "65537325-8b11-4f36-fc73-e56f30d6a036" + }, + "execution_count": 34, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([ 1., 2., 3., 11., 5., 6., 7.])" + ] + }, + "metadata": {}, + "execution_count": 34 + } + ] + }, + { + "cell_type": "code", + "source": [ + "tensor" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "VG1e_eITUta2", + "outputId": "a26c5198-23b6-4a6d-d73a-ba20cd9782b8" + }, + "execution_count": 35, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([ 1., 2., 3., 11., 5., 6., 7.], dtype=torch.float64)" + ] + }, + "metadata": {}, + "execution_count": 35 + } + ] + }, + { + "cell_type": "code", + "source": [ + "tensor = torch.ones(7)\n", + "tensor, tensor.dtype\n", + "numpy_tensor = tensor.numpy()\n", + "numpy_tensor, numpy_tensor.dtype" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Swt8JF8vUuev", + "outputId": "c9e5bf6a-6d2c-41d6-8327-366867ffdd2d" + }, + "execution_count": 37, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "(array([1., 1., 1., 1., 1., 1., 1.], dtype=float32), dtype('float32'))" + ] + }, + "metadata": {}, + "execution_count": 37 + } + ] + }, + { + "cell_type": "code", + "source": [ + "import torch\n", + "random_tensor_A = torch.rand(3,4)\n", + "random_tensor_B = torch.rand(3,4)\n", + "print(random_tensor_A)\n", + "print(random_tensor_B)\n", + "print(random_tensor_A == random_tensor_B)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "uGcagTteVFTD", + "outputId": "49405790-08e7-4210-b7f1-f00b904c7eb9" + }, + "execution_count": 38, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "tensor([[0.9870, 0.6636, 0.6873, 0.8863],\n", + " [0.8386, 0.4169, 0.3587, 0.0265],\n", + " [0.2981, 0.6025, 0.5652, 0.5840]])\n", + "tensor([[0.9821, 0.3481, 0.0913, 0.4940],\n", + " [0.7495, 0.4387, 0.9582, 0.8659],\n", + " [0.5064, 0.6919, 0.0809, 0.9771]])\n", + "tensor([[False, False, False, False],\n", + " [False, False, False, False],\n", + " [False, False, False, False]])\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "RANDOM_SEED = 42\n", + "torch.manual_seed(RANDOM_SEED)\n", + "random_tensor_C = torch.rand(3,4)\n", + "torch.manual_seed(RANDOM_SEED)\n", + "random_tensor_D = torch.rand(3,4)\n", + "print(random_tensor_C)\n", + "print(random_tensor_D)\n", + "print(random_tensor_C == random_tensor_D)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "HznyXyEaWjLM", + "outputId": "25956434-01b6-4059-9054-c9978884ddc1" + }, + "execution_count": 46, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "tensor([[0.8823, 0.9150, 0.3829, 0.9593],\n", + " [0.3904, 0.6009, 0.2566, 0.7936],\n", + " [0.9408, 0.1332, 0.9346, 0.5936]])\n", + "tensor([[0.8823, 0.9150, 0.3829, 0.9593],\n", + " [0.3904, 0.6009, 0.2566, 0.7936],\n", + " [0.9408, 0.1332, 0.9346, 0.5936]])\n", + "tensor([[True, True, True, True],\n", + " [True, True, True, True],\n", + " [True, True, True, True]])\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "!nvidia-smi" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "vltPTh0YXJSt", + "outputId": "807af6dc-a9ca-4301-ec32-b688dbde8be8" + }, + "execution_count": 2, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Thu May 23 02:57:59 2024 \n", + "+---------------------------------------------------------------------------------------+\n", + "| NVIDIA-SMI 535.104.05 Driver Version: 535.104.05 CUDA Version: 12.2 |\n", + "|-----------------------------------------+----------------------+----------------------+\n", + "| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |\n", + "| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |\n", + "| | | MIG M. |\n", + "|=========================================+======================+======================|\n", + "| 0 Tesla T4 Off | 00000000:00:04.0 Off | 0 |\n", + "| N/A 60C P8 11W / 70W | 0MiB / 15360MiB | 0% Default |\n", + "| | | N/A |\n", + "+-----------------------------------------+----------------------+----------------------+\n", + " \n", + "+---------------------------------------------------------------------------------------+\n", + "| Processes: |\n", + "| GPU GI CI PID Type Process name GPU Memory |\n", + "| ID ID Usage |\n", + "|=======================================================================================|\n", + "| No running processes found |\n", + "+---------------------------------------------------------------------------------------+\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "import torch\n", + "torch.cuda.is_available()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "L6mMyPDyYh1j", + "outputId": "279c5dd8-c2a8-4fbd-f321-2f5d7c6e90e6" + }, + "execution_count": 3, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "True" + ] + }, + "metadata": {}, + "execution_count": 3 + } + ] + }, + { + "cell_type": "code", + "source": [ + "device = \"cuda\" if torch.cuda.is_available() else \"cpu\"\n", + "device" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "id": "oOdiYa7ZYytx", + "outputId": "d73b04fc-8963-4826-9722-08d118d5ab91" + }, + "execution_count": 5, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'cuda'" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "string" + } + }, + "metadata": {}, + "execution_count": 5 + } + ] + }, + { + "cell_type": "code", + "source": [ + "torch.cuda.device_count()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "vOdsazLqZFM5", + "outputId": "8189cd6a-9017-4663-a652-3e15c517d9c3" + }, + "execution_count": 6, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "1" + ] + }, + "metadata": {}, + "execution_count": 6 + } + ] + }, + { + "cell_type": "code", + "source": [ + "tensor = torch.tensor([1,2,3], device = \"cpu\")\n", + "print(tensor, tensor.device)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "cdik9Vw3ZMv0", + "outputId": "044a68fd-83a1-409d-8e3b-655142ca0270" + }, + "execution_count": 7, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "tensor([1, 2, 3]) cpu\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "tensor_on_gpu = tensor.to(device)\n", + "tensor_on_gpu" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Zmp835rrZp-z", + "outputId": "37fa3413-18a3-47bf-ae51-5b36ff85a3ef" + }, + "execution_count": 8, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([1, 2, 3], device='cuda:0')" + ] + }, + "metadata": {}, + "execution_count": 8 + } + ] + }, + { + "cell_type": "code", + "source": [ + "tensor_on_gpu.numpy()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 159 + }, + "id": "jhriaa8uZ1yM", + "outputId": "bc5a3226-1a12-4fea-8769-a44f21cdc323" + }, + "execution_count": 10, + "outputs": [ + { + "output_type": "error", + "ename": "TypeError", + "evalue": "can't convert cuda:0 device type tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory first.", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mtensor_on_gpu\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnumpy\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m: can't convert cuda:0 device type tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory first." + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "tensor_on_cpu = tensor_on_gpu.cpu().numpy()" + ], + "metadata": { + "id": "LHGXK3GgaOzL" + }, + "execution_count": 12, + "outputs": [] + }, + { + "cell_type": "code", + "source": [], + "metadata": { + "id": "j-El4LlCajfq" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**ಅಸ್ವೀಕಾರ**: \nಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/kn/README.md b/translations/kn/README.md new file mode 100644 index 000000000..d5820282a --- /dev/null +++ b/translations/kn/README.md @@ -0,0 +1,223 @@ + +[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) + +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/) + +### 🌐 ಬಹುಭಾಷಾ ಬೆಂಬಲ + +#### GitHub ಕ್ರಿಯೆಯಿಂದ ಬೆಂಬಲಿಸಲಾಗಿದೆ (ಸ್ವಯಂಚಾಲಿತ ಮತ್ತು ಸದಾ ನವೀಕರಿಸಲಾಗುತ್ತದೆ) + + +[Arabic](../ar/README.md) | [Bengali](../bn/README.md) | [Bulgarian](../bg/README.md) | [Burmese (Myanmar)](../my/README.md) | [Chinese (Simplified)](../zh/README.md) | [Chinese (Traditional, Hong Kong)](../hk/README.md) | [Chinese (Traditional, Macau)](../mo/README.md) | [Chinese (Traditional, Taiwan)](../tw/README.md) | [Croatian](../hr/README.md) | [Czech](../cs/README.md) | [Danish](../da/README.md) | [Dutch](../nl/README.md) | [Estonian](../et/README.md) | [Finnish](../fi/README.md) | [French](../fr/README.md) | [German](../de/README.md) | [Greek](../el/README.md) | [Hebrew](../he/README.md) | [Hindi](../hi/README.md) | [Hungarian](../hu/README.md) | [Indonesian](../id/README.md) | [Italian](../it/README.md) | [Japanese](../ja/README.md) | [Kannada](./README.md) | [Korean](../ko/README.md) | [Lithuanian](../lt/README.md) | [Malay](../ms/README.md) | [Malayalam](../ml/README.md) | [Marathi](../mr/README.md) | [Nepali](../ne/README.md) | [Nigerian Pidgin](../pcm/README.md) | [Norwegian](../no/README.md) | [Persian (Farsi)](../fa/README.md) | [Polish](../pl/README.md) | [Portuguese (Brazil)](../br/README.md) | [Portuguese (Portugal)](../pt/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Romanian](../ro/README.md) | [Russian](../ru/README.md) | [Serbian (Cyrillic)](../sr/README.md) | [Slovak](../sk/README.md) | [Slovenian](../sl/README.md) | [Spanish](../es/README.md) | [Swahili](../sw/README.md) | [Swedish](../sv/README.md) | [Tagalog (Filipino)](../tl/README.md) | [Tamil](../ta/README.md) | [Telugu](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) + + +#### ನಮ್ಮ ಸಮುದಾಯದಲ್ಲಿ ಸೇರಿ + +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) + +ನಾವು ಡಿಸ್ಕಾರ್ಡ್‌ನಲ್ಲಿ AI ಸರಣಿಯನ್ನು ನಡೆಸುತ್ತಿದ್ದೇವೆ, ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ ಮತ್ತು ಸೇರಲು [Learn with AI Series](https://aka.ms/learnwithai/discord) ಗೆ 18 - 30 ಸೆಪ್ಟೆಂಬರ್, 2025 ರಂದು ಭೇಟಿ ನೀಡಿ. ನೀವು GitHub Copilot ಅನ್ನು ಡೇಟಾ ಸೈನ್ಸ್‌ಗಾಗಿ ಬಳಸುವ ಸಲಹೆಗಳು ಮತ್ತು ತಂತ್ರಗಳನ್ನು ಪಡೆಯುತ್ತೀರಿ. + +![Learn with AI series](../../translated_images/3.9b58fd8d6c373c20c588c5070c4948a826ab074426c28ceb5889641294373dfc.kn.png) + +# ಆರಂಭಿಕರಿಗಾಗಿ ಮೆಷಿನ್ ಲರ್ನಿಂಗ್ - ಒಂದು ಪಠ್ಯಕ್ರಮ + +> 🌍 ವಿಶ್ವದ ಸಾಂಸ್ಕೃತಿಕಗಳ ಮೂಲಕ ಮೆಷಿನ್ ಲರ್ನಿಂಗ್ ಅನ್ನು ಅನ್ವೇಷಿಸುವಾಗ ಜಗತ್ತನ್ನು ಸುತ್ತಿ ಪ್ರಯಾಣ ಮಾಡಿ 🌍 + +Microsoft ನ ಕ್ಲೌಡ್ ಅಡ್ವೊಕೇಟ್ಸ್ 12 ವಾರಗಳ, 26 ಪಾಠಗಳ ಪಠ್ಯಕ್ರಮವನ್ನು **ಮೆಷಿನ್ ಲರ್ನಿಂಗ್** ಬಗ್ಗೆ ನೀಡಲು ಸಂತೋಷಪಡುತ್ತಾರೆ. ಈ ಪಠ್ಯಕ್ರಮದಲ್ಲಿ ನೀವು ಕೆಲವೊಮ್ಮೆ **ಕ್ಲಾಸಿಕ್ ಮೆಷಿನ್ ಲರ್ನಿಂಗ್** ಎಂದು ಕರೆಯಲ್ಪಡುವುದನ್ನು ಕಲಿಯುತ್ತೀರಿ, ಮುಖ್ಯವಾಗಿ Scikit-learn ಗ್ರಂಥಾಲಯವನ್ನು ಬಳಸಿಕೊಂಡು ಮತ್ತು ಡೀಪ್ ಲರ್ನಿಂಗ್ ಅನ್ನು ತಪ್ಪಿಸಿ, ಅದು ನಮ್ಮ [AI for Beginners' curriculum](https://aka.ms/ai4beginners) ನಲ್ಲಿ ಒಳಗೊಂಡಿದೆ. ಈ ಪಾಠಗಳನ್ನು ನಮ್ಮ ['Data Science for Beginners' curriculum](https://aka.ms/ds4beginners) ಜೊತೆಗೆ ಜೋಡಿಸಬಹುದು. + +ನಮ್ಮೊಂದಿಗೆ ಜಗತ್ತಿನ ವಿವಿಧ ಭಾಗಗಳ ಡೇಟಾಗೆ ಈ ಕ್ಲಾಸಿಕ್ ತಂತ್ರಗಳನ್ನು ಅನ್ವಯಿಸಿ ಪ್ರಯಾಣ ಮಾಡಿ. ಪ್ರತಿ ಪಾಠದಲ್ಲಿ ಪೂರ್ವ ಮತ್ತು ನಂತರದ ಪ್ರಶ್ನೋತ್ತರಗಳು, ಪಾಠವನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು ಬರಹದ ಸೂಚನೆಗಳು, ಪರಿಹಾರ, ನಿಯೋಜನೆ ಮತ್ತು ಇನ್ನಷ್ಟು ಒಳಗೊಂಡಿವೆ. ನಮ್ಮ ಪ್ರಾಜೆಕ್ಟ್ ಆಧಾರಿತ ಪಾಠಶೈಲಿ ನಿಮಗೆ ಕಲಿಯುವಾಗ ನಿರ್ಮಿಸುವ ಅವಕಾಶ ನೀಡುತ್ತದೆ, ಇದು ಹೊಸ ಕೌಶಲ್ಯಗಳನ್ನು 'ಸ್ಥಿರ'ಗೊಳಿಸುವುದಕ್ಕೆ ಸಾಬೀತಾದ ವಿಧಾನವಾಗಿದೆ. + +**✍️ ನಮ್ಮ ಲೇಖಕರಿಗೆ ಹೃತ್ಪೂರ್ವಕ ಧನ್ಯವಾದಗಳು** ಜೆನ್ ಲೂಪರ್, ಸ್ಟೀಫನ್ ಹೌವೆಲ್, ಫ್ರಾನ್ಸೆಸ್ಕಾ ಲಾಜ್ಜೇರಿ, ಟೊಮೊಮಿ ಇಮುರಾ, ಕ್ಯಾಸ್ ಬ್ರೇವಿಯು, ಡ್ಮಿತ್ರಿ ಸೋಶ್ನಿಕೋವ್, ಕ್ರಿಸ್ ನೋರಿಂಗ್, ಅನಿರ್ಬಾನ್ ಮುಖರ್ಜಿ, ಓರ್ನೆಲ್ಲಾ ಅಲ್ಟುನ್ಯಾನ್, ರೂತ್ ಯಾಕುಬು ಮತ್ತು ಎಮಿ ಬಾಯ್ಡ್ + +**🎨 ನಮ್ಮ ಚಿತ್ರಕಾರರಿಗೆ ಸಹ ಧನ್ಯವಾದಗಳು** ಟೊಮೊಮಿ ಇಮುರಾ, ದಾಸನಿ ಮಡಿಪಳ್ಳಿ, ಮತ್ತು ಜೆನ್ ಲೂಪರ್ + +**🙏 ವಿಶೇಷ ಧನ್ಯವಾದಗಳು 🙏 ನಮ್ಮ Microsoft ವಿದ್ಯಾರ್ಥಿ ಅಂಬಾಸಿಡರ್ ಲೇಖಕರು, ವಿಮರ್ಶಕರು ಮತ್ತು ವಿಷಯದ ಸಹಾಯಕರಿಗೆ**, ವಿಶೇಷವಾಗಿ ರಿಷಿತ್ ದಾಗ್ಲಿ, ಮುಹಮ್ಮದ್ ಸಕಿಬ್ ಖಾನ್ ಇನಾನ್, ರೋಹನ್ ರಾಜ್, ಅಲೆಕ್ಸಾಂಡ್ರು ಪೆಟ್ರೆಸ್ಕು, ಅಭಿಷೇಕ್ ಜೈಸ್ವಾಲ್, ನವ್ರಿನ್ ತಬಸ್ಸುಮ್, ಇವಾನ್ ಸಮುಯಿಲಾ, ಮತ್ತು ಸ್ನಿಗ್ಧಾ ಅಗರ್ವಾಲ್ + +**🤩 Microsoft ವಿದ್ಯಾರ್ಥಿ ಅಂಬಾಸಿಡರ್‌ಗಳು ಎರಿಕ್ ವಾಂಜೌ, ಜಸ್ಲೀನ್ ಸೊಂಡಿ, ಮತ್ತು ವಿದ್ಯುಷಿ ಗುಪ್ತ ಅವರಿಗೆ ನಮ್ಮ R ಪಾಠಗಳಿಗೆ ಹೆಚ್ಚುವರಿ ಕೃತಜ್ಞತೆ!** + +# ಪ್ರಾರಂಭಿಸುವುದು + +ಈ ಹಂತಗಳನ್ನು ಅನುಸರಿಸಿ: +1. **ರಿಪೊಸಿಟರಿಯನ್ನು ಫೋರ್ಕ್ ಮಾಡಿ**: ಈ ಪುಟದ ಮೇಲ್ಭಾಗದ ಬಲಭಾಗದಲ್ಲಿರುವ "Fork" ಬಟನ್ ಕ್ಲಿಕ್ ಮಾಡಿ. +2. **ರಿಪೊಸಿಟರಿಯನ್ನು ಕ್ಲೋನ್ ಮಾಡಿ**: `git clone https://github.com/microsoft/ML-For-Beginners.git` + +> [ಈ ಕೋರ್ಸ್‌ಗೆ ಸಂಬಂಧಿಸಿದ ಎಲ್ಲಾ ಹೆಚ್ಚುವರಿ ಸಂಪನ್ಮೂಲಗಳನ್ನು ನಮ್ಮ Microsoft Learn ಸಂಗ್ರಹದಲ್ಲಿ ಕಂಡುಹಿಡಿಯಿರಿ](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) + +> 🔧 **ಸಹಾಯ ಬೇಕೇ?** ಸ್ಥಾಪನೆ, ಸೆಟಪ್ ಮತ್ತು ಪಾಠಗಳನ್ನು ನಡೆಸುವ ಸಾಮಾನ್ಯ ಸಮಸ್ಯೆಗಳ ಪರಿಹಾರಕ್ಕಾಗಿ ನಮ್ಮ [Troubleshooting Guide](TROUBLESHOOTING.md) ಅನ್ನು ಪರಿಶೀಲಿಸಿ. + + +**[ವಿದ್ಯಾರ್ಥಿಗಳು](https://aka.ms/student-page)**, ಈ ಪಠ್ಯಕ್ರಮವನ್ನು ಬಳಸಲು, ಸಂಪೂರ್ಣ ರಿಪೊಸಿಟರಿಯನ್ನು ನಿಮ್ಮ GitHub ಖಾತೆಗೆ ಫೋರ್ಕ್ ಮಾಡಿ ಮತ್ತು ಸ್ವತಃ ಅಥವಾ ಗುಂಪಿನಲ್ಲಿ ವ್ಯಾಯಾಮಗಳನ್ನು ಪೂರ್ಣಗೊಳಿಸಿ: + +- ಪೂರ್ವ-ಪಾಠ ಪ್ರಶ್ನೋತ್ತರದಿಂದ ಪ್ರಾರಂಭಿಸಿ. +- ಪಾಠವನ್ನು ಓದಿ ಮತ್ತು ಚಟುವಟಿಕೆಗಳನ್ನು ಪೂರ್ಣಗೊಳಿಸಿ, ಪ್ರತಿ ಜ್ಞಾನ ಪರಿಶೀಲನೆಯಲ್ಲಿ ನಿಲ್ಲಿಸಿ ಮತ್ತು ಪರಿಗಣಿಸಿ. +- ಪರಿಹಾರ ಕೋಡ್ ಅನ್ನು ನಡಿಸುವುದಕ್ಕಿಂತ ಪಾಠಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಂಡು ಪ್ರಾಜೆಕ್ಟ್‌ಗಳನ್ನು ರಚಿಸಲು ಪ್ರಯತ್ನಿಸಿ; ಆದಾಗ್ಯೂ ಆ ಕೋಡ್ ಪ್ರತಿ ಪ್ರಾಜೆಕ್ಟ್-ಆಧಾರಿತ ಪಾಠದ `/solution` ಫೋಲ್ಡರ್‌ಗಳಲ್ಲಿ ಲಭ್ಯವಿದೆ. +- ಪಾಠದ ನಂತರದ ಪ್ರಶ್ನೋತ್ತರವನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ. +- ಸವಾಲನ್ನು ಪೂರ್ಣಗೊಳಿಸಿ. +- ನಿಯೋಜನೆಯನ್ನು ಪೂರ್ಣಗೊಳಿಸಿ. +- ಪಾಠ ಗುಂಪನ್ನು ಪೂರ್ಣಗೊಳಿಸಿದ ನಂತರ, [ಚರ್ಚಾ ಮಂಡಳಿ](https://github.com/microsoft/ML-For-Beginners/discussions) ಗೆ ಭೇಟಿ ನೀಡಿ ಮತ್ತು ಸೂಕ್ತ PAT ರೂಬ್ರಿಕ್ ಅನ್ನು ಭರ್ತಿ ಮಾಡಿ "ಮೌನವಾಗಿ ಕಲಿಯಿರಿ". 'PAT' ಎಂದರೆ ಪ್ರಗತಿ ಮೌಲ್ಯಮಾಪನ ಸಾಧನ, ಇದು ನಿಮ್ಮ ಕಲಿಕೆಯನ್ನು ಮುಂದುವರಿಸಲು ನೀವು ಭರ್ತಿ ಮಾಡುವ ರೂಬ್ರಿಕ್ ಆಗಿದೆ. ನೀವು ಇತರ PAT ಗಳಿಗೆ ಪ್ರತಿಕ್ರಿಯೆ ನೀಡಬಹುದು, ಹೀಗೆ ನಾವು ಒಟ್ಟಿಗೆ ಕಲಿಯಬಹುದು. + +> ಹೆಚ್ಚಿನ ಅಧ್ಯಯನಕ್ಕಾಗಿ, ಈ [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) ಮಾಯಾಜಾಲಗಳು ಮತ್ತು ಕಲಿಕೆ ಮಾರ್ಗಗಳನ್ನು ಅನುಸರಿಸುವುದನ್ನು ನಾವು ಶಿಫಾರಸು ಮಾಡುತ್ತೇವೆ. + +**ಶಿಕ್ಷಕರು**, ಈ ಪಠ್ಯಕ್ರಮವನ್ನು ಹೇಗೆ ಬಳಸುವುದು ಎಂಬುದರ ಬಗ್ಗೆ ನಾವು [ಕೆಲವು ಸಲಹೆಗಳನ್ನು](for-teachers.md) ಸೇರಿಸಿದ್ದೇವೆ. + +--- + +## ವೀಡಿಯೋ ವಾಕ್ತ್ರೂಗಳು + +ಕೆಲವು ಪಾಠಗಳು ಚಿಕ್ಕ ವೀಡಿಯೋ ರೂಪದಲ್ಲಿ ಲಭ್ಯವಿವೆ. ನೀವು ಈ ಎಲ್ಲವನ್ನು ಪಾಠಗಳಲ್ಲಿ ನೇರವಾಗಿ ಅಥವಾ [Microsoft Developer YouTube ಚಾನೆಲ್‌ನ ML for Beginners ಪ್ಲೇಲಿಸ್ಟ್](https://aka.ms/ml-beginners-videos) ನಲ್ಲಿ ಕೆಳಗಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ ನೋಡಬಹುದು. + +[![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.kn.png)](https://aka.ms/ml-beginners-videos) + +--- + +## ತಂಡವನ್ನು ಪರಿಚಯಿಸಿ + +[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU) + +**ಗಿಫ್** [ಮೊಹಿತ್ ಜೈಸಾಲ್](https://linkedin.com/in/mohitjaisal) + +> 🎥 ಯೋಜನೆ ಮತ್ತು ಅದನ್ನು ರಚಿಸಿದ ಜನರ ಬಗ್ಗೆ ವೀಡಿಯೋಗಾಗಿ ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ! + +--- + +## ಪಾಠಶೈಲಿ + +ನಾವು ಈ ಪಠ್ಯಕ್ರಮವನ್ನು ರಚಿಸುವಾಗ ಎರಡು ಪಾಠಶೈಲಿ ತತ್ವಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿದ್ದೇವೆ: ಕೈಯಲ್ಲಿ ಮಾಡಬಹುದಾದ **ಪ್ರಾಜೆಕ್ಟ್ ಆಧಾರಿತ** ಮತ್ತು **ನಿರಂತರ ಪ್ರಶ್ನೋತ್ತರಗಳು**. ಜೊತೆಗೆ, ಈ ಪಠ್ಯಕ್ರಮಕ್ಕೆ ಸಾಮಾನ್ಯ **ಥೀಮ್** ಇದೆ, ಇದು ಅದಕ್ಕೆ ಸಮ್ಮಿಲನ ನೀಡುತ್ತದೆ. + +ವಿಷಯವು ಪ್ರಾಜೆಕ್ಟ್‌ಗಳಿಗೆ ಹೊಂದಿಕೆಯಾಗುವಂತೆ ನೋಡಿಕೊಳ್ಳುವುದರಿಂದ, ವಿದ್ಯಾರ್ಥಿಗಳಿಗೆ ಪ್ರಕ್ರಿಯೆ ಹೆಚ್ಚು ಆಕರ್ಷಕವಾಗುತ್ತದೆ ಮತ್ತು ಕಲಿಕೆಯ ಅರ್ಥಗಳು ಹೆಚ್ಚು ನೆನಪಿನಲ್ಲಿ ಉಳಿಯುತ್ತವೆ. ತರಗತಿಯ ಮುಂಚೆ ಕಡಿಮೆ ಒತ್ತಡದ ಪ್ರಶ್ನೋತ್ತರವು ವಿದ್ಯಾರ್ಥಿಯ ಕಲಿಕೆಯ ಉದ್ದೇಶವನ್ನು ಸ್ಥಾಪಿಸುತ್ತದೆ, ಮತ್ತು ತರಗತಿಯ ನಂತರದ ಪ್ರಶ್ನೋತ್ತರವು ಇನ್ನಷ್ಟು ನೆನಪನ್ನು ಖಚಿತಪಡಿಸುತ್ತದೆ. ಈ ಪಠ್ಯಕ್ರಮವನ್ನು ಲವಚಿಕ ಮತ್ತು ಮನರಂಜನೀಯವಾಗಿರಿಸಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ ಮತ್ತು ಸಂಪೂರ್ಣವಾಗಿ ಅಥವಾ ಭಾಗವಾಗಿ ತೆಗೆದುಕೊಳ್ಳಬಹುದು. ಪ್ರಾಜೆಕ್ಟ್‌ಗಳು ಸಣ್ಣದಾಗಿ ಪ್ರಾರಂಭಿಸಿ 12 ವಾರಗಳ ಅವಧಿಯ ಕೊನೆಯಲ್ಲಿ ಹೆಚ್ಚು ಸಂಕೀರ್ಣವಾಗುತ್ತವೆ. ಈ ಪಠ್ಯಕ್ರಮದಲ್ಲಿ ML ನ ನೈಜ ಜಗತ್ತಿನ ಅನ್ವಯಿಕೆಗಳ ಬಗ್ಗೆ ಒಂದು ಪೋಷಕ ಲೇಖನವೂ ಇದೆ, ಇದನ್ನು ಹೆಚ್ಚುವರಿ ಕ್ರೆಡಿಟ್ ಅಥವಾ ಚರ್ಚೆಯ ಆಧಾರವಾಗಿ ಬಳಸಬಹುದು. + +> ನಮ್ಮ [ನಡವಳಿಕೆ ಸಂಹಿತೆ](CODE_OF_CONDUCT.md), [ಸಹಾಯ](CONTRIBUTING.md), [ಅನುವಾದ](TRANSLATIONS.md), ಮತ್ತು [ಸಮಸ್ಯೆ ಪರಿಹಾರ](TROUBLESHOOTING.md) ಮಾರ್ಗಸೂಚಿಗಳನ್ನು ನೋಡಿ. ನಿಮ್ಮ ರಚನಾತ್ಮಕ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ನಾವು ಸ್ವಾಗತಿಸುತ್ತೇವೆ! + +## ಪ್ರತಿ ಪಾಠದಲ್ಲಿ ಒಳಗೊಂಡಿದೆ + +- ಐಚ್ಛಿಕ ಸ್ಕೆಚ್ ನೋಟ್ +- ಐಚ್ಛಿಕ ಪೂರಕ ವೀಡಿಯೋ +- ವೀಡಿಯೋ ವಾಕ್ತ್ರೂ (ಕೆಲವು ಪಾಠಗಳಿಗೆ ಮಾತ್ರ) +- [ಪೂರ್ವ-ಪಾಠ ತಯಾರಿ ಪ್ರಶ್ನೋತ್ತರ](https://ff-quizzes.netlify.app/en/ml/) +- ಬರಹದ ಪಾಠ +- ಪ್ರಾಜೆಕ್ಟ್ ಆಧಾರಿತ ಪಾಠಗಳಿಗೆ, ಪ್ರಾಜೆಕ್ಟ್ ನಿರ್ಮಿಸುವ ಹಂತ-ಹಂತದ ಮಾರ್ಗದರ್ಶಿಗಳು +- ಜ್ಞಾನ ಪರಿಶೀಲನೆಗಳು +- ಸವಾಲು +- ಪೂರಕ ಓದು +- ನಿಯೋಜನೆ +- [ಪೋಸ್ಟ್-ಪಾಠ ಪ್ರಶ್ನೋತ್ತರ](https://ff-quizzes.netlify.app/en/ml/) + +> **ಭಾಷೆಗಳ ಬಗ್ಗೆ ಟಿಪ್ಪಣಿ**: ಈ ಪಾಠಗಳು ಮುಖ್ಯವಾಗಿ Python ನಲ್ಲಿ ಬರೆಯಲ್ಪಟ್ಟಿವೆ, ಆದರೆ ಅನೇಕವು R ನಲ್ಲಿ ಸಹ ಲಭ್ಯವಿವೆ. R ಪಾಠವನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು, `/solution` ಫೋಲ್ಡರ್‌ಗೆ ಹೋಗಿ R ಪಾಠಗಳನ್ನು ಹುಡುಕಿ. ಅವು .rmd ವಿಸ್ತರಣೆ ಹೊಂದಿವೆ, ಇದು **R Markdown** ಫೈಲ್ ಅನ್ನು ಸೂಚಿಸುತ್ತದೆ, ಇದು `code chunks` (R ಅಥವಾ ಇತರ ಭಾಷೆಗಳ) ಮತ್ತು `YAML header` (PDF ಮುಂತಾದ ಔಟ್‌ಪುಟ್‌ಗಳನ್ನು ಹೇಗೆ ರೂಪಿಸಬೇಕೆಂದು ಮಾರ್ಗದರ್ಶನ ನೀಡುತ್ತದೆ) ಅನ್ನು Markdown ಡಾಕ್ಯುಮೆಂಟ್‌ನಲ್ಲಿ ಸಂಯೋಜಿಸುವುದಾಗಿದೆ. ಇದರಿಂದ ನೀವು ನಿಮ್ಮ ಕೋಡ್, ಅದರ ಔಟ್‌ಪುಟ್ ಮತ್ತು ನಿಮ್ಮ ಆಲೋಚನೆಗಳನ್ನು Markdown ನಲ್ಲಿ ಬರೆಯಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ. ಜೊತೆಗೆ, R Markdown ಡಾಕ್ಯುಮೆಂಟ್‌ಗಳನ್ನು PDF, HTML ಅಥವಾ Word ಮುಂತಾದ ಔಟ್‌ಪುಟ್‌ಗಳಿಗೆ ರೆಂಡರ್ ಮಾಡಬಹುದು. + +> **ಪ್ರಶ್ನೋತ್ತರಗಳ ಬಗ್ಗೆ ಟಿಪ್ಪಣಿ**: ಎಲ್ಲಾ ಪ್ರಶ್ನೋತ್ತರಗಳು [Quiz App ಫೋಲ್ಡರ್](../../quiz-app) ನಲ್ಲಿ ಇವೆ, ಒಟ್ಟು 52 ಪ್ರಶ್ನೋತ್ತರಗಳಿವೆ, ಪ್ರತಿ ಒಂದು ಮೂರು ಪ್ರಶ್ನೆಗಳೊಂದಿಗೆ. ಅವು ಪಾಠಗಳಲ್ಲಿ ಲಿಂಕ್ ಮಾಡಲ್ಪಟ್ಟಿವೆ ಆದರೆ ಪ್ರಶ್ನೋತ್ತರ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಸ್ಥಳೀಯವಾಗಿ ನಡೆಸಬಹುದು; ಸ್ಥಳೀಯವಾಗಿ ಹೋಸ್ಟ್ ಮಾಡಲು ಅಥವಾ Azure ಗೆ ನಿಯೋಜಿಸಲು `quiz-app` ಫೋಲ್ಡರ್‌ನ ಸೂಚನೆಗಳನ್ನು ಅನುಸರಿಸಿ. + +| ಪಾಠ ಸಂಖ್ಯೆ | ವಿಷಯ | ಪಾಠ ಗುಂಪು | ಕಲಿಕೆಯ ಉದ್ದೇಶಗಳು | ಲಿಂಕ್ ಮಾಡಲಾದ ಪಾಠ | ಲೇಖಕ | +| :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | +| 01 | ಯಂತ್ರ ಅಧ್ಯಯನಕ್ಕೆ ಪರಿಚಯ | [Introduction](1-Introduction/README.md) | ಯಂತ್ರ ಅಧ್ಯಯನದ ಮೂಲಭೂತ ತತ್ವಗಳನ್ನು ತಿಳಿದುಕೊಳ್ಳಿ | [Lesson](1-Introduction/1-intro-to-ML/README.md) | ಮುಹಮ್ಮದ್ | +| 02 | ಯಂತ್ರ ಅಧ್ಯಯನದ ಇತಿಹಾಸ | [Introduction](1-Introduction/README.md) | ಈ ಕ್ಷೇತ್ರದ ಇತಿಹಾಸವನ್ನು ತಿಳಿದುಕೊಳ್ಳಿ | [Lesson](1-Introduction/2-history-of-ML/README.md) | ಜೆನ್ ಮತ್ತು ಎಮಿ | +| 03 | ನ್ಯಾಯ ಮತ್ತು ಯಂತ್ರ ಅಧ್ಯಯನ | [Introduction](1-Introduction/README.md) | ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸುವಾಗ ಮತ್ತು ಅನ್ವಯಿಸುವಾಗ ವಿದ್ಯಾರ್ಥಿಗಳು ಪರಿಗಣಿಸಬೇಕಾದ ನ್ಯಾಯದ ಪ್ರಮುಖ ತತ್ವಶಾಸ್ತ್ರೀಯ ವಿಷಯಗಳು ಯಾವುವು? | [Lesson](1-Introduction/3-fairness/README.md) | ಟೊಮೊಮಿ | +| 04 | ಯಂತ್ರ ಅಧ್ಯಯನ ತಂತ್ರಗಳು | [Introduction](1-Introduction/README.md) | ಯಂತ್ರ ಅಧ್ಯಯನ ಸಂಶೋಧಕರು ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸಲು ಯಾವ ತಂತ್ರಗಳನ್ನು ಬಳಸುತ್ತಾರೆ? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | ಕ್ರಿಸ್ ಮತ್ತು ಜೆನ್ | +| 05 | ರಿಗ್ರೆಶನ್‌ಗೆ ಪರಿಚಯ | [Regression](2-Regression/README.md) | ರಿಗ್ರೆಶನ್ ಮಾದರಿಗಳಿಗಾಗಿ ಪೈಥಾನ್ ಮತ್ತು ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ ಬಳಸಿ ಪ್ರಾರಂಭಿಸಿ | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | ಜೆನ್ • ಎರಿಕ್ ವಾಂಜೌ | +| 06 | ಉತ್ತರ ಅಮೆರಿಕದ ಕಂಬಳಿಯ ಬೆಲೆಗಳು 🎃 | [Regression](2-Regression/README.md) | ಯಂತ್ರ ಅಧ್ಯಯನಕ್ಕೆ ಸಿದ್ಧತೆಗಾಗಿ ಡೇಟಾವನ್ನು ದೃಶ್ಯೀಕರಿಸಿ ಮತ್ತು ಸ್ವಚ್ಛಗೊಳಿಸಿ | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | ಜೆನ್ • ಎರಿಕ್ ವಾಂಜೌ | +| 07 | ಉತ್ತರ ಅಮೆರಿಕದ ಕಂಬಳಿಯ ಬೆಲೆಗಳು 🎃 | [Regression](2-Regression/README.md) | ರೇಖೀಯ ಮತ್ತು ಬಹುಪದ ರಿಗ್ರೆಶನ್ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸಿ | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | ಜೆನ್ ಮತ್ತು ಡ್ಮಿಟ್ರಿ • ಎರಿಕ್ ವಾಂಜೌ | +| 08 | ಉತ್ತರ ಅಮೆರಿಕದ ಕಂಬಳಿಯ ಬೆಲೆಗಳು 🎃 | [Regression](2-Regression/README.md) | ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿ | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | ಜೆನ್ • ಎರಿಕ್ ವಾಂಜೌ | +| 09 | ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ 🔌 | [Web App](3-Web-App/README.md) | ನಿಮ್ಮ ತರಬೇತುಗೊಂಡ ಮಾದರಿಯನ್ನು ಬಳಸಲು ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ಮಿಸಿ | [Python](3-Web-App/1-Web-App/README.md) | ಜೆನ್ | +| 10 | ವರ್ಗೀಕರಣಕ್ಕೆ ಪರಿಚಯ | [Classification](4-Classification/README.md) | ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸಿ, ಸಿದ್ಧಪಡಿಸಿ ಮತ್ತು ದೃಶ್ಯೀಕರಿಸಿ; ವರ್ಗೀಕರಣಕ್ಕೆ ಪರಿಚಯ | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | ಜೆನ್ ಮತ್ತು ಕ್ಯಾಶಿ • ಎರಿಕ್ ವಾಂಜೌ | +| 11 | ರುಚಿಕರ ಏಷ್ಯನ್ ಮತ್ತು ಭಾರತೀಯ ಆಹಾರಗಳು 🍜 | [Classification](4-Classification/README.md) | ವರ್ಗೀಕರಣಗಳ ಪರಿಚಯ | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | ಜೆನ್ ಮತ್ತು ಕ್ಯಾಶಿ • ಎರಿಕ್ ವಾಂಜೌ | +| 12 | ರುಚಿಕರ ಏಷ್ಯನ್ ಮತ್ತು ಭಾರತೀಯ ಆಹಾರಗಳು 🍜 | [Classification](4-Classification/README.md) | ಇನ್ನಷ್ಟು ವರ್ಗೀಕರಣಗಳು | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | ಜೆನ್ ಮತ್ತು ಕ್ಯಾಶಿ • ಎರಿಕ್ ವಾಂಜೌ | +| 13 | ರುಚಿಕರ ಏಷ್ಯನ್ ಮತ್ತು ಭಾರತೀಯ ಆಹಾರಗಳು 🍜 | [Classification](4-Classification/README.md) | ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ಬಳಸಿ ಶಿಫಾರಸು ಮಾಡುವ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ಮಿಸಿ | [Python](4-Classification/4-Applied/README.md) | ಜೆನ್ | +| 14 | ಕ್ಲಸ್ಟರಿಂಗ್‌ಗೆ ಪರಿಚಯ | [Clustering](5-Clustering/README.md) | ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸಿ, ಸಿದ್ಧಪಡಿಸಿ ಮತ್ತು ದೃಶ್ಯೀಕರಿಸಿ; ಕ್ಲಸ್ಟರಿಂಗ್‌ಗೆ ಪರಿಚಯ | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | ಜೆನ್ • ಎರಿಕ್ ವಾಂಜೌ | +| 15 | ನೈಜೀರಿಯನ್ ಸಂಗೀತ ರುಚಿಗಳನ್ನು ಅನ್ವೇಷಣೆ 🎧 | [Clustering](5-Clustering/README.md) | ಕೆ-ಮೀನ್ಸ್ ಕ್ಲಸ್ಟರಿಂಗ್ ವಿಧಾನವನ್ನು ಅನ್ವೇಷಿಸಿ | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | ಜೆನ್ • ಎರಿಕ್ ವಾಂಜೌ | +| 16 | ನೈಸರ್ಗಿಕ ಭಾಷಾ ಪ್ರಕ್ರಿಯೆಗೆ ಪರಿಚಯ ☕️ | [Natural language processing](6-NLP/README.md) | ಸರಳ ಬಾಟ್ ನಿರ್ಮಿಸುವ ಮೂಲಕ NLP ಮೂಲಭೂತಗಳನ್ನು ತಿಳಿದುಕೊಳ್ಳಿ | [Python](6-NLP/1-Introduction-to-NLP/README.md) | ಸ್ಟೀಫನ್ | +| 17 | ಸಾಮಾನ್ಯ NLP ಕಾರ್ಯಗಳು ☕️ | [Natural language processing](6-NLP/README.md) | ಭಾಷಾ ರಚನೆಗಳೊಂದಿಗೆ ವ್ಯವಹರಿಸುವಾಗ ಅಗತ್ಯವಿರುವ ಸಾಮಾನ್ಯ ಕಾರ್ಯಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವ ಮೂಲಕ ನಿಮ್ಮ NLP ಜ್ಞಾನವನ್ನು ಗಾಢಗೊಳಿಸಿ | [Python](6-NLP/2-Tasks/README.md) | ಸ್ಟೀಫನ್ | +| 18 | ಅನುವಾದ ಮತ್ತು ಭಾವನಾತ್ಮಕ ವಿಶ್ಲೇಷಣೆ ♥️ | [Natural language processing](6-NLP/README.md) | ಜೆನ್ ಆಸ್ಟಿನ್ ಅವರೊಂದಿಗೆ ಅನುವಾದ ಮತ್ತು ಭಾವನಾತ್ಮಕ ವಿಶ್ಲೇಷಣೆ | [Python](6-NLP/3-Translation-Sentiment/README.md) | ಸ್ಟೀಫನ್ | +| 19 | ಯುರೋಪಿನ ರೋಮ್ಯಾಂಟಿಕ್ ಹೋಟೆಲ್ಗಳು ♥️ | [Natural language processing](6-NLP/README.md) | ಹೋಟೆಲ್ ವಿಮರ್ಶೆಗಳೊಂದಿಗೆ ಭಾವನಾತ್ಮಕ ವಿಶ್ಲೇಷಣೆ 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | ಸ್ಟೀಫನ್ | +| 20 | ಯುರೋಪಿನ ರೋಮ್ಯಾಂಟಿಕ್ ಹೋಟೆಲ್ಗಳು ♥️ | [Natural language processing](6-NLP/README.md) | ಹೋಟೆಲ್ ವಿಮರ್ಶೆಗಳೊಂದಿಗೆ ಭಾವನಾತ್ಮಕ ವಿಶ್ಲೇಷಣೆ 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | ಸ್ಟೀಫನ್ | +| 21 | ಕಾಲ ಸರಣಿಯ ಪೂರ್ವಾನುಮಾನಕ್ಕೆ ಪರಿಚಯ | [Time series](7-TimeSeries/README.md) | ಕಾಲ ಸರಣಿಯ ಪೂರ್ವಾನುಮಾನಕ್ಕೆ ಪರಿಚಯ | [Python](7-TimeSeries/1-Introduction/README.md) | ಫ್ರಾನ್ಸೆಸ್ಕಾ | +| 22 | ⚡️ ವಿಶ್ವ ವಿದ್ಯುತ್ ಬಳಕೆ ⚡️ - ARIMA ಬಳಸಿ ಕಾಲ ಸರಣಿ ಪೂರ್ವಾನುಮಾನ | [Time series](7-TimeSeries/README.md) | ARIMA ಬಳಸಿ ಕಾಲ ಸರಣಿ ಪೂರ್ವಾನುಮಾನ | [Python](7-TimeSeries/2-ARIMA/README.md) | ಫ್ರಾನ್ಸೆಸ್ಕಾ | +| 23 | ⚡️ ವಿಶ್ವ ವಿದ್ಯುತ್ ಬಳಕೆ ⚡️ - SVR ಬಳಸಿ ಕಾಲ ಸರಣಿ ಪೂರ್ವಾನುಮಾನ | [Time series](7-TimeSeries/README.md) | ಸಪೋರ್ಟ್ ವೆಕ್ಟರ್ ರಿಗ್ರೆಶರ್ ಬಳಸಿ ಕಾಲ ಸರಣಿ ಪೂರ್ವಾನುಮಾನ | [Python](7-TimeSeries/3-SVR/README.md) | ಅನಿರ್ಬಾನ್ | +| 24 | ಬಲವರ್ಧನೆ ಅಧ್ಯಯನಕ್ಕೆ ಪರಿಚಯ | [Reinforcement learning](8-Reinforcement/README.md) | Q-ಲರ್ನಿಂಗ್ ಬಳಸಿ ಬಲವರ್ಧನೆ ಅಧ್ಯಯನಕ್ಕೆ ಪರಿಚಯ | [Python](8-Reinforcement/1-QLearning/README.md) | ಡ್ಮಿಟ್ರಿ | +| 25 | ಪೀಟರ್‌ನ್ನು ನರಿ ತಪ್ಪಿಸಲು ಸಹಾಯ ಮಾಡಿ! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | ಬಲವರ್ಧನೆ ಅಧ್ಯಯನ ಜಿಮ್ | [Python](8-Reinforcement/2-Gym/README.md) | ಡ್ಮಿಟ್ರಿ | +| Postscript | ನೈಜ ಜಗತ್ತಿನ ಯಂತ್ರ ಅಧ್ಯಯನ ದೃಶ್ಯಗಳು ಮತ್ತು ಅನ್ವಯಿಕೆಗಳು | [ML in the Wild](9-Real-World/README.md) | ಶ್ರೇಷ್ಟ ಯಂತ್ರ ಅಧ್ಯಯನದ ಆಸಕ್ತಿದಾಯಕ ಮತ್ತು ಬಹಿರಂಗ ನೈಜ ಜಗತ್ತಿನ ಅನ್ವಯಿಕೆಗಳು | [Lesson](9-Real-World/1-Applications/README.md) | ತಂಡ | +| Postscript | RAI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ ಬಳಸಿ ಯಂತ್ರ ಅಧ್ಯಯನದಲ್ಲಿ ಮಾದರಿ ಡಿಬಗಿಂಗ್ | [ML in the Wild](9-Real-World/README.md) | ಜವಾಬ್ದಾರಿಯುತ AI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ ಘಟಕಗಳನ್ನು ಬಳಸಿ ಯಂತ್ರ ಅಧ್ಯಯನದಲ್ಲಿ ಮಾದರಿ ಡಿಬಗಿಂಗ್ | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | ರುತ್ ಯಾಕುಬು | + +> [ಈ ಕೋರ್ಸ್‌ಗೆ ಸಂಬಂಧಿಸಿದ ಎಲ್ಲಾ ಹೆಚ್ಚುವರಿ ಸಂಪನ್ಮೂಲಗಳನ್ನು ನಮ್ಮ Microsoft Learn ಸಂಗ್ರಹದಲ್ಲಿ ಹುಡುಕಿ](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) + +## ಆಫ್‌ಲೈನ್ ಪ್ರವೇಶ + +ನೀವು [Docsify](https://docsify.js.org/#/) ಬಳಸಿ ಈ ಡಾಕ್ಯುಮೆಂಟೇಶನ್ ಅನ್ನು ಆಫ್‌ಲೈನ್‌ನಲ್ಲಿ ಓಡಿಸಬಹುದು. ಈ ರೆಪೊವನ್ನು ಫೋರ್ಕ್ ಮಾಡಿ, ನಿಮ್ಮ ಸ್ಥಳೀಯ ಯಂತ್ರದಲ್ಲಿ [Docsify ಅನ್ನು ಸ್ಥಾಪಿಸಿ](https://docsify.js.org/#/quickstart), ನಂತರ ಈ ರೆಪೊನ ರೂಟ್ ಫೋಲ್ಡರ್‌ನಲ್ಲಿ `docsify serve` ಟೈಪ್ ಮಾಡಿ. ವೆಬ್‌ಸೈಟ್ ನಿಮ್ಮ ಲೋಕಲ್‌ಹೋಸ್ಟ್‌ನಲ್ಲಿ 3000 ಪೋರ್ಟ್‌ನಲ್ಲಿ ಸರ್ವ್ ಆಗುತ್ತದೆ: `localhost:3000`. + +## PDF ಗಳು + +ಲಿಂಕ್‌ಗಳೊಂದಿಗೆ ಪಠ್ಯಕ್ರಮದ PDF ಅನ್ನು [ಇಲ್ಲಿ](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf) ಹುಡುಕಿ. + + +## 🎒 ಇತರೆ ಕೋರ್ಸ್‌ಗಳು + +ನಮ್ಮ ತಂಡ ಇತರೆ ಕೋರ್ಸ್‌ಗಳನ್ನು ಉತ್ಪಾದಿಸುತ್ತದೆ! ಪರಿಶೀಲಿಸಿ: + + +### ಲಾಂಗ್‌ಚೈನ್ +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) + +--- + +### ಅಜೂರ್ / ಎಡ್ಜ್ / MCP / ಏಜೆಂಟ್ಸ್ +[![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![MCP for Beginners](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) +[![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) + +--- + +### ಜನರೇಟಿವ್ AI ಸರಣಿ +[![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) +[![ಜನರೇಟಿವ್ AI (ಜಾವಾ)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) +[![ಜನರೇಟಿವ್ AI (ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) + +--- + +### ಮೂಲ ಅಧ್ಯಯನ +[![ಆರಂಭಿಕರಿಗಾಗಿ ಎಂಎಲ್](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![ಆರಂಭಿಕರಿಗಾಗಿ ಡೇಟಾ ಸೈನ್ಸ್](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![ಆರಂಭಿಕರಿಗಾಗಿ AI](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![ಆರಂಭಿಕರಿಗಾಗಿ ಸೈಬರ್‌ಸುರಕ್ಷತೆ](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![ಆರಂಭಿಕರಿಗಾಗಿ ವೆಬ್ ಡೆವ್](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![ಆರಂಭಿಕರಿಗಾಗಿ ಐಒಟಿ](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![ಆರಂಭಿಕರಿಗಾಗಿ XR ಅಭಿವೃದ್ಧಿ](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) + +--- + +### ಕೋಪೈಲಟ್ ಸರಣಿ +[![AI ಜೋಡಣೆಯ ಪ್ರೋಗ್ರಾಮಿಂಗ್‌ಗಾಗಿ ಕೋಪೈಲಟ್](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![C#/.NETಗಾಗಿ ಕೋಪೈಲಟ್](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![ಕೋಪೈಲಟ್ ಸಾಹಸ](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + + +## ಸಹಾಯ ಪಡೆಯುವುದು + +ನೀವು ಅಡಚಣೆಗೆ ಸಿಲುಕಿದರೆ ಅಥವಾ AI ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ನಿರ್ಮಿಸುವ ಬಗ್ಗೆ ಯಾವುದೇ ಪ್ರಶ್ನೆಗಳಿದ್ದರೆ. MCP ಬಗ್ಗೆ ಚರ್ಚೆಗಳಲ್ಲಿ ಸಹಪಾಠಿಗಳು ಮತ್ತು ಅನುಭವಜ್ಞ ಡೆವಲಪರ್‌ಗಳೊಂದಿಗೆ ಸೇರಿ. ಇದು ಪ್ರಶ್ನೆಗಳಿಗೆ ಸ್ವಾಗತ ನೀಡುವ ಮತ್ತು ಜ್ಞಾನವನ್ನು ಮುಕ್ತವಾಗಿ ಹಂಚಿಕೊಳ್ಳುವ ಬೆಂಬಲದ ಸಮುದಾಯವಾಗಿದೆ. + +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) + +ನೀವು ಉತ್ಪನ್ನ ಪ್ರತಿಕ್ರಿಯೆ ಅಥವಾ ನಿರ್ಮಾಣದ ವೇಳೆ ದೋಷಗಳನ್ನು ಹೊಂದಿದ್ದರೆ ಭೇಟಿ ನೀಡಿ: + +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವಾಗಿ ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/SECURITY.md b/translations/kn/SECURITY.md new file mode 100644 index 000000000..32d35d101 --- /dev/null +++ b/translations/kn/SECURITY.md @@ -0,0 +1,53 @@ + +## ಭದ್ರತೆ + +ಮೈಕ್ರೋಸಾಫ್ಟ್ ನಮ್ಮ ಸಾಫ್ಟ್‌ವೇರ್ ಉತ್ಪನ್ನಗಳು ಮತ್ತು ಸೇವೆಗಳ ಭದ್ರತೆಯನ್ನು ಗಂಭೀರವಾಗಿ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ, ಇದರಲ್ಲಿ ನಮ್ಮ GitHub ಸಂಸ್ಥೆಗಳ ಮೂಲಕ ನಿರ್ವಹಿಸಲಾದ ಎಲ್ಲಾ ಮೂಲ ಕೋಡ್ ಸಂಗ್ರಹಣೆಗಳು ಸೇರಿವೆ, ಅವುಗಳಲ್ಲಿ [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), ಮತ್ತು [ನಮ್ಮ GitHub ಸಂಸ್ಥೆಗಳು](https://opensource.microsoft.com/) ಸೇರಿವೆ. + +ನೀವು ಯಾವುದೇ ಮೈಕ್ರೋಸಾಫ್ಟ್-ಸ್ವಂತ ಸಂಗ್ರಹಣೆಯಲ್ಲಿ [ಮೈಕ್ರೋಸಾಫ್ಟ್ ಭದ್ರತಾ ದುರ್ಬಲತೆಯ ವ್ಯಾಖ್ಯಾನ](https://docs.microsoft.com/previous-versions/tn-archive/cc751383(v=technet.10)?WT.mc_id=academic-77952-leestott) ಪೂರೈಸುವ ಭದ್ರತಾ ದುರ್ಬಲತೆಯನ್ನು ಕಂಡುಹಿಡಿದಿದ್ದೀರಿ ಎಂದು ನಂಬಿದರೆ, ದಯವಿಟ್ಟು ಕೆಳಗಿನಂತೆ ನಮಗೆ ವರದಿ ಮಾಡಿ. + +## ಭದ್ರತಾ ಸಮಸ್ಯೆಗಳ ವರದಿ + +**ದಯವಿಟ್ಟು ಸಾರ್ವಜನಿಕ GitHub ಸಮಸ್ಯೆಗಳ ಮೂಲಕ ಭದ್ರತಾ ದುರ್ಬಲತೆಗಳನ್ನು ವರದಿ ಮಾಡಬೇಡಿ.** + +ಬದಲಿಗೆ, ದಯವಿಟ್ಟು ಅವುಗಳನ್ನು ಮೈಕ್ರೋಸಾಫ್ಟ್ ಭದ್ರತಾ ಪ್ರತಿಕ್ರಿಯಾ ಕೇಂದ್ರಕ್ಕೆ (MSRC) [https://msrc.microsoft.com/create-report](https://msrc.microsoft.com/create-report) ನಲ್ಲಿ ವರದಿ ಮಾಡಿ. + +ನೀವು ಲಾಗಿನ್ ಮಾಡದೆ ಸಲ್ಲಿಸಲು ಇಚ್ಛಿಸಿದರೆ, [secure@microsoft.com](mailto:secure@microsoft.com) ಗೆ ಇಮೇಲ್ ಕಳುಹಿಸಿ. ಸಾಧ್ಯವಾದರೆ, ನಮ್ಮ PGP ಕೀ ಬಳಸಿ ನಿಮ್ಮ ಸಂದೇಶವನ್ನು ಎನ್‌ಕ್ರಿಪ್ಟ್ ಮಾಡಿ; ದಯವಿಟ್ಟು ಅದನ್ನು [Microsoft Security Response Center PGP Key ಪುಟ](https://www.microsoft.com/en-us/msrc/pgp-key-msrc) ನಿಂದ ಡೌನ್‌ಲೋಡ್ ಮಾಡಿ. + +ನೀವು 24 ಗಂಟೆಗಳ ಒಳಗೆ ಪ್ರತಿಕ್ರಿಯೆ ಪಡೆಯಬೇಕು. ಯಾವುದೋ ಕಾರಣಕ್ಕಾಗಿ ನೀವು ಪಡೆಯದಿದ್ದರೆ, ದಯವಿಟ್ಟು ನಿಮ್ಮ ಮೂಲ ಸಂದೇಶವನ್ನು ನಾವು ಪಡೆದಿದ್ದೇವೆ ಎಂದು ಖಚಿತಪಡಿಸಲು ಇಮೇಲ್ ಮೂಲಕ ಅನುಸರಿಸಿ. ಹೆಚ್ಚಿನ ಮಾಹಿತಿಯನ್ನು [microsoft.com/msrc](https://www.microsoft.com/msrc) ನಲ್ಲಿ ಕಾಣಬಹುದು. + +ದಯವಿಟ್ಟು ಕೆಳಗಿನ ವಿನಂತಿಸಿದ ಮಾಹಿತಿಯನ್ನು (ನೀವು ನೀಡಬಹುದಾದಷ್ಟು) ಸೇರಿಸಿ, ಇದರಿಂದ ನಾವು ಸಾಧ್ಯವಾದ ಸಮಸ್ಯೆಯ ಸ್ವಭಾವ ಮತ್ತು ವ್ಯಾಪ್ತಿಯನ್ನು ಉತ್ತಮವಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಸಹಾಯವಾಗುತ್ತದೆ: + + * ಸಮಸ್ಯೆಯ ಪ್ರಕಾರ (ಉದಾ. ಬಫರ್ ಓವರ್‌ಫ್ಲೋ, SQL ಇಂಜೆಕ್ಷನ್, ಕ್ರಾಸ್-ಸೈಟ್ ಸ್ಕ್ರಿಪ್ಟಿಂಗ್, ಇತ್ಯಾದಿ) + * ಸಮಸ್ಯೆಯ ಪ್ರತ್ಯಕ್ಷತೆಯೊಂದಿಗೆ ಸಂಬಂಧಿಸಿದ ಮೂಲ ಫೈಲ್‌ಗಳ ಸಂಪೂರ್ಣ ಮಾರ್ಗಗಳು + * ಪ್ರಭಾವಿತ ಮೂಲ ಕೋಡ್‌ನ ಸ್ಥಳ (ಟ್ಯಾಗ್/ಬ್ರಾಂಚ್/ಕಮಿಟ್ ಅಥವಾ ನೇರ URL) + * ಸಮಸ್ಯೆಯನ್ನು ಪುನರಾವರ್ತಿಸಲು ಅಗತ್ಯವಿರುವ ಯಾವುದೇ ವಿಶೇಷ ಸಂರಚನೆ + * ಸಮಸ್ಯೆಯನ್ನು ಪುನರಾವರ್ತಿಸಲು ಹಂತ ಹಂತದ ಸೂಚನೆಗಳು + * ಸಾಬೀತು-ಆಫ್-ಕಾನ್ಸೆಪ್ಟ್ ಅಥವಾ ಎಕ್ಸ್‌ಪ್ಲಾಯಿಟ್ ಕೋಡ್ (ಸಾಧ್ಯವಾದರೆ) + * ಸಮಸ್ಯೆಯ ಪ್ರಭಾವ, ಮತ್ತು ಹೇಗೆ ಹ್ಯಾಕರ್ ಅದನ್ನು ದುರುಪಯೋಗ ಮಾಡಬಹುದು ಎಂಬುದು + +ಈ ಮಾಹಿತಿ ನಿಮ್ಮ ವರದಿಯನ್ನು ವೇಗವಾಗಿ ಪರಿಶೀಲಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. + +ನೀವು ಬಗ್ ಬೌಂಟಿಗಾಗಿ ವರದಿ ಮಾಡುತ್ತಿದ್ದರೆ, ಹೆಚ್ಚಿನ ಸಂಪೂರ್ಣ ವರದಿಗಳು ಹೆಚ್ಚಿನ ಬೌಂಟಿ ಬಹುಮಾನಕ್ಕೆ ಸಹಾಯ ಮಾಡಬಹುದು. ದಯವಿಟ್ಟು ನಮ್ಮ [Microsoft Bug Bounty Program](https://microsoft.com/msrc/bounty) ಪುಟವನ್ನು ನಮ್ಮ ಸಕ್ರಿಯ ಕಾರ್ಯಕ್ರಮಗಳ ಬಗ್ಗೆ ಹೆಚ್ಚಿನ ವಿವರಗಳಿಗೆ ಭೇಟಿ ನೀಡಿ. + +## ಇಚ್ಛಿತ ಭಾಷೆಗಳು + +ನಾವು ಎಲ್ಲಾ ಸಂವಹನಗಳು ಇಂಗ್ಲಿಷ್‌ನಲ್ಲಿ ಇರಬೇಕೆಂದು ಇಚ್ಛಿಸುತ್ತೇವೆ. + +## ನೀತಿ + +ಮೈಕ್ರೋಸಾಫ್ಟ್ [ಸಂಯೋಜಿತ ದುರ್ಬಲತೆ ಬಹಿರಂಗಪಡಿಸುವಿಕೆ](https://www.microsoft.com/en-us/msrc/cvd) ತತ್ವವನ್ನು ಅನುಸರಿಸುತ್ತದೆ. + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/SUPPORT.md b/translations/kn/SUPPORT.md new file mode 100644 index 000000000..d37aeae77 --- /dev/null +++ b/translations/kn/SUPPORT.md @@ -0,0 +1,31 @@ + +# ಬೆಂಬಲ +## ಸಮಸ್ಯೆಗಳನ್ನು ದಾಖಲಿಸುವುದು ಮತ್ತು ಸಹಾಯ ಪಡೆಯುವುದು ಹೇಗೆ + +ಸಮಸ್ಯೆಯನ್ನು ದಾಖಲಿಸುವ ಮೊದಲು, ದಯವಿಟ್ಟು ನಮ್ಮ [ತೊಂದರೆ ಪರಿಹಾರ ಮಾರ್ಗದರ್ಶಿ](TROUBLESHOOTING.md) ಅನ್ನು ಪರಿಶೀಲಿಸಿ, ಸ್ಥಾಪನೆ, ಸೆಟ್‌ಅಪ್ ಮತ್ತು ಪಾಠಗಳನ್ನು ನಡೆಸುವ ಸಾಮಾನ್ಯ ಸಮಸ್ಯೆಗಳ ಪರಿಹಾರಗಳಿಗಾಗಿ. + +ಈ ಯೋಜನೆ ಬಗ್‌ಗಳು ಮತ್ತು ವೈಶಿಷ್ಟ್ಯ ವಿನಂತಿಗಳನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಲು GitHub Issues ಅನ್ನು ಬಳಸುತ್ತದೆ. ನಕಲು ಸಮಸ್ಯೆಗಳನ್ನು ತಪ್ಪಿಸಲು ದಯವಿಟ್ಟು ಹೊಸ ಸಮಸ್ಯೆಗಳನ್ನು ದಾಖಲಿಸುವ ಮೊದಲು ಇತ್ತೀಚಿನ ಸಮಸ್ಯೆಗಳನ್ನು ಹುಡುಕಿ. ಹೊಸ ಸಮಸ್ಯೆಗಳಿಗೆ, ನಿಮ್ಮ ಬಗ್ ಅಥವಾ ವೈಶಿಷ್ಟ್ಯ ವಿನಂತಿಯನ್ನು ಹೊಸ ಸಮಸ್ಯೆಯಾಗಿ ದಾಖಲಿಸಿ. + +ಈ ಯೋಜನೆಯನ್ನು ಬಳಸುವ ಬಗ್ಗೆ ಸಹಾಯ ಮತ್ತು ಪ್ರಶ್ನೆಗಳಿಗಾಗಿ, ನೀವು ಕೂಡಾ: +- [ತೊಂದರೆ ಪರಿಹಾರ ಮಾರ್ಗದರ್ಶಿ](TROUBLESHOOTING.md) ಅನ್ನು ಪರಿಶೀಲಿಸಬಹುದು +- ನಮ್ಮ [Discord ಚರ್ಚೆಗಳು #ml-for-beginners ಚಾನೆಲ್](https://aka.ms/foundry/discord) ಗೆ ಭೇಟಿ ನೀಡಿ +- ಸಮಸ್ಯೆಯನ್ನು ದಾಖಲಿಸಿ + +## ಮೈಕ್ರೋಸಾಫ್ಟ್ ಬೆಂಬಲ ನೀತಿ + +ಈ ಸಂಗ್ರಹಣೆಗೆ ಬೆಂಬಲವು ಮೇಲ್ಕಂಡ ಸಂಪನ್ಮೂಲಗಳಿಗೆ ಮಾತ್ರ ಸೀಮಿತವಾಗಿದೆ. + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವಾಗಿ ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/TROUBLESHOOTING.md b/translations/kn/TROUBLESHOOTING.md new file mode 100644 index 000000000..f735d345c --- /dev/null +++ b/translations/kn/TROUBLESHOOTING.md @@ -0,0 +1,612 @@ + +# ಸಮಸ್ಯೆ ಪರಿಹಾರ ಮಾರ್ಗದರ್ಶಿ + +ಈ ಮಾರ್ಗದರ್ಶಿ ಯಂತ್ರ ಅಧ್ಯಯನ ಆರಂಭಿಕರ ಪಠ್ಯಕ್ರಮದೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವಾಗ ಸಾಮಾನ್ಯ ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಹರಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ನೀವು ಇಲ್ಲಿ ಪರಿಹಾರವನ್ನು ಕಂಡುಕೊಳ್ಳದಿದ್ದರೆ, ದಯವಿಟ್ಟು ನಮ್ಮ [Discord ಚರ್ಚೆಗಳು](https://aka.ms/foundry/discord) ಅನ್ನು ಪರಿಶೀಲಿಸಿ ಅಥವಾ [ಒಂದು ಸಮಸ್ಯೆಯನ್ನು ತೆರೆಯಿರಿ](https://github.com/microsoft/ML-For-Beginners/issues). + +## ವಿಷಯಗಳ ಪಟ್ಟಿಕೆ + +- [ಸ್ಥಾಪನೆ ಸಮಸ್ಯೆಗಳು](../..) +- [ಜುಪೈಟರ್ ನೋಟ್ಬುಕ್ ಸಮಸ್ಯೆಗಳು](../..) +- [ಪೈಥಾನ್ ಪ್ಯಾಕೇಜ್ ಸಮಸ್ಯೆಗಳು](../..) +- [R ಪರಿಸರ ಸಮಸ್ಯೆಗಳು](../..) +- [ಕ್ವಿಜ್ ಅಪ್ಲಿಕೇಶನ್ ಸಮಸ್ಯೆಗಳು](../..) +- [ಡೇಟಾ ಮತ್ತು ಫೈಲ್ ಪಥ ಸಮಸ್ಯೆಗಳು](../..) +- [ಸಾಮಾನ್ಯ ದೋಷ ಸಂದೇಶಗಳು](../..) +- [ಕಾರ್ಯಕ್ಷಮತೆ ಸಮಸ್ಯೆಗಳು](../..) +- [ಪರಿಸರ ಮತ್ತು ಸಂರಚನೆ](../..) + +--- + +## ಸ್ಥಾಪನೆ ಸಮಸ್ಯೆಗಳು + +### ಪೈಥಾನ್ ಸ್ಥಾಪನೆ + +**ಸಮಸ್ಯೆ**: `python: command not found` + +**ಪರಿಹಾರ**: +1. [python.org](https://www.python.org/downloads/) ನಿಂದ Python 3.8 ಅಥವಾ ಹೆಚ್ಚಿನ ಆವೃತ್ತಿಯನ್ನು ಸ್ಥಾಪಿಸಿ +2. ಸ್ಥಾಪನೆ ಪರಿಶೀಲಿಸಿ: `python --version` ಅಥವಾ `python3 --version` +3. macOS/Linux ನಲ್ಲಿ, `python` ಬದಲು `python3` ಬಳಸಬೇಕಾಗಬಹುದು + +**ಸಮಸ್ಯೆ**: ಬಹು ಪೈಥಾನ್ ಆವೃತ್ತಿಗಳು ಸಂಘರ್ಷ ಉಂಟುಮಾಡುತ್ತಿವೆ + +**ಪರಿಹಾರ**: +```bash +# ಪ್ರಾಜೆಕ್ಟ್‌ಗಳನ್ನು ವಿಭಜಿಸಲು ವರ್ಚುವಲ್ ಪರಿಸರಗಳನ್ನು ಬಳಸಿ +python -m venv ml-env + +# ವರ್ಚುವಲ್ ಪರಿಸರವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ +# ವಿಂಡೋಸ್‌ನಲ್ಲಿ: +ml-env\Scripts\activate +# ಮ್ಯಾಕ್‌ಒಎಸ್/ಲಿನಕ್ಸ್ನಲ್ಲಿ: +source ml-env/bin/activate +``` + +### ಜುಪೈಟರ್ ಸ್ಥಾಪನೆ + +**ಸಮಸ್ಯೆ**: `jupyter: command not found` + +**ಪರಿಹಾರ**: +```bash +# ಜುಪೈಟರ್ ಅನ್ನು ಸ್ಥಾಪಿಸಿ +pip install jupyter + +# ಅಥವಾ pip3 ಬಳಸಿ +pip3 install jupyter + +# ಸ್ಥಾಪನೆಯನ್ನು ಪರಿಶೀಲಿಸಿ +jupyter --version +``` + +**ಸಮಸ್ಯೆ**: ಜುಪೈಟರ್ ಬ್ರೌಸರ್‌ನಲ್ಲಿ ಪ್ರಾರಂಭವಾಗುತ್ತಿಲ್ಲ + +**ಪರಿಹಾರ**: +```bash +# ಬ್ರೌಸರ್ ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಲು ಪ್ರಯತ್ನಿಸಿ +jupyter notebook --browser=chrome + +# ಅಥವಾ ಟರ್ಮಿನಲ್‌ನಿಂದ ಟೋಕನ್ ಹೊಂದಿರುವ URL ಅನ್ನು ನಕಲಿಸಿ ಮತ್ತು ಬ್ರೌಸರ್‌ನಲ್ಲಿ ಕೈಯಿಂದ ಅಂಟಿಸಿ +# ಹುಡುಕಿ: http://localhost:8888/?token=... +``` + +### R ಸ್ಥಾಪನೆ + +**ಸಮಸ್ಯೆ**: R ಪ್ಯಾಕೇಜ್‌ಗಳು ಸ್ಥಾಪಿಸಲಾಗುತ್ತಿಲ್ಲ + +**ಪರಿಹಾರ**: +```r +# ನೀವು ಇತ್ತೀಚಿನ R ಆವೃತ್ತಿಯನ್ನು ಹೊಂದಿರುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ +# ಅವಲಂಬನೆಗಳೊಂದಿಗೆ ಪ್ಯಾಕೇಜುಗಳನ್ನು ಸ್ಥಾಪಿಸಿ +install.packages(c("tidyverse", "tidymodels", "caret"), dependencies = TRUE) + +# ಸಂಯೋಜನೆ ವಿಫಲವಾದರೆ, ಬೈನರಿ ಆವೃತ್ತಿಗಳನ್ನು ಸ್ಥಾಪಿಸಲು ಪ್ರಯತ್ನಿಸಿ +install.packages("package-name", type = "binary") +``` + +**ಸಮಸ್ಯೆ**: IRkernel ಜುಪೈಟರ್‌ನಲ್ಲಿ ಲಭ್ಯವಿಲ್ಲ + +**ಪರಿಹಾರ**: +```r +# R ಕಾನ್ಸೋಲ್‌ನಲ್ಲಿ +install.packages('IRkernel') +IRkernel::installspec(user = TRUE) +``` + +--- + +## ಜುಪೈಟರ್ ನೋಟ್ಬುಕ್ ಸಮಸ್ಯೆಗಳು + +### ಕರ್ಣಲ್ ಸಮಸ್ಯೆಗಳು + +**ಸಮಸ್ಯೆ**: ಕರ್ಣಲ್ ನಿರಂತರವಾಗಿ ಸಾಯುತ್ತಿದೆ ಅಥವಾ ಮರುಪ್ರಾರಂಭವಾಗುತ್ತಿದೆ + +**ಪರಿಹಾರ**: +1. ಕರ್ಣಲ್ ಮರುಪ್ರಾರಂಭಿಸಿ: `Kernel → Restart` +2. ಔಟ್‌ಪುಟ್ ತೆರವುಗೊಳಿಸಿ ಮತ್ತು ಮರುಪ್ರಾರಂಭಿಸಿ: `Kernel → Restart & Clear Output` +3. ಮೆಮೊರಿ ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಶೀಲಿಸಿ ([ಕಾರ್ಯಕ್ಷಮತೆ ಸಮಸ್ಯೆಗಳು](../..) ನೋಡಿ) +4. ಸಮಸ್ಯೆ ಇರುವ ಕೋಡ್ ಗುರುತಿಸಲು ಸೆಲ್‌ಗಳನ್ನು ಪ್ರತ್ಯೇಕವಾಗಿ ಚಾಲನೆ ಮಾಡಿ + +**ಸಮಸ್ಯೆ**: ತಪ್ಪು ಪೈಥಾನ್ ಕರ್ಣಲ್ ಆಯ್ಕೆಮಾಡಲಾಗಿದೆ + +**ಪರಿಹಾರ**: +1. ಪ್ರಸ್ತುತ ಕರ್ಣಲ್ ಪರಿಶೀಲಿಸಿ: `Kernel → Change Kernel` +2. ಸರಿಯಾದ ಪೈಥಾನ್ ಆವೃತ್ತಿಯನ್ನು ಆಯ್ಕೆಮಾಡಿ +3. ಕರ್ಣಲ್ ಇಲ್ಲದಿದ್ದರೆ, ಅದನ್ನು ರಚಿಸಿ: +```bash +python -m ipykernel install --user --name=ml-env +``` + +**ಸಮಸ್ಯೆ**: ಕರ್ಣಲ್ ಪ್ರಾರಂಭವಾಗುತ್ತಿಲ್ಲ + +**ಪರಿಹಾರ**: +```bash +# ipykernel ಅನ್ನು ಮರುಸ್ಥಾಪಿಸಿ +pip uninstall ipykernel +pip install ipykernel + +# ಕರ್ಣಲ್ ಅನ್ನು ಮತ್ತೆ ನೋಂದಣಿ ಮಾಡಿ +python -m ipykernel install --user +``` + +### ನೋಟ್ಬುಕ್ ಸೆಲ್ ಸಮಸ್ಯೆಗಳು + +**ಸಮಸ್ಯೆ**: ಸೆಲ್‌ಗಳು ಚಾಲನೆ ಆಗುತ್ತಿವೆ ಆದರೆ ಔಟ್‌ಪುಟ್ ತೋರಿಸುತ್ತಿಲ್ಲ + +**ಪರಿಹಾರ**: +1. ಸೆಲ್ ಇನ್ನೂ ಚಾಲನೆ ಆಗುತ್ತಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಿ (`[*]` ಸೂಚಕ ನೋಡಿ) +2. ಕರ್ಣಲ್ ಮರುಪ್ರಾರಂಭಿಸಿ ಮತ್ತು ಎಲ್ಲಾ ಸೆಲ್‌ಗಳನ್ನು ಚಾಲನೆ ಮಾಡಿ: `Kernel → Restart & Run All` +3. ಬ್ರೌಸರ್ ಕಾನ್ಸೋಲ್‌ನಲ್ಲಿ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ದೋಷಗಳನ್ನು ಪರಿಶೀಲಿಸಿ (F12) + +**ಸಮಸ್ಯೆ**: ಸೆಲ್‌ಗಳನ್ನು ಚಾಲನೆ ಮಾಡಲಾಗುತ್ತಿಲ್ಲ - "Run" ಕ್ಲಿಕ್ ಮಾಡಿದಾಗ ಪ್ರತಿಕ್ರಿಯೆ ಇಲ್ಲ + +**ಪರಿಹಾರ**: +1. ಟರ್ಮಿನಲ್‌ನಲ್ಲಿ ಜುಪೈಟರ್ ಸರ್ವರ್ ಇನ್ನೂ ಚಾಲನೆ ಆಗುತ್ತಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಿ +2. ಬ್ರೌಸರ್ ಪುಟವನ್ನು ರಿಫ್ರೆಶ್ ಮಾಡಿ +3. ನೋಟ್ಬುಕ್ ಅನ್ನು ಮುಚ್ಚಿ ಮತ್ತೆ ತೆರೆಯಿರಿ +4. ಜುಪೈಟರ್ ಸರ್ವರ್ ಮರುಪ್ರಾರಂಭಿಸಿ + +--- + +## ಪೈಥಾನ್ ಪ್ಯಾಕೇಜ್ ಸಮಸ್ಯೆಗಳು + +### ಆಮದು ದೋಷಗಳು + +**ಸಮಸ್ಯೆ**: `ModuleNotFoundError: No module named 'sklearn'` + +**ಪರಿಹಾರ**: +```bash +pip install scikit-learn + +# ಈ ಕೋರ್ಸ್‌ಗೆ ಸಾಮಾನ್ಯ ML ಪ್ಯಾಕೇಜುಗಳು +pip install scikit-learn pandas numpy matplotlib seaborn +``` + +**ಸಮಸ್ಯೆ**: `ImportError: cannot import name 'X' from 'sklearn'` + +**ಪರಿಹಾರ**: +```bash +# scikit-learn ಅನ್ನು ಇತ್ತೀಚಿನ ಆವೃತ್ತಿಗೆ ನವೀಕರಿಸಿ +pip install --upgrade scikit-learn + +# ಆವೃತ್ತಿಯನ್ನು ಪರಿಶೀಲಿಸಿ +python -c "import sklearn; print(sklearn.__version__)" +``` + +### ಆವೃತ್ತಿ ಸಂಘರ್ಷಗಳು + +**ಸಮಸ್ಯೆ**: ಪ್ಯಾಕೇಜ್ ಆವೃತ್ತಿ ಅಸಂಗತ ದೋಷಗಳು + +**ಪರಿಹಾರ**: +```bash +# ಹೊಸ ವರ್ಚುವಲ್ ಪರಿಸರವನ್ನು ರಚಿಸಿ +python -m venv fresh-env +source fresh-env/bin/activate # ಅಥವಾ Windows ನಲ್ಲಿ fresh-env\Scripts\activate + +# ಪ್ಯಾಕೇಜುಗಳನ್ನು ಹೊಸದಾಗಿ ಸ್ಥಾಪಿಸಿ +pip install jupyter scikit-learn pandas numpy matplotlib seaborn + +# ನಿರ್ದಿಷ್ಟ ಆವೃತ್ತಿ ಬೇಕಾದರೆ +pip install scikit-learn==1.3.0 +``` + +**ಸಮಸ್ಯೆ**: `pip install` ಅನುಮತಿ ದೋಷಗಳೊಂದಿಗೆ ವಿಫಲವಾಗಿದೆ + +**ಪರಿಹಾರ**: +```bash +# ಪ್ರಸ್ತುತ ಬಳಕೆದಾರನಿಗಾಗಿ ಮಾತ್ರ ಸ್ಥಾಪಿಸಿ +pip install --user package-name + +# ಅಥವಾ ವರ್ಚುವಲ್ ಪರಿಸರವನ್ನು ಬಳಸಿ (ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ) +python -m venv venv +source venv/bin/activate +pip install package-name +``` + +### ಡೇಟಾ ಲೋಡಿಂಗ್ ಸಮಸ್ಯೆಗಳು + +**ಸಮಸ್ಯೆ**: CSV ಫೈಲ್‌ಗಳನ್ನು ಲೋಡ್ ಮಾಡುವಾಗ `FileNotFoundError` + +**ಪರಿಹಾರ**: +```python +import os +# ಪ್ರಸ್ತುತ ಕಾರ್ಯನಿರ್ವಹಣಾ ಡೈರೆಕ್ಟರಿಯನ್ನು ಪರಿಶೀಲಿಸಿ +print(os.getcwd()) + +# ನೋಟ್ಬುಕ್ ಸ್ಥಳದಿಂದ ಸಂಬಂಧಿತ ಮಾರ್ಗಗಳನ್ನು ಬಳಸಿ +df = pd.read_csv('../../data/filename.csv') + +# ಅಥವಾ ಪೂರ್ಣ ಮಾರ್ಗಗಳನ್ನು ಬಳಸಿ +df = pd.read_csv('/full/path/to/data/filename.csv') +``` + +--- + +## R ಪರಿಸರ ಸಮಸ್ಯೆಗಳು + +### ಪ್ಯಾಕೇಜ್ ಸ್ಥಾಪನೆ + +**ಸಮಸ್ಯೆ**: ಸಂಯೋಜನೆ ದೋಷಗಳೊಂದಿಗೆ ಪ್ಯಾಕೇಜ್ ಸ್ಥಾಪನೆ ವಿಫಲವಾಗಿದೆ + +**ಪರಿಹಾರ**: +```r +# ಬೈನರಿ ಆವೃತ್ತಿಯನ್ನು ಸ್ಥಾಪಿಸಿ (Windows/macOS) +install.packages("package-name", type = "binary") + +# ಪ್ಯಾಕೇಜುಗಳು ಅಗತ್ಯವಿದ್ದರೆ R ಅನ್ನು ಇತ್ತೀಚಿನ ಆವೃತ್ತಿಗೆ ನವೀಕರಿಸಿ +# R ಆವೃತ್ತಿಯನ್ನು ಪರಿಶೀಲಿಸಿ +R.version.string + +# ಸಿಸ್ಟಮ್ ಅವಲಂಬನೆಗಳನ್ನು ಸ್ಥಾಪಿಸಿ (Linux) +# Ubuntu/Debian ಗಾಗಿ, ಟರ್ಮಿನಲ್‌ನಲ್ಲಿ: +# sudo apt-get install r-base-dev +``` + +**ಸಮಸ್ಯೆ**: `tidyverse` ಸ್ಥಾಪಿಸಲಾಗುತ್ತಿಲ್ಲ + +**ಪರಿಹಾರ**: +```r +# ಮೊದಲು ಅವಲಂಬನೆಗಳನ್ನು ಸ್ಥಾಪಿಸಿ +install.packages(c("rlang", "vctrs", "pillar")) + +# ನಂತರ tidyverse ಅನ್ನು ಸ್ಥಾಪಿಸಿ +install.packages("tidyverse") + +# ಅಥವಾ ಘಟಕಗಳನ್ನು ಪ್ರತ್ಯೇಕವಾಗಿ ಸ್ಥಾಪಿಸಿ +install.packages(c("dplyr", "ggplot2", "tidyr", "readr")) +``` + +### RMarkdown ಸಮಸ್ಯೆಗಳು + +**ಸಮಸ್ಯೆ**: RMarkdown ರೆಂಡರ್ ಆಗುತ್ತಿಲ್ಲ + +**ಪರಿಹಾರ**: +```r +# rmarkdown ಅನ್ನು ಸ್ಥಾಪಿಸಿ/ನವೀಕರಿಸಿ +install.packages("rmarkdown") + +# ಅಗತ್ಯವಿದ್ದರೆ pandoc ಅನ್ನು ಸ್ಥಾಪಿಸಿ +install.packages("pandoc") + +# PDF ಔಟ್‌ಪುಟ್‌ಗಾಗಿ, tinytex ಅನ್ನು ಸ್ಥಾಪಿಸಿ +install.packages("tinytex") +tinytex::install_tinytex() +``` + +--- + +## ಕ್ವಿಜ್ ಅಪ್ಲಿಕೇಶನ್ ಸಮಸ್ಯೆಗಳು + +### ನಿರ್ಮಾಣ ಮತ್ತು ಸ್ಥಾಪನೆ + +**ಸಮಸ್ಯೆ**: `npm install` ವಿಫಲವಾಗಿದೆ + +**ಪರಿಹಾರ**: +```bash +# npm ಕ್ಯಾಶೆ ತೆರವುಗೊಳಿಸಿ +npm cache clean --force + +# node_modules ಮತ್ತು package-lock.json ತೆಗೆದುಹಾಕಿ +rm -rf node_modules package-lock.json + +# ಮರುಸ್ಥಾಪಿಸಿ +npm install + +# ಇನ್ನೂ ವಿಫಲವಾದರೆ, legacy peer deps ಜೊತೆಗೆ ಪ್ರಯತ್ನಿಸಿ +npm install --legacy-peer-deps +``` + +**ಸಮಸ್ಯೆ**: ಪೋರ್ಟ್ 8080 ಈಗಾಗಲೇ ಬಳಕೆಯಲ್ಲಿದೆ + +**ಪರಿಹಾರ**: +```bash +# ವಿಭಿನ್ನ ಪೋರ್ಟ್ ಬಳಸಿ +npm run serve -- --port 8081 + +# ಅಥವಾ ಪೋರ್ಟ್ 8080 ಬಳಸುತ್ತಿರುವ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಹುಡುಕಿ ಮತ್ತು ಕೊಲ್ಲಿರಿ +# ಲಿನಕ್ಸ್ನಲ್ಲಿ/ಮ್ಯಾಕ್‌ಒಎಸ್‌ನಲ್ಲಿ: +lsof -ti:8080 | xargs kill -9 + +# ವಿಂಡೋಸ್‌ನಲ್ಲಿ: +netstat -ano | findstr :8080 +taskkill /PID /F +``` + +### ನಿರ್ಮಾಣ ದೋಷಗಳು + +**ಸಮಸ್ಯೆ**: `npm run build` ವಿಫಲವಾಗಿದೆ + +**ಪರಿಹಾರ**: +```bash +# ನೋಡ್.js ಆವೃತ್ತಿಯನ್ನು ಪರಿಶೀಲಿಸಿ (14+ ಆಗಿರಬೇಕು) +node --version + +# ಅಗತ್ಯವಿದ್ದರೆ ನೋಡ್.js ಅನ್ನು ನವೀಕರಿಸಿ +# ನಂತರ ಸ್ವಚ್ಛ ಸ್ಥಾಪನೆ ಮಾಡಿ +rm -rf node_modules package-lock.json +npm install +npm run build +``` + +**ಸಮಸ್ಯೆ**: ಲಿಂಟಿಂಗ್ ದೋಷಗಳು ನಿರ್ಮಾಣವನ್ನು ತಡೆಯುತ್ತಿವೆ + +**ಪರಿಹಾರ**: +```bash +# ಸ್ವಯಂ ಸರಿಪಡಿಸಬಹುದಾದ ಸಮಸ್ಯೆಗಳನ್ನು ಸರಿಪಡಿಸಿ +npm run lint -- --fix + +# ಅಥವಾ ತಾತ್ಕಾಲಿಕವಾಗಿ ನಿರ್ಮಾಣದಲ್ಲಿ ಲಿಂಟಿಂಗ್ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ +# (ಉತ್ಪಾದನೆಗಾಗಿ ಶಿಫಾರಸು ಮಾಡಲಾಗುವುದಿಲ್ಲ) +``` + +--- + +## ಡೇಟಾ ಮತ್ತು ಫೈಲ್ ಪಥ ಸಮಸ್ಯೆಗಳು + +### ಪಥ ಸಮಸ್ಯೆಗಳು + +**ಸಮಸ್ಯೆ**: ನೋಟ್ಬುಕ್‌ಗಳನ್ನು ಚಾಲನೆ ಮಾಡುವಾಗ ಡೇಟಾ ಫೈಲ್‌ಗಳು ಕಂಡುಬರುತ್ತಿಲ್ಲ + +**ಪರಿಹಾರ**: +1. **ನೋಟ್ಬುಕ್‌ಗಳನ್ನು ಯಾವ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿದ್ದರೂ ಅದರಿಂದಲೇ ಚಾಲನೆ ಮಾಡಿರಿ** + ```bash + cd /path/to/lesson/folder + jupyter notebook + ``` + +2. **ಕೋಡ್‌ನಲ್ಲಿ ಸಂಬಂಧಿತ ಪಥಗಳನ್ನು ಪರಿಶೀಲಿಸಿ** + ```python + # ನೋಟ್ಬುಕ್ ಸ್ಥಳದಿಂದ ಸರಿಯಾದ ಮಾರ್ಗ + df = pd.read_csv('../data/filename.csv') + + # ನಿಮ್ಮ ಟರ್ಮಿನಲ್ ಸ್ಥಳದಿಂದ ಅಲ್ಲ + ``` + +3. **ಅವಶ್ಯಕತೆ ಇದ್ದರೆ ಪೂರ್ಣ ಪಥಗಳನ್ನು ಬಳಸಿ** + ```python + import os + base_path = os.path.dirname(os.path.abspath(__file__)) + data_path = os.path.join(base_path, 'data', 'filename.csv') + ``` + +### ಡೇಟಾ ಫೈಲ್‌ಗಳು ಕಾಣೆಯಾದವು + +**ಸಮಸ್ಯೆ**: ಡೇಟಾಸೆಟ್ ಫೈಲ್‌ಗಳು ಕಾಣೆಯಾಗಿದೆ + +**ಪರಿಹಾರ**: +1. ಡೇಟಾ ರೆಪೊಸಿಟರಿಯಲ್ಲಿ ಇರಬೇಕೇ ಎಂದು ಪರಿಶೀಲಿಸಿ - ಬಹುತೇಕ ಡೇಟಾಸೆಟ್‌ಗಳು ಸೇರಿವೆ +2. ಕೆಲವು ಪಾಠಗಳಿಗೆ ಡೇಟಾ ಡೌನ್‌ಲೋಡ್ ಅಗತ್ಯವಿರಬಹುದು - ಪಾಠ README ಪರಿಶೀಲಿಸಿ +3. ನೀವು ಇತ್ತೀಚಿನ ಬದಲಾವಣೆಗಳನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡಿಕೊಂಡಿದ್ದೀರಾ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ: + ```bash + git pull origin main + ``` + +--- + +## ಸಾಮಾನ್ಯ ದೋಷ ಸಂದೇಶಗಳು + +### ಮೆಮೊರಿ ದೋಷಗಳು + +**ದೋಷ**: `MemoryError` ಅಥವಾ ಡೇಟಾ ಪ್ರಕ್ರಿಯೆ ಮಾಡುವಾಗ ಕರ್ಣಲ್ ಸಾಯುತ್ತದೆ + +**ಪರಿಹಾರ**: +```python +# ಡೇಟಾವನ್ನು ತುಂಡುಗಳಾಗಿ ಲೋಡ್ ಮಾಡಿ +for chunk in pd.read_csv('large_file.csv', chunksize=10000): + process(chunk) + +# ಅಥವಾ ಅಗತ್ಯವಿರುವ ಕಾಲಮ್‌ಗಳನ್ನು ಮಾತ್ರ ಓದಿ +df = pd.read_csv('file.csv', usecols=['col1', 'col2']) + +# ಮುಗಿದ ಮೇಲೆ ಮೆಮೊರಿಯನ್ನು ಮುಕ್ತಗೊಳಿಸಿ +del large_dataframe +import gc +gc.collect() +``` + +### ಸಮಾಗಮ ಎಚ್ಚರಿಕೆಗಳು + +**ಎಚ್ಚರಿಕೆ**: `ConvergenceWarning: Maximum number of iterations reached` + +**ಪರಿಹಾರ**: +```python +from sklearn.linear_model import LogisticRegression + +# ಗರಿಷ್ಠ ಪುನರಾವೃತ್ತಿಗಳನ್ನು ಹೆಚ್ಚಿಸಿ +model = LogisticRegression(max_iter=1000) + +# ಅಥವಾ ಮೊದಲು ನಿಮ್ಮ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಮಾಪನ ಮಾಡಿ +from sklearn.preprocessing import StandardScaler +scaler = StandardScaler() +X_scaled = scaler.fit_transform(X) +``` + +### ಚಿತ್ರಣ ಸಮಸ್ಯೆಗಳು + +**ಸಮಸ್ಯೆ**: ಜುಪೈಟರ್‌ನಲ್ಲಿ ಚಿತ್ರಣಗಳು ತೋರಿಸುತ್ತಿಲ್ಲ + +**ಪರಿಹಾರ**: +```python +# ಇನ್‌ಲೈನ್ ಪ್ಲಾಟಿಂಗ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ +%matplotlib inline + +# ಪೈಪ್ಲಾಟ್ ಅನ್ನು ಆಮದುಮಾಡಿ +import matplotlib.pyplot as plt + +# ಪ್ಲಾಟ್ ಅನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ತೋರಿಸಿ +plt.plot(data) +plt.show() +``` + +**ಸಮಸ್ಯೆ**: ಸೀಬೋನ್ ಚಿತ್ರಣಗಳು ವಿಭಿನ್ನವಾಗಿ ಕಾಣುತ್ತಿವೆ ಅಥವಾ ದೋಷಗಳನ್ನು ತೋರಿಸುತ್ತಿವೆ + +**ಪರಿಹಾರ**: +```python +import warnings +warnings.filterwarnings('ignore', category=UserWarning) + +# ಹೊಂದಾಣಿಕೆಯ ಆವೃತ್ತಿಗೆ ನವೀಕರಿಸಿ +# pip install --upgrade seaborn matplotlib +``` + +### ಯುನಿಕೋಡ್/ಎನ್‌ಕೋಡಿಂಗ್ ದೋಷಗಳು + +**ಸಮಸ್ಯೆ**: ಫೈಲ್ ಓದುವಾಗ `UnicodeDecodeError` + +**ಪರಿಹಾರ**: +```python +# ಎನ್‌ಕೋಡಿಂಗ್ ಅನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ಸೂಚಿಸಿ +df = pd.read_csv('file.csv', encoding='utf-8') + +# ಅಥವಾ ವಿಭಿನ್ನ ಎನ್‌ಕೋಡಿಂಗ್ ಪ್ರಯತ್ನಿಸಿ +df = pd.read_csv('file.csv', encoding='latin-1') + +# ಸಮಸ್ಯೆಯಾದ ಅಕ್ಷರಗಳನ್ನು ತಪ್ಪಿಸಲು errors='ignore' ಬಳಸಿರಿ +df = pd.read_csv('file.csv', encoding='utf-8', errors='ignore') +``` + +--- + +## ಕಾರ್ಯಕ್ಷಮತೆ ಸಮಸ್ಯೆಗಳು + +### ನಿಧಾನ ನೋಟ್ಬುಕ್ ಚಾಲನೆ + +**ಸಮಸ್ಯೆ**: ನೋಟ್ಬುಕ್‌ಗಳು ಬಹಳ ನಿಧಾನವಾಗಿ ಚಾಲನೆ ಆಗುತ್ತಿವೆ + +**ಪರಿಹಾರ**: +1. **ಮೆಮೊರಿ ಮುಕ್ತಗೊಳಿಸಲು ಕರ್ಣಲ್ ಮರುಪ್ರಾರಂಭಿಸಿ**: `Kernel → Restart` +2. **ಬಳಸದ ನೋಟ್ಬುಕ್‌ಗಳನ್ನು ಮುಚ್ಚಿ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಮುಕ್ತಗೊಳಿಸಿ** +3. **ಪರೀಕ್ಷೆಗಾಗಿ ಸಣ್ಣ ಡೇಟಾ ಮಾದರಿಗಳನ್ನು ಬಳಸಿ**: + ```python + # ಅಭಿವೃದ್ಧಿಯ ಸಮಯದಲ್ಲಿ ಉಪಸಮೂಹದೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಿ + df_sample = df.sample(n=1000) + ``` +4. **ನಿಮ್ಮ ಕೋಡ್‌ನ ಬಾಟಲ್‌ನೆಕ್‌ಗಳನ್ನು ಕಂಡುಹಿಡಿಯಲು ಪ್ರೊಫೈಲ್ ಮಾಡಿ**: + ```python + %time operation() # ಸಮಯ ಏಕೈಕ ಕಾರ್ಯಾಚರಣೆ + %timeit operation() # ಬಹು ಬಾರಿ ಚಾಲನೆಗಳೊಂದಿಗೆ ಸಮಯ + ``` + +### ಹೆಚ್ಚಿನ ಮೆಮೊರಿ ಬಳಕೆ + +**ಸಮಸ್ಯೆ**: ಸಿಸ್ಟಮ್ ಮೆಮೊರಿ ಮುಗಿಯುತ್ತಿದೆ + +**ಪರಿಹಾರ**: +```python +# ಮೆಮೊರಿ ಬಳಕೆಯನ್ನು ಪರಿಶೀಲಿಸಿ +df.info(memory_usage='deep') + +# ಡೇಟಾ ಪ್ರಕಾರಗಳನ್ನು ಸುಧಾರಿಸಿ +df['column'] = df['column'].astype('int32') # int64 ಬದಲು + +# ಅನಾವಶ್ಯಕ ಕಾಲಮ್ಗಳನ್ನು ತೆಗೆದುಹಾಕಿ +df = df[['col1', 'col2']] # ಅಗತ್ಯವಿರುವ ಕಾಲಮ್ಗಳನ್ನು ಮಾತ್ರ ಇಡಿ + +# ಬ್ಯಾಚ್‌ಗಳಲ್ಲಿ ಪ್ರಕ್ರಿಯೆ ಮಾಡಿ +for batch in np.array_split(df, 10): + process(batch) +``` + +--- + +## ಪರಿಸರ ಮತ್ತು ಸಂರಚನೆ + +### ವರ್ಚುವಲ್ ಪರಿಸರ ಸಮಸ್ಯೆಗಳು + +**ಸಮಸ್ಯೆ**: ವರ್ಚುವಲ್ ಪರಿಸರ ಸಕ್ರಿಯವಾಗುತ್ತಿಲ್ಲ + +**ಪರಿಹಾರ**: +```bash +# ವಿಂಡೋಸ್ +python -m venv venv +venv\Scripts\activate.bat + +# ಮ್ಯಾಕ್‌ಒಎಸ್/ಲಿನಕ್ಸ +python3 -m venv venv +source venv/bin/activate + +# ಸಕ್ರಿಯಗೊಂಡಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಿ (ಪ್ರಾಂಪ್ಟ್‌ನಲ್ಲಿ venv ಹೆಸರು ತೋರಿಸಬೇಕು) +which python # venv ಪೈಥಾನ್‌ಗೆ ಸೂಚಿಸಬೇಕು +``` + +**ಸಮಸ್ಯೆ**: ಪ್ಯಾಕೇಜ್‌ಗಳು ಸ್ಥಾಪಿಸಲಾಗಿದೆ ಆದರೆ ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ ಕಂಡುಬರುತ್ತಿಲ್ಲ + +**ಪರಿಹಾರ**: +```bash +# ನೋಟ್ಬುಕ್ ಸರಿಯಾದ ಕರ್ಣಲ್ ಬಳಸುತ್ತಿರುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ +# ನಿಮ್ಮ ವಿ.ಎನ್.ಇ.ವಿ.ನಲ್ಲಿ ipykernel ಅನ್ನು ಸ್ಥಾಪಿಸಿ +pip install ipykernel +python -m ipykernel install --user --name=ml-env --display-name="Python (ml-env)" + +# ಜುಪಿಟರ್‌ನಲ್ಲಿ: ಕರ್ಣಲ್ → ಕರ್ಣಲ್ ಬದಲಿಸಿ → ಪೈಥಾನ್ (ml-env) +``` + +### ಗಿಟ್ ಸಮಸ್ಯೆಗಳು + +**ಸಮಸ್ಯೆ**: ಇತ್ತೀಚಿನ ಬದಲಾವಣೆಗಳನ್ನು ಪುಲ್ ಮಾಡಲಾಗುತ್ತಿಲ್ಲ - ಮರ್ಜ್ ಸಂಘರ್ಷಗಳು + +**ಪರಿಹಾರ**: +```bash +# ನಿಮ್ಮ ಬದಲಾವಣೆಗಳನ್ನು ಸ್ಟ್ಯಾಶ್ ಮಾಡಿ +git stash + +# ಇತ್ತೀಚಿನದನ್ನು ಪುಲ್ ಮಾಡಿ +git pull origin main + +# ನಿಮ್ಮ ಬದಲಾವಣೆಗಳನ್ನು ಮರು ಅನ್ವಯಿಸಿ +git stash pop + +# ಸಂಘರ್ಷಗಳಿದ್ದರೆ, ಕೈಯಿಂದ ಪರಿಹರಿಸಿ ಅಥವಾ: +git checkout --theirs path/to/file # ರಿಮೋಟ್ ಆವೃತ್ತಿಯನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ +git checkout --ours path/to/file # ನಿಮ್ಮ ಆವೃತ್ತಿಯನ್ನು ಉಳಿಸಿ +``` + +### VS ಕೋಡ್ ಏಕೀಕರಣ + +**ಸಮಸ್ಯೆ**: ಜುಪೈಟರ್ ನೋಟ್ಬುಕ್‌ಗಳು VS ಕೋಡ್‌ನಲ್ಲಿ ತೆರೆಯುತ್ತಿಲ್ಲ + +**ಪರಿಹಾರ**: +1. VS ಕೋಡ್‌ನಲ್ಲಿ ಪೈಥಾನ್ ವಿಸ್ತರಣೆ ಸ್ಥಾಪಿಸಿ +2. VS ಕೋಡ್‌ನಲ್ಲಿ ಜುಪೈಟರ್ ವಿಸ್ತರಣೆ ಸ್ಥಾಪಿಸಿ +3. ಸರಿಯಾದ ಪೈಥಾನ್ ಇಂಟರ್ಪ್ರೀಟರ್ ಆಯ್ಕೆಮಾಡಿ: `Ctrl+Shift+P` → "Python: Select Interpreter" +4. VS ಕೋಡ್ ಮರುಪ್ರಾರಂಭಿಸಿ + +--- + +## ಹೆಚ್ಚುವರಿ ಸಂಪನ್ಮೂಲಗಳು + +- **Discord ಚರ್ಚೆಗಳು**: [#ml-for-beginners ಚಾನೆಲ್‌ನಲ್ಲಿ ಪ್ರಶ್ನೆಗಳನ್ನು ಕೇಳಿ ಮತ್ತು ಪರಿಹಾರಗಳನ್ನು ಹಂಚಿಕೊಳ್ಳಿ](https://aka.ms/foundry/discord) +- **Microsoft Learn**: [ML for Beginners ಘಟಕಗಳು](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum) +- **ವೀಡಿಯೊ ಪಾಠಗಳು**: [YouTube ಪ್ಲೇಲಿಸ್ಟ್](https://aka.ms/ml-beginners-videos) +- **ಸಮಸ್ಯೆ ಟ್ರ್ಯಾಕರ್**: [ದೋಷಗಳನ್ನು ವರದಿ ಮಾಡಿ](https://github.com/microsoft/ML-For-Beginners/issues) + +--- + +## ಇನ್ನೂ ಸಮಸ್ಯೆಗಳಿವೆಯೇ? + +ಮೇಲಿನ ಪರಿಹಾರಗಳನ್ನು ಪ್ರಯತ್ನಿಸಿದರೂ ಸಮಸ್ಯೆಗಳು ಮುಂದುವರೆದರೆ: + +1. **ಇದೀಗಿರುವ ಸಮಸ್ಯೆಗಳನ್ನು ಹುಡುಕಿ**: [GitHub Issues](https://github.com/microsoft/ML-For-Beginners/issues) +2. **Discord ಚರ್ಚೆಗಳನ್ನು ಪರಿಶೀಲಿಸಿ**: [Discord Discussions](https://aka.ms/foundry/discord) +3. **ಹೊಸ ಸಮಸ್ಯೆಯನ್ನು ತೆರೆಯಿರಿ**: ಒಳಗೊಂಡಿರಲಿ: + - ನಿಮ್ಮ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಮತ್ತು ಆವೃತ್ತಿ + - ಪೈಥಾನ್/R ಆವೃತ್ತಿ + - ದೋಷ ಸಂದೇಶ (ಪೂರ್ಣ ಟ್ರೇಸ್‌ಬ್ಯಾಕ್) + - ಸಮಸ್ಯೆಯನ್ನು ಪುನರಾವರ್ತಿಸುವ ಹಂತಗಳು + - ನೀವು ಈಗಾಗಲೇ ಪ್ರಯತ್ನಿಸಿದವು + +ನಾವು ಸಹಾಯ ಮಾಡಲು ಇಲ್ಲಿ ಇದ್ದೇವೆ! 🚀 + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/docs/_sidebar.md b/translations/kn/docs/_sidebar.md new file mode 100644 index 000000000..7291ebf05 --- /dev/null +++ b/translations/kn/docs/_sidebar.md @@ -0,0 +1,59 @@ + +- ಪರಿಚಯ + - [ಯಂತ್ರ ಅಧ್ಯಯನಕ್ಕೆ ಪರಿಚಯ](../1-Introduction/1-intro-to-ML/README.md) + - [ಯಂತ್ರ ಅಧ್ಯಯನದ ಇತಿಹಾಸ](../1-Introduction/2-history-of-ML/README.md) + - [ಯಂತ್ರ ಅಧ್ಯಯನ ಮತ್ತು ನ್ಯಾಯತತೆ](../1-Introduction/3-fairness/README.md) + - [ಯಂತ್ರ ಅಧ್ಯಯನದ ತಂತ್ರಗಳು](../1-Introduction/4-techniques-of-ML/README.md) + +- ರಿಗ್ರೆಶನ್ + - [ವ್ಯವಹಾರದ ಸಾಧನಗಳು](../2-Regression/1-Tools/README.md) + - [ಡೇಟಾ](../2-Regression/2-Data/README.md) + - [ರೇಖೀಯ ರಿಗ್ರೆಶನ್](../2-Regression/3-Linear/README.md) + - [ಲಾಗಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್](../2-Regression/4-Logistic/README.md) + +- ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ಮಿಸಿ + - [ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್](../3-Web-App/1-Web-App/README.md) + +- ವರ್ಗೀಕರಣ + - [ವರ್ಗೀಕರಣಕ್ಕೆ ಪರಿಚಯ](../4-Classification/1-Introduction/README.md) + - [ವರ್ಗೀಕರಣಗಳು 1](../4-Classification/2-Classifiers-1/README.md) + - [ವರ್ಗೀಕರಣಗಳು 2](../4-Classification/3-Classifiers-2/README.md) + - [ಅನ್ವಯಿಸಿದ ಯಂತ್ರ ಅಧ್ಯಯನ](../4-Classification/4-Applied/README.md) + +- ಗುಂಪುಮಾಡುವಿಕೆ + - [ನಿಮ್ಮ ಡೇಟಾವನ್ನು ದೃಶ್ಯೀಕರಿಸಿ](../5-Clustering/1-Visualize/README.md) + - [ಕೆ-ಮೀನ್ಸ್](../5-Clustering/2-K-Means/README.md) + +- ನೈಸರ್ಗಿಕ ಭಾಷಾ ಪ್ರಕ್ರಿಯೆ + - [ನೈಸರ್ಗಿಕ ಭಾಷಾ ಪ್ರಕ್ರಿಯೆಗೆ ಪರಿಚಯ](../6-NLP/1-Introduction-to-NLP/README.md) + - [ನೈಸರ್ಗಿಕ ಭಾಷಾ ಪ್ರಕ್ರಿಯೆಯ ಕಾರ್ಯಗಳು](../6-NLP/2-Tasks/README.md) + - [ಅನುವಾದ ಮತ್ತು ಭಾವನೆ](../6-NLP/3-Translation-Sentiment/README.md) + - [ಹೋಟೆಲ್ ವಿಮರ್ಶೆಗಳು 1](../6-NLP/4-Hotel-Reviews-1/README.md) + - [ಹೋಟೆಲ್ ವಿಮರ್ಶೆಗಳು 2](../6-NLP/5-Hotel-Reviews-2/README.md) + +- ಕಾಲ ಸರಣಿ ಭವಿಷ್ಯವಾಣಿ + - [ಕಾಲ ಸರಣಿ ಭವಿಷ್ಯವಾಣಿಗೆ ಪರಿಚಯ](../7-TimeSeries/1-Introduction/README.md) + - [ಎರಿಮಾ](../7-TimeSeries/2-ARIMA/README.md) + - [ಎಸ್‌ವಿಆರ್](../7-TimeSeries/3-SVR/README.md) + +- ಬಲವರ್ಧಿತ ಅಧ್ಯಯನ + - [ಕ್ಯೂ-ಅಧ್ಯಯನ](../8-Reinforcement/1-QLearning/README.md) + - [ಜಿಮ್](../8-Reinforcement/2-Gym/README.md) + +- ನೈಜ ಜಗತ್ತಿನ ಯಂತ್ರ ಅಧ್ಯಯನ + - [ಅನ್ವಯಗಳು](../9-Real-World/1-Applications/README.md) + +--- + + +**ಅಸ್ವೀಕಾರ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/for-teachers.md b/translations/kn/for-teachers.md new file mode 100644 index 000000000..bbce2552e --- /dev/null +++ b/translations/kn/for-teachers.md @@ -0,0 +1,39 @@ + +## ಶಿಕ್ಷಕರಿಗಾಗಿ + +ನೀವು ಈ ಪಠ್ಯಕ್ರಮವನ್ನು ನಿಮ್ಮ ತರಗತಿಯಲ್ಲಿ ಬಳಸಲು ಇಚ್ಛಿಸುತ್ತೀರಾ? ದಯವಿಟ್ಟು ಮುಕ್ತವಾಗಿ ಬಳಸಿಕೊಳ್ಳಿ! + +ವಾಸ್ತವದಲ್ಲಿ, ನೀವು GitHub Classroom ಬಳಸಿ GitHub ನೊಳಗೆ ಇದನ್ನು ಬಳಸಬಹುದು. + +ಅದಕ್ಕಾಗಿ, ಈ ರೆಪೊವನ್ನು ಫೋರ್ಕ್ ಮಾಡಿ. ಪ್ರತಿಯೊಂದು ಪಾಠಕ್ಕಾಗಿ ನೀವು ಒಂದು ರೆಪೊ ಸೃಷ್ಟಿಸಬೇಕಾಗುತ್ತದೆ, ಆದ್ದರಿಂದ ಪ್ರತಿಯೊಂದು ಫೋಲ್ಡರ್ ಅನ್ನು ಪ್ರತ್ಯೇಕ ರೆಪೊಗೆ ಹೊರತೆಗೆಯಬೇಕಾಗುತ್ತದೆ. ಆ ರೀತಿಯಲ್ಲಿ, [GitHub Classroom](https://classroom.github.com/classrooms) ಪ್ರತಿ ಪಾಠವನ್ನು ಪ್ರತ್ಯೇಕವಾಗಿ ಹಿಡಿಯಬಹುದು. + +ಈ [ಪೂರ್ಣ ಸೂಚನೆಗಳು](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) ನಿಮ್ಮ ತರಗತಿಯನ್ನು ಹೇಗೆ ಸೆಟ್ ಅಪ್ ಮಾಡಬೇಕೆಂದು ನಿಮಗೆ ತಿಳಿಸುವುದು. + +## ರೆಪೊವನ್ನು ಹಾಗೆ ಬಳಸುವುದು + +ನೀವು GitHub Classroom ಬಳಸದೆ ಈ ರೆಪೊವನ್ನು ಪ್ರಸ್ತುತ ಸ್ಥಿತಿಯಲ್ಲಿ ಬಳಸಲು ಇಚ್ಛಿಸಿದರೆ, ಅದು ಸಹ ಸಾಧ್ಯ. ನೀವು ನಿಮ್ಮ ವಿದ್ಯಾರ್ಥಿಗಳೊಂದಿಗೆ ಯಾವ ಪಾಠವನ್ನು ಒಟ್ಟಿಗೆ ಕೆಲಸ ಮಾಡಬೇಕೆಂದು ಸಂವಹನ ಮಾಡಬೇಕಾಗುತ್ತದೆ. + +ಆನ್ಲೈನ್ ಫಾರ್ಮ್ಯಾಟ್ (Zoom, Teams, ಅಥವಾ ಇತರೆ) ನಲ್ಲಿ ನೀವು ಕ್ವಿಜ್‌ಗಳಿಗಾಗಿ ಬ್ರೇಕ್‌ಔಟ್ ರೂಮ್ಗಳನ್ನು ರೂಪಿಸಬಹುದು ಮತ್ತು ವಿದ್ಯಾರ್ಥಿಗಳನ್ನು ಕಲಿಯಲು ಸಿದ್ಧರಾಗಲು ಮಾರ್ಗದರ್ಶನ ಮಾಡಬಹುದು. ನಂತರ ವಿದ್ಯಾರ್ಥಿಗಳನ್ನು ಕ್ವಿಜ್‌ಗಳಿಗೆ ಆಹ್ವಾನಿಸಿ, ನಿರ್ದಿಷ್ಟ ಸಮಯದಲ್ಲಿ 'issues' ಆಗಿ ಉತ್ತರಗಳನ್ನು ಸಲ್ಲಿಸಲು ಹೇಳಬಹುದು. ನೀವು ಬಯಸಿದರೆ, ವಿದ್ಯಾರ್ಥಿಗಳು ಸಹಕಾರದಿಂದ ಹೊರಗೆ ಕೆಲಸ ಮಾಡಲು, ಅಸೈನ್ಮೆಂಟ್‌ಗಳಿಗೂ ಇದೇ ರೀತಿಯ ವ್ಯವಸ್ಥೆ ಮಾಡಬಹುದು. + +ನೀವು ಹೆಚ್ಚು ಖಾಸಗಿ ಫಾರ್ಮ್ಯಾಟ್ ಇಚ್ಛಿಸಿದರೆ, ವಿದ್ಯಾರ್ಥಿಗಳನ್ನು ಪಠ್ಯಕ್ರಮವನ್ನು ಪಾಠದ ಮೂಲಕ ಫೋರ್ಕ್ ಮಾಡಿ ತಮ್ಮ ಸ್ವಂತ GitHub ರೆಪೊಗಳಲ್ಲಿ ಖಾಸಗಿ ರೆಪೊಗಳಾಗಿ ಇಟ್ಟುಕೊಳ್ಳಲು ಹೇಳಿ, ಮತ್ತು ನಿಮಗೆ ಪ್ರವೇಶ ನೀಡಲು ಹೇಳಿ. ನಂತರ ಅವರು ಖಾಸಗಿ ರೀತಿಯಲ್ಲಿ ಕ್ವಿಜ್‌ಗಳು ಮತ್ತು ಅಸೈನ್ಮೆಂಟ್‌ಗಳನ್ನು ಪೂರ್ಣಗೊಳಿಸಿ, ನಿಮ್ಮ ತರಗತಿ ರೆಪೊದಲ್ಲಿ issues ಮೂಲಕ ನಿಮಗೆ ಸಲ್ಲಿಸಬಹುದು. + +ಆನ್ಲೈನ್ ತರಗತಿ ಫಾರ್ಮ್ಯಾಟ್‌ನಲ್ಲಿ ಇದನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವ ಅನೇಕ ಮಾರ್ಗಗಳಿವೆ. ದಯವಿಟ್ಟು ನಿಮಗೆ ಯಾವುದು ಉತ್ತಮವಾಗಿ ಕೆಲಸ ಮಾಡುತ್ತದೆ ಎಂದು ನಮಗೆ ತಿಳಿಸಿ! + +## ದಯವಿಟ್ಟು ನಿಮ್ಮ ಅಭಿಪ್ರಾಯವನ್ನು ನೀಡಿ! + +ನಾವು ಈ ಪಠ್ಯಕ್ರಮವನ್ನು ನಿಮಗೂ ನಿಮ್ಮ ವಿದ್ಯಾರ್ಥಿಗಳಿಗೂ ಉಪಯುಕ್ತವಾಗಿಸಲು ಬಯಸುತ್ತೇವೆ. ದಯವಿಟ್ಟು ನಮಗೆ [ಪ್ರತಿಕ್ರಿಯೆ](https://forms.microsoft.com/Pages/ResponsePage.aspx?id=v4j5cvGGr0GRqy180BHbR2humCsRZhxNuI79cm6n0hRUQzRVVU9VVlU5UlFLWTRLWlkyQUxORTg5WS4u) ನೀಡಿ. + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/quiz-app/README.md b/translations/kn/quiz-app/README.md new file mode 100644 index 000000000..93349597a --- /dev/null +++ b/translations/kn/quiz-app/README.md @@ -0,0 +1,128 @@ + +# ಪ್ರಶ್ನೋತ್ತರಗಳು + +ಈ ಪ್ರಶ್ನೋತ್ತರಗಳು https://aka.ms/ml-beginners ನಲ್ಲಿ ML ಪಠ್ಯಕ್ರಮದ ಪೂರ್ವ ಮತ್ತು ನಂತರದ ಪ್ರಶ್ನೋತ್ತರಗಳಾಗಿವೆ + +## ಪ್ರಾಜೆಕ್ಟ್ ಸೆಟಪ್ + +``` +npm install +``` + +### ಅಭಿವೃದ್ಧಿಗಾಗಿ ಸಂಯೋಜನೆ ಮತ್ತು ಹಾಟ್-ರಿಲೋಡ್ + +``` +npm run serve +``` + +### ಉತ್ಪಾದನೆಗಾಗಿ ಸಂಯೋಜನೆ ಮತ್ತು ಮಿನಿಫೈ + +``` +npm run build +``` + +### ಫೈಲ್‌ಗಳನ್ನು ಲಿಂಟ್ ಮಾಡಿ ಮತ್ತು ಸರಿಪಡಿಸಿ + +``` +npm run lint +``` + +### ಸಂರಚನೆಯನ್ನು ಕಸ್ಟಮೈಸ್ ಮಾಡಿ + +[Configuration Reference](https://cli.vuejs.org/config/) ಅನ್ನು ನೋಡಿ. + +ಕ್ರೆಡಿಟ್ಸ್: ಈ ಪ್ರಶ್ನೋತ್ತರ ಅಪ್ಲಿಕೇಶನ್‌ನ ಮೂಲ ಆವೃತ್ತಿಗೆ ಧನ್ಯವಾದಗಳು: https://github.com/arpan45/simple-quiz-vue + +## ಅಜೂರ್‌ಗೆ ನಿಯೋಜನೆ + +ನಿಮಗೆ ಪ್ರಾರಂಭಿಸಲು ಸಹಾಯ ಮಾಡುವ ಹಂತ ಹಂತದ ಮಾರ್ಗದರ್ಶಿ ಇಲ್ಲಿದೆ: + +1. GitHub ರೆಪೊಸಿಟರಿಯನ್ನು ಫೋರ್ಕ್ ಮಾಡಿ +ನಿಮ್ಮ ಸ್ಥಿರ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಕೋಡ್ ನಿಮ್ಮ GitHub ರೆಪೊಸಿಟರಿಯಲ್ಲಿ ಇರಬೇಕು. ಈ ರೆಪೊಸಿಟರಿಯನ್ನು ಫೋರ್ಕ್ ಮಾಡಿ. + +2. ಅಜೂರ್ ಸ್ಥಿರ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ರಚಿಸಿ +- [ಅಜೂರ್ ಖಾತೆ](http://azure.microsoft.com) ರಚಿಸಿ +- [ಅಜೂರ್ ಪೋರ್ಟಲ್](https://portal.azure.com) ಗೆ ಹೋಗಿ +- "Create a resource" ಕ್ಲಿಕ್ ಮಾಡಿ ಮತ್ತು "Static Web App" ಅನ್ನು ಹುಡುಕಿ. +- "Create" ಕ್ಲಿಕ್ ಮಾಡಿ. + +3. ಸ್ಥಿರ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಸಂರಚಿಸಿ +- ಮೂಲಭೂತಗಳು: ಸಬ್ಸ್ಕ್ರಿಪ್ಷನ್: ನಿಮ್ಮ ಅಜೂರ್ ಸಬ್ಸ್ಕ್ರಿಪ್ಷನ್ ಆಯ್ಕೆಮಾಡಿ. +- ರಿಸೋರ್ಸ್ ಗ್ರೂಪ್: ಹೊಸ ರಿಸೋರ್ಸ್ ಗ್ರೂಪ್ ರಚಿಸಿ ಅಥವಾ ಇತ್ತೀಚಿನದನ್ನು ಬಳಸಿ. +- ಹೆಸರು: ನಿಮ್ಮ ಸ್ಥಿರ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್‌ಗೆ ಹೆಸರು ನೀಡಿ. +- ಪ್ರದೇಶ: ನಿಮ್ಮ ಬಳಕೆದಾರರಿಗೆ ಸಮೀಪದ ಪ್ರದೇಶವನ್ನು ಆಯ್ಕೆಮಾಡಿ. + +- #### ನಿಯೋಜನೆ ವಿವರಗಳು: +- ಮೂಲ: "GitHub" ಆಯ್ಕೆಮಾಡಿ. +- GitHub ಖಾತೆ: ಅಜೂರ್‌ಗೆ ನಿಮ್ಮ GitHub ಖಾತೆಗೆ ಪ್ರವೇಶ ನೀಡಿರಿ. +- ಸಂಸ್ಥೆ: ನಿಮ್ಮ GitHub ಸಂಸ್ಥೆಯನ್ನು ಆಯ್ಕೆಮಾಡಿ. +- ರೆಪೊಸಿಟರಿ: ನಿಮ್ಮ ಸ್ಥಿರ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಹೊಂದಿರುವ ರೆಪೊಸಿಟರಿಯನ್ನು ಆಯ್ಕೆಮಾಡಿ. +- ಶಾಖೆ: ನೀವು ನಿಯೋಜಿಸಲು ಬಯಸುವ ಶಾಖೆಯನ್ನು ಆಯ್ಕೆಮಾಡಿ. + +- #### ನಿರ್ಮಾಣ ವಿವರಗಳು: +- ನಿರ್ಮಾಣ ಪೂರ್ವನಿಯೋಜನೆಗಳು: ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ಮಿತವಾಗಿರುವ ಫ್ರೇಮ್ವರ್ಕ್ ಆಯ್ಕೆಮಾಡಿ (ಉದಾ: React, Angular, Vue, ಇತ್ಯಾದಿ). +- ಅಪ್ಲಿಕೇಶನ್ ಸ್ಥಳ: ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ ಕೋಡ್ ಇರುವ ಫೋಲ್ಡರ್ ಸೂಚಿಸಿ (ಉದಾ: / ಮೂಲದಲ್ಲಿ ಇದ್ದರೆ). +- API ಸ್ಥಳ: ನೀವು API ಹೊಂದಿದ್ದರೆ, ಅದರ ಸ್ಥಳವನ್ನು ಸೂಚಿಸಿ (ಐಚ್ಛಿಕ). +- ಔಟ್‌ಪುಟ್ ಸ್ಥಳ: ನಿರ್ಮಾಣ ಔಟ್‌ಪುಟ್ ಉತ್ಪಾದನೆಯಾಗುವ ಫೋಲ್ಡರ್ ಸೂಚಿಸಿ (ಉದಾ: build ಅಥವಾ dist). + +4. ಪರಿಶೀಲಿಸಿ ಮತ್ತು ರಚಿಸಿ +ನಿಮ್ಮ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಪರಿಶೀಲಿಸಿ ಮತ್ತು "Create" ಕ್ಲಿಕ್ ಮಾಡಿ. ಅಜೂರ್ ಅಗತ್ಯವಿರುವ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಸಿದ್ಧಪಡಿಸಿ ಮತ್ತು ನಿಮ್ಮ ರೆಪೊಸಿಟರಿಯಲ್ಲಿ GitHub Actions ವರ್ಕ್‌ಫ್ಲೋವನ್ನು ರಚಿಸುತ್ತದೆ. + +5. GitHub Actions ವರ್ಕ್‌ಫ್ಲೋ +ಅಜೂರ್ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ನಿಮ್ಮ ರೆಪೊಸಿಟರಿಯಲ್ಲಿ GitHub Actions ವರ್ಕ್‌ಫ್ಲೋ ಫೈಲ್ (.github/workflows/azure-static-web-apps-.yml) ರಚಿಸುತ್ತದೆ. ಈ ವರ್ಕ್‌ಫ್ಲೋ ನಿರ್ಮಾಣ ಮತ್ತು ನಿಯೋಜನೆ ಪ್ರಕ್ರಿಯೆಯನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ. + +6. ನಿಯೋಜನೆಯನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಿ +ನಿಮ್ಮ GitHub ರೆಪೊಸಿಟರಿಯ "Actions" ಟ್ಯಾಬ್‌ಗೆ ಹೋಗಿ. +ನೀವು ಒಂದು ವರ್ಕ್‌ಫ್ಲೋ ಚಲಿಸುತ್ತಿರುವುದನ್ನು ನೋಡಬಹುದು. ಈ ವರ್ಕ್‌ಫ್ಲೋ ನಿಮ್ಮ ಸ್ಥಿರ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಅಜೂರ್‌ಗೆ ನಿರ್ಮಿಸಿ ನಿಯೋಜಿಸುತ್ತದೆ. +ವರ್ಕ್‌ಫ್ಲೋ ಪೂರ್ಣಗೊಂಡ ನಂತರ, ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ ನೀಡಲಾದ ಅಜೂರ್ URL ನಲ್ಲಿ ಲೈವ್ ಆಗಿರುತ್ತದೆ. + +### ಉದಾಹರಣೆಯ ವರ್ಕ್‌ಫ್ಲೋ ಫೈಲ್ + +GitHub Actions ವರ್ಕ್‌ಫ್ಲೋ ಫೈಲ್ ಹೇಗಿರಬಹುದು ಎಂಬ ಉದಾಹರಣೆ ಇಲ್ಲಿದೆ: +name: Azure Static Web Apps CI/CD +``` +on: + push: + branches: + - main + pull_request: + types: [opened, synchronize, reopened, closed] + branches: + - main + +jobs: + build_and_deploy_job: + runs-on: ubuntu-latest + name: Build and Deploy Job + steps: + - uses: actions/checkout@v2 + - name: Build And Deploy + id: builddeploy + uses: Azure/static-web-apps-deploy@v1 + with: + azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }} + repo_token: ${{ secrets.GITHUB_TOKEN }} + action: "upload" + app_location: "/quiz-app" # App source code path + api_location: ""API source code path optional + output_location: "dist" #Built app content directory - optional +``` + +### ಹೆಚ್ಚುವರಿ ಸಂಪನ್ಮೂಲಗಳು +- [Azure Static Web Apps Documentation](https://learn.microsoft.com/azure/static-web-apps/getting-started) +- [GitHub Actions Documentation](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಪ್ರಮುಖ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/sketchnotes/LICENSE.md b/translations/kn/sketchnotes/LICENSE.md new file mode 100644 index 000000000..b9b9d2def --- /dev/null +++ b/translations/kn/sketchnotes/LICENSE.md @@ -0,0 +1,247 @@ + +ಅಟ್ರಿಬ್ಯೂಷನ್-ಶೇರ್ ಅಲೈಕ್ 4.0 ಇಂಟರ್‌ನ್ಯಾಷನಲ್ + +======================================================================= + +ಕ್ರಿಯೇಟಿವ್ ಕಾಮನ್ಸ್ ಕಾರ್ಪೊರೇಶನ್ ("ಕ್ರಿಯೇಟಿವ್ ಕಾಮನ್ಸ್") ಒಂದು ಕಾನೂನು ಸಂಸ್ಥೆ ಅಲ್ಲ ಮತ್ತು +ಕಾನೂನು ಸೇವೆಗಳು ಅಥವಾ ಕಾನೂನು ಸಲಹೆಗಳನ್ನು ನೀಡುವುದಿಲ್ಲ. ಕ್ರಿಯೇಟಿವ್ ಕಾಮನ್ಸ್ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಗಳನ್ನು ಹಂಚಿಕೆ ಮಾಡುವುದು ವಕೀಲ-ಗ್ರಾಹಕ ಅಥವಾ +ಇತರ ಸಂಬಂಧವನ್ನು ಸೃಷ್ಟಿಸುವುದಿಲ್ಲ. ಕ್ರಿಯೇಟಿವ್ ಕಾಮನ್ಸ್ ತನ್ನ ಪರವಾನಗಿಗಳನ್ನು ಮತ್ತು ಸಂಬಂಧಿತ +ಮಾಹಿತಿಯನ್ನು "ಹಾಗೇ ಇದೆ" ಆಧಾರದ ಮೇಲೆ ಲಭ್ಯವಿದೆ. ಕ್ರಿಯೇಟಿವ್ ಕಾಮನ್ಸ್ ತನ್ನ ಪರವಾನಗಿಗಳ ಬಗ್ಗೆ ಯಾವುದೇ +ಹೆಚ್ಚುವರಿ ಭರವಸೆಗಳನ್ನು ನೀಡುವುದಿಲ್ಲ, ಅವುಗಳ ಅಡಿಯಲ್ಲಿ ಪರವಾನಗಿಗೊಳಿಸಲಾದ ಯಾವುದೇ ವಸ್ತುಗಳ ಬಗ್ಗೆ ಅಥವಾ ಯಾವುದೇ ಸಂಬಂಧಿತ ಮಾಹಿತಿಯ ಬಗ್ಗೆ. ಕ್ರಿಯೇಟಿವ್ ಕಾಮನ್ಸ್ +ಅವುಗಳ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಹಾನಿಗಳ ಬಗ್ಗೆ ಸಂಪೂರ್ಣವಾಗಿ ಜವಾಬ್ದಾರಿಯನ್ನು ತಿರಸ್ಕರಿಸುತ್ತದೆ. + +ಕ್ರಿಯೇಟಿವ್ ಕಾಮನ್ಸ್ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಗಳನ್ನು ಬಳಸುವುದು + +ಕ್ರಿಯೇಟಿವ್ ಕಾಮನ್ಸ್ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಗಳು ಸೃಷ್ಟಿಕರ್ತರು ಮತ್ತು ಇತರ ಹಕ್ಕುಧಾರಕರು ಮೂಲ +ರಚನೆಗಳ ಮತ್ತು ಪ್ರತಿಕೃತಿ ಹಕ್ಕು ಮತ್ತು ಕೆಳಗಿನ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಕೆಲವು ಇತರ ಹಕ್ಕುಗಳಿಗೆ ಒಳಪಟ್ಟ ವಸ್ತುಗಳನ್ನು ಹಂಚಿಕೊಳ್ಳಲು ಬಳಸಬಹುದಾದ +ನಿಯಮಗಳು ಮತ್ತು ಷರತ್ತುಗಳ ಸಾಮಾನ್ಯ ಸೆಟ್ ಅನ್ನು ಒದಗಿಸುತ್ತವೆ. ಕೆಳಗಿನ ಪರಿಗಣನೆಗಳು ಮಾಹಿತಿ ಉದ್ದೇಶಕ್ಕಾಗಿ ಮಾತ್ರ, ಸಂಪೂರ್ಣವಲ್ಲ, ಮತ್ತು ನಮ್ಮ ಪರವಾನಗಿಗಳ ಭಾಗವಲ್ಲ. + + ಪರವಾನಗಿ ನೀಡುವವರ ಪರಿಗಣನೆಗಳು: ನಮ್ಮ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಗಳು + ಪ್ರತಿಕೃತಿ ಹಕ್ಕು ಮತ್ತು ಕೆಲವು ಇತರ ಹಕ್ಕುಗಳಿಂದ ನಿಯಂತ್ರಿತವಾಗಿರುವ + ವಸ್ತುಗಳನ್ನು ಸಾರ್ವಜನಿಕರಿಗೆ ಬಳಸಲು ಅನುಮತಿ ನೀಡಲು ಅಧಿಕಾರ ಹೊಂದಿರುವವರ ಬಳಕೆಗಾಗಿ ಉದ್ದೇಶಿಸಲಾಗಿದೆ. + ನಮ್ಮ ಪರವಾನಗಿಗಳು ರದ್ದುಗೊಳಿಸಲಾಗದವು. ಪರವಾನಗಿ ನೀಡುವವರು ಆಯ್ಕೆಮಾಡಿದ ಪರವಾನಗಿ + ನಿಯಮಗಳು ಮತ್ತು ಷರತ್ತುಗಳನ್ನು ಅನ್ವಯಿಸುವ ಮೊದಲು ಓದಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕು. + ಪರವಾನಗಿ ನೀಡುವವರು ಸಾರ್ವಜನಿಕರು ನಿರೀಕ್ಷಿಸುವಂತೆ ವಸ್ತುವನ್ನು ಮರುಬಳಕೆ ಮಾಡಿಕೊಳ್ಳಲು ಅಗತ್ಯವಿರುವ ಎಲ್ಲಾ ಹಕ್ಕುಗಳನ್ನು + ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಬೇಕು. ಪರವಾನಗಿ ಅನ್ವಯಿಸದ ಯಾವುದೇ ವಸ್ತುಗಳನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ಗುರುತಿಸಬೇಕು. + ಇದರಲ್ಲಿ ಇತರ CC-ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತುಗಳು ಅಥವಾ ಪ್ರತಿಕೃತಿ ಹಕ್ಕಿಗೆ ಹೊರತಾಗಿಯೂ + ವಿನಾಯಿತಿ ಅಥವಾ ಮಿತಿಯಡಿ ಬಳಸಲಾಗುವ ವಸ್ತುಗಳು ಸೇರಿವೆ. ಪರವಾನಗಿ ನೀಡುವವರ ಹೆಚ್ಚಿನ ಪರಿಗಣನೆಗಳು: + wiki.creativecommons.org/Considerations_for_licensors + + ಸಾರ್ವಜನಿಕರ ಪರಿಗಣನೆಗಳು: ನಮ್ಮ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಗಳಲ್ಲಿ ಒಂದನ್ನು ಬಳಸುವ ಮೂಲಕ, + ಪರವಾನಗಿ ನೀಡುವವರು ಸಾರ್ವಜನಿಕರಿಗೆ ನಿರ್ದಿಷ್ಟ ನಿಯಮಗಳು ಮತ್ತು ಷರತ್ತುಗಳ ಅಡಿಯಲ್ಲಿ ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತುವನ್ನು ಬಳಸಲು ಅನುಮತಿ ನೀಡುತ್ತಾರೆ. + ಪರವಾನಗಿ ನೀಡುವವರ ಅನುಮತಿ ಯಾವುದೇ ಕಾರಣಕ್ಕಾಗಿ ಅಗತ್ಯವಿಲ್ಲದಿದ್ದರೆ—for + ಉದಾಹರಣೆಗೆ, ಯಾವುದೇ ಅನ್ವಯಿಸುವ ವಿನಾಯಿತಿ ಅಥವಾ ಮಿತಿಯ ಕಾರಣದಿಂದ—ಆ ಬಳಕೆ ಪರವಾನಗಿಯಿಂದ ನಿಯಂತ್ರಿತವಾಗುವುದಿಲ್ಲ. + ನಮ್ಮ ಪರವಾನಗಿಗಳು ಪರವಾನಗಿ ನೀಡುವವರಿಗೆ ನೀಡಲು ಅಧಿಕಾರವಿರುವ ಪ್ರತಿಕೃತಿ ಹಕ್ಕು ಮತ್ತು ಕೆಲವು ಇತರ ಹಕ್ಕುಗಳ ಅಡಿಯಲ್ಲಿ ಮಾತ್ರ ಅನುಮತಿಗಳನ್ನು ನೀಡುತ್ತವೆ. + ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತುವಿನ ಬಳಕೆ ಇನ್ನೂ ಇತರ ಕಾರಣಗಳಿಂದ ನಿಯಂತ್ರಿತವಾಗಿರಬಹುದು, ಉದಾಹರಣೆಗೆ ಇತರರಿಗೆ ಆ ವಸ್ತುವಿನ ಮೇಲೆ ಪ್ರತಿಕೃತಿ ಹಕ್ಕು ಅಥವಾ ಇತರ ಹಕ್ಕುಗಳಿದ್ದರೆ. + ಪರವಾನಗಿ ನೀಡುವವರು ವಿಶೇಷ ವಿನಂತಿಗಳನ್ನು ಮಾಡಬಹುದು, ಉದಾಹರಣೆಗೆ ಎಲ್ಲಾ ಬದಲಾವಣೆಗಳನ್ನು ಗುರುತಿಸಲು ಅಥವಾ ವರ್ಣಿಸಲು ಕೇಳಬಹುದು. + ನಮ್ಮ ಪರವಾನಗಿಗಳಿಂದ ಅವಶ್ಯಕವಿಲ್ಲದಿದ್ದರೂ, ನೀವು ಆ ವಿನಂತಿಗಳನ್ನು ಯುಕ್ತಿಯುತವಾಗಿದ್ದಲ್ಲಿ ಗೌರವಿಸುವಂತೆ ಪ್ರೋತ್ಸಾಹಿಸಲಾಗುತ್ತದೆ. + ಸಾರ್ವಜನಿಕರ ಹೆಚ್ಚಿನ ಪರಿಗಣನೆಗಳು: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +ಕ್ರಿಯೇಟಿವ್ ಕಾಮನ್ಸ್ ಅಟ್ರಿಬ್ಯೂಷನ್-ಶೇರ್ ಅಲೈಕ್ 4.0 ಇಂಟರ್‌ನ್ಯಾಷನಲ್ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿ + +ಪರವಾನಗಿಗೊಳಿಸಲಾದ ಹಕ್ಕುಗಳನ್ನು (ಕೆಳಗಿನಂತೆ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ) ಬಳಸುವ ಮೂಲಕ, ನೀವು ಈ ಕ್ರಿಯೇಟಿವ್ ಕಾಮನ್ಸ್ +ಅಟ್ರಿಬ್ಯೂಷನ್-ಶೇರ್ ಅಲೈಕ್ 4.0 ಇಂಟರ್‌ನ್ಯಾಷನಲ್ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿ ("ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿ") ನಿಯಮಗಳು ಮತ್ತು ಷರತ್ತುಗಳಿಗೆ ಬದ್ಧರಾಗಲು ಒಪ್ಪಿಕೊಳ್ಳುತ್ತೀರಿ. +ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿ ಒಪ್ಪಂದವಾಗಿ ವ್ಯಾಖ್ಯಾನಿಸಲ್ಪಟ್ಟರೆ, ನೀವು ಈ ನಿಯಮಗಳು ಮತ್ತು ಷರತ್ತುಗಳನ್ನು ಒಪ್ಪಿಕೊಂಡಿರುವುದಕ್ಕಾಗಿ ಪರವಾನಗಿಗೊಳಿಸಲಾದ ಹಕ್ಕುಗಳನ್ನು ಪಡೆಯುತ್ತೀರಿ, +ಮತ್ತು ಪರವಾನಗಿ ನೀಡುವವರು ಈ ನಿಯಮಗಳು ಮತ್ತು ಷರತ್ತುಗಳ ಅಡಿಯಲ್ಲಿ ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತುವನ್ನು ಲಭ್ಯವಿರುವ ಮೂಲಕ ಲಾಭಗಳನ್ನು ಪಡೆಯುತ್ತಾರೆ. + + +ಅಧ್ಯಾಯ 1 -- ವ್ಯಾಖ್ಯಾನಗಳು. + + a. ಹೊಂದಿಸಿದ ವಸ್ತು ಎಂದರೆ ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತುವಿನಿಂದ ಉತ್ಪನ್ನವಾಗಿರುವ ಅಥವಾ ಆಧಾರಿತವಾಗಿರುವ ಪ್ರತಿಕೃತಿ ಹಕ್ಕು ಮತ್ತು ಸಮಾನ ಹಕ್ಕುಗಳಿಗೆ ಒಳಪಟ್ಟ ವಸ್ತು, + ಮತ್ತು ಅದರಲ್ಲಿ ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತುವನ್ನು ಅನುವಾದಿಸಲಾಗುತ್ತದೆ, ಬದಲಿಸಲಾಗುತ್ತದೆ, + ವ್ಯವಸ್ಥಿತಗೊಳಿಸಲಾಗುತ್ತದೆ, ಪರಿವರ್ತಿಸಲಾಗುತ್ತದೆ ಅಥವಾ ಇತರ ರೀತಿಯಲ್ಲಿ ಪರವಾನಗಿ ನೀಡುವವರ ಪ್ರತಿಕೃತಿ ಹಕ್ಕು ಮತ್ತು ಸಮಾನ ಹಕ್ಕುಗಳ ಅಡಿಯಲ್ಲಿ ಅನುಮತಿ ಅಗತ್ಯವಿರುವ ರೀತಿಯಲ್ಲಿ ಬದಲಾಯಿಸಲಾಗುತ್ತದೆ. + ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಗಾಗಿ, ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತು ಸಂಗೀತ ಕೃತಿ, ಪ್ರದರ್ಶನ ಅಥವಾ ಧ್ವನಿ ದಾಖಲೆಯಾದರೆ, + ಹೊಂದಿಸಿದ ವಸ್ತು ಎಂದರೆ ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತು ಚಲಿಸುವ ಚಿತ್ರದೊಂದಿಗೆ ಕಾಲಮಾನದಲ್ಲಿ ಸಿಂಕ್ ಮಾಡಲ್ಪಟ್ಟಾಗ ಮಾತ್ರ ಉತ್ಪನ್ನವಾಗುತ್ತದೆ. + + b. ಹೊಂದಿಸುವವರ ಪರವಾನಗಿ ಎಂದರೆ ನೀವು ಹೊಂದಿಸಿದ ವಸ್ತುಗಳಿಗೆ ನಿಮ್ಮ ಕೊಡುಗೆಗಳಲ್ಲಿ ನಿಮ್ಮ ಪ್ರತಿಕೃತಿ ಹಕ್ಕು ಮತ್ತು ಸಮಾನ ಹಕ್ಕುಗಳಿಗೆ ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯ ನಿಯಮಗಳು ಮತ್ತು ಷರತ್ತುಗಳ ಪ್ರಕಾರ ನೀವು ಅನ್ವಯಿಸುವ ಪರವಾನಗಿ. + + c. BY-SA ಹೊಂದಾಣಿಕೆಯ ಪರವಾನಗಿ ಎಂದರೆ creativecommons.org/compatiblelicenses ನಲ್ಲಿ ಪಟ್ಟಿ ಮಾಡಲಾದ, ಕ್ರಿಯೇಟಿವ್ ಕಾಮನ್ಸ್ ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯ ಸಮಾನವಾದ ಪರವಾನಗಿ ಎಂದು ಅಂಗೀಕರಿಸಿದ ಪರವಾನಗಿ. + + d. ಪ್ರತಿಕೃತಿ ಹಕ್ಕು ಮತ್ತು ಸಮಾನ ಹಕ್ಕುಗಳು ಎಂದರೆ ಪ್ರತಿಕೃತಿ ಹಕ್ಕು ಮತ್ತು/ಅಥವಾ ಪ್ರತಿಕೃತಿ ಹಕ್ಕಿಗೆ ಹತ್ತಿರದ ಹಕ್ಕುಗಳು, ಉದಾಹರಣೆಗೆ ಪ್ರದರ್ಶನ, ಪ್ರಸಾರ, ಧ್ವನಿ ದಾಖಲೆ ಮತ್ತು ಸುವಿ ಜನೆರಿಸ್ ಡೇಟಾಬೇಸ್ ಹಕ್ಕುಗಳು, ಹಕ್ಕುಗಳನ್ನು ಹೇಗೆ ಲೇಬಲ್ ಮಾಡಲಾಗಿದೆ ಅಥವಾ ವರ್ಗೀಕರಿಸಲಾಗಿದೆ ಎಂಬುದನ್ನು ಪರಿಗಣಿಸದೆ. ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಗಾಗಿ, ಅಧ್ಯಾಯ 2(b)(1)-(2) ನಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಹಕ್ಕುಗಳು ಪ್ರತಿಕೃತಿ ಹಕ್ಕು ಮತ್ತು ಸಮಾನ ಹಕ್ಕುಗಳಲ್ಲ. + + e. ಪರಿಣಾಮಕಾರಿ ತಂತ್ರಜ್ಞಾನ ಕ್ರಮಗಳು ಎಂದರೆ ಸರಿಯಾದ ಅಧಿಕಾರವಿಲ್ಲದೆ ತಿರಸ್ಕರಿಸಲಾಗದ ಕ್ರಮಗಳು, 1996 ಡಿಸೆಂಬರ್ 20 ರಂದು ಅಂಗೀಕೃತ WIPO ಪ್ರತಿಕೃತಿ ಹಕ್ಕು ಒಪ್ಪಂದದ ಕಲಂ 11 ಅಡಿಯಲ್ಲಿ ಕಾನೂನುಗಳು ಪೂರ್ಣಗೊಳಿಸುವ ಬಾಧ್ಯತೆಗಳನ್ನು ಹೊಂದಿವೆ ಮತ್ತು/ಅಥವಾ ಸಮಾನ ಅಂತಾರಾಷ್ಟ್ರೀಯ ಒಪ್ಪಂದಗಳು. + + f. ವಿನಾಯಿತಿಗಳು ಮತ್ತು ಮಿತಿಗಳು ಎಂದರೆ ನ್ಯಾಯಸಮ್ಮತ ಬಳಕೆ, ನ್ಯಾಯಸಮ್ಮತ ವ್ಯವಹಾರ ಮತ್ತು/ಅಥವಾ ಪ್ರತಿಕೃತಿ ಹಕ್ಕು ಮತ್ತು ಸಮಾನ ಹಕ್ಕುಗಳಿಗೆ ಅನ್ವಯಿಸುವ ಯಾವುದೇ ಇತರ ವಿನಾಯಿತಿ ಅಥವಾ ಮಿತಿ, ಇದು ನಿಮ್ಮ ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತುವಿನ ಬಳಕೆಗೆ ಅನ್ವಯಿಸುತ್ತದೆ. + + g. ಪರವಾನಗಿ ಅಂಶಗಳು ಎಂದರೆ ಕ್ರಿಯೇಟಿವ್ ಕಾಮನ್ಸ್ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯ ಹೆಸರಿನಲ್ಲಿ ಪಟ್ಟಿ ಮಾಡಲಾದ ಪರವಾನಗಿ ಗುಣಲಕ್ಷಣಗಳು. ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯ ಪರವಾನಗಿ ಅಂಶಗಳು ಅಟ್ರಿಬ್ಯೂಷನ್ ಮತ್ತು ಶೇರ್ ಅಲೈಕ್. + + h. ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತು ಎಂದರೆ ಕಲಾತ್ಮಕ ಅಥವಾ ಸಾಹಿತ್ಯ ಕೃತಿ, ಡೇಟಾಬೇಸ್ ಅಥವಾ ಇತರ ವಸ್ತು, ಇದಕ್ಕೆ ಪರವಾನಗಿ ನೀಡುವವರು ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯನ್ನು ಅನ್ವಯಿಸಿದ್ದಾರೆ. + + i. ಪರವಾನಗಿಗೊಳಿಸಲಾದ ಹಕ್ಕುಗಳು ಎಂದರೆ ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯ ನಿಯಮಗಳು ಮತ್ತು ಷರತ್ತುಗಳಿಗೆ ಒಳಪಟ್ಟ ನಿಮ್ಮ ಬಳಕೆಗೆ ಅನ್ವಯಿಸುವ ಎಲ್ಲಾ ಪ್ರತಿಕೃತಿ ಹಕ್ಕು ಮತ್ತು ಸಮಾನ ಹಕ್ಕುಗಳು, ಮತ್ತು ಪರವಾನಗಿ ನೀಡುವವರಿಗೆ ಪರವಾನಗಿ ನೀಡಲು ಅಧಿಕಾರವಿರುವ ಹಕ್ಕುಗಳು. + + j. ಪರವಾನಗಿ ನೀಡುವವರು ಎಂದರೆ ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯ ಅಡಿಯಲ್ಲಿ ಹಕ್ಕುಗಳನ್ನು ನೀಡುವ ವ್ಯಕ್ತಿಗಳು ಅಥವಾ ಸಂಸ್ಥೆಗಳು. + + k. ಹಂಚಿಕೆ ಎಂದರೆ ಪರವಾನಗಿಗೊಳಿಸಲಾದ ಹಕ್ಕುಗಳ ಅಡಿಯಲ್ಲಿ ಅನುಮತಿ ಅಗತ್ಯವಿರುವ ಯಾವುದೇ ವಿಧಾನ ಅಥವಾ ಪ್ರಕ್ರಿಯೆಯಿಂದ ಸಾರ್ವಜನಿಕರಿಗೆ ವಸ್ತು ಒದಗಿಸುವುದು, ಉದಾಹರಣೆಗೆ ಪುನರುತ್ಪಾದನೆ, ಸಾರ್ವಜನಿಕ ಪ್ರದರ್ಶನ, ಸಾರ್ವಜನಿಕ ಪ್ರದರ್ಶನ, ವಿತರಣೆ, ಪ್ರಸಾರ, ಸಂವಹನ ಅಥವಾ ಆಮದು, ಮತ್ತು ಸಾರ್ವಜನಿಕರಿಗೆ ವಸ್ತುವನ್ನು ಲಭ್ಯವಿರುವಂತೆ ಮಾಡುವುದು, ಇದರಲ್ಲಿ ಸಾರ್ವಜನಿಕ ಸದಸ್ಯರು ತಮ್ಮ ಆಯ್ಕೆಮಾಡಿದ ಸ್ಥಳ ಮತ್ತು ಸಮಯದಲ್ಲಿ ವಸ್ತುವನ್ನು ಪ್ರವೇಶಿಸಬಹುದು. + + l. ಸುವಿ ಜನೆರಿಸ್ ಡೇಟಾಬೇಸ್ ಹಕ್ಕುಗಳು ಎಂದರೆ 1996 ಮಾರ್ಚ್ 11 ರಂದು ಯುರೋಪಿಯನ್ ಸಂಸತ್ತು ಮತ್ತು ಕೌನ್ಸಿಲ್‌ನ ನಿರ್ದೇಶನ 96/9/EC ಅಡಿಯಲ್ಲಿ ಡೇಟಾಬೇಸ್‌ಗಳ ಕಾನೂನು ರಕ್ಷಣೆಯ ಕುರಿತು ಹಕ್ಕುಗಳು, ತಿದ್ದುಪಡಿ ಮತ್ತು/ಅಥವಾ ಮುಂದುವರಿದ, ಮತ್ತು ಜಾಗತಿಕವಾಗಿ ಸಮಾನ ಹಕ್ಕುಗಳು. + + m. ನೀವು ಎಂದರೆ ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯ ಅಡಿಯಲ್ಲಿ ಪರವಾನಗಿಗೊಳಿಸಲಾದ ಹಕ್ಕುಗಳನ್ನು ಬಳಸುವ ವ್ಯಕ್ತಿ ಅಥವಾ ಸಂಸ್ಥೆ. ನಿಮ್ಮಿಗೆ ಹೊಂದುವ ಅರ್ಥವಿದೆ. + + +ಅಧ್ಯಾಯ 2 -- ವ್ಯಾಪ್ತಿ. + + a. ಪರವಾನಗಿ ನೀಡುವುದು. + + 1. ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯ ನಿಯಮಗಳು ಮತ್ತು ಷರತ್ತುಗಳಿಗೆ ಒಳಪಟ್ಟಂತೆ, + ಪರವಾನಗಿ ನೀಡುವವರು ನಿಮಗೆ ಜಾಗತಿಕ, ರಾಯಲ್ಟಿ-ರಹಿತ, + ಉಪಪರವಾನಗಿ ನೀಡಲಾಗದ, ಅನನ್ಯವಲ್ಲದ, ರದ್ದುಗೊಳಿಸಲಾಗದ ಪರವಾನಗಿಯನ್ನು ನೀಡುತ್ತಾರೆ + ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತುವಿನಲ್ಲಿ ಪರವಾನಗಿಗೊಳಿಸಲಾದ ಹಕ್ಕುಗಳನ್ನು ಬಳಸಲು: + + a. ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತುವನ್ನು ಸಂಪೂರ್ಣ ಅಥವಾ ಭಾಗಶಃ ಪುನರುತ್ಪಾದನೆ ಮತ್ತು ಹಂಚಿಕೆ ಮಾಡುವುದು; ಮತ್ತು + + b. ಹೊಂದಿಸಿದ ವಸ್ತುವನ್ನು ಉತ್ಪಾದನೆ, ಪುನರುತ್ಪಾದನೆ ಮತ್ತು ಹಂಚಿಕೆ ಮಾಡುವುದು. + + 2. ವಿನಾಯಿತಿಗಳು ಮತ್ತು ಮಿತಿಗಳು. ಸ್ಪಷ್ಟತೆಗಾಗಿ, ನಿಮ್ಮ ಬಳಕೆಗೆ ವಿನಾಯಿತಿಗಳು ಮತ್ತು ಮಿತಿಗಳು ಅನ್ವಯಿಸಿದಲ್ಲಿ, + ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿ ಅನ್ವಯಿಸುವುದಿಲ್ಲ, ಮತ್ತು ನೀವು ಅದರ ನಿಯಮಗಳು ಮತ್ತು ಷರತ್ತುಗಳನ್ನು ಪಾಲಿಸುವ ಅಗತ್ಯವಿಲ್ಲ. + + 3. ಅವಧಿ. ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯ ಅವಧಿ ಅಧ್ಯಾಯ 6(a) ನಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಲಾಗಿದೆ. + + 4. ಮಾಧ್ಯಮಗಳು ಮತ್ತು ಸ್ವರೂಪಗಳು; ತಾಂತ್ರಿಕ ಬದಲಾವಣೆಗಳಿಗೆ ಅನುಮತಿ. ಪರವಾನಗಿ ನೀಡುವವರು ನಿಮಗೆ ಎಲ್ಲಾ ಮಾಧ್ಯಮಗಳು ಮತ್ತು ಸ್ವರೂಪಗಳಲ್ಲಿ ಪರವಾನಗಿಗೊಳಿಸಲಾದ ಹಕ್ಕುಗಳನ್ನು ಬಳಸಲು ಅಧಿಕಾರ ನೀಡುತ್ತಾರೆ, + ಈಗ ತಿಳಿದಿರುವ ಅಥವಾ ಭವಿಷ್ಯದಲ್ಲಿ ಸೃಷ್ಟಿಯಾಗುವ, ಮತ್ತು ಅದನ್ನು ಮಾಡಲು ಅಗತ್ಯವಿರುವ ತಾಂತ್ರಿಕ ಬದಲಾವಣೆಗಳನ್ನು ಮಾಡಲು ಅನುಮತಿಸುತ್ತಾರೆ. + ಪರವಾನಗಿ ನೀಡುವವರು ನೀವು ಪರವಾನಗಿಗೊಳಿಸಲಾದ ಹಕ್ಕುಗಳನ್ನು ಬಳಸಲು ಅಗತ್ಯವಿರುವ ತಾಂತ್ರಿಕ ಬದಲಾವಣೆಗಳನ್ನು ಮಾಡಲು ನಿಮ್ಮನ್ನು ನಿಷೇಧಿಸುವ ಯಾವುದೇ ಹಕ್ಕು ಅಥವಾ ಅಧಿಕಾರವನ್ನು ತಿರಸ್ಕರಿಸುತ್ತಾರೆ ಮತ್ತು/ಅಥವಾ ಒಪ್ಪಿಕೊಳ್ಳುತ್ತಾರೆ. + ಪರಿಣಾಮಕಾರಿ ತಂತ್ರಜ್ಞಾನ ಕ್ರಮಗಳನ್ನು ತಿರಸ್ಕರಿಸಲು ಅಗತ್ಯವಿರುವ ತಾಂತ್ರಿಕ ಬದಲಾವಣೆಗಳನ್ನು ಸಹ ಸೇರಿವೆ. + ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯ ಉದ್ದೇಶಕ್ಕಾಗಿ, ಈ ಅಧ್ಯಾಯ 2(a)(4) ರಲ್ಲಿ ಅನುಮತಿಸಲಾದ ಬದಲಾವಣೆಗಳನ್ನು ಮಾಡುವುದು ಎಂದಿಗೂ ಹೊಂದಿಸಿದ ವಸ್ತುವನ್ನು ಉತ್ಪಾದಿಸುವುದಿಲ್ಲ. + + 5. ಕೆಳಮಟ್ಟದ ಸ್ವೀಕರಿಸುವವರು. + + a. ಪರವಾನಗಿ ನೀಡುವವರಿಂದ ಆಫರ್ -- ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತು. ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತುವಿನ ಪ್ರತಿಯೊಂದು ಸ್ವೀಕರಿಸುವವರು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯ ನಿಯಮಗಳು ಮತ್ತು ಷರತ್ತುಗಳ ಅಡಿಯಲ್ಲಿ ಪರವಾನಗಿಗೊಳಿಸಲಾದ ಹಕ್ಕುಗಳನ್ನು ಬಳಸಲು ಪರವಾನಗಿ ನೀಡುವವರಿಂದ ಆಫರ್ ಪಡೆಯುತ್ತಾರೆ. + + b. ಪರವಾನಗಿ ನೀಡುವವರಿಂದ ಹೆಚ್ಚುವರಿ ಆಫರ್ -- ಹೊಂದಿಸಿದ ವಸ್ತು. ನಿಮ್ಮಿಂದ ಹೊಂದಿಸಿದ ವಸ್ತುವಿನ ಪ್ರತಿಯೊಂದು ಸ್ವೀಕರಿಸುವವರು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಪರವಾನಗಿ ನೀಡುವವರಿಂದ ಹೊಂದಿಸಿದ ವಸ್ತುವಿನಲ್ಲಿ ಪರವಾನಗಿಗೊಳಿಸಲಾದ ಹಕ್ಕುಗಳನ್ನು ಬಳಸಲು ಆಫರ್ ಪಡೆಯುತ್ತಾರೆ, ನೀವು ಅನ್ವಯಿಸುವ ಹೊಂದಿಸುವವರ ಪರವಾನಗಿಯ ಷರತ್ತುಗಳ ಅಡಿಯಲ್ಲಿ. + + c. ಕೆಳಮಟ್ಟದ ನಿರ್ಬಂಧಗಳಿಲ್ಲ. ನೀವು ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತುವಿನ ಯಾವುದೇ ಸ್ವೀಕರಿಸುವವರ ಪರವಾನಗಿಗೊಳಿಸಲಾದ ಹಕ್ಕುಗಳ ಬಳಕೆಯನ್ನು ನಿರ್ಬಂಧಿಸುವ ಯಾವುದೇ ಹೆಚ್ಚುವರಿ ಅಥವಾ ವಿಭಿನ್ನ ನಿಯಮಗಳು ಅಥವಾ ಷರತ್ತುಗಳನ್ನು ನೀಡಲು ಅಥವಾ ಪರಿಣಾಮಕಾರಿ ತಂತ್ರಜ್ಞಾನ ಕ್ರಮಗಳನ್ನು ಅನ್ವಯಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. + + 6. ಯಾವುದೇ ಅನುಮೋದನೆ ಇಲ್ಲ. ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯಲ್ಲಿ ಯಾವುದೂ ನೀವು ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತುವಿನ ಬಳಕೆ ಪರವಾನಗಿ ನೀಡುವವರು ಅಥವಾ ಇತರರು, ಅಧ್ಯಾಯ 3(a)(1)(A)(i) ನಲ್ಲಿ ನೀಡಲಾದ ಅಟ್ರಿಬ್ಯೂಷನ್ ಪಡೆಯುವವರಾಗಿ, ಸಂಪರ್ಕ ಹೊಂದಿರುವುದು, ಪ್ರಾಯೋಜಿತ ಅಥವಾ ಅಧಿಕೃತ ಸ್ಥಾನಮಾನ ಪಡೆದಿರುವುದು ಎಂದು ಹೇಳಲು ಅಥವಾ ಸೂಚಿಸಲು ಪರವಾನತಿ ನೀಡುವುದಿಲ್ಲ. + + b. ಇತರ ಹಕ್ಕುಗಳು. + + 1. ನೈತಿಕ ಹಕ್ಕುಗಳು, ಉದಾಹರಣೆಗೆ ಅಖಂಡತೆ ಹಕ್ಕು, ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯ ಅಡಿಯಲ್ಲಿ ಪರವಾನಗಿಗೊಳಿಸಲ್ಪಟ್ಟಿಲ್ಲ, ಹಾಗೆಯೇ ಪ್ರಸಿದ್ಧಿ, ಗೌಪ್ಯತೆ ಮತ್ತು/ಅಥವಾ ಇತರ ಸಮಾನ ವ್ಯಕ್ತಿತ್ವ ಹಕ್ಕುಗಳು; ಆದಾಗ್ಯೂ, ಸಾಧ್ಯವಾದಷ್ಟು, ಪರವಾನಗಿ ನೀಡುವವರು ಈ ಹಕ್ಕುಗಳನ್ನು ನೀವು ಪರವಾನಗಿಗೊಳಿಸಲಾದ ಹಕ್ಕುಗಳನ್ನು ಬಳಸಲು ಅವಕಾಶ ನೀಡಲು ಅಗತ್ಯವಿರುವ ಮಟ್ಟಿಗೆ ತಿರಸ್ಕರಿಸುತ್ತಾರೆ ಮತ್ತು/ಅಥವಾ ಒಪ್ಪಿಕೊಳ್ಳುತ್ತಾರೆ, ಆದರೆ ಬೇರೆ ರೀತಿಯಲ್ಲಿ ಅಲ್ಲ. + + 2. ಪೇಟೆಂಟ್ ಮತ್ತು ಟ್ರೇಡ್‌ಮಾರ್ಕ್ ಹಕ್ಕುಗಳು ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯ ಅಡಿಯಲ್ಲಿ ಪರವಾನಗಿಗೊಳಿಸಲ್ಪಟ್ಟಿಲ್ಲ. + + 3. ಸಾಧ್ಯವಾದಷ್ಟು, ಪರವಾನಗಿ ನೀಡುವವರು ನೀವು ಪರವಾನಗಿಗೊಳಿಸಲಾದ ಹಕ್ಕುಗಳನ್ನು ಬಳಸಿದಕ್ಕಾಗಿ ನೇರವಾಗಿ ಅಥವಾ ಸ್ವಯಂಸೇವಕ ಸಂಘದ ಮೂಲಕ ಯಾವುದೇ ಸ್ವಯಂಸೇವಕ ಅಥವಾ ತ್ಯಜಿಸಬಹುದಾದ ಕಾನೂನು ಅಥವಾ ಬಾಧ್ಯ ಪರವಾನಗಿ ಯೋಜನೆಯಡಿ ರಾಯಲ್ಟಿಗಳನ್ನು ಸಂಗ್ರಹಿಸುವ ಹಕ್ಕನ್ನು ತಿರಸ್ಕರಿಸುತ್ತಾರೆ. ಇತರ ಎಲ್ಲಾ ಪ್ರಕರಣಗಳಲ್ಲಿ ಪರವಾನಗಿ ನೀಡುವವರು ಸ್ಪಷ್ಟವಾಗಿ ಆ ರಾಯಲ್ಟಿಗಳನ್ನು ಸಂಗ್ರಹಿಸುವ ಹಕ್ಕನ್ನು ಕಾಯ್ದಿರಿಸುತ್ತಾರೆ. + + +ಅಧ್ಯಾಯ 3 -- ಪರವಾನಗಿ ಷರತ್ತುಗಳು. + +ನೀವು ಪರವಾನಗಿಗೊಳಿಸಲಾದ ಹಕ್ಕುಗಳನ್ನು ಬಳಸುವುದು ಕೆಳಗಿನ ಷರತ್ತುಗಳಿಗೆ ಸ್ಪಷ್ಟವಾಗಿ ಒಳಪಟ್ಟಿದೆ. + + a. ಅಟ್ರಿಬ್ಯೂಷನ್. + + 1. ನೀವು ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತುವನ್ನು ಹಂಚಿದರೆ (ಬದಲಿಸಿದ ರೂಪದಲ್ಲಿಯೂ ಸೇರಿ), ನೀವು: + + a. ಪರವಾನಗಿ ನೀಡುವವರು ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತುವಿನೊಂದಿಗೆ ಒದಗಿಸಿದ ಕೆಳಗಿನವುಗಳನ್ನು ಉಳಿಸಬೇಕು: + + i. ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತುವಿನ ಸೃಷ್ಟಿಕರ್ತ(ಗಳು) ಮತ್ತು ಅಟ್ರಿಬ್ಯೂಷನ್ ಪಡೆಯಲು ನಿಯೋಜಿಸಲಾದ ಇತರರ ಗುರುತಿನ ಮಾಹಿತಿ, ಪರವಾನಗಿ ನೀಡುವವರು ಕೇಳಿದ ಯಾವುದೇ ಯುಕ್ತಿಯುತ ರೀತಿಯಲ್ಲಿ (ನಾಮವಾಚಕ ಬಳಕೆ ಸಹ ಸೇರಿ); + + ii. ಪ್ರತಿಕೃತಿ ಸೂಚನೆ; + + iii. ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಗೆ ಉಲ್ಲೇಖಿಸುವ ಸೂಚನೆ; + + iv. ಭರವಸೆಗಳ ನಿರಾಕರಣೆಯ ಸೂಚನೆ; + + v. ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತುವಿಗೆ ಯುಆರ್‌ಐ ಅಥವಾ ಹೈಪರ್‌ಲಿಂಕ್, ಯುಕ್ತಿಯುತವಾಗಿ ಸಾಧ್ಯವಾದಷ್ಟು; + + b. ನೀವು ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತುವನ್ನು ಬದಲಿಸಿದರೆ ಸೂಚಿಸಬೇಕು ಮತ್ತು ಯಾವುದೇ ಹಿಂದಿನ ಬದಲಾವಣೆಗಳ ಸೂಚನೆಯನ್ನು ಉಳಿಸಬೇಕು; ಮತ್ತು + + c. ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತು ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯ ಅಡಿಯಲ್ಲಿ ಪರವಾನಗಿಗೊಳಿಸಲ್ಪಟ್ಟಿದೆ ಎಂದು ಸೂಚಿಸಿ, ಮತ್ತು ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯ ಪಠ್ಯ ಅಥವಾ ಯುಆರ್‌ಐ ಅಥವಾ ಹೈಪರ್‌ಲಿಂಕ್ ಅನ್ನು ಸೇರಿಸಬೇಕು. + + 2. ನೀವು ಅಧ್ಯಾಯ 3(a)(1) ರ ಷರತ್ತುಗಳನ್ನು ಯಾವುದೇ ಯುಕ್ತಿಯುತ ರೀತಿಯಲ್ಲಿ ಪೂರೈಸಬಹುದು, ಮಾಧ್ಯಮ, ವಿಧಾನ ಮತ್ತು ಸನ್ನಿವೇಶವನ್ನು ಆಧರಿಸಿ, ನೀವು ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತುವನ್ನು ಹಂಚುವಾಗ. ಉದಾಹರಣೆಗೆ, ಅಗತ್ಯ ಮಾಹಿತಿಯನ್ನು ಒಳಗೊಂಡಿರುವ ಸಂಪನ್ಮೂಲಕ್ಕೆ ಯುಆರ್‌ಐ ಅಥವಾ ಹೈಪರ್‌ಲಿಂಕ್ ಒದಗಿಸುವ ಮೂಲಕ ಷರತ್ತುಗಳನ್ನು ಪೂರೈಸಬಹುದು. + + 3. ಪರವಾನಗಿ ನೀಡುವವರ ವಿನಂತಿಯಿಂದ, ನೀವು ಅಧ್ಯಾಯ 3(a)(1)(A) ರಲ್ಲಿ ಅಗತ್ಯವಿರುವ ಯಾವುದೇ ಮಾಹಿತಿಯನ್ನು ಯುಕ್ತಿಯುತವಾಗಿ ಸಾಧ್ಯವಾದಷ್ಟು ತೆಗೆದುಹಾಕಬೇಕು. + + b. ಶೇರ್ ಅಲೈಕ್. + + ಅಧ್ಯಾಯ 3(a) ರ ಷರತ್ತುಗಳಿಗೆ ಹೆಚ್ಚುವರಿ, ನೀವು ಹೊಂದಿಸಿದ ವಸ್ತುವನ್ನು ಹಂಚಿದರೆ, ಕೆಳಗಿನ ಷರತ್ತುಗಳು ಅನ್ವಯಿಸುತ್ತವೆ. + + 1. ನೀವು ಅನ್ವಯಿಸುವ ಹೊಂದಿಸುವವರ ಪರವಾನಗಿ ಕ್ರಿಯೇಟಿವ್ ಕಾಮನ್ಸ್ ಪರವಾನಗಿ ಆಗಿರಬೇಕು, ಅದೇ ಪರವಾನಗಿ ಅಂಶಗಳೊಂದಿಗೆ, ಈ ಆವೃತ್ತಿ ಅಥವಾ ನಂತರದ ಆವೃತ್ತಿ, ಅಥವಾ BY-SA ಹೊಂದಾಣಿಕೆಯ ಪರವಾನಗಿ. + + 2. ನೀವು ಅನ್ವಯಿಸುವ ಹೊಂದಿಸುವವರ ಪರವಾನಗಿಯ ಪಠ್ಯ ಅಥವಾ ಯುಆರ್‌ಐ ಅಥವಾ ಹೈಪರ್‌ಲಿಂಕ್ ಅನ್ನು ಸೇರಿಸಬೇಕು. ನೀವು ಈ ಷರತ್ತನ್ನು ಯಾವುದೇ ಯುಕ್ತಿಯುತ ರೀತಿಯಲ್ಲಿ ಪೂರೈಸಬಹುದು, ಮಾಧ್ಯಮ, ವಿಧಾನ ಮತ್ತು ಸನ್ನಿವೇಶವನ್ನು ಆಧರಿಸಿ ನೀವು ಹೊಂದಿಸಿದ ವಸ್ತುವನ್ನು ಹಂಚುವಾಗ. + + 3. ನೀವು ಹೊಂದಿಸಿದ ವಸ್ತುವಿನ ಮೇಲೆ ನೀವು ಅನ್ವಯಿಸುವ ಹೊಂದಿಸುವವರ ಪರವಾನಗಿಯ ಅಡಿಯಲ್ಲಿ ನೀಡಲಾದ ಹಕ್ಕುಗಳ ಬಳಕೆಯನ್ನು ನಿರ್ಬಂಧಿಸುವ ಯಾವುದೇ ಹೆಚ್ಚುವರಿ ಅಥವಾ ವಿಭಿನ್ನ ನಿಯಮಗಳು ಅಥವಾ ಪರಿಣಾಮಕಾರಿ ತಂತ್ರಜ್ಞಾನ ಕ್ರಮಗಳನ್ನು ಅನ್ವಯಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. + + +ಅಧ್ಯಾಯ 4 -- ಸುವಿ ಜನೆರಿಸ್ ಡೇಟಾಬೇಸ್ ಹಕ್ಕುಗಳು. + +ಪರವಾನಗಿಗೊಳಿಸಲಾದ ಹಕ್ಕುಗಳಲ್ಲಿ ನಿಮ್ಮ ಪರವಾನಗಿಗೊಳಿಸಲಾದ ವಸ್ತುವಿನ ಬಳಕೆಗೆ ಅನ್ವಯಿಸುವ ಸುವಿ ಜನೆರಿಸ್ ಡೇಟಾಬೇಸ್ ಹಕ್ಕುಗಳು ಇದ್ದಲ್ಲಿ: + + a. ಸ್ಪಷ್ಟತೆಗಾಗಿ, ಅಧ್ಯಾಯ 2(a)(1) ನಿಮಗೆ ಡೇಟಾಬೇಸ್‌ನ ಎಲ್ಲಾ ಅಥವಾ ಪ್ರಮುಖ ಭಾಗದ ವಿಷಯವನ್ನು ಹೊರತೆಗೆಯಲು, ಮರುಬಳಕೆ ಮಾಡಲು, ಪುನರುತ್ಪಾದನೆ ಮಾಡಲು ಮತ್ತು ಹಂಚಿಕೆ ಮಾಡಲು ಹಕ್ಕು ನೀಡುತ್ತದೆ; + + b. ನೀವು ಡೇಟಾಬೇಸ್‌ನ ಎಲ್ಲಾ ಅಥವಾ ಪ್ರಮುಖ ಭಾಗವನ್ನು ಡೇಟಾಬೇಸ್‌ನಲ್ಲಿ ಸೇರಿಸಿದರೆ, ನೀವು ಸುವಿ ಜನೆರಿಸ್ ಡೇಟಾಬೇಸ್ + ಹಕ್ಕುಗಳು, ನಂತರ ನೀವು ಹೊಂದಿರುವ ಡೇಟಾಬೇಸ್‌ನಲ್ಲಿ Sui Generis ಡೇಟಾಬೇಸ್ + ಹಕ್ಕುಗಳು (ಆದರೆ ಅದರ ವೈಯಕ್ತಿಕ ವಿಷಯಗಳು ಅಲ್ಲ) ಹೊಂದಿರುವ ಅಡಾಪ್ಟೆಡ್ ಮೆಟೀರಿಯಲ್, + + ಸೆಕ್ಷನ್ 3(b) ಉದ್ದೇಶಗಳಿಗಾಗಿ ಸಹ ಸೇರಿದೆ; ಮತ್ತು + c. ನೀವು ಡೇಟಾಬೇಸ್‌ನ ಎಲ್ಲಾ ಅಥವಾ ಪ್ರಮುಖ ಭಾಗವನ್ನು ಹಂಚಿಕೊಳ್ಳುವಾಗ ಸೆಕ್ಷನ್ 3(a) ರಲ್ಲಿ ನೀಡಲಾದ ಶರತ್ತುಗಳನ್ನು ನೀವು ಪಾಲಿಸಬೇಕು. + +ಸಂದೇಹ ನಿವಾರಣೆಗೆ, ಈ ಸೆಕ್ಷನ್ 4 ನಿಮ್ಮ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿ ಅಡಿಯಲ್ಲಿ ಇರುವ ಬಾಧ್ಯತೆಗಳನ್ನು ಪೂರಕವಾಗಿದ್ದು, ಪರವಾನಗಿಯ ಹಕ್ಕುಗಳು ಇತರ ಕಾಪಿರೈಟ್ ಮತ್ತು ಸಮಾನ ಹಕ್ಕುಗಳನ್ನು ಒಳಗೊಂಡಿದ್ದಲ್ಲಿ ಅವುಗಳನ್ನು ಬದಲಿಸುವುದಿಲ್ಲ. + + +ಸೆಕ್ಷನ್ 5 -- ಜವಾಬ್ದಾರಿಗಳ ನಿರಾಕರಣೆ ಮತ್ತು ಹೊಣೆಗಾರಿಕೆಯ ಮಿತಿ. + + a. ಪರವಾನಗಿ ನೀಡುವವರು ಬೇರೆ ರೀತಿಯಲ್ಲಿ ಪ್ರತ್ಯೇಕವಾಗಿ ಒಪ್ಪಿಕೊಂಡಿಲ್ಲದಿದ್ದರೆ, ಸಾಧ್ಯವಾದಷ್ಟು, ಪರವಾನಗಿ ನೀಡುವವರು ಪರವಾನಗಿಗೊಳಿಸಿದ ವಸ್ತುವನ್ನು ಹಾಗೆಯೇ ಮತ್ತು ಲಭ್ಯವಿರುವಂತೆ ನೀಡುತ್ತಾರೆ ಮತ್ತು ಯಾವುದೇ ರೀತಿಯ ಪ್ರತಿನಿಧಾನಗಳು ಅಥವಾ ಜವಾಬ್ದಾರಿಗಳನ್ನು ನೀಡುವುದಿಲ್ಲ, ಸ್ಪಷ್ಟ, ಅರ್ಥೈಸಿದ, ಕಾನೂನಾತ್ಮಕ ಅಥವಾ ಇತರ. ಇದರಲ್ಲಿ, ಯಾವುದೇ ಮಿತಿ ಇಲ್ಲದೆ, ಶೀರ್ಷಿಕೆ, ವ್ಯಾಪಾರಿಕತೆ, ನಿರ್ದಿಷ್ಟ ಉದ್ದೇಶಕ್ಕೆ ಹೊಂದಿಕೊಳ್ಳುವಿಕೆ, ಉಲ್ಲಂಘನೆ ಇಲ್ಲದಿರುವಿಕೆ, ಅಡಗಿದ ಅಥವಾ ಇತರ ದೋಷಗಳ ಇಲ್ಲದಿರುವಿಕೆ, ನಿಖರತೆ, ಅಥವಾ ದೋಷಗಳ ಇರುವಿಕೆ ಅಥವಾ ಇಲ್ಲದಿರುವಿಕೆ, ತಿಳಿದಿರುವ ಅಥವಾ ಕಂಡುಹಿಡಿಯಬಹುದಾದುದೇ ಆಗಿರಲಿ, ಜವಾಬ್ದಾರಿಗಳು ಸೇರಿವೆ. ಜವಾಬ್ದಾರಿಗಳ ನಿರಾಕರಣೆಗಳು ಸಂಪೂರ್ಣ ಅಥವಾ ಭಾಗಶಃ ಅನುಮತಿಸಲಾಗದಿದ್ದಲ್ಲಿ, ಈ ನಿರಾಕರಣೆ ನಿಮ್ಮ ಮೇಲೆ ಅನ್ವಯಿಸದಿರಬಹುದು. + + b. ಸಾಧ್ಯವಾದಷ್ಟು, ಯಾವುದೇ ಕಾನೂನಾತ್ಮಕ ಸಿದ್ಧಾಂತದ (ಮೂಲತಃ, ನಿರ್ಲಕ್ಷ್ಯ ಸೇರಿದಂತೆ) ಅಡಿಯಲ್ಲಿ ಪರವಾನಗಿ ನೀಡುವವರು ನಿಮಗೆ ಯಾವುದೇ ನೇರ, ವಿಶೇಷ, ಪರೋಕ್ಷ, ಅನೈಚ್ಛಿಕ, ಪರಿಣಾಮಕಾರಿ, ಶಿಕ್ಷಾತ್ಮಕ, ಉದಾಹರಣಾತ್ಮಕ ಅಥವಾ ಇತರ ನಷ್ಟಗಳು, ವೆಚ್ಚಗಳು, ಖರ್ಚುಗಳು ಅಥವಾ ಹಾನಿಗಳಿಗಾಗಿ ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ, ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿ ಅಥವಾ ಪರವಾನಗಿಗೊಳಿಸಿದ ವಸ್ತುವಿನ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವವು, ಪರವಾನಗಿ ನೀಡುವವರು ಇಂತಹ ನಷ್ಟಗಳು, ವೆಚ್ಚಗಳು, ಖರ್ಚುಗಳು ಅಥವಾ ಹಾನಿಗಳ ಸಾಧ್ಯತೆಯನ್ನು ತಿಳಿಸಿದ್ದರೂ ಸಹ. ಹೊಣೆಗಾರಿಕೆಯ ಮಿತಿ ಸಂಪೂರ್ಣ ಅಥವಾ ಭಾಗಶಃ ಅನುಮತಿಸಲಾಗದಿದ್ದಲ್ಲಿ, ಈ ಮಿತಿ ನಿಮ್ಮ ಮೇಲೆ ಅನ್ವಯಿಸದಿರಬಹುದು. + + c. ಮೇಲ್ಕಂಡ ಜವಾಬ್ದಾರಿಗಳ ನಿರಾಕರಣೆ ಮತ್ತು ಹೊಣೆಗಾರಿಕೆಯ ಮಿತಿಯನ್ನು ಸಾಧ್ಯವಾದಷ್ಟು, ಸಂಪೂರ್ಣ ನಿರಾಕರಣೆ ಮತ್ತು ಎಲ್ಲಾ ಹೊಣೆಗಾರಿಕೆಗಳ ತ್ಯಾಗದಂತೆ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕು. + + +ಸೆಕ್ಷನ್ 6 -- ಅವಧಿ ಮತ್ತು ರದ್ದುಪಡಿಸುವಿಕೆ. + + a. ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿ ಇಲ್ಲಿ ಪರವಾನಗಿಗೊಳಿಸಿದ ಕಾಪಿರೈಟ್ ಮತ್ತು ಸಮಾನ ಹಕ್ಕುಗಳ ಅವಧಿಗೆ ಅನ್ವಯಿಸುತ್ತದೆ. ಆದರೆ, ನೀವು ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯನ್ನು ಪಾಲಿಸದಿದ್ದರೆ, ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿ ಅಡಿಯಲ್ಲಿ ನಿಮ್ಮ ಹಕ್ಕುಗಳು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ರದ್ದುಪಡಿಸಲಾಗುತ್ತದೆ. + + b. ಸೆಕ್ಷನ್ 6(a) ಅಡಿಯಲ್ಲಿ ನಿಮ್ಮ ಪರವಾನಗಿಗೊಳಿಸಿದ ವಸ್ತುವಿನ ಬಳಕೆಯ ಹಕ್ಕು ರದ್ದುಪಡಿಸಿದಾಗ, ಅದು ಪುನಃಸ್ಥಾಪಿತವಾಗುತ್ತದೆ: + + 1. ಉಲ್ಲಂಘನೆ ಪರಿಹಾರವಾದ ದಿನಾಂಕದಿಂದ ಸ್ವಯಂಚಾಲಿತವಾಗಿ, ಅದು ನಿಮ್ಮ ಉಲ್ಲಂಘನೆಯನ್ನು ಕಂಡುಹಿಡಿದ 30 ದಿನಗಳ ಒಳಗೆ ಪರಿಹಾರವಾದರೆ; ಅಥವಾ + + 2. ಪರವಾನಗಿ ನೀಡುವವರ ಸ್ಪಷ್ಟ ಪುನಃಸ್ಥಾಪನೆಯ ಮೂಲಕ. + + ಸಂದೇಹ ನಿವಾರಣೆಗೆ, ಈ ಸೆಕ್ಷನ್ 6(b) ನಿಮ್ಮ ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯ ಉಲ್ಲಂಘನೆಗಳಿಗೆ ಪರಿಹಾರಗಳನ್ನು ಹುಡುಕಲು ಪರವಾನಗಿ ನೀಡುವವರ ಹಕ್ಕನ್ನು ಪ್ರಭಾವಿತಗೊಳಿಸುವುದಿಲ್ಲ. + + c. ಸಂದೇಹ ನಿವಾರಣೆಗೆ, ಪರವಾನಗಿ ನೀಡುವವರು ಪರವಾನಗಿಗೊಳಿಸಿದ ವಸ್ತುವನ್ನು ವಿಭಿನ್ನ ಶರತ್ತುಗಳು ಅಥವಾ ನಿಯಮಗಳ ಅಡಿಯಲ್ಲಿ ನೀಡಬಹುದು ಅಥವಾ ಯಾವುದೇ ಸಮಯದಲ್ಲಿ ವಿತರಣೆ ನಿಲ್ಲಿಸಬಹುದು; ಆದರೆ, ಇದರಿಂದ ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿ ರದ್ದುಪಡಿಸುವುದಿಲ್ಲ. + + d. ಸೆಕ್ಷನ್ 1, 5, 6, 7, ಮತ್ತು 8 ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿ ರದ್ದುಪಡಿಸಿದ ನಂತರವೂ ಜಾರಿಯಲ್ಲಿರುತ್ತವೆ. + + +ಸೆಕ್ಷನ್ 7 -- ಇತರ ಶರತ್ತುಗಳು ಮತ್ತು ನಿಯಮಗಳು. + + a. ನೀವು ಸ್ಪಷ್ಟವಾಗಿ ಒಪ್ಪಿಕೊಳ್ಳದಿದ್ದರೆ, ಪರವಾನಗಿ ನೀಡುವವರು ನಿಮ್ಮಿಂದ ಸಂವಹನಗೊಂಡ ಯಾವುದೇ ಹೆಚ್ಚುವರಿ ಅಥವಾ ವಿಭಿನ್ನ ಶರತ್ತುಗಳು ಅಥವಾ ನಿಯಮಗಳಿಗೆ ಬದ್ಧರಾಗುವುದಿಲ್ಲ. + + b. ಇಲ್ಲಿ ಹೇಳದಿರುವ ಪರವಾನಗಿಗೊಳಿಸಿದ ವಸ್ತುವಿನ ಬಗ್ಗೆ ಯಾವುದೇ ವ್ಯವಸ್ಥೆಗಳು, ಅರ್ಥಮಾಡಿಕೆಗಳು ಅಥವಾ ಒಪ್ಪಂದಗಳು ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯ ನಿಯಮಗಳು ಮತ್ತು ಶರತ್ತುಗಳಿಂದ ಪ್ರತ್ಯೇಕವಾಗಿದ್ದು ಸ್ವತಂತ್ರವಾಗಿವೆ. + + +ಸೆಕ್ಷನ್ 8 -- ವ್ಯಾಖ್ಯಾನ. + + a. ಸಂದೇಹ ನಿವಾರಣೆಗೆ, ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿ ಪರವಾನಗಿಗೊಳಿಸಿದ ವಸ್ತುವಿನ ಯಾವುದೇ ಬಳಕೆಯನ್ನು ಕಡಿಮೆ ಮಾಡುವುದು, ಮಿತಿ ಹಾಕುವುದು, ನಿಯಮಗಳನ್ನು ವಿಧಿಸುವುದು ಅಥವಾ ನಿಯಂತ್ರಿಸುವುದಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬಾರದು, ಅದು ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿ ಅಡಿಯಲ್ಲಿ ಅನುಮತಿಸದ ಬಳಕೆಯಾಗಿರಬಹುದು. + + b. ಸಾಧ್ಯವಾದಷ್ಟು, ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯ ಯಾವುದೇ ವಿಧಿ ಅನ್ವಯಿಸದಿದ್ದರೆ, ಅದನ್ನು ಕನಿಷ್ಠ ಅಗತ್ಯವಿರುವ ಮಟ್ಟಿಗೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಮರುರೂಪಗೊಳಿಸಲಾಗುತ್ತದೆ. ಮರುರೂಪಗೊಳಿಸಲಾಗದಿದ್ದರೆ, ಅದನ್ನು ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯಿಂದ ತೆಗೆದುಹಾಕಲಾಗುತ್ತದೆ, ಉಳಿದ ನಿಯಮಗಳು ಮತ್ತು ಶರತ್ತುಗಳ ಅನ್ವಯತೆಯನ್ನು ಪ್ರಭಾವಿತಗೊಳಿಸುವುದಿಲ್ಲ. + + c. ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಯ ಯಾವುದೇ ನಿಯಮ ಅಥವಾ ಶರತ್ತು ತ್ಯಜಿಸಲಾಗುವುದಿಲ್ಲ ಮತ್ತು ಅನುಸರಿಸಲು ವಿಫಲವಾದುದಕ್ಕೆ ಒಪ್ಪಿಗೆಯಿಲ್ಲದಿದ್ದರೆ ಮಾತ್ರ ಪರವಾನಗಿ ನೀಡುವವರ ಸ್ಪಷ್ಟ ಒಪ್ಪಿಗೆಯಿದ್ದಾಗ ಮಾತ್ರ ಅನುಮತಿಸಲಾಗುತ್ತದೆ. + + d. ಈ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿ ಯಾವುದೇ ರೀತಿಯಲ್ಲಿ ಪರವಾನಗಿ ನೀಡುವವರ ಅಥವಾ ನಿಮ್ಮ ಮೇಲೆ ಅನ್ವಯಿಸುವ ಯಾವುದೇ ವಿಶೇಷ ಹಕ್ಕುಗಳು ಮತ್ತು ರಕ್ಷಣೆಗಳನ್ನು ಮಿತಿಗೊಳಿಸುವುದಾಗಿ ಅಥವಾ ತ್ಯಜಿಸುವುದಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬಾರದು, ಇದರಲ್ಲಿ ಯಾವುದೇ ನ್ಯಾಯಾಂಗ ಅಥವಾ ಅಧಿಕಾರಿಗಳ ಕಾನೂನಾತ್ಮಕ ಪ್ರಕ್ರಿಯೆಗಳು ಸೇರಿವೆ. + + +======================================================================= + +ಕ್ರಿಯೇಟಿವ್ ಕಾಮನ್ಸ್ ತನ್ನ ಸಾರ್ವಜನಿಕ +ಪರವಾನಗಿಗಳ ಪಕ್ಷವಲ್ಲ. ಆದಾಗ್ಯೂ, ಕ್ರಿಯೇಟಿವ್ ಕಾಮನ್ಸ್ ತನ್ನ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಗಳಲ್ಲಿ ಒಂದನ್ನು ತನ್ನ ಪ್ರಕಟಿಸುವ ವಸ್ತುಗಳಿಗೆ ಅನ್ವಯಿಸಲು ಆಯ್ಕೆಮಾಡಬಹುದು ಮತ್ತು ಆ ಸಂದರ್ಭಗಳಲ್ಲಿ "ಪರವಾನಗಿ ನೀಡುವವರು" ಎಂದು ಪರಿಗಣಿಸಲಾಗುತ್ತದೆ. ಕ್ರಿಯೇಟಿವ್ ಕಾಮನ್ಸ್ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಗಳ ಪಠ್ಯವನ್ನು CC0 ಸಾರ್ವಜನಿಕ +ಡೊಮೇನ್ ಸಮರ್ಪಣೆಯಡಿ ಸಾರ್ವಜನಿಕ ಡೊಮೇನ್‌ಗೆ ಮೀಸಲಿಟ್ಟಿದೆ. ಕ್ರಿಯೇಟಿವ್ ಕಾಮನ್ಸ್ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿ ಅಡಿಯಲ್ಲಿ ವಸ್ತು ಹಂಚಲಾಗಿದೆ ಎಂದು ಸೂಚಿಸುವ ಸೀಮಿತ ಉದ್ದೇಶವನ್ನು ಹೊರತುಪಡಿಸಿ ಅಥವಾcreativecommons.org/policies ನಲ್ಲಿ ಪ್ರಕಟಿಸಿರುವ ಕ್ರಿಯೇಟಿವ್ ಕಾಮನ್ಸ್ ನೀತಿಗಳ ಪ್ರಕಾರ, ಕ್ರಿಯೇಟಿವ್ ಕಾಮನ್ಸ್ "ಕ್ರಿಯೇಟಿವ್ ಕಾಮನ್ಸ್" ಎಂಬ ಟ್ರೇಡ್‌ಮಾರ್ಕ್ ಅಥವಾ ಯಾವುದೇ ಇತರ ಟ್ರೇಡ್‌ಮಾರ್ಕ್ ಅಥವಾ ಲೋಗೋವನ್ನು ತನ್ನ ಪೂರ್ವ ಲಿಖಿತ ಅನುಮತಿಯಿಲ್ಲದೆ ಬಳಸಲು ಅನುಮತಿಸುವುದಿಲ್ಲ, ಇದರಲ್ಲಿ ಯಾವುದೇ ಅನಧಿಕೃತ ಬದಲಾವಣೆಗಳು ಅಥವಾ ಯಾವುದೇ ಇತರ ವ್ಯವಸ್ಥೆಗಳು, ಅರ್ಥಮಾಡಿಕೆಗಳು ಅಥವಾ ಪರವಾನಗಿಗೊಳಿಸಿದ ವಸ್ತುವಿನ ಬಳಕೆಯ ಬಗ್ಗೆ ಒಪ್ಪಂದಗಳು ಸೇರಿವೆ. ಸಂದೇಹ ನಿವಾರಣೆಗೆ, ಈ ಪ್ಯಾರಾಗ್ರಾಫ್ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿಗಳ ಭಾಗವಲ್ಲ. + +ಕ್ರಿಯೇಟಿವ್ ಕಾಮನ್ಸ್ ಅನ್ನು creativecommons.org ನಲ್ಲಿ ಸಂಪರ್ಕಿಸಬಹುದು. + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವಾಗಿ ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/kn/sketchnotes/README.md b/translations/kn/sketchnotes/README.md new file mode 100644 index 000000000..a26be0b86 --- /dev/null +++ b/translations/kn/sketchnotes/README.md @@ -0,0 +1,23 @@ + +ಎಲ್ಲಾ ಪಠ್ಯಕ್ರಮದ ಸ್ಕೆಚ್‌ನೋಟ್ಗಳನ್ನು ಇಲ್ಲಿ ಡೌನ್‌ಲೋಡ್ ಮಾಡಬಹುದು. + +🖨 ಉನ್ನತ-ರಿಜಲ್ಯೂಶನ್‌ನಲ್ಲಿ ಮುದ್ರಣಕ್ಕಾಗಿ, TIFF ಆವೃತ್ತಿಗಳು [ಈ ರೆಪೋ](https://github.com/girliemac/a-picture-is-worth-a-1000-words/tree/main/ml/tiff) ನಲ್ಲಿ ಲಭ್ಯವಿವೆ. + +🎨 ರಚಿಸಿದವರು: [Tomomi Imura](https://github.com/girliemac) (ಟ್ವಿಟ್ಟರ್: [@girlie_mac](https://twitter.com/girlie_mac)) + +[![CC BY-SA 4.0](https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-sa/4.0/) + +--- + + +**ಅಸ್ವೀಕರಣ**: +ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. + \ No newline at end of file diff --git a/translations/ml/1-Introduction/1-intro-to-ML/README.md b/translations/ml/1-Introduction/1-intro-to-ML/README.md new file mode 100644 index 000000000..306b2b045 --- /dev/null +++ b/translations/ml/1-Introduction/1-intro-to-ML/README.md @@ -0,0 +1,161 @@ + +# മെഷീൻ ലേണിങ്ങിലേക്ക് പരിചയം + +## [പ്രീ-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +--- + +[![ML for beginners - Introduction to Machine Learning for Beginners](https://img.youtube.com/vi/6mSx_KJxcHI/0.jpg)](https://youtu.be/6mSx_KJxcHI "ML for beginners - Introduction to Machine Learning for Beginners") + +> 🎥 ഈ പാഠം വിശദീകരിക്കുന്ന ഒരു ചെറിയ വീഡിയോക്കായി മുകളിൽ കാണുന്ന ചിത്രം ക്ലിക്ക് ചെയ്യുക. + +മെഷീൻ ലേണിങ്ങിന്റെ ക്ലാസിക്കൽ കോഴ്സിലേക്ക് സ്വാഗതം! നിങ്ങൾ ഈ വിഷയത്തിൽ പൂർണ്ണമായും പുതുതായി ആണോ, അല്ലെങ്കിൽ ഒരു പരിചയസമ്പന്നനായ ML പ്രാക്ടീഷണറായിട്ടുണ്ടോ, ഞങ്ങൾ നിങ്ങളെ ഇവിടെ കാണാൻ സന്തോഷിക്കുന്നു! നിങ്ങളുടെ ML പഠനത്തിന് സൗഹൃദപരമായ ഒരു തുടക്കമിടാൻ ഞങ്ങൾ ആഗ്രഹിക്കുന്നു, കൂടാതെ നിങ്ങളുടെ [പ്രതികരണങ്ങൾ](https://github.com/microsoft/ML-For-Beginners/discussions) വിലയിരുത്താനും, മറുപടി നൽകാനും, ഉൾപ്പെടുത്താനും ഞങ്ങൾ ആഗ്രഹിക്കുന്നു. + +[![Introduction to ML](https://img.youtube.com/vi/h0e2HAPTGF4/0.jpg)](https://youtu.be/h0e2HAPTGF4 "Introduction to ML") + +> 🎥 മുകളിൽ കാണുന്ന ചിത്രം ക്ലിക്ക് ചെയ്യുക: MIT-യുടെ ജോൺ ഗുട്ടാഗ് മെഷീൻ ലേണിങ്ങിനെ പരിചയപ്പെടുത്തുന്നു + +--- +## മെഷീൻ ലേണിങ്ങ് ആരംഭിക്കുന്നത് + +ഈ പാഠ്യപദ്ധതിയുമായി തുടങ്ങുന്നതിന് മുമ്പ്, നിങ്ങളുടെ കമ്പ്യൂട്ടർ സജ്ജമാക്കി, ലോക്കലായി നോട്ട്‌ബുക്കുകൾ പ്രവർത്തിപ്പിക്കാൻ തയ്യാറാക്കേണ്ടതാണ്. + +- **ഈ വീഡിയോകൾ ഉപയോഗിച്ച് നിങ്ങളുടെ മെഷീൻ ക്രമീകരിക്കുക**. നിങ്ങളുടെ സിസ്റ്റത്തിൽ [Python ഇൻസ്റ്റാൾ ചെയ്യുന്നത്](https://youtu.be/CXZYvNRIAKM) എങ്ങനെ എന്നതും, വികസനത്തിനായി [ടെക്സ്റ്റ് എഡിറ്റർ സജ്ജമാക്കുന്നത്](https://youtu.be/EU8eayHWoZg) എങ്ങനെ എന്നതും പഠിക്കാൻ താഴെ കൊടുത്ത ലിങ്കുകൾ ഉപയോഗിക്കുക. +- **Python പഠിക്കുക**. ഈ കോഴ്സിൽ ഉപയോഗിക്കുന്ന, ഡാറ്റാ സയന്റിസ്റ്റുകൾക്ക് ഉപകാരപ്രദമായ പ്രോഗ്രാമിംഗ് ഭാഷയായ [Python](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-77952-leestott) അടിസ്ഥാനമായി അറിയുന്നത് ശുപാർശ ചെയ്യുന്നു. +- **Node.js, JavaScript പഠിക്കുക**. വെബ് ആപ്പുകൾ നിർമ്മിക്കുമ്പോൾ ഈ കോഴ്സിൽ JavaScript ചിലപ്പോൾ ഉപയോഗിക്കുന്നു, അതിനാൽ [node](https://nodejs.org)യും [npm](https://www.npmjs.com/)യും ഇൻസ്റ്റാൾ ചെയ്തിരിക്കണം, കൂടാതെ Python, JavaScript വികസനത്തിനായി [Visual Studio Code](https://code.visualstudio.com/) ലഭ്യമാകണം. +- **GitHub അക്കൗണ്ട് സൃഷ്ടിക്കുക**. നിങ്ങൾ ഇവിടെ [GitHub](https://github.com) വഴി എത്തിയതിനാൽ, നിങ്ങൾക്ക് അക്കൗണ്ട് ഉണ്ടാകാം, ഇല്ലെങ്കിൽ ഒരു അക്കൗണ്ട് സൃഷ്ടിച്ച് ഈ പാഠ്യപദ്ധതി ഫോർക്ക് ചെയ്ത് നിങ്ങളുടെ സ്വന്തം ഉപയോഗത്തിനായി ഉപയോഗിക്കുക. (നമുക്ക് ഒരു സ്റ്റാർ നൽകാനും മടിക്കേണ്ട 😊) +- **Scikit-learn പരിചയപ്പെടുക**. ഈ പാഠങ്ങളിൽ പരാമർശിക്കുന്ന ML ലൈബ്രറികളായ [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) പരിചയപ്പെടുക. + +--- +## മെഷീൻ ലേണിങ്ങ് എന്താണ്? + +'മെഷീൻ ലേണിങ്' എന്ന പദം ഇന്നത്തെ ഏറ്റവും ജനപ്രിയവും വ്യാപകമായി ഉപയോഗിക്കുന്ന പദങ്ങളിലൊന്നാണ്. നിങ്ങൾക്ക് സാങ്കേതികവിദ്യയിൽ ഏതെങ്കിലും പരിചയം ഉണ്ടെങ്കിൽ, ഈ പദം ഒരിക്കൽക്കെങ്കിലും കേട്ടിട്ടുണ്ടാകാനുള്ള സാധ്യത വളരെ കൂടുതലാണ്, നിങ്ങൾ ഏത് മേഖലയിലായാലും. എന്നാൽ മെഷീൻ ലേണിങ്ങിന്റെ യന്ത്രശാസ്ത്രം പലർക്കും രഹസ്യമാണ്. ഒരു മെഷീൻ ലേണിങ് തുടക്കക്കാരനായി, വിഷയം ചിലപ്പോൾ ഭീതിജനകമായിരിക്കാം. അതിനാൽ, മെഷീൻ ലേണിങ് എന്താണെന്ന് മനസ്സിലാക്കുകയും, പ്രായോഗിക ഉദാഹരണങ്ങളിലൂടെ ഘട്ടം ഘട്ടമായി പഠിക്കുകയും ചെയ്യുന്നത് പ്രധാനമാണ്. + +--- +## ഹൈപ്പ് കർവ് + +![ml hype curve](../../../../translated_images/hype.07183d711a17aafe70915909a0e45aa286ede136ee9424d418026ab00fec344c.ml.png) + +> 'machine learning' എന്ന പദത്തിന്റെ പുതിയ 'ഹൈപ്പ് കർവ്' Google ട്രെൻഡ്സ് കാണിക്കുന്നു + +--- +## ഒരു രഹസ്യമായ ബ്രഹ്മാണ്ഡം + +നാം രഹസ്യങ്ങളാൽ നിറഞ്ഞ ഒരു ബ്രഹ്മാണ്ഡത്തിൽ ജീവിക്കുന്നു. സ്റ്റീഫൻ ഹോക്കിംഗ്, ആൽബർട്ട് ഐൻസ്റ്റൈൻ തുടങ്ങിയ മഹാനായ ശാസ്ത്രജ്ഞർ ലോകത്തെ ചുറ്റിപ്പറ്റിയിരിക്കുന്ന രഹസ്യങ്ങൾ കണ്ടെത്താൻ അവരുടെ ജീവിതം സമർപ്പിച്ചിട്ടുണ്ട്. ഇത് മനുഷ്യന്റെ പഠനാവസ്ഥയാണ്: ഒരു മനുഷ്യശിശു പുതിയ കാര്യങ്ങൾ പഠിച്ച്, വളർന്ന് മുതിർന്നവനാകുമ്പോൾ അവരുടെ ലോകത്തിന്റെ ഘടന കണ്ടെത്തുന്നു. + +--- +## കുട്ടിയുടെ മസ്തിഷ്കം + +ഒരു കുട്ടിയുടെ മസ്തിഷ്കവും ഇന്ദ്രിയങ്ങളും അവരുടെ ചുറ്റുപാടുകളിലെ വാസ്തവങ്ങൾ ഗ്രഹിച്ച്, ജീവിതത്തിലെ മറഞ്ഞിരിക്കുന്ന മാതൃകകൾ പഠിച്ച്, പഠിച്ച മാതൃകകൾ തിരിച്ചറിയാൻ തർക്കസഹിതമായ നിയമങ്ങൾ രൂപപ്പെടുത്താൻ സഹായിക്കുന്നു. മനുഷ്യ മസ്തിഷ്കത്തിന്റെ പഠന പ്രക്രിയ മനുഷ്യരെ ഈ ലോകത്തിലെ ഏറ്റവും സങ്കീർണ്ണമായ ജീവികളാക്കുന്നു. മറഞ്ഞിരിക്കുന്ന മാതൃകകൾ കണ്ടെത്തി തുടർച്ചയായി പഠിക്കുകയും, ആ മാതൃകകളിൽ നവീകരണം നടത്തുകയും ചെയ്യുന്നത് ജീവിതകാലം മുഴുവൻ നമ്മെ മെച്ചപ്പെടുത്താൻ സഹായിക്കുന്നു. ഈ പഠന ശേഷിയും വികസന ശേഷിയും [ബ്രെയിൻ പ്ലാസ്റ്റിസിറ്റി](https://www.simplypsychology.org/brain-plasticity.html) എന്ന ആശയവുമായി ബന്ധപ്പെട്ടിരിക്കുന്നു. ഉപരിതലമായി, മനുഷ്യ മസ്തിഷ്കത്തിന്റെ പഠന പ്രക്രിയക്കും മെഷീൻ ലേണിങ്ങിന്റെ ആശയങ്ങൾക്കും ചില പ്രചോദനാത്മക സാമ്യമുണ്ട്. + +--- +## മനുഷ്യ മസ്തിഷ്കം + +[മനുഷ്യ മസ്തിഷ്കം](https://www.livescience.com/29365-human-brain.html) യഥാർത്ഥ ലോകത്തിൽ നിന്നുള്ള കാര്യങ്ങൾ ഗ്രഹിച്ച്, ഗ്രഹിച്ച വിവരങ്ങൾ പ്രോസസ്സ് ചെയ്ത്, യുക്തിപരമായ തീരുമാനങ്ങൾ എടുക്കുകയും, സാഹചര്യങ്ങൾ അനുസരിച്ച് ചില പ്രവർത്തനങ്ങൾ നടത്തുകയും ചെയ്യുന്നു. ഇതാണ് നാം ബുദ്ധിമുട്ടോടെ പെരുമാറുന്നത് എന്ന് വിളിക്കുന്നത്. ബുദ്ധിമുട്ടോടെ പെരുമാറുന്ന പ്രക്രിയയുടെ ഒരു പകർപ്പ് യന്ത്രത്തിൽ പ്രോഗ്രാം ചെയ്യുമ്പോൾ, അതിനെ കൃത്രിമ ബുദ്ധിമുട്ട് (AI) എന്ന് വിളിക്കുന്നു. + +--- +## ചില പദങ്ങൾ + +പദങ്ങൾ ചിലപ്പോൾ ആശയക്കുഴപ്പമുണ്ടാക്കാം, എന്നാൽ മെഷീൻ ലേണിങ് (ML) കൃത്രിമ ബുദ്ധിമുട്ടിന്റെ ഒരു പ്രധാന ഉപവിഭാഗമാണ്. **ML പ്രത്യേക ആൽഗോരിതങ്ങൾ ഉപയോഗിച്ച് ഗ്രഹിച്ച ഡാറ്റയിൽ നിന്ന് അർത്ഥപൂർണമായ വിവരങ്ങൾ കണ്ടെത്തുകയും മറഞ്ഞിരിക്കുന്ന മാതൃകകൾ കണ്ടെത്തി യുക്തിപരമായ തീരുമാനമെടുക്കൽ പ്രക്രിയയെ സഹായിക്കുകയും ചെയ്യുന്നതാണ്**. + +--- +## AI, ML, ഡീപ് ലേണിങ് + +![AI, ML, deep learning, data science](../../../../translated_images/ai-ml-ds.537ea441b124ebf69c144a52c0eb13a7af63c4355c2f92f440979380a2fb08b8.ml.png) + +> AI, ML, ഡീപ് ലേണിങ്, ഡാറ്റാ സയൻസ് എന്നിവയുടെ ബന്ധം കാണിക്കുന്ന ഒരു രേഖാചിത്രം. [Jen Looper](https://twitter.com/jenlooper) ഒരുക്കിയ ഇൻഫോഗ്രാഫിക്, [ഈ ഗ്രാഫിക്](https://softwareengineering.stackexchange.com/questions/366996/distinction-between-ai-ml-neural-networks-deep-learning-and-data-mining) പ്രചോദനമായി. + +--- +## പഠിക്കേണ്ട ആശയങ്ങൾ + +ഈ പാഠ്യപദ്ധതിയിൽ, ഒരു തുടക്കക്കാരൻ അറിയേണ്ട മെഷീൻ ലേണിങ്ങിന്റെ പ്രധാന ആശയങ്ങൾ മാത്രമേ ഉൾക്കൊള്ളൂ. നാം 'ക്ലാസിക്കൽ മെഷീൻ ലേണിങ്' എന്ന് വിളിക്കുന്നതിൽ പ്രധാനമായും Scikit-learn ഉപയോഗിക്കുന്നു, ഇത് അടിസ്ഥാനങ്ങൾ പഠിക്കാൻ വിദ്യാർത്ഥികൾക്ക് മികച്ച ലൈബ്രറിയാണ്. കൃത്രിമ ബുദ്ധിമുട്ട് അല്ലെങ്കിൽ ഡീപ് ലേണിങ്ങിന്റെ വ്യാപക ആശയങ്ങൾ മനസ്സിലാക്കാൻ, മെഷീൻ ലേണിങ്ങിന്റെ ശക്തമായ അടിസ്ഥാന അറിവ് അനിവാര്യമാണ്, അതിനാൽ ഞങ്ങൾ അത് ഇവിടെ നൽകാൻ ആഗ്രഹിക്കുന്നു. + +--- +## ഈ കോഴ്സിൽ നിങ്ങൾ പഠിക്കേണ്ടത്: + +- മെഷീൻ ലേണിങ്ങിന്റെ പ്രധാന ആശയങ്ങൾ +- ML-ന്റെ ചരിത്രം +- ML-നും നീതിക്കും +- റെഗ്രഷൻ ML സാങ്കേതികവിദ്യകൾ +- ക്ലാസിഫിക്കേഷൻ ML സാങ്കേതികവിദ്യകൾ +- ക്ലസ്റ്ററിംഗ് ML സാങ്കേതികവിദ്യകൾ +- നാച്ചുറൽ ലാംഗ്വേജ് പ്രോസസ്സിംഗ് ML സാങ്കേതികവിദ്യകൾ +- ടൈം സീരീസ് ഫോറ്കാസ്റ്റിംഗ് ML സാങ്കേതികവിദ്യകൾ +- റീ ഇൻഫോഴ്‌സ്‌മെന്റ് ലേണിങ് +- ML-ന്റെ യഥാർത്ഥ ലോക പ്രയോഗങ്ങൾ + +--- +## നാം ഉൾക്കൊള്ളാത്തത് + +- ഡീപ് ലേണിങ് +- ന്യൂറൽ നെറ്റ്വർക്കുകൾ +- AI + +മികച്ച പഠനാനുഭവത്തിനായി, ന്യൂറൽ നെറ്റ്വർക്കുകൾ, 'ഡീപ് ലേണിങ്' - ന്യൂറൽ നെറ്റ്വർക്കുകൾ ഉപയോഗിച്ച് പലതവണ മodel നിർമ്മാണം - എന്നിവയുടെ സങ്കീർണ്ണതകൾ ഒഴിവാക്കും, AI-യും മറ്റൊരു പാഠ്യപദ്ധതിയിൽ ചർച്ച ചെയ്യും. ഈ വലിയ മേഖലയിലെ മറ്റൊരു ഭാഗമായ ഡാറ്റാ സയൻസ് പാഠ്യപദ്ധതി വരാനിരിക്കുകയാണ്. + +--- +## മെഷീൻ ലേണിങ് പഠിക്കേണ്ടത് എന്തുകൊണ്ട്? + +സിസ്റ്റംസ് കാഴ്ചപ്പാടിൽ, മെഷീൻ ലേണിങ് എന്നത് ഡാറ്റയിൽ നിന്ന് മറഞ്ഞിരിക്കുന്ന മാതൃകകൾ പഠിച്ച് ബുദ്ധിമുട്ടുള്ള തീരുമാനങ്ങൾ എടുക്കാൻ സഹായിക്കുന്ന സ്വയം പ്രവർത്തിക്കുന്ന സിസ്റ്റങ്ങൾ സൃഷ്ടിക്കലായി നിർവചിക്കപ്പെടുന്നു. + +ഈ പ്രചോദനം മനുഷ്യ മസ്തിഷ്കം പുറത്തുള്ള ലോകത്തിൽ നിന്നുള്ള ഡാറ്റയിൽ നിന്ന് ചില കാര്യങ്ങൾ എങ്ങനെ പഠിക്കുന്നു എന്നതിൽ നിന്നാണ് സ്വതന്ത്രമായി പ്രചോദനം ലഭിക്കുന്നത്. + +✅ ഒരു ബിസിനസ്സ് മെഷീൻ ലേണിങ് തന്ത്രങ്ങൾ ഉപയോഗിക്കാൻ ആഗ്രഹിക്കുന്നതിന്റെ കാരണം എന്തെന്ന് ഒരു നിമിഷം ചിന്തിക്കുക, ഹാർഡ്-കോഡഡ് നിയമങ്ങൾ അടിസ്ഥാനമാക്കിയുള്ള എഞ്ചിൻ സൃഷ്ടിക്കുന്നതിനേക്കാൾ. + +--- +## മെഷീൻ ലേണിങ്ങിന്റെ പ്രയോഗങ്ങൾ + +ഇപ്പോൾ മെഷീൻ ലേണിങ്ങിന്റെ പ്രയോഗങ്ങൾ എല്ലായിടത്തും കാണപ്പെടുന്നു, നമ്മുടെ സമൂഹങ്ങളിൽ സ്മാർട്ട് ഫോണുകൾ, കണക്ടഡ് ഉപകരണങ്ങൾ, മറ്റ് സിസ്റ്റങ്ങൾ എന്നിവ വഴി സൃഷ്ടിക്കപ്പെടുന്ന ഡാറ്റ പോലെ വ്യാപകമാണ്. അത്യാധുനിക മെഷീൻ ലേണിങ് ആൽഗോരിതങ്ങളുടെ വലിയ സാധ്യത പരിഗണിച്ച്, ഗവേഷകർ ബഹുമാനമായ, ബഹുമുഖ, ബഹുവിഭാഗീയ യഥാർത്ഥ ജീവിത പ്രശ്നങ്ങൾ പരിഹരിക്കാൻ അവരുടെ കഴിവ് പരിശോധിച്ചു. + +--- +## പ്രയോഗിച്ച ML-ന്റെ ഉദാഹരണങ്ങൾ + +**മെഷീൻ ലേണിങ് പലവിധത്തിൽ ഉപയോഗിക്കാം**: + +- രോഗിയുടെ മെഡിക്കൽ ചരിത്രം അല്ലെങ്കിൽ റിപ്പോർട്ടുകളിൽ നിന്നുള്ള രോഗ സാധ്യത പ്രവചിക്കാൻ. +- കാലാവസ്ഥാ ഡാറ്റ ഉപയോഗിച്ച് കാലാവസ്ഥാ സംഭവങ്ങൾ പ്രവചിക്കാൻ. +- ഒരു എഴുത്തിന്റെ മനോഭാവം മനസ്സിലാക്കാൻ. +- പ്രചാരണം തടയാൻ വ്യാജ വാർത്തകൾ കണ്ടെത്താൻ. + +ഫിനാൻസ്, സാമ്പത്തികം, ഭൂമിശാസ്ത്രം, ബഹിരാകാശ ഗവേഷണം, ബയോമെഡിക്കൽ എഞ്ചിനീയറിംഗ്, കോഗ്നിറ്റീവ് സയൻസ്, മനുഷ്യശാസ്ത്രം തുടങ്ങിയ മേഖലകൾ അവരുടെ കഠിനമായ, ഡാറ്റാ പ്രോസസ്സിംഗ് ഭാരമുള്ള പ്രശ്നങ്ങൾ പരിഹരിക്കാൻ മെഷീൻ ലേണിങ് സ്വീകരിച്ചിട്ടുണ്ട്. + +--- +## സമാപനം + +മെഷീൻ ലേണിങ് യഥാർത്ഥ ലോകം അല്ലെങ്കിൽ സൃഷ്ടിച്ച ഡാറ്റയിൽ നിന്ന് അർത്ഥപൂർണമായ洞察ങ്ങൾ കണ്ടെത്തി മാതൃകകൾ കണ്ടെത്തുന്ന പ്രക്രിയ സ്വയം പ്രവർത്തിപ്പിക്കുന്നു. ബിസിനസ്സ്, ആരോഗ്യ, സാമ്പത്തിക പ്രയോഗങ്ങളിൽ അതിന്റെ മൂല്യം തെളിയിച്ചിട്ടുണ്ട്. + +സമീപഭാവിയിൽ, മെഷീൻ ലേണിങ്ങിന്റെ അടിസ്ഥാനങ്ങൾ മനസ്സിലാക്കുന്നത് ഏത് മേഖലയിലുള്ളവർക്കും അനിവാര്യമായിരിക്കും, അതിന്റെ വ്യാപകമായ സ്വീകരണത്തെ തുടർന്ന്. + +--- +# 🚀 ചലഞ്ച് + +കാഗിതത്തിൽ അല്ലെങ്കിൽ [Excalidraw](https://excalidraw.com/) പോലുള്ള ഓൺലൈൻ ആപ്പ് ഉപയോഗിച്ച് AI, ML, ഡീപ് ലേണിങ്, ഡാറ്റാ സയൻസ് എന്നിവയുടെ വ്യത്യാസങ്ങൾ നിങ്ങൾ എങ്ങനെ മനസ്സിലാക്കുന്നു എന്ന് രേഖപ്പെടുത്തുക. ഓരോ സാങ്കേതികവിദ്യയും പരിഹരിക്കാൻ നല്ല പ്രശ്നങ്ങളുടെ ചില ആശയങ്ങളും ചേർക്കുക. + +# [പോസ്റ്റ്-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +--- +# അവലോകനം & സ്വയം പഠനം + +ക്ലൗഡിൽ ML ആൽഗോരിതങ്ങളുമായി എങ്ങനെ പ്രവർത്തിക്കാമെന്ന് കൂടുതൽ അറിയാൻ, ഈ [Learning Path](https://docs.microsoft.com/learn/paths/create-no-code-predictive-models-azure-machine-learning/?WT.mc_id=academic-77952-leestott) പിന്തുടരുക. + +ML അടിസ്ഥാനങ്ങളെക്കുറിച്ച് പഠിക്കാൻ ഒരു [Learning Path](https://docs.microsoft.com/learn/modules/introduction-to-machine-learning/?WT.mc_id=academic-77952-leestott) സ്വീകരിക്കുക. + +--- +# അസൈൻമെന്റ് + +[Get up and running](assignment.md) + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ പ്രാമാണികമായ ഉറവിടമായി കണക്കാക്കണം. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/1-Introduction/1-intro-to-ML/assignment.md b/translations/ml/1-Introduction/1-intro-to-ML/assignment.md new file mode 100644 index 000000000..c737e7b15 --- /dev/null +++ b/translations/ml/1-Introduction/1-intro-to-ML/assignment.md @@ -0,0 +1,25 @@ + +# ആരംഭിച്ച് പ്രവർത്തിക്കുക + +## നിർദ്ദേശങ്ങൾ + +ഈ ഗ്രേഡ് ഇല്ലാത്ത അസൈൻമെന്റിൽ, നിങ്ങൾ പൈത്തൺ പുനഃപരിശോധിച്ച് നിങ്ങളുടെ പരിസ്ഥിതി പ്രവർത്തനക്ഷമമാക്കി നോട്ട്‌ബുക്കുകൾ ഓടിക്കാൻ കഴിയുന്ന നിലയിൽ എത്തിക്കണം. + +ഈ [Python Learning Path](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-77952-leestott) സ്വീകരിച്ച്, തുടർന്ന് ഈ പരിചയപരമായ വീഡിയോകൾ വഴി നിങ്ങളുടെ സിസ്റ്റങ്ങൾ സജ്ജമാക്കുക: + +https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6 + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ അധികാരപരമായ ഉറവിടമായി കണക്കാക്കപ്പെടണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനത്തിന്റെ ഉപയോഗത്തിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/1-Introduction/2-history-of-ML/README.md b/translations/ml/1-Introduction/2-history-of-ML/README.md new file mode 100644 index 000000000..dcb5f9873 --- /dev/null +++ b/translations/ml/1-Introduction/2-history-of-ML/README.md @@ -0,0 +1,167 @@ + +# മെഷീൻ ലേണിങ്ങിന്റെ ചരിത്രം + +![മെഷീൻ ലേണിങ്ങിന്റെ ചരിത്രത്തിന്റെ സംഗ്രഹം ഒരു സ്കെച്ച്നോട്ടിൽ](../../../../translated_images/ml-history.a1bdfd4ce1f464d9a0502f38d355ffda384c95cd5278297a46c9a391b5053bc4.ml.png) +> സ്കെച്ച്നോട്ട്: [Tomomi Imura](https://www.twitter.com/girlie_mac) + +## [പ്രീ-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +--- + +[![ML for beginners - History of Machine Learning](https://img.youtube.com/vi/N6wxM4wZ7V0/0.jpg)](https://youtu.be/N6wxM4wZ7V0 "ML for beginners - History of Machine Learning") + +> 🎥 ഈ പാഠം വിശദീകരിക്കുന്ന ഒരു ചെറിയ വീഡിയോയ്ക്ക് മുകളിൽ കാണുന്ന ചിത്രം ക്ലിക്ക് ചെയ്യുക. + +ഈ പാഠത്തിൽ, മെഷീൻ ലേണിങ്ങിന്റെയും കൃത്രിമ ബുദ്ധിമുട്ടിന്റെയും ചരിത്രത്തിലെ പ്രധാന മൈൽസ്റ്റോണുകൾ നാം പരിശോധിക്കും. + +കൃത്രിമ ബുദ്ധിമുട്ട് (AI) എന്ന മേഖലയുടെയും മെഷീൻ ലേണിങ്ങിന്റെയും ചരിത്രം പരസ്പരം ബന്ധപ്പെട്ടിരിക്കുന്നു, കാരണം ML-നെ അടിസ്ഥാനമാക്കിയുള്ള ആൽഗോരിതങ്ങളും കംപ്യൂട്ടേഷണൽ പുരോഗതികളും AI-യുടെ വികസനത്തിന് സഹായകമായിട്ടുണ്ട്. ഈ മേഖലകൾ 1950-കളിൽ വ്യക്തമായ അന്വേഷണ മേഖലകളായി രൂപപ്പെട്ടെങ്കിലും, [ആൽഗോരിത്മിക്, സാങ്കേതിക, ഗണിത, കംപ്യൂട്ടേഷണൽ, സാങ്കേതിക കണ്ടെത്തലുകൾ](https://wikipedia.org/wiki/Timeline_of_machine_learning) ഈ കാലഘട്ടത്തിന് മുമ്പും അതിനിടയിലും ഉണ്ടായിരുന്നുവെന്ന് ഓർക്കുന്നത് പ്രയോജനകരമാണ്. വാസ്തവത്തിൽ, ഈ ചോദ്യങ്ങളെക്കുറിച്ച് ആളുകൾ [നൂറുകണക്കിന് വർഷങ്ങളായി](https://wikipedia.org/wiki/History_of_artificial_intelligence) ചിന്തിച്ചുവരുന്നു: ഈ ലേഖനം 'ചിന്തിക്കുന്ന യന്ത്രം' എന്ന ആശയത്തിന്റെ ചരിത്ര ബൗദ്ധിക അടിസ്ഥാനങ്ങളെക്കുറിച്ചാണ്. + +--- +## ശ്രദ്ധേയമായ കണ്ടെത്തലുകൾ + +- 1763, 1812 [ബേസ് തിയറിം](https://wikipedia.org/wiki/Bayes%27_theorem)യും അതിന്റെ മുൻപുള്ളവയും. ഈ തിയറിവും അതിന്റെ പ്രയോഗങ്ങളും മുൻ അറിവിന്റെ അടിസ്ഥാനത്തിൽ ഒരു സംഭവത്തിന്റെ സംഭവിക്കാനുള്ള സാധ്യത വിവരിക്കുന്നു. +- 1805 ഫ്രഞ്ച് ഗണിതജ്ഞൻ Adrien-Marie Legendre നിർമിച്ച [ലീസ്റ്റ് സ്ക്വയർ തിയറി](https://wikipedia.org/wiki/Least_squares). ഈ തിയറി, ഞങ്ങളുടെ Regression യൂണിറ്റിൽ പഠിക്കപ്പെടും, ഡാറ്റ ഫിറ്റിംഗിൽ സഹായിക്കുന്നു. +- 1913 റഷ്യൻ ഗണിതജ്ഞൻ Andrey Markov-ന്റെ പേരിലുള്ള [മാർക്കോവ് ചെയിൻസ്](https://wikipedia.org/wiki/Markov_chain), മുൻസ്ഥിതിയുടെ അടിസ്ഥാനത്തിൽ സംഭവങ്ങളുടെ സീക്വൻസ് വിവരിക്കാൻ ഉപയോഗിക്കുന്നു. +- 1957 അമേരിക്കൻ മനശാസ്ത്രജ്ഞൻ Frank Rosenblatt കണ്ടുപിടിച്ച [പേഴ്സെപ്ട്രോൺ](https://wikipedia.org/wiki/Perceptron) എന്ന ലീനിയർ ക്ലാസിഫയർ, ഡീപ്പ് ലേണിങ്ങിലെ പുരോഗതിക്ക് അടിസ്ഥാനം. + +--- + +- 1967 [നീറസ്റ്റ് നെബർ](https://wikipedia.org/wiki/Nearest_neighbor) ഒരു ആൽഗോരിതം, ആദ്യം റൂട്ടുകൾ മാപ്പ് ചെയ്യാൻ രൂപകൽപ്പന ചെയ്തതായിരുന്നു. ML-ൽ ഇത് പാറ്റേണുകൾ കണ്ടെത്താൻ ഉപയോഗിക്കുന്നു. +- 1970 [ബാക്ക്‌പ്രൊപ്പഗേഷൻ](https://wikipedia.org/wiki/Backpropagation) [ഫീഡ്‌ഫോർവേഡ് ന്യൂറൽ നെറ്റ്വർക്കുകൾ](https://wikipedia.org/wiki/Feedforward_neural_network) പരിശീലിപ്പിക്കാൻ ഉപയോഗിക്കുന്നു. +- 1982 [റികറന്റ് ന്യൂറൽ നെറ്റ്വർക്കുകൾ](https://wikipedia.org/wiki/Recurrent_neural_network) ഫീഡ്‌ഫോർവേഡ് ന്യൂറൽ നെറ്റ്വർക്കുകളിൽ നിന്നുള്ള കൃത്രിമ ന്യൂറൽ നെറ്റ്വർക്കുകൾ ആണ്, അവ താൽക്കാലിക ഗ്രാഫുകൾ സൃഷ്ടിക്കുന്നു. + +✅ ചെറിയൊരു ഗവേഷണം നടത്തുക. ML-നും AI-നും ചരിത്രത്തിൽ മറ്റേതെങ്കിലും നിർണായക തീയതികൾ എന്തെല്ലാമാണ്? + +--- +## 1950: ചിന്തിക്കുന്ന യന്ത്രങ്ങൾ + +അലൻ ട്യൂറിംഗ്, 2019-ൽ [പൊതുജനങ്ങൾ വോട്ടെഴുതിയ](https://wikipedia.org/wiki/Icons:_The_Greatest_Person_of_the_20th_Century) 20-ആം നൂറ്റാണ്ടിലെ ഏറ്റവും വലിയ ശാസ്ത്രജ്ഞനായി തിരഞ്ഞെടുക്കപ്പെട്ട ഒരു അത്ഭുതകരനായ വ്യക്തി, 'ചിന്തിക്കാൻ കഴിയുന്ന യന്ത്രം' എന്ന ആശയത്തിന് അടിസ്ഥാനം ഒരുക്കുന്നതിൽ സഹായിച്ചതായി കണക്കാക്കപ്പെടുന്നു. ഈ ആശയത്തിന് empirical തെളിവ് ആവശ്യമായതിനാൽ അദ്ദേഹം [ട്യൂറിംഗ് ടെസ്റ്റ്](https://www.bbc.com/news/technology-18475646) സൃഷ്ടിച്ചു, ഇത് ഞങ്ങളുടെ NLP പാഠങ്ങളിൽ നിങ്ങൾ പരിശോധിക്കും. + +--- +## 1956: ഡാർട്മൗത്ത് സമ്മർ റിസർച്ച് പ്രോജക്ട് + +"കൃത്രിമ ബുദ്ധിമുട്ട് എന്ന മേഖലയായി ഡാർട്മൗത്ത് സമ്മർ റിസർച്ച് പ്രോജക്ട് ഒരു സുപ്രധാന സംഭവമായിരുന്നു," ഇവിടെ 'കൃത്രിമ ബുദ്ധിമുട്ട്' എന്ന പദം ആദ്യമായി ഉപയോഗിക്കപ്പെട്ടു ([സ്രോതസ്സ്](https://250.dartmouth.edu/highlights/artificial-intelligence-ai-coined-dartmouth)). + +> പഠനത്തിന്റെ എല്ലാ ഘടകങ്ങളും ബുദ്ധിമുട്ടിന്റെ മറ്റ് എല്ലാ സവിശേഷതകളും യന്ത്രം അനുകരിക്കാൻ കഴിയുന്ന വിധം കൃത്യമായി വിവരണം ചെയ്യാവുന്നതാണ്. + +--- + +മുൻനിര ഗവേഷകൻ, ഗണിതശാസ്ത്ര പ്രൊഫസർ ജോൺ മക്കാർത്തി, "പഠനത്തിന്റെ എല്ലാ ഘടകങ്ങളും ബുദ്ധിമുട്ടിന്റെ മറ്റ് സവിശേഷതകളും യന്ത്രം അനുകരിക്കാൻ കഴിയുന്ന വിധം കൃത്യമായി വിവരണം ചെയ്യാവുന്നതാണ്" എന്ന കണക്കുകൂട്ടലിന്റെ അടിസ്ഥാനത്തിൽ മുന്നോട്ട് പോകാൻ ആഗ്രഹിച്ചു. ഈ സമ്മേളനത്തിൽ Marvin Minsky എന്ന മറ്റൊരു പ്രമുഖനും പങ്കെടുത്തു. + +ഈ വർക്ക്‌ഷോപ്പ് "സിംബോളിക് രീതികളുടെ ഉയർച്ച, പരിമിത മേഖലകളിൽ കേന്ദ്രീകൃത സിസ്റ്റങ്ങൾ (ആദ്യ വിദഗ്ധ സിസ്റ്റങ്ങൾ), ഡെഡക്ടീവ് സിസ്റ്റങ്ങൾ എതിരായ ഇൻഡക്ടീവ് സിസ്റ്റങ്ങൾ" തുടങ്ങിയ ചർച്ചകൾ ആരംഭിക്കുകയും പ്രോത്സാഹിപ്പിക്കുകയും ചെയ്തതായി കണക്കാക്കപ്പെടുന്നു ([സ്രോതസ്സ്](https://wikipedia.org/wiki/Dartmouth_workshop)). + +--- +## 1956 - 1974: "സ്വർണകാലം" + +1950-കളിൽ നിന്ന് 1970-കളുടെ മധ്യകാലം വരെ, AI പല പ്രശ്നങ്ങളും പരിഹരിക്കുമെന്ന് വലിയ പ്രതീക്ഷ ഉണ്ടായിരുന്നു. 1967-ൽ Marvin Minsky ആത്മവിശ്വാസത്തോടെ പറഞ്ഞു: "ഒരു തലമുറക്കുള്ളിൽ ... 'കൃത്രിമ ബുദ്ധിമുട്ട്' സൃഷ്ടിക്കുന്ന പ്രശ്നം പ്രധാനമായും പരിഹരിക്കപ്പെടും." (Minsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall) + +പ്രകൃതിഭാഷാ പ്രോസസ്സിംഗ് ഗവേഷണം വളർന്നു, തിരച്ചിൽ മെച്ചപ്പെടുത്തി ശക്തിപ്പെടുത്തി, 'മൈക്രോ-വേൾഡ്' എന്ന ആശയം സൃഷ്ടിച്ചു, എളുപ്പം plain language നിർദ്ദേശങ്ങൾ ഉപയോഗിച്ച് ലളിതമായ പ്രവർത്തനങ്ങൾ പൂർത്തിയാക്കാൻ. + +--- + +ഗവൺമെന്റ് ഏജൻസികൾ ഗവേഷണത്തിന് ധനസഹായം നൽകി, കംപ്യൂട്ടേഷൻ, ആൽഗോരിതങ്ങളിൽ പുരോഗതി ഉണ്ടായി, ബുദ്ധിമുട്ടുള്ള യന്ത്രങ്ങളുടെ പ്രോട്ടോടൈപ്പുകൾ നിർമ്മിച്ചു. ചില യന്ത്രങ്ങൾ: + +* [ഷേക്കി ദി റോബോട്ട്](https://wikipedia.org/wiki/Shakey_the_robot), 'ബുദ്ധിമുട്ടോടെ' പ്രവർത്തനങ്ങൾ നിർവഹിക്കാൻ കഴിവുള്ളത്. + + ![ഷേക്കി, ഒരു ബുദ്ധിമുട്ടുള്ള റോബോട്ട്](../../../../translated_images/shakey.4dc17819c447c05bf4b52f76da0bdd28817d056fdb906252ec20124dd4cfa55e.ml.jpg) + > 1972-ലെ ഷേക്കി + +--- + +* എലൈസ, ഒരു പ്രാരംഭ 'ചാറ്റർബോട്ട്', ആളുകളുമായി സംവദിക്കുകയും പ്രാഥമിക 'തെറാപ്പിസ്റ്റ്' ആയി പ്രവർത്തിക്കുകയും ചെയ്തു. NLP പാഠങ്ങളിൽ എലൈസയെക്കുറിച്ച് കൂടുതൽ പഠിക്കും. + + ![എലൈസ, ഒരു ബോട്ട്](../../../../translated_images/eliza.84397454cda9559bb5ec296b5b8fff067571c0cccc5405f9c1ab1c3f105c075c.ml.png) + > എലൈസയുടെ ഒരു പതിപ്പ്, ഒരു ചാറ്റ്ബോട്ട് + +--- + +* "ബ്ലോക്ക്സ് വേൾഡ്" ഒരു മൈക്രോ-വേൾഡ് ഉദാഹരണമായിരുന്നു, ഇവിടെ ബ്ലോക്കുകൾ തട്ടി ക്രമീകരിക്കാനും യന്ത്രങ്ങളെ തീരുമാനമെടുക്കാൻ പഠിപ്പിക്കാനും പരീക്ഷണങ്ങൾ നടത്താമായിരുന്നു. [SHRDLU](https://wikipedia.org/wiki/SHRDLU) പോലുള്ള ലൈബ്രറികൾ ഉപയോഗിച്ച് ഭാഷാ പ്രോസസ്സിംഗ് മുന്നോട്ട് കൊണ്ടുപോയി. + + [![SHRDLU ഉപയോഗിച്ചുള്ള ബ്ലോക്ക്സ് വേൾഡ്](https://img.youtube.com/vi/QAJz4YKUwqw/0.jpg)](https://www.youtube.com/watch?v=QAJz4YKUwqw "blocks world with SHRDLU") + + > 🎥 മുകളിൽ കാണുന്ന ചിത്രം ക്ലിക്ക് ചെയ്ത് വീഡിയോ കാണുക: SHRDLU ഉപയോഗിച്ചുള്ള ബ്ലോക്ക്സ് വേൾഡ് + +--- +## 1974 - 1980: "AI ശീതകാലം" + +1970-കളുടെ മധ്യത്തിൽ, 'ബുദ്ധിമുട്ടുള്ള യന്ത്രങ്ങൾ' നിർമ്മിക്കുന്നതിന്റെ സങ്കീർണ്ണത കുറവായി കണക്കാക്കിയതും, ലഭ്യമായ കംപ്യൂട്ട് ശക്തി പരിഗണിച്ചാൽ വാഗ്ദാനം അത്ര വലിയതല്ലെന്ന് വ്യക്തമായിരുന്നു. ധനസഹായം കുറഞ്ഞു, മേഖലയിലെ ആത്മവിശ്വാസം മന്ദഗതിയിലായി. ആത്മവിശ്വാസത്തെ ബാധിച്ച ചില പ്രശ്നങ്ങൾ: + +--- +- **പരിമിതികൾ**. കംപ്യൂട്ട് ശക്തി വളരെ പരിമിതമായിരുന്നു. +- **കമ്പിനേറ്റോറിയൽ എക്സ്പ്ലോഷൻ**. കംപ്യൂട്ടറുകളിൽ കൂടുതൽ ആവശ്യങ്ങൾ വന്നപ്പോൾ പരിശീലിക്കേണ്ട പാരാമീറ്ററുകളുടെ എണ്ണം വൻപരിധിയിലേയ്ക്ക് വളർന്നു, കംപ്യൂട്ട് ശക്തിയും കഴിവും അതുപോലെ വളർന്നില്ല. +- **ഡാറ്റയുടെ കുറവ്**. പരീക്ഷണങ്ങൾ, വികസനം, ആൽഗോരിതം മെച്ചപ്പെടുത്തൽ എന്നിവയ്ക്ക് ആവശ്യമായ ഡാറ്റ കുറവായിരുന്നു. +- **നാം ശരിയായ ചോദ്യങ്ങൾ ചോദിക്കുന്നുണ്ടോ?**. ചോദിക്കുന്ന ചോദ്യങ്ങൾ തന്നെ സംശയാസ്പദമായി മാറി. ഗവേഷകർക്ക് അവരുടെ സമീപനങ്ങളെക്കുറിച്ച് വിമർശനങ്ങൾ നേരിടേണ്ടി വന്നു: + - ട്യൂറിംഗ് ടെസ്റ്റുകൾ 'ചൈനീസ് റൂം തിയറി' പോലുള്ള ആശയങ്ങളാൽ ചോദ്യം ചെയ്യപ്പെട്ടു, ഇതിൽ "ഡിജിറ്റൽ കംപ്യൂട്ടർ പ്രോഗ്രാമിംഗ് ഭാഷ മനസ്സിലാക്കുന്ന പോലെ തോന്നിക്കാമെങ്കിലും യഥാർത്ഥ മനസ്സിലാക്കൽ ഉണ്ടാകില്ല" എന്ന് വാദിച്ചു. ([സ്രോതസ്സ്](https://plato.stanford.edu/entries/chinese-room/)) + - "തെറാപ്പിസ്റ്റ്" എലൈസ പോലുള്ള കൃത്രിമ ബുദ്ധിമുട്ടുകൾ സമൂഹത്തിൽ പരിചയപ്പെടുത്തുന്നതിന്റെ നൈതികത ചോദ്യം ചെയ്യപ്പെട്ടു. + +--- + +അതേസമയം, വിവിധ AI ചിന്താശാഖകൾ രൂപപ്പെട്ടു. ["സ്ക്രഫി" vs. "നീറ്റ് AI"](https://wikipedia.org/wiki/Neats_and_scruffies) എന്ന വ്യത്യാസം സ്ഥാപിച്ചു. _സ്ക്രഫി_ ലാബുകൾ മണിക്കൂറുകൾക്കായി പ്രോഗ്രാമുകൾ തിരുത്തി ആവശ്യമായ ഫലങ്ങൾ നേടാൻ ശ്രമിച്ചു. _നീറ്റ്_ ലാബുകൾ "ലോജിക്, ഔപചാരിക പ്രശ്നപരിഹാരത്തിൽ" കേന്ദ്രീകരിച്ചു. എലൈസയും SHRDLUയും പ്രശസ്തമായ _സ്ക്രഫി_ സിസ്റ്റങ്ങളായിരുന്നു. 1980-കളിൽ ML സിസ്റ്റങ്ങൾ പുനരുത്പാദനയോഗ്യമാക്കേണ്ട ആവശ്യം ഉയർന്നപ്പോൾ, _നീറ്റ്_ സമീപനം മുൻപന്തിയിലായി, കാരണം അതിന്റെ ഫലങ്ങൾ കൂടുതൽ വിശദീകരിക്കാവുന്നതായിരുന്നു. + +--- +## 1980-കൾ വിദഗ്ധ സിസ്റ്റങ്ങൾ + +മേഖല വളർന്നതോടെ, ബിസിനസിന് ഇതിന്റെ പ്രയോജനം വ്യക്തമായി, 1980-കളിൽ 'വിദഗ്ധ സിസ്റ്റങ്ങൾ' വ്യാപിച്ചു. "വിദഗ്ധ സിസ്റ്റങ്ങൾ കൃത്രിമ ബുദ്ധിമുട്ടിന്റെ ആദ്യത്തെ വിജയകരമായ സോഫ്റ്റ്‌വെയർ രൂപങ്ങളിലൊന്നായിരുന്നു." ([സ്രോതസ്സ്](https://wikipedia.org/wiki/Expert_system)). + +ഈ സിസ്റ്റങ്ങൾ ഭാഗികമായി നിയമങ്ങൾ നിർവചിക്കുന്ന ഒരു റൂൾസ് എഞ്ചിനും, പുതിയ വസ്തുതകൾ കണ്ടെത്താൻ റൂൾസ് സിസ്റ്റം ഉപയോഗിക്കുന്ന ഇൻഫറൻസ് എഞ്ചിനും ചേർന്ന _ഹൈബ്രിഡ്_ ആണ്. + +ഈ കാലഘട്ടത്തിൽ ന്യൂറൽ നെറ്റ്വർക്കുകൾക്ക് കൂടുതൽ ശ്രദ്ധ ലഭിച്ചു. + +--- +## 1987 - 1993: AI 'ചില്ല്' + +വിദഗ്ധ സിസ്റ്റങ്ങൾക്കായുള്ള പ്രത്യേക ഹാർഡ്‌വെയർ വളരെ പ്രത്യേകതയുള്ളതായതിനാൽ അതിന്റെ വ്യാപനം കുറവായി. പേഴ്സണൽ കംപ്യൂട്ടറുകളുടെ ഉയർച്ചയും ഈ വലിയ, പ്രത്യേക, കേന്ദ്രകൃത സിസ്റ്റങ്ങളുമായി മത്സരം നടത്തി. കംപ്യൂട്ടിങ്ങിന്റെ ജനാധിപത്യവൽക്കരണം ആരംഭിച്ചു, ഇത് പിന്നീട് ബിഗ് ഡാറ്റയുടെ ആധുനിക പൊട്ടിപ്പുറത്തലിന് വഴിതെളിച്ചു. + +--- +## 1993 - 2011 + +ഈ കാലഘട്ടം ML-നും AI-നും മുമ്പ് ഡാറ്റയും കംപ്യൂട്ട് ശക്തിയും കുറവായതിനാൽ ഉണ്ടായ പ്രശ്നങ്ങൾ പരിഹരിക്കാൻ പുതിയ കാലഘട്ടമായി. ഡാറ്റയുടെ അളവ് വേഗത്തിൽ വർദ്ധിച്ചു, പ്രത്യേകിച്ച് 2007-ൽ സ്മാർട്ട്ഫോൺ വന്നതോടെ കൂടുതൽ ലഭ്യമായി. കംപ്യൂട്ട് ശക്തി വൻപരിധിയിലേയ്ക്ക് വളർന്നു, ആൽഗോരിതങ്ങളും അതിനൊപ്പം വികസിച്ചു. ഈ മേഖല വളർച്ചയുടെ പാതയിൽ കടന്നു, മുൻകാല സ്വതന്ത്രമായ കാലങ്ങൾ ഒരു സത്യമായ ശാസ്ത്രശാഖയായി രൂപപ്പെട്ടു. + +--- +## ഇപ്പോൾ + +ഇന്ന് മെഷീൻ ലേണിങ്ങും AI-യും നമ്മുടെ ജീവിതത്തിന്റെ എല്ലാ ഭാഗത്തും സ്പർശിക്കുന്നു. ഈ കാലഘട്ടം ഈ ആൽഗോരിതങ്ങൾ മനുഷ്യജീവിതങ്ങളിൽ ഉണ്ടാക്കുന്ന അപകടങ്ങളും സാധ്യതകളും സൂക്ഷ്മമായി മനസ്സിലാക്കേണ്ടതാണ്. മൈക്രോസോഫ്റ്റിന്റെ ബ്രാഡ് സ്മിത്ത് പറഞ്ഞതുപോലെ, "ഇൻഫർമേഷൻ ടെക്നോളജി സ്വകാര്യതയും അഭിപ്രായ സ്വാതന്ത്ര്യവും പോലുള്ള അടിസ്ഥാന മനുഷ്യാവകാശ സംരക്ഷണങ്ങളുടെ ഹൃദയത്തെ ബാധിക്കുന്ന പ്രശ്നങ്ങൾ ഉയർത്തുന്നു. ഈ ഉൽപ്പന്നങ്ങൾ സൃഷ്ടിക്കുന്ന ടെക് കമ്പനികൾക്ക് കൂടുതൽ ഉത്തരവാദിത്വം ഉണ്ട്. ഞങ്ങളുടെ കാഴ്ചപ്പാടിൽ, ഇത് ചിന്താപൂർവ്വകമായ സർക്കാർ നിയന്ത്രണവും അംഗീകരിക്കാവുന്ന ഉപയോഗങ്ങൾക്കുള്ള മാനദണ്ഡങ്ങളുടെ വികസനവും ആവശ്യമാണ്" ([സ്രോതസ്സ്](https://www.technologyreview.com/2019/12/18/102365/the-future-of-ais-impact-on-society/)). + +--- + +ഭാവി എന്ത് കൊണ്ടുവരുമെന്ന് കാണേണ്ടതാണ്, എന്നാൽ ഈ കംപ്യൂട്ടർ സിസ്റ്റങ്ങളും അവ പ്രവർത്തിപ്പിക്കുന്ന സോഫ്റ്റ്‌വെയറും ആൽഗോരിതങ്ങളും മനസ്സിലാക്കുന്നത് പ്രധാനമാണ്. നിങ്ങൾക്ക് മികച്ച മനസ്സിലാക്കൽ നേടാൻ ഈ പാഠ്യപദ്ധതി സഹായിക്കുമെന്ന് ഞങ്ങൾ പ്രതീക്ഷിക്കുന്നു. + +[![ഡീപ്പ് ലേണിങ്ങിന്റെ ചരിത്രം](https://img.youtube.com/vi/mTtDfKgLm54/0.jpg)](https://www.youtube.com/watch?v=mTtDfKgLm54 "The history of deep learning") +> 🎥 മുകളിൽ കാണുന്ന ചിത്രം ക്ലിക്ക് ചെയ്ത് വീഡിയോ കാണുക: ഈ ലെക്ചറിൽ Yann LeCun ഡീപ്പ് ലേണിങ്ങിന്റെ ചരിത്രം വിശദീകരിക്കുന്നു + +--- +## 🚀ചലഞ്ച് + +ഈ ചരിത്രപരമായ ഒരു ഘട്ടത്തിൽ കൂടുതൽ പഠിച്ച് അവയുടെ പിന്നിലെ ആളുകളെക്കുറിച്ച് അറിയുക. അത്ഭുതകരമായ കഥാപാത്രങ്ങളുണ്ട്, ശാസ്ത്രീയ കണ്ടെത്തലുകൾ സാംസ്കാരിക ശൂന്യതയിൽ സൃഷ്ടിക്കപ്പെട്ടിട്ടില്ല. നിങ്ങൾ എന്ത് കണ്ടെത്തുന്നു? + +## [പോസ്റ്റ്-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +--- +## അവലോകനം & സ്വയം പഠനം + +കാണാനും കേൾക്കാനും ഉള്ളവ: + +[AI-യുടെ വികാസത്തെക്കുറിച്ച് Amy Boyd സംസാരിക്കുന്ന പോഡ്കാസ്റ്റ്](http://runasradio.com/Shows/Show/739) + +[![Amy Boyd-യുടെ AI ചരിത്രം](https://img.youtube.com/vi/EJt3_bFYKss/0.jpg)](https://www.youtube.com/watch?v=EJt3_bFYKss "The history of AI by Amy Boyd") + +--- + +## അസൈൻമെന്റ് + +[ടൈംലൈൻ സൃഷ്ടിക്കുക](assignment.md) + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/1-Introduction/2-history-of-ML/assignment.md b/translations/ml/1-Introduction/2-history-of-ML/assignment.md new file mode 100644 index 000000000..1a6caa3f0 --- /dev/null +++ b/translations/ml/1-Introduction/2-history-of-ML/assignment.md @@ -0,0 +1,27 @@ + +# ഒരു ടൈംലൈൻ സൃഷ്ടിക്കുക + +## നിർദ്ദേശങ്ങൾ + +[ഈ റിപോ](https://github.com/Digital-Humanities-Toolkit/timeline-builder) ഉപയോഗിച്ച് ആൽഗോരിതങ്ങൾ, ഗണിതം, സ്ഥിതിവിവരശാസ്ത്രം, എഐ, അല്ലെങ്കിൽ എംഎൽ എന്നിവയുടെ ചരിത്രത്തിലെ ഏതെങ്കിലും ഒരു വശത്തിന്റെ ടൈംലൈൻ സൃഷ്ടിക്കുക, അല്ലെങ്കിൽ ഇവയുടെ സംയോജനം. നിങ്ങൾക്ക് ഒരു വ്യക്തിയെയോ, ഒരു ആശയത്തെയോ, അല്ലെങ്കിൽ ദീർഘകാല ചിന്താവിഷയത്തെയോ കേന്ദ്രീകരിക്കാം. മൾട്ടിമീഡിയ ഘടകങ്ങൾ ചേർക്കാൻ ശ്രദ്ധിക്കുക. + +## റൂബ്രിക് + +| മാനദണ്ഡം | ഉദാഹരണാർത്ഥം | മതിയായത് | മെച്ചപ്പെടുത്തേണ്ടത് | +| -------- | ------------------------------------------------- | --------------------------------------- | ---------------------------------------------------------------- | +| | GitHub പേജായി വിന്യസിച്ച ടൈംലൈൻ അവതരിപ്പിച്ചിരിക്കുന്നു | കോഡ് അപൂർണ്ണമാണ്, വിന്യസിച്ചിട്ടില്ല | ടൈംലൈൻ അപൂർണ്ണമാണ്, നന്നായി ഗവേഷണം ചെയ്തിട്ടില്ല, വിന്യസിച്ചിട്ടില്ല | + +--- + + +**അസൂയാപത്രം**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ അധികാരപരമായ ഉറവിടമായി കണക്കാക്കപ്പെടണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/1-Introduction/3-fairness/README.md b/translations/ml/1-Introduction/3-fairness/README.md new file mode 100644 index 000000000..de9a998d9 --- /dev/null +++ b/translations/ml/1-Introduction/3-fairness/README.md @@ -0,0 +1,172 @@ + +# ഉത്തരവാദിത്വമുള്ള AI ഉപയോഗിച്ച് മെഷീൻ ലേണിംഗ് പരിഹാരങ്ങൾ നിർമ്മിക്കൽ + +![Summary of responsible AI in Machine Learning in a sketchnote](../../../../translated_images/ml-fairness.ef296ebec6afc98a44566d7b6c1ed18dc2bf1115c13ec679bb626028e852fa1d.ml.png) +> സ്കെച്ച്നോട്ട്: [Tomomi Imura](https://www.twitter.com/girlie_mac) + +## [പ്രീ-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +## പരിചയം + +ഈ പാഠ്യപദ്ധതിയിൽ, മെഷീൻ ലേണിംഗ് എങ്ങനെ നമ്മുടെ ദൈനംദിന ജീവിതത്തെ ബാധിക്കുന്നു എന്ന് നിങ്ങൾ കണ്ടെത്താൻ തുടങ്ങും. ഇപ്പോഴും, ആരോഗ്യപരിശോധനകൾ, വായ്പാ അംഗീകാരം, തട്ടിപ്പ് കണ്ടെത്തൽ തുടങ്ങിയ ദൈനംദിന തീരുമാനങ്ങളിൽ സിസ്റ്റങ്ങളും മോഡലുകളും പങ്കാളികളാണ്. അതിനാൽ, ഈ മോഡലുകൾ വിശ്വസനീയമായ ഫലങ്ങൾ നൽകാൻ നല്ല രീതിയിൽ പ്രവർത്തിക്കണം. ഏതൊരു സോഫ്റ്റ്‌വെയർ ആപ്ലിക്കേഷനുപോലെ, AI സിസ്റ്റങ്ങൾ പ്രതീക്ഷകൾ പാലിക്കാതിരിക്കുകയോ അനിഷ്ടഫലങ്ങൾ ഉണ്ടാകുകയോ ചെയ്യാം. അതുകൊണ്ടുതന്നെ AI മോഡലിന്റെ പെരുമാറ്റം മനസ്സിലാക്കാനും വിശദീകരിക്കാനും കഴിയുന്നത് അനിവാര്യമാണ്. + +നിങ്ങൾ ഈ മോഡലുകൾ നിർമ്മിക്കാൻ ഉപയോഗിക്കുന്ന ഡാറ്റയിൽ ജാതി, ലിംഗം, രാഷ്ട്രീയ കാഴ്ചപ്പാട്, മതം പോലുള്ള ചില ജനസംഖ്യാ വിഭാഗങ്ങൾ ഇല്ലാതിരുന്നാൽ എന്ത് സംഭവിക്കും എന്ന് കണക്കാക്കുക. മോഡലിന്റെ ഫലം ചില ജനസംഖ്യാ വിഭാഗങ്ങളെ അനുകൂലിക്കുന്നതായി വ്യാഖ്യാനിക്കപ്പെടുമ്പോൾ എന്ത് സംഭവിക്കും? ആപ്ലിക്കേഷനിൽ അതിന്റെ പ്രത്യാഘാതം എന്താകും? കൂടാതെ, മോഡലിന് അനിഷ്ടഫലം ഉണ്ടാകുകയും അത് ആളുകൾക്ക് ഹാനികരമായിരിക്കുകയുമെങ്കിൽ എന്ത് സംഭവിക്കും? AI സിസ്റ്റത്തിന്റെ പെരുമാറ്റത്തിന് ആരാണ് ഉത്തരവാദി? ഈ പാഠ്യപദ്ധതിയിൽ നാം ഈ ചോദ്യങ്ങൾ പരിശോധിക്കും. + +ഈ പാഠത്തിൽ നിങ്ങൾ: + +- മെഷീൻ ലേണിംഗിൽ നീതിയുടെ പ്രാധാന്യവും നീതിയുമായി ബന്ധപ്പെട്ട ഹാനികരമായ കാര്യങ്ങളും മനസ്സിലാക്കും. +- വിശ്വാസ്യതയും സുരക്ഷയും ഉറപ്പാക്കാൻ അസാധാരണ സാഹചര്യങ്ങളും ഔട്ട്‌ലൈയർമാരും പരിശോധിക്കുന്ന പ്രക്രിയയെ പരിചയപ്പെടും. +- ഉൾക്കൊള്ളുന്ന സിസ്റ്റങ്ങൾ രൂപകൽപ്പന ചെയ്ത് എല്ലാവരെയും ശക്തിപ്പെടുത്തേണ്ടതിന്റെ ആവശ്യകത മനസ്സിലാക്കും. +- ഡാറ്റയുടെയും ആളുകളുടെയും സ്വകാര്യതയും സുരക്ഷയും സംരക്ഷിക്കുന്നതിന്റെ പ്രാധാന്യം അന്വേഷിക്കും. +- AI മോഡലുകളുടെ പെരുമാറ്റം വിശദീകരിക്കാൻ ഗ്ലാസ് ബോക്സ് സമീപനത്തിന്റെ പ്രാധാന്യം കാണും. +- AI സിസ്റ്റങ്ങളിൽ വിശ്വാസം സൃഷ്ടിക്കാൻ ഉത്തരവാദിത്വം അനിവാര്യമാണെന്ന് ശ്രദ്ധിക്കും. + +## മുൻകൂട്ടി അറിയേണ്ടത് + +മുൻകൂട്ടി, "ഉത്തരവാദിത്വമുള്ള AI സിദ്ധാന്തങ്ങൾ" എന്ന ലേണിംഗ് പാത പിന്തുടർന്ന് താഴെ കൊടുത്തിരിക്കുന്ന വീഡിയോ കാണുക: + +ഉത്തരവാദിത്വമുള്ള AIയെക്കുറിച്ച് കൂടുതൽ അറിയാൻ ഈ [Learning Path](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) പിന്തുടരുക + +[![Microsoft's Approach to Responsible AI](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft's Approach to Responsible AI") + +> 🎥 മുകളിൽ കാണുന്ന ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക: Microsoft's Approach to Responsible AI + +## നീതി + +AI സിസ്റ്റങ്ങൾ എല്ലാവരോടും നീതിപൂർവ്വം പെരുമാറണം, സമാനമായ ജനസംഖ്യാ വിഭാഗങ്ങളെ വ്യത്യസ്തമായി ബാധിക്കരുത്. ഉദാഹരണത്തിന്, മെഡിക്കൽ ചികിത്സ, വായ്പാ അപേക്ഷകൾ, തൊഴിൽ സംബന്ധിച്ച നിർദ്ദേശങ്ങൾ നൽകുമ്പോൾ, സമാന ലക്ഷണങ്ങൾ, സാമ്പത്തിക സാഹചര്യങ്ങൾ, പ്രൊഫഷണൽ യോഗ്യതകൾ ഉള്ള എല്ലാവർക്കും ഒരേ നിർദ്ദേശങ്ങൾ നൽകണം. ഓരോ മനുഷ്യനും അവന്റെ തീരുമാനങ്ങളിലും പ്രവർത്തനങ്ങളിലും സ്വാധീനം ചെലുത്തുന്ന പാരമ്പര്യ പൂർവ്വഗതമായ മുൻഗണനകൾ (ബയാസുകൾ) ഉണ്ട്. ഈ ബയാസുകൾ AI സിസ്റ്റങ്ങൾ പരിശീലിപ്പിക്കാൻ ഉപയോഗിക്കുന്ന ഡാറ്റയിൽ പ്രത്യക്ഷപ്പെടാം. ചിലപ്പോൾ ഇത് അനായാസം സംഭവിക്കാം. ഡാറ്റയിൽ ബയാസ് ചേർക്കുമ്പോൾ അത് മനസ്സിലാക്കുക പ്രയാസമാണ്. + +**“അനീതിയുള്ളത്”** എന്നത് ഒരു ജനസംഖ്യാ വിഭാഗത്തിന് (ജാതി, ലിംഗം, പ്രായം, അശക്തി നില തുടങ്ങിയ അടിസ്ഥാനത്തിൽ) ഉണ്ടാകുന്ന നെഗറ്റീവ് പ്രഭാവങ്ങളെയോ “ഹാനികളെയോ” ഉൾക്കൊള്ളുന്നു. പ്രധാന നീതി സംബന്ധമായ ഹാനികൾ താഴെപ്പറയുന്നവയായി വർഗ്ഗീകരിക്കാം: + +- **വിതരണം**: ഉദാഹരണത്തിന്, ഒരു ലിംഗം അല്ലെങ്കിൽ ജാതി മറ്റൊരാളേക്കാൾ മുൻഗണന ലഭിക്കുന്നത്. +- **സേവന ഗുണമേന്മ**: ഒരു പ്രത്യേക സാഹചര്യത്തിനായി ഡാറ്റ പരിശീലിപ്പിച്ചാൽ, യാഥാർത്ഥ്യം കൂടുതൽ സങ്കീർണ്ണമായിരിക്കുമ്പോൾ, സേവനം മോശമായി പ്രവർത്തിക്കും. ഉദാഹരണത്തിന്, കറുത്ത ത്വക്കുള്ള ആളുകളെ തിരിച്ചറിയാൻ കഴിയാത്ത കൈ സോപ്പ് ഡിസ്പെൻസർ. [Reference](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) +- **അവമാനനം**: അനീതിയായി വിമർശിക്കുകയും ലേബൽ ചെയ്യുകയും ചെയ്യുക. ഉദാഹരണത്തിന്, കറുത്ത ത്വക്കുള്ള ആളുകളുടെ ചിത്രങ്ങളെ ഗൊറില്ലകളായി തെറ്റായി ലേബൽ ചെയ്ത ചിത്രം തിരിച്ചറിയൽ സാങ്കേതികവിദ്യ. +- **അധികം അല്ലെങ്കിൽ കുറവ് പ്രതിനിധാനം**: ഒരു പ്രത്യേക വിഭാഗം ഒരു തൊഴിൽ മേഖലയിൽ കാണപ്പെടാത്തത്, അതുപോലെ സേവനങ്ങൾ അതിനെ പ്രോത്സാഹിപ്പിക്കുന്നത് ഹാനികരമാണ്. +- **സ്റ്റീരിയോടൈപ്പിംഗ്**: ഒരു വിഭാഗത്തെ മുൻകൂട്ടി നിശ്ചയിച്ച ഗുണങ്ങളുമായി ബന്ധിപ്പിക്കൽ. ഉദാഹരണത്തിന്, ഇംഗ്ലീഷ്-ടർക്കിഷ് ഭാഷാ പരിഭാഷാ സിസ്റ്റത്തിൽ ലിംഗത്തോട് ബന്ധപ്പെട്ട സ്റ്റീരിയോടൈപ്പിക്കൽ വാക്കുകൾ മൂലം തെറ്റുകൾ ഉണ്ടാകാം. + +![translation to Turkish](../../../../translated_images/gender-bias-translate-en-tr.f185fd8822c2d4372912f2b690f6aaddd306ffbb49d795ad8d12a4bf141e7af0.ml.png) +> ടർക്കിഷിലേക്ക് വിവർത്തനം + +![translation back to English](../../../../translated_images/gender-bias-translate-tr-en.4eee7e3cecb8c70e13a8abbc379209bc8032714169e585bdeac75af09b1752aa.ml.png) +> ഇംഗ്ലീഷിലേക്ക് തിരിച്ചുവിവർത്തനം + +AI സിസ്റ്റങ്ങൾ രൂപകൽപ്പന ചെയ്യുമ്പോഴും പരീക്ഷിക്കുമ്പോഴും, AI നീതിപൂർവ്വം പ്രവർത്തിക്കുന്നതും ബയാസോ വിവേചനപരമായ തീരുമാനങ്ങൾ എടുക്കാതിരിക്കുകയുമാണ് ഉറപ്പാക്കേണ്ടത്, മനുഷ്യർക്കും ഇത് ചെയ്യാൻ അനുവദനീയമല്ല. AI-യിലും മെഷീൻ ലേണിംഗിലും നീതി ഉറപ്പാക്കൽ ഒരു സങ്കീർണ്ണമായ സാമൂഹ്യ സാങ്കേതിക വെല്ലുവിളിയാണ്. + +### വിശ്വാസ്യതയും സുരക്ഷയും + +വിശ്വാസം സൃഷ്ടിക്കാൻ, AI സിസ്റ്റങ്ങൾ സാധാരണവും അപ്രതീക്ഷിതവുമായ സാഹചര്യങ്ങളിൽ വിശ്വസനീയവും സുരക്ഷിതവുമായിരിക്കണം. AI സിസ്റ്റുകൾ വ്യത്യസ്ത സാഹചര്യങ്ങളിൽ എങ്ങനെ പെരുമാറും എന്ന് അറിയുന്നത് പ്രധാനമാണ്, പ്രത്യേകിച്ച് അവ ഔട്ട്‌ലൈയർമാരായപ്പോൾ. AI പരിഹാരങ്ങൾ നിർമ്മിക്കുമ്പോൾ, AI പരിഹാരങ്ങൾ നേരിടുന്ന വ്യത്യസ്ത സാഹചര്യങ്ങളെ കൈകാര്യം ചെയ്യുന്നതിൽ വലിയ ശ്രദ്ധ വേണം. ഉദാഹരണത്തിന്, സ്വയം ഓടുന്ന കാറിന് ആളുകളുടെ സുരക്ഷ മുൻഗണനയായി വേണം. അതിനാൽ, കാറിന്റെ AI എല്ലാ സാധ്യതയുള്ള സാഹചര്യങ്ങളും പരിഗണിക്കണം: രാത്രി, മിന്നൽമേഘങ്ങൾ, മഞ്ഞുവീഴ്ച, കുട്ടികൾ റോഡിൽ ഓടുന്നത്, മൃഗങ്ങൾ, റോഡ് നിർമ്മാണം തുടങ്ങിയവ. ഒരു AI സിസ്റ്റം എത്രത്തോളം വിശ്വസനീയവും സുരക്ഷിതവുമായും വ്യത്യസ്ത സാഹചര്യങ്ങൾ കൈകാര്യം ചെയ്യുന്നു എന്നത് ഡാറ്റ സയന്റിസ്റ്റും AI ഡെവലപ്പറും ഡിസൈൻ അല്ലെങ്കിൽ ടെസ്റ്റിംഗിൽ എത്രത്തോളം മുൻകൂട്ടി കണക്കാക്കിയതിന്റെ സൂചകമാണ്. + +> [🎥 വീഡിയോക്കായി ഇവിടെ ക്ലിക്ക് ചെയ്യുക: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl) + +### ഉൾക്കൊള്ളൽ + +AI സിസ്റ്റങ്ങൾ എല്ലാവരെയും ഉൾക്കൊള്ളുകയും ശക്തിപ്പെടുത്തുകയും ചെയ്യുന്നതായി രൂപകൽപ്പന ചെയ്യണം. AI സിസ്റ്റങ്ങൾ രൂപകൽപ്പന ചെയ്യുമ്പോൾ, ഡാറ്റ സയന്റിസ്റ്റുകളും AI ഡെവലപ്പർമാരും അനായാസം ആളുകളെ ഒഴിവാക്കാൻ ഇടയുണ്ടാകുന്ന തടസ്സങ്ങൾ കണ്ടെത്തി പരിഹരിക്കും. ഉദാഹരണത്തിന്, ലോകത്ത് 1 ബില്യൺ അശക്തരുണ്ട്. AI പുരോഗമനത്തോടെ, അവർക്ക് അവരുടെ ദൈനംദിന ജീവിതത്തിൽ കൂടുതൽ എളുപ്പത്തിൽ വിവരങ്ങളും അവസരങ്ങളും ലഭിക്കും. തടസ്സങ്ങൾ പരിഹരിക്കുന്നത് എല്ലാവർക്കും ഗുണകരമായ മികച്ച അനുഭവങ്ങളുള്ള AI ഉൽപ്പന്നങ്ങൾ വികസിപ്പിക്കാൻ അവസരം സൃഷ്ടിക്കുന്നു. + +> [🎥 വീഡിയോക്കായി ഇവിടെ ക്ലിക്ക് ചെയ്യുക: inclusiveness in AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v) + +### സുരക്ഷയും സ്വകാര്യതയും + +AI സിസ്റ്റങ്ങൾ സുരക്ഷിതവും ആളുകളുടെ സ്വകാര്യത മാനിക്കുന്നതുമായിരിക്കണം. ആളുകൾ അവരുടെ സ്വകാര്യത, വിവരങ്ങൾ, ജീവൻ അപകടത്തിലാക്കുന്ന സിസ്റ്റങ്ങളിൽ കുറവ് വിശ്വാസം കാണിക്കുന്നു. മെഷീൻ ലേണിംഗ് മോഡലുകൾ പരിശീലിപ്പിക്കുമ്പോൾ, മികച്ച ഫലങ്ങൾ ലഭിക്കാൻ ഡാറ്റയിൽ ആശ്രയിക്കുന്നു. അതിനാൽ, ഡാറ്റയുടെ ഉറവിടവും അഖണ്ഡതയും പരിഗണിക്കണം. ഉദാഹരണത്തിന്, ഡാറ്റ ഉപയോക്താവ് സമർപ്പിച്ചതാണോ പൊതുവായി ലഭ്യമായതാണോ? തുടർന്ന്, ഡാറ്റ ഉപയോഗിക്കുമ്പോൾ, രഹസ്യ വിവരങ്ങൾ സംരക്ഷിക്കുകയും ആക്രമണങ്ങൾ പ്രതിരോധിക്കുകയും ചെയ്യുന്ന AI സിസ്റ്റങ്ങൾ വികസിപ്പിക്കുന്നത് അനിവാര്യമാണ്. AI വ്യാപകമാകുമ്പോൾ, സ്വകാര്യത സംരക്ഷിക്കുകയും വ്യക്തിഗതവും ബിസിനസ്സ് വിവരങ്ങളും സുരക്ഷിതമാക്കുകയും ചെയ്യുന്നത് കൂടുതൽ പ്രധാനവും സങ്കീർണ്ണവുമാണ്. AI-യ്ക്ക് ഡാറ്റ ലഭ്യമാകുന്നത് കൃത്യമായ പ്രവചനങ്ങളും തീരുമാനങ്ങളും എടുക്കാൻ അനിവാര്യമായതിനാൽ, സ്വകാര്യതയും ഡാറ്റ സുരക്ഷയും പ്രത്യേക ശ്രദ്ധ ആവശ്യമാണ്. + +> [🎥 വീഡിയോക്കായി ഇവിടെ ക്ലിക്ക് ചെയ്യുക: security in AI](https://www.microsoft.com/videoplayer/embed/RE4voJF) + +- വ്യവസായമായി, GDPR പോലുള്ള നിയമങ്ങൾ മൂലം സ്വകാര്യതയും സുരക്ഷയും മേഖലയിൽ വലിയ പുരോഗതി ഉണ്ടായി. +- AI സിസ്റ്റങ്ങളിൽ, വ്യക്തിഗത ഡാറ്റ കൂടുതൽ ആവശ്യമായതിനും സ്വകാര്യതയ്ക്കും ഇടയിലുള്ള സംഘർഷം അംഗീകരിക്കണം. +- ഇന്റർനെറ്റുമായി കണക്ടഡ് കമ്പ്യൂട്ടറുകളുടെ ഉദയം പോലെ, AI-യുമായി ബന്ധപ്പെട്ട സുരക്ഷാ പ്രശ്നങ്ങളും വർധിക്കുന്നു. +- അതേസമയം, സുരക്ഷ മെച്ചപ്പെടുത്താൻ AI ഉപയോഗിക്കുന്നതും കാണുന്നു. ഉദാഹരണത്തിന്, ഇന്ന് മിക്ക ആധുനിക ആന്റി-വൈറസ് സ്കാനറുകളും AI ഹ്യൂറിസ്റ്റിക്സിൽ പ്രവർത്തിക്കുന്നു. +- ഡാറ്റ സയൻസ് പ്രക്രിയകൾ ഏറ്റവും പുതിയ സ്വകാര്യതയും സുരക്ഷാ പ്രാക്ടീസുകളും ചേർന്ന് പ്രവർത്തിക്കണം. + +### പാരദർശിത്വം + +AI സിസ്റ്റങ്ങൾ മനസ്സിലാക്കാവുന്നതായിരിക്കണം. പാരദർശിത്വത്തിന്റെ പ്രധാന ഭാഗം AI സിസ്റ്റങ്ങളുടെ പെരുമാറ്റവും അവയുടെ ഘടകങ്ങളും വിശദീകരിക്കലാണ്. AI സിസ്റ്റങ്ങൾ എങ്ങനെ പ്രവർത്തിക്കുന്നു, എന്തുകൊണ്ട് പ്രവർത്തിക്കുന്നു എന്ന് പങ്കാളികൾ മനസ്സിലാക്കണം, അതിലൂടെ പ്രകടന പ്രശ്നങ്ങൾ, സുരക്ഷാ, സ്വകാര്യതാ ആശങ്കകൾ, ബയാസുകൾ, ഒഴിവാക്കൽ പ്രക്രിയകൾ, അനിഷ്ടഫലങ്ങൾ തിരിച്ചറിയാൻ കഴിയും. AI സിസ്റ്റങ്ങൾ ഉപയോഗിക്കുന്നവർ അവ എപ്പോൾ, എന്തുകൊണ്ട്, എങ്ങനെ ഉപയോഗിക്കുന്നു എന്ന് സത്യസന്ധമായി അറിയിക്കണം. ഉപയോഗിക്കുന്ന സിസ്റ്റങ്ങളുടെ പരിമിതികളും വ്യക്തമാക്കണം. ഉദാഹരണത്തിന്, ഒരു ബാങ്ക് ഉപഭോക്തൃ വായ്പാ തീരുമാനങ്ങൾക്ക് AI സിസ്റ്റം ഉപയോഗിക്കുമ്പോൾ, ഫലങ്ങൾ പരിശോധിച്ച് ഏത് ഡാറ്റ സിസ്റ്റത്തിന്റെ നിർദ്ദേശങ്ങളെ സ്വാധീനിക്കുന്നു എന്ന് മനസ്സിലാക്കണം. സർക്കാർ വ്യവസായങ്ങളിൽ AI നിയന്ത്രിക്കാൻ തുടങ്ങുന്നു, അതിനാൽ ഡാറ്റ സയന്റിസ്റ്റുകളും സംഘടനകളും AI സിസ്റ്റം നിയമാനുസൃതമാണോ എന്ന് വിശദീകരിക്കണം, പ്രത്യേകിച്ച് അനിഷ്ടഫലം ഉണ്ടാകുമ്പോൾ. + +> [🎥 വീഡിയോക്കായി ഇവിടെ ക്ലിക്ക് ചെയ്യുക: transparency in AI](https://www.microsoft.com/videoplayer/embed/RE4voJF) + +- AI സിസ്റ്റങ്ങൾ വളരെ സങ്കീർണ്ണമായതിനാൽ അവ എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്ന് മനസ്സിലാക്കാനും ഫലങ്ങൾ വ്യാഖ്യാനിക്കാനും ബുദ്ധിമുട്ടാണ്. +- ഈ മനസ്സിലാക്കൽക്കുറവ് സിസ്റ്റങ്ങൾ എങ്ങനെ നിയന്ത്രിക്കപ്പെടുന്നു, പ്രവർത്തിപ്പിക്കുന്നു, രേഖപ്പെടുത്തുന്നു എന്നതിനെ ബാധിക്കുന്നു. +- ഏറ്റവും പ്രധാനമായി, ഈ മനസ്സിലാക്കൽക്കുറവ് സിസ്റ്റങ്ങൾ ഉൽപ്പാദിപ്പിക്കുന്ന ഫലങ്ങൾ ഉപയോഗിച്ച് എടുക്കുന്ന തീരുമാനങ്ങളെ ബാധിക്കുന്നു. + +### ഉത്തരവാദിത്വം + +AI സിസ്റ്റങ്ങൾ രൂപകൽപ്പന ചെയ്ത് വിനിയോഗിക്കുന്നവർ അവരുടെ സിസ്റ്റങ്ങൾ എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്നതിന് ഉത്തരവാദിത്വം വഹിക്കണം. മുഖം തിരിച്ചറിയൽ പോലുള്ള സങ്കീർണ്ണ സാങ്കേതികവിദ്യകളിൽ ഉത്തരവാദിത്വം പ്രത്യേകിച്ച് പ്രധാനമാണ്. അടുത്തിടെ, മുഖം തിരിച്ചറിയൽ സാങ്കേതികവിദ്യക്ക് വളരെയധികം ആവശ്യകതയുണ്ട്, പ്രത്യേകിച്ച് കാണാതായ കുട്ടികളെ കണ്ടെത്തുന്നതിൽ നിയമപ്രവർത്തക സംഘടനകൾക്ക് ഇത് സഹായകരമെന്ന് കാണുന്നു. എന്നാൽ, ഈ സാങ്കേതികവിദ്യകൾ സർക്കാർ അവരുടെ പൗരന്മാരുടെ അടിസ്ഥാന സ്വാതന്ത്ര്യങ്ങളെ അപകടത്തിലാക്കാൻ ഉപയോഗിക്കാമെന്ന ഭീഷണി ഉണ്ട്, ഉദാഹരണത്തിന്, ചില വ്യക്തികളുടെ നിരന്തര നിരീക്ഷണം സാധ്യമാക്കുക. അതിനാൽ, ഡാറ്റ സയന്റിസ്റ്റുകളും സംഘടനകളും അവരുടെ AI സിസ്റ്റം വ്യക്തികളെയും സമൂഹത്തെയും എങ്ങനെ ബാധിക്കുന്നു എന്നതിന് ഉത്തരവാദിത്വം വഹിക്കണം. + +[![Leading AI Researcher Warns of Mass Surveillance Through Facial Recognition](../../../../translated_images/accountability.41d8c0f4b85b6231301d97f17a450a805b7a07aaeb56b34015d71c757cad142e.ml.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft's Approach to Responsible AI") + +> 🎥 മുകളിൽ കാണുന്ന ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക: മുഖം തിരിച്ചറിയൽ വഴി വ്യാപക നിരീക്ഷണത്തിന്റെ മുന്നറിയിപ്പുകൾ + +അവസാനമായി, AI സമൂഹത്തിലേക്ക് കൊണ്ടുവരുന്ന ആദ്യ തലമുറയായ നമ്മുടെ തലമുറയ്ക്ക് ഏറ്റവും വലിയ ചോദ്യങ്ങളിൽ ഒന്നാണ്, കമ്പ്യൂട്ടറുകൾ ആളുകൾക്ക് ഉത്തരവാദിത്വം വഹിക്കുമോ, കമ്പ്യൂട്ടറുകൾ രൂപകൽപ്പന ചെയ്യുന്നവർ എല്ലാവർക്കും ഉത്തരവാദിത്വം വഹിക്കുമോ എന്നത് എങ്ങനെ ഉറപ്പാക്കാം എന്നത്. + +## പ്രഭാവം വിലയിരുത്തൽ + +മെഷീൻ ലേണിംഗ് മോഡൽ പരിശീലിപ്പിക്കുന്നതിന് മുമ്പ്, AI സിസ്റ്റത്തിന്റെ ഉദ്ദേശ്യം, ഉപയോഗം, വിനിയോഗ സ്ഥലം, സിസ്റ്റം ഉപയോഗിക്കുന്നവർ എന്നിവ മനസ്സിലാക്കാൻ പ്രഭാവം വിലയിരുത്തൽ നടത്തുന്നത് പ്രധാനമാണ്. ഇത് സിസ്റ്റം വിലയിരുത്തുന്നവർക്കും ടെസ്റ്റർമാർക്കും സാധ്യതയുള്ള അപകടങ്ങളും പ്രതീക്ഷിക്കുന്ന ഫലങ്ങളും തിരിച്ചറിയാൻ സഹായിക്കും. + +പ്രഭാവം വിലയിരുത്തുമ്പോൾ ശ്രദ്ധിക്കേണ്ട മേഖലകൾ: + +* **വ്യക്തികൾക്ക് ഹാനികരമായ പ്രഭാവം**: സിസ്റ്റത്തിന്റെ പ്രകടനം തടയുന്ന നിയന്ത്രണങ്ങൾ, ആവശ്യങ്ങൾ, അനധികൃത ഉപയോഗം, പരിചിതമായ പരിമിതികൾ എന്നിവ അറിയുക, വ്യക്തികൾക്ക് ഹാനി ഉണ്ടാകാതിരിക്കാനുള്ള ഉറപ്പാക്കൽ. +* **ഡാറ്റ ആവശ്യകതകൾ**: സിസ്റ്റം എങ്ങനെ എവിടെ ഡാറ്റ ഉപയോഗിക്കും എന്ന് മനസ്സിലാക്കുക, അവലോകനക്കാർക്ക് GDPR, HIPAA പോലുള്ള ഡാറ്റ നിയമങ്ങൾ പരിഗണിക്കാൻ സഹായിക്കും. കൂടാതെ, പരിശീലനത്തിന് ഡാറ്റയുടെ ഉറവിടം, അളവ് മതിയായതാണോ എന്ന് പരിശോധിക്കുക. +* **പ്രഭാവത്തിന്റെ സംക്ഷേപം**: സിസ്റ്റം ഉപയോഗിച്ച് ഉണ്ടാകാവുന്ന ഹാനികളുടെ പട്ടിക ശേഖരിക്കുക. ML ജീവിതചക്രത്തിൽ കണ്ടെത്തിയ പ്രശ്നങ്ങൾ പരിഹരിക്കപ്പെട്ടിട്ടുണ്ടോ എന്ന് നിരീക്ഷിക്കുക. +* **ആവശ്യമായ ലക്ഷ്യങ്ങൾ**: ആറ് പ്രധാന സിദ്ധാന്തങ്ങളിൽ ഓരോന്നിനും ലക്ഷ്യങ്ങൾ പാലിക്കപ്പെട്ടിട്ടുണ്ടോ, ഇടവേളകളുണ്ടോ എന്ന് വിലയിരുത്തുക. + +## ഉത്തരവാദിത്വമുള്ള AI ഉപയോഗിച്ച് ഡീബഗ്ഗിംഗ് + +സോഫ്റ്റ്‌വെയർ ആപ്ലിക്കേഷൻ ഡീബഗ്ഗിംഗിനുപോലെ, AI സിസ്റ്റം ഡീബഗ്ഗിംഗ് സിസ്റ്റത്തിലെ പ്രശ്നങ്ങൾ കണ്ടെത്തി പരിഹരിക്കുന്ന അനിവാര്യ പ്രക്രിയയാണ്. മോഡൽ പ്രതീക്ഷിച്ചതുപോലെ പ്രവർത്തിക്കാത്തതിനു പല കാരണങ്ങൾ ഉണ്ടാകാം. പരമ്പരാഗത മോഡൽ പ്രകടന സൂചകങ്ങൾ ഒരു മോഡലിന്റെ പ്രകടനത്തിന്റെ കണക്കുകൂട്ടലുകളാണ്, എന്നാൽ അവ ഉത്തരവാദിത്വമുള്ള AI സിദ്ധാന്തങ്ങൾ ലംഘിക്കുന്ന വിധം വിശകലനം ചെയ്യാൻ പോരാ. കൂടാതെ, മെഷീൻ ലേണിംഗ് മോഡൽ ഒരു ബ്ലാക്ക് ബോക്സാണ്, അതിന്റെ ഫലം എന്തുകൊണ്ട് ഉണ്ടാകുന്നു എന്ന് മനസ്സിലാക്കാനും തെറ്റുകൾ സംഭവിച്ചപ്പോൾ വിശദീകരിക്കാനും ബുദ്ധിമുട്ടാണ്. ഈ കോഴ്സിന്റെ പിന്നീട് ഭാഗങ്ങളിൽ, AI സിസ്റ്റങ്ങൾ ഡീബഗ് ചെയ്യാൻ ഉത്തരവാദിത്വമുള്ള AI ഡാഷ്ബോർഡ് ഉപയോഗിക്കുന്നത് പഠിക്കും. ഡാഷ്ബോർഡ് ഡാറ്റ സയന്റിസ്റ്റുകൾക്കും AI ഡെവലപ്പർമാർക്കും താഴെപ്പറയുന്നവ ചെയ്യാൻ സഹായിക്കുന്ന സമഗ്ര ഉപകരണമാണ്: + +* **പിശക് വിശകലനം**: സിസ്റ്റത്തിന്റെ നീതിയിലും വിശ്വാസ്യതയിലും ബാധിക്കുന്ന മോഡലിന്റെ പിശക് വിതരണങ്ങൾ തിരിച്ചറിയാൻ. +* **മോഡൽ അവലോകനം**: ഡാറ്റ കോഹോർട്ടുകളിൽ മോഡലിന്റെ പ്രകടന വ്യത്യാസങ്ങൾ കണ്ടെത്താൻ. +* **ഡാറ്റ വിശകലനം**: ഡാറ്റയുടെ വിതരണവും ബയാസുകൾ തിരിച്ചറിയാനും, നീതി, ഉൾക്കൊള്ളൽ, വിശ്വാസ്യത പ്രശ്നങ്ങൾ കണ്ടെത്താനും. +* **മോഡൽ വ്യാഖ്യാനം**: മോഡലിന്റെ പ്രവചനങ്ങളെ സ്വാധീനിക്കുന്ന ഘടകങ്ങൾ മനസ്സിലാക്കാൻ. ഇത് പാരദർശിത്വത്തിനും ഉത്തരവാദിത്വത്തിനും പ്രധാനമാണ്. + +## 🚀 ചലഞ്ച് + +ഹാനികൾ ആദ്യഘട്ടത്തിൽ തന്നെ ഉണ്ടാകാതിരിക്കാൻ, നാം: + +- സിസ്റ്റങ്ങളിൽ ജോലി ചെയ്യുന്നവരിൽ വ്യത്യസ്ത പശ്ചാത്തലങ്ങളും കാഴ്ചപ്പാടുകളും ഉണ്ടായിരിക്കണം +- നമ്മുടെ സമൂഹത്തിന്റെ വൈവിധ്യം പ്രതിഫലിപ്പിക്കുന്ന ഡാറ്റാസെറ്റുകളിൽ നിക്ഷേപം നടത്തണം +- ഉത്തരവാദിത്വമുള്ള AI കണ്ടെത്താനും ശരിയാക്കാനും മെഷീൻ ലേണിംഗ് ജീവിതചക്രത്തിൽ മികച്ച രീതികൾ വികസിപ്പിക്കണം + +മോഡൽ നിർമ്മാണത്തിലും ഉപയോഗത്തിലും മോഡലിന്റെ വിശ്വസനീയത ഇല്ലായ്മ വ്യക്തമായ യാഥാർത്ഥ്യ സാഹചര്യങ്ങളെക്കുറിച്ച് ചിന്തിക്കുക. മറ്റെന്തെല്ലാം പരിഗണിക്കണം? + +## [പോസ്റ്റ്-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) +## അവലോകനം & സ്വയം പഠനം + +ഈ പാഠത്തിൽ, മെഷീൻ ലേണിങ്ങിൽ നീതിയും അനീതിയും എന്ന ആശയങ്ങളുടെ ചില അടിസ്ഥാനങ്ങൾ നിങ്ങൾ പഠിച്ചു. + +ഈ വിഷയങ്ങളിൽ കൂടുതൽ ആഴത്തിൽ പ്രവേശിക്കാൻ ഈ വർക്ക്‌ഷോപ്പ് കാണുക: + +- ഉത്തരവാദിത്വമുള്ള AI ന്റെ പിന്തുടർച്ചയിൽ: Besmira Nushi, Mehrnoosh Sameki, Amit Sharma എന്നിവരാൽ സിദ്ധാന്തങ്ങളെ പ്രായോഗികതയിലേക്ക് കൊണ്ടുവരുന്നു + +[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") + +> 🎥 വീഡിയോക്കായി മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക: Besmira Nushi, Mehrnoosh Sameki, Amit Sharma എന്നിവരാൽ RAI Toolbox: An open-source framework for building responsible AI + +ഇതും വായിക്കുക: + +- Microsoft ന്റെ RAI റിസോഴ്‌സ് സെന്റർ: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) + +- Microsoft ന്റെ FATE ഗവേഷണ സംഘം: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) + +RAI Toolbox: + +- [Responsible AI Toolbox GitHub repository](https://github.com/microsoft/responsible-ai-toolbox) + +നീതിയുണ്ടാക്കാൻ Azure Machine Learning ന്റെ ഉപകരണങ്ങളെക്കുറിച്ച് വായിക്കുക: + +- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott) + +## അസൈൻമെന്റ് + +[RAI Toolbox പരിശോധിക്കുക](assignment.md) + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/1-Introduction/3-fairness/assignment.md b/translations/ml/1-Introduction/3-fairness/assignment.md new file mode 100644 index 000000000..ec8231851 --- /dev/null +++ b/translations/ml/1-Introduction/3-fairness/assignment.md @@ -0,0 +1,27 @@ + +# ഉത്തരവാദിത്വമുള്ള AI ടൂൾബോക്സ് അന്വേഷിക്കുക + +## നിർദ്ദേശങ്ങൾ + +ഈ പാഠത്തിൽ നിങ്ങൾ ഉത്തരവാദിത്വമുള്ള AI ടൂൾബോക്സ് എന്നതിനെക്കുറിച്ച് പഠിച്ചു, ഇത് "ഡാറ്റാ സയന്റിസ്റ്റുകൾക്ക് AI സിസ്റ്റങ്ങൾ വിശകലനം ചെയ്ത് മെച്ചപ്പെടുത്താൻ സഹായിക്കുന്ന ഒരു ഓപ്പൺ-സോഴ്‌സ്, കമ്മ്യൂണിറ്റി-നയിച്ച പ്രോജക്ട്" ആണ്. ഈ അസൈൻമെന്റിനായി, RAI Toolbox-ന്റെ [നോട്ട്ബുക്കുകളിൽ](https://github.com/microsoft/responsible-ai-toolbox/blob/main/notebooks/responsibleaidashboard/getting-started.ipynb) ഒന്നിനെ അന്വേഷിച്ച്, അതിൽ നിന്നുള്ള കണ്ടെത്തലുകൾ ഒരു പേപ്പറിൽ അല്ലെങ്കിൽ പ്രეზന്റേഷനിൽ റിപ്പോർട്ട് ചെയ്യുക. + +## റൂബ്രിക് + +| മാനദണ്ഡം | ഉദാഹരണമായത് | മതിയായത് | മെച്ചപ്പെടുത്തേണ്ടത് | +| -------- | --------- | -------- | ----------------- | +| | Fairlearn-ന്റെ സിസ്റ്റങ്ങൾ, പ്രവർത്തിപ്പിച്ച നോട്ട്ബുക്ക്, പ്രവർത്തിപ്പിച്ചതിൽ നിന്നുള്ള നിഗമനങ്ങൾ ചർച്ച ചെയ്യുന്ന ഒരു പേപ്പർ അല്ലെങ്കിൽ പവർപോയിന്റ് പ്രეზന്റേഷൻ അവതരിപ്പിക്കുന്നു | നിഗമനങ്ങളില്ലാതെ ഒരു പേപ്പർ അവതരിപ്പിക്കുന്നു | ഒരു പേപ്പർ അവതരിപ്പിക്കുന്നില്ല | + +--- + + +**അസൂയാപത്രം**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, യന്ത്രം ചെയ്ത വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ അധികാരപരമായ ഉറവിടമായി കണക്കാക്കപ്പെടണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/1-Introduction/4-techniques-of-ML/README.md b/translations/ml/1-Introduction/4-techniques-of-ML/README.md new file mode 100644 index 000000000..c37083c15 --- /dev/null +++ b/translations/ml/1-Introduction/4-techniques-of-ML/README.md @@ -0,0 +1,134 @@ + +# മെഷീൻ ലേണിങ്ങിന്റെ സാങ്കേതിക വിദ്യകൾ + +മെഷീൻ ലേണിംഗ് മോഡലുകൾ നിർമ്മിക്കുന്നതും ഉപയോഗിക്കുന്നതും പരിപാലിക്കുന്നതും, അവ ഉപയോഗിക്കുന്ന ഡാറ്റയും, മറ്റ് പല വികസന പ്രവൃത്തികളിൽ നിന്നുള്ളവയിൽ നിന്ന് വളരെ വ്യത്യസ്തമായ പ്രക്രിയയാണ്. ഈ പാഠത്തിൽ, നാം ഈ പ്രക്രിയയെ വിശദീകരിക്കുകയും നിങ്ങൾ അറിയേണ്ട പ്രധാന സാങ്കേതിക വിദ്യകൾ രേഖപ്പെടുത്തുകയും ചെയ്യും. നിങ്ങൾക്ക്: + +- മെഷീൻ ലേണിംഗിന്റെ അടിസ്ഥാന പ്രക്രിയകൾ ഉയർന്ന തലത്തിൽ മനസ്സിലാക്കാം. +- 'മോഡലുകൾ', 'ഭാവനകൾ', 'പരിശീലന ഡാറ്റ' പോലുള്ള അടിസ്ഥാന ആശയങ്ങൾ അന്വേഷിക്കാം. + +## [പ്രീ-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +[![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") + +> 🎥 ഈ പാഠം വിശദീകരിക്കുന്ന ഒരു ചെറിയ വീഡിയോ കാണാൻ മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക. + +## പരിചയം + +ഉയർന്ന തലത്തിൽ, മെഷീൻ ലേണിംഗ് (ML) പ്രക്രിയകൾ സൃഷ്ടിക്കുന്ന കലയിൽ പല ഘട്ടങ്ങൾ ഉൾപ്പെടുന്നു: + +1. **ചോദ്യമൊരുക്കുക**. മിക്ക ML പ്രക്രിയകളും ഒരു ലളിതമായ നിബന്ധനാപരമായ പ്രോഗ്രാമോ നിയമങ്ങൾ അടിസ്ഥാനമാക്കിയ എഞ്ചിനോ മറുപടി നൽകാൻ കഴിയാത്ത ഒരു ചോദ്യമൊരുക്കുന്നതിൽ ആരംഭിക്കുന്നു. ഈ ചോദ്യങ്ങൾ സാധാരണയായി ഡാറ്റാ ശേഖരണത്തെ അടിസ്ഥാനമാക്കിയുള്ള പ്രവചനങ്ങളുമായി ബന്ധപ്പെട്ടിരിക്കുന്നു. +2. **ഡാറ്റ ശേഖരിക്കുകയും തയ്യാറാക്കുകയും ചെയ്യുക**. നിങ്ങളുടെ ചോദ്യത്തിന് മറുപടി നൽകാൻ, നിങ്ങൾക്ക് ഡാറ്റ ആവശ്യമുണ്ട്. നിങ്ങളുടെ ഡാറ്റയുടെ ഗുണമേന്മയും, ചിലപ്പോൾ, അളവും, നിങ്ങളുടെ പ്രാഥമിക ചോദ്യത്തിന് എത്രത്തോളം നല്ല മറുപടി നൽകാമെന്ന് നിർണ്ണയിക്കും. ഡാറ്റ ദൃശ്യവൽക്കരണം ഈ ഘട്ടത്തിന്റെ ഒരു പ്രധാന ഭാഗമാണ്. ഈ ഘട്ടത്തിൽ ഡാറ്റയെ പരിശീലനവും പരിശോധനയും എന്നിങ്ങനെ വിഭജിച്ച് മോഡൽ നിർമ്മിക്കാനും ഉൾപ്പെടുന്നു. +3. **പരിശീലന രീതി തിരഞ്ഞെടുക്കുക**. നിങ്ങളുടെ ചോദ്യത്തിനും ഡാറ്റയുടെ സ്വഭാവത്തിനും അനുസരിച്ച്, ഡാറ്റയെ മികച്ച രീതിയിൽ പ്രതിഫലിപ്പിക്കുകയും അതിനെതിരെ കൃത്യമായ പ്രവചനങ്ങൾ നടത്തുകയും ചെയ്യാൻ മോഡൽ പരിശീലിപ്പിക്കാൻ നിങ്ങൾ എങ്ങനെ പരിശീലനം നൽകണമെന്ന് തിരഞ്ഞെടുക്കണം. ഇത് നിങ്ങളുടെ ML പ്രക്രിയയിലെ പ്രത്യേക വിദഗ്ധത ആവശ്യമായ ഭാഗമാണ്, കൂടാതെ പലപ്പോഴും വലിയ പരീക്ഷണങ്ങൾ നടത്തേണ്ടതും. +4. **മോഡൽ പരിശീലിപ്പിക്കുക**. നിങ്ങളുടെ പരിശീലന ഡാറ്റ ഉപയോഗിച്ച്, ഡാറ്റയിലെ മാതൃകകൾ തിരിച്ചറിയാൻ വിവിധ ആൽഗോരിതങ്ങൾ ഉപയോഗിച്ച് മോഡൽ പരിശീലിപ്പിക്കും. മോഡൽ ചില ഭാഗങ്ങളിൽ കൂടുതൽ പ്രാധാന്യം നൽകാൻ ക്രമീകരിക്കാവുന്ന ആന്തരിക ഭാരങ്ങൾ ഉപയോഗിക്കാം. +5. **മോഡൽ വിലയിരുത്തുക**. നിങ്ങൾ ശേഖരിച്ച ഡാറ്റയിൽ നിന്ന് മുമ്പ് കാണാത്ത ഡാറ്റ (പരിശോധന ഡാറ്റ) ഉപയോഗിച്ച് മോഡൽ എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്ന് പരിശോധിക്കും. +6. **പരാമീറ്റർ ട്യൂണിംഗ്**. മോഡലിന്റെ പ്രകടനത്തെ അടിസ്ഥാനമാക്കി, മോഡൽ പരിശീലിപ്പിക്കാൻ ഉപയോഗിക്കുന്ന ആൽഗോരിതങ്ങളുടെ പെരുമാറ്റം നിയന്ത്രിക്കുന്ന വ്യത്യസ്ത പരാമീറ്ററുകൾ ഉപയോഗിച്ച് പ്രക്രിയ വീണ്ടും നടത്താം. +7. **പ്രവചനം നടത്തുക**. പുതിയ ഇൻപുട്ടുകൾ ഉപയോഗിച്ച് മോഡലിന്റെ കൃത്യത പരിശോധിക്കുക. + +## ഏത് ചോദ്യമാണ് ചോദിക്കേണ്ടത് + +കമ്പ്യൂട്ടറുകൾ ഡാറ്റയിൽ മറഞ്ഞിരിക്കുന്ന മാതൃകകൾ കണ്ടെത്തുന്നതിൽ പ്രത്യേകമായി നൈപുണ്യമുള്ളവയാണ്. നിബന്ധനാപരമായ നിയമങ്ങൾ അടിസ്ഥാനമാക്കിയ എഞ്ചിൻ സൃഷ്ടിച്ച് എളുപ്പത്തിൽ മറുപടി നൽകാൻ കഴിയാത്ത ഒരു ഡൊമെയ്ൻ സംബന്ധിച്ച ചോദ്യങ്ങൾ ഗവേഷകർക്ക് ഇത് വളരെ സഹായകരമാണ്. ഉദാഹരണത്തിന്, ഒരു ആക്ച്വറിയൽ ജോലി നൽകിയാൽ, ഒരു ഡാറ്റാ സയന്റിസ്റ്റ് പുകവലി ചെയ്യുന്നവരും പുകവലി ചെയ്യാത്തവരും മരണനിരക്കുകൾക്കായി കൈകൊണ്ട നിയമങ്ങൾ നിർമ്മിക്കാൻ കഴിയും. + +എന്നാൽ, പല മറ്റ് വ്യത്യസ്ത ഘടകങ്ങൾ പരിഗണിക്കുമ്പോൾ, ഒരു ML മോഡൽ മുൻകാല ആരോഗ്യ ചരിത്രത്തെ അടിസ്ഥാനമാക്കി ഭാവിയിലെ മരണനിരക്കുകൾ പ്രവചിക്കാൻ കൂടുതൽ കാര്യക്ഷമമാകാം. ഒരു സന്തോഷകരമായ ഉദാഹരണം, ഒരു നിശ്ചിത സ്ഥലത്ത് ഏപ്രിൽ മാസത്തെ കാലാവസ്ഥ പ്രവചനങ്ങൾ latitude, longitude, കാലാവസ്ഥ മാറ്റം, സമുദ്രത്തിന് സമീപം, ജെറ്റ് സ്ട്രീം മാതൃകകൾ എന്നിവ ഉൾപ്പെടുന്ന ഡാറ്റയുടെ അടിസ്ഥാനത്തിൽ നിർമിക്കുന്നത് ആകാം. + +✅ കാലാവസ്ഥ മോഡലുകളെക്കുറിച്ചുള്ള ഈ [സ്ലൈഡ് ഡെക്ക്](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) കാലാവസ്ഥ വിശകലനത്തിൽ ML ഉപയോഗിക്കുന്നതിനുള്ള ചരിത്രപരമായ കാഴ്ചപ്പാട് നൽകുന്നു. + +## നിർമ്മാണത്തിന് മുമ്പുള്ള പ്രവർത്തനങ്ങൾ + +നിങ്ങളുടെ മോഡൽ നിർമ്മിക്കാൻ തുടങ്ങുന്നതിന് മുമ്പ്, നിങ്ങൾ പൂർത്തിയാക്കേണ്ട നിരവധി പ്രവർത്തനങ്ങൾ ഉണ്ട്. നിങ്ങളുടെ ചോദ്യത്തെ പരീക്ഷിക്കുകയും മോഡലിന്റെ പ്രവചനങ്ങളെ അടിസ്ഥാനമാക്കി ഒരു ഹിപോത്തസിസ് രൂപപ്പെടുത്തുകയും ചെയ്യാൻ, നിങ്ങൾക്ക് പല ഘടകങ്ങളും തിരിച്ചറിയുകയും ക്രമീകരിക്കുകയും വേണം. + +### ഡാറ്റ + +നിങ്ങളുടെ ചോദ്യത്തിന് ഏതെങ്കിലും ഉറപ്പോടെ മറുപടി നൽകാൻ, ശരിയായ തരം ഡാറ്റയുടെ നല്ല അളവ് ആവശ്യമാണ്. ഈ ഘട്ടത്തിൽ നിങ്ങൾ ചെയ്യേണ്ട രണ്ട് കാര്യങ്ങളുണ്ട്: + +- **ഡാറ്റ ശേഖരിക്കുക**. മുമ്പത്തെ പാഠത്തിൽ ഡാറ്റ വിശകലനത്തിൽ നീതിയുള്ളതിനെക്കുറിച്ച് പഠിച്ചതു ഓർക്കുക, ശ്രദ്ധയോടെ ഡാറ്റ ശേഖരിക്കുക. ഈ ഡാറ്റയുടെ ഉറവിടങ്ങളെക്കുറിച്ച്, അതിൽ ഉള്ള സ്വാഭാവിക പാകങ്ങൾക്കുറിച്ച് ജാഗ്രത പുലർത്തുക, അതിന്റെ ഉറവിടം രേഖപ്പെടുത്തുക. +- **ഡാറ്റ തയ്യാറാക്കുക**. ഡാറ്റ തയ്യാറാക്കൽ പ്രക്രിയയിൽ പല ഘട്ടങ്ങളുണ്ട്. വ്യത്യസ്ത ഉറവിടങ്ങളിൽ നിന്നുള്ള ഡാറ്റ സംയോജിപ്പിക്കുകയും സാധാരണവത്കരിക്കുകയും ചെയ്യേണ്ടതുണ്ടാകാം. ഡാറ്റയുടെ ഗുണമേന്മയും അളവും മെച്ചപ്പെടുത്താൻ സ്ട്രിംഗുകൾ നമ്പറുകളായി മാറ്റൽ പോലുള്ള വിവിധ രീതികൾ ഉപയോഗിക്കാം ([Clustering](../../5-Clustering/1-Visualize/README.md) പാഠത്തിൽ ചെയ്തതുപോലെ). നിങ്ങൾക്ക് പുതിയ ഡാറ്റ സൃഷ്ടിക്കേണ്ടതും ഉണ്ടാകാം, മൗലിക ഡാറ്റയെ അടിസ്ഥാനമാക്കി ([Classification](../../4-Classification/1-Introduction/README.md) പാഠത്തിൽ ചെയ്തതുപോലെ). ഡാറ്റ ശുദ്ധീകരിക്കുകയും തിരുത്തുകയും ചെയ്യാം ([Web App](../../3-Web-App/README.md) പാഠത്തിന് മുമ്പ് ചെയ്യുന്നതുപോലെ). അവസാനം, നിങ്ങളുടെ പരിശീലന സാങ്കേതിക വിദ്യകൾ അനുസരിച്ച് ഡാറ്റയെ യാദൃച്ഛികമാക്കുകയും ഷഫിൾ ചെയ്യുകയും ചെയ്യേണ്ടതുണ്ടാകാം. + +✅ ഡാറ്റ ശേഖരിക്കുകയും പ്രോസസ്സ് ചെയ്യുകയും ചെയ്ത ശേഷം, അതിന്റെ രൂപം നിങ്ങളുടെ ഉദ്ദേശിച്ച ചോദ്യത്തിന് മറുപടി നൽകാൻ അനുയോജ്യമാണോ എന്ന് പരിശോധിക്കാൻ ഒരു നിമിഷം എടുത്തു നോക്കുക. നിങ്ങളുടെ നൽകിയ ജോലിയിൽ ഡാറ്റ നല്ല പ്രകടനം കാണിക്കില്ലായിരുന്നോ എന്ന് ഞങ്ങൾ [Clustering](../../5-Clustering/1-Visualize/README.md) പാഠങ്ങളിൽ കണ്ടെത്തുന്നു! + +### ഫീച്ചറുകളും ലക്ഷ്യവും + +ഒരു [ഫീച്ചർ](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) നിങ്ങളുടെ ഡാറ്റയുടെ അളക്കാവുന്ന സ്വഭാവമാണ്. പല ഡാറ്റാസെറ്റുകളിലും ഇത് 'തീയതി', 'വലിപ്പം', 'നിറം' പോലുള്ള കോളം തലക്കെട്ടായി പ്രകടിപ്പിക്കപ്പെടുന്നു. നിങ്ങളുടെ ഫീച്ചർ വേരിയബിൾ, സാധാരണയായി കോഡിൽ `X` ആയി പ്രതിനിധീകരിക്കപ്പെടുന്നു, മോഡൽ പരിശീലിപ്പിക്കാൻ ഉപയോഗിക്കുന്ന ഇൻപുട്ട് വേരിയബിൾ ആണ്. + +ലക്ഷ്യം നിങ്ങൾ പ്രവചിക്കാൻ ശ്രമിക്കുന്ന വസ്തുവാണ്. ലക്ഷ്യം സാധാരണയായി കോഡിൽ `y` ആയി പ്രതിനിധീകരിക്കപ്പെടുന്നു, ഇത് നിങ്ങളുടെ ഡാറ്റയിൽ നിന്നുള്ള ചോദ്യത്തിന് നിങ്ങൾ ചോദിക്കുന്ന മറുപടിയാണ്: ഡിസംബർ മാസത്തിൽ, ഏത് **നിറത്തിലുള്ള** പംപ്കിനുകൾ ഏറ്റവും വിലകുറഞ്ഞവ ആയിരിക്കും? സാൻ ഫ്രാൻസിസ്കോയിൽ, ഏത് പ്രദേശങ്ങളിൽ മികച്ച റിയൽ എസ്റ്റേറ്റ് **വില** ഉണ്ടാകും? ചിലപ്പോൾ ലക്ഷ്യം ലേബൽ ആട്രിബ്യൂട്ട് എന്നും വിളിക്കുന്നു. + +### നിങ്ങളുടെ ഫീച്ചർ വേരിയബിൾ തിരഞ്ഞെടുക്കൽ + +🎓 **ഫീച്ചർ സെലക്ഷനും ഫീച്ചർ എക്സ്ട്രാക്ഷനും** മോഡൽ നിർമ്മിക്കുമ്പോൾ ഏത് വേരിയബിൾ തിരഞ്ഞെടുക്കണമെന്ന് നിങ്ങൾ എങ്ങനെ അറിയും? ഏറ്റവും മികച്ച പ്രകടനം നൽകുന്ന മോഡലിനായി ശരിയായ വേരിയബിളുകൾ തിരഞ്ഞെടുക്കാൻ നിങ്ങൾ ഫീച്ചർ സെലക്ഷൻ അല്ലെങ്കിൽ ഫീച്ചർ എക്സ്ട്രാക്ഷൻ പ്രക്രിയയിലൂടെ പോകും. ഇവ ഒരേ കാര്യമല്ല: "ഫീച്ചർ എക്സ്ട്രാക്ഷൻ മൗലിക ഫീച്ചറുകളുടെ ഫംഗ്ഷനുകളിൽ നിന്നുള്ള പുതിയ ഫീച്ചറുകൾ സൃഷ്ടിക്കുന്നു, എന്നാൽ ഫീച്ചർ സെലക്ഷൻ ഫീച്ചറുകളുടെ ഒരു ഉപസമൂഹം തിരികെ നൽകുന്നു." ([സ്രോതസ്സ്](https://wikipedia.org/wiki/Feature_selection)) + +### നിങ്ങളുടെ ഡാറ്റ ദൃശ്യവൽക്കരിക്കുക + +ഡാറ്റാ സയന്റിസ്റ്റിന്റെ ഉപകരണസഞ്ചിയിൽ ഒരു പ്രധാന ഘടകം സീബോൺ അല്ലെങ്കിൽ മാട്പ്ലോട്ട്‌ലിബ് പോലുള്ള മികച്ച ലൈബ്രറികൾ ഉപയോഗിച്ച് ഡാറ്റ ദൃശ്യവൽക്കരിക്കുന്ന ശേഷിയാണ്. നിങ്ങളുടെ ഡാറ്റ ദൃശ്യമായി പ്രതിനിധീകരിക്കുന്നത് മറഞ്ഞിരിക്കുന്ന ബന്ധങ്ങൾ കണ്ടെത്താൻ സഹായിക്കാം. നിങ്ങളുടെ ദൃശ്യവൽക്കരണങ്ങൾ പാകം അല്ലാത്തതോ അസമതുലിതമായ ഡാറ്റയോ കണ്ടെത്താൻ സഹായിക്കാം ([Classification](../../4-Classification/2-Classifiers-1/README.md) പാഠത്തിൽ കണ്ടെത്തുന്നതുപോലെ). + +### നിങ്ങളുടെ ഡാറ്റാസെറ്റ് വിഭജിക്കുക + +പരിശീലനത്തിന് മുമ്പ്, നിങ്ങളുടെ ഡാറ്റാസെറ്റ് രണ്ട് അല്ലെങ്കിൽ അതിലധികം അസമാനമായ വലുപ്പമുള്ള ഭാഗങ്ങളായി വിഭജിക്കണം, എന്നാൽ ഡാറ്റയെ നന്നായി പ്രതിനിധീകരിക്കണം. + +- **പരിശീലനം**. ഡാറ്റാസെറ്റിന്റെ ഈ ഭാഗം മോഡലിന് അനുയോജ്യമായ രീതിയിൽ പരിശീലിപ്പിക്കാൻ ഉപയോഗിക്കുന്നു. ഇത് മൗലിക ഡാറ്റാസെറ്റിന്റെ ഭൂരിഭാഗമാണ്. +- **പരിശോധന**. ഒരു ടെസ്റ്റ് ഡാറ്റാസെറ്റ് സ്വതന്ത്രമായ ഡാറ്റാ ഗ്രൂപ്പാണ്, സാധാരണയായി മൗലിക ഡാറ്റയിൽ നിന്നാണ് ശേഖരിക്കുന്നത്, ഇത് നിർമ്മിച്ച മോഡലിന്റെ പ്രകടനം സ്ഥിരീകരിക്കാൻ ഉപയോഗിക്കുന്നു. +- **സാധൂകരിക്കൽ**. സാധൂകരിക്കൽ സെറ്റ് ഒരു ചെറിയ സ്വതന്ത്ര ഉദാഹരണ ഗ്രൂപ്പാണ്, ഇത് മോഡലിന്റെ ഹൈപ്പർപാരാമീറ്ററുകൾ അല്ലെങ്കിൽ ഘടന മെച്ചപ്പെടുത്താൻ ഉപയോഗിക്കുന്നു. നിങ്ങളുടെ ഡാറ്റയുടെ വലുപ്പത്തിനും ചോദിക്കുന്ന ചോദ്യത്തിനും അനുസരിച്ച്, ഈ മൂന്നാം സെറ്റ് നിർമ്മിക്കേണ്ടതില്ലായിരിക്കാം ([Time Series Forecasting](../../7-TimeSeries/1-Introduction/README.md) പാഠത്തിൽ ഞങ്ങൾ കാണിക്കുന്നു). + +## മോഡൽ നിർമ്മിക്കൽ + +നിങ്ങളുടെ പരിശീലന ഡാറ്റ ഉപയോഗിച്ച്, നിങ്ങളുടെ ലക്ഷ്യം മോഡൽ നിർമ്മിക്കുകയോ, അല്ലെങ്കിൽ നിങ്ങളുടെ ഡാറ്റയുടെ സാംഖ്യിക പ്രതിനിധാനം സൃഷ്ടിക്കുകയോ ചെയ്യുകയാണ്, വിവിധ ആൽഗോരിതങ്ങൾ ഉപയോഗിച്ച് അതിനെ **പരിശീലിപ്പിക്കുക**. മോഡൽ പരിശീലിപ്പിക്കുന്നത് ഡാറ്റയ്ക്ക് പരിചയപ്പെടാൻ അനുവദിക്കുകയും കണ്ടെത്തിയ മാതൃകകളെക്കുറിച്ച് അനുമാനങ്ങൾ നടത്തുകയും, അവ സ്ഥിരീകരിക്കുകയും, അംഗീകരിക്കുകയും അല്ലെങ്കിൽ നിരസിക്കുകയും ചെയ്യാൻ സഹായിക്കുന്നു. + +### പരിശീലന രീതി തീരുമാനിക്കുക + +നിങ്ങളുടെ ചോദ്യത്തിനും ഡാറ്റയുടെ സ്വഭാവത്തിനും അനുസരിച്ച്, നിങ്ങൾ അത് പരിശീലിപ്പിക്കാൻ ഒരു രീതി തിരഞ്ഞെടുക്കും. ഈ കോഴ്സിൽ ഉപയോഗിക്കുന്ന [Scikit-learn ന്റെ ഡോക്യുമെന്റേഷൻ](https://scikit-learn.org/stable/user_guide.html) വഴി നിങ്ങൾ മോഡൽ പരിശീലിപ്പിക്കാൻ നിരവധി മാർഗങ്ങൾ അന്വേഷിക്കാം. നിങ്ങളുടെ അനുഭവം അനുസരിച്ച്, മികച്ച മോഡൽ നിർമ്മിക്കാൻ നിങ്ങൾക്ക് പല വ്യത്യസ്ത രീതി പരീക്ഷിക്കേണ്ടിവരും. ഡാറ്റാ സയന്റിസ്റ്റുകൾ ഒരു മോഡലിന്റെ പ്രകടനം വിലയിരുത്താൻ മുമ്പ് കാണാത്ത ഡാറ്റ നൽകുകയും കൃത്യത, പാകം, മറ്റ് ഗുണനിലവാര കുറയ്ക്കുന്ന പ്രശ്നങ്ങൾ പരിശോധിക്കുകയും, ജോലിക്ക് ഏറ്റവും അനുയോജ്യമായ പരിശീലന രീതി തിരഞ്ഞെടുക്കുകയും ചെയ്യുന്ന പ്രക്രിയയിലൂടെ നിങ്ങൾ കടന്നുപോകും. + +### മോഡൽ പരിശീലിപ്പിക്കുക + +നിങ്ങളുടെ പരിശീലന ഡാറ്റ ഉപയോഗിച്ച്, മോഡൽ സൃഷ്ടിക്കാൻ 'ഫിറ്റ്' ചെയ്യാൻ തയ്യാറാകുക. പല ML ലൈബ്രറികളിലും 'model.fit' എന്ന കോഡ് കാണും - ഈ സമയത്ത് നിങ്ങൾ നിങ്ങളുടെ ഫീച്ചർ വേരിയബിൾ മൂല്യങ്ങളുടെ ഒരു അറേ (സാധാരണയായി 'X')യും ലക്ഷ്യ വേരിയബിൾ (സാധാരണയായി 'y')യും അയയ്ക്കും. + +### മോഡൽ വിലയിരുത്തുക + +പരിശീലന പ്രക്രിയ പൂർത്തിയായ ശേഷം (വലിയ മോഡൽ പരിശീലിപ്പിക്കാൻ പല ആവർത്തനങ്ങൾ അല്ലെങ്കിൽ 'എപ്പോക്കുകൾ' ആവാം), ടെസ്റ്റ് ഡാറ്റ ഉപയോഗിച്ച് മോഡലിന്റെ ഗുണമേന്മ വിലയിരുത്താൻ കഴിയും. ഈ ഡാറ്റ മോഡൽ മുമ്പ് വിശകലനം ചെയ്തിട്ടില്ലാത്ത മൗലിക ഡാറ്റയുടെ ഒരു ഉപസമൂഹമാണ്. മോഡലിന്റെ ഗുണമേന്മയെക്കുറിച്ചുള്ള മെട്രിക്‌സ് പട്ടിക പ്രിന്റ് ചെയ്യാം. + +🎓 **മോഡൽ ഫിറ്റിംഗ്** + +മെഷീൻ ലേണിംഗിന്റെ സാന്ദർഭ്യത്തിൽ, മോഡൽ ഫിറ്റിംഗ് എന്നത് മോഡലിന്റെ അടിസ്ഥാന ഫംഗ്ഷന്റെ കൃത്യതയെ സൂചിപ്പിക്കുന്നു, അത് പരിചയമില്ലാത്ത ഡാറ്റ വിശകലനം ചെയ്യാൻ ശ്രമിക്കുമ്പോൾ. + +🎓 **അണ്ടർഫിറ്റിംഗ്** (കുറഞ്ഞ ഫിറ്റ്)യും **ഓവർഫിറ്റിംഗ്** (അധിക ഫിറ്റ്)യും മോഡലിന്റെ ഗുണമേന്മ കുറയ്ക്കുന്ന സാധാരണ പ്രശ്നങ്ങളാണ്, മോഡൽ ശരിയായി ഫിറ്റ് ചെയ്യാത്തതോ വളരെ അധികം ഫിറ്റ് ചെയ്തതോ ആയിരിക്കുമ്പോൾ. ഇത് മോഡൽ പരിശീലന ഡാറ്റയുമായി വളരെ അടുത്തോ വളരെ ദൂരമായോ പ്രവചനങ്ങൾ നടത്താൻ കാരണമാകും. ഒരു ഓവർഫിറ്റ് മോഡൽ പരിശീലന ഡാറ്റ വളരെ നന്നായി പ്രവചിക്കുന്നു, കാരണം അത് ഡാറ്റയുടെ വിശദാംശങ്ങളും ശബ്ദവും വളരെ നന്നായി പഠിച്ചിട്ടുണ്ട്. ഒരു അണ്ടർഫിറ്റ് മോഡൽ കൃത്യമായില്ല, കാരണം അത് പരിശീലന ഡാറ്റയും മുമ്പ് 'കണ്ടിട്ടില്ലാത്ത' ഡാറ്റയും കൃത്യമായി വിശകലനം ചെയ്യാൻ കഴിയുന്നില്ല. + +![overfitting model](../../../../translated_images/overfitting.1c132d92bfd93cb63240baf63ebdf82c30e30a0a44e1ad49861b82ff600c2b5c.ml.png) +> ഇൻഫോഗ്രാഫിക് [ജെൻ ലൂപ്പർ](https://twitter.com/jenlooper) tarafından + +## പരാമീറ്റർ ട്യൂണിംഗ് + +നിങ്ങളുടെ പ്രാഥമിക പരിശീലനം പൂർത്തിയായ ശേഷം, മോഡലിന്റെ ഗുണമേന്മ നിരീക്ഷിച്ച് അതിന്റെ 'ഹൈപ്പർപാരാമീറ്ററുകൾ' ക്രമീകരിച്ച് മെച്ചപ്പെടുത്താൻ പരിഗണിക്കുക. പ്രക്രിയയെക്കുറിച്ച് കൂടുതൽ വായിക്കുക [ഡോക്യുമെന്റേഷനിൽ](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). + +## പ്രവചനം + +ഇത് നിങ്ങൾക്ക് പൂർണ്ണമായും പുതിയ ഡാറ്റ ഉപയോഗിച്ച് മോഡലിന്റെ കൃത്യത പരിശോധിക്കാനുള്ള നിമിഷമാണ്. 'പ്രയോഗത്തിൽ' ഉള്ള ML സജ്ജീകരണത്തിൽ, നിങ്ങൾ മോഡൽ പ്രൊഡക്ഷനിൽ ഉപയോഗിക്കാൻ വെബ് ആസറ്റുകൾ നിർമ്മിക്കുമ്പോൾ, ഈ പ്രക്രിയയിൽ ഉപയോക്തൃ ഇൻപുട്ട് (ഉദാഹരണത്തിന് ബട്ടൺ അമർത്തൽ) ശേഖരിച്ച് ഒരു വേരിയബിൾ സജ്ജമാക്കി മോഡലിലേക്ക് ഇൻഫറൻസ് അല്ലെങ്കിൽ വിലയിരുത്തലിനായി അയയ്ക്കുന്നതും ഉൾപ്പെടാം. + +ഈ പാഠങ്ങളിൽ, നിങ്ങൾ ഈ ഘട്ടങ്ങൾ ഉപയോഗിച്ച് ഡാറ്റാ സയന്റിസ്റ്റിന്റെ എല്ലാ പ്രവർത്തനങ്ങളും, കൂടാതെ കൂടുതൽ, തയ്യാറാക്കാനും, നിർമ്മിക്കാനും, പരീക്ഷിക്കാനും, വിലയിരുത്താനും, പ്രവചിക്കാനും പഠിക്കും, 'ഫുൾ സ്റ്റാക്ക്' ML എഞ്ചിനീയറായി നിങ്ങളുടെ യാത്രയിൽ മുന്നേറുമ്പോൾ. + +--- + +## 🚀ചലഞ്ച് + +ഒരു ML പ്രാക്ടീഷണറുടെ ഘട്ടങ്ങൾ പ്രതിഫലിപ്പിക്കുന്ന ഒരു ഫ്ലോ ചാർട്ട് വരയ്ക്കുക. നിങ്ങൾ ഇപ്പോൾ പ്രക്രിയയിൽ എവിടെയാണ്? നിങ്ങൾക്ക് എവിടെ ബുദ്ധിമുട്ട് ഉണ്ടാകുമെന്ന് പ്രവചിക്കുന്നു? നിങ്ങൾക്ക് എവിടെ എളുപ്പമാണ്? + +## [പോസ്റ്റ്-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +## അവലോകനം & സ്വയം പഠനം + +ഡാറ്റാ സയന്റിസ്റ്റുകൾ അവരുടെ ദൈനംദിന ജോലി ചർച്ച ചെയ്യുന്ന അഭിമുഖങ്ങൾ ഓൺലൈനിൽ തിരയുക. ഇതാ [ഒരു ഉദാഹരണം](https://www.youtube.com/watch?v=Z3IjgbbCEfs). + +## അസൈൻമെന്റ് + +[ഒരു ഡാറ്റാ സയന്റിസ്റ്റിനെ അഭിമുഖം ചെയ്യുക](assignment.md) + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനത്തിന്റെ ഉപയോഗത്തിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/1-Introduction/4-techniques-of-ML/assignment.md b/translations/ml/1-Introduction/4-techniques-of-ML/assignment.md new file mode 100644 index 000000000..d893cedf6 --- /dev/null +++ b/translations/ml/1-Introduction/4-techniques-of-ML/assignment.md @@ -0,0 +1,27 @@ + +# ഒരു ഡാറ്റ സയന്റിസ്റ്റിനെ അഭിമുഖം + +## നിർദ്ദേശങ്ങൾ + +നിങ്ങളുടെ കമ്പനിയിലോ, ഒരു ഉപയോക്തൃ ഗ്രൂപ്പിലോ, അല്ലെങ്കിൽ നിങ്ങളുടെ സുഹൃത്തുക്കളിലോ സഹപാഠികളിലോ ഡാറ്റ സയന്റിസ്റ്റായി പ്രൊഫഷണലായി ജോലി ചെയ്യുന്ന ആരെയെങ്കിലും സംസാരിക്കുക. അവരുടെ ദൈനംദിന ജോലികൾക്കുറിച്ച് ഒരു ചെറിയ പ്രബന്ധം (500 വാക്കുകൾ) എഴുതുക. അവർ വിദഗ്ധരാണോ, അല്ലെങ്കിൽ 'ഫുൾ സ്റ്റാക്ക്' ആയി പ്രവർത്തിക്കുന്നവരാണോ? + +## റൂബ്രിക് + +| മാനദണ്ഡം | ഉദാഹരണപരമായത് | മതിയായത് | മെച്ചപ്പെടുത്തേണ്ടത് | +| -------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------ | --------------------- | +| | ശരിയായ നീളമുള്ള, ഉറവിടങ്ങൾ വ്യക്തമാക്കിയ പ്രബന്ധം .doc ഫയലായി സമർപ്പിച്ചിരിക്കുന്നു | പ്രബന്ധം ഉറവിടങ്ങൾ വ്യക്തമാക്കാത്തതോ ആവശ്യമായ നീളത്തിൽ കുറവായതോ ആണ് | പ്രബന്ധം സമർപ്പിച്ചിട്ടില്ല | + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/1-Introduction/README.md b/translations/ml/1-Introduction/README.md new file mode 100644 index 000000000..622554c47 --- /dev/null +++ b/translations/ml/1-Introduction/README.md @@ -0,0 +1,38 @@ + +# മെഷീൻ ലേണിങ്ങിലേക്ക് പരിചയം + +പാഠ്യപദ്ധതിയുടെ ഈ ഭാഗത്തിൽ, മെഷീൻ ലേണിങ്ങ് എന്ന മേഖലയെ അടിസ്ഥാനമാക്കിയുള്ള ആശയങ്ങൾ, അതെന്താണെന്ന്, അതിന്റെ ചരിത്രം, ഗവേഷകർ അതുമായി പ്രവർത്തിക്കാൻ ഉപയോഗിക്കുന്ന സാങ്കേതിക വിദ്യകൾ എന്നിവയെക്കുറിച്ച് നിങ്ങൾക്ക് പരിചയപ്പെടുത്തും. ഈ പുതിയ ML ലോകത്തെ നമുക്ക് ഒരുമിച്ച് അന്വേഷിക്കാം! + +![globe](../../../translated_images/globe.59f26379ceb40428672b4d9a568044618a2bf6292ecd53a5c481b90e3fa805eb.ml.jpg) +> ഫോട്ടോ ബിൽ ഓക്സ്ഫോർഡ് എന്നവരിൽ നിന്നാണ് അൺസ്പ്ലാഷിൽ + +### പാഠങ്ങൾ + +1. [മെഷീൻ ലേണിങ്ങിലേക്ക് പരിചയം](1-intro-to-ML/README.md) +1. [മെഷീൻ ലേണിങ്ങിന്റെയും AI യുടെയും ചരിത്രം](2-history-of-ML/README.md) +1. [ന്യായത്വവും മെഷീൻ ലേണിങ്ങും](3-fairness/README.md) +1. [മെഷീൻ ലേണിങ്ങിന്റെ സാങ്കേതിക വിദ്യകൾ](4-techniques-of-ML/README.md) +### ക്രെഡിറ്റുകൾ + +"Introduction to Machine Learning" എന്നത് ♥️ ഉള്ളടക്കത്തോടെ [Muhammad Sakib Khan Inan](https://twitter.com/Sakibinan), [Ornella Altunyan](https://twitter.com/ornelladotcom) എന്നിവരടങ്ങിയ സംഘത്താൽ എഴുതപ്പെട്ടതാണ്. + +"The History of Machine Learning" ♥️ ഉള്ളടക്കത്തോടെ [Jen Looper](https://twitter.com/jenlooper)യും [Amy Boyd](https://twitter.com/AmyKateNicho)യും ചേർന്ന് എഴുതിയതാണ്. + +"Fairness and Machine Learning" ♥️ ഉള്ളടക്കത്തോടെ [Tomomi Imura](https://twitter.com/girliemac) എഴുതിയതാണ്. + +"Techniques of Machine Learning" ♥️ ഉള്ളടക്കത്തോടെ [Jen Looper](https://twitter.com/jenlooper)യും [Chris Noring](https://twitter.com/softchris)യും ചേർന്ന് എഴുതിയതാണ്. + +--- + + +**അസൂയാപത്രം**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, യന്ത്രം ചെയ്ത വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ അധികാരപരമായ ഉറവിടമായി കണക്കാക്കപ്പെടണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/2-Regression/1-Tools/README.md b/translations/ml/2-Regression/1-Tools/README.md new file mode 100644 index 000000000..cb2e5eba7 --- /dev/null +++ b/translations/ml/2-Regression/1-Tools/README.md @@ -0,0 +1,241 @@ + +# Python ഉം Scikit-learn ഉം ഉപയോഗിച്ച് regression മോഡലുകൾ ആരംഭിക്കുക + +![Summary of regressions in a sketchnote](../../../../translated_images/ml-regression.4e4f70e3b3ed446e3ace348dec973e133fa5d3680fbc8412b61879507369b98d.ml.png) + +> Sketchnote by [Tomomi Imura](https://www.twitter.com/girlie_mac) + +## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) + +> ### [ഈ പാഠം R-ൽ ലഭ്യമാണ്!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html) + +## പരിചയം + +ഈ നാല് പാഠങ്ങളിൽ, നിങ്ങൾ regression മോഡലുകൾ എങ്ങനെ നിർമ്മിക്കാമെന്ന് കണ്ടെത്തും. ഇവ എന്തിനാണെന്ന് നമുക്ക് ഉടൻ ചർച്ച ചെയ്യാം. എന്നാൽ എന്തെങ്കിലും ചെയ്യുന്നതിന് മുമ്പ്, പ്രക്രിയ ആരംഭിക്കാൻ ആവശ്യമായ ശരിയായ ഉപകരണങ്ങൾ നിങ്ങൾക്കുണ്ടെന്ന് ഉറപ്പാക്കുക! + +ഈ പാഠത്തിൽ, നിങ്ങൾ പഠിക്കാനിരിക്കുന്നതെന്തെന്നാൽ: + +- ലൊക്കൽ മെഷീൻ ലേണിംഗ് ടാസ്കുകൾക്കായി നിങ്ങളുടെ കമ്പ്യൂട്ടർ ക്രമീകരിക്കുക. +- Jupyter നോട്ട്‌ബുക്കുകളുമായി പ്രവർത്തിക്കുക. +- Scikit-learn ഉപയോഗിക്കുക, ഇൻസ്റ്റാളേഷൻ ഉൾപ്പെടെ. +- ലീനിയർ regression ഒരു ഹാൻഡ്‌സ്-ഓൺ വ്യായാമത്തോടെ പരിശോധിക്കുക. + +## ഇൻസ്റ്റാളേഷനുകളും ക്രമീകരണങ്ങളും + +[![ML for beginners - Setup your tools ready to build Machine Learning models](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML for beginners -Setup your tools ready to build Machine Learning models") + +> 🎥 ML ക്രമീകരണത്തിനായി നിങ്ങളുടെ കമ്പ്യൂട്ടർ ക്രമീകരിക്കുന്നതിനുള്ള ഒരു ചെറിയ വീഡിയോക്കായി മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക. + +1. **Python ഇൻസ്റ്റാൾ ചെയ്യുക**. നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ [Python](https://www.python.org/downloads/) ഇൻസ്റ്റാൾ ചെയ്തിട്ടുണ്ടെന്ന് ഉറപ്പാക്കുക. ഡാറ്റാ സയൻസ്, മെഷീൻ ലേണിംഗ് ടാസ്കുകൾക്കായി Python ഉപയോഗിക്കും. പല കമ്പ്യൂട്ടർ സിസ്റ്റങ്ങളിലുമുണ്ട് Python ഇൻസ്റ്റാളേഷൻ. ചില ഉപയോക്താക്കൾക്ക് ക്രമീകരണം എളുപ്പമാക്കാൻ ഉപയോഗപ്രദമായ [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) ലഭ്യമാണ്. + + Python-ന്റെ ചില ഉപയോഗങ്ങൾ ഒരു സോഫ്റ്റ്‌വെയറിന്റെ ഒരു വേർഷൻ ആവശ്യപ്പെടുമ്പോൾ, മറ്റുള്ളവയ്ക്ക് വ്യത്യസ്ത വേർഷൻ ആവശ്യമായേക്കാം. അതിനാൽ, [virtual environment](https://docs.python.org/3/library/venv.html) ഉപയോഗിച്ച് പ്രവർത്തിക്കുന്നത് ഉപകാരപ്രദമാണ്. + +2. **Visual Studio Code ഇൻസ്റ്റാൾ ചെയ്യുക**. നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ Visual Studio Code ഇൻസ്റ്റാൾ ചെയ്തിട്ടുണ്ടെന്ന് ഉറപ്പാക്കുക. അടിസ്ഥാന ഇൻസ്റ്റാളേഷനായി [Visual Studio Code ഇൻസ്റ്റാൾ ചെയ്യാനുള്ള നിർദ്ദേശങ്ങൾ](https://code.visualstudio.com/) പിന്തുടരുക. ഈ കോഴ്സിൽ Python Visual Studio Code-ൽ ഉപയോഗിക്കും, അതിനാൽ Python ഡെവലപ്പ്മെന്റിനായി [Visual Studio Code ക്രമീകരിക്കുന്നതെങ്ങനെ](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) എന്നത് അറിയാൻ നിങ്ങൾ ആഗ്രഹിക്കാം. + + > Python-നൊപ്പം പരിചയപ്പെടാൻ ഈ [Learn modules](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) ശേഖരം വഴി പ്രവർത്തിക്കുക + > + > [![Setup Python with Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Setup Python with Visual Studio Code") + > + > 🎥 VS Code-ൽ Python ഉപയോഗിക്കുന്നതിനുള്ള വീഡിയോക്കായി മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക. + +3. **Scikit-learn ഇൻസ്റ്റാൾ ചെയ്യുക**, [ഈ നിർദ്ദേശങ്ങൾ](https://scikit-learn.org/stable/install.html) പിന്തുടർന്ന്. Python 3 ഉപയോഗിക്കുന്നതെന്ന് ഉറപ്പാക്കേണ്ടതിനാൽ, virtual environment ഉപയോഗിക്കുന്നത് ശുപാർശ ചെയ്യുന്നു. M1 Mac-ൽ ഈ ലൈബ്രറി ഇൻസ്റ്റാൾ ചെയ്യുമ്പോൾ പ്രത്യേക നിർദ്ദേശങ്ങൾ ഉണ്ട്, മുകളിൽ നൽകിയ ലിങ്കിൽ കാണാം. + +1. **Jupyter Notebook ഇൻസ്റ്റാൾ ചെയ്യുക**. [Jupyter പാക്കേജ് ഇൻസ്റ്റാൾ ചെയ്യേണ്ടതുണ്ട്](https://pypi.org/project/jupyter/). + +## നിങ്ങളുടെ ML എഴുത്ത് പരിസ്ഥിതി + +Python കോഡ് വികസിപ്പിക്കുകയും മെഷീൻ ലേണിംഗ് മോഡലുകൾ സൃഷ്ടിക്കുകയും ചെയ്യാൻ നിങ്ങൾ **നോട്ട്‌ബുക്കുകൾ** ഉപയോഗിക്കും. ഈ തരത്തിലുള്ള ഫയൽ ഡാറ്റാ സയന്റിസ്റ്റുകൾക്കുള്ള സാധാരണ ഉപകരണമാണ്, അവയുടെ സഫിക്സ് അല്ലെങ്കിൽ എക്സ്റ്റൻഷൻ `.ipynb` ആണ്. + +നോട്ട്‌ബുക്കുകൾ ഒരു ഇന്ററാക്ടീവ് പരിസ്ഥിതിയാണ്, ഡെവലപ്പർക്ക് കോഡ് ചെയ്യാനും കുറിപ്പുകൾ ചേർക്കാനും, കോഡിന്റെ ചുറ്റുപാടിൽ ഡോക്യുമെന്റേഷൻ എഴുതാനും അനുവദിക്കുന്നു, ഇത് പരീക്ഷണാത്മക അല്ലെങ്കിൽ ഗവേഷണ-കേന്ദ്രിത പദ്ധതികൾക്ക് വളരെ സഹായകരമാണ്. + +[![ML for beginners - Set up Jupyter Notebooks to start building regression models](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML for beginners - Set up Jupyter Notebooks to start building regression models") + +> 🎥 ഈ വ്യായാമം ചെയ്യുന്നതിനുള്ള ചെറിയ വീഡിയോക്കായി മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക. + +### വ്യായാമം - ഒരു നോട്ട്‌ബുക്കുമായി പ്രവർത്തിക്കുക + +ഈ ഫോൾഡറിൽ, നിങ്ങൾക്ക് _notebook.ipynb_ ഫയൽ കാണാം. + +1. Visual Studio Code-ൽ _notebook.ipynb_ തുറക്കുക. + + Python 3+ ഉപയോഗിച്ച് Jupyter സെർവർ ആരംഭിക്കും. നോട്ട്‌ബുക്കിന്റെ ഭാഗങ്ങൾ `run` ചെയ്യാവുന്നതാണ്, കോഡ് ഭാഗങ്ങൾ. പ്ലേ ബട്ടൺ പോലുള്ള ഐക്കൺ തിരഞ്ഞെടുക്കുന്നതിലൂടെ കോഡ് ബ്ലോക്ക് റൺ ചെയ്യാം. + +1. `md` ഐക്കൺ തിരഞ്ഞെടുക്കുക, കുറച്ച് markdown ചേർക്കുക, താഴെ കാണുന്ന വാചകം **# Welcome to your notebook** ചേർക്കുക. + + തുടർന്ന്, Python കോഡ് ചേർക്കുക. + +1. കോഡ് ബ്ലോക്കിൽ **print('hello notebook')** ടൈപ്പ് ചെയ്യുക. +1. കോഡ് റൺ ചെയ്യാൻ അമ്പ് ഐക്കൺ തിരഞ്ഞെടുക്കുക. + + നിങ്ങൾക്ക് പ്രിന്റ് ചെയ്ത പ്രസ്താവന കാണാം: + + ```output + hello notebook + ``` + +![VS Code with a notebook open](../../../../translated_images/notebook.4a3ee31f396b88325607afda33cadcc6368de98040ff33942424260aa84d75f2.ml.jpg) + +നിങ്ങളുടെ കോഡിനൊപ്പം കുറിപ്പുകൾ ചേർത്ത് നോട്ട്‌ബുക്ക് സ്വയം ഡോക്യുമെന്റ് ചെയ്യാം. + +✅ വെബ് ഡെവലപ്പറുടെ പ്രവർത്തന പരിസ്ഥിതിയും ഡാറ്റാ സയന്റിസ്റ്റിന്റെ പ്രവർത്തന പരിസ്ഥിതിയും എത്ര വ്യത്യസ്തമാണെന്ന് ഒരു നിമിഷം ചിന്തിക്കുക. + +## Scikit-learn ഉപയോഗിച്ച് പ്രവർത്തനം ആരംഭിക്കുക + +ഇപ്പോൾ Python നിങ്ങളുടെ ലൊക്കൽ പരിസ്ഥിതിയിൽ ക്രമീകരിച്ചിരിക്കുന്നു, Jupyter നോട്ട്‌ബുക്കുകളുമായി നിങ്ങൾ പരിചിതരാണ്, Scikit-learn-നോടും സമാനമായി പരിചിതരാകാം (`sci` എന്ന് ഉച്ചരിക്കാം, `science` പോലെ). Scikit-learn ML ടാസ്കുകൾ ചെയ്യാൻ സഹായിക്കുന്ന [വ്യാപകമായ API](https://scikit-learn.org/stable/modules/classes.html#api-ref) നൽകുന്നു. + +അവരുടെ [വെബ്സൈറ്റ്](https://scikit-learn.org/stable/getting_started.html) പ്രകാരം, "Scikit-learn ഒരു ഓപ്പൺ സോഴ്‌സ് മെഷീൻ ലേണിംഗ് ലൈബ്രറിയാണ്, ഇത് supervised, unsupervised ലേണിംഗ് പിന്തുണയ്ക്കുന്നു. മോഡൽ ഫിറ്റിംഗ്, ഡാറ്റ പ്രീപ്രോസസ്സിംഗ്, മോഡൽ സെലക്ഷൻ, മൂല്യനിർണ്ണയം, മറ്റ് പല ഉപകരണങ്ങളും ഇത് നൽകുന്നു." + +ഈ കോഴ്സിൽ, നിങ്ങൾ Scikit-learn ഉൾപ്പെടെയുള്ള ഉപകരണങ്ങൾ ഉപയോഗിച്ച് 'പരമ്പരാഗത മെഷീൻ ലേണിംഗ്' ടാസ്കുകൾ നിർവഹിക്കുന്ന മോഡലുകൾ നിർമ്മിക്കും. നാം ന്യുറൽ നെറ്റ്വർക്കുകളും ഡീപ്പ് ലേണിംഗും ഒഴിവാക്കിയിട്ടുണ്ട്, കാരണം അവ 'AI for Beginners' പാഠ്യപദ്ധതിയിൽ കൂടുതൽ വിശദമായി ഉൾപ്പെടുത്തിയിട്ടുണ്ട്. + +Scikit-learn മോഡലുകൾ നിർമ്മിക്കുകയും അവ വിലയിരുത്തുകയും ചെയ്യാൻ എളുപ്പമാണ്. ഇത് പ്രധാനമായും സംഖ്യാത്മക ഡാറ്റ ഉപയോഗിക്കുന്നതിനാണ്, പഠന ഉപകരണങ്ങളായി ഉപയോഗിക്കാൻ നിരവധി റെഡി-മെയ്ഡ് ഡാറ്റാസെറ്റുകൾ ഉൾക്കൊള്ളുന്നു. വിദ്യാർത്ഥികൾക്ക് പരീക്ഷിക്കാൻ മുൻകൂട്ടി നിർമ്മിച്ച മോഡലുകളും ഇതിൽ ഉൾപ്പെടുന്നു. ആദ്യം, പാക്കേജ് ചെയ്ത ഡാറ്റ ലോഡ് ചെയ്യുകയും Scikit-learn-ന്റെ ബിൽറ്റ്-ഇൻ എസ്റ്റിമേറ്റർ ഉപയോഗിച്ച് അടിസ്ഥാന ML മോഡൽ നിർമ്മിക്കലും പരിശോധിക്കാം. + +## വ്യായാമം - നിങ്ങളുടെ ആദ്യ Scikit-learn നോട്ട്‌ബുക്ക് + +> ഈ ട്യൂട്ടോറിയൽ Scikit-learn വെബ്സൈറ്റിലെ [linear regression ഉദാഹരണത്തിൽ](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) നിന്നാണ് പ്രചോദനം ലഭിച്ചത്. + + +[![ML for beginners - Your First Linear Regression Project in Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML for beginners - Your First Linear Regression Project in Python") + +> 🎥 ഈ വ്യായാമം ചെയ്യുന്നതിനുള്ള ചെറിയ വീഡിയോക്കായി മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക. + +ഈ പാഠവുമായി ബന്ധപ്പെട്ട _notebook.ipynb_ ഫയലിൽ, എല്ലാ സെല്ലുകളും 'trash can' ഐക്കൺ അമർത്തി ക്ലിയർ ചെയ്യുക. + +ഈ വിഭാഗത്തിൽ, Scikit-learn-ൽ പഠനത്തിനായി ഉൾപ്പെടുത്തിയ ചെറിയ ഡയബറ്റീസ് ഡാറ്റാസെറ്റ് ഉപയോഗിച്ച് പ്രവർത്തിക്കും. ഡയബറ്റിക് രോഗികൾക്കായി ഒരു ചികിത്സ പരീക്ഷിക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നതായി കരുതുക. മെഷീൻ ലേണിംഗ് മോഡലുകൾ, വ്യത്യസ്ത വേരിയബിളുകളുടെ സംയോജനങ്ങളുടെ അടിസ്ഥാനത്തിൽ, ഏത് രോഗികൾ ചികിത്സയ്ക്ക് മികച്ച പ്രതികരണം നൽകുമെന്ന് നിർണ്ണയിക്കാൻ സഹായിക്കാം. വളരെ അടിസ്ഥാന regression മോഡൽ പോലും, ദൃശ്യവൽക്കരിച്ചാൽ, സിദ്ധാന്തപരമായ ക്ലിനിക്കൽ ട്രയലുകൾ ക്രമീകരിക്കാൻ സഹായിക്കുന്ന വേരിയബിളുകളെക്കുറിച്ച് വിവരങ്ങൾ കാണിക്കാം. + +✅ regression രീതികളുടെ പല തരങ്ങളും ഉണ്ട്, നിങ്ങൾ തിരഞ്ഞെടുക്കുന്നത് നിങ്ങൾ അന്വേഷിക്കുന്ന ഉത്തരത്തിന്റെ അടിസ്ഥാനത്തിലാണ്. ഒരു വ്യക്തിയുടെ പ്രായം നൽകിയാൽ അവന്റെ സാധ്യതയുള്ള ഉയരം പ്രവചിക്കാൻ linear regression ഉപയോഗിക്കും, കാരണം നിങ്ങൾ **സംഖ്യാത്മക മൂല്യം** തേടുകയാണ്. ഒരു ഭക്ഷണരീതിയെ വെഗൻ ആണോ അല്ലയോ എന്ന് കണ്ടെത്താൻ ആഗ്രഹിക്കുന്നുവെങ്കിൽ, നിങ്ങൾ **വർഗ്ഗം നിശ്ചയിക്കൽ** അന്വേഷിക്കുന്നതാണ്, അതിനാൽ logistic regression ഉപയോഗിക്കും. logistic regression പിന്നീട് പഠിക്കും. ഡാറ്റയിൽ നിന്ന് ചോദിക്കാവുന്ന ചില ചോദ്യങ്ങളെ കുറിച്ച് ചിന്തിക്കുക, ഏത് രീതികൾ കൂടുതൽ അനുയോജ്യമാണ് എന്ന്. + +ഈ ടാസ്ക് ആരംഭിക്കാം. + +### ലൈബ്രറികൾ ഇറക്കുമതി ചെയ്യുക + +ഈ ടാസ്കിനായി ചില ലൈബ്രറികൾ ഇറക്കുമതി ചെയ്യാം: + +- **matplotlib**. ഇത് ഒരു ഉപകാരപ്രദമായ [ഗ്രാഫിംഗ് ടൂൾ](https://matplotlib.org/) ആണ്, ലൈന്പ്ലോട്ട് സൃഷ്ടിക്കാൻ ഉപയോഗിക്കും. +- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) Python-ൽ സംഖ്യാത്മക ഡാറ്റ കൈകാര്യം ചെയ്യാൻ സഹായിക്കുന്ന ലൈബ്രറിയാണ്. +- **sklearn**. ഇത് [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) ലൈബ്രറിയാണ്. + +നിങ്ങളുടെ ടാസ്കുകൾക്ക് സഹായം നൽകാൻ ചില ലൈബ്രറികൾ ഇറക്കുമതി ചെയ്യുക. + +1. താഴെ കാണുന്ന കോഡ് ടൈപ്പ് ചെയ്ത് ഇറക്കുമതി ചേർക്കുക: + + ```python + import matplotlib.pyplot as plt + import numpy as np + from sklearn import datasets, linear_model, model_selection + ``` + + മുകളിൽ നിങ്ങൾ `matplotlib`, `numpy` ഇറക്കുമതി ചെയ്യുന്നു, കൂടാതെ `sklearn`-ൽ നിന്ന് `datasets`, `linear_model`, `model_selection` ഇറക്കുമതി ചെയ്യുന്നു. `model_selection` ഡാറ്റ പരിശീലനവും ടെസ്റ്റ് സെറ്റുകളിലായി വിഭജിക്കാൻ ഉപയോഗിക്കുന്നു. + +### ഡയബറ്റീസ് ഡാറ്റാസെറ്റ് + +ഇൻബിൽറ്റ് [ഡയബറ്റീസ് ഡാറ്റാസെറ്റ്](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) 442 സാമ്പിളുകൾ ഉൾക്കൊള്ളുന്നു, 10 ഫീച്ചർ വേരിയബിളുകളോടെ, ചിലത്: + +- പ്രായം: വയസ്സിൽ +- bmi: ബോഡി മാസ്സ് ഇൻഡക്സ് +- bp: ശരാശരി രക്തസമ്മർദ്ദം +- s1 tc: ടി-സെല്ലുകൾ (വെളുത്ത രക്തകോശങ്ങളുടെ ഒരു തരം) + +✅ ഈ ഡാറ്റാസെറ്റിൽ 'sex' എന്ന binary ക്ലാസിഫിക്കേഷൻ ഫീച്ചർ വേരിയബിൾ ഉൾക്കൊള്ളുന്നു, ഡയബറ്റീസ് ഗവേഷണത്തിന് പ്രധാനമാണ്. പല മെഡിക്കൽ ഡാറ്റാസെറ്റുകളും ഇത്തരത്തിലുള്ള binary ക്ലാസിഫിക്കേഷൻ ഉൾക്കൊള്ളുന്നു. ഇത്തരത്തിലുള്ള വർഗ്ഗീകരണങ്ങൾ ജനസംഖ്യയുടെ ചില ഭാഗങ്ങളെ ചികിത്സകളിൽ നിന്ന് ഒഴിവാക്കാമെന്ന് ചിന്തിക്കുക. + +ഇപ്പോൾ, X, y ഡാറ്റ ലോഡ് ചെയ്യുക. + +> 🎓 ഓർമ്മിക്കുക, ഇത് supervised learning ആണ്, അതിനാൽ 'y' എന്ന ലക്ഷ്യ വേരിയബിൾ ആവശ്യമാണ്. + +പുതിയ കോഡ് സെല്ലിൽ, `load_diabetes()` വിളിച്ച് ഡയബറ്റീസ് ഡാറ്റാസെറ്റ് ലോഡ് ചെയ്യുക. `return_X_y=True` നൽകുന്നത് `X` ഡാറ്റാ മാട്രിക്സ് ആകും, `y` regression ലക്ഷ്യം ആകും എന്ന് സൂചിപ്പിക്കുന്നു. + +1. ഡാറ്റാ മാട്രിക്സിന്റെ ആകൃതി (shape)യും ആദ്യ ഘടകവും പ്രിന്റ് ചെയ്യാൻ ചില print കമാൻഡുകൾ ചേർക്കുക: + + ```python + X, y = datasets.load_diabetes(return_X_y=True) + print(X.shape) + print(X[0]) + ``` + + നിങ്ങൾക്ക് ലഭിക്കുന്നത് ഒരു ട്യൂപ്പിൾ ആണ്. ട്യൂപ്പിളിന്റെ ആദ്യ രണ്ട് മൂല്യങ്ങൾ `X`ക്കും `y`ക്കും നിയോഗിക്കുന്നു. [ട്യൂപ്പിളുകൾക്കുറിച്ച് കൂടുതൽ](https://wikipedia.org/wiki/Tuple) പഠിക്കുക. + + ഈ ഡാറ്റ 442 ഇനങ്ങൾ 10 ഘടകങ്ങളുള്ള അറേകളായി രൂപപ്പെടുത്തിയിട്ടുണ്ട്: + + ```text + (442, 10) + [ 0.03807591 0.05068012 0.06169621 0.02187235 -0.0442235 -0.03482076 + -0.04340085 -0.00259226 0.01990842 -0.01764613] + ``` + + ✅ ഡാറ്റയും regression ലക്ഷ്യവും തമ്മിലുള്ള ബന്ധത്തെ കുറിച്ച് ചിന്തിക്കുക. ലീനിയർ regression ഫീച്ചർ X-നും ലക്ഷ്യ വേരിയബിൾ y-നും ഇടയിലുള്ള ബന്ധം പ്രവചിക്കുന്നു. ഡയബറ്റീസ് ഡാറ്റാസെറ്റിന്റെ [ലക്ഷ്യം](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) ഡോക്യുമെന്റേഷനിൽ കണ്ടെത്താമോ? ഈ ഡാറ്റാസെറ്റ് എന്ത് പ്രദർശിപ്പിക്കുന്നു, ആ ലക്ഷ്യം പരിഗണിച്ച്? + +2. ഡാറ്റാസെറ്റിന്റെ 3-ആം കോളം തിരഞ്ഞെടുക്കുക, പ്ലോട്ട് ചെയ്യാൻ. എല്ലാ വരികളും തിരഞ്ഞെടുക്കാൻ `:` ഓപ്പറേറ്റർ ഉപയോഗിച്ച്, പിന്നീട് 3-ആം കോളം (ഇൻഡക്സ് 2) തിരഞ്ഞെടുക്കുക. പ്ലോട്ടിംഗിന് ആവശ്യമായ 2D അറേ ആയി രൂപപ്പെടുത്താൻ `reshape(n_rows, n_columns)` ഉപയോഗിക്കാം. ഒരു പാരാമീറ്റർ -1 ആണെങ്കിൽ, ആ ഡൈമെൻഷൻ സ്വയം കണക്കാക്കും. + + ```python + X = X[:, 2] + X = X.reshape((-1,1)) + ``` + + ✅ ഏപ്പോൾ വേണമെങ്കിലും ഡാറ്റയുടെ ആകൃതി പരിശോധിക്കാൻ പ്രിന്റ് ചെയ്യുക. + +3. ഇപ്പോൾ ഡാറ്റ പ്ലോട്ട് ചെയ്യാൻ തയ്യാറാണ്, ഈ ഡാറ്റാസെറ്റിലെ സംഖ്യകളിൽ ലജിക്കൽ സ്പ്ലിറ്റ് കണ്ടെത്താൻ മെഷീൻ സഹായിക്കുമോ എന്ന് നോക്കാം. അതിനായി, ഡാറ്റ (X)യും ലക്ഷ്യം (y) ടെസ്റ്റ്, പരിശീലന സെറ്റുകളായി വിഭജിക്കണം. Scikit-learn ഇതിന് എളുപ്പമുള്ള മാർഗം നൽകുന്നു; നിങ്ങൾക്ക് ടെസ്റ്റ് ഡാറ്റ ഒരു നിശ്ചിത പോയിന്റിൽ വിഭജിക്കാം. + + ```python + X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33) + ``` + +4. ഇപ്പോൾ മോഡൽ പരിശീലിപ്പിക്കാൻ തയ്യാറാണ്! ലീനിയർ regression മോഡൽ ലോഡ് ചെയ്ത് `model.fit()` ഉപയോഗിച്ച് X, y പരിശീലന സെറ്റുകൾ ഉപയോഗിച്ച് പരിശീലിപ്പിക്കുക: + + ```python + model = linear_model.LinearRegression() + model.fit(X_train, y_train) + ``` + + ✅ `model.fit()` TensorFlow പോലുള്ള പല ML ലൈബ്രറികളിലും കാണുന്ന ഒരു ഫംഗ്ഷനാണ് + +5. തുടർന്ന്, ടെസ്റ്റ് ഡാറ്റ ഉപയോഗിച്ച് പ്രവചനം സൃഷ്ടിക്കാൻ `predict()` ഫംഗ്ഷൻ ഉപയോഗിക്കുക. ഇത് ഡാറ്റ ഗ്രൂപ്പുകൾക്കിടയിലെ വര വരയ്ക്കാൻ ഉപയോഗിക്കും + + ```python + y_pred = model.predict(X_test) + ``` + +6. ഇപ്പോൾ matplotlib ഉപയോഗിച്ച് ഡാറ്റ പ്ലോട്ട് ചെയ്യാം. matplotlib ഈ ടാസ്കിന് വളരെ ഉപകാരപ്രദമാണ്. X, y ടെസ്റ്റ് ഡാറ്റയുടെ സ്കാറ്റർപ്ലോട്ട് സൃഷ്ടിച്ച്, മോഡലിന്റെ ഡാറ്റ ഗ്രൂപ്പിംഗുകൾക്കിടയിൽ ഏറ്റവും അനുയോജ്യമായ സ്ഥലത്ത് prediction ഉപയോഗിച്ച് ഒരു വര വരയ്ക്കുക. + + ```python + plt.scatter(X_test, y_test, color='black') + plt.plot(X_test, y_pred, color='blue', linewidth=3) + plt.xlabel('Scaled BMIs') + plt.ylabel('Disease Progression') + plt.title('A Graph Plot Showing Diabetes Progression Against BMI') + plt.show() + ``` + + ![a scatterplot showing datapoints around diabetes](../../../../translated_images/scatterplot.ad8b356bcbb33be68d54050e09b9b7bfc03e94fde7371f2609ae43f4c563b2d7.ml.png) + ✅ ഇവിടെ എന്ത് നടക്കുകയാണ് എന്ന് കുറച്ച് ചിന്തിക്കുക. ഒരു നേരിയ രേഖ നിരവധി ചെറിയ ഡാറ്റാ പോയിന്റുകളിലൂടെ കടന്നുപോകുന്നു, പക്ഷേ അത് ശരിക്കും എന്ത് ചെയ്യുകയാണ്? ഈ രേഖ ഉപയോഗിച്ച് ഒരു പുതിയ, കാണാത്ത ഡാറ്റാ പോയിന്റ് പ്ലോട്ടിന്റെ y അക്ഷത്തോട് എങ്ങനെ പൊരുത്തപ്പെടണം എന്ന് പ്രവചിക്കാൻ കഴിയുമെന്ന് നിങ്ങൾക്ക് കാണാമോ? ഈ മോഡലിന്റെ പ്രായോഗിക ഉപയോഗം വാക്കുകളിൽ വെക്കാൻ ശ്രമിക്കുക. + +അഭിനന്ദനങ്ങൾ, നിങ്ങൾ നിങ്ങളുടെ ആദ്യ ലീനിയർ റെഗ്രഷൻ മോഡൽ നിർമ്മിച്ചു, അതുമായി ഒരു പ്രവചനം സൃഷ്ടിച്ചു, അത് ഒരു പ്ലോട്ടിൽ പ്രദർശിപ്പിച്ചു! + +--- +## 🚀ചലഞ്ച് + +ഈ ഡാറ്റാസെറ്റിൽ നിന്നുള്ള മറ്റൊരു വ്യത്യസ്ത വേരിയബിൾ പ്ലോട്ട് ചെയ്യുക. സൂചന: ഈ വരി എഡിറ്റ് ചെയ്യുക: `X = X[:,2]`. ഈ ഡാറ്റാസെറ്റിന്റെ ലക്ഷ്യം പരിഗണിച്ച്, ഡയബറ്റീസിന്റെ രോഗമായി പുരോഗതിയെക്കുറിച്ച് നിങ്ങൾ എന്ത് കണ്ടെത്താൻ കഴിയും? +## [പോസ്റ്റ്-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +## അവലോകനം & സ്വയം പഠനം + +ഈ ട്യൂട്ടോറിയലിൽ, നിങ്ങൾ സിംപിൾ ലീനിയർ റെഗ്രഷനുമായി പ്രവർത്തിച്ചു, യൂണിവേറിയറ്റ് അല്ലെങ്കിൽ മൾട്ടിപ്പിൾ ലീനിയർ റെഗ്രഷൻ അല്ല. ഈ രീതികളുടെ വ്യത്യാസങ്ങളെ കുറിച്ച് കുറച്ച് വായിക്കുക, അല്ലെങ്കിൽ [ഈ വീഡിയോ](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) കാണുക. + +റെഗ്രഷൻ എന്ന ആശയത്തെക്കുറിച്ച് കൂടുതൽ വായിച്ച് ഈ സാങ്കേതിക വിദ്യ ഉപയോഗിച്ച് എങ്ങനെ ചോദ്യങ്ങൾക്ക് ഉത്തരം കണ്ടെത്താമെന്ന് ചിന്തിക്കുക. നിങ്ങളുടെ മനസ്സിലാക്കൽ കൂടുതൽ ആഴത്തിൽ ആക്കാൻ ഈ [ട്യൂട്ടോറിയൽ](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) സ്വീകരിക്കുക. + +## അസൈൻമെന്റ് + +[മറ്റൊരു ഡാറ്റാസെറ്റ്](assignment.md) + +--- + + +**അസൂയാപത്രം**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, യന്ത്രം ചെയ്ത വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ വ്യാഖ്യാനക്കേടുകൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/2-Regression/1-Tools/assignment.md b/translations/ml/2-Regression/1-Tools/assignment.md new file mode 100644 index 000000000..55f437dac --- /dev/null +++ b/translations/ml/2-Regression/1-Tools/assignment.md @@ -0,0 +1,29 @@ + +# Scikit-learn ഉപയോഗിച്ച് റിഗ്രഷൻ + +## നിർദ്ദേശങ്ങൾ + +Scikit-learn-ൽ ഉള്ള [Linnerud dataset](https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_linnerud.html#sklearn.datasets.load_linnerud) നോക്കുക. ഈ ഡാറ്റാസെറ്റിൽ നിരവധി [ലക്ഷ്യങ്ങൾ](https://scikit-learn.org/stable/datasets/toy_dataset.html#linnerrud-dataset) ഉണ്ട്: 'ഇത് ഒരു ഫിറ്റ്നസ് ക്ലബിൽ നിന്നുള്ള ഇരുപത് മധ്യവയസ്ക പുരുഷന്മാരിൽ നിന്നുള്ള മൂന്ന് വ്യായാമ (ഡാറ്റ) മൂല്യങ്ങളും മൂന്ന് ശാരീരിക (ലക്ഷ്യ) മൂല്യങ്ങളും ഉൾക്കൊള്ളുന്നു'. + +താങ്കളുടെ സ്വന്തം വാക്കുകളിൽ, വയസ്‌റ്റ്ലൈൻ (waistline) എത്ര സിറ്റപ്പുകൾ (situps) പൂർത്തിയാക്കിയതുമായി ബന്ധിപ്പിക്കുന്ന ഒരു Regression മോഡൽ എങ്ങനെ സൃഷ്ടിക്കാമെന്ന് വിവരിക്കുക. ഈ ഡാറ്റാസെറ്റിലെ മറ്റ് ഡാറ്റാപോയിന്റുകൾക്കും അതേ രീതിയിൽ ചെയ്യുക. + +## റൂബ്രിക് + +| മാനദണ്ഡം | ഉത്തമം | മതിയായ | മെച്ചപ്പെടുത്തേണ്ടത് | +| ------------------------------ | ----------------------------------- | ----------------------------- | -------------------------- | +| വിവരണാത്മക പാരഗ്രാഫ് സമർപ്പിക്കുക | നന്നായി എഴുതിയ പാരഗ്രാഫ് സമർപ്പിച്ചിരിക്കുന്നു | കുറച്ച് വാക്യങ്ങൾ സമർപ്പിച്ചിരിക്കുന്നു | വിവരണം നൽകിയിട്ടില്ല | + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ പ്രാമാണികമായ ഉറവിടമായി കണക്കാക്കണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനത്തിന്റെ ഉപയോഗത്തിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/2-Regression/1-Tools/notebook.ipynb b/translations/ml/2-Regression/1-Tools/notebook.ipynb new file mode 100644 index 000000000..e69de29bb diff --git a/translations/ml/2-Regression/1-Tools/solution/Julia/README.md b/translations/ml/2-Regression/1-Tools/solution/Julia/README.md new file mode 100644 index 000000000..ef1ff7111 --- /dev/null +++ b/translations/ml/2-Regression/1-Tools/solution/Julia/README.md @@ -0,0 +1,17 @@ + +ഇത് താൽക്കാലിക പ്ലേസ്ഹോൾഡറാണ് + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/2-Regression/1-Tools/solution/R/lesson_1-R.ipynb b/translations/ml/2-Regression/1-Tools/solution/R/lesson_1-R.ipynb new file mode 100644 index 000000000..eb18d6c95 --- /dev/null +++ b/translations/ml/2-Regression/1-Tools/solution/R/lesson_1-R.ipynb @@ -0,0 +1,454 @@ +{ + "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-12-19T16:30:34+00:00", + "source_file": "2-Regression/1-Tools/solution/R/lesson_1-R.ipynb", + "language_code": "ml" + } + }, + "cells": [ + { + "cell_type": "markdown", + "source": [ + "# ഒരു റെഗ്രഷൻ മോഡൽ നിർമ്മിക്കുക: R ഉം Tidymodels ഉം ഉപയോഗിച്ച് റെഗ്രഷൻ മോഡലുകൾ ആരംഭിക്കുക\n" + ], + "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", + "

@allison_horst രചിച്ച കലാസൃഷ്ടി
\n", + "\n", + "\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": [ + "## 2. ഡയബറ്റീസ് ഡാറ്റാസെറ്റ്\n", + "\n", + "ഈ അഭ്യാസത്തിൽ, ഡയബറ്റീസ് ഡാറ്റാസെറ്റിൽ പ്രവചനങ്ങൾ നടത്തിക്കാണിച്ച് നമ്മുടെ റെഗ്രഷൻ കഴിവുകൾ പ്രദർശിപ്പിക്കും. [ഡയബറ്റീസ് ഡാറ്റാസെറ്റ്](https://www4.stat.ncsu.edu/~boos/var.select/diabetes.rwrite1.txt) `442 സാമ്പിളുകൾ` ഉൾക്കൊള്ളുന്നു, 10 പ്രവചന ഫീച്ചർ വേരിയബിളുകളോടുകൂടി, `വയസ്സ്`, `ലിംഗം`, `ശരീര ഭാരം സൂചിക`, `ശരാശരി രക്തസമ്മർദ്ദം`, കൂടാതെ `ആറ് രക്ത സീറം അളവുകൾ` എന്നിവയും ഫലം വേരിയബിൾ ആയ `y`: അടിസ്ഥാന സമയത്തിന് ശേഷം ഒരു വർഷം രോഗ പുരോഗതിയുടെ അളവാണ്.\n", + "\n", + "|പരീക്ഷണങ്ങളുടെ എണ്ണം|442|\n", + "|----------------------|:---|\n", + "|പ്രവചനങ്ങളുടെ എണ്ണം|ആദ്യ 10 കോളങ്ങൾ സംഖ്യാത്മക പ്രവചനങ്ങൾ ആണ്|\n", + "|ഫലം/ലക്ഷ്യം|11-ാം കോളം അടിസ്ഥാന സമയത്തിന് ശേഷം ഒരു വർഷം രോഗ പുരോഗതിയുടെ സംഖ്യാത്മക അളവാണ്|\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", + "\n", + "\n", + "\n", + "> 🎓 ഓർക്കുക, ഇത് സൂപ്പർവൈസ്ഡ് ലേണിംഗ് ആണ്, നമുക്ക് 'y' എന്ന പേരുള്ള ലക്ഷ്യം വേണം.\n", + "\n", + "R ഉപയോഗിച്ച് ഡാറ്റ കൈകാര്യം ചെയ്യുന്നതിന് മുമ്പ്, ഡാറ്റ R-ന്റെ മെമ്മറിയിലേക്ക് ഇറക്കുകയോ, അല്ലെങ്കിൽ R ഡാറ്റയെ ദൂരസ്ഥമായി ആക്സസ് ചെയ്യാൻ ഉപയോഗിക്കാവുന്ന കണക്ഷൻ നിർമ്മിക്കുകയോ വേണം.\n", + "\n", + "> [readr](https://readr.tidyverse.org/) പാക്കേജ്, Tidyverse-ന്റെ ഭാഗമാണ്, R-ലേക്ക് വേഗത്തിലും സൗഹൃദപരവുമായ രീതിയിൽ ചതുരശ്ര ഡാറ്റ വായിക്കാൻ സഹായിക്കുന്നു.\n", + "\n", + "ഇപ്പോൾ, ഈ സ്രോതസ്സ് URL-ൽ നൽകിയ ഡയബറ്റീസ് ഡാറ്റാസെറ്റ് ലോഡ് ചെയ്യാം: \n", + "\n", + "കൂടാതെ, `glimpse()` ഉപയോഗിച്ച് നമ്മുടെ ഡാറ്റയുടെ സാനിറ്റി ചെക്ക് നടത്തുകയും `slice()` ഉപയോഗിച്ച് ആദ്യ 5 വരികൾ പ്രദർശിപ്പിക്കുകയും ചെയ്യും.\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()` നമ്മെ കാണിക്കുന്നു ഈ ഡാറ്റയിൽ 442 വരികളും 11 കോളങ്ങളുമുണ്ട്, എല്ലാ കോളങ്ങളും `double` ഡാറ്റാ ടൈപ്പിലുള്ളവയാണ്\n", + "\n", + "
\n", + "\n", + "\n", + "\n", + "> glimpse() ഉം slice() ഉം [`dplyr`](https://dplyr.tidyverse.org/) ലെ ഫംഗ്ഷനുകളാണ്. Tidyverse ന്റെ ഭാഗമായ Dplyr, ഡാറ്റ മാനിപ്പുലേഷന്റെ ഒരു വ്യാകരണം ആണ്, ഇത് സാധാരണ ഡാറ്റ മാനിപ്പുലേഷൻ പ്രശ്നങ്ങൾ പരിഹരിക്കാൻ സഹായിക്കുന്ന സ്ഥിരമായ ക്രിയാപദങ്ങളുടെ ഒരു സെറ്റ് നൽകുന്നു\n", + "\n", + "
\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": [ + "## 3. പരിശീലനവും പരിശോധനാ ഡാറ്റയും\n", + "\n", + "പരിശീലിത പഠനത്തിൽ ഡാറ്റയെ രണ്ട് ഉപസമൂഹങ്ങളായി *പിരിച്ചുവിടുക* എന്നത് സാധാരണ പ്രക്രിയയാണ്; മോഡൽ പരിശീലിപ്പിക്കാൻ ഉപയോഗിക്കുന്ന (സാധാരണയായി വലിയ) ഒരു സെറ്റ്, മോഡലിന്റെ പ്രകടനം കാണാൻ ഉപയോഗിക്കുന്ന ചെറിയ \"ഹോൾഡ്-ബാക്ക്\" സെറ്റ്.\n", + "\n", + "ഇപ്പോൾ ഡാറ്റ തയ്യാറായതിനാൽ, ഈ ഡാറ്റാസെറ്റിലെ സംഖ്യകളിൽ ലജിക്കൽ സ്പ്ലിറ്റ് നിർണ്ണയിക്കാൻ യന്ത്രം സഹായിക്കുമോ എന്ന് നോക്കാം. ഡാറ്റ പിരിക്കാൻ *എങ്ങനെ* എന്ന വിവരങ്ങൾ ഉൾക്കൊള്ളുന്ന ഒരു ഒബ്ജക്റ്റ് സൃഷ്ടിക്കാൻ, Tidymodels ഫ്രെയിംവർകിന്റെ ഭാഗമായ [rsample](https://tidymodels.github.io/rsample/) പാക്കേജ് ഉപയോഗിക്കാം, തുടർന്ന് സൃഷ്ടിച്ച പരിശീലനവും പരിശോധനാ സെറ്റുകളും എടുക്കാൻ രണ്ട് 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": [ + "ഒരു മോഡൽ *നിർവചിച്ചശേഷം*, മോഡൽ `estimated` അല്ലെങ്കിൽ `trained` ചെയ്യാൻ സാധിക്കും, സാധാരണയായി ഒരു ഫോർമുലയും ചില ഡാറ്റയും ഉപയോഗിച്ച് [`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": [ + "From the model output, we can see the coefficients learned during training. They represent the coefficients of the line of best fit that gives us the lowest overall error between the actual and predicted variable.\n", + "
\n", + "\n", + "## 5. Make predictions on the test set\n", + "\n", + "Now that we've trained a model, we can use it to predict the disease progression y for the test dataset using [parsnip::predict()](https://parsnip.tidymodels.org/reference/predict.model_fit.html). This will be used to draw the line between data groups.\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 പരമ്പരാഗതം എപ്പോഴും ഫലങ്ങളുടെ ഒരു ടിബിൾ/ഡാറ്റാ ഫ്രെയിം സ്റ്റാൻഡർഡൈസ്ഡ് കോളം പേരുകളോടെ ഉത്പാദിപ്പിക്കുകയാണ്. ഇത് മിക്കവാറും plotting പോലുള്ള തുടര്‍ന്നുള്ള പ്രവർത്തനങ്ങൾക്ക് ഉപയോഗയോഗ്യമായ ഫോർമാറ്റിൽ യഥാർത്ഥ ഡാറ്റയും പ്രവചനങ്ങളും സംയോജിപ്പിക്കാൻ എളുപ്പമാക്കുന്നു.\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\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/ml/2-Regression/1-Tools/solution/notebook.ipynb b/translations/ml/2-Regression/1-Tools/solution/notebook.ipynb new file mode 100644 index 000000000..e897aa460 --- /dev/null +++ b/translations/ml/2-Regression/1-Tools/solution/notebook.ipynb @@ -0,0 +1,677 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## ഡയബറ്റീസ് ഡാറ്റാസെറ്റിനുള്ള ലീനിയർ റെഗ്രഷൻ - പാഠം 1\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ആവശ്യമായ ലൈബ്രറികൾ ഇറക്കുമതി ചെയ്യുക\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from sklearn import datasets, linear_model, model_selection\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ഡയബറ്റീസ് ഡാറ്റാസെറ്റ് ലോഡ് ചെയ്യുക, `X` ഡാറ്റയും `y` ഫീച്ചറുകളും ആയി വിഭജിച്ചിരിക്കുന്നു.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(442, 10)\n", + "[ 0.03807591 0.05068012 0.06169621 0.02187239 -0.0442235 -0.03482076\n", + " -0.04340085 -0.00259226 0.01990749 -0.01764613]\n" + ] + } + ], + "source": [ + "X, y = datasets.load_diabetes(return_X_y=True)\n", + "print(X.shape)\n", + "print(X[0])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ഈ വ്യായാമത്തിന് ലക്ഷ്യമിടാൻ ഒരു സവിശേഷത മാത്രം തിരഞ്ഞെടുക്കുക\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(442,)\n" + ] + } + ], + "source": [ + "# Selecting the 3rd feature\n", + "X = X[:, 2]\n", + "print(X.shape)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(442, 1)\n", + "[[ 0.06169621]\n", + " [-0.05147406]\n", + " [ 0.04445121]\n", + " [-0.01159501]\n", + " [-0.03638469]\n", + " [-0.04069594]\n", + " [-0.04716281]\n", + " [-0.00189471]\n", + " [ 0.06169621]\n", + " [ 0.03906215]\n", + " [-0.08380842]\n", + " [ 0.01750591]\n", + " [-0.02884001]\n", + " [-0.00189471]\n", + " [-0.02560657]\n", + " [-0.01806189]\n", + " [ 0.04229559]\n", + " [ 0.01211685]\n", + " [-0.0105172 ]\n", + " [-0.01806189]\n", + " [-0.05686312]\n", + " [-0.02237314]\n", + " [-0.00405033]\n", + " [ 0.06061839]\n", + " [ 0.03582872]\n", + " [-0.01267283]\n", + " [-0.07734155]\n", + " [ 0.05954058]\n", + " [-0.02129532]\n", + " [-0.00620595]\n", + " [ 0.04445121]\n", + " [-0.06548562]\n", + " [ 0.12528712]\n", + " [-0.05039625]\n", + " [-0.06332999]\n", + " [-0.03099563]\n", + " [ 0.02289497]\n", + " [ 0.01103904]\n", + " [ 0.07139652]\n", + " [ 0.01427248]\n", + " [-0.00836158]\n", + " [-0.06764124]\n", + " [-0.0105172 ]\n", + " [-0.02345095]\n", + " [ 0.06816308]\n", + " [-0.03530688]\n", + " [-0.01159501]\n", + " [-0.0730303 ]\n", + " [-0.04177375]\n", + " [ 0.01427248]\n", + " [-0.00728377]\n", + " [ 0.0164281 ]\n", + " [-0.00943939]\n", + " [-0.01590626]\n", + " [ 0.0250506 ]\n", + " [-0.04931844]\n", + " [ 0.04121778]\n", + " [-0.06332999]\n", + " [-0.06440781]\n", + " [-0.02560657]\n", + " [-0.00405033]\n", + " [ 0.00457217]\n", + " [-0.00728377]\n", + " [-0.0374625 ]\n", + " [-0.02560657]\n", + " [-0.02452876]\n", + " [-0.01806189]\n", + " [-0.01482845]\n", + " [-0.02991782]\n", + " [-0.046085 ]\n", + " [-0.06979687]\n", + " [ 0.03367309]\n", + " [-0.00405033]\n", + " [-0.02021751]\n", + " [ 0.00241654]\n", + " [-0.03099563]\n", + " [ 0.02828403]\n", + " [-0.03638469]\n", + " [-0.05794093]\n", + " [-0.0374625 ]\n", + " [ 0.01211685]\n", + " [-0.02237314]\n", + " [-0.03530688]\n", + " [ 0.00996123]\n", + " [-0.03961813]\n", + " [ 0.07139652]\n", + " [-0.07518593]\n", + " [-0.00620595]\n", + " [-0.04069594]\n", + " [-0.04824063]\n", + " [-0.02560657]\n", + " [ 0.0519959 ]\n", + " [ 0.00457217]\n", + " [-0.06440781]\n", + " [-0.01698407]\n", + " [-0.05794093]\n", + " [ 0.00996123]\n", + " [ 0.08864151]\n", + " [-0.00512814]\n", + " [-0.06440781]\n", + " [ 0.01750591]\n", + " [-0.04500719]\n", + " [ 0.02828403]\n", + " [ 0.04121778]\n", + " [ 0.06492964]\n", + " [-0.03207344]\n", + " [-0.07626374]\n", + " [ 0.04984027]\n", + " [ 0.04552903]\n", + " [-0.00943939]\n", + " [-0.03207344]\n", + " [ 0.00457217]\n", + " [ 0.02073935]\n", + " [ 0.01427248]\n", + " [ 0.11019775]\n", + " [ 0.00133873]\n", + " [ 0.05846277]\n", + " [-0.02129532]\n", + " [-0.0105172 ]\n", + " [-0.04716281]\n", + " [ 0.00457217]\n", + " [ 0.01750591]\n", + " [ 0.08109682]\n", + " [ 0.0347509 ]\n", + " [ 0.02397278]\n", + " [-0.00836158]\n", + " [-0.06117437]\n", + " [-0.00189471]\n", + " [-0.06225218]\n", + " [ 0.0164281 ]\n", + " [ 0.09618619]\n", + " [-0.06979687]\n", + " [-0.02129532]\n", + " [-0.05362969]\n", + " [ 0.0433734 ]\n", + " [ 0.05630715]\n", + " [-0.0816528 ]\n", + " [ 0.04984027]\n", + " [ 0.11127556]\n", + " [ 0.06169621]\n", + " [ 0.01427248]\n", + " [ 0.04768465]\n", + " [ 0.01211685]\n", + " [ 0.00564998]\n", + " [ 0.04660684]\n", + " [ 0.12852056]\n", + " [ 0.05954058]\n", + " [ 0.09295276]\n", + " [ 0.01535029]\n", + " [-0.00512814]\n", + " [ 0.0703187 ]\n", + " [-0.00405033]\n", + " [-0.00081689]\n", + " [-0.04392938]\n", + " [ 0.02073935]\n", + " [ 0.06061839]\n", + " [-0.0105172 ]\n", + " [-0.03315126]\n", + " [-0.06548562]\n", + " [ 0.0433734 ]\n", + " [-0.06225218]\n", + " [ 0.06385183]\n", + " [ 0.03043966]\n", + " [ 0.07247433]\n", + " [-0.0191397 ]\n", + " [-0.06656343]\n", + " [-0.06009656]\n", + " [ 0.06924089]\n", + " [ 0.05954058]\n", + " [-0.02668438]\n", + " [-0.02021751]\n", + " [-0.046085 ]\n", + " [ 0.07139652]\n", + " [-0.07949718]\n", + " [ 0.00996123]\n", + " [-0.03854032]\n", + " [ 0.01966154]\n", + " [ 0.02720622]\n", + " [-0.00836158]\n", + " [-0.01590626]\n", + " [ 0.00457217]\n", + " [-0.04285156]\n", + " [ 0.00564998]\n", + " [-0.03530688]\n", + " [ 0.02397278]\n", + " [-0.01806189]\n", + " [ 0.04229559]\n", + " [-0.0547075 ]\n", + " [-0.00297252]\n", + " [-0.06656343]\n", + " [-0.01267283]\n", + " [-0.04177375]\n", + " [-0.03099563]\n", + " [-0.00512814]\n", + " [-0.05901875]\n", + " [ 0.0250506 ]\n", + " [-0.046085 ]\n", + " [ 0.00349435]\n", + " [ 0.05415152]\n", + " [-0.04500719]\n", + " [-0.05794093]\n", + " [-0.05578531]\n", + " [ 0.00133873]\n", + " [ 0.03043966]\n", + " [ 0.00672779]\n", + " [ 0.04660684]\n", + " [ 0.02612841]\n", + " [ 0.04552903]\n", + " [ 0.04013997]\n", + " [-0.01806189]\n", + " [ 0.01427248]\n", + " [ 0.03690653]\n", + " [ 0.00349435]\n", + " [-0.07087468]\n", + " [-0.03315126]\n", + " [ 0.09403057]\n", + " [ 0.03582872]\n", + " [ 0.03151747]\n", + " [-0.06548562]\n", + " [-0.04177375]\n", + " [-0.03961813]\n", + " [-0.03854032]\n", + " [-0.02560657]\n", + " [-0.02345095]\n", + " [-0.06656343]\n", + " [ 0.03259528]\n", + " [-0.046085 ]\n", + " [-0.02991782]\n", + " [-0.01267283]\n", + " [-0.01590626]\n", + " [ 0.07139652]\n", + " [-0.03099563]\n", + " [ 0.00026092]\n", + " [ 0.03690653]\n", + " [ 0.03906215]\n", + " [-0.01482845]\n", + " [ 0.00672779]\n", + " [-0.06871905]\n", + " [-0.00943939]\n", + " [ 0.01966154]\n", + " [ 0.07462995]\n", + " [-0.00836158]\n", + " [-0.02345095]\n", + " [-0.046085 ]\n", + " [ 0.05415152]\n", + " [-0.03530688]\n", + " [-0.03207344]\n", + " [-0.0816528 ]\n", + " [ 0.04768465]\n", + " [ 0.06061839]\n", + " [ 0.05630715]\n", + " [ 0.09834182]\n", + " [ 0.05954058]\n", + " [ 0.03367309]\n", + " [ 0.05630715]\n", + " [-0.06548562]\n", + " [ 0.16085492]\n", + " [-0.05578531]\n", + " [-0.02452876]\n", + " [-0.03638469]\n", + " [-0.00836158]\n", + " [-0.04177375]\n", + " [ 0.12744274]\n", + " [-0.07734155]\n", + " [ 0.02828403]\n", + " [-0.02560657]\n", + " [-0.06225218]\n", + " [-0.00081689]\n", + " [ 0.08864151]\n", + " [-0.03207344]\n", + " [ 0.03043966]\n", + " [ 0.00888341]\n", + " [ 0.00672779]\n", + " [-0.02021751]\n", + " [-0.02452876]\n", + " [-0.01159501]\n", + " [ 0.02612841]\n", + " [-0.05901875]\n", + " [-0.03638469]\n", + " [-0.02452876]\n", + " [ 0.01858372]\n", + " [-0.0902753 ]\n", + " [-0.00512814]\n", + " [-0.05255187]\n", + " [-0.02237314]\n", + " [-0.02021751]\n", + " [-0.0547075 ]\n", + " [-0.00620595]\n", + " [-0.01698407]\n", + " [ 0.05522933]\n", + " [ 0.07678558]\n", + " [ 0.01858372]\n", + " [-0.02237314]\n", + " [ 0.09295276]\n", + " [-0.03099563]\n", + " [ 0.03906215]\n", + " [-0.06117437]\n", + " [-0.00836158]\n", + " [-0.0374625 ]\n", + " [-0.01375064]\n", + " [ 0.07355214]\n", + " [-0.02452876]\n", + " [ 0.03367309]\n", + " [ 0.0347509 ]\n", + " [-0.03854032]\n", + " [-0.03961813]\n", + " [-0.00189471]\n", + " [-0.03099563]\n", + " [-0.046085 ]\n", + " [ 0.00133873]\n", + " [ 0.06492964]\n", + " [ 0.04013997]\n", + " [-0.02345095]\n", + " [ 0.05307371]\n", + " [ 0.04013997]\n", + " [-0.02021751]\n", + " [ 0.01427248]\n", + " [-0.03422907]\n", + " [ 0.00672779]\n", + " [ 0.00457217]\n", + " [ 0.03043966]\n", + " [ 0.0519959 ]\n", + " [ 0.06169621]\n", + " [-0.00728377]\n", + " [ 0.00564998]\n", + " [ 0.05415152]\n", + " [-0.00836158]\n", + " [ 0.114509 ]\n", + " [ 0.06708527]\n", + " [-0.05578531]\n", + " [ 0.03043966]\n", + " [-0.02560657]\n", + " [ 0.10480869]\n", + " [-0.00620595]\n", + " [-0.04716281]\n", + " [-0.04824063]\n", + " [ 0.08540807]\n", + " [-0.01267283]\n", + " [-0.03315126]\n", + " [-0.00728377]\n", + " [-0.01375064]\n", + " [ 0.05954058]\n", + " [ 0.02181716]\n", + " [ 0.01858372]\n", + " [-0.01159501]\n", + " [-0.00297252]\n", + " [ 0.01750591]\n", + " [-0.02991782]\n", + " [-0.02021751]\n", + " [-0.05794093]\n", + " [ 0.06061839]\n", + " [-0.04069594]\n", + " [-0.07195249]\n", + " [-0.05578531]\n", + " [ 0.04552903]\n", + " [-0.00943939]\n", + " [-0.03315126]\n", + " [ 0.04984027]\n", + " [-0.08488624]\n", + " [ 0.00564998]\n", + " [ 0.02073935]\n", + " [-0.00728377]\n", + " [ 0.10480869]\n", + " [-0.02452876]\n", + " [-0.00620595]\n", + " [-0.03854032]\n", + " [ 0.13714305]\n", + " [ 0.17055523]\n", + " [ 0.00241654]\n", + " [ 0.03798434]\n", + " [-0.05794093]\n", + " [-0.00943939]\n", + " [-0.02345095]\n", + " [-0.0105172 ]\n", + " [-0.03422907]\n", + " [-0.00297252]\n", + " [ 0.06816308]\n", + " [ 0.00996123]\n", + " [ 0.00241654]\n", + " [-0.03854032]\n", + " [ 0.02612841]\n", + " [-0.08919748]\n", + " [ 0.06061839]\n", + " [-0.02884001]\n", + " [-0.02991782]\n", + " [-0.0191397 ]\n", + " [-0.04069594]\n", + " [ 0.01535029]\n", + " [-0.02452876]\n", + " [ 0.00133873]\n", + " [ 0.06924089]\n", + " [-0.06979687]\n", + " [-0.02991782]\n", + " [-0.046085 ]\n", + " [ 0.01858372]\n", + " [ 0.00133873]\n", + " [-0.03099563]\n", + " [-0.00405033]\n", + " [ 0.01535029]\n", + " [ 0.02289497]\n", + " [ 0.04552903]\n", + " [-0.04500719]\n", + " [-0.03315126]\n", + " [ 0.097264 ]\n", + " [ 0.05415152]\n", + " [ 0.12313149]\n", + " [-0.08057499]\n", + " [ 0.09295276]\n", + " [-0.05039625]\n", + " [-0.01159501]\n", + " [-0.0277622 ]\n", + " [ 0.05846277]\n", + " [ 0.08540807]\n", + " [-0.00081689]\n", + " [ 0.00672779]\n", + " [ 0.00888341]\n", + " [ 0.08001901]\n", + " [ 0.07139652]\n", + " [-0.02452876]\n", + " [-0.0547075 ]\n", + " [-0.03638469]\n", + " [ 0.0164281 ]\n", + " [ 0.07786339]\n", + " [-0.03961813]\n", + " [ 0.01103904]\n", + " [-0.04069594]\n", + " [-0.03422907]\n", + " [ 0.00564998]\n", + " [ 0.08864151]\n", + " [-0.03315126]\n", + " [-0.05686312]\n", + " [-0.03099563]\n", + " [ 0.05522933]\n", + " [-0.06009656]\n", + " [ 0.00133873]\n", + " [-0.02345095]\n", + " [-0.07410811]\n", + " [ 0.01966154]\n", + " [-0.01590626]\n", + " [-0.01590626]\n", + " [ 0.03906215]\n", + " [-0.0730303 ]]\n" + ] + } + ], + "source": [ + "#Reshaping to get a 2D array\n", + "X = X.reshape(-1, 1)\n", + "print(X.shape)\n", + "print(X)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`X`ക്കും `y`ക്കും പരിശീലനവും പരിശോധനാ ഡാറ്റയും വിഭജിക്കുക.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "മോഡൽ തിരഞ്ഞെടുക്കുക ಮತ್ತು അത് പരിശീലന ഡാറ്റയുമായി ഫിറ്റ് ചെയ്യുക\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
LinearRegression()
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" + ], + "text/plain": [ + "LinearRegression()" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model = linear_model.LinearRegression()\n", + "model.fit(X_train, y_train)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ഒരു വരി പ്രവചിക്കാൻ ടെസ്റ്റ് ഡാറ്റ ഉപയോഗിക്കുക\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "y_pred = model.predict(X_test)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ഫലങ്ങൾ ഒരു പ്ലോട്ടിൽ പ്രദർശിപ്പിക്കുക\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAigAAAGdCAYAAAA44ojeAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAABbmUlEQVR4nO3de3wU1f0//tcQIHIxiQmBALsQUdSigNYLxn6iSaECaj/5NKTawAfRWi2IbUBRS71gtIrKp5rUj5dqK7ZfXfwAWcVS8ALuYtCIQEERvAC/cAtJoCBJQAhkc35/rLtmk92dmd2Z2ZnZ1/Px2Edl92Tm7CTd894z7/M+khBCgIiIiMhEuiW6A0RERESdMUAhIiIi02GAQkRERKbDAIWIiIhMhwEKERERmQ4DFCIiIjIdBihERERkOgxQiIiIyHS6J7oDsWhvb8f+/ftx+umnQ5KkRHeHiIiIFBBCoKWlBYMGDUK3btHnSCwZoOzfvx9OpzPR3SAiIqIY7N27Fw6HI2obSwYop59+OgD/G0xLS0twb4iIiEiJ5uZmOJ3O4DgejSUDlMBtnbS0NAYoREREFqMkPYNJskRERGQ6DFCIiIjIdBigEBERkekwQCEiIiLTYYBCREREpqMqQHn++ecxatSo4OqZvLw8rFy5Mvh6QUEBJEkKeUyfPj3kGHv27MG1116L3r17o3///rj77rvR1tamzbshIiIiW1C1zNjhcODxxx/H8OHDIYTA3/72NxQVFWHTpk04//zzAQC33norHn744eDP9O7dO/jfPp8P1157LXJycvDRRx+hvr4eN954I3r06IHHHntMo7dEREREVicJIUQ8B8jMzMSCBQtwyy23oKCgABdeeCEqKirCtl25ciWuu+467N+/HwMGDAAAvPDCC7j33ntx8OBB9OzZU9E5m5ubkZ6ejqamJtZBISIisgg143fMOSg+nw+vv/46jh07hry8vODzr732Gvr164cLLrgAc+fOxbfffht8raamBiNHjgwGJwAwfvx4NDc3Y+vWrRHP1draiubm5pAHERERac/n88Hr9WLRokXwer3w+XwJ6YfqSrJbtmxBXl4eTpw4gb59++KNN97AiBEjAACTJ0/G0KFDMWjQIHz22We499578dVXX8HtdgMAGhoaQoITAMF/NzQ0RDzn/PnzUV5errarREREpILb7UZZWRn2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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(X_test, y_test, color='black')\n", + "plt.plot(X_test, y_pred, color='blue', linewidth=3)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**അസൂയാ**: \nഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനത്തിന്റെ ഉപയോഗത്തിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല.\n\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.1" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "orig_nbformat": 2, + "coopTranslator": { + "original_hash": "16ff1a974f6e4348e869e4a7d366b86a", + "translation_date": "2025-12-19T16:28:16+00:00", + "source_file": "2-Regression/1-Tools/solution/notebook.ipynb", + "language_code": "ml" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/translations/ml/2-Regression/2-Data/README.md b/translations/ml/2-Regression/2-Data/README.md new file mode 100644 index 000000000..fc604492f --- /dev/null +++ b/translations/ml/2-Regression/2-Data/README.md @@ -0,0 +1,228 @@ + +# Scikit-learn ഉപയോഗിച്ച് ഒരു റെഗ്രഷൻ മോഡൽ നിർമ്മിക്കുക: ഡാറ്റ തയ്യാറാക്കൽ மற்றும் ദൃശ്യവൽക്കരണം + +![ഡാറ്റ ദൃശ്യവൽക്കരണ ഇൻഫോഗ്രാഫിക്](../../../../translated_images/data-visualization.54e56dded7c1a804d00d027543f2881cb32da73aeadda2d4a4f10f3497526114.ml.png) + +ഇൻഫോഗ്രാഫിക് [ദസാനി മടിപള്ളി](https://twitter.com/dasani_decoded) tarafından + +## [പ്രീ-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +> ### [ഈ പാഠം R-ൽ ലഭ്യമാണ്!](../../../../2-Regression/2-Data/solution/R/lesson_2.html) + +## പരിചയം + +Scikit-learn ഉപയോഗിച്ച് മെഷീൻ ലേണിംഗ് മോഡൽ നിർമ്മാണം ആരംഭിക്കാൻ ആവശ്യമായ ഉപകരണങ്ങൾ നിങ്ങൾക്കുണ്ടായതിനുശേഷം, നിങ്ങളുടെ ഡാറ്റയെക്കുറിച്ച് ചോദ്യങ്ങൾ ചോദിക്കാൻ നിങ്ങൾ തയ്യാറാണ്. ഡാറ്റയുമായി പ്രവർത്തിക്കുമ്പോഴും ML പരിഹാരങ്ങൾ പ്രയോഗിക്കുമ്പോഴും, നിങ്ങളുടെ ഡാറ്റാസെറ്റിന്റെ സാധ്യതകൾ ശരിയായി തുറക്കാൻ ശരിയായ ചോദ്യങ്ങൾ ചോദിക്കുന്നതിന്റെ പ്രാധാന്യം വളരെ കൂടുതലാണ്. + +ഈ പാഠത്തിൽ, നിങ്ങൾ പഠിക്കും: + +- മോഡൽ നിർമ്മാണത്തിനായി നിങ്ങളുടെ ഡാറ്റ എങ്ങനെ തയ്യാറാക്കാം. +- ഡാറ്റ ദൃശ്യവൽക്കരണത്തിന് Matplotlib എങ്ങനെ ഉപയോഗിക്കാം. + +## നിങ്ങളുടെ ഡാറ്റയിൽ നിന്ന് ശരിയായ ചോദ്യങ്ങൾ ചോദിക്കുക + +നിങ്ങൾക്ക് ഉത്തരം വേണമെന്ന ചോദ്യമാണ് നിങ്ങൾ ഉപയോഗിക്കേണ്ട ML ആൽഗോരിതങ്ങൾ നിർണ്ണയിക്കുന്നത്. നിങ്ങൾക്ക് ലഭിക്കുന്ന ഉത്തരം ലഭിക്കുന്നതിന്റെ ഗുണമേന്മ ഡാറ്റയുടെ സ്വഭാവത്തെ ആശ്രയിച്ചിരിക്കും. + +ഈ പാഠത്തിനായി നൽകിയ [ഡാറ്റ](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) നോക്കുക. ഈ .csv ഫയൽ VS Code-ൽ തുറക്കാം. ഒരു വേഗത്തിലുള്ള നിരീക്ഷണം കാണിക്കുന്നു, ചില സ്ഥലങ്ങളിൽ ശൂന്യങ്ങൾ ഉണ്ട്, സ്ട്രിംഗുകളും സംഖ്യകളും മിശ്രിതമാണ്. 'Package' എന്ന ഒരു അസാധാരണ കോളം ഉണ്ട്, അതിൽ 'sacks', 'bins' എന്നിവയും മറ്റ് മൂല്യങ്ങളും മിശ്രിതമാണ്. ഡാറ്റ യഥാർത്ഥത്തിൽ അല്പം കലക്കമാണ്. + +[![ML for beginners - How to Analyze and Clean a Dataset](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML for beginners - How to Analyze and Clean a Dataset") + +> 🎥 ഈ പാഠത്തിനായി ഡാറ്റ തയ്യാറാക്കുന്നതിനെക്കുറിച്ച് ഒരു ചെറിയ വീഡിയോ കാണാൻ മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക. + +യഥാർത്ഥത്തിൽ, ഒരു ML മോഡൽ സൃഷ്ടിക്കാൻ പൂർണ്ണമായും ഉപയോഗിക്കാൻ തയ്യാറായ ഒരു ഡാറ്റാസെറ്റ് ലഭിക്കുന്നത് സാധാരണമല്ല. ഈ പാഠത്തിൽ, നിങ്ങൾ സ്റ്റാൻഡേർഡ് Python ലൈബ്രറികൾ ഉപയോഗിച്ച് ഒരു റോ ഡാറ്റാസെറ്റ് എങ്ങനെ തയ്യാറാക്കാമെന്ന് പഠിക്കും. കൂടാതെ, ഡാറ്റ ദൃശ്യവൽക്കരിക്കാൻ വിവിധ സാങ്കേതിക വിദ്യകളും പഠിക്കും. + +## കേസ് സ്റ്റഡി: 'പംപ്കിൻ മാർക്കറ്റ്' + +ഈ ഫോൾഡറിൽ, റൂട്ട് `data` ഫോൾഡറിൽ [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) എന്ന .csv ഫയൽ കാണാം, ഇത് 1757 വരികളുള്ള പംപ്കിൻ മാർക്കറ്റിനെക്കുറിച്ചുള്ള ഡാറ്റ ഉൾക്കൊള്ളുന്നു, നഗരങ്ങളായി ഗ്രൂപ്പുചെയ്തിരിക്കുന്നു. ഇത് യുണൈറ്റഡ് സ്റ്റേറ്റ്സ് ഡിപ്പാർട്ട്മെന്റ് ഓഫ് അഗ്രിക്കൾച്ചർ വിതരണം ചെയ്യുന്ന [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) നിന്നുള്ള റോ ഡാറ്റയാണ്. + +### ഡാറ്റ തയ്യാറാക്കൽ + +ഈ ഡാറ്റ പബ്ലിക് ഡൊമെയ്‌നിലാണ്. ഇത് USDA വെബ്‌സൈറ്റിൽ നിന്ന് ഓരോ നഗരത്തിനും വേർതിരിച്ച ഫയലുകളായി ഡൗൺലോഡ് ചെയ്യാം. വളരെ അധികം വേർതിരിച്ച ഫയലുകൾ ഒഴിവാക്കാൻ, എല്ലാ നഗര ഡാറ്റയും ഒരു സ്പ്രെഡ്‌ഷീറ്റിൽ ചേർത്തിട്ടുണ്ട്, അതിനാൽ ഡാറ്റ കുറച്ച് _തയ്യാറാക്കിയതാണ്_. ഇനി, ഡാറ്റയെ കൂടുതൽ നന്നായി പരിശോധിക്കാം. + +### പംപ്കിൻ ഡാറ്റ - പ്രാഥമിക നിഗമനങ്ങൾ + +ഈ ഡാറ്റയിൽ നിങ്ങൾ എന്ത് ശ്രദ്ധിക്കുന്നു? നിങ്ങൾ ഇതിനകം കണ്ടിട്ടുണ്ട്, സ്ട്രിംഗുകളും സംഖ്യകളും, ശൂന്യങ്ങളും, അസാധാരണ മൂല്യങ്ങളും മിശ്രിതമാണ്. + +Regression സാങ്കേതിക വിദ്യ ഉപയോഗിച്ച് ഈ ഡാറ്റയിൽ നിങ്ങൾ എന്ത് ചോദ്യങ്ങൾ ചോദിക്കാം? "നൽകിയ മാസത്തിൽ വിൽപ്പനയ്ക്കുള്ള പംപ്കിന്റെ വില പ്രവചിക്കുക" എന്നത് എങ്ങനെയാണ്? ഡാറ്റ വീണ്ടും നോക്കുമ്പോൾ, ഈ ടാസ്കിനായി ആവശ്യമായ ഡാറ്റ ഘടന സൃഷ്ടിക്കാൻ ചില മാറ്റങ്ങൾ ചെയ്യേണ്ടതുണ്ട്. + +## അഭ്യാസം - പംപ്കിൻ ഡാറ്റ വിശകലനം ചെയ്യുക + +ഡാറ്റ രൂപപ്പെടുത്താനും വിശകലനം ചെയ്യാനും വളരെ ഉപകാരപ്രദമായ ഒരു ഉപകരണം ആയ [Pandas](https://pandas.pydata.org/) (Python Data Analysis എന്നതിന് ചുരുക്കം) ഉപയോഗിക്കാം. + +### ആദ്യം, നഷ്ടപ്പെട്ട തീയതികൾ പരിശോധിക്കുക + +നഷ്ടപ്പെട്ട തീയതികൾ പരിശോധിക്കാൻ നിങ്ങൾ ആദ്യം ചില നടപടികൾ സ്വീകരിക്കണം: + +1. തീയതികളെ മാസ ഫോർമാറ്റിലേക്ക് മാറ്റുക (ഇവ US തീയതികളാണ്, അതിനാൽ ഫോർമാറ്റ് `MM/DD/YYYY` ആണ്). +2. മാസത്തെ പുതിയ ഒരു കോളമായി എടുക്കുക. + +Visual Studio Code-ൽ _notebook.ipynb_ ഫയൽ തുറന്ന് സ്പ്രെഡ്‌ഷീറ്റ് പുതിയ Pandas ഡാറ്റാഫ്രെയിമിലേക്ക് ഇറക്കുമതി ചെയ്യുക. + +1. ആദ്യ അഞ്ചു വരികൾ കാണാൻ `head()` ഫംഗ്ഷൻ ഉപയോഗിക്കുക. + + ```python + import pandas as pd + pumpkins = pd.read_csv('../data/US-pumpkins.csv') + pumpkins.head() + ``` + + ✅ അവസാന അഞ്ചു വരികൾ കാണാൻ നിങ്ങൾ ഏത് ഫംഗ്ഷൻ ഉപയോഗിക്കും? + +1. നിലവിലുള്ള ഡാറ്റാഫ്രെയിമിൽ നഷ്ടപ്പെട്ട ഡാറ്റയുണ്ടോ എന്ന് പരിശോധിക്കുക: + + ```python + pumpkins.isnull().sum() + ``` + + നഷ്ടപ്പെട്ട ഡാറ്റയുണ്ട്, പക്ഷേ ഈ ടാസ്കിനായി അത് പ്രശ്നമാകില്ല. + +1. നിങ്ങളുടെ ഡാറ്റാഫ്രെയിമിൽ പ്രവർത്തിക്കാൻ എളുപ്പമാക്കാൻ, നിങ്ങൾക്ക് ആവശ്യമായ കോളങ്ങൾ മാത്രം `loc` ഫംഗ്ഷൻ ഉപയോഗിച്ച് തിരഞ്ഞെടുക്കുക, ഇത് ആദ്യ പാരാമീറ്ററായി പാസ്സാക്കിയ വരികളും രണ്ടാം പാരാമീറ്ററായി പാസ്സാക്കിയ കോളങ്ങളും ഒറിജിനൽ ഡാറ്റാഫ്രെയിമിൽ നിന്ന് എടുക്കുന്നു. താഴെ കാണുന്ന `:` എന്നത് "എല്ലാ വരികളും" എന്നർത്ഥം. + + ```python + columns_to_select = ['Package', 'Low Price', 'High Price', 'Date'] + pumpkins = pumpkins.loc[:, columns_to_select] + ``` + +### രണ്ടാംത്, പംപ്കിന്റെ ശരാശരി വില നിർണ്ണയിക്കുക + +നൽകിയ മാസത്തിൽ പംപ്കിന്റെ ശരാശരി വില എങ്ങനെ നിർണ്ണയിക്കാമെന്ന് ചിന്തിക്കുക. ഈ ടാസ്കിനായി നിങ്ങൾ ഏത് കോളങ്ങൾ തിരഞ്ഞെടുക്കും? സൂചന: 3 കോളങ്ങൾ ആവശ്യമാണ്. + +പരിഹാരം: `Low Price` ഉം `High Price` ഉം കോളങ്ങൾ ശരാശരി എടുത്ത് പുതിയ Price കോളം പൂരിപ്പിക്കുക, Date കോളം മാസമാത്രം കാണിക്കുന്ന വിധം മാറ്റുക. ഭാഗ്യവശാൽ, മുകളിൽ നടത്തിയ പരിശോധന പ്രകാരം, തീയതികൾക്കും വിലകൾക്കും നഷ്ടപ്പെട്ട ഡാറ്റ ഇല്ല. + +1. ശരാശരി കണക്കാക്കാൻ താഴെ കൊടുത്ത കോഡ് ചേർക്കുക: + + ```python + price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2 + + month = pd.DatetimeIndex(pumpkins['Date']).month + + ``` + + ✅ `print(month)` ഉപയോഗിച്ച് നിങ്ങൾക്ക് പരിശോധിക്കാൻ ആഗ്രഹിക്കുന്ന ഡാറ്റ പ്രിന്റ് ചെയ്യാം. + +2. ഇപ്പോൾ, നിങ്ങളുടെ മാറ്റിയ ഡാറ്റ പുതിയ Pandas ഡാറ്റാഫ്രെയിമിലേക്ക് പകർത്തുക: + + ```python + new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price}) + ``` + + നിങ്ങളുടെ ഡാറ്റാഫ്രെയിം പ്രിന്റ് ചെയ്താൽ നിങ്ങൾക്ക് ഒരു ശുചിത്വമുള്ള, ക്രമീകരിച്ച ഡാറ്റാസെറ്റ് കാണാം, ഇതിൽ നിങ്ങൾ പുതിയ റെഗ്രഷൻ മോഡൽ നിർമ്മിക്കാം. + +### പക്ഷേ കാത്തിരിക്കുക! ഇവിടെ ഒരു അസാധാരണതയുണ്ട് + +`Package` കോളം നോക്കിയാൽ, പംപ്കിനുകൾ പലവിധ കോൺഫിഗറേഷനുകളിൽ വിൽക്കുന്നു. ചിലത് '1 1/9 ബുഷെൽ' അളവിൽ, ചിലത് '1/2 ബുഷെൽ' അളവിൽ, ചിലത് ഓരോ പംപ്കിനായി, ചിലത് പൗണ്ടിന്, ചിലത് വ്യത്യസ്ത വീതികളുള്ള വലിയ ബോക്സുകളിൽ. + +> പംപ്കിനുകൾ സ്ഥിരമായി തൂക്കാൻ വളരെ ബുദ്ധിമുട്ടാണ് + +ഓറിജിനൽ ഡാറ്റയിൽ നോക്കുമ്പോൾ, `Unit of Sale` 'EACH' അല്ലെങ്കിൽ 'PER BIN' ആയവയ്ക്ക് `Package` തരം ഇഞ്ച്, ബിൻ, അല്ലെങ്കിൽ 'each' ആണ്. പംപ്കിനുകൾ സ്ഥിരമായി തൂക്കാൻ ബുദ്ധിമുട്ടാണ്, അതിനാൽ `Package` കോളത്തിൽ 'bushel' എന്ന സ്ട്രിംഗ് ഉള്ള പംപ്കിനുകൾ മാത്രം തിരഞ്ഞെടുക്കാം. + +1. ഫയലിന്റെ മുകളിൽ, ആദ്യ .csv ഇറക്കുമതിക്ക് താഴെ ഒരു ഫിൽട്ടർ ചേർക്കുക: + + ```python + pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)] + ``` + + ഇപ്പോൾ ഡാറ്റ പ്രിന്റ് ചെയ്താൽ, ബുഷെൽ പ്രകാരം പംപ്കിനുകൾ ഉള്ള ഏകദേശം 415 വരികൾ മാത്രം കാണാം. + +### പക്ഷേ കാത്തിരിക്കുക! മറ്റൊരു കാര്യവും ചെയ്യണം + +ബുഷെൽ അളവ് ഓരോ വരിയിലും വ്യത്യസ്തമാണെന്ന് ശ്രദ്ധിച്ചോ? വില ബുഷെൽപ്രകാരം സാധാരണവത്കരിക്കണം, അതിനാൽ ചില ഗണിതം ചെയ്യണം. + +1. പുതിയ_pumpkins ഡാറ്റാഫ്രെയിം സൃഷ്ടിക്കുന്ന ബ്ലോക്കിന് ശേഷം ഈ വരികൾ ചേർക്കുക: + + ```python + new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9) + + new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2) + ``` + +✅ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) പ്രകാരം, ബുഷെലിന്റെ ഭാരം ഉത്പന്നത്തിന്റെ തരം അനുസരിച്ച് വ്യത്യാസപ്പെടുന്നു, കാരണം ഇത് വോളിയം അളവാണ്. "ഉദാഹരണത്തിന്, ടൊമാറ്റോയുടെ ഒരു ബുഷെൽ 56 പൗണ്ട് തൂക്കമുള്ളതാണ്... ഇലകളും പച്ചക്കറികളും കുറവ് ഭാരം ഉള്ളതിനാൽ, സ്പിനാച്ചിന്റെ ഒരു ബുഷെൽ 20 പൗണ്ട് മാത്രമാണ്." ഇത് വളരെ സങ്കീർണ്ണമാണ്! ബുഷെൽ-ടു-പൗണ്ട് പരിവർത്തനം ചെയ്യാതെ, ബുഷെൽപ്രകാരം വില നിശ്ചയിക്കാം. പംപ്കിനുകളുടെ ബുഷെൽ പഠനം, നിങ്ങളുടെ ഡാറ്റയുടെ സ്വഭാവം മനസ്സിലാക്കുന്നതിന്റെ പ്രാധാന്യം കാണിക്കുന്നു! + +ഇപ്പോൾ, ബുഷെൽ അളവിന്റെ അടിസ്ഥാനത്തിൽ യൂണിറ്റ് വില വിശകലനം ചെയ്യാം. ഡാറ്റ വീണ്ടും പ്രിന്റ് ചെയ്താൽ ഇത് എങ്ങനെ സാധാരണവത്കരിച്ചിട്ടുള്ളതാണെന്ന് കാണാം. + +✅ പംപ്കിനുകൾ അർദ്ധ-ബുഷെൽ പ്രകാരം വിൽക്കുമ്പോൾ വളരെ വിലകൂടിയാണെന്ന് ശ്രദ്ധിച്ചോ? എന്തുകൊണ്ടെന്ന് കണ്ടെത്താമോ? സൂചന: ചെറിയ പംപ്കിനുകൾ വലിയവയെക്കാൾ വിലകൂടിയതാണ്, കാരണം ഒരു വലിയ പൊള്ളയായ പൈ പംപ്കിൻ എടുത്തിടുന്ന ഉപയോഗിക്കാത്ത സ്ഥലത്തെ തുടർന്ന് ബുഷെലിൽ അവയുടെ എണ്ണം വളരെ കൂടുതലാണ്. + +## ദൃശ്യവൽക്കരണ തന്ത്രങ്ങൾ + +ഡാറ്റ സയന്റിസ്റ്റിന്റെ ഒരു ഭാഗം, അവർ പ്രവർത്തിക്കുന്ന ഡാറ്റയുടെ ഗുണമേന്മയും സ്വഭാവവും പ്രദർശിപ്പിക്കുകയാണ്. ഇതിന്, അവർ പലപ്പോഴും രസകരമായ ദൃശ്യവൽക്കരണങ്ങൾ, പ്ലോട്ടുകൾ, ഗ്രാഫുകൾ, ചാർട്ടുകൾ സൃഷ്ടിക്കുന്നു, ഡാറ്റയുടെ വ്യത്യസ്ത വശങ്ങൾ കാണിക്കുന്നു. ഇതിലൂടെ, അവർ ദൃശ്യമായി ബന്ധങ്ങളും ഇടവേളകളും കാണിക്കാൻ കഴിയും, സാധാരണയായി കണ്ടെത്താൻ ബുദ്ധിമുട്ടുള്ളവ. + +[![ML for beginners - How to Visualize Data with Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML for beginners - How to Visualize Data with Matplotlib") + +> 🎥 ഈ പാഠത്തിനായി ഡാറ്റ ദൃശ്യവൽക്കരിക്കുന്നതിനെക്കുറിച്ച് ഒരു ചെറിയ വീഡിയോ കാണാൻ മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക. + +ദൃശ്യവൽക്കരണങ്ങൾ ഡാറ്റയ്ക്ക് ഏറ്റവും അനുയോജ്യമായ മെഷീൻ ലേണിംഗ് സാങ്കേതിക വിദ്യ നിർണ്ണയിക്കാനും സഹായിക്കുന്നു. ഒരു സ്കാറ്റർപ്ലോട്ട് ഒരു രേഖ പിന്തുടരുന്ന പോലെ തോന്നിയാൽ, ഡാറ്റ ലീനിയർ റെഗ്രഷൻ അഭ്യാസത്തിന് നല്ല സ്ഥാനാർത്ഥിയാണ്. + +Jupyter നോട്ട്‌ബുക്കുകളിൽ നല്ല പ്രവർത്തനം കാണിക്കുന്ന ഒരു ഡാറ്റ ദൃശ്യവൽക്കരണ ലൈബ്രറി [Matplotlib](https://matplotlib.org/) ആണ് (മുൻപത്തെ പാഠത്തിലും നിങ്ങൾ കണ്ടതാണ്). + +> [ഈ ട്യൂട്ടോറിയലുകളിൽ](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott) ഡാറ്റ ദൃശ്യവൽക്കരണത്തിൽ കൂടുതൽ പരിചയം നേടുക. + +## അഭ്യാസം - Matplotlib ഉപയോഗിച്ച് പരീക്ഷണം നടത്തുക + +നിങ്ങൾ ഇപ്പോൾ സൃഷ്ടിച്ച പുതിയ ഡാറ്റാഫ്രെയിം പ്രദർശിപ്പിക്കാൻ ചില അടിസ്ഥാന പ്ലോട്ടുകൾ സൃഷ്ടിക്കാൻ ശ്രമിക്കുക. ഒരു അടിസ്ഥാന ലൈൻ പ്ലോട്ട് എന്ത് കാണിക്കും? + +1. ഫയലിന്റെ മുകളിൽ, Pandas ഇറക്കുമതിക്ക് താഴെ Matplotlib ഇറക്കുമതി ചെയ്യുക: + + ```python + import matplotlib.pyplot as plt + ``` + +1. മുഴുവൻ നോട്ട്‌ബുക്ക് വീണ്ടും റൺ ചെയ്യുക. +1. നോട്ട്‌ബുക്കിന്റെ താഴെ ഭാഗത്ത്, ഡാറ്റ ബോക്സ് ആയി പ്ലോട്ട് ചെയ്യാൻ ഒരു സെൽ ചേർക്കുക: + + ```python + price = new_pumpkins.Price + month = new_pumpkins.Month + plt.scatter(price, month) + plt.show() + ``` + + ![വില-മാസ ബന്ധം കാണിക്കുന്ന സ്കാറ്റർപ്ലോട്ട്](../../../../translated_images/scatterplot.b6868f44cbd2051c6680ccdbb1510697d06a3ff6cd4abda656f5009c0ed4e3fc.ml.png) + + ഇത് ഒരു ഉപകാരപ്രദമായ പ്ലോട്ട് ആണോ? ഇതിൽ എന്തെങ്കിലും നിങ്ങൾക്ക് അത്ഭുതം തോന്നുന്നുണ്ടോ? + + ഇത് പ്രത്യേകിച്ച് ഉപകാരപ്രദമല്ല, കാരണം ഇത് നിങ്ങളുടെ ഡാറ്റ ഒരു മാസത്തിൽ പോയിന്റുകളുടെ വ്യാപ്തിയായി മാത്രം പ്രദർശിപ്പിക്കുന്നു. + +### ഇത് ഉപകാരപ്രദമാക്കുക + +ചാർട്ടുകൾ ഉപകാരപ്രദമായ ഡാറ്റ പ്രദർശിപ്പിക്കാൻ, സാധാരണയായി ഡാറ്റയെ ഏതെങ്കിലും വിധത്തിൽ ഗ്രൂപ്പ് ചെയ്യേണ്ടതുണ്ട്. മാസങ്ങൾ y അക്ഷത്തിൽ കാണിക്കുന്ന, ഡാറ്റയുടെ വിതരണത്തെ പ്രദർശിപ്പിക്കുന്ന ഒരു പ്ലോട്ട് സൃഷ്ടിക്കാൻ ശ്രമിക്കാം. + +1. ഗ്രൂപ്പുചെയ്ത ബാർ ചാർട്ട് സൃഷ്ടിക്കാൻ ഒരു സെൽ ചേർക്കുക: + + ```python + new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') + plt.ylabel("Pumpkin Price") + ``` + + ![വില-മാസ ബന്ധം കാണിക്കുന്ന ബാർ ചാർട്ട്](../../../../translated_images/barchart.a833ea9194346d769c77a3a870f7d8aee51574cd1138ca902e5500830a41cbce.ml.png) + + ഇത് കൂടുതൽ ഉപകാരപ്രദമായ ഡാറ്റ ദൃശ്യവൽക്കരണമാണ്! പംപ്കിനുകളുടെ ഏറ്റവും ഉയർന്ന വില സെപ്റ്റംബർ, ഒക്ടോബർ മാസങ്ങളിൽ സംഭവിക്കുന്നതായി ഇത് സൂചിപ്പിക്കുന്നു. ഇത് നിങ്ങളുടെ പ്രതീക്ഷയുമായി പൊരുത്തപ്പെടുന്നുണ്ടോ? എന്തുകൊണ്ടോ എന്തുകൊണ്ടല്ല? + +--- + +## 🚀ചലഞ്ച് + +Matplotlib നൽകുന്ന വിവിധ ദൃശ്യവൽക്കരണ തരം പരിശോധിക്കുക. റെഗ്രഷൻ പ്രശ്നങ്ങൾക്ക് ഏറ്റവും അനുയോജ്യമായ തരം ഏതാണ്? + +## [പോസ്റ്റ്-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +## അവലോകനം & സ്വയം പഠനം + +ഡാറ്റ ദൃശ്യവൽക്കരിക്കുന്ന നിരവധി മാർഗങ്ങൾ പരിശോധിക്കുക. ലഭ്യമായ വിവിധ ലൈബ്രറികളുടെ പട്ടിക തയ്യാറാക്കുക, പ്രത്യേകിച്ച് 2D ദൃശ്യവൽക്കരണങ്ങൾക്കും 3D ദൃശ്യവൽക്കരണങ്ങൾക്കും ഏത് ലൈബ്രറികൾ ഏറ്റവും അനുയോജ്യമാണ് എന്ന് കുറിക്കുക. നിങ്ങൾ എന്ത് കണ്ടെത്തുന്നു? + +## അസൈൻമെന്റ് + +[ദൃശ്യവൽക്കരണം അന്വേഷിക്കൽ](assignment.md) + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/2-Regression/2-Data/assignment.md b/translations/ml/2-Regression/2-Data/assignment.md new file mode 100644 index 000000000..8419ea91d --- /dev/null +++ b/translations/ml/2-Regression/2-Data/assignment.md @@ -0,0 +1,25 @@ + +# ദൃശ്യവത്കരണങ്ങൾ അന്വേഷിക്കൽ + +ഡാറ്റാ ദൃശ്യവത്കരണത്തിനായി ലഭ്യമായ വിവിധ ലൈബ്രറികൾ ഉണ്ട്. matplotlib, seaborn എന്നിവ ഉപയോഗിച്ച് ഈ പാഠത്തിലെ Pumpkin ഡാറ്റ ഉപയോഗിച്ച് ചില ദൃശ്യവത്കരണങ്ങൾ ഒരു സാമ്പിൾ നോട്ട്‌ബുക്കിൽ സൃഷ്ടിക്കുക. ഏത് ലൈബ്രറികൾ ഉപയോഗിക്കാൻ എളുപ്പമാണ്? + +## റൂബ്രിക് + +| മാനദണ്ഡം | ഉദാഹരണമായത് | മതിയായത് | മെച്ചപ്പെടുത്തേണ്ടത് | +| -------- | ------------- | -------- | ----------------- | +| | രണ്ട് അന്വേഷണങ്ങൾ/ദൃശ്യവത്കരണങ്ങൾ ഉള്ള ഒരു നോട്ട്‌ബുക്ക് സമർപ്പിച്ചിരിക്കുന്നു | ഒരു അന്വേഷണം/ദൃശ്യവത്കരണം ഉള്ള ഒരു നോട്ട്‌ബുക്ക് സമർപ്പിച്ചിരിക്കുന്നു | ഒരു നോട്ട്‌ബുക്ക് സമർപ്പിച്ചിട്ടില്ല | + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ വ്യാഖ്യാനക്കേടുകൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/2-Regression/2-Data/notebook.ipynb b/translations/ml/2-Regression/2-Data/notebook.ipynb new file mode 100644 index 000000000..032a9a18d --- /dev/null +++ b/translations/ml/2-Regression/2-Data/notebook.ipynb @@ -0,0 +1,46 @@ +{ + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.3-final" + }, + "orig_nbformat": 2, + "kernelspec": { + "name": "python3", + "display_name": "Python 3", + "language": "python" + }, + "coopTranslator": { + "original_hash": "1b2ab303ac6c604a34c6ca7a49077fc7", + "translation_date": "2025-12-19T16:18:13+00:00", + "source_file": "2-Regression/2-Data/notebook.ipynb", + "language_code": "ml" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**അസൂയാ**: \nഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/ml/2-Regression/2-Data/solution/Julia/README.md b/translations/ml/2-Regression/2-Data/solution/Julia/README.md new file mode 100644 index 000000000..63a1518d4 --- /dev/null +++ b/translations/ml/2-Regression/2-Data/solution/Julia/README.md @@ -0,0 +1,17 @@ + +ഇത് ഒരു താൽക്കാലിക പ്ലേസ്ഹോൾഡറാണ് + +--- + + +**അസൂയാപത്രം**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് കരുതേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/2-Regression/2-Data/solution/R/lesson_2-R.ipynb b/translations/ml/2-Regression/2-Data/solution/R/lesson_2-R.ipynb new file mode 100644 index 000000000..20c0b12df --- /dev/null +++ b/translations/ml/2-Regression/2-Data/solution/R/lesson_2-R.ipynb @@ -0,0 +1,673 @@ +{ + "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-12-19T16:34:58+00:00", + "source_file": "2-Regression/2-Data/solution/R/lesson_2-R.ipynb", + "language_code": "ml" + } + }, + "cells": [ + { + "cell_type": "markdown", + "source": [ + "# ഒരു റെഗ്രഷൻ മോഡൽ നിർമ്മിക്കുക: ഡാറ്റ തയ്യാറാക്കുകയും ദൃശ്യവത്കരിക്കുകയും ചെയ്യുക\n", + "\n", + "## **പമ്പ്കിൻസിനുള്ള ലീനിയർ റെഗ്രഷൻ - പാഠം 2**\n", + "#### പരിചയം\n", + "\n", + "Tidymodels ഉം Tidyverse ഉം ഉപയോഗിച്ച് മെഷീൻ ലേണിംഗ് മോഡൽ നിർമ്മാണം ആരംഭിക്കാൻ ആവശ്യമായ ഉപകരണങ്ങൾ നിങ്ങൾക്കുണ്ടായപ്പോൾ, നിങ്ങളുടെ ഡാറ്റയെക്കുറിച്ച് ചോദ്യങ്ങൾ ചോദിക്കാൻ നിങ്ങൾ തയ്യാറാണ്. ഡാറ്റയുമായി പ്രവർത്തിക്കുമ്പോഴും ML പരിഹാരങ്ങൾ പ്രയോഗിക്കുമ്പോഴും, നിങ്ങളുടെ ഡാറ്റാസെറ്റിന്റെ സാധ്യതകൾ ശരിയായി തുറക്കാൻ ശരിയായ ചോദ്യങ്ങൾ ചോദിക്കുന്നത് വളരെ പ്രധാനമാണ്.\n", + "\n", + "ഈ പാഠത്തിൽ, നിങ്ങൾ പഠിക്കാനിരിക്കുന്നതെന്തെന്നാൽ:\n", + "\n", + "- മോഡൽ നിർമ്മാണത്തിനായി നിങ്ങളുടെ ഡാറ്റ എങ്ങനെ തയ്യാറാക്കാം.\n", + "\n", + "- ഡാറ്റ ദൃശ്യവത്കരണത്തിന് `ggplot2` എങ്ങനെ ഉപയോഗിക്കാം.\n", + "\n", + "നിങ്ങൾക്ക് ഉത്തരം വേണമെന്ന ചോദ്യമാണ് നിങ്ങൾ ഉപയോഗിക്കേണ്ട ML ആൽഗോരിതങ്ങൾ നിർണ്ണയിക്കുന്നത്. നിങ്ങൾക്ക് ലഭിക്കുന്ന ഉത്തരം എത്രത്തോളം ഗുണമേന്മയുള്ളതായിരിക്കും എന്നത് നിങ്ങളുടെ ഡാറ്റയുടെ സ്വഭാവത്തെ ആശ്രയിച്ചിരിക്കും.\n", + "\n", + "പ്രായോഗികമായ ഒരു അഭ്യാസത്തിലൂടെ ഇത് നോക്കാം.\n", + "\n", + "\n", + "

\n", + " \n", + "

@allison_horst രചിച്ച കലാസൃഷ്ടി
\n" + ], + "metadata": { + "id": "Pg5aexcOPqAZ" + } + }, + { + "cell_type": "markdown", + "source": [ + "## 1. പംപ്കിൻസ് ഡാറ്റ ഇറക്കുമതി ചെയ്യുകയും ടിഡിവേഴ്സ് വിളിക്കുകയും ചെയ്യുക\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": [ + "A quick `glimpse()` ഉടൻ കാണിക്കുന്നു that there are blanks and a mix of strings (`chr`) and numeric data (`dbl`). The `Date` is of type character and there's also a strange column called `Package` where the data is a mix between `sacks`, `bins` and other values. The data, in fact, is a bit of a mess 😤.\n", + "\n", + "In fact, it is not very common to be gifted a dataset that is completely ready to use to create a ML model out of the box. But worry not, in this lesson, you will learn how to prepare a raw dataset using standard R libraries 🧑‍🔧. You will also learn various techniques to visualize the data.📈📊\n", + "
\n", + "\n", + "> A refresher: The pipe operator (`%>%`) performs operations in logical sequence by passing an object forward into a function or call expression. You can think of the pipe operator as saying \"and then\" in your code.\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. Dplyr: ഡാറ്റ മാനിപ്പുലേഷന്റെ ഒരു വ്യാകരണം\n", + "\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", + "
\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", + "`Date` കോളം ഉപയോഗിച്ച് `mutate` പരീക്ഷിക്കാം, താഴെ പറയുന്ന പ്രവർത്തനങ്ങൾ ചെയ്യുക:\n", + "\n", + "1. തീയതികൾ (ഇപ്പോൾ character തരം) മാസ ഫോർമാറ്റിലേക്ക് മാറ്റുക (ഇവ US തീയതികളാണ്, അതിനാൽ ഫോർമാറ്റ് `MM/DD/YYYY` ആണ്).\n", + "\n", + "2. തീയതികളിൽ നിന്ന് മാസം പുതിയ കോളത്തിലേക്ക് എടുക്കുക.\n", + "\n", + "R ൽ, [lubridate](https://lubridate.tidyverse.org/) പാക്കേജ് Date-time ഡാറ്റ കൈകാര്യം ചെയ്യാൻ എളുപ്പമാക്കുന്നു. അതിനാൽ, `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` കോളം സൃഷ്ടിക്കാം. ഇപ്പോൾ, പുതിയ Price കോളം പൂരിപ്പിക്കാൻ `Low Price` ഉം `High Price` ഉം കോളങ്ങളിലെ ശരാശരി എടുക്കാം.\n", + "
\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 ബുഷെൽ` അളവിൽ, ചിലത് `1/2 ബുഷെൽ` അളവിൽ, ചിലത് ഓരോ പംപ്കിനും, ചിലത് ഓരോ പൗണ്ടിനും, ചിലത് വ്യത്യസ്ത വീതികളുള്ള വലിയ ബോക്സുകളിൽ വിൽക്കപ്പെടുന്നു.\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", + "
\n" + ], + "metadata": { + "id": "7sMjiVujaZxY" + } + }, + { + "cell_type": "markdown", + "source": [ + "#### dplyr::filter() and 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) ഫംഗ്ഷൻ ഉപയോഗിക്കും. `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", + "
\n" + ], + "metadata": { + "id": "pS2GNPagbSdb" + } + }, + { + "cell_type": "markdown", + "source": [ + "ഇപ്പോൾ അവസാനം, സാഹസികതയ്ക്കായി 💁‍♀️, നമുക്ക് മാസത്തെ കോളം ആദ്യ സ്ഥാനത്തേക്ക് മാറ്റാം, അതായത് `Package` കോളത്തിന് മുമ്പ്.\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", + "
\n" + ], + "metadata": { + "id": "Ml7SDCLQcPvE" + } + }, + { + "cell_type": "markdown", + "source": [ + "### **നാം ഇത് എങ്ങനെ പ്രയോജനപ്പെടുത്താം?**\n", + "\n", + "ചാർട്ടുകളിൽ പ്രയോജനകരമായ ഡാറ്റ പ്രദർശിപ്പിക്കാൻ, സാധാരണയായി ഡാറ്റയെ ഏതെങ്കിലും വിധത്തിൽ ഗ്രൂപ്പ് ചെയ്യേണ്ടതുണ്ട്. ഉദാഹരണത്തിന്, നമ്മുടെ കേസിൽ, ഓരോ മാസത്തിനും പംപ്കിൻസിന്റെ ശരാശരി വില കണ്ടെത്തുന്നത് നമ്മുടെ ഡാറ്റയിലെ അടിസ്ഥിത പാറ്റേണുകൾക്കു കൂടുതൽ洞察ങ്ങൾ നൽകും. ഇത് നമ്മെ മറ്റൊരു **dplyr** ഫ്ലൈബൈയിലേക്ക് നയിക്കുന്നു:\n", + "\n", + "#### `dplyr::group_by() %>% summarize()`\n", + "\n", + "R-ൽ ഗ്രൂപ്പ് ചെയ്ത ആഗ്രിഗേഷൻ എളുപ്പത്തിൽ കണക്കാക്കാൻ കഴിയും\n", + "\n", + "`dplyr::group_by() %>% summarize()`\n", + "\n", + "- `dplyr::group_by()` പൂർണ്ണ ഡാറ്റാസെറ്റിൽ നിന്നുള്ള വിശകലന യൂണിറ്റ് ഓരോ ഗ്രൂപ്പുകളിലേക്കു മാറ്റുന്നു, ഉദാഹരണത്തിന് ഓരോ മാസം.\n", + "\n", + "- `dplyr::summarize()` നിങ്ങൾ നിർദ്ദേശിച്ച സംഗ്രഹ സാങ്കേതികവിദ്യകൾക്കായി ഓരോ ഗ്രൂപ്പിംഗ് വേരിയബിളിനും ഒരു കോളവും ഓരോ സംഗ്രഹ സാങ്കേതികവിദ്യയ്ക്കും ഒരു കോളവും ഉള്ള പുതിയ ഡാറ്റാ ഫ്രെയിം സൃഷ്ടിക്കുന്നു.\n", + "\n", + "ഉദാഹരണത്തിന്, `dplyr::group_by() %>% summarize()` ഉപയോഗിച്ച് പംപ്കിൻസിനെ **മാസം** കോളം അടിസ്ഥാനമാക്കി ഗ്രൂപ്പാക്കി, ഓരോ മാസത്തിനും **ശരാശരി വില** കണ്ടെത്താം.\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\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/ml/2-Regression/2-Data/solution/notebook.ipynb b/translations/ml/2-Regression/2-Data/solution/notebook.ipynb new file mode 100644 index 000000000..7b08e1273 --- /dev/null +++ b/translations/ml/2-Regression/2-Data/solution/notebook.ipynb @@ -0,0 +1,439 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## പമ്പ്കിനുകൾക്കുള്ള ലീനിയർ റെഗ്രഷൻ - പാഠം 2\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
City NameTypePackageVarietySub VarietyGradeDateLow PriceHigh PriceMostly Low...Unit of SaleQualityConditionAppearanceStorageCropRepackTrans ModeUnnamed: 24Unnamed: 25
70BALTIMORENaN1 1/9 bushel cartonsPIE TYPENaNNaN9/24/1615.015.015.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
71BALTIMORENaN1 1/9 bushel cartonsPIE TYPENaNNaN9/24/1618.018.018.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
72BALTIMORENaN1 1/9 bushel cartonsPIE TYPENaNNaN10/1/1618.018.018.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
73BALTIMORENaN1 1/9 bushel cartonsPIE TYPENaNNaN10/1/1617.017.017.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
74BALTIMORENaN1 1/9 bushel cartonsPIE TYPENaNNaN10/8/1615.015.015.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
\n", + "

5 rows × 26 columns

\n", + "
" + ], + "text/plain": [ + " City Name Type Package Variety Sub Variety Grade \\\n", + "70 BALTIMORE NaN 1 1/9 bushel cartons PIE TYPE NaN NaN \n", + "71 BALTIMORE NaN 1 1/9 bushel cartons PIE TYPE NaN NaN \n", + "72 BALTIMORE NaN 1 1/9 bushel cartons PIE TYPE NaN NaN \n", + "73 BALTIMORE NaN 1 1/9 bushel cartons PIE TYPE NaN NaN \n", + "74 BALTIMORE NaN 1 1/9 bushel cartons PIE TYPE NaN NaN \n", + "\n", + " Date Low Price High Price Mostly Low ... Unit of Sale Quality \\\n", + "70 9/24/16 15.0 15.0 15.0 ... NaN NaN \n", + "71 9/24/16 18.0 18.0 18.0 ... NaN NaN \n", + "72 10/1/16 18.0 18.0 18.0 ... NaN NaN \n", + "73 10/1/16 17.0 17.0 17.0 ... NaN NaN \n", + "74 10/8/16 15.0 15.0 15.0 ... NaN NaN \n", + "\n", + " Condition Appearance Storage Crop Repack Trans Mode Unnamed: 24 \\\n", + "70 NaN NaN NaN NaN N NaN NaN \n", + "71 NaN NaN NaN NaN N NaN NaN \n", + "72 NaN NaN NaN NaN N NaN NaN \n", + "73 NaN NaN NaN NaN N NaN NaN \n", + "74 NaN NaN NaN NaN N NaN NaN \n", + "\n", + " Unnamed: 25 \n", + "70 NaN \n", + "71 NaN \n", + "72 NaN \n", + "73 NaN \n", + "74 NaN \n", + "\n", + "[5 rows x 26 columns]" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n", + "\n", + "pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n", + "\n", + "pumpkins.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "City Name 0\n", + "Type 406\n", + "Package 0\n", + "Variety 0\n", + "Sub Variety 167\n", + "Grade 415\n", + "Date 0\n", + "Low Price 0\n", + "High Price 0\n", + "Mostly Low 24\n", + "Mostly High 24\n", + "Origin 0\n", + "Origin District 396\n", + "Item Size 114\n", + "Color 145\n", + "Environment 415\n", + "Unit of Sale 404\n", + "Quality 415\n", + "Condition 415\n", + "Appearance 415\n", + "Storage 415\n", + "Crop 415\n", + "Repack 0\n", + "Trans Mode 415\n", + "Unnamed: 24 415\n", + "Unnamed: 25 391\n", + "dtype: int64" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pumpkins.isnull().sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Month Package Low Price High Price Price\n", + "70 9 1 1/9 bushel cartons 15.00 15.0 13.50\n", + "71 9 1 1/9 bushel cartons 18.00 18.0 16.20\n", + "72 10 1 1/9 bushel cartons 18.00 18.0 16.20\n", + "73 10 1 1/9 bushel cartons 17.00 17.0 15.30\n", + "74 10 1 1/9 bushel cartons 15.00 15.0 13.50\n", + "... ... ... ... ... ...\n", + "1738 9 1/2 bushel cartons 15.00 15.0 30.00\n", + "1739 9 1/2 bushel cartons 13.75 15.0 28.75\n", + "1740 9 1/2 bushel cartons 10.75 15.0 25.75\n", + "1741 9 1/2 bushel cartons 12.00 12.0 24.00\n", + "1742 9 1/2 bushel cartons 12.00 12.0 24.00\n", + "\n", + "[415 rows x 5 columns]\n" + ] + } + ], + "source": [ + "\n", + "# A set of new columns for a new dataframe. Filter out nonmatching columns\n", + "columns_to_select = ['Package', 'Low Price', 'High Price', 'Date']\n", + "pumpkins = pumpkins.loc[:, columns_to_select]\n", + "\n", + "# Get an average between low and high price for the base pumpkin price\n", + "price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2\n", + "\n", + "# Convert the date to its month only\n", + "month = pd.DatetimeIndex(pumpkins['Date']).month\n", + "\n", + "# Create a new dataframe with this basic data\n", + "new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})\n", + "\n", + "# Convert the price if the Package contains fractional bushel values\n", + "new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9)\n", + "\n", + "new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2)\n", + "\n", + "print(new_pumpkins)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "price = new_pumpkins.Price\n", + "month = new_pumpkins.Month\n", + "plt.scatter(price, month)\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0, 0.5, 'Pumpkin Price')" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar')\n", + "plt.ylabel(\"Pumpkin Price\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**അസൂയാപത്രം**: \nഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, യന്ത്രം ചെയ്ത വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ അധികാരപരമായ ഉറവിടമായി കണക്കാക്കപ്പെടണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല.\n\n" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6" + }, + "kernelspec": { + "display_name": "Python 3.7.0 64-bit ('3.7')", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.1" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "orig_nbformat": 2, + "coopTranslator": { + "original_hash": "95726f0b8283628d5356a4f8eb8b4b76", + "translation_date": "2025-12-19T16:31:48+00:00", + "source_file": "2-Regression/2-Data/solution/notebook.ipynb", + "language_code": "ml" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/translations/ml/2-Regression/3-Linear/README.md b/translations/ml/2-Regression/3-Linear/README.md new file mode 100644 index 000000000..6b966d440 --- /dev/null +++ b/translations/ml/2-Regression/3-Linear/README.md @@ -0,0 +1,383 @@ + +# Scikit-learn ഉപയോഗിച്ച് ഒരു റെഗ്രഷൻ മോഡൽ നിർമ്മിക്കുക: റെഗ്രഷൻ നാല് രീതികൾ + +![Linear vs polynomial regression infographic](../../../../translated_images/linear-polynomial.5523c7cb6576ccab0fecbd0e3505986eb2d191d9378e785f82befcf3a578a6e7.ml.png) +> ഇൻഫോഗ്രാഫിക് [ദസാനി മടിപള്ളി](https://twitter.com/dasani_decoded) tarafından +## [പ്രീ-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +> ### [ഈ പാഠം R-ൽ ലഭ്യമാണ്!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +### പരിചയം + +ഇതുവരെ നിങ്ങൾ റെഗ്രഷൻ എന്താണെന്ന് പംപ്കിൻ വില നിർണ്ണയ ഡാറ്റാസെറ്റിൽ നിന്നുള്ള സാമ്പിൾ ഡാറ്റ ഉപയോഗിച്ച് പരിശോധിച്ചിട്ടുണ്ട്, ഇത് ഈ പാഠത്തിൽ മുഴുവൻ ഉപയോഗിക്കും. നിങ്ങൾ Matplotlib ഉപയോഗിച്ച് അതിനെ ദൃശ്യവൽക്കരിക്കുകയും ചെയ്തു. + +ഇപ്പോൾ നിങ്ങൾ ML-നുള്ള റെഗ്രഷനിൽ കൂടുതൽ ആഴത്തിൽ പ്രവേശിക്കാൻ തയ്യാറാണ്. ദൃശ്യവൽക്കരണം ഡാറ്റയെ മനസ്സിലാക്കാൻ സഹായിക്കുന്നതിനാൽ, യഥാർത്ഥ മെഷീൻ ലേണിങ്ങിന്റെ ശക്തി _മോഡലുകൾ പരിശീലിപ്പിക്കുന്നതിൽ_ ആണ്. മോഡലുകൾ ചരിത്ര ഡാറ്റയിൽ പരിശീലിപ്പിച്ച് ഡാറ്റ ആശ്രിതത്വങ്ങൾ സ്വയം പിടിച്ചെടുക്കുന്നു, കൂടാതെ മോഡൽ മുമ്പ് കാണാത്ത പുതിയ ഡാറ്റയ്ക്ക് ഫലം പ്രവചിക്കാൻ അനുവദിക്കുന്നു. + +ഈ പാഠത്തിൽ, നിങ്ങൾ രണ്ട് തരത്തിലുള്ള റെഗ്രഷനുകൾക്കുറിച്ച് കൂടുതൽ പഠിക്കും: _അടിസ്ഥാന ലീനിയർ റെഗ്രഷൻ_യും _പോളിനോമിയൽ റെഗ്രഷൻ_യും, കൂടാതെ ഈ സാങ്കേതികവിദ്യകളുടെ പിന്നിലെ ചില ഗണിതശാസ്ത്രവും. ആ മോഡലുകൾ വിവിധ ഇൻപുട്ട് ഡാറ്റയുടെ അടിസ്ഥാനത്തിൽ പംപ്കിൻ വില പ്രവചിക്കാൻ സഹായിക്കും. + +[![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression") + +> 🎥 ലീനിയർ റെഗ്രഷന്റെ ഒരു ചുരുക്ക വീഡിയോ അവലോകനത്തിനായി മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക. + +> ഈ പാഠ്യപദ്ധതിയിൽ, ഗണിതത്തിൽ കുറഞ്ഞ പരിജ്ഞാനം ഉള്ളവർക്കും മറ്റ് മേഖലകളിൽ നിന്നുള്ള വിദ്യാർത്ഥികൾക്കും ഇത് സുലഭമാക്കാൻ ശ്രമിക്കുന്നു, അതിനാൽ കുറിപ്പുകൾ, 🧮 വിളിപ്പുകൾ, ചിത്രങ്ങൾ, മറ്റ് പഠന ഉപകരണങ്ങൾ ശ്രദ്ധിക്കുക. + +### മുൻപരിചയം + +നിങ്ങൾ ഇപ്പോൾ പരിശോധിക്കുന്ന പംപ്കിൻ ഡാറ്റയുടെ ഘടനയിൽ പരിചിതനാകണം. ഈ പാഠത്തിലെ _notebook.ipynb_ ഫയലിൽ ഇത് മുൻകൂട്ടി ലോഡ് ചെയ്ത് ശുദ്ധീകരിച്ചിരിക്കുന്നു. ഫയലിൽ, പംപ്കിൻ വില ബുഷെൽപ്രതി പുതിയ ഡാറ്റാ ഫ്രെയിമിൽ പ്രദർശിപ്പിച്ചിരിക്കുന്നു. Visual Studio Code-ൽ കർണലുകളിൽ ഈ നോട്ട്‌ബുക്കുകൾ പ്രവർത്തിപ്പിക്കാൻ കഴിയുന്നുണ്ടെന്ന് ഉറപ്പാക്കുക. + +### തയ്യാറെടുപ്പ് + +ഓർമ്മപ്പെടുത്തലായി, നിങ്ങൾ ഈ ഡാറ്റ ലോഡ് ചെയ്യുന്നത് അതിൽ നിന്ന് ചോദ്യങ്ങൾ ചോദിക്കാൻ ആണ്. + +- പംപ്കിനുകൾ വാങ്ങാൻ ഏറ്റവും നല്ല സമയം എപ്പോൾ? +- ഒരു കേസ് മിനിയേച്ചർ പംപ്കിനുകളുടെ വില എത്ര പ്രതീക്ഷിക്കാം? +- അവയെ അർദ്ധ ബുഷെൽ ബാസ്കറ്റുകളിൽ വാങ്ങണോ, 1 1/9 ബുഷെൽ ബോക്സിൽ വാങ്ങണോ? +നാം ഈ ഡാറ്റയിൽ കൂടുതൽ തിരയാം. + +മുൻ പാഠത്തിൽ, നിങ്ങൾ ഒരു Pandas ഡാറ്റാ ഫ്രെയിം സൃഷ്ടിച്ച് അതിൽ യഥാർത്ഥ ഡാറ്റാസെറ്റിന്റെ ഭാഗം ഉൾപ്പെടുത്തി, വില ബുഷെൽപ്രതി സ്റ്റാൻഡേർഡൈസ് ചെയ്തു. എന്നാൽ, അങ്ങനെ ചെയ്തപ്പോൾ, ഏകദേശം 400 ഡാറ്റാപോയിന്റുകൾ മാത്രമേ ലഭിച്ചുള്ളൂ, അത് പോലും പകുതിമാസങ്ങളിൽ മാത്രം. + +ഈ പാഠത്തിലെ അനുബന്ധ നോട്ട്‌ബുക്കിൽ മുൻകൂട്ടി ലോഡ് ചെയ്ത ഡാറ്റ നോക്കുക. ഡാറ്റ മുൻകൂട്ടി ലോഡ് ചെയ്തിട്ടുണ്ട്, ഒരു പ്രാഥമിക സ്കാറ്റർപ്ലോട്ട് മാസത്തെ ഡാറ്റ കാണിക്കാൻ വരച്ചിട്ടുണ്ട്. ഡാറ്റയുടെ സ്വഭാവത്തെ കുറിച്ച് കൂടുതൽ വിശദാംശങ്ങൾ ലഭിക്കാൻ കൂടുതൽ ശുദ്ധീകരണം നടത്താമോ എന്ന് നോക്കാം. + +## ഒരു ലീനിയർ റെഗ്രഷൻ രേഖ + +പാഠം 1-ൽ നിങ്ങൾ പഠിച്ച പോലെ, ഒരു ലീനിയർ റെഗ്രഷൻ അഭ്യാസത്തിന്റെ ലക്ഷ്യം ഒരു രേഖ വരയ്ക്കാനാകണം: + +- **വേരിയബിൾ ബന്ധങ്ങൾ കാണിക്കുക**. വേരിയബിൾകളുടെ ബന്ധം കാണിക്കുക +- **പ്രവചനങ്ങൾ നടത്തുക**. ആ രേഖയുമായി ബന്ധപ്പെട്ട് പുതിയ ഡാറ്റാപോയിന്റ് എവിടെ വരും എന്ന് കൃത്യമായി പ്രവചിക്കുക. + +**ലീസ്റ്റ്-സ്ക്വയർസ് റെഗ്രഷൻ** സാധാരണയായി ഇത്തരത്തിലുള്ള രേഖ വരയ്ക്കുന്നു. 'ലീസ്റ്റ്-സ്ക്വയർസ്' എന്ന പദം അർത്ഥമാക്കുന്നത്, റെഗ്രഷൻ രേഖ ചുറ്റിപ്പറ്റിയ എല്ലാ ഡാറ്റാപോയിന്റുകളും സ്ക്വയർ ചെയ്ത് കൂട്ടിച്ചേർക്കുന്നു എന്നതാണ്. ആകെ തുക όσο ചെറിയതായിരിക്കും, അത്ര നല്ലതാണ്, കാരണം ഞങ്ങൾ കുറവ് പിശകുകൾ (least-squares) ആഗ്രഹിക്കുന്നു. + +ഞങ്ങൾ ഒരു രേഖ മോഡൽ ചെയ്യാൻ ആഗ്രഹിക്കുന്നു, അത് എല്ലാ ഡാറ്റാപോയിന്റുകളുടെയും കൂറ്റൻ ദൂരം ഏറ്റവും കുറവായിരിക്കും. കൂടാതെ, ദിശയേക്കാൾ അതിന്റെ വലിപ്പം (മാഗ്നിറ്റ്യൂഡ്) പ്രധാനമാണെന്ന് കണക്കിലെടുത്ത് സ്ക്വയർ ചെയ്യുന്നു. + +> **🧮 ഗണിതം കാണിക്കുക** +> +> ഈ രേഖ, _ബെസ്റ്റ് ഫിറ്റ് ലൈന_ എന്ന് വിളിക്കപ്പെടുന്നത്, [ഒരു സമവാക്യത്തിലൂടെ](https://en.wikipedia.org/wiki/Simple_linear_regression) പ്രകടിപ്പിക്കാം: +> +> ``` +> Y = a + bX +> ``` +> +> `X` 'വ്യാഖ്യാന വേരിയബിൾ' ആണ്. `Y` 'അനുഭവ വേരിയബിൾ' ആണ്. രേഖയുടെ സ്ലോപ്പ് `b` ആണ്, `a` y-ഇന്റർസെപ്റ്റ് ആണ്, അതായത് `X = 0` ആയപ്പോൾ `Y` യുടെ മൂല്യം. +> +>![സ്ലോപ്പ് കണക്കാക്കുക](../../../../translated_images/slope.f3c9d5910ddbfcf9096eb5564254ba22c9a32d7acd7694cab905d29ad8261db3.ml.png) +> +> ആദ്യം സ്ലോപ്പ് `b` കണക്കാക്കുക. ഇൻഫോഗ്രാഫിക് [ജെൻ ലൂപ്പർ](https://twitter.com/jenlooper) tarafından +> +> മറ്റൊരു വാക്കിൽ, പംപ്കിൻ ഡാറ്റയുടെ യഥാർത്ഥ ചോദ്യത്തെ ആശ്രയിച്ച്: "മാസംപ്രതി പംപ്കിൻ വില പ്രവചിക്കുക", `X` വിലയെ സൂചിപ്പിക്കും, `Y` വിൽപ്പന മാസത്തെ സൂചിപ്പിക്കും. +> +>![സമവാക്യം പൂർത്തിയാക്കുക](../../../../translated_images/calculation.a209813050a1ddb141cdc4bc56f3af31e67157ed499e16a2ecf9837542704c94.ml.png) +> +> Y-യുടെ മൂല്യം കണക്കാക്കുക. നിങ്ങൾ ഏകദേശം $4 നൽകുകയാണെങ്കിൽ, അത് ഏപ്രിൽ ആയിരിക്കണം! ഇൻഫോഗ്രാഫിക് [ജെൻ ലൂപ്പർ](https://twitter.com/jenlooper) tarafından +> +> രേഖയുടെ സ്ലോപ്പ് കണക്കാക്കുന്ന ഗണിതം, ഇന്റർസെപ്റ്റിനും ആശ്രയിച്ചിരിക്കുന്നു, അതായത് `X = 0` ആയപ്പോൾ `Y` എവിടെയാണ് എന്നതും. +> +> ഈ മൂല്യങ്ങൾ കണക്കാക്കുന്ന രീതി [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) വെബ്സൈറ്റിൽ കാണാം. കൂടാതെ [ഈ Least-squares കാൽക്കുലേറ്റർ](https://www.mathsisfun.com/data/least-squares-calculator.html) സന്ദർശിച്ച് സംഖ്യകളുടെ മൂല്യങ്ങൾ രേഖയെ എങ്ങനെ ബാധിക്കുന്നു എന്ന് കാണാം. + +## സഹസംബന്ധം + +മറ്റൊരു പദം മനസ്സിലാക്കേണ്ടത് **സഹസംബന്ധ കോഫിഷ്യന്റ്** ആണ്, നൽകിയ X, Y വേരിയബിൾക്കിടയിലെ. സ്കാറ്റർപ്ലോട്ട് ഉപയോഗിച്ച് ഈ കോഫിഷ്യന്റ് എളുപ്പത്തിൽ ദൃശ്യവൽക്കരിക്കാം. ഡാറ്റാപോയിന്റുകൾ ഒരു സുതാര്യമായ രേഖയിൽ പടർന്നാൽ ഉയർന്ന സഹസംബന്ധം ഉണ്ട്, എന്നാൽ ഡാറ്റാപോയിന്റുകൾ X, Y-യുടെ ഇടയിൽ എല്ലായിടത്തും പടർന്നാൽ കുറഞ്ഞ സഹസംബന്ധം ഉണ്ട്. + +ഒരു നല്ല ലീനിയർ റെഗ്രഷൻ മോഡൽ, ലീസ്റ്റ്-സ്ക്വയർസ് റെഗ്രഷൻ രീതിയിൽ ഒരു രേഖയുള്ള, ഉയർന്ന (0-നേക്കാൾ 1-നടുത്തുള്ള) സഹസംബന്ധ കോഫിഷ്യന്റ് ഉള്ളതാണ്. + +✅ ഈ പാഠത്തോടനുബന്ധിച്ച നോട്ട്‌ബുക്ക് പ്രവർത്തിപ്പിച്ച് മാസവും വിലയും തമ്മിലുള്ള സ്കാറ്റർപ്ലോട്ട് നോക്കുക. പംപ്കിൻ വിൽപ്പനയിൽ മാസവും വിലയും തമ്മിലുള്ള ഡാറ്റയ്ക്ക് നിങ്ങളുടെ ദൃശ്യവിവരണപ്രകാരം ഉയർന്നോ കുറഞ്ഞോ സഹസംബന്ധം ഉണ്ടോ? `Month` പകരം കൂടുതൽ സൂക്ഷ്മമായ അളവ് (ഉദാ: വർഷത്തിലെ ദിവസം) ഉപയോഗിച്ചാൽ അത് മാറുമോ? + +താഴെ കൊടുത്തിരിക്കുന്ന കോഡിൽ, ഡാറ്റ ശുദ്ധീകരിച്ചുവെന്ന് കരുതി, `new_pumpkins` എന്ന ഡാറ്റാ ഫ്രെയിം ലഭിച്ചിരിക്കുന്നു, താഴെപറയുന്ന പോലെ: + +ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price +---|-------|-----------|---------|------|---------|-----------|------------|------- +70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 +71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 +74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 + +> ഡാറ്റ ശുദ്ധീകരിക്കുന്ന കോഡ് [`notebook.ipynb`](notebook.ipynb) ൽ ലഭ്യമാണ്. മുൻ പാഠത്തിലെ പോലെ തന്നെ ശുദ്ധീകരണ നടപടികൾ നടന്നു, കൂടാതെ `DayOfYear` കോളം താഴെപ്പറയുന്ന പ്രകടനത്തിലൂടെ കണക്കാക്കി: + +```python +day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) +``` + +ലീനിയർ റെഗ്രഷന്റെ പിന്നിലെ ഗണിതം മനസ്സിലാക്കിയതിനു ശേഷം, പംപ്കിൻ പാക്കേജുകളുടെ വില ഏറ്റവും നല്ലത് ഏതാണ് എന്ന് പ്രവചിക്കാൻ ഒരു റെഗ്രഷൻ മോഡൽ സൃഷ്ടിക്കാം. അവധി പംപ്കിൻ പാച്ചിനായി പംപ്കിനുകൾ വാങ്ങുന്നവർക്ക് ഈ വിവരം അവരുടെ വാങ്ങലുകൾ മെച്ചപ്പെടുത്താൻ സഹായിക്കും. + +## സഹസംബന്ധം അന്വേഷിക്കൽ + +[![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression") + +> 🎥 സഹസംബന്ധത്തിന്റെ ഒരു ചുരുക്ക വീഡിയോ അവലോകനത്തിനായി മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക. + +മുൻ പാഠത്തിൽ നിങ്ങൾ കണ്ടതുപോലെ, വ്യത്യസ്ത മാസങ്ങളിലെ ശരാശരി വില ഇങ്ങനെ കാണപ്പെടുന്നു: + +Average price by month + +ഇത് ചില സഹസംബന്ധം ഉണ്ടാകുമെന്ന് സൂചിപ്പിക്കുന്നു, നാം ലീനിയർ റെഗ്രഷൻ മോഡൽ പരിശീലിപ്പിച്ച് `Month`-നും `Price`-നും ഇടയിലുള്ള ബന്ധം പ്രവചിക്കാം, അല്ലെങ്കിൽ `DayOfYear`-നും `Price`-നും ഇടയിലുള്ള ബന്ധം. താഴെ കാണുന്ന സ്കാറ്റർപ്ലോട്ട് രണ്ടാം ബന്ധം കാണിക്കുന്നു: + +Scatter plot of Price vs. Day of Year + +`corr` ഫംഗ്ഷൻ ഉപയോഗിച്ച് സഹസംബന്ധം പരിശോധിക്കാം: + +```python +print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) +print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) +``` + +സഹസംബന്ധം വളരെ ചെറിയതാണ്, `Month`-നായി -0.15, `DayOfMonth`-നായി -0.17, എന്നാൽ മറ്റൊരു പ്രധാന ബന്ധം ഉണ്ടാകാം. വ്യത്യസ്ത പംപ്കിൻ വർഗ്ഗങ്ങൾക്ക് വ്യത്യസ്ത വില ക്ലസ്റ്ററുകൾ ഉണ്ടെന്ന് തോന്നുന്നു. ഈ സിദ്ധാന്തം സ്ഥിരീകരിക്കാൻ, ഓരോ പംപ്കിൻ വിഭാഗവും വ്യത്യസ്ത നിറത്തിൽ സ്കാറ്റർ പ്ലോട്ട് ചെയ്യാം. `scatter` ഫംഗ്ഷനിൽ `ax` പാരാമീറ്റർ നൽകി എല്ലാ പോയിന്റുകളും ഒരേ ഗ്രാഫിൽ വരയ്ക്കാം: + +```python +ax=None +colors = ['red','blue','green','yellow'] +for i,var in enumerate(new_pumpkins['Variety'].unique()): + df = new_pumpkins[new_pumpkins['Variety']==var] + ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) +``` + +Scatter plot of Price vs. Day of Year + +നമ്മുടെ പരിശോധന പ്രകാരം, പംപ്കിൻ വർഗ്ഗം വിൽപ്പന തീയതിയേക്കാൾ വിലയിൽ കൂടുതൽ സ്വാധീനം ചെലുത്തുന്നു. ഇത് ഒരു ബാർ ഗ്രാഫിൽ കാണാം: + +```python +new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') +``` + +Bar graph of price vs variety + +ഇപ്പോൾ നാം 'പൈ ടൈപ്പ്' എന്ന ഒരു പംപ്കിൻ വർഗ്ഗത്തിൽ മാത്രം ശ്രദ്ധ കേന്ദ്രീകരിച്ച്, തീയതി വിലയിൽ എങ്ങനെ സ്വാധീനം ചെലുത്തുന്നു എന്ന് നോക്കാം: + +```python +pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] +pie_pumpkins.plot.scatter('DayOfYear','Price') +``` +Scatter plot of Price vs. Day of Year + +`Price`-നും `DayOfYear`-നും ഇടയിലെ സഹസംബന്ധം `corr` ഫംഗ്ഷൻ ഉപയോഗിച്ച് കണക്കാക്കുമ്പോൾ, ഏകദേശം `-0.27` കിട്ടും - ഇത് പ്രവചന മോഡൽ പരിശീലിപ്പിക്കുന്നത് യുക്തിയുള്ളതാണെന്ന് സൂചിപ്പിക്കുന്നു. + +> ലീനിയർ റെഗ്രഷൻ മോഡൽ പരിശീലിപ്പിക്കുന്നതിന് മുമ്പ്, ഡാറ്റ ശുദ്ധമാണെന്ന് ഉറപ്പാക്കുക. ലീനിയർ റെഗ്രഷൻ നഷ്ടപ്പെട്ട മൂല്യങ്ങളോടൊപ്പം നല്ല രീതിയിൽ പ്രവർത്തിക്കാറില്ല, അതിനാൽ എല്ലാ ശൂന്യ സെല്ലുകളും നീക്കം ചെയ്യുന്നത് ഉചിതമാണ്: + +```python +pie_pumpkins.dropna(inplace=True) +pie_pumpkins.info() +``` + +മറ്റൊരു സമീപനം, ആ ശൂന്യ മൂല്യങ്ങളെ അനുയോജ്യമായ കോളത്തിന്റെ ശരാശരി മൂല്യത്തോടെ പൂരിപ്പിക്കലായിരിക്കും. + +## ലളിത ലീനിയർ റെഗ്രഷൻ + +[![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn") + +> 🎥 ലീനിയർ, പോളിനോമിയൽ റെഗ്രഷൻ എന്നിവയുടെ ഒരു ചുരുക്ക വീഡിയോ അവലോകനത്തിനായി മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക. + +നമ്മുടെ ലീനിയർ റെഗ്രഷൻ മോഡൽ പരിശീലിപ്പിക്കാൻ, **Scikit-learn** ലൈബ്രറി ഉപയോഗിക്കും. + +```python +from sklearn.linear_model import LinearRegression +from sklearn.metrics import mean_squared_error +from sklearn.model_selection import train_test_split +``` + +ആദ്യമായി, ഇൻപുട്ട് മൂല്യങ്ങൾ (ഫീച്ചറുകൾ)യും പ്രതീക്ഷിക്കുന്ന ഔട്ട്പുട്ട് (ലേബൽ)യും വേർതിരിച്ച് numpy അറേകളായി മാറ്റുന്നു: + +```python +X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) +y = pie_pumpkins['Price'] +``` + +> ലീനിയർ റെഗ്രഷൻ പാക്കേജ് ശരിയായി മനസ്സിലാക്കാൻ ഇൻപുട്ട് ഡാറ്റയിൽ `reshape` നിർബന്ധമായിരുന്നു. ലീനിയർ റെഗ്രഷൻ 2D അറേയെ ഇൻപുട്ടായി പ്രതീക്ഷിക്കുന്നു, ഓരോ വരിയും ഇൻപുട്ട് ഫീച്ചറുകളുടെ വെക്ടറിനോട് അനുബന്ധിക്കുന്നു. നമ്മുടെ കേസിൽ, ഒരു ഇൻപുട്ട് മാത്രമുണ്ടെങ്കിൽ, N×1 ആകൃതിയിലുള്ള അറേ വേണം, ഇവിടെ N ഡാറ്റാസെറ്റിന്റെ വലുപ്പമാണ്. + +അതിനുശേഷം, ഡാറ്റ ട്രെയിൻ, ടെസ്റ്റ് ഡാറ്റാസെറ്റുകളായി വിഭജിക്കണം, മോഡൽ പരിശീലിപ്പിച്ചതിനു ശേഷം അത് പരിശോധിക്കാൻ: + +```python +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) +``` + +അവസാനമായി, ലീനിയർ റെഗ്രഷൻ മോഡൽ പരിശീലിപ്പിക്കുന്നത് രണ്ട് കോഡ് വരികളിൽ മാത്രമാണ്. `LinearRegression` ഒബ്ജക്റ്റ് നിർവചിച്ച്, `fit` മെത്തഡ് ഉപയോഗിച്ച് ഡാറ്റയിൽ ഫിറ്റ് ചെയ്യുന്നു: + +```python +lin_reg = LinearRegression() +lin_reg.fit(X_train,y_train) +``` + +`fit` ചെയ്ത ശേഷം `LinearRegression` ഒബ്ജക്റ്റിൽ റെഗ്രഷന്റെ എല്ലാ കോഫിഷ്യന്റുകളും `.coef_` പ്രോപ്പർട്ടി വഴി ലഭ്യമാണ്. നമ്മുടെ കേസിൽ, ഏക കോഫിഷ്യന്റ് മാത്രമേ ഉണ്ടാകൂ, ഏകദേശം `-0.017`. ഇത് വിലകൾ സമയം കൂടുമ്പോൾ കുറയുന്നു എന്ന് സൂചിപ്പിക്കുന്നു, ഏകദേശം ദിവസത്തിൽ 2 സെന്റ്. Y-അക്ഷത്തോടുള്ള റെഗ്രഷൻ രേഖയുടെ ഇന്റർസെപ്റ്റ് `lin_reg.intercept_` ഉപയോഗിച്ച് ലഭിക്കും - ഇത് ഏകദേശം `21` ആയിരിക്കും, വർഷം ആരംഭത്തിലെ വില സൂചിപ്പിക്കുന്നു. +നമ്മുടെ മോഡൽ എത്രത്തോളം കൃത്യമാണെന്ന് കാണാൻ, നാം ഒരു ടെസ്റ്റ് ഡാറ്റാസെറ്റിൽ വിലകൾ പ്രവചിച്ച്, പിന്നീട് നമ്മുടെ പ്രവചനങ്ങൾ പ്രതീക്ഷിച്ച മൂല്യങ്ങളോട് എത്രത്തോളം അടുത്തുവെന്ന് അളക്കാം. ഇത് ചെയ്യാൻ സാധിക്കുന്നത് മീൻ സ്ക്വയർ എറർ (MSE) മെട്രിക്‌സ് ഉപയോഗിച്ച് ആണ്, ഇത് പ്രതീക്ഷിച്ച മൂല്യവും പ്രവചിച്ച മൂല്യവും തമ്മിലുള്ള എല്ലാ സ്ക്വയർ ചെയ്ത വ്യത്യാസങ്ങളുടെ ശരാശരിയാണ്. + +```python +pred = lin_reg.predict(X_test) + +mse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +``` + +നമ്മുടെ പിശക് ഏകദേശം 2 പോയിന്റ് ചുറ്റും ആണ്, അത് ~17% ആണ്. വളരെ നല്ലതല്ല. മോഡൽ ഗുണനിലവാരത്തിന്റെ മറ്റൊരു സൂചികയാണ് **നിർണ്ണയ ഘടകം** (coefficient of determination), ഇത് ഇങ്ങനെ ലഭിക്കും: + +```python +score = lin_reg.score(X_train,y_train) +print('Model determination: ', score) +``` + +മൂല്യം 0 ആണെങ്കിൽ, മോഡൽ ഇൻപുട്ട് ഡാറ്റ പരിഗണിക്കാതെ *ഏറ്റവും മോശം ലീനിയർ പ്രവചകൻ* ആയി പ്രവർത്തിക്കുന്നു, അത് ഫലത്തിന്റെ ശരാശരിയാണ്. മൂല്യം 1 ആണെങ്കിൽ, നാം എല്ലാ പ്രതീക്ഷിച്ച ഔട്ട്പുട്ടുകളും പൂർണ്ണമായി പ്രവചിക്കാനാകും. നമ്മുടെ കേസിൽ, നിർണ്ണയ ഘടകം ഏകദേശം 0.06 ആണ്, ഇത് വളരെ കുറവാണ്. + +റിഗ്രഷൻ എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്ന് നന്നായി കാണാൻ, ടെസ്റ്റ് ഡാറ്റയും റിഗ്രഷൻ ലൈനും ചേർന്ന് പ്ലോട്ട് ചെയ്യാം: + +```python +plt.scatter(X_test,y_test) +plt.plot(X_test,pred) +``` + +Linear regression + +## പോളിനോമിയൽ റിഗ്രഷൻ + +ലീനിയർ റിഗ്രഷന്റെ മറ്റൊരു തരം പോളിനോമിയൽ റിഗ്രഷനാണ്. ചിലപ്പോൾ വേരിയബിളുകൾക്കിടയിൽ ലീനിയർ ബന്ധമുണ്ടാകാം - വോളിയം കൂടുതലായ പംപ്കിൻ വില കൂടുതലായിരിക്കും - എന്നാൽ ചിലപ്പോൾ ഈ ബന്ധങ്ങൾ ഒരു സമതലമോ നേരിയ ലൈനോ ആയി ചിത്രീകരിക്കാൻ കഴിയില്ല. + +✅ ഇവിടെ [കൂടുതൽ ഉദാഹരണങ്ങൾ](https://online.stat.psu.edu/stat501/lesson/9/9.8) ഉണ്ട്, പോളിനോമിയൽ റിഗ്രഷൻ ഉപയോഗിക്കാവുന്ന ഡാറ്റയുടെ. + +തീയതി (Date)യും വിലയും (Price)യും തമ്മിലുള്ള ബന്ധം വീണ്ടും നോക്കൂ. ഈ സ്കാറ്റർപ്ലോട്ട് ഒരു നേരിയ ലൈനിലൂടെ വിശകലനം ചെയ്യേണ്ടതുണ്ടോ? വിലകൾ മാറാറില്ലേ? ഈ സാഹചര്യത്തിൽ, നിങ്ങൾ പോളിനോമിയൽ റിഗ്രഷൻ പരീക്ഷിക്കാം. + +✅ പോളിനോമിയലുകൾ ഒരു അല്ലെങ്കിൽ കൂടുതൽ വേരിയബിളുകളും കോഫിഷ്യന്റുകളും അടങ്ങിയ ഗണിതപരമായ പ്രകടനങ്ങളാണ്. + +പോളിനോമിയൽ റിഗ്രഷൻ nonlinear ഡാറ്റയ്ക്ക് മികച്ച അനുയോജ്യമായ വളഞ്ഞ ലൈനുണ്ടാക്കുന്നു. നമ്മുടെ കേസിൽ, `DayOfYear` എന്ന വേരിയബിളിന്റെ സ്ക്വയർഡ് വേരിയബിള് ഇൻപുട്ടിൽ ഉൾപ്പെടുത്തുകയാണെങ്കിൽ, വർഷത്തിനുള്ളിൽ ഒരു പ്രത്യേക പോയിന്റിൽ കുറഞ്ഞ മൂല്യമുള്ള പാരബോളിക് വളഞ്ഞ ലൈനിൽ ഡാറ്റ ഫിറ്റ് ചെയ്യാൻ കഴിയും. + +Scikit-learn ല്‍ വിവിധ ഡാറ്റ പ്രോസസ്സിംഗ് ഘട്ടങ്ങൾ ചേർക്കാൻ സഹായിക്കുന്ന [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) ഉണ്ട്. **pipeline** എന്നത് **estimators** ന്റെ ഒരു ശൃംഖലയാണ്. നമ്മുടെ കേസിൽ, ആദ്യം മോഡലിൽ പോളിനോമിയൽ ഫീച്ചറുകൾ ചേർക്കുകയും പിന്നീട് റിഗ്രഷൻ ട്രെയിൻ ചെയ്യുകയും ചെയ്യുന്ന pipeline സൃഷ്ടിക്കും: + +```python +from sklearn.preprocessing import PolynomialFeatures +from sklearn.pipeline import make_pipeline + +pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) + +pipeline.fit(X_train,y_train) +``` + +`PolynomialFeatures(2)` ഉപയോഗിക്കുന്നത്, ഇൻപുട്ട് ഡാറ്റയിലെ എല്ലാ രണ്ടാം-ഡിഗ്രി പോളിനോമിയലുകളും ഉൾപ്പെടുത്തുമെന്ന് അർത്ഥം. നമ്മുടെ കേസിൽ ഇത് `DayOfYear`2 മാത്രമാണ്, പക്ഷേ രണ്ട് ഇൻപുട്ട് വേരിയബിളുകൾ X, Y ഉണ്ടെങ്കിൽ, ഇത് X2, XY, Y2 എന്നിവ ചേർക്കും. കൂടുതൽ ഡിഗ്രി പോളിനോമിയലുകളും ഉപയോഗിക്കാം. + +Pipeline-കൾ ആദ്യം ഉപയോഗിച്ച `LinearRegression` ഒബ്ജക്റ്റ് പോലെ തന്നെ ഉപയോഗിക്കാം, അഥവാ pipeline-നെ `fit` ചെയ്ത്, പിന്നീട് `predict` ഉപയോഗിച്ച് പ്രവചന ഫലങ്ങൾ നേടാം. ടെസ്റ്റ് ഡാറ്റയും അനുമാന വളഞ്ഞ ലൈനും കാണിക്കുന്ന ഗ്രാഫ് ഇതാ: + +Polynomial regression + +പോളിനോമിയൽ റിഗ്രഷൻ ഉപയോഗിച്ച്, നാം കുറച്ച് താഴ്ന്ന MSEയും ഉയർന്ന നിർണ്ണയ ഘടകവും നേടാം, പക്ഷേ വലിയ വ്യത്യാസമില്ല. മറ്റ് ഫീച്ചറുകളും പരിഗണിക്കേണ്ടതാണ്! + +> നിങ്ങൾക്ക് കാണാം, ഏറ്റവും കുറഞ്ഞ പംപ്കിൻ വില ഹാലോവീൻ സമയത്ത് കാണപ്പെടുന്നു. ഇതെങ്ങനെ വിശദീകരിക്കാം? + +🎃 അഭിനന്ദനങ്ങൾ, നിങ്ങൾ പൈ പംപ്കിൻ വില പ്രവചിക്കാൻ സഹായിക്കുന്ന മോഡൽ സൃഷ്ടിച്ചു. എല്ലാ പംപ്കിൻ തരംകൾക്കും ഇതേ പ്രക്രിയ ആവർത്തിക്കാം, പക്ഷേ അത് ബുദ്ധിമുട്ടുള്ളതാണ്. ഇനി നാം പഠിക്കാം, പംപ്കിൻ വൈവിധ്യം നമ്മുടെ മോഡലിൽ എങ്ങനെ പരിഗണിക്കാം! + +## വർഗ്ഗീയ ഫീച്ചറുകൾ + +ആദർശ ലോകത്ത്, നാം ഒരേ മോഡൽ ഉപയോഗിച്ച് വ്യത്യസ്ത പംപ്കിൻ വൈവിധ്യങ്ങളുടെ വില പ്രവചിക്കാൻ ആഗ്രഹിക്കുന്നു. എന്നാൽ, `Variety` കോളം `Month` പോലുള്ള കോളങ്ങളേക്കാൾ വ്യത്യസ്തമാണ്, കാരണം അതിൽ സംഖ്യാത്മകമല്ലാത്ത മൂല്യങ്ങൾ ഉണ്ട്. ഇത്തരം കോളങ്ങൾ **വർഗ്ഗീയ** (categorical) എന്ന് വിളിക്കുന്നു. + +[![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") + +> 🎥 വർഗ്ഗീയ ഫീച്ചറുകൾ ഉപയോഗിക്കുന്നതിന്റെ ഒരു ചെറിയ വീഡിയോ അവലോകനത്തിന് മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക. + +ഇവിടെ നിങ്ങൾക്ക് കാണാം, ശരാശരി വില വൈവിധ്യത്തെ ആശ്രയിച്ചിരിക്കുന്നു: + +Average price by variety + +വൈവിധ്യം പരിഗണിക്കാൻ, ആദ്യം അത് സംഖ്യാത്മക രൂപത്തിലേക്ക് മാറ്റണം, അല്ലെങ്കിൽ **എൻകോഡ്** ചെയ്യണം. ഇത് ചെയ്യാനുള്ള ചില മാർഗ്ഗങ്ങൾ: + +* ലളിതമായ **സംഖ്യാത്മക എൻകോഡിംഗ്** വ്യത്യസ്ത വൈവിധ്യങ്ങളുടെ പട്ടിക സൃഷ്ടിച്ച്, ആ പട്ടികയിലെ ഇൻഡക്സ് ഉപയോഗിച്ച് വൈവിധ്യത്തിന്റെ പേര് മാറ്റും. ഇത് ലീനിയർ റിഗ്രഷനിൽ നല്ല ആശയമല്ല, കാരണം ലീനിയർ റിഗ്രഷൻ ഇൻഡക്സ് സംഖ്യയുടെ യഥാർത്ഥ മൂല്യം എടുത്ത് ഫലത്തിൽ കൂട്ടിച്ചേർക്കും, ചില കോഫിഷ്യന്റുകളാൽ ഗുണിച്ച്. നമ്മുടെ കേസിൽ, ഇൻഡക്സ് നമ്പറും വിലയും തമ്മിലുള്ള ബന്ധം വ്യക്തമായി nonlinear ആണ്, ഇൻഡക്സുകൾ പ്രത്യേക ക്രമത്തിൽ ക്രമീകരിച്ചാലും. +* **ഒന്ന്-ഹോട്ട് എൻകോഡിംഗ്** `Variety` കോളം 4 വ്യത്യസ്ത കോളങ്ങളായി മാറ്റും, ഓരോ വൈവിധ്യത്തിനും ഒരു കോളം. ഓരോ കോളവും ആ വരി ആ വൈവിധ്യത്തിനുള്ളതാണെങ്കിൽ `1` അടങ്ങിയിരിക്കും, അല്ലെങ്കിൽ `0`. ഇതിന്റെ അർത്ഥം, ലീനിയർ റിഗ്രഷനിൽ ഓരോ പംപ്കിൻ വൈവിധ്യത്തിനും നാല് കോഫിഷ്യന്റുകൾ ഉണ്ടാകും, ഓരോ വൈവിധ്യത്തിനും "ആരംഭ വില" (അഥവാ "കൂടുതൽ വില") നിർണ്ണയിക്കാൻ. + +വൈവിധ്യം ഒന്ന്-ഹോട്ട് എൻകോഡ് ചെയ്യുന്നത് കാണിക്കുന്ന കോഡ് താഴെ: + +```python +pd.get_dummies(new_pumpkins['Variety']) +``` + + ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE +----|-----------|-----------|--------------------------|---------- +70 | 0 | 0 | 0 | 1 +71 | 0 | 0 | 0 | 1 +... | ... | ... | ... | ... +1738 | 0 | 1 | 0 | 0 +1739 | 0 | 1 | 0 | 0 +1740 | 0 | 1 | 0 | 0 +1741 | 0 | 1 | 0 | 0 +1742 | 0 | 1 | 0 | 0 + +ഒന്ന്-ഹോട്ട് എൻകോഡ് ചെയ്ത വൈവിധ്യം ഇൻപുട്ടായി ഉപയോഗിച്ച് ലീനിയർ റിഗ്രഷൻ ട്രെയിൻ ചെയ്യാൻ, `X`യും `y`യും ശരിയായി ഇൻഷിയലൈസ് ചെയ്യണം: + +```python +X = pd.get_dummies(new_pumpkins['Variety']) +y = new_pumpkins['Price'] +``` + +മറ്റുള്ള കോഡ് മുകളിൽ ലീനിയർ റിഗ്രഷൻ ട്രെയിനിംഗിനായി ഉപയോഗിച്ച കോഡിനോട് സമാനമാണ്. പരീക്ഷിച്ചാൽ, മീൻ സ്ക്വയർ എറർ ഏകദേശം അതേപോലെയാണ്, പക്ഷേ നിർണ്ണയ ഘടകം വളരെ ഉയർന്ന (~77%) ആണ്. കൂടുതൽ കൃത്യമായ പ്രവചനങ്ങൾക്കായി, നാം കൂടുതൽ വർഗ്ഗീയ ഫീച്ചറുകളും സംഖ്യാത്മക ഫീച്ചറുകളും, ഉദാഹരണത്തിന് `Month` അല്ലെങ്കിൽ `DayOfYear` ഉൾപ്പെടുത്താം. വലിയ ഒരു ഫീച്ചർ അറേ ഉണ്ടാക്കാൻ `join` ഉപയോഗിക്കാം: + +```python +X = pd.get_dummies(new_pumpkins['Variety']) \ + .join(new_pumpkins['Month']) \ + .join(pd.get_dummies(new_pumpkins['City'])) \ + .join(pd.get_dummies(new_pumpkins['Package'])) +y = new_pumpkins['Price'] +``` + +ഇവിടെ നാം `City`യും `Package` തരംയും പരിഗണിക്കുന്നു, ഇത് MSE 2.84 (10%)യും നിർണ്ണയ ഘടകം 0.94 ഉം നൽകുന്നു! + +## എല്ലാം ചേർത്ത് + +മികച്ച മോഡൽ ഉണ്ടാക്കാൻ, മുകളിൽ നൽകിയ സംയുക്ത (ഒന്ന്-ഹോട്ട് എൻകോഡ് ചെയ്ത വർഗ്ഗീയ + സംഖ്യാത്മക) ഡാറ്റ പോളിനോമിയൽ റിഗ്രഷനോടൊപ്പം ഉപയോഗിക്കാം. നിങ്ങളുടെ സൗകര്യത്തിനായി പൂർണ്ണ കോഡ് ഇതാ: + +```python +# പരിശീലന ഡാറ്റ സജ്ജമാക്കുക +X = pd.get_dummies(new_pumpkins['Variety']) \ + .join(new_pumpkins['Month']) \ + .join(pd.get_dummies(new_pumpkins['City'])) \ + .join(pd.get_dummies(new_pumpkins['Package'])) +y = new_pumpkins['Price'] + +# ട്രെയിൻ-ടെസ്റ്റ് വിഭജനം നടത്തുക +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) + +# പൈപ്പ്‌ലൈൻ സജ്ജമാക്കി പരിശീലിപ്പിക്കുക +pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) +pipeline.fit(X_train,y_train) + +# ടെസ്റ്റ് ഡാറ്റയ്ക്ക് ഫലം പ്രവചിക്കുക +pred = pipeline.predict(X_test) + +# MSEയും നിർണ്ണയവും കണക്കാക്കുക +mse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +ഇത് ഏകദേശം 97% നിർണ്ണയ ഘടകവും MSE=2.23 (~8% പ്രവചന പിശക്)യും നൽകും. + +| മോഡൽ | MSE | നിർണ്ണയം | +|-------|-----|---------| +| `DayOfYear` ലീനിയർ | 2.77 (17.2%) | 0.07 | +| `DayOfYear` പോളിനോമിയൽ | 2.73 (17.0%) | 0.08 | +| `Variety` ലീനിയർ | 5.24 (19.7%) | 0.77 | +| എല്ലാ ഫീച്ചറുകളും ലീനിയർ | 2.84 (10.5%) | 0.94 | +| എല്ലാ ഫീച്ചറുകളും പോളിനോമിയൽ | 2.23 (8.25%) | 0.97 | + +🏆 നന്നായി! നിങ്ങൾ ഒരു പാഠത്തിൽ നാല് റിഗ്രഷൻ മോഡലുകൾ സൃഷ്ടിച്ചു, മോഡൽ ഗുണനിലവാരം 97% വരെ മെച്ചപ്പെടുത്തി. റിഗ്രഷൻ അവസാന ഭാഗത്ത്, നിങ്ങൾക്ക് വിഭാഗങ്ങൾ നിർണ്ണയിക്കാൻ ലൊജിസ്റ്റിക് റിഗ്രഷൻ പഠിക്കാം. + +--- +## 🚀ചലഞ്ച് + +ഈ നോട്ട്‌ബുക്കിൽ വിവിധ വേരിയബിളുകൾ പരീക്ഷിച്ച്, സഹസംബന്ധം മോഡൽ കൃത്യതയുമായി എങ്ങനെ ബന്ധപ്പെട്ടിരിക്കുന്നു എന്ന് കാണുക. + +## [പാഠം കഴിഞ്ഞുള്ള ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +## അവലോകനം & സ്വയം പഠനം + +ഈ പാഠത്തിൽ നാം ലീനിയർ റിഗ്രഷൻ പഠിച്ചു. മറ്റ് പ്രധാന റിഗ്രഷൻ തരംകളും ഉണ്ട്. Stepwise, Ridge, Lasso, Elasticnet സാങ്കേതികതകൾക്കുറിച്ച് വായിക്കുക. കൂടുതൽ പഠിക്കാൻ നല്ല കോഴ്സ് [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) ആണ്. + +## അസൈൻമെന്റ് + +[മോഡൽ നിർമ്മിക്കുക](assignment.md) + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ അധികാരപരമായ ഉറവിടമായി കണക്കാക്കപ്പെടണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനത്തിന്റെ ഉപയോഗത്തിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/2-Regression/3-Linear/assignment.md b/translations/ml/2-Regression/3-Linear/assignment.md new file mode 100644 index 000000000..0d9aadf12 --- /dev/null +++ b/translations/ml/2-Regression/3-Linear/assignment.md @@ -0,0 +1,27 @@ + +# ഒരു റെഗ്രഷൻ മോഡൽ സൃഷ്ടിക്കുക + +## നിർദ്ദേശങ്ങൾ + +ഈ പാഠത്തിൽ നിങ്ങൾക്ക് ലീനിയർ റെഗ്രഷനും പോളിനോമിയൽ റെഗ്രഷനും ഉപയോഗിച്ച് ഒരു മോഡൽ എങ്ങനെ നിർമ്മിക്കാമെന്ന് കാണിച്ചു. ഈ അറിവ് ഉപയോഗിച്ച്, ഒരു ഡാറ്റാസെറ്റ് കണ്ടെത്തുക അല്ലെങ്കിൽ Scikit-learn-ന്റെ ഇൻബിൽറ്റ് സെറ്റുകളിൽ ഒന്നുപയോഗിച്ച് പുതിയ ഒരു മോഡൽ നിർമ്മിക്കുക. നിങ്ങൾ തിരഞ്ഞെടുക്കുന്ന സാങ്കേതിക വിദ്യ എന്തുകൊണ്ടാണെന്ന് നിങ്ങളുടെ നോട്ട്‌ബുക്കിൽ വിശദീകരിക്കുക, കൂടാതെ നിങ്ങളുടെ മോഡലിന്റെ കൃത്യത പ്രദർശിപ്പിക്കുക. അത് കൃത്യമല്ലെങ്കിൽ, എന്തുകൊണ്ടാണെന്ന് വിശദീകരിക്കുക. + +## റൂബ്രിക് + +| മാനദണ്ഡം | ഉദാഹരണാർത്ഥം | മതിയായത് | മെച്ചപ്പെടുത്തേണ്ടത് | +| -------- | ------------------------------------------------------------ | -------------------------- | ------------------------------- | +| | നന്നായി രേഖപ്പെടുത്തിയ പരിഹാരത്തോടെ പൂർണ്ണമായ ഒരു നോട്ട്‌ബുക്ക് അവതരിപ്പിക്കുന്നു | പരിഹാരം അപൂർണ്ണമാണ് | പരിഹാരം തെറ്റായതോ ബഗ്ഗിയോടെയോ ആണ് | + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനത്തിന്റെ ഉപയോഗത്തിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/2-Regression/3-Linear/notebook.ipynb b/translations/ml/2-Regression/3-Linear/notebook.ipynb new file mode 100644 index 000000000..a66e35965 --- /dev/null +++ b/translations/ml/2-Regression/3-Linear/notebook.ipynb @@ -0,0 +1,128 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Pumpkin Pricing\n", + "\n", + "ആവശ്യമായ ലൈബ്രറികളും ഡാറ്റാസെറ്റും ലോഡ് ചെയ്യുക. ഡാറ്റയുടെ ഒരു ഉപസമൂഹം അടങ്ങിയ ഡാറ്റാഫ്രെയിമിലേക്ക് ഡാറ്റ മാറ്റുക:\n", + "\n", + "- ബഷെൽ പ്രകാരം വില നിശ്ചയിച്ച പംപ്കിനുകൾ മാത്രം എടുക്കുക\n", + "- തീയതി ഒരു മാസമായി മാറ്റുക\n", + "- ഉയർന്ന വിലയും താഴ്ന്ന വിലയും ശരാശരിയായി വില കണക്കാക്കുക\n", + "- ബഷെൽ അളവിൽ വില പ്രതിഫലിപ്പിക്കാൻ വില മാറ്റുക\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from datetime import datetime\n", + "\n", + "pumpkins = pd.read_csv('../data/US-pumpkins.csv')\n", + "\n", + "pumpkins.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n", + "\n", + "columns_to_select = ['Package', 'Variety', 'City Name', 'Low Price', 'High Price', 'Date']\n", + "pumpkins = pumpkins.loc[:, columns_to_select]\n", + "\n", + "price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2\n", + "\n", + "month = pd.DatetimeIndex(pumpkins['Date']).month\n", + "day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days)\n", + "\n", + "new_pumpkins = pd.DataFrame(\n", + " {'Month': month, \n", + " 'DayOfYear' : day_of_year, \n", + " 'Variety': pumpkins['Variety'], \n", + " 'City': pumpkins['City Name'], \n", + " 'Package': pumpkins['Package'], \n", + " 'Low Price': pumpkins['Low Price'],\n", + " 'High Price': pumpkins['High Price'], \n", + " 'Price': price})\n", + "\n", + "new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/1.1\n", + "new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price*2\n", + "\n", + "new_pumpkins.head()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ഒരു അടിസ്ഥാന സ്‌കാറ്റർപ്ലോട്ട് നമ്മെ ഓർമ്മിപ്പിക്കുന്നത് ആഗസ്റ്റ് മുതൽ ഡിസംബർ വരെ മാത്രമേ മാസ ഡാറ്റ ഉണ്ടായിരിക്കുകയുള്ളൂ എന്നതാണ്. ലീനിയർ രീതിയിൽ നിഗമനങ്ങൾ വരയ്ക്കാൻ കൂടുതൽ ഡാറ്റ ആവശ്യമുണ്ടാകാം.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "plt.scatter('Month','Price',data=new_pumpkins)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "plt.scatter('DayOfYear','Price',data=new_pumpkins)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**അസൂയാപത്രം**: \nഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, യന്ത്രം ചെയ്ത വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ അധികാരപരമായ ഉറവിടമായി കണക്കാക്കപ്പെടണം. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല.\n\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.3-final" + }, + "orig_nbformat": 2, + "coopTranslator": { + "original_hash": "b032d371c75279373507f003439a577e", + "translation_date": "2025-12-19T16:17:35+00:00", + "source_file": "2-Regression/3-Linear/notebook.ipynb", + "language_code": "ml" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/translations/ml/2-Regression/3-Linear/solution/Julia/README.md b/translations/ml/2-Regression/3-Linear/solution/Julia/README.md new file mode 100644 index 000000000..0539c7e74 --- /dev/null +++ b/translations/ml/2-Regression/3-Linear/solution/Julia/README.md @@ -0,0 +1,17 @@ + +ഇത് ഒരു താൽക്കാലിക പ്ലേസ്ഹോൾഡർ ആണ് + +--- + + +**അസൂയാപത്രം**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, യന്ത്രം ചെയ്ത വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ അധികാരപരമായ ഉറവിടമായി കണക്കാക്കപ്പെടണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/2-Regression/3-Linear/solution/R/lesson_3-R.ipynb b/translations/ml/2-Regression/3-Linear/solution/R/lesson_3-R.ipynb new file mode 100644 index 000000000..2143bb365 --- /dev/null +++ b/translations/ml/2-Regression/3-Linear/solution/R/lesson_3-R.ipynb @@ -0,0 +1,1084 @@ +{ + "nbformat": 4, + "nbformat_minor": 2, + "metadata": { + "colab": { + "name": "lesson_3-R.ipynb", + "provenance": [], + "collapsed_sections": [], + "toc_visible": true + }, + "kernelspec": { + "name": "ir", + "display_name": "R" + }, + "language_info": { + "name": "R" + }, + "coopTranslator": { + "original_hash": "5015d65d61ba75a223bfc56c273aa174", + "translation_date": "2025-12-19T16:25:20+00:00", + "source_file": "2-Regression/3-Linear/solution/R/lesson_3-R.ipynb", + "language_code": "ml" + } + }, + "cells": [ + { + "cell_type": "markdown", + "source": [ + "# ഒരു റെഗ്രഷൻ മോഡൽ നിർമ്മിക്കുക: ലീനിയർ மற்றும் പോളിനോമിയൽ റെഗ്രഷൻ മോഡലുകൾ\n" + ], + "metadata": { + "id": "EgQw8osnsUV-" + } + }, + { + "cell_type": "markdown", + "source": [ + "## പംപ്കിൻ വിലനിർണ്ണയത്തിനുള്ള ലീനിയർ ആൻഡ് പോളിനോമിയൽ റെഗ്രഷൻ - പാഠം 3\n", + "

\n", + " \n", + "

ഇൻഫോഗ്രാഫിക് - ദാസാനി മടിപള്ളി
\n", + "\n", + "\n", + "\n", + "\n", + "#### പരിചയം\n", + "\n", + "ഇതുവരെ നിങ്ങൾ പംപ്കിൻ വിലനിർണ്ണയ ഡാറ്റാസെറ്റിൽ നിന്നുള്ള സാമ്പിൾ ഡാറ്റ ഉപയോഗിച്ച് റെഗ്രഷൻ എന്താണെന്ന് അന്വേഷിച്ചു. നിങ്ങൾ അത് `ggplot2` ഉപയോഗിച്ച് ദൃശ്യവൽക്കരിക്കുകയും ചെയ്തു.💪\n", + "\n", + "ഇപ്പോൾ നിങ്ങൾ മെഷീൻ ലേണിംഗിനുള്ള റെഗ്രഷനിൽ കൂടുതൽ ആഴത്തിൽ പ്രവേശിക്കാൻ തയ്യാറാണ്. ഈ പാഠത്തിൽ, നിങ്ങൾക്ക് രണ്ട് തരത്തിലുള്ള റെഗ്രഷനുകൾക്കുറിച്ച് കൂടുതൽ അറിയാം: *അടിസ്ഥാന ലീനിയർ റെഗ്രഷൻ*യും *പോളിനോമിയൽ റെഗ്രഷൻ*യും, കൂടാതെ ഈ സാങ്കേതികവിദ്യകളുടെ പിന്നിലെ ചില ഗണിതശാസ്ത്രവും.\n", + "\n", + "> ഈ പാഠ്യപദ്ധതിയിൽ, ഗണിതത്തിലെ അടിസ്ഥാന അറിവുകൾ മാത്രമേ ആവശ്യമായുള്ളൂ എന്ന് നാം കരുതുന്നു, മറ്റ് മേഖലകളിൽ നിന്നുള്ള വിദ്യാർത്ഥികൾക്ക് ഇത് സുലഭമാക്കാൻ നോട്ടുകൾ, 🧮 വിളിപ്പറയലുകൾ, ചിത്രങ്ങൾ, മറ്റ് പഠനോപകരണങ്ങൾ എന്നിവ ഉപയോഗിക്കുന്നു.\n", + "\n", + "#### തയ്യാറെടുപ്പ്\n", + "\n", + "ഓർമ്മപ്പെടുത്തലായി, നിങ്ങൾ ഈ ഡാറ്റ ലോഡ് ചെയ്യുന്നത് അതിൽ നിന്നുള്ള ചോദ്യങ്ങൾ ചോദിക്കാൻ ആണ്.\n", + "\n", + "- പംപ്കിനുകൾ വാങ്ങാൻ ഏറ്റവും നല്ല സമയം എപ്പോൾ?\n", + "\n", + "- ഒരു മിനിയേച്ചർ പംപ്കിൻ കേസിന്റെ വില എത്ര പ്രതീക്ഷിക്കാം?\n", + "\n", + "- അവയെ അർദ്ധ-ബഷൽ ബാസ്കറ്റുകളിൽ വാങ്ങണോ, 1 1/9 ബഷൽ ബോക്സിൽ വാങ്ങണോ? ഈ ഡാറ്റയിൽ കൂടുതൽ അന്വേഷിക്കാം.\n", + "\n", + "മുൻപത്തെ പാഠത്തിൽ, നിങ്ങൾ ഒരു `tibble` (ഡാറ്റാ ഫ്രെയിമിന്റെ ആധുനിക രൂപം) സൃഷ്ടിച്ച് അതിൽ യഥാർത്ഥ ഡാറ്റാസെറ്റിന്റെ ഭാഗം ഉൾപ്പെടുത്തി, വില ബഷലിനനുസരിച്ച് സ്റ്റാൻഡർഡൈസ് ചെയ്തു. എന്നാൽ അതിലൂടെ നിങ്ങൾക്ക് ഏകദേശം 400 ഡാറ്റാ പോയിന്റുകൾ മാത്രമേ ലഭിച്ചുള്ളൂ, അത് പോലും പകുതിവർഷ കാലയളവിനുള്ളിൽ മാത്രം. ഡാറ്റയുടെ സ്വഭാവത്തെ കുറിച്ച് കൂടുതൽ വിശദാംശങ്ങൾ ലഭിക്കാൻ നാം കൂടുതൽ ശുദ്ധീകരണം നടത്താമോ? നോക്കാം... 🕵️‍♀️\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", + "- `janitor`: [janitor പാക്കേജ്](https://github.com/sfirke/janitor) മാലിന്യമായ ഡാറ്റ പരിശോധിക്കാനും ശുദ്ധമാക്കാനും സഹായിക്കുന്ന ലളിതമായ ഉപകരണങ്ങൾ നൽകുന്നു.\n", + "\n", + "- `corrplot`: [corrplot പാക്കേജ്](https://cran.r-project.org/web/packages/corrplot/vignettes/corrplot-intro.html) കോറിലേഷൻ മാട്രിക്സിന്റെ ദൃശ്യപരിശോധനാ ഉപകരണം ആണ്, സ്വയം വേരിയബിൾ ക്രമീകരണം പിന്തുണയ്ക്കുന്നു, ഇതിലൂടെ വേരിയബിളുകൾക്കിടയിലെ മറഞ്ഞിരിക്കുന്ന മാതൃകകൾ കണ്ടെത്താൻ സഹായിക്കുന്നു.\n", + "\n", + "ഇവ ഇൻസ്റ്റാൾ ചെയ്യാൻ:\n", + "\n", + "`install.packages(c(\"tidyverse\", \"tidymodels\", \"janitor\", \"corrplot\"))`\n", + "\n", + "താഴെ കൊടുത്തിരിക്കുന്ന സ്ക്രിപ്റ്റ് ഈ മോഡ്യൂൾ പൂർത്തിയാക്കാൻ ആവശ്യമായ പാക്കേജുകൾ നിങ്ങൾക്കുണ്ടോ എന്ന് പരിശോധിച്ച്, ഇല്ലെങ്കിൽ ഇൻസ്റ്റാൾ ചെയ്യും.\n" + ], + "metadata": { + "id": "WqQPS1OAsg3H" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "suppressWarnings(if (!require(\"pacman\")) install.packages(\"pacman\"))\n", + "\n", + "pacman::p_load(tidyverse, tidymodels, janitor, corrplot)" + ], + "outputs": [], + "metadata": { + "id": "tA4C2WN3skCf", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "c06cd805-5534-4edc-f72b-d0d1dab96ac0" + } + }, + { + "cell_type": "markdown", + "source": [ + "നാം പിന്നീട് ഈ അത്ഭുതകരമായ പാക്കേജുകൾ ലോഡ് ചെയ്ത് നമ്മുടെ നിലവിലെ R സെഷനിൽ ലഭ്യമാക്കും. (ഇത് വെറും ഉദാഹരണത്തിന് ആണ്, `pacman::p_load()` ഇതിനകം തന്നെ അത് ചെയ്തിട്ടുണ്ട്)\n", + "\n", + "## 1. ഒരു ലീനിയർ റെഗ്രഷൻ ലൈൻ\n", + "\n", + "പാഠം 1-ൽ നിങ്ങൾ പഠിച്ചതുപോലെ, ഒരു ലീനിയർ റെഗ്രഷൻ അഭ്യാസത്തിന്റെ ലക്ഷ്യം ഒരു *ബെസ്റ്റ് ഫിറ്റ്* *ലൈൻ* വരയ്ക്കാനാകണം:\n", + "\n", + "- **വേരിയബിൾ ബന്ധങ്ങൾ കാണിക്കുക**. വേരിയബിളുകൾ തമ്മിലുള്ള ബന്ധം കാണിക്കുക\n", + "\n", + "- **ഭാവി പ്രവചനങ്ങൾ നടത്തുക**. ഒരു പുതിയ ഡാറ്റാ പോയിന്റ് ആ ലൈൻ സംബന്ധിച്ച് എവിടെ വരുമെന്ന് കൃത്യമായി പ്രവചിക്കുക.\n", + "\n", + "ഈ തരത്തിലുള്ള ഒരു ലൈൻ വരയ്ക്കാൻ, നാം **ലീസ്റ്റ്-സ്ക്വയർസ് റെഗ്രഷൻ** എന്ന സ്റ്റാറ്റിസ്റ്റിക്കൽ സാങ്കേതിക വിദ്യ ഉപയോഗിക്കുന്നു. `least-squares` എന്ന പദം അർത്ഥമാക്കുന്നത് റെഗ്രഷൻ ലൈൻ ചുറ്റുമുള്ള എല്ലാ ഡാറ്റാ പോയിന്റുകളും സ്ക്വയർ ചെയ്ത് കൂട്ടിച്ചേർക്കുന്നതാണ്. ആശയവിനിമയമായി, ആ അവസാനത്തുക όσο ചെറുതായിരിക്കണം, കാരണം നാം കുറവ് പിശകുകൾ (errors) ആഗ്രഹിക്കുന്നു, അതായത് `least-squares`. അതിനാൽ, ബെസ്റ്റ് ഫിറ്റ് ലൈൻ എന്നത് സ്ക്വയർ ചെയ്ത പിശകുകളുടെ മൊത്തം മൂല്യം ഏറ്റവും കുറഞ്ഞ ലൈൻ ആണ് - അതുകൊണ്ടാണ് ഇതിന് *least squares regression* എന്ന് പേരിട്ടിരിക്കുന്നത്.\n", + "\n", + "നാം ഇങ്ങനെ ചെയ്യുന്നത് എല്ലാ ഡാറ്റാ പോയിന്റുകളിലേക്കുള്ള കൂറ്റൻ ദൂരം കുറഞ്ഞ ഒരു ലൈൻ മോഡൽ ചെയ്യാൻ ആഗ്രഹിക്കുന്നതിനാൽ ആണ്. ദിശയേക്കാൾ അതിന്റെ വലിപ്പം (magnitude) പ്രധാനമാണെന്ന് കണക്കിലെടുത്ത് നാം സ്ക്വയർ ചെയ്യുന്നു.\n", + "\n", + "> **🧮 ഗണിതം കാണിക്കൂ**\n", + ">\n", + "> *ബെസ്റ്റ് ഫിറ്റ് ലൈൻ* എന്ന് വിളിക്കുന്ന ഈ ലൈൻ [ഒരു സമവാക്യം](https://en.wikipedia.org/wiki/Simple_linear_regression) ഉപയോഗിച്ച് പ്രകടിപ്പിക്കാം:\n", + ">\n", + "> Y = a + bX\n", + ">\n", + "> `X` എന്നത് '`വ്യാഖ്യാന വേരിയബിൾ` അല്ലെങ്കിൽ `പ്രെഡിക്ടർ`' ആണ്. `Y` '`അനുഭവ വേരിയബിൾ` അല്ലെങ്കിൽ `ഫലം`' ആണ്. ലൈന്റെ സ്ലോപ്പ് `b` ആണ്, `a` y-ഇന്റർസെപ്റ്റ് ആണ്, അതായത് `X = 0` ആയപ്പോൾ `Y` യുടെ മൂല്യം.\n", + "\n", + "> ![](../../../../../../2-Regression/3-Linear/solution/images/slope.png \"slope = $y/x$\")\n", + " Jen Looper-ന്റെ ഇൻഫോഗ്രാഫിക്\n", + ">\n", + "> ആദ്യം, സ്ലോപ്പ് `b` കണക്കാക്കുക.\n", + ">\n", + "> മറ്റൊരു വാക്കിൽ പറഞ്ഞാൽ, നമ്മുടെ പംപ്കിൻ ഡാറ്റയുടെ പ്രാഥമിക ചോദ്യത്തെ ആശ്രയിച്ച്: \"ഒരു മാസത്തിൽ പംപ്കിന്റെ വില ബുഷലിന് എത്ര predict ചെയ്യുക\", `X` വിലയെ സൂചിപ്പിക്കും, `Y` വിൽപ്പന മാസത്തെ സൂചിപ്പിക്കും.\n", + ">\n", + "> ![](../../../../../../translated_images/calculation.989aa7822020d9d0ba9fc781f1ab5192f3421be86ebb88026528aef33c37b0d8.ml.png)\n", + " Jen Looper-ന്റെ ഇൻഫോഗ്രാഫിക്\n", + "> \n", + "> Y യുടെ മൂല്യം കണക്കാക്കുക. നിങ്ങൾ ഏകദേശം \\$4 നൽകുകയാണെങ്കിൽ, അത് ഏപ്രിൽ ആയിരിക്കണം!\n", + ">\n", + "> ലൈൻ കണക്കാക്കുന്ന ഗണിതം സ്ലോപ്പും ഇന്റർസെപ്റ്റും ആശ്രയിച്ചിരിക്കുന്നു, അതായത് `X = 0` ആയപ്പോൾ `Y` എവിടെയാണ് എന്നതും.\n", + ">\n", + "> ഈ മൂല്യങ്ങൾ കണക്കാക്കുന്ന രീതി [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) വെബ്സൈറ്റിൽ കാണാം. കൂടാതെ [ഈ Least-squares കാൽക്കുലേറ്റർ](https://www.mathsisfun.com/data/least-squares-calculator.html) സന്ദർശിച്ച് സംഖ്യകളുടെ മൂല്യങ്ങൾ ലൈൻ എങ്ങനെ ബാധിക്കുന്നുവെന്ന് കാണാം.\n", + "\n", + "അതിനാൽ ഭയപ്പെടേണ്ട കാര്യമില്ല, അല്ലേ? 🤓\n", + "\n", + "#### സഹസംബന്ധം (Correlation)\n", + "\n", + "കൂടുതൽ മനസ്സിലാക്കേണ്ട മറ്റൊരു പദം **Correlation Coefficient** ആണ്, ഇത് നൽകിയ X, Y വേരിയബിളുകൾക്കിടയിലെ ബന്ധം അളക്കുന്നു. സ്കാറ്റർപ്ലോട്ട് ഉപയോഗിച്ച് ഈ കോഫിഷ്യന്റ് എളുപ്പത്തിൽ കാണാം. ഡാറ്റാപോയിന്റുകൾ ഒരു സുതാര്യമായ ലൈൻ രൂപത്തിൽ പടർന്നാൽ correlation ഉയർന്നതാണ്, എന്നാൽ X, Y ഇടയിൽ എല്ലായിടത്തും പടർന്നാൽ correlation കുറവാണ്.\n", + "\n", + "ഒരു നല്ല ലീനിയർ റെഗ്രഷൻ മോഡൽ Least-Squares Regression രീതിയിൽ regression ലൈൻ ഉപയോഗിച്ച് Correlation Coefficient 1-ന് അടുത്ത (0-ന് പകരം) ഉയർന്ന മൂല്യമുള്ളതായിരിക്കും.\n" + ], + "metadata": { + "id": "cdX5FRpvsoP5" + } + }, + { + "cell_type": "markdown", + "source": [ + "## **2. ഡാറ്റയുമായി ഒരു നൃത്തം: മോഡലിംഗിനായി ഉപയോഗിക്കപ്പെടുന്ന ഒരു ഡാറ്റാ ഫ്രെയിം സൃഷ്ടിക്കൽ**\n", + "\n", + "

\n", + " \n", + "

@allison_horst എന്നവരുടെ കലാസൃഷ്ടി
\n", + "\n", + "\n", + "\n" + ], + "metadata": { + "id": "WdUKXk7Bs8-V" + } + }, + { + "cell_type": "markdown", + "source": [ + "Load up required libraries and dataset. Convert the data to a data frame containing a subset of the data:\n", + "\n", + "- ബസൽ വിലയിട്ട പംപ്കിനുകൾ മാത്രം നേടുക\n", + "\n", + "- തീയതി ഒരു മാസമായി മാറ്റുക\n", + "\n", + "- വില ഉയർന്നതും താഴ്ന്നതും ശരാശരി ആയി കണക്കാക്കുക\n", + "\n", + "- വില ബസൽ അളവിൽ വിലയിടുന്നതായി മാറ്റുക\n", + "\n", + "> We covered these steps in the [previous lesson](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/2-Data/solution/lesson_2-R.ipynb).\n" + ], + "metadata": { + "id": "fMCtu2G2s-p8" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Load the core Tidyverse packages\n", + "library(tidyverse)\n", + "library(lubridate)\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 = 5)" + ], + "outputs": [], + "metadata": { + "id": "ryMVZEEPtERn" + } + }, + { + "cell_type": "markdown", + "source": [ + "ശുദ്ധമായ സാഹസികതയുടെ ആത്മാവിൽ, മാലിന്യമായ ഡാറ്റ പരിശോധിക്കാനും ശുദ്ധമാക്കാനും എളുപ്പമുള്ള ഫംഗ്ഷനുകൾ നൽകുന്ന [`janitor package`](../../../../../../2-Regression/3-Linear/solution/R/github.com/sfirke/janitor) പരിശോധിക്കാം. ഉദാഹരണത്തിന്, നമ്മുടെ ഡാറ്റയുടെ കോളം നാമങ്ങൾ നോക്കാം:\n" + ], + "metadata": { + "id": "xcNxM70EtJjb" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Return column names\n", + "pumpkins %>% \n", + " names()" + ], + "outputs": [], + "metadata": { + "id": "5XtpaIigtPfW" + } + }, + { + "cell_type": "markdown", + "source": [ + "🤔 നാം കൂടുതൽ മെച്ചപ്പെടുത്താം. ഈ കോളം നാമങ്ങൾ `janitor::clean_names` ഉപയോഗിച്ച് [snake_case](https://en.wikipedia.org/wiki/Snake_case) രീതി അനുസരിച്ച് `friendR` ആക്കാം. ഈ ഫംഗ്ഷൻ കുറിച്ച് കൂടുതൽ അറിയാൻ: `?clean_names`\n" + ], + "metadata": { + "id": "IbIqrMINtSHe" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Clean names to the snake_case convention\n", + "pumpkins <- pumpkins %>% \n", + " clean_names(case = \"snake\")\n", + "\n", + "# Return column names\n", + "pumpkins %>% \n", + " names()" + ], + "outputs": [], + "metadata": { + "id": "a2uYvclYtWvX" + } + }, + { + "cell_type": "markdown", + "source": [ + "കൂടുതൽ tidyR 🧹! ഇപ്പോൾ, മുൻപത്തെ പാഠത്തിൽപോലെ `dplyr` ഉപയോഗിച്ച് ഡാറ്റയുമായി ഒരു നൃത്തം! 💃\n" + ], + "metadata": { + "id": "HfhnuzDDtaDd" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Select desired columns\n", + "pumpkins <- pumpkins %>% \n", + " select(variety, city_name, package, low_price, high_price, date)\n", + "\n", + "\n", + "\n", + "# Extract the month from the dates to a new column\n", + "pumpkins <- pumpkins %>%\n", + " mutate(date = mdy(date),\n", + " month = month(date)) %>% \n", + " select(-date)\n", + "\n", + "\n", + "\n", + "# Create a new column for average Price\n", + "pumpkins <- pumpkins %>% \n", + " mutate(price = (low_price + high_price)/2)\n", + "\n", + "\n", + "# Retain only pumpkins with the string \"bushel\"\n", + "new_pumpkins <- pumpkins %>% \n", + " filter(str_detect(string = package, pattern = \"bushel\"))\n", + "\n", + "\n", + "# Normalize the pricing so that you show the pricing per bushel, not per 1 1/9 or 1/2 bushel\n", + "new_pumpkins <- new_pumpkins %>% \n", + " mutate(price = case_when(\n", + " str_detect(package, \"1 1/9\") ~ price/(1.1),\n", + " str_detect(package, \"1/2\") ~ price*2,\n", + " TRUE ~ price))\n", + "\n", + "# Relocate column positions\n", + "new_pumpkins <- new_pumpkins %>% \n", + " relocate(month, .before = variety)\n", + "\n", + "\n", + "# Display the first 5 rows\n", + "new_pumpkins %>% \n", + " slice_head(n = 5)" + ], + "outputs": [], + "metadata": { + "id": "X0wU3gQvtd9f" + } + }, + { + "cell_type": "markdown", + "source": [ + "നല്ല ജോലി!👌 നിങ്ങൾക്ക് ഇപ്പോൾ ഒരു ശുദ്ധവും ക്രമവുമുള്ള ഡാറ്റാ സെറ്റ് ലഭിച്ചു, അതിൽ നിങ്ങൾക്ക് നിങ്ങളുടെ പുതിയ റെഗ്രഷൻ മോഡൽ നിർമ്മിക്കാം!\n", + "\n", + "ഒരു സ്കാറ്റർ പ്ലോട്ട് വേണോ?\n" + ], + "metadata": { + "id": "UpaIwaxqth82" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Set theme\n", + "theme_set(theme_light())\n", + "\n", + "# Make a scatter plot of month and price\n", + "new_pumpkins %>% \n", + " ggplot(mapping = aes(x = month, y = price)) +\n", + " geom_point(size = 1.6)\n" + ], + "outputs": [], + "metadata": { + "id": "DXgU-j37tl5K" + } + }, + { + "cell_type": "markdown", + "source": [ + "ഒരു സ്‌കാറ്റർ പ്ലോട്ട് നമ്മെ ഓർമ്മിപ്പിക്കുന്നു ആഗസ്റ്റ് മുതൽ ഡിസംബർ വരെ മാത്രമേ ഞങ്ങൾക്ക് മാസ ഡാറ്റ ഉണ്ടായുള്ളൂ. ലീനിയർ രീതിയിൽ നിഗമനങ്ങൾ വരുത്താൻ കൂടുതൽ ഡാറ്റ ആവശ്യമുണ്ടാകാം.\n", + "\n", + "നമ്മുടെ മോഡലിംഗ് ഡാറ്റ വീണ്ടും നോക്കാം:\n" + ], + "metadata": { + "id": "Ve64wVbwtobI" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Display first 5 rows\n", + "new_pumpkins %>% \n", + " slice_head(n = 5)" + ], + "outputs": [], + "metadata": { + "id": "HFQX2ng1tuSJ" + } + }, + { + "cell_type": "markdown", + "source": [ + "നാം `city` അല്ലെങ്കിൽ `package` എന്ന ടൈപ്പ് കറക്ടർ ആയ കോളങ്ങളിലെ അടിസ്ഥാനത്തിൽ ഒരു പംപ്കിന്റെ `price` പ്രവചിക്കാൻ ആഗ്രഹിക്കുന്നുവെങ്കിൽ എന്താകും? അല്ലെങ്കിൽ കൂടുതൽ ലളിതമായി, ഉദാഹരണത്തിന് `package` ഉം `price` ഉം തമ്മിലുള്ള സഹസംബന്ധം (correlation) കണ്ടെത്താൻ എങ്ങനെ സാധിക്കും, ഇത് രണ്ടും ന്യുമറിക് ആയിരിക്കണം? 🤷🤷\n", + "\n", + "മെഷീൻ ലേണിംഗ് മോഡലുകൾ ടെക്സ്റ്റ് മൂല്യങ്ങളേക്കാൾ ന്യുമറിക് ഫീച്ചറുകളുമായി മികച്ച രീതിയിൽ പ്രവർത്തിക്കുന്നു, അതിനാൽ സാധാരണയായി കാറ്റഗോറിയൽ ഫീച്ചറുകൾ ന്യുമറിക് പ്രതിനിധാനങ്ങളായി മാറ്റേണ്ടതുണ്ട്.\n", + "\n", + "ഇത് അർത്ഥമാക്കുന്നത്, മോഡലിന് ഫലപ്രദമായി ഉപയോഗിക്കാൻ എളുപ്പമാക്കാൻ നമ്മുടെ പ്രവചനങ്ങളായ ഫീച്ചറുകൾ പുനരൂപീകരിക്കേണ്ടതുണ്ട്, ഇത് `feature engineering` എന്നറിയപ്പെടുന്ന പ്രക്രിയയാണ്.\n" + ], + "metadata": { + "id": "7hsHoxsStyjJ" + } + }, + { + "cell_type": "markdown", + "source": [ + "## 3. മോഡലിംഗിനായി ഡാറ്റ പ്രീപ്രോസസ്സ് ചെയ്യൽ recipes ഉപയോഗിച്ച് 👩‍🍳👨‍🍳\n", + "\n", + "മോഡലിന് എളുപ്പത്തിൽ ഉപയോഗിക്കാൻ പ്രിഡിക്ടർ മൂല്യങ്ങൾ പുനരൂപീകരിക്കുന്ന പ്രവർത്തനങ്ങളെ `ഫീച്ചർ എഞ്ചിനീയറിംഗ്` എന്ന് വിളിക്കുന്നു.\n", + "\n", + "വിവിധ മോഡലുകൾക്ക് വ്യത്യസ്തമായ പ്രീപ്രോസസിംഗ് ആവശ്യകതകൾ ഉണ്ട്. ഉദാഹരണത്തിന്, ലിസ്റ്റ് സ്ക്വയർസ് മാസവും, വൈവിധ്യവും, city_name പോലുള്ള `കാറ്റഗോറിയൽ വേരിയബിളുകൾ എങ്കോഡിംഗ്` ആവശ്യമാണ്. ഇത് ഒരു `കാറ്റഗോറിയൽ മൂല്യങ്ങൾ` ഉള്ള കോളം ഒന്ന് അല്ലെങ്കിൽ കൂടുതൽ `സംഖ്യാത്മക കോളങ്ങളായി` മാറ്റുന്നതാണ്, അവ ഒറിജിനലിന്റെ സ്ഥാനത്ത് വരും.\n", + "\n", + "ഉദാഹരണത്തിന്, നിങ്ങളുടെ ഡാറ്റയിൽ താഴെ കാണുന്ന കാറ്റഗോറിയൽ ഫീച്ചർ ഉണ്ടെന്ന് കരുതുക:\n", + "\n", + "| city |\n", + "|:-------:|\n", + "| Denver |\n", + "| Nairobi |\n", + "| Tokyo |\n", + "\n", + "ഓർഡിനൽ എങ്കോഡിംഗ് ഉപയോഗിച്ച് ഓരോ വിഭാഗത്തിനും ഒരു പ്രത്യേക പൂർണ്ണസംഖ്യ മൂല്യം നൽകാം, ഇങ്ങനെ:\n", + "\n", + "| city |\n", + "|:----:|\n", + "| 0 |\n", + "| 1 |\n", + "| 2 |\n", + "\n", + "ഇതാണ് നാം നമ്മുടെ ഡാറ്റയിൽ ചെയ്യാൻ പോകുന്നത്!\n", + "\n", + "ഈ വിഭാഗത്തിൽ, നാം മറ്റൊരു അത്ഭുതകരമായ Tidymodels പാക്കേജ്: [recipes](https://tidymodels.github.io/recipes/) പരിചയപ്പെടും - ഇത് നിങ്ങളുടെ മോഡൽ പരിശീലിപ്പിക്കുന്നതിന് **മുമ്പ്** നിങ്ങളുടെ ഡാറ്റ പ്രീപ്രോസസ്സ് ചെയ്യാൻ സഹായിക്കുന്നതിന് രൂപകൽപ്പന ചെയ്തതാണ്. ഒരു റെസിപ്പി എന്നത് ഒരു ഒബ്ജക്റ്റ് ആണ്, അത് ഒരു ഡാറ്റ സെറ്റിൽ ഏത് ഘട്ടങ്ങൾ പ്രയോഗിക്കണമെന്ന് നിർവചിക്കുന്നു, മോഡലിംഗിനായി അത് തയ്യാറാക്കാൻ.\n", + "\n", + "ഇപ്പോൾ, പ്രിഡിക്ടർ കോളങ്ങളിലെ എല്ലാ നിരീക്ഷണങ്ങൾക്കും ഒരു പ്രത്യേക പൂർണ്ണസംഖ്യ നൽകുന്ന റെസിപ്പി സൃഷ്ടിക്കാം:\n" + ], + "metadata": { + "id": "AD5kQbcvt3Xl" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Specify a recipe\n", + "pumpkins_recipe <- recipe(price ~ ., data = new_pumpkins) %>% \n", + " step_integer(all_predictors(), zero_based = TRUE)\n", + "\n", + "\n", + "# Print out the recipe\n", + "pumpkins_recipe" + ], + "outputs": [], + "metadata": { + "id": "BNaFKXfRt9TU" + } + }, + { + "cell_type": "markdown", + "source": [ + "അദ്ഭുതം! 👏 നാം ഇപ്പോൾ ഒരു ഔട്ട്‌കം (വില) നിർദ്ദേശിക്കുന്നതും അതിന്റെ അനുബന്ധ പ്രവചനങ്ങൾ നിർദ്ദേശിക്കുന്നതുമായ ആദ്യത്തെ റെസിപ്പി സൃഷ്ടിച്ചു, കൂടാതെ എല്ലാ പ്രവചന കോളങ്ങളെയും പൂർണ്ണസംഖ്യകളുടെ ഒരു സെറ്റായി എൻകോഡ് ചെയ്യണം 🙌! നമുക്ക് അതിനെ വേഗത്തിൽ വിഭജിക്കാം:\n", + "\n", + "- `recipe()` എന്ന ഫോർമുല ഉപയോഗിച്ച് വിളിക്കുന്നത്, `new_pumpkins` ഡാറ്റയെ റഫറൻസായി ഉപയോഗിച്ച് വേരിയബിളുകളുടെ *റോളുകൾ* റെസിപ്പിക്ക് പറയുന്നു. ഉദാഹരണത്തിന്, `price` കോളത്തിന് `outcome` റോളാണ് നൽകിയിരിക്കുന്നത്, ബാക്കി കോളങ്ങൾക്കു `predictor` റോളാണ് നൽകിയിരിക്കുന്നത്.\n", + "\n", + "- `step_integer(all_predictors(), zero_based = TRUE)` എല്ലാ പ്രവചനങ്ങൾ 0 മുതൽ സംഖ്യപ്പെടുത്തുന്ന പൂർണ്ണസംഖ്യകളായി മാറ്റണമെന്ന് വ്യക്തമാക്കുന്നു.\n", + "\n", + "നിങ്ങൾക്ക് ഇങ്ങനെ ചിന്തകൾ ഉണ്ടാകാം: \"ഇത് വളരെ കൂൾ ആണ്!! പക്ഷേ റെസിപ്പികൾ ഞാൻ പ്രതീക്ഷിക്കുന്നതുപോലെ പ്രവർത്തിക്കുന്നുണ്ടെന്ന് എങ്ങനെ ഉറപ്പാക്കാം? 🤔\"\n", + "\n", + "അത് ഒരു അത്ഭുതകരമായ ചിന്തയാണ്! നിങ്ങൾറെ റെസിപ്പി നിർവചിച്ചതിന് ശേഷം, ഡാറ്റ പ്രീപ്രോസസ് ചെയ്യാൻ ആവശ്യമായ പാരാമീറ്ററുകൾ കണക്കാക്കാനും, പ്രോസസ് ചെയ്ത ഡാറ്റ എടുക്കാനും കഴിയും. Tidymodels ഉപയോഗിക്കുമ്പോൾ സാധാരണയായി ഇത് ചെയ്യേണ്ടതില്ല (നമുക്ക് ഉടൻ കാണാം - `workflows`), പക്ഷേ റെസിപ്പികൾ നിങ്ങൾ പ്രതീക്ഷിക്കുന്നതുപോലെ പ്രവർത്തിക്കുന്നുണ്ടെന്ന് ഉറപ്പാക്കാൻ sanity check ചെയ്യേണ്ടപ്പോൾ ഇത് സഹായിക്കും.\n", + "\n", + "അതിനായി, നിങ്ങൾക്ക് രണ്ട് കൂടുതൽ ക്രിയകൾ വേണം: `prep()` ഉം `bake()` ഉം, കൂടാതെ എപ്പോഴും പോലെ, നമ്മുടെ ചെറിയ R സുഹൃത്തുക്കൾ [`Allison Horst`](https://github.com/allisonhorst/stats-illustrations) നിങ്ങളെ ഇത് മനസ്സിലാക്കാൻ സഹായിക്കുന്നു!\n", + "\n", + "

\n", + " \n", + "

Artwork by @allison_horst
\n" + ], + "metadata": { + "id": "KEiO0v7kuC9O" + } + }, + { + "cell_type": "markdown", + "source": [ + "[`prep()`](https://recipes.tidymodels.org/reference/prep.html): പരിശീലന സെറ്റിൽ നിന്നുള്ള ആവശ്യമായ പാരാമീറ്ററുകൾ കണക്കാക്കുന്നു, പിന്നീട് മറ്റ് ഡാറ്റാ സെറ്റുകളിൽ പ്രയോഗിക്കാവുന്നതാണ്. ഉദാഹരണത്തിന്, ഒരു നൽകിയ പ്രവചന കോളത്തിനായി, ഏത് നിരീക്ഷണം ഇന്റിജർ 0 അല്ലെങ്കിൽ 1 അല്ലെങ്കിൽ 2 എന്നിവയ്ക്ക് നിയോഗിക്കപ്പെടും.\n", + "\n", + "[`bake()`](https://recipes.tidymodels.org/reference/bake.html): ഒരു പ്രീപ് ചെയ്ത റെസിപ്പി എടുത്ത് പ്രവർത്തനങ്ങൾ ഏതെങ്കിലും ഡാറ്റാ സെറ്റിൽ പ്രയോഗിക്കുന്നു.\n", + "\n", + "അത് പറഞ്ഞ്, നമുക്ക് നമ്മുടെ റെസിപ്പികൾ പ്രീപ് ചെയ്ത് ബേക്ക് ചെയ്യാം, അതിലൂടെ ഉറപ്പാക്കാം മോഡൽ ഫിറ്റ് ചെയ്യുന്നതിന് മുമ്പ് പ്രവചന കോളങ്ങൾ ആദ്യം എൻകോഡ് ചെയ്യപ്പെടും.\n" + ], + "metadata": { + "id": "Q1xtzebuuTCP" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Prep the recipe\n", + "pumpkins_prep <- prep(pumpkins_recipe)\n", + "\n", + "# Bake the recipe to extract a preprocessed new_pumpkins data\n", + "baked_pumpkins <- bake(pumpkins_prep, new_data = NULL)\n", + "\n", + "# Print out the baked data set\n", + "baked_pumpkins %>% \n", + " slice_head(n = 10)" + ], + "outputs": [], + "metadata": { + "id": "FGBbJbP_uUUn" + } + }, + { + "cell_type": "markdown", + "source": [ + "വൂ-ഹൂ!🥳 പ്രോസസ്സ് ചെയ്ത ഡാറ്റ `baked_pumpkins`-ൽ അതിന്റെ എല്ലാ പ്രവചനകാർക്കും എൻകോഡ് ചെയ്തിട്ടുണ്ട്, ഇത് നമ്മുടെ റെസിപ്പി നിർവചിച്ച പ്രീപ്രോസസ്സിംഗ് ഘട്ടങ്ങൾ പ്രതീക്ഷിച്ചതുപോലെ പ്രവർത്തിക്കുമെന്ന് സ്ഥിരീകരിക്കുന്നു. ഇത് വായിക്കാൻ നിങ്ങൾക്ക് കുറച്ച് ബുദ്ധിമുട്ടുണ്ടാക്കും, പക്ഷേ Tidymodels-ക്ക് വളരെ കൂടുതൽ ബോധ്യമായിരിക്കും! ഏതൊരു നിരീക്ഷണം അനുയോജ്യമായ ഒരു പൂർണ്ണസംഖ്യയിലേക്ക് മാപ്പ് ചെയ്തിട്ടുണ്ടെന്ന് കണ്ടെത്താൻ കുറച്ച് സമയം ചെലവഴിക്കൂ.\n", + "\n", + "`baked_pumpkins` ഒരു ഡാറ്റാ ഫ്രെയിം ആണെന്നും അതിൽ കണക്കുകൂട്ടലുകൾ നടത്താൻ കഴിയുമെന്നും പറയേണ്ടതാണ്.\n", + "\n", + "ഉദാഹരണത്തിന്, നിങ്ങളുടെ ഡാറ്റയിലെ രണ്ട് പോയിന്റുകൾക്കിടയിൽ നല്ലൊരു സഹസംബന്ധം കണ്ടെത്താൻ ശ്രമിക്കാം, ഇത് നല്ലൊരു പ്രവചന മോഡൽ നിർമ്മിക്കാൻ സഹായിക്കാം. ഇതിന് `cor()` ഫംഗ്ഷൻ ഉപയോഗിക്കും. ഫംഗ്ഷൻ കുറിച്ച് കൂടുതൽ അറിയാൻ `?cor()` ടൈപ്പ് ചെയ്യുക.\n" + ], + "metadata": { + "id": "1dvP0LBUueAW" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Find the correlation between the city_name and the price\n", + "cor(baked_pumpkins$city_name, baked_pumpkins$price)\n", + "\n", + "# Find the correlation between the package and the price\n", + "cor(baked_pumpkins$package, baked_pumpkins$price)\n" + ], + "outputs": [], + "metadata": { + "id": "3bQzXCjFuiSV" + } + }, + { + "cell_type": "markdown", + "source": [ + "എന്തായാലും, സിറ്റി ಮತ್ತು വില തമ്മിൽ വളരെ ദുർബലമായ ബന്ധം മാത്രമേ ഉള്ളൂ. എന്നാൽ പാക്കേജ് ಮತ್ತು അതിന്റെ വില തമ്മിൽ കുറച്ച് മെച്ചപ്പെട്ട ബന്ധം കാണാം. അത് യുക്തിയുള്ളതാണ്, അല്ലേ? സാധാരണയായി, ഉൽപ്പന്ന ബോക്സ് വലുതായിരിക്കും, വില കൂടും.\n", + "\n", + "നാം ഇതിൽ തന്നെ, `corrplot` പാക്കേജ് ഉപയോഗിച്ച് എല്ലാ കോളങ്ങളുടെയും ബന്ധമാറ്റ്രിക്സ് ദൃശ്യവൽക്കരിക്കാൻ ശ്രമിക്കാം.\n" + ], + "metadata": { + "id": "BToPWbgjuoZw" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Load the corrplot package\n", + "library(corrplot)\n", + "\n", + "# Obtain correlation matrix\n", + "corr_mat <- cor(baked_pumpkins %>% \n", + " # Drop columns that are not really informative\n", + " select(-c(low_price, high_price)))\n", + "\n", + "# Make a correlation plot between the variables\n", + "corrplot(corr_mat, method = \"shade\", shade.col = NA, tl.col = \"black\", tl.srt = 45, addCoef.col = \"black\", cl.pos = \"n\", order = \"original\")" + ], + "outputs": [], + "metadata": { + "id": "ZwAL3ksmutVR" + } + }, + { + "cell_type": "markdown", + "source": [ + "🤩🤩 വളരെ മെച്ചപ്പെട്ടു.\n", + "\n", + "ഇപ്പോൾ ഈ ഡാറ്റയെക്കുറിച്ച് ചോദിക്കേണ്ട നല്ല ചോദ്യം: '`ഒരു നൽകിയ പംപ്കിൻ പാക്കേജിന്റെ വില എത്ര പ്രതീക്ഷിക്കാം?`' നമുക്ക് ഉടൻ തന്നെ തുടങ്ങാം!\n", + "\n", + "> Note: നിങ്ങൾ **`bake()`** ചെയ്താൽ തയ്യാറാക്കിയ റെസിപ്പി **`pumpkins_prep`** **`new_data = NULL`** ഉപയോഗിച്ച്, നിങ്ങൾ പ്രോസസ്സ് ചെയ്ത (അഥവാ എൻകോഡ് ചെയ്ത) പരിശീലന ഡാറ്റ എടുക്കും. ഉദാഹരണത്തിന് മറ്റൊരു ഡാറ്റ സെറ്റ് ഉണ്ടെങ്കിൽ, ഒരു ടെസ്റ്റ് സെറ്റ് പോലുള്ളത്, ഒരു റെസിപ്പി അതിനെ എങ്ങനെ പ്രീ-പ്രോസസ് ചെയ്യും എന്ന് കാണാൻ നിങ്ങൾക്ക് **`pumpkins_prep`** **`new_data = test_set`** ഉപയോഗിച്ച് bake ചെയ്യാം.\n", + "\n", + "## 4. ഒരു ലീനിയർ റെഗ്രഷൻ മോഡൽ നിർമ്മിക്കുക\n", + "\n", + "

\n", + " \n", + "

ഡാസാനി മടിപള്ളി ഒരുക്കിയ ഇൻഫോഗ്രാഫിക്
\n" + ], + "metadata": { + "id": "YqXjLuWavNxW" + } + }, + { + "cell_type": "markdown", + "source": [ + "ഇപ്പോൾ നമുക്ക് ഒരു റെസിപ്പി നിർമ്മിച്ച്, ഡാറ്റ ശരിയായി പ്രീ-പ്രോസസ് ചെയ്യപ്പെടുമെന്ന് സ്ഥിരീകരിച്ചതിനുശേഷം, ചോദ്യത്തിന് ഉത്തരം നൽകാൻ ഒരു റെഗ്രഷൻ മോഡൽ നിർമ്മിക്കാം: `ഒരു നൽകിയ പംപ്കിൻ പാക്കേജിന്റെ വില എത്ര പ്രതീക്ഷിക്കാം?`\n", + "\n", + "#### ട്രെയിനിംഗ് സെറ്റ് ഉപയോഗിച്ച് ഒരു ലീനിയർ റെഗ്രഷൻ മോഡൽ ട്രെയിൻ ചെയ്യുക\n", + "\n", + "നിങ്ങൾക്ക് ഇതിനകം മനസ്സിലായിരിക്കാം, *price* കോളം `outcome` വേരിയബിളാണ്, *package* കോളം `predictor` വേരിയബിളാണ്.\n", + "\n", + "ഇത് ചെയ്യാൻ, ആദ്യം ഡാറ്റ 80% ട്രെയിനിംഗിനും 20% ടെസ്റ്റ് സെറ്റിനും വിഭജിച്ച്, പിന്നീട് predictor കോളം ഇന്റിജറുകളുടെ സെറ്റായി എൻകോഡ് ചെയ്യാനുള്ള ഒരു റെസിപ്പി നിർവചിച്ച്, മോഡൽ സ്പെസിഫിക്കേഷൻ നിർമ്മിക്കും. റെസിപ്പി പ്രീപ്പ് ചെയ്ത് ബേക്ക് ചെയ്യില്ല, കാരണം അത് ഡാറ്റ പ്രതീക്ഷിച്ചതുപോലെ പ്രോസസ് ചെയ്യും എന്ന് നമുക്ക് ഇതിനകം അറിയാം.\n" + ], + "metadata": { + "id": "Pq0bSzCevW-h" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "set.seed(2056)\n", + "# Split the data into training and test sets\n", + "pumpkins_split <- new_pumpkins %>% \n", + " initial_split(prop = 0.8)\n", + "\n", + "\n", + "# Extract training and test data\n", + "pumpkins_train <- training(pumpkins_split)\n", + "pumpkins_test <- testing(pumpkins_split)\n", + "\n", + "\n", + "\n", + "# Create a recipe for preprocessing the data\n", + "lm_pumpkins_recipe <- recipe(price ~ package, data = pumpkins_train) %>% \n", + " step_integer(all_predictors(), zero_based = TRUE)\n", + "\n", + "\n", + "\n", + "# Create a linear model specification\n", + "lm_spec <- linear_reg() %>% \n", + " set_engine(\"lm\") %>% \n", + " set_mode(\"regression\")" + ], + "outputs": [], + "metadata": { + "id": "CyoEh_wuvcLv" + } + }, + { + "cell_type": "markdown", + "source": [ + "നല്ല ജോലി! ഇനി നമുക്ക് ഒരു റെസിപ്പിയും ഒരു മോഡൽ സ്പെസിഫിക്കേഷനും ഉണ്ടാകുമ്പോൾ, അവയെ ഒന്നിച്ച് ബണ്ടിൽ ചെയ്ത് ഒരു ഒബ്ജക്റ്റായി മാറ്റേണ്ടതുണ്ട്, അത് ആദ്യം ഡാറ്റ പ്രീപ്രോസസ് ചെയ്യും (പ്രീപ്+ബേക്ക് പിന്നിൽ), പ്രീപ്രോസസ് ചെയ്ത ഡാറ്റയിൽ മോഡൽ ഫിറ്റ് ചെയ്യും, കൂടാതെ സാധ്യതയുള്ള പോസ്റ്റ്-പ്രോസസ്സിംഗ് പ്രവർത്തനങ്ങൾക്കും അനുവദിക്കും. നിങ്ങളുടെ മനസിന് ഇത്രയും ആശ്വാസമുണ്ടോ!🤩\n", + "\n", + "Tidymodels-ൽ, ഈ സൗകര്യപ്രദമായ ഒബ്ജക്റ്റ് [`workflow`](https://workflows.tidymodels.org/) എന്ന് വിളിക്കുന്നു, ഇത് നിങ്ങളുടെ മോഡലിംഗ് ഘടകങ്ങൾ സൗകര്യപ്രദമായി കൈവശം വയ്ക്കുന്നു! Python-ൽ ഇതിനെ *pipelines* എന്ന് വിളിക്കും.\n", + "\n", + "അപ്പോൾ നമുക്ക് എല്ലാം workflow-യിലേക്ക് ബണ്ടിൽ ചെയ്യാം!📦\n" + ], + "metadata": { + "id": "G3zF_3DqviFJ" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Hold modelling components in a workflow\n", + "lm_wf <- workflow() %>% \n", + " add_recipe(lm_pumpkins_recipe) %>% \n", + " add_model(lm_spec)\n", + "\n", + "# Print out the workflow\n", + "lm_wf" + ], + "outputs": [], + "metadata": { + "id": "T3olroU3v-WX" + } + }, + { + "cell_type": "markdown", + "source": [ + "👌 കൂടാതെ, ഒരു വർക്ക്‌ഫ്ലോ ഒരു മോഡലിനെ പോലെ തന്നെ ഫിറ്റ്/ട്രെയിൻ ചെയ്യാൻ കഴിയും.\n" + ], + "metadata": { + "id": "zd1A5tgOwEPX" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Train the model\n", + "lm_wf_fit <- lm_wf %>% \n", + " fit(data = pumpkins_train)\n", + "\n", + "# Print the model coefficients learned \n", + "lm_wf_fit" + ], + "outputs": [], + "metadata": { + "id": "NhJagFumwFHf" + } + }, + { + "cell_type": "markdown", + "source": [ + "മോഡൽ ഔട്ട്പുട്ടിൽ നിന്ന്, പരിശീലനത്തിനിടെ പഠിച്ച കോഫിഷ്യന്റുകൾ കാണാം. അവ യഥാർത്ഥവും പ്രവചിച്ചവുമായ വ്യത്യാസം ഏറ്റവും കുറവുള്ള മികച്ച ഫിറ്റ് വരിയുടെ കോഫിഷ്യന്റുകളാണ്.\n", + "\n", + "#### ടെസ്റ്റ് സെറ്റ് ഉപയോഗിച്ച് മോഡൽ പ്രകടനം വിലയിരുത്തുക\n", + "\n", + "മോഡൽ എങ്ങനെ പ്രവർത്തിച്ചു എന്ന് കാണാനുള്ള സമയം 📏! ഇത് എങ്ങനെ ചെയ്യാം?\n", + "\n", + "ഇപ്പോൾ മോഡൽ പരിശീലിപ്പിച്ചതിനാൽ, `parsnip::predict()` ഉപയോഗിച്ച് test_set നുള്ള പ്രവചനങ്ങൾ നടത്താം. പിന്നീട് ഈ പ്രവചനങ്ങളെ യഥാർത്ഥ ലേബൽ മൂല്യങ്ങളുമായി താരതമ്യം ചെയ്ത് മോഡൽ എത്രത്തോളം (അല്ലെങ്കിൽ എത്രത്തോളം അല്ല!) പ്രവർത്തിക്കുന്നുവെന്ന് വിലയിരുത്താം.\n", + "\n", + "ആദ്യം ടെസ്റ്റ് സെറ്റിനുള്ള പ്രവചനങ്ങൾ നടത്താം, പിന്നീട് ആ കോളങ്ങൾ ടെസ്റ്റ് സെറ്റിനോട് ചേർക്കാം.\n" + ], + "metadata": { + "id": "_4QkGtBTwItF" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Make predictions for the test set\n", + "predictions <- lm_wf_fit %>% \n", + " predict(new_data = pumpkins_test)\n", + "\n", + "\n", + "# Bind predictions to the test set\n", + "lm_results <- pumpkins_test %>% \n", + " select(c(package, price)) %>% \n", + " bind_cols(predictions)\n", + "\n", + "\n", + "# Print the first ten rows of the tibble\n", + "lm_results %>% \n", + " slice_head(n = 10)" + ], + "outputs": [], + "metadata": { + "id": "UFZzTG0gwTs9" + } + }, + { + "cell_type": "markdown", + "source": [ + "അതെ, നിങ്ങൾ ഒരു മോഡൽ പരിശീലിപ്പിച്ച് അത് പ്രവചനങ്ങൾ നടത്താൻ ഉപയോഗിച്ചു!🔮 അത് എത്രത്തോളം നല്ലതാണെന്ന് നോക്കാം, മോഡലിന്റെ പ്രകടനം വിലയിരുത്താം!\n", + "\n", + "Tidymodels-ൽ, ഇത് `yardstick::metrics()` ഉപയോഗിച്ച് ചെയ്യാം! ലീനിയർ റെഗ്രഷനിനായി, താഴെപ്പറയുന്ന മെട്രിക്ക്സുകളിൽ ശ്രദ്ധ കേന്ദ്രീകരിക്കാം:\n", + "\n", + "- `Root Mean Square Error (RMSE)`: [MSE](https://en.wikipedia.org/wiki/Mean_squared_error)യുടെ ചതുരശ്രമൂല്യം. ഇത് ലേബലിന്റെ (ഈ കേസിൽ, പംപ്കിന്റെ വില) സമാന യൂണിറ്റിലുള്ള ഒരു ആബ്സല്യൂട്ട് മെട്രിക് നൽകുന്നു. മൂല്യം ചെറുതായിരിക്കും, മോഡൽ നല്ലതാണെന്ന് സൂചിപ്പിക്കുന്നു (സാധാരണ അർത്ഥത്തിൽ, പ്രവചനങ്ങൾ എത്രത്തോളം ശരിയല്ല എന്ന ശരാശരി വില പ്രതിനിധീകരിക്കുന്നു!)\n", + "\n", + "- `Coefficient of Determination (സാധാരണയായി R-squared അല്ലെങ്കിൽ R2 എന്നറിയപ്പെടുന്നു)`: ഒരു സാപേക്ഷ മെട്രിക്, മൂല്യം ഉയർന്നതായിരിക്കും, മോഡലിന്റെ ഫിറ്റ് നല്ലതാണെന്ന് സൂചിപ്പിക്കുന്നു. അടിസ്ഥാനത്തിൽ, ഈ മെട്രിക് പ്രവചിച്ച മൂല്യങ്ങളും യഥാർത്ഥ ലേബൽ മൂല്യങ്ങളും തമ്മിലുള്ള വ്യത്യാസത്തിന്റെ എത്ര ഭാഗം മോഡൽ വിശദീകരിക്കാൻ കഴിയുന്നുവെന്ന് പ്രതിനിധീകരിക്കുന്നു.\n" + ], + "metadata": { + "id": "0A5MjzM7wW9M" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Evaluate performance of linear regression\n", + "metrics(data = lm_results,\n", + " truth = price,\n", + " estimate = .pred)" + ], + "outputs": [], + "metadata": { + "id": "reJ0UIhQwcEH" + } + }, + { + "cell_type": "markdown", + "source": [ + "മോഡൽ പ്രകടനം കാണാം. പാക്കേജ്, വില എന്നിവയുടെ സ്കാറ്റർ പ്ലോട്ട് ദൃശ്യവൽക്കരിച്ച്, മോഡലിന്റെ പ്രവചനങ്ങൾ ഉപയോഗിച്ച് മികച്ച അനുയോജ്യമായ രേഖ ഒതുക്കാമോ എന്ന് നോക്കാം.\n", + "\n", + "ഇതിന്, പാക്കേജ് കോളം എൻകോഡ് ചെയ്യുന്നതിനായി ടെസ്റ്റ് സെറ്റ് പ്രിപെയർ ചെയ്ത് ബേക്ക് ചെയ്യേണ്ടതുണ്ട്, തുടർന്ന് ഇത് മോഡൽ നടത്തിയ പ്രവചനങ്ങളുമായി ബന്ധിപ്പിക്കണം.\n" + ], + "metadata": { + "id": "fdgjzjkBwfWt" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Encode package column\n", + "package_encode <- lm_pumpkins_recipe %>% \n", + " prep() %>% \n", + " bake(new_data = pumpkins_test) %>% \n", + " select(package)\n", + "\n", + "\n", + "# Bind encoded package column to the results\n", + "lm_results <- lm_results %>% \n", + " bind_cols(package_encode %>% \n", + " rename(package_integer = package)) %>% \n", + " relocate(package_integer, .after = package)\n", + "\n", + "\n", + "# Print new results data frame\n", + "lm_results %>% \n", + " slice_head(n = 5)\n", + "\n", + "\n", + "# Make a scatter plot\n", + "lm_results %>% \n", + " ggplot(mapping = aes(x = package_integer, y = price)) +\n", + " geom_point(size = 1.6) +\n", + " # Overlay a line of best fit\n", + " geom_line(aes(y = .pred), color = \"orange\", size = 1.2) +\n", + " xlab(\"package\")\n", + " \n" + ], + "outputs": [], + "metadata": { + "id": "R0nw719lwkHE" + } + }, + { + "cell_type": "markdown", + "source": [ + "ശ്രേഷ്ഠം! നിങ്ങൾക്ക് കാണാമല്ലോ, ലീനിയർ റെഗ്രഷൻ മോഡൽ പാക്കേജും അതിന്റെ അനുബന്ധ വിലയും തമ്മിലുള്ള ബന്ധം ശരിയായി പൊതുവെ പറയാൻ കഴിയുന്നില്ല.\n", + "\n", + "🎃 അഭിനന്ദനങ്ങൾ, നിങ്ങൾ ഇപ്പോൾ ചില തരത്തിലുള്ള മത്തങ്ങകളുടെ വില പ്രവചിക്കാൻ സഹായിക്കുന്ന ഒരു മോഡൽ സൃഷ്ടിച്ചു. നിങ്ങളുടെ അവധിക്കാല മത്തങ്ങ തോട്ടം മനോഹരമായിരിക്കും. പക്ഷേ നിങ്ങൾക്ക് കൂടുതൽ നല്ല മോഡൽ സൃഷ്ടിക്കാൻ കഴിയും!\n", + "\n", + "## 5. ബഹുപദ റെഗ്രഷൻ മോഡൽ നിർമ്മിക്കുക\n", + "\n", + "

\n", + " \n", + "

ഡസാനി മടിപള്ളി ഒരുക്കിയ ഇൻഫോഗ്രാഫിക്
\n", + "\n", + "\n", + "\n" + ], + "metadata": { + "id": "HOCqJXLTwtWI" + } + }, + { + "cell_type": "markdown", + "source": [ + "കഴിഞ്ഞപ്പോൾ നമ്മുടെ ഡാറ്റയ്ക്ക് ഒരു ലീനിയർ ബന്ധം ഇല്ലാതിരിക്കാം, പക്ഷേ നാം ഫലം പ്രവചിക്കാൻ ആഗ്രഹിക്കുന്നു. പോളിനോമിയൽ റെഗ്രഷൻ കൂടുതൽ സങ്കീർണ്ണമായ നോൺ-ലീനിയർ ബന്ധങ്ങൾക്കായി പ്രവചനങ്ങൾ നടത്താൻ സഹായിക്കും.\n", + "\n", + "ഉദാഹരണത്തിന്, നമ്മുടെ പംപ്കിൻ ഡാറ്റാ സെറ്റിലെ പാക്കേജ് ಮತ್ತು വില തമ്മിലുള്ള ബന്ധം എടുത്തു നോക്കാം. ചിലപ്പോൾ വേരിയബിളുകൾക്കിടയിൽ ലീനിയർ ബന്ധം ഉണ്ടാകാം - വോളിയത്തിൽ വലിയ പംപ്കിൻ, വില കൂടുതലായിരിക്കും - എന്നാൽ ചിലപ്പോൾ ഈ ബന്ധങ്ങൾ ഒരു പ്ലെയിൻ അല്ലെങ്കിൽ നേരിയ രേഖയായി ചിത്രീകരിക്കാൻ കഴിയില്ല.\n", + "\n", + "> ✅ ഇവിടെ [കൂടുതൽ ഉദാഹരണങ്ങൾ](https://online.stat.psu.edu/stat501/lesson/9/9.8) ഉണ്ട് പോളിനോമിയൽ റെഗ്രഷൻ ഉപയോഗിക്കാവുന്ന ഡാറ്റയുടെ\n", + ">\n", + "> Variety to Price എന്ന മുൻപത്തെ പ്ലോട്ടിലെ ബന്ധം വീണ്ടും നോക്കൂ. ഈ സ്കാറ്റർപ്ലോട്ട് നിർബന്ധമായും ഒരു നേരിയ രേഖയാൽ വിശകലനം ചെയ്യേണ്ടതുണ്ടോ? എങ്കിൽ അല്ല. ഈ സാഹചര്യത്തിൽ, നിങ്ങൾ പോളിനോമിയൽ റെഗ്രഷൻ പരീക്ഷിക്കാം.\n", + ">\n", + "> ✅ പോളിനോമിയലുകൾ ഒരു അല്ലെങ്കിൽ കൂടുതൽ വേരിയബിളുകളും കോഫിഷ്യന്റുകളും അടങ്ങിയ ഗണിതപരമായ പ്രകടനങ്ങളാണ്\n", + "\n", + "#### ട്രെയിനിംഗ് സെറ്റ് ഉപയോഗിച്ച് പോളിനോമിയൽ റെഗ്രഷൻ മോഡൽ പരിശീലിപ്പിക്കുക\n", + "\n", + "പോളിനോമിയൽ റെഗ്രഷൻ നോൺലീനിയർ ഡാറ്റയ്ക്ക് മികച്ച അനുയോജ്യത നൽകാൻ *വക്രരേഖ* സൃഷ്ടിക്കുന്നു.\n", + "\n", + "ഒരു പോളിനോമിയൽ മോഡൽ പ്രവചനങ്ങളിൽ മെച്ചമുണ്ടാക്കുമോ എന്ന് നോക്കാം. നാം മുമ്പ് ചെയ്തതുപോലെ സമാനമായ ഒരു പ്രക്രിയ പിന്തുടരാം:\n", + "\n", + "- നമ്മുടെ ഡാറ്റ മോഡലിംഗിന് തയ്യാറാക്കാൻ ചെയ്യേണ്ട പ്രീപ്രോസസ്സിംഗ് ഘട്ടങ്ങൾ നിർദ്ദേശിക്കുന്ന ഒരു റെസിപ്പി സൃഷ്ടിക്കുക, ഉദാ: പ്രവചനങ്ങൾ എൻകോഡ് ചെയ്യൽ, ഡിഗ്രി *n* ഉള്ള പോളിനോമിയലുകൾ കണക്കാക്കൽ\n", + "\n", + "- ഒരു മോഡൽ സ്പെസിഫിക്കേഷൻ നിർമ്മിക്കുക\n", + "\n", + "- റെസിപ്പിയും മോഡൽ സ്പെസിഫിക്കേഷനും ഒരു വർക്ക്‌ഫ്ലോയിൽ പാക്കുചെയ്യുക\n", + "\n", + "- വർക്ക്‌ഫ്ലോ ഫിറ്റ് ചെയ്ത് മോഡൽ സൃഷ്ടിക്കുക\n", + "\n", + "- ടെസ്റ്റ് ഡാറ്റയിൽ മോഡലിന്റെ പ്രകടനം വിലയിരുത്തുക\n", + "\n", + "നമുക്ക് ഉടൻ തുടങ്ങാം!\n" + ], + "metadata": { + "id": "VcEIpRV9wzYr" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Specify a recipe\r\n", + "poly_pumpkins_recipe <-\r\n", + " recipe(price ~ package, data = pumpkins_train) %>%\r\n", + " step_integer(all_predictors(), zero_based = TRUE) %>% \r\n", + " step_poly(all_predictors(), degree = 4)\r\n", + "\r\n", + "\r\n", + "# Create a model specification\r\n", + "poly_spec <- linear_reg() %>% \r\n", + " set_engine(\"lm\") %>% \r\n", + " set_mode(\"regression\")\r\n", + "\r\n", + "\r\n", + "# Bundle recipe and model spec into a workflow\r\n", + "poly_wf <- workflow() %>% \r\n", + " add_recipe(poly_pumpkins_recipe) %>% \r\n", + " add_model(poly_spec)\r\n", + "\r\n", + "\r\n", + "# Create a model\r\n", + "poly_wf_fit <- poly_wf %>% \r\n", + " fit(data = pumpkins_train)\r\n", + "\r\n", + "\r\n", + "# Print learned model coefficients\r\n", + "poly_wf_fit\r\n", + "\r\n", + " " + ], + "outputs": [], + "metadata": { + "id": "63n_YyRXw3CC" + } + }, + { + "cell_type": "markdown", + "source": [ + "#### മോഡൽ പ്രകടനം വിലയിരുത്തുക\n", + "\n", + "👏👏നിങ്ങൾ ഒരു പോളിനോമിയൽ മോഡൽ നിർമ്മിച്ചു, ടെസ്റ്റ് സെറ്റിൽ പ്രവചനങ്ങൾ നടത്താം!\n" + ], + "metadata": { + "id": "-LHZtztSxDP0" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Make price predictions on test data\r\n", + "poly_results <- poly_wf_fit %>% predict(new_data = pumpkins_test) %>% \r\n", + " bind_cols(pumpkins_test %>% select(c(package, price))) %>% \r\n", + " relocate(.pred, .after = last_col())\r\n", + "\r\n", + "\r\n", + "# Print the results\r\n", + "poly_results %>% \r\n", + " slice_head(n = 10)" + ], + "outputs": [], + "metadata": { + "id": "YUFpQ_dKxJGx" + } + }, + { + "cell_type": "markdown", + "source": [ + "വൂ-ഹൂ, മോഡൽ ടെസ്റ്റ്_സെറ്റിൽ എങ്ങനെ പ്രവർത്തിച്ചു എന്ന് `yardstick::metrics()` ഉപയോഗിച്ച് വിലയിരുത്താം.\n" + ], + "metadata": { + "id": "qxdyj86bxNGZ" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "metrics(data = poly_results, truth = price, estimate = .pred)" + ], + "outputs": [], + "metadata": { + "id": "8AW5ltkBxXDm" + } + }, + { + "cell_type": "markdown", + "source": [ + "🤩🤩 വളരെ മെച്ചപ്പെട്ട പ്രകടനം.\n", + "\n", + "`rmse` ഏകദേശം 7-ൽ നിന്ന് ഏകദേശം 3-ലേക്ക് കുറയുകയും, യഥാർത്ഥ വിലയും പ്രവചിച്ച വിലയും തമ്മിലുള്ള പിശക് കുറവാണെന്ന് സൂചിപ്പിക്കുകയും ചെയ്യുന്നു. ശരാശരിയിൽ, തെറ്റായ പ്രവചനങ്ങൾ ഏകദേശം \\$3-ൽ തെറ്റാണെന്ന് നിങ്ങൾ *അല്പം* വ്യാഖ്യാനിക്കാം. `rsq` ഏകദേശം 0.4-ൽ നിന്ന് 0.8-ലേക്ക് വർദ്ധിച്ചു.\n", + "\n", + "ഈ എല്ലാ മെട്രിക്കുകളും പോളിനോമിയൽ മോഡൽ ലീനിയർ മോഡലിനെക്കാൾ വളരെ മെച്ചമായി പ്രവർത്തിക്കുന്നതായി സൂചിപ്പിക്കുന്നു. നല്ല ജോലി!\n", + "\n", + "ഇപ്പോൾ നമുക്ക് ഇത് ദൃശ്യവൽക്കരിക്കാൻ കഴിയുമോ എന്ന് നോക്കാം!\n" + ], + "metadata": { + "id": "6gLHNZDwxYaS" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Bind encoded package column to the results\r\n", + "poly_results <- poly_results %>% \r\n", + " bind_cols(package_encode %>% \r\n", + " rename(package_integer = package)) %>% \r\n", + " relocate(package_integer, .after = package)\r\n", + "\r\n", + "\r\n", + "# Print new results data frame\r\n", + "poly_results %>% \r\n", + " slice_head(n = 5)\r\n", + "\r\n", + "\r\n", + "# Make a scatter plot\r\n", + "poly_results %>% \r\n", + " ggplot(mapping = aes(x = package_integer, y = price)) +\r\n", + " geom_point(size = 1.6) +\r\n", + " # Overlay a line of best fit\r\n", + " geom_line(aes(y = .pred), color = \"midnightblue\", size = 1.2) +\r\n", + " xlab(\"package\")\r\n" + ], + "outputs": [], + "metadata": { + "id": "A83U16frxdF1" + } + }, + { + "cell_type": "markdown", + "source": [ + "നിങ്ങളുടെ ഡാറ്റയ്ക്ക് കൂടുതൽ അനുയോജ്യമായ ഒരു വളവുള്ള രേഖ നിങ്ങൾക്ക് കാണാം! 🤩\n", + "\n", + "`geom_smooth`-ലേക്ക് പോളിനോമിയൽ ഫോർമുല പാസ്സ് ചെയ്ത് ഇത് കൂടുതൽ മൃദുവാക്കാം, ഇങ്ങനെ:\n" + ], + "metadata": { + "id": "4U-7aHOVxlGU" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Make a scatter plot\r\n", + "poly_results %>% \r\n", + " ggplot(mapping = aes(x = package_integer, y = price)) +\r\n", + " geom_point(size = 1.6) +\r\n", + " # Overlay a line of best fit\r\n", + " geom_smooth(method = lm, formula = y ~ poly(x, degree = 4), color = \"midnightblue\", size = 1.2, se = FALSE) +\r\n", + " xlab(\"package\")" + ], + "outputs": [], + "metadata": { + "id": "5vzNT0Uexm-w" + } + }, + { + "cell_type": "markdown", + "source": [ + "ഒരു മൃദുവായ വളവുപോലെ!🤩\n", + "\n", + "പുതിയ പ്രവചനമൊരുക്കുന്നത് ഇങ്ങനെ ആയിരിക്കും:\n" + ], + "metadata": { + "id": "v9u-wwyLxq4G" + } + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "# Make a hypothetical data frame\r\n", + "hypo_tibble <- tibble(package = \"bushel baskets\")\r\n", + "\r\n", + "# Make predictions using linear model\r\n", + "lm_pred <- lm_wf_fit %>% predict(new_data = hypo_tibble)\r\n", + "\r\n", + "# Make predictions using polynomial model\r\n", + "poly_pred <- poly_wf_fit %>% predict(new_data = hypo_tibble)\r\n", + "\r\n", + "# Return predictions in a list\r\n", + "list(\"linear model prediction\" = lm_pred, \r\n", + " \"polynomial model prediction\" = poly_pred)\r\n" + ], + "outputs": [], + "metadata": { + "id": "jRPSyfQGxuQv" + } + }, + { + "cell_type": "markdown", + "source": [ + "`polynomial model` പ്രവചനത്തിന് അർത്ഥമുണ്ട്, `price` ഉം `package` ഉം ഉള്ള സ്കാറ്റർ പ്ലോട്ടുകൾ കാണുമ്പോൾ! കൂടാതെ, ഇത് മുമ്പത്തെ മോഡലിനേക്കാൾ മികച്ച മോഡലാണെങ്കിൽ, അതേ ഡാറ്റ നോക്കുമ്പോൾ, നിങ്ങൾക്ക് ഈ കൂടുതൽ വിലയുള്ള പംപ്കിനുകൾക്കായി ബജറ്റ് തയ്യാറാക്കേണ്ടതുണ്ട്!\n", + "\n", + "🏆 നന്നായി ചെയ്തു! നിങ്ങൾ ഒരു പാഠത്തിൽ രണ്ട് റെഗ്രഷൻ മോഡലുകൾ സൃഷ്ടിച്ചു. റെഗ്രഷൻ സംബന്ധിച്ച അവസാന ഭാഗത്തിൽ, നിങ്ങൾ വിഭാഗങ്ങൾ നിർണ്ണയിക്കാൻ ലൊജിസ്റ്റിക് റെഗ്രഷൻ പഠിക്കും.\n", + "\n", + "## **🚀ചലഞ്ച്**\n", + "\n", + "ഈ നോട്ട്‌ബുക്കിൽ വിവിധ വേരിയബിളുകൾ പരീക്ഷിച്ച് കോറലേഷൻ മോഡൽ കൃത്യതയുമായി എങ്ങനെ ബന്ധപ്പെട്ടിരിക്കുന്നു എന്ന് പരിശോധിക്കുക.\n", + "\n", + "## [**പാഠാനന്തര ക്വിസ്**](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/14/)\n", + "\n", + "## **പരിശോധന & സ്വയം പഠനം**\n", + "\n", + "ഈ പാഠത്തിൽ നാം ലീനിയർ റെഗ്രഷൻ പഠിച്ചു. മറ്റ് പ്രധാനപ്പെട്ട റെഗ്രഷൻ തരംകളും ഉണ്ട്. സ്റ്റെപ്‌വൈസ്, റിഡ്ജ്, ലാസ്സോ, എലാസ്റ്റിക്‌നെറ്റ് സാങ്കേതികതകൾക്കുറിച്ച് വായിക്കുക. കൂടുതൽ പഠിക്കാൻ നല്ല കോഴ്സ് [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) ആണ്.\n", + "\n", + "അദ്ഭുതകരമായ Tidymodels ഫ്രെയിംവർക്ക് ഉപയോഗിക്കുന്നത് എങ്ങനെ എന്നത് കൂടുതൽ അറിയാൻ, താഴെ കൊടുത്തിരിക്കുന്ന സ്രോതസുകൾ പരിശോധിക്കുക:\n", + "\n", + "- Tidymodels വെബ്സൈറ്റ്: [Get started with Tidymodels](https://www.tidymodels.org/start/)\n", + "\n", + "- Max Kuhn and Julia Silge, [*Tidy Modeling with R*](https://www.tmwr.org/)*.*\n", + "\n", + "###### **നന്ദി:**\n", + "\n", + "[Allison Horst](https://twitter.com/allison_horst?lang=en) R-നെ കൂടുതൽ സ്വാഗതം ചെയ്യുന്നതും ആകർഷകവുമാക്കുന്ന അത്ഭുതകരമായ ചിത്രങ്ങൾ സൃഷ്ടിച്ചതിന്. കൂടുതൽ ചിത്രങ്ങൾ അവളുടെ [ഗാലറി](https://www.google.com/url?q=https://github.com/allisonhorst/stats-illustrations&sa=D&source=editors&ust=1626380772530000&usg=AOvVaw3zcfyCizFQZpkSLzxiiQEM)യിൽ കാണാം.\n" + ], + "metadata": { + "id": "8zOLOWqMxzk5" + } + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**അസൂയാ**: \nഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/ml/2-Regression/3-Linear/solution/notebook.ipynb b/translations/ml/2-Regression/3-Linear/solution/notebook.ipynb new file mode 100644 index 000000000..7937aba69 --- /dev/null +++ b/translations/ml/2-Regression/3-Linear/solution/notebook.ipynb @@ -0,0 +1,1117 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## പമ്പ്‌കിൻ വിലനിർണ്ണയത്തിനുള്ള ലീനിയർ ആൻഡ് പോളിനോമിയൽ റെഗ്രഷൻ - പാഠം 3\n", + "\n", + "ആവശ്യമായ ലൈബ്രറികളും ഡാറ്റാസെറ്റും ലോഡ് ചെയ്യുക. ഡാറ്റയുടെ ഒരു ഉപസമൂഹം അടങ്ങിയ ഡാറ്റാഫ്രെയിമിലേക്ക് ഡാറ്റ മാറ്റുക:\n", + "\n", + "- ബഷെൽ പ്രകാരം വില നിശ്ചയിച്ച പമ്പ്‌കിനുകൾ മാത്രം എടുക്കുക\n", + "- തീയതി ഒരു മാസമായി മാറ്റുക\n", + "- വില ഉയർന്നതും താഴ്ന്നതും ശരാശരി ആയി കണക്കാക്കുക\n", + "- വില ബഷെൽ അളവിൽ വിലനിർണ്ണയം പ്രതിഫലിപ്പിക്കുന്ന വിധം മാറ്റുക\n" + ] + }, + { + "cell_type": "code", + "execution_count": 167, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
City NameTypePackageVarietySub VarietyGradeDateLow PriceHigh PriceMostly Low...Unit of SaleQualityConditionAppearanceStorageCropRepackTrans ModeUnnamed: 24Unnamed: 25
0BALTIMORENaN24 inch binsNaNNaNNaN4/29/17270.0280.0270.0...NaNNaNNaNNaNNaNNaNENaNNaNNaN
1BALTIMORENaN24 inch binsNaNNaNNaN5/6/17270.0280.0270.0...NaNNaNNaNNaNNaNNaNENaNNaNNaN
2BALTIMORENaN24 inch binsHOWDEN TYPENaNNaN9/24/16160.0160.0160.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
3BALTIMORENaN24 inch binsHOWDEN TYPENaNNaN9/24/16160.0160.0160.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
4BALTIMORENaN24 inch binsHOWDEN TYPENaNNaN11/5/1690.0100.090.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
\n", + "

5 rows × 26 columns

\n", + "
" + ], + "text/plain": [ + " City Name Type Package Variety Sub Variety Grade Date \\\n", + "0 BALTIMORE NaN 24 inch bins NaN NaN NaN 4/29/17 \n", + "1 BALTIMORE NaN 24 inch bins NaN NaN NaN 5/6/17 \n", + "2 BALTIMORE NaN 24 inch bins HOWDEN TYPE NaN NaN 9/24/16 \n", + "3 BALTIMORE NaN 24 inch bins HOWDEN TYPE NaN NaN 9/24/16 \n", + "4 BALTIMORE NaN 24 inch bins HOWDEN TYPE NaN NaN 11/5/16 \n", + "\n", + " Low Price High Price Mostly Low ... Unit of Sale Quality Condition \\\n", + "0 270.0 280.0 270.0 ... NaN NaN NaN \n", + "1 270.0 280.0 270.0 ... NaN NaN NaN \n", + "2 160.0 160.0 160.0 ... NaN NaN NaN \n", + "3 160.0 160.0 160.0 ... NaN NaN NaN \n", + "4 90.0 100.0 90.0 ... NaN NaN NaN \n", + "\n", + " Appearance Storage Crop Repack Trans Mode Unnamed: 24 Unnamed: 25 \n", + "0 NaN NaN NaN E NaN NaN NaN \n", + "1 NaN NaN NaN E NaN NaN NaN \n", + "2 NaN NaN NaN N NaN NaN NaN \n", + "3 NaN NaN NaN N NaN NaN NaN \n", + "4 NaN NaN NaN N NaN NaN NaN \n", + "\n", + "[5 rows x 26 columns]" + ] + }, + "execution_count": 167, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from datetime import datetime\n", + "\n", + "pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n", + "pumpkins.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 168, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
MonthDayOfYearVarietyCityPackageLow PriceHigh PricePrice
709267PIE TYPEBALTIMORE1 1/9 bushel cartons15.015.013.636364
719267PIE TYPEBALTIMORE1 1/9 bushel cartons18.018.016.363636
7210274PIE TYPEBALTIMORE1 1/9 bushel cartons18.018.016.363636
7310274PIE TYPEBALTIMORE1 1/9 bushel cartons17.017.015.454545
7410281PIE TYPEBALTIMORE1 1/9 bushel cartons15.015.013.636364
\n", + "
" + ], + "text/plain": [ + " Month DayOfYear Variety City Package Low Price \\\n", + "70 9 267 PIE TYPE BALTIMORE 1 1/9 bushel cartons 15.0 \n", + "71 9 267 PIE TYPE BALTIMORE 1 1/9 bushel cartons 18.0 \n", + "72 10 274 PIE TYPE BALTIMORE 1 1/9 bushel cartons 18.0 \n", + "73 10 274 PIE TYPE BALTIMORE 1 1/9 bushel cartons 17.0 \n", + "74 10 281 PIE TYPE BALTIMORE 1 1/9 bushel cartons 15.0 \n", + "\n", + " High Price Price \n", + "70 15.0 13.636364 \n", + "71 18.0 16.363636 \n", + "72 18.0 16.363636 \n", + "73 17.0 15.454545 \n", + "74 15.0 13.636364 " + ] + }, + "execution_count": 168, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n", + "\n", + "new_columns = ['Package', 'Variety', 'City Name', 'Month', 'Low Price', 'High Price', 'Date']\n", + "pumpkins = pumpkins.drop([c for c in pumpkins.columns if c not in new_columns], axis=1)\n", + "\n", + "price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2\n", + "\n", + "month = pd.DatetimeIndex(pumpkins['Date']).month\n", + "day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days)\n", + "\n", + "new_pumpkins = pd.DataFrame(\n", + " {'Month': month, \n", + " 'DayOfYear' : day_of_year, \n", + " 'Variety': pumpkins['Variety'], \n", + " 'City': pumpkins['City Name'], \n", + " 'Package': pumpkins['Package'], \n", + " 'Low Price': pumpkins['Low Price'],\n", + " 'High Price': pumpkins['High Price'], \n", + " 'Price': price})\n", + "\n", + "new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/1.1\n", + "new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price*2\n", + "\n", + "new_pumpkins.head()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ഒരു സ്‌കാറ്റർപ്ലോട്ട് നമ്മെ ഓർമ്മിപ്പിക്കുന്നു, ഞങ്ങൾക്ക് ആഗസ്റ്റ് മുതൽ ഡിസംബർ വരെ മാത്രമേ മാസ ഡാറ്റ ഉണ്ടായുള്ളൂ. ലീനിയർ രീതിയിൽ നിഗമനങ്ങൾ വരുത്താൻ കൂടുതൽ ഡാറ്റ ആവശ്യമുണ്ടാകാം.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 169, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 169, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "new_pumpkins.plot.scatter('Month','Price')" + ] + }, + { + "cell_type": "code", + "execution_count": 170, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 170, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "new_pumpkins.plot.scatter('DayOfYear','Price')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "നമുക്ക് നോക്കാം ബന്ധമുണ്ടോ എന്ന്:\n" + ] + }, + { + "cell_type": "code", + "execution_count": 171, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-0.14878293554077535\n", + "-0.16673322492745407\n" + ] + } + ], + "source": [ + "print(new_pumpkins['Month'].corr(new_pumpkins['Price']))\n", + "print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price']))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "സംബന്ധം വളരെ ചെറുതാണ് പോലെ തോന്നുന്നു, പക്ഷേ മറ്റൊരു കൂടുതൽ പ്രധാനപ്പെട്ട ബന്ധം ഉണ്ടെന്ന് തോന്നുന്നു - മുകളിൽ കാണിച്ച പ്ലോട്ടിലെ വില പോയിന്റുകൾ പല വ്യത്യസ്ത ക്ലസ്റ്ററുകളായി കാണപ്പെടുന്നു. വ്യത്യസ്ത പംപ്കിൻ വർഗ്ഗങ്ങൾ കാണിക്കുന്ന ഒരു പ്ലോട്ട് ഉണ്ടാക്കാം:\n" + ] + }, + { + "cell_type": "code", + "execution_count": 172, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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5sxSZs68nu9975ccemg3RBzH3RbOOOMMrr32Wh577DHASb8sEnpOPGmZVRv1hg8/kZqaLyPqff755yxbtozbbrutwTZt2jSWLl3KF198wbx58zj55JMZP348AB07duThhx9ueNIAOPXUU1m8eDH79u1jx44dfP755xQWFja7V5cuXTjttNNYsGBBg+2pp55q+Fs/99xznHfeeVxyySURZ0kfffTRdOzYkc2bN0f7Z4mJDRs20KdPn4bjEfE+ymKO30gCBQXN/+H37XPsXjF5cnT21ojUqnfs5UB/YJy7bz1u1bKeQ72z2b17NytWrOCEE06IqHfZZcVs27aZnTu3ce65TohI1Vl0/eabb24IF0yZMiWixvHHH88nn3wCOD/MwZP4y8vv55JLCjnpJEdn/fr1De8Fp5AuLCxk/vz5zbRFGvXee+9VvvnNyRHTPK9evbohDFJPfUhk1apVrFq1ilGjRoVcM3DgQHbs2MG2bdvc+wljx47ltdde48UXX2TixIkR611cXNzg1NevX8+aNWsa0krX/+AWFxdHXAPhgw8+4Oijj+awww4L+/6UKVMa/jY333xzxHKEI9xnd/3111NSUsIZZ5zBHXfcEfJZxIqFeoyEk5/vxN1LSpyW/r59zrGXyyxMmODE+INWG2T48NjCPOA45EAgNDwTCEC3bjVACVDnbrjHY4HIFYqs13g8YsQIKisrKS8vbzWOu3HjOrZu/TcHDgh79uwgEOhM//6O448U6mlKcLqW3Fyn76WqynHal156I7fddhM9ezrvFwT9Src11HPDDWfw739vpEePw7j++hkR0zyrKtL0cSPIHul9IMR+ySWX8OCDD7J161buvfdefv3rX4e9ZsKECVx33XVs27aNp59+mosuuoicnBw2btzI559/zimnnIKI0L59e1auXMmwYcMAJzfR448/zj/+8Q9effXViPUOF+ppK+E+u29961sN93zllVc47rjjWLlyJfGsU2ItfiMpFBc7TmXhQmcfIYoRFytWwIIFzg/MggXOcTwceywMGuQsjj5okHMMlUDTZmuua49FL5SJEydy0003RQzz1DN16lR++cvpFBdfzDPP/BfDh9PgpNvKhx9+GJLbpWdPGnR6945eryl//esiKiurGDnyWJ59dlpEvWOPPZYPP/yQg0FxqoMHD/LRRx8xZMgQjj32WJrm6vrH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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "ax=None\n", + "colors = ['red','blue','green','yellow']\n", + "for i,var in enumerate(new_pumpkins['Variety'].unique()):\n", + " ax = new_pumpkins[new_pumpkins['Variety']==var].plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var)" + ] + }, + { + "cell_type": "code", + "execution_count": 173, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 173, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ഇപ്പോൾ, നാം ഒരു തരത്തിൽ മാത്രം ശ്രദ്ധ കേന്ദ്രീകരിക്കാം - **പൈ തരം**.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 174, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-0.2669192282197318\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 174, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE']\n", + "print(pie_pumpkins['DayOfYear'].corr(pie_pumpkins['Price']))\n", + "pie_pumpkins.plot.scatter('DayOfYear','Price')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ലീനിയർ റെഗ്രഷൻ\n", + "\n", + "നാം ലീനിയർ റെഗ്രഷൻ മോഡൽ പരിശീലിപ്പിക്കാൻ Scikit Learn ഉപയോഗിക്കും:\n" + ] + }, + { + "cell_type": "code", + "execution_count": 175, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.linear_model import LinearRegression\n", + "from sklearn.metrics import r2_score, mean_squared_error, mean_absolute_error\n", + "from sklearn.model_selection import train_test_split" + ] + }, + { + "cell_type": "code", + "execution_count": 176, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mean error: 2.77 (17.2%)\n" + ] + } + ], + "source": [ + "X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1)\n", + "y = pie_pumpkins['Price']\n", + "\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)\n", + "lin_reg = LinearRegression()\n", + "lin_reg.fit(X_train,y_train)\n", + "\n", + "pred = lin_reg.predict(X_test)\n", + "\n", + "mse = np.sqrt(mean_squared_error(y_test,pred))\n", + "print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 177, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 177, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(X_test,y_test)\n", + "plt.plot(X_test,pred)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "രേഖാഖണ്ഡത്തിന്റെ സ്ലോപ്പ് ലീനിയർ റെഗ്രഷൻ കോഫിഷ്യന്റുകളിൽ നിന്ന് നിർണയിക്കാം:\n" + ] + }, + { + "cell_type": "code", + "execution_count": 178, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(array([-0.01751876]), 21.133734359909326)" + ] + }, + "execution_count": 178, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lin_reg.coef_, lin_reg.intercept_" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "നാം പരിശീലിപ്പിച്ച മോഡൽ ഉപയോഗിച്ച് വില പ്രവചിക്കാം:\n" + ] + }, + { + "cell_type": "code", + "execution_count": 179, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([16.64893156])" + ] + }, + "execution_count": 179, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Pumpkin price on programmer's day\n", + "\n", + "lin_reg.predict([[256]])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### പോളിനോമിയൽ റെഗ്രഷൻ\n", + "\n", + "സവിശേഷതകളും ഫലങ്ങളും തമ്മിലുള്ള ബന്ധം സ്വാഭാവികമായി നോൺ-ലീനിയർ ആയിരിക്കാം. ഉദാഹരണത്തിന്, മത്തങ്ങയുടെ വില ശീതകാലത്ത് (മാസങ്ങൾ=1,2) ഉയർന്നിരിക്കാം, പിന്നീട് വേനലിൽ (മാസങ്ങൾ=5-7) താഴ്ന്ന്, പിന്നെ വീണ്ടും ഉയരാം. ലീനിയർ റെഗ്രഷൻ ഈ ബന്ധം കൃത്യമായി കണ്ടെത്താൻ കഴിയില്ല.\n", + "\n", + "ഈ സാഹചര്യത്തിൽ, അധിക സവിശേഷതകൾ ചേർക്കുന്നത് പരിഗണിക്കാം. ലളിതമായ മാർഗം ഇൻപുട്ട് സവിശേഷതകളിൽ നിന്നുള്ള പോളിനോമിയലുകൾ ഉപയോഗിക്കുക എന്നതാണ്, ഇത് **പോളിനോമിയൽ റെഗ്രഷൻ** എന്ന ഫലത്തിലേക്ക് നയിക്കും. Scikit Learn-ൽ, പൈപ്പ്ലൈനുകൾ ഉപയോഗിച്ച് പോളിനോമിയൽ സവിശേഷതകൾ സ്വയം മുൻകൂട്ടി കണക്കാക്കാം: \n" + ] + }, + { + "cell_type": "code", + "execution_count": 180, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mean error: 2.73 (17.0%)\n", + "Model determination: 0.07639977655280217\n" + ] + }, + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 180, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "from sklearn.preprocessing import PolynomialFeatures\n", + "from sklearn.pipeline import make_pipeline\n", + "\n", + "pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())\n", + "\n", + "pipeline.fit(X_train,y_train)\n", + "\n", + "pred = pipeline.predict(X_test)\n", + "\n", + "mse = np.sqrt(mean_squared_error(y_test,pred))\n", + "print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')\n", + "\n", + "score = pipeline.score(X_train,y_train)\n", + "print('Model determination: ', score)\n", + "\n", + "plt.scatter(X_test,y_test)\n", + "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### എൻകോഡിംഗ് വൈവിധ്യങ്ങൾ\n", + "\n", + "ആദർശ ലോകത്ത്, നാം ഒരേ മോഡൽ ഉപയോഗിച്ച് വ്യത്യസ്ത പംപ്കിൻ വൈവിധ്യങ്ങളുടെ വിലകൾ പ്രവചിക്കാൻ ആഗ്രഹിക്കുന്നു. വൈവിധ്യം പരിഗണിക്കാൻ, ആദ്യം അത് സംഖ്യാത്മക രൂപത്തിലേക്ക് മാറ്റേണ്ടതുണ്ട്, അല്ലെങ്കിൽ **എൻകോഡ്** ചെയ്യേണ്ടതുണ്ട്. നാം ഇത് ചെയ്യാൻ പല മാർഗ്ഗങ്ങളുണ്ട്:\n", + "\n", + "* ലളിതമായ സംഖ്യാത്മക എൻകോഡിംഗ്, ഇത് വ്യത്യസ്ത വൈവിധ്യങ്ങളുടെ ഒരു പട്ടിക നിർമ്മിച്ച്, പിന്നീട് ആ പട്ടികയിലെ സൂചിക ഉപയോഗിച്ച് വൈവിധ്യത്തിന്റെ പേര് മാറ്റും. ഇത് ലീനിയർ റെഗ്രഷനിൽ മികച്ച ആശയമല്ല, കാരണം ലീനിയർ റെഗ്രഷൻ സൂചികയുടെ സംഖ്യാത്മക മൂല്യം പരിഗണിക്കും, ആ സംഖ്യാത്മക മൂല്യം വിലയുമായി സംഖ്യാത്മകമായി ബന്ധപ്പെടാൻ സാധ്യതയില്ല.\n", + "* വൺ-ഹോട്ട് എൻകോഡിംഗ്, ഇത് `Variety` കോളം 4 വ്യത്യസ്ത കോളങ്ങളായി മാറ്റും, ഓരോ വൈവിധ്യത്തിനും ഒന്ന്, അതായത് നൽകിയ വരി ആ വൈവിധ്യത്തിനുള്ളതാണെങ്കിൽ 1, അല്ലെങ്കിൽ 0 അടങ്ങിയിരിക്കും.\n", + "\n", + "താഴെയുള്ള കോഡ് ഒരു വൈവിധ്യം വൺ-ഹോട്ട് എൻകോഡ് ചെയ്യുന്നത് എങ്ങനെ ചെയ്യാമെന്ന് കാണിക്കുന്നു:\n" + ] + }, + { + "cell_type": "code", + "execution_count": 181, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
FAIRYTALEMINIATUREMIXED HEIRLOOM VARIETIESPIE TYPE
700001
710001
720001
730001
740001
...............
17380100
17390100
17400100
17410100
17420100
\n", + "

415 rows × 4 columns

\n", + "
" + ], + "text/plain": [ + " FAIRYTALE MINIATURE MIXED HEIRLOOM VARIETIES PIE TYPE\n", + "70 0 0 0 1\n", + "71 0 0 0 1\n", + "72 0 0 0 1\n", + "73 0 0 0 1\n", + "74 0 0 0 1\n", + "... ... ... ... ...\n", + "1738 0 1 0 0\n", + "1739 0 1 0 0\n", + "1740 0 1 0 0\n", + "1741 0 1 0 0\n", + "1742 0 1 0 0\n", + "\n", + "[415 rows x 4 columns]" + ] + }, + "execution_count": 181, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.get_dummies(new_pumpkins['Variety'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### വൈവിധ്യത്തിൽ ലീനിയർ റെഗ്രഷൻ\n", + "\n", + "മുകളിൽ നൽകിയ കോഡ് തന്നെ ഇനി ഉപയോഗിക്കും, പക്ഷേ `DayOfYear` എന്നതിന് പകരം ഞങ്ങൾ നമ്മുടെ വൺ-ഹോട്ട്-എൻകോഡഡ് വൈവിധ്യത്തെ ഇൻപുട്ടായി ഉപയോഗിക്കും:\n" + ] + }, + { + "cell_type": "code", + "execution_count": 182, + "metadata": {}, + "outputs": [], + "source": [ + "X = pd.get_dummies(new_pumpkins['Variety'])\n", + "y = new_pumpkins['Price']" + ] + }, + { + "cell_type": "code", + "execution_count": 183, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mean error: 5.24 (19.7%)\n", + "Model determination: 0.774085281105197\n" + ] + } + ], + "source": [ + "def run_linear_regression(X,y):\n", + " X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)\n", + " lin_reg = LinearRegression()\n", + " lin_reg.fit(X_train,y_train)\n", + "\n", + " pred = lin_reg.predict(X_test)\n", + "\n", + " mse = np.sqrt(mean_squared_error(y_test,pred))\n", + " print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')\n", + "\n", + " score = lin_reg.score(X_train,y_train)\n", + " print('Model determination: ', score)\n", + "\n", + "run_linear_regression(X,y)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "നാം മറ്റുള്ള ഫീച്ചറുകളും അതേ രീതിയിൽ ഉപയോഗിച്ച്, അവയെ സംഖ്യാത്മക ഫീച്ചറുകളുമായി, ഉദാഹരണത്തിന് `Month` അല്ലെങ്കിൽ `DayOfYear` എന്നിവയുമായി സംയോജിപ്പിച്ച് പരീക്ഷിക്കാം:\n" + ] + }, + { + "cell_type": "code", + "execution_count": 184, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mean error: 2.84 (10.5%)\n", + "Model determination: 0.9401096672643048\n" + ] + } + ], + "source": [ + "X = pd.get_dummies(new_pumpkins['Variety']) \\\n", + " .join(new_pumpkins['Month']) \\\n", + " .join(pd.get_dummies(new_pumpkins['City'])) \\\n", + " .join(pd.get_dummies(new_pumpkins['Package']))\n", + "y = new_pumpkins['Price']\n", + "\n", + "run_linear_regression(X,y)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### പോളിനോമിയൽ റെഗ്രഷൻ\n", + "\n", + "ഒന്ന്-ഹോട്ട് എൻകോഡുചെയ്ത വർഗ്ഗീയ ഫീച്ചറുകളോടും പോളിനോമിയൽ റെഗ്രഷൻ ഉപയോഗിക്കാം. പോളിനോമിയൽ റെഗ്രഷൻ പരിശീലിപ്പിക്കുന്ന കോഡ് മുകളിൽ കാണിച്ചതുപോലെ തന്നെ ആയിരിക്കും.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 185, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mean error: 2.23 (8.25%)\n", + "Model determination: 0.9652870784724543\n" + ] + } + ], + "source": [ + "from sklearn.preprocessing import PolynomialFeatures\n", + "from sklearn.pipeline import make_pipeline\n", + "\n", + "pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())\n", + "\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)\n", + "\n", + "pipeline.fit(X_train,y_train)\n", + "\n", + "pred = pipeline.predict(X_test)\n", + "\n", + "mse = np.sqrt(mean_squared_error(y_test,pred))\n", + "print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')\n", + "\n", + "score = pipeline.score(X_train,y_train)\n", + "print('Model determination: ', score)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**അസൂയാപത്രം**: \nഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, യന്ത്രം ചെയ്ത വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ അധികാരപരമായ ഉറവിടമായി കണക്കാക്കപ്പെടണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല.\n\n" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "86193a1ab0ba47eac1c69c1756090baa3b420b3eea7d4aafab8b85f8b312f0c5" + }, + "kernelspec": { + "display_name": "Python 3.7.0 64-bit ('3.7')", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.5" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "orig_nbformat": 2, + "coopTranslator": { + "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", + "translation_date": "2025-12-19T16:19:46+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "ml" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/translations/ml/2-Regression/4-Logistic/README.md b/translations/ml/2-Regression/4-Logistic/README.md new file mode 100644 index 000000000..914f30c59 --- /dev/null +++ b/translations/ml/2-Regression/4-Logistic/README.md @@ -0,0 +1,409 @@ + +# വിഭാഗങ്ങൾ പ്രവചിക്കാൻ ലോജിസ്റ്റിക് റെഗ്രഷൻ + +![Logistic vs. linear regression infographic](../../../../translated_images/linear-vs-logistic.ba180bf95e7ee66721ba10ebf2dac2666acbd64a88b003c83928712433a13c7d.ml.png) + +## [പ്രീ-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +> ### [ഈ പാഠം R-ൽ ലഭ്യമാണ്!](../../../../2-Regression/4-Logistic/solution/R/lesson_4.html) + +## പരിചയം + +റെഗ്രഷൻ എന്ന അടിസ്ഥാന _ക്ലാസിക്_ എംഎൽ സാങ്കേതികവിദ്യകളിൽ അവസാന പാഠമായ ഈ പാഠത്തിൽ, നാം ലോജിസ്റ്റിക് റെഗ്രഷൻ പരിശോധിക്കും. ബൈനറി വിഭാഗങ്ങൾ പ്രവചിക്കാൻ ഈ സാങ്കേതികവിദ്യ ഉപയോഗിക്കും. ഈ കാൻഡി ചോക്ലേറ്റ് ആണോ അല്ലയോ? ഈ രോഗം സംക്രമണശീലമാണോ അല്ലയോ? ഈ ഉപഭോക്താവ് ഈ ഉൽപ്പന്നം തിരഞ്ഞെടുക്കുമോ അല്ലയോ? + +ഈ പാഠത്തിൽ നിങ്ങൾ പഠിക്കും: + +- ഡാറ്റാ ദൃശ്യവത്കരണത്തിനുള്ള പുതിയ ലൈബ്രറി +- ലോജിസ്റ്റിക് റെഗ്രഷനുള്ള സാങ്കേതികവിദ്യകൾ + +✅ ഈ [Learn module](https://docs.microsoft.com/learn/modules/train-evaluate-classification-models?WT.mc_id=academic-77952-leestott) വഴി ഈ തരത്തിലുള്ള റെഗ്രഷനിൽ പ്രവർത്തിക്കുന്നതിന്റെ അറിവ് കൂടുതൽ ആഴത്തിൽ നേടുക + +## മുൻപരിചയം + +പംപ്കിൻ ഡാറ്റ ഉപയോഗിച്ച് പ്രവർത്തിച്ചതിനാൽ, അതിൽ ഒരു ബൈനറി വിഭാഗം ഉണ്ടെന്ന് നമുക്ക് മനസ്സിലായി: `Color`. + +ചില വേരിയബിളുകൾ നൽകിയാൽ, ഒരു പംപ്കിൻ ഏത് നിറത്തിൽ ഉണ്ടാകാൻ സാധ്യതയുള്ളതാണെന്ന് പ്രവചിക്കാൻ ഒരു ലോജിസ്റ്റിക് റെഗ്രഷൻ മോഡൽ നിർമ്മിക്കാം (ഓറഞ്ച് 🎃 അല്ലെങ്കിൽ വെളുപ്പ് 👻). + +> റെഗ്രഷൻ പാഠങ്ങളുമായി ബന്ധപ്പെട്ട ഒരു ഗ്രൂപ്പിൽ ബൈനറി ക്ലാസിഫിക്കേഷൻ എന്തുകൊണ്ട് ചർച്ച ചെയ്യുന്നു? ഭാഷാശൈലിയുടെ സൗകര്യത്തിനായി മാത്രമാണ്, കാരണം ലോജിസ്റ്റിക് റെഗ്രഷൻ [വാസ്തവത്തിൽ ഒരു ക്ലാസിഫിക്കേഷൻ രീതി ആണ്](https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression), എന്നാൽ ലീനിയർ അടിസ്ഥാനമാക്കിയുള്ളത്. അടുത്ത പാഠ ഗ്രൂപ്പിൽ ഡാറ്റ ക്ലാസിഫൈ ചെയ്യാനുള്ള മറ്റ് മാർഗങ്ങൾ പഠിക്കാം. + +## ചോദ്യ നിർവചനം + +നമ്മുടെ ആവശ്യങ്ങൾക്ക്, ഇത് ഒരു ബൈനറിയായി പ്രകടിപ്പിക്കും: 'വെളുപ്പ്' അല്ലെങ്കിൽ 'വെളുപ്പ് അല്ല'. നമ്മുടെ ഡാറ്റാസെറ്റിൽ 'സ്ട്രൈപ്പഡ്' എന്ന ഒരു വിഭാഗവും ഉണ്ട്, പക്ഷേ അതിന്റെ ഉദാഹരണങ്ങൾ കുറവാണ്, അതിനാൽ അത് ഉപയോഗിക്കില്ല. നൾ മൂല്യങ്ങൾ നീക്കം ചെയ്താൽ അത് അപ്രാപ്യമാണ്. + +> 🎃 രസകരമായ ഒരു വസ്തുത, വെളുപ്പ് പംപ്കിനുകളെ ചിലപ്പോൾ 'ഗോസ്റ്റ്' പംപ്കിനുകൾ എന്ന് വിളിക്കുന്നു. അവ കട്ടിയുള്ളവയല്ല, അതിനാൽ ഓറഞ്ച് പംപ്കിനുകളെപ്പോലെ ജനപ്രിയമല്ല, പക്ഷേ അവ കൂൾ ആയി കാണപ്പെടുന്നു! അതിനാൽ നാം ചോദ്യത്തെ 'ഗോസ്റ്റ്' അല്ലെങ്കിൽ 'ഗോസ്റ്റ് അല്ല' എന്നായി പുനർനിർവചിക്കാം. 👻 + +## ലോജിസ്റ്റിക് റെഗ്രഷൻ കുറിച്ച് + +ലീനിയർ റെഗ്രഷനിൽ നിന്നുള്ള ലോജിസ്റ്റിക് റെഗ്രഷൻ ചില പ്രധാന വ്യത്യാസങ്ങളുണ്ട്. + +[![ML for beginners - Understanding Logistic Regression for Machine Learning Classification](https://img.youtube.com/vi/KpeCT6nEpBY/0.jpg)](https://youtu.be/KpeCT6nEpBY "ML for beginners - Understanding Logistic Regression for Machine Learning Classification") + +> 🎥 ലോജിസ്റ്റിക് റെഗ്രഷന്റെ ഒരു ചുരുക്ക വീഡിയോ അവലോകനത്തിന് മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക. + +### ബൈനറി ക്ലാസിഫിക്കേഷൻ + +ലോജിസ്റ്റിക് റെഗ്രഷൻ ലീനിയർ റെഗ്രഷനുപോലെ സവിശേഷതകൾ നൽകുന്നില്ല. മുൻപുള്ളത് ബൈനറി വിഭാഗത്തെക്കുറിച്ച് പ്രവചനം നൽകുന്നു ("വെളുപ്പ് അല്ലെങ്കിൽ വെളുപ്പ് അല്ല") എന്നാൽ പിന്നീടുള്ളത് തുടർച്ചയായ മൂല്യങ്ങൾ പ്രവചിക്കാൻ കഴിയും, ഉദാഹരണത്തിന് ഒരു പംപ്കിന്റെ ഉത്ഭവവും വിളവെടുപ്പ് സമയവും നൽകിയാൽ, _അതിന്റ വില എത്ര ഉയരും_ എന്നത്. + +![Pumpkin classification Model](../../../../translated_images/pumpkin-classifier.562771f104ad5436b87d1c67bca02a42a17841133556559325c0a0e348e5b774.ml.png) +> ഇൻഫോഗ്രാഫിക്: [ദാസാനി മടിപള്ളി](https://twitter.com/dasani_decoded) + +### മറ്റ് ക്ലാസിഫിക്കേഷനുകൾ + +മൾട്ടിനോമിയൽ, ഓർഡിനൽ തുടങ്ങിയ മറ്റ് തരത്തിലുള്ള ലോജിസ്റ്റിക് റെഗ്രഷനുകളും ഉണ്ട്: + +- **മൾട്ടിനോമിയൽ**: ഒന്നിലധികം വിഭാഗങ്ങൾ ഉൾക്കൊള്ളുന്നു - "ഓറഞ്ച്, വെളുപ്പ്, സ്ട്രൈപ്പഡ്". +- **ഓർഡിനൽ**: ക്രമീകരിച്ച വിഭാഗങ്ങൾ ഉൾക്കൊള്ളുന്നു, ഉദാഹരണത്തിന് നമ്മുടെ പംപ്കിനുകൾ ചെറിയ, ചെറിയ, മധ്യ, വലിയ, എക്സ്‌എൽ, ഡബ്ല്യു എക്സ്‌എൽ എന്ന ക്രമത്തിൽ ക്രമീകരിച്ചിരിക്കുന്നതുപോലെ. + +![Multinomial vs ordinal regression](../../../../translated_images/multinomial-vs-ordinal.36701b4850e37d86c9dd49f7bef93a2f94dbdb8fe03443eb68f0542f97f28f29.ml.png) + +### വേരിയബിളുകൾ തമ്മിൽ ബന്ധപ്പെടേണ്ടതില്ല + +ലീനിയർ റെഗ്രഷൻ കൂടുതൽ ബന്ധമുള്ള വേരിയബിളുകളുമായി നല്ലതായിരുന്നു, എന്നാൽ ലോജിസ്റ്റിക് റെഗ്രഷൻ അതിന്റെ വിരുദ്ധമാണ് - വേരിയബിളുകൾ പൊരുത്തപ്പെടേണ്ടതില്ല. ഈ ഡാറ്റയ്ക്ക് ഇത് അനുയോജ്യമാണ്, കാരണം ഇതിൽ ബന്ധങ്ങൾ കുറവാണ്. + +### നിങ്ങൾക്ക് വളരെ ശുദ്ധമായ ഡാറ്റ ആവശ്യമാണ് + +ലോജിസ്റ്റിക് റെഗ്രഷൻ കൂടുതൽ ഡാറ്റ ഉപയോഗിച്ചാൽ കൂടുതൽ കൃത്യമായ ഫലങ്ങൾ നൽകും; നമ്മുടെ ചെറിയ ഡാറ്റാസെറ്റ് ഈ ജോലി ചെയ്യാൻ അനുയോജ്യമല്ല, അതിനാൽ ഇത് മനസ്സിലാക്കുക. + +[![ML for beginners - Data Analysis and Preparation for Logistic Regression](https://img.youtube.com/vi/B2X4H9vcXTs/0.jpg)](https://youtu.be/B2X4H9vcXTs "ML for beginners - Data Analysis and Preparation for Logistic Regression") + +> 🎥 ലീനിയർ റെഗ്രഷനായി ഡാറ്റ തയ്യാറാക്കലിന്റെ ഒരു ചുരുക്ക വീഡിയോ അവലോകനത്തിന് മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക + +✅ ലോജിസ്റ്റിക് റെഗ്രഷനുമായി നല്ല അനുയോജ്യമായ ഡാറ്റാ തരം എന്തെല്ലാമാകാമെന്ന് ചിന്തിക്കുക + +## അഭ്യാസം - ഡാറ്റ ശുചീകരിക്കുക + +ആദ്യം, ഡാറ്റ കുറച്ച് ശുചീകരിക്കുക, നൾ മൂല്യങ്ങൾ ഒഴിവാക്കി ചില കോളങ്ങൾ മാത്രം തിരഞ്ഞെടുക്കുക: + +1. താഴെ കൊടുത്ത കോഡ് ചേർക്കുക: + + ```python + + columns_to_select = ['City Name','Package','Variety', 'Origin','Item Size', 'Color'] + pumpkins = full_pumpkins.loc[:, columns_to_select] + + pumpkins.dropna(inplace=True) + ``` + + നിങ്ങളുടെ പുതിയ ഡാറ്റാഫ്രെയിം ഒരു നോട്ടം എടുക്കാം: + + ```python + pumpkins.info + ``` + +### ദൃശ്യവത്കരണം - വർഗ്ഗീയ പ്ലോട്ട് + +ഇപ്പോൾ നിങ്ങൾ വീണ്ടും [സ്റ്റാർട്ടർ നോട്ട്‌ബുക്ക്](./notebook.ipynb) പംപ്കിൻ ഡാറ്റ ഉപയോഗിച്ച് ലോഡ് ചെയ്ത്, ചില വേരിയബിളുകൾ ഉൾപ്പെടുന്ന ഡാറ്റാസെറ്റ് സംരക്ഷിക്കാൻ ശുചീകരിച്ചു, അതിൽ `Color` ഉൾപ്പെടുന്നു. നമുക്ക് മറ്റൊരു ലൈബ്രറി ഉപയോഗിച്ച് നോട്ട്‌ബുക്കിൽ ഡാറ്റാഫ്രെയിം ദൃശ്യവത്കരിക്കാം: [Seaborn](https://seaborn.pydata.org/index.html), ഇത് Matplotlib-ന്റെ മേൽനോട്ടത്തിലാണ്, നാം മുമ്പ് ഉപയോഗിച്ചത്. + +Seaborn നിങ്ങളുടെ ഡാറ്റ ദൃശ്യവത്കരിക്കാൻ ചില നല്ല മാർഗങ്ങൾ നൽകുന്നു. ഉദാഹരണത്തിന്, ഓരോ `Variety`ക്കും `Color`ക്കും ഉള്ള ഡാറ്റയുടെ വിതരണങ്ങൾ വർഗ്ഗീയ പ്ലോട്ടിൽ താരതമ്യം ചെയ്യാം. + +1. `catplot` ഫംഗ്ഷൻ ഉപയോഗിച്ച് ഇത്തരമൊരു പ്ലോട്ട് സൃഷ്ടിക്കുക, നമ്മുടെ പംപ്കിൻ ഡാറ്റ `pumpkins` ഉപയോഗിച്ച്, ഓരോ പംപ്കിൻ വിഭാഗത്തിനും (ഓറഞ്ച് അല്ലെങ്കിൽ വെളുപ്പ്) നിറം നിശ്ചയിച്ച്: + + ```python + import seaborn as sns + + palette = { + 'ORANGE': 'orange', + 'WHITE': 'wheat', + } + + sns.catplot( + data=pumpkins, y="Variety", hue="Color", kind="count", + palette=palette, + ) + ``` + + ![A grid of visualized data](../../../../translated_images/pumpkins_catplot_1.c55c409b71fea2ecc01921e64b91970542101f90bcccfa4aa3a205db8936f48b.ml.png) + + ഡാറ്റ നിരീക്ഷിച്ച്, നിറം ഡാറ്റ `Variety`-യുമായി എങ്ങനെ ബന്ധപ്പെട്ടിരിക്കുന്നു എന്ന് കാണാം. + + ✅ ഈ വർഗ്ഗീയ പ്ലോട്ട് നൽകിയാൽ, നിങ്ങൾക്ക് എന്തെല്ലാം രസകരമായ അന്വേഷണങ്ങൾ കാണാനാകും? + +### ഡാറ്റ പ്രീ-പ്രോസസ്സിംഗ്: ഫീച്ചർ, ലേബൽ എൻകോഡിംഗ് +നമ്മുടെ പംപ്കിൻ ഡാറ്റാസെറ്റിലെ എല്ലാ കോളങ്ങളിലുമുള്ള മൂല്യങ്ങൾ സ്ട്രിംഗ് ആണ്. വർഗ്ഗീയ ഡാറ്റ മനുഷ്യർക്കു മനസ്സിലാക്കാൻ എളുപ്പമാണ്, പക്ഷേ യന്ത്രങ്ങൾക്ക് അല്ല. മെഷീൻ ലേണിംഗ് ആൽഗോരിതങ്ങൾ സംഖ്യകളുമായി നല്ല രീതിയിൽ പ്രവർത്തിക്കുന്നു. അതിനാൽ എൻകോഡിംഗ് ഡാറ്റ പ്രീ-പ്രോസസ്സിംഗ് ഘട്ടത്തിൽ വളരെ പ്രധാനമാണ്, കാരണം ഇത് വർഗ്ഗീയ ഡാറ്റ സംഖ്യാത്മക ഡാറ്റയാക്കി മാറ്റാൻ സഹായിക്കുന്നു, വിവരങ്ങൾ നഷ്ടപ്പെടാതെ. നല്ല എൻകോഡിംഗ് നല്ല മോഡൽ നിർമ്മിക്കാൻ സഹായിക്കുന്നു. + +ഫീച്ചർ എൻകോഡിംഗിന് രണ്ട് പ്രധാന എൻകോഡർ തരം ഉണ്ട്: + +1. ഓർഡിനൽ എൻകോഡർ: ഓർഡിനൽ വേരിയബിളുകൾക്ക് അനുയോജ്യമാണ്, അവ ക്രമീകരിച്ച വർഗ്ഗീയ വേരിയബിളുകളാണ്, ഉദാഹരണത്തിന് നമ്മുടെ ഡാറ്റാസെറ്റിലെ `Item Size` കോളം. ഓരോ വിഭാഗത്തിനും ഒരു സംഖ്യ നൽകുന്ന മാപ്പിംഗ് സൃഷ്ടിക്കുന്നു, അത് കോളത്തിലെ ക്രമം ആണ്. + + ```python + from sklearn.preprocessing import OrdinalEncoder + + item_size_categories = [['sml', 'med', 'med-lge', 'lge', 'xlge', 'jbo', 'exjbo']] + ordinal_features = ['Item Size'] + ordinal_encoder = OrdinalEncoder(categories=item_size_categories) + ``` + +2. വർഗ്ഗീയ എൻകോഡർ: നോമിനൽ വേരിയബിളുകൾക്ക് അനുയോജ്യമാണ്, അവ ക്രമീകരിക്കപ്പെട്ടിട്ടില്ലാത്ത വർഗ്ഗീയ വേരിയബിളുകളാണ്, നമ്മുടെ ഡാറ്റാസെറ്റിലെ `Item Size` ഒഴികെയുള്ള എല്ലാ ഫീച്ചറുകളും. ഇത് ഒന്ന്-ഹോട്ട് എൻകോഡിംഗ് ആണ്, അതായത് ഓരോ വിഭാഗവും ഒരു ബൈനറി കോളമായി പ്രതിനിധീകരിക്കുന്നു: പംപ്കിൻ ആ വിഭാഗത്തിൽപ്പെട്ടാൽ എൻകോഡുചെയ്ത വേരിയബിൾ 1 ആകും, അല്ലെങ്കിൽ 0. + + ```python + from sklearn.preprocessing import OneHotEncoder + + categorical_features = ['City Name', 'Package', 'Variety', 'Origin'] + categorical_encoder = OneHotEncoder(sparse_output=False) + ``` +പിന്നീട്, `ColumnTransformer` ഉപയോഗിച്ച് പല എൻകോഡറുകളും ഒരേ ഘട്ടത്തിൽ ചേർത്ത് അനുയോജ്യമായ കോളങ്ങളിൽ പ്രയോഗിക്കുന്നു. + +```python + from sklearn.compose import ColumnTransformer + + ct = ColumnTransformer(transformers=[ + ('ord', ordinal_encoder, ordinal_features), + ('cat', categorical_encoder, categorical_features) + ]) + + ct.set_output(transform='pandas') + encoded_features = ct.fit_transform(pumpkins) +``` +മറ്റുവശത്ത്, ലേബൽ എൻകോഡിംഗിന് scikit-learn-ന്റെ `LabelEncoder` ക്ലാസ് ഉപയോഗിക്കുന്നു, ഇത് ലേബലുകൾ 0 മുതൽ n_classes-1 (ഇവിടെ 0, 1) വരെയുള്ള മൂല്യങ്ങൾ മാത്രമാകാൻ സാധ്യമാക്കുന്ന ഒരു സഹായക ക്ലാസ്സാണ്. + +```python + from sklearn.preprocessing import LabelEncoder + + label_encoder = LabelEncoder() + encoded_label = label_encoder.fit_transform(pumpkins['Color']) +``` +ഫീച്ചറുകളും ലേബലും എൻകോഡ് ചെയ്ത ശേഷം, അവ `encoded_pumpkins` എന്ന പുതിയ ഡാറ്റാഫ്രെയിമിൽ സംയോജിപ്പിക്കാം. + +```python + encoded_pumpkins = encoded_features.assign(Color=encoded_label) +``` +✅ `Item Size` കോളത്തിനായി ഓർഡിനൽ എൻകോഡർ ഉപയോഗിക്കുന്നതിന്റെ ഗുണങ്ങൾ എന്തെല്ലാമാണ്? + +### വേരിയബിളുകൾ തമ്മിലുള്ള ബന്ധങ്ങൾ വിശകലനം ചെയ്യുക + +ഇപ്പോൾ നാം ഡാറ്റ പ്രീ-പ്രോസസ്സിംഗ് ചെയ്തു, ഫീച്ചറുകളും ലേബലും തമ്മിലുള്ള ബന്ധങ്ങൾ വിശകലനം ചെയ്ത് മോഡൽ എത്രത്തോളം ലേബൽ പ്രവചിക്കാൻ കഴിയും എന്ന് മനസ്സിലാക്കാം. +ഇത്തരത്തിലുള്ള വിശകലനത്തിന് ഏറ്റവും നല്ല മാർഗം ഡാറ്റ പ്ലോട്ട് ചെയ്യുകയാണ്. നാം വീണ്ടും Seaborn-ന്റെ `catplot` ഫംഗ്ഷൻ ഉപയോഗിച്ച് `Item Size`, `Variety`, `Color` തമ്മിലുള്ള ബന്ധങ്ങൾ വർഗ്ഗീയ പ്ലോട്ടിൽ കാണിക്കും. ഡാറ്റ മികച്ച രീതിയിൽ പ്ലോട്ട് ചെയ്യാൻ എൻകോഡ് ചെയ്ത `Item Size` കോളവും എൻകോഡ് ചെയ്യാത്ത `Variety` കോളവും ഉപയോഗിക്കും. + +```python + palette = { + 'ORANGE': 'orange', + 'WHITE': 'wheat', + } + pumpkins['Item Size'] = encoded_pumpkins['ord__Item Size'] + + g = sns.catplot( + data=pumpkins, + x="Item Size", y="Color", row='Variety', + kind="box", orient="h", + sharex=False, margin_titles=True, + height=1.8, aspect=4, palette=palette, + ) + g.set(xlabel="Item Size", ylabel="").set(xlim=(0,6)) + g.set_titles(row_template="{row_name}") +``` +![A catplot of visualized data](../../../../translated_images/pumpkins_catplot_2.87a354447880b3889278155957f8f60dd63db4598de5a6d0fda91c334d31f9f1.ml.png) + +### സ്വാർം പ്ലോട്ട് ഉപയോഗിക്കുക + +`Color` ഒരു ബൈനറി വിഭാഗമാണ (വെളുപ്പ് അല്ലെങ്കിൽ അല്ല), അതിനാൽ 'ഒരു [പ്രത്യേക സമീപനം](https://seaborn.pydata.org/tutorial/categorical.html?highlight=bar) ദൃശ്യവത്കരണത്തിന്' ആവശ്യമാണ്. ഈ വിഭാഗത്തിന്റെ മറ്റ് വേരിയബിളുകളുമായുള്ള ബന്ധം കാണിക്കാൻ മറ്റ് മാർഗങ്ങളും ഉണ്ട്. + +Seaborn പ്ലോട്ടുകൾ ഉപയോഗിച്ച് വേരിയബിളുകൾ പക്കൽ-പക്കൽ കാണിക്കാം. + +1. മൂല്യങ്ങളുടെ വിതരണങ്ങൾ കാണിക്കാൻ 'സ്വാർം' പ്ലോട്ട് പരീക്ഷിക്കുക: + + ```python + palette = { + 0: 'orange', + 1: 'wheat' + } + sns.swarmplot(x="Color", y="ord__Item Size", data=encoded_pumpkins, palette=palette) + ``` + + ![A swarm of visualized data](../../../../translated_images/swarm_2.efeacfca536c2b577dc7b5f8891f28926663fbf62d893ab5e1278ae734ca104e.ml.png) + +**ശ്രദ്ധിക്കുക**: മുകളിൽ കൊടുത്ത കോഡ് ഒരു മുന്നറിയിപ്പ് ഉണ്ടാക്കാം, കാരണം Seaborn ഈ അളവിലുള്ള ഡാറ്റ പോയിന്റുകൾ സ്വാർം പ്ലോട്ടിൽ പ്രതിനിധീകരിക്കാൻ പരാജയപ്പെടും. ഒരു പരിഹാരമായി 'size' പാരാമീറ്റർ ഉപയോഗിച്ച് മാർക്കറിന്റെ വലിപ്പം കുറയ്ക്കാം. എന്നാൽ ഇത് പ്ലോട്ടിന്റെ വായനാസൗകര്യം ബാധിക്കും. + +> **🧮 ഗണിതം കാണിക്കുക** +> +> ലോജിസ്റ്റിക് റെഗ്രഷൻ 'മാക്സിമം ലൈക്ലിഹുഡ്' ആശയത്തെ ആശ്രയിച്ചിരിക്കുന്നു, [സിഗ്മോയ്ഡ് ഫംഗ്ഷനുകൾ](https://wikipedia.org/wiki/Sigmoid_function) ഉപയോഗിച്ച്. ഒരു 'സിഗ്മോയ്ഡ് ഫംഗ്ഷൻ' പ്ലോട്ടിൽ 'S' ആകൃതിയിലാണ് കാണപ്പെടുന്നത്. ഒരു മൂല്യം എടുത്ത് അത് 0നും 1നും ഇടയിലുള്ള ഏതെങ്കിലും സ്ഥാനത്തേക്ക് മാപ്പ് ചെയ്യുന്നു. അതിന്റെ വളവ് 'ലോജിസ്റ്റിക് വളവ്' എന്നും വിളിക്കുന്നു. അതിന്റെ സൂത്രവാക്യം ഇപ്രകാരമാണ്: +> +> ![logistic function](../../../../translated_images/sigmoid.8b7ba9d095c789cf72780675d0d1d44980c3736617329abfc392dfc859799704.ml.png) +> +> ഇവിടെ സിഗ്മോയ്ഡിന്റെ മധ്യബിന്ദു x-ന്റെ 0 പോയിന്റിലാണ്, L വളവിന്റെ പരമാവധി മൂല്യം, k വളവിന്റെ കൂറ്റൻത്വം. ഫംഗ്ഷന്റെ ഫലം 0.5-ൽ കൂടുതലായാൽ, ആ ലേബലിന് ബൈനറി തിരഞ്ഞെടുപ്പിൽ '1' ക്ലാസ് നൽകും. അല്ലെങ്കിൽ '0' ആയി വർഗ്ഗീകരിക്കും. + +## നിങ്ങളുടെ മോഡൽ നിർമ്മിക്കുക + +ഈ ബൈനറി ക്ലാസിഫിക്കേഷൻ കണ്ടെത്താൻ മോഡൽ നിർമ്മിക്കുന്നത് Scikit-learn-ൽ അത്യന്തം ലളിതമാണ്. + +[![ML for beginners - Logistic Regression for classification of data](https://img.youtube.com/vi/MmZS2otPrQ8/0.jpg)](https://youtu.be/MmZS2otPrQ8 "ML for beginners - Logistic Regression for classification of data") + +> 🎥 ലീനിയർ റെഗ്രഷൻ മോഡൽ നിർമ്മാണത്തിന്റെ ഒരു ചുരുക്ക വീഡിയോ അവലോകനത്തിന് മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക + +1. നിങ്ങളുടെ ക്ലാസിഫിക്കേഷൻ മോഡലിൽ ഉപയോഗിക്കാൻ ആഗ്രഹിക്കുന്ന വേരിയബിളുകൾ തിരഞ്ഞെടുക്കുക, പരിശീലനവും പരിശോധനാ സെറ്റുകളും `train_test_split()` വിളിച്ച് വിഭജിക്കുക: + + ```python + from sklearn.model_selection import train_test_split + + X = encoded_pumpkins[encoded_pumpkins.columns.difference(['Color'])] + y = encoded_pumpkins['Color'] + + X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) + + ``` + +2. ഇപ്പോൾ നിങ്ങളുടെ മോഡൽ പരിശീലിപ്പിക്കാൻ, പരിശീലന ഡാറ്റ ഉപയോഗിച്ച് `fit()` വിളിച്ച് ഫലം പ്രിന്റ് ചെയ്യുക: + + ```python + from sklearn.metrics import f1_score, classification_report + from sklearn.linear_model import LogisticRegression + + model = LogisticRegression() + model.fit(X_train, y_train) + predictions = model.predict(X_test) + + print(classification_report(y_test, predictions)) + print('Predicted labels: ', predictions) + print('F1-score: ', f1_score(y_test, predictions)) + ``` + + നിങ്ങളുടെ മോഡലിന്റെ സ്കോർബോർഡ് നോക്കൂ. ഏകദേശം 1000 വരി ഡാറ്റ മാത്രമുള്ളതിനാൽ മോശമല്ല: + + ```output + precision recall f1-score support + + 0 0.94 0.98 0.96 166 + 1 0.85 0.67 0.75 33 + + accuracy 0.92 199 + macro avg 0.89 0.82 0.85 199 + weighted avg 0.92 0.92 0.92 199 + + Predicted labels: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 + 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 + 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 0 0 0 1 0 0 0 0 0 0 0 0 1 1] + F1-score: 0.7457627118644068 + ``` + +## ഒരു കൺഫ്യൂഷൻ മാട്രിക്സ് വഴി മെച്ചപ്പെട്ട മനസ്സിലാക്കൽ + +മുകളിൽ കൊടുത്ത [terms](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.classification_report.html?highlight=classification_report#sklearn.metrics.classification_report) പ്രിന്റ് ചെയ്ത് സ്കോർബോർഡ് റിപ്പോർട്ട് ലഭിക്കാം, പക്ഷേ മോഡൽ എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്ന് മനസ്സിലാക്കാൻ [കൺഫ്യൂഷൻ മാട്രിക്സ്](https://scikit-learn.org/stable/modules/model_evaluation.html#confusion-matrix) ഉപയോഗിക്കുന്നത് സഹായിക്കും. + +> 🎓 '[കൺഫ്യൂഷൻ മാട്രിക്സ്](https://wikipedia.org/wiki/Confusion_matrix)' (അഥവാ 'എറർ മാട്രിക്സ്') നിങ്ങളുടെ മോഡലിന്റെ യഥാർത്ഥവും തെറ്റായ പോസിറ്റീവുകളും നെഗറ്റീവുകളും കാണിക്കുന്ന ഒരു പട്ടികയാണ്, പ്രവചനങ്ങളുടെ കൃത്യത അളക്കാൻ. + +1. കൺഫ്യൂഷൻ മാട്രിക്സ് ഉപയോഗിക്കാൻ `confusion_matrix()` വിളിക്കുക: + + ```python + from sklearn.metrics import confusion_matrix + confusion_matrix(y_test, predictions) + ``` + + നിങ്ങളുടെ മോഡലിന്റെ കൺഫ്യൂഷൻ മാട്രിക്സ് നോക്കൂ: + + ```output + array([[162, 4], + [ 11, 22]]) + ``` + +Scikit-learn-ൽ, കൺഫ്യൂഷൻ മാട്രിക്സിലെ വരികൾ (അക്ഷം 0) യഥാർത്ഥ ലേബലുകളാണ്, കോളങ്ങൾ (അക്ഷം 1) പ്രവചിച്ച ലേബലുകളാണ്. + +| | 0 | 1 | +| :---: | :---: | :---: | +| 0 | TN | FP | +| 1 | FN | TP | + +ഇവിടെ എന്താണ് സംഭവിക്കുന്നത്? നമുക്ക് മോഡലിന് പംപ്കിനുകളെ രണ്ട് ബൈനറി വിഭാഗങ്ങളായി, 'വെളുപ്പ്' എന്ന വിഭാഗവും 'വെളുപ്പ് അല്ല' എന്ന വിഭാഗവും വേർതിരിക്കാൻ ആവശ്യപ്പെട്ടതായി കരുതാം. + +- മോഡൽ ഒരു പംപ്കിൻ വെളുപ്പ് അല്ല എന്ന് പ്രവചിച്ചാൽ, അത് യഥാർത്ഥത്തിൽ 'വെളുപ്പ് അല്ല' വിഭാഗത്തിൽപ്പെട്ടതാണ് എങ്കിൽ, അത് ഒരു ട്രൂ നെഗറ്റീവ് ആണ്, മുകളിൽ ഇടത്തുള്ള സംഖ്യ കാണിക്കുന്നു. +- മോഡൽ ഒരു പംപ്കിൻ വെളുപ്പ് ആണെന്ന് പ്രവചിച്ചാൽ, എന്നാൽ യഥാർത്ഥത്തിൽ 'വെളുപ്പ് അല്ല' വിഭാഗത്തിൽപ്പെട്ടതാണ് എങ്കിൽ, അത് ഒരു ഫാൾസ് പോസിറ്റീവ് ആണ്, മുകളിൽ വലത്തുള്ള സംഖ്യ കാണിക്കുന്നു. +- മോഡൽ ഒരു പംപ്കിൻ വെളുപ്പ് അല്ല എന്ന് പ്രവചിച്ചാൽ, എന്നാൽ യഥാർത്ഥത്തിൽ 'വെളുപ്പ്' വിഭാഗത്തിൽപ്പെട്ടതാണ് എങ്കിൽ, അത് ഒരു ഫാൾസ് നെഗറ്റീവ് ആണ്, താഴെ ഇടത്തുള്ള സംഖ്യ കാണിക്കുന്നു. +- മോഡൽ ഒരു പംപ്കിൻ വെളുപ്പ് ആണെന്ന് പ്രവചിച്ചാൽ, അത് യഥാർത്ഥത്തിൽ 'വെളുപ്പ്' വിഭാഗത്തിൽപ്പെട്ടതാണ് എങ്കിൽ, അത് ഒരു ട്രൂ പോസിറ്റീവ് ആണ്, താഴെ വലത്തുള്ള സംഖ്യ കാണിക്കുന്നു. +നിങ്ങൾക്ക് തോന്നിയതുപോലെ, സത്യം പോസിറ്റീവുകളും സത്യം നെഗറ്റീവുകളും കൂടുതലായിരിക്കണം, തെറ്റായ പോസിറ്റീവുകളും തെറ്റായ നെഗറ്റീവുകളും കുറവായിരിക്കണം, അതായത് മോഡൽ മികച്ച പ്രകടനം നടത്തുന്നു എന്നതാണ്. + +കൺഫ്യൂഷൻ മാട്രിക്സ് പ്രിസിഷനും റിക്കോളും എങ്ങനെ ബന്ധപ്പെട്ടിരിക്കുന്നു? മുകളിൽ പ്രിന്റ് ചെയ്ത ക്ലാസിഫിക്കേഷൻ റിപ്പോർട്ട് പ്രിസിഷൻ (0.85)യും റിക്കോൾ (0.67)യും കാണിച്ചു. + +Precision = tp / (tp + fp) = 22 / (22 + 4) = 0.8461538461538461 + +Recall = tp / (tp + fn) = 22 / (22 + 11) = 0.6666666666666666 + +✅ Q: കൺഫ്യൂഷൻ മാട്രിക്സിന്റെ പ്രകാരം മോഡൽ എങ്ങനെ പ്രവർത്തിച്ചു? A: മോശമല്ല; സത്യം നെഗറ്റീവുകളുടെ എണ്ണം നല്ലതാണെങ്കിലും ചില തെറ്റായ നെഗറ്റീവുകളും ഉണ്ട്. + +TP/TN, FP/FN എന്നിവയുടെ കൺഫ്യൂഷൻ മാട്രിക്സ് മാപ്പിംഗിന്റെ സഹായത്തോടെ മുമ്പ് കണ്ട പദങ്ങൾ വീണ്ടും പരിശോധിക്കാം: + +🎓 Precision: TP/(TP + FP) തിരികെ കിട്ടിയ ഉദാഹരണങ്ങളിൽ പ്രസക്തമായ ഉദാഹരണങ്ങളുടെ അനുപാതം (ഉദാ: ഏത് ലേബലുകൾ ശരിയായി ലേബൽ ചെയ്തിരിക്കുന്നു) + +🎓 Recall: TP/(TP + FN) തിരികെ കിട്ടിയ പ്രസക്തമായ ഉദാഹരണങ്ങളുടെ അനുപാതം, ശരിയായി ലേബൽ ചെയ്തിട്ടുണ്ടോ എന്നത് നോക്കാതെ + +🎓 f1-score: (2 * precision * recall)/(precision + recall) പ്രിസിഷനും റിക്കോളും തമ്മിലുള്ള ഭാരിത ശരാശരി, ഏറ്റവും നല്ലത് 1, ഏറ്റവും മോശം 0 + +🎓 Support: തിരികെ കിട്ടിയ ഓരോ ലേബലിന്റെയും സംഭവങ്ങളുടെ എണ്ണം + +🎓 Accuracy: (TP + TN)/(TP + TN + FP + FN) ഒരു സാമ്പിളിനായി ശരിയായി പ്രവചിച്ച ലേബലുകളുടെ ശതമാനം + +🎓 Macro Avg: ഓരോ ലേബലിനും ലേബൽ അസമത്വം പരിഗണിക്കാതെ ഗണ്യമായ ശരാശരി മെട്രിക്‌സ് + +🎓 Weighted Avg: ഓരോ ലേബലിനും ലേബൽ അസമത്വം പരിഗണിച്ച് അവയുടെ സപ്പോർട്ട് (ഓരോ ലേബലിനും സത്യം ഉദാഹരണങ്ങളുടെ എണ്ണം) അനുസരിച്ച് ഭാരിത ശരാശരി + +✅ നിങ്ങളുടെ മോഡൽ തെറ്റായ നെഗറ്റീവുകളുടെ എണ്ണം കുറയ്ക്കണമെന്ന് ആഗ്രഹിക്കുന്നുവെങ്കിൽ ഏത് മെട്രിക് ശ്രദ്ധിക്കണം എന്ന് നിങ്ങൾക്ക് തോന്നുന്നുണ്ടോ? + +## ഈ മോഡലിന്റെ ROC വക്രം ദൃശ്യവൽക്കരിക്കുക + +[![ML for beginners - Analyzing Logistic Regression Performance with ROC Curves](https://img.youtube.com/vi/GApO575jTA0/0.jpg)](https://youtu.be/GApO575jTA0 "ML for beginners - Analyzing Logistic Regression Performance with ROC Curves") + +> 🎥 ROC വക്രങ്ങളുടെ ഒരു ചെറിയ വീഡിയോ അവലോകനത്തിന് മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക + +'ROC' വക്രം കാണാൻ മറ്റൊരു ദൃശ്യവൽക്കരണം ചെയ്യാം: + +```python +from sklearn.metrics import roc_curve, roc_auc_score +import matplotlib +import matplotlib.pyplot as plt +%matplotlib inline + +y_scores = model.predict_proba(X_test) +fpr, tpr, thresholds = roc_curve(y_test, y_scores[:,1]) + +fig = plt.figure(figsize=(6, 6)) +plt.plot([0, 1], [0, 1], 'k--') +plt.plot(fpr, tpr) +plt.xlabel('False Positive Rate') +plt.ylabel('True Positive Rate') +plt.title('ROC Curve') +plt.show() +``` + +Matplotlib ഉപയോഗിച്ച് മോഡലിന്റെ [Receiving Operating Characteristic](https://scikit-learn.org/stable/auto_examples/model_selection/plot_roc.html?highlight=roc) അല്ലെങ്കിൽ ROC വരച്ചിടുക. ROC വക്രങ്ങൾ സാധാരണയായി ക്ലാസിഫയറിന്റെ ഔട്ട്പുട്ട് സത്യം പോസിറ്റീവുകളും തെറ്റായ പോസിറ്റീവുകളും എന്ന കാഴ്ചപ്പാടിൽ കാണാൻ ഉപയോഗിക്കുന്നു. "ROC വക്രങ്ങളിൽ സാധാരണയായി Y അക്ഷത്തിൽ സത്യം പോസിറ്റീവ് നിരക്കും X അക്ഷത്തിൽ തെറ്റായ പോസിറ്റീവ് നിരക്കും കാണിക്കുന്നു." അതിനാൽ വക്രത്തിന്റെ കൂറ്റൻതയും മധ്യരേഖയും വക്രത്തിനിടയിലെ ഇടവും പ്രധാനമാണ്: നിങ്ങൾക്ക് വക്രം വേഗത്തിൽ മുകളിൽ കയറി രേഖയെ മറികടക്കുന്നത് വേണം. നമ്മുടെ കേസിൽ, തുടക്കത്തിൽ തെറ്റായ പോസിറ്റീവുകൾ ഉണ്ട്, പിന്നീട് രേഖ ശരിയായി മുകളിൽ കയറി മറികടക്കുന്നു: + +![ROC](../../../../translated_images/ROC_2.777f20cdfc4988ca683ade6850ac832cb70c96c12f1b910d294f270ef36e1a1c.ml.png) + +അവസാനമായി, Scikit-learn ന്റെ [`roc_auc_score` API](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_auc_score.html?highlight=roc_auc#sklearn.metrics.roc_auc_score) ഉപയോഗിച്ച് യഥാർത്ഥ 'Area Under the Curve' (AUC) കണക്കാക്കുക: + +```python +auc = roc_auc_score(y_test,y_scores[:,1]) +print(auc) +``` +ഫലം `0.9749908725812341` ആണ്. AUC 0 മുതൽ 1 വരെ മാറുന്നതുകൊണ്ട്, വലിയ സ്കോർ വേണം, കാരണം 100% ശരിയായ പ്രവചനമുള്ള മോഡലിന് AUC 1 ആയിരിക്കും; ഈ കേസിൽ മോഡൽ _നന്നായിരിക്കുന്നു_. + +ഭാവിയിലെ ക്ലാസിഫിക്കേഷൻ പാഠങ്ങളിൽ, നിങ്ങളുടെ മോഡലിന്റെ സ്കോറുകൾ മെച്ചപ്പെടുത്താൻ എങ്ങനെ പുനരാവർത്തനം ചെയ്യാമെന്ന് പഠിക്കും. എന്നാൽ ഇപ്പോൾ, അഭിനന്ദനങ്ങൾ! നിങ്ങൾ ഈ റെഗ്രഷൻ പാഠങ്ങൾ പൂർത്തിയാക്കി! + +--- +## 🚀ചലഞ്ച് + +ലോജിസ്റ്റിക് റെഗ്രഷൻ സംബന്ധിച്ച് പഠിക്കാനുള്ള കാര്യങ്ങൾ വളരെ കൂടുതലുണ്ട്! എന്നാൽ പഠിക്കാൻ ഏറ്റവും നല്ല മാർഗം പരീക്ഷണമാണ്. ഈ തരം വിശകലനത്തിന് അനുയോജ്യമായ ഒരു ഡാറ്റാസെറ്റ് കണ്ടെത്തി അതുമായി ഒരു മോഡൽ നിർമ്മിക്കുക. നിങ്ങൾ എന്ത് പഠിക്കുന്നു? ടിപ്പ്: രസകരമായ ഡാറ്റാസെറ്റുകൾക്കായി [Kaggle](https://www.kaggle.com/search?q=logistic+regression+datasets) പരീക്ഷിക്കുക. + +## [പോസ്റ്റ്-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +## അവലോകനം & സ്വയം പഠനം + +ലോജിസ്റ്റിക് റെഗ്രഷന്റെ ചില പ്രായോഗിക ഉപയോഗങ്ങളെക്കുറിച്ച് പഠിക്കാൻ [സ്റ്റാൻഫോർഡിന്റെ ഈ പേപ്പറിന്റെ](https://web.stanford.edu/~jurafsky/slp3/5.pdf) ആദ്യ കുറച്ച് പേജുകൾ വായിക്കുക. ഇതുവരെ പഠിച്ചിട്ടുള്ള റെഗ്രഷൻ ടാസ്കുകളിൽ ഏത് ടാസ്കുകൾക്ക് ഏത് തരത്തിലുള്ള റെഗ്രഷൻ അനുയോജ്യമാണ് എന്ന് ചിന്തിക്കുക. ഏത് ഏറ്റവും നല്ലത്? + +## അസൈൻമെന്റ് + +[ഈ റെഗ്രഷൻ വീണ്ടും ശ്രമിക്കുക](assignment.md) + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/2-Regression/4-Logistic/assignment.md b/translations/ml/2-Regression/4-Logistic/assignment.md new file mode 100644 index 000000000..f36a141ad --- /dev/null +++ b/translations/ml/2-Regression/4-Logistic/assignment.md @@ -0,0 +1,26 @@ + +# ചില Regression വീണ്ടും ശ്രമിക്കുന്നു + +## നിർദ്ദേശങ്ങൾ + +പാഠത്തിൽ, നിങ്ങൾ പംപ്കിൻ ഡാറ്റയുടെ ഒരു ഉപസമൂഹം ഉപയോഗിച്ചു. ഇപ്പോൾ, മടക്കം യഥാർത്ഥ ഡാറ്റയിലേക്ക് പോയി, അതിന്റെ മുഴുവൻ ഭാഗവും ശുദ്ധീകരിച്ച് സ്റ്റാൻഡർഡൈസ് ചെയ്ത് Logistic Regression മോഡൽ നിർമ്മിക്കാൻ ശ്രമിക്കുക. +## റൂബ്രിക് + +| മാനദണ്ഡം | ഉദാഹരണപരമായത് | മതിയായത് | മെച്ചപ്പെടുത്തേണ്ടത് | +| -------- | ----------------------------------------------------------------------- | ------------------------------------------------------------ | ----------------------------------------------------------- | +| | നന്നായി വിശദീകരിച്ചും നന്നായി പ്രവർത്തിക്കുന്ന മോഡലോടുകൂടിയ ഒരു നോട്ട്‌ബുക്ക് അവതരിപ്പിക്കുന്നു | കുറഞ്ഞതും പ്രവർത്തിക്കുന്ന മോഡലോടുകൂടിയ ഒരു നോട്ട്‌ബുക്ക് അവതരിപ്പിക്കുന്നു | കുറഞ്ഞ പ്രകടനമുള്ള മോഡലോ ഒന്നുമില്ലാത്ത നോട്ട്‌ബുക്ക് അവതരിപ്പിക്കുന്നു | + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/2-Regression/4-Logistic/notebook.ipynb b/translations/ml/2-Regression/4-Logistic/notebook.ipynb new file mode 100644 index 000000000..b03031e32 --- /dev/null +++ b/translations/ml/2-Regression/4-Logistic/notebook.ipynb @@ -0,0 +1,269 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## പംപ്കിൻ വകഭേദങ്ങളും നിറവും\n", + "\n", + "ആവശ്യമായ ലൈബ്രറികളും ഡാറ്റാസെറ്റും ലോഡ് ചെയ്യുക. ഡാറ്റയുടെ ഒരു ഉപസമൂഹം അടങ്ങിയ ഡാറ്റാഫ്രെയിമിലേക്ക് ഡാറ്റ മാറ്റുക:\n", + "\n", + "നിറവും വകഭേദവും തമ്മിലുള്ള ബന്ധം നോക്കാം\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
City NameTypePackageVarietySub VarietyGradeDateLow PriceHigh PriceMostly Low...Unit of SaleQualityConditionAppearanceStorageCropRepackTrans ModeUnnamed: 24Unnamed: 25
0BALTIMORENaN24 inch binsNaNNaNNaN4/29/17270.0280.0270.0...NaNNaNNaNNaNNaNNaNENaNNaNNaN
1BALTIMORENaN24 inch binsNaNNaNNaN5/6/17270.0280.0270.0...NaNNaNNaNNaNNaNNaNENaNNaNNaN
2BALTIMORENaN24 inch binsHOWDEN TYPENaNNaN9/24/16160.0160.0160.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
3BALTIMORENaN24 inch binsHOWDEN TYPENaNNaN9/24/16160.0160.0160.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
4BALTIMORENaN24 inch binsHOWDEN TYPENaNNaN11/5/1690.0100.090.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
\n", + "

5 rows × 26 columns

\n", + "
" + ], + "text/plain": [ + " City Name Type Package Variety Sub Variety Grade Date \\\n", + "0 BALTIMORE NaN 24 inch bins NaN NaN NaN 4/29/17 \n", + "1 BALTIMORE NaN 24 inch bins NaN NaN NaN 5/6/17 \n", + "2 BALTIMORE NaN 24 inch bins HOWDEN TYPE NaN NaN 9/24/16 \n", + "3 BALTIMORE NaN 24 inch bins HOWDEN TYPE NaN NaN 9/24/16 \n", + "4 BALTIMORE NaN 24 inch bins HOWDEN TYPE NaN NaN 11/5/16 \n", + "\n", + " Low Price High Price Mostly Low ... Unit of Sale Quality Condition \\\n", + "0 270.0 280.0 270.0 ... NaN NaN NaN \n", + "1 270.0 280.0 270.0 ... NaN NaN NaN \n", + "2 160.0 160.0 160.0 ... NaN NaN NaN \n", + "3 160.0 160.0 160.0 ... NaN NaN NaN \n", + "4 90.0 100.0 90.0 ... NaN NaN NaN \n", + "\n", + " Appearance Storage Crop Repack Trans Mode Unnamed: 24 Unnamed: 25 \n", + "0 NaN NaN NaN E NaN NaN NaN \n", + "1 NaN NaN NaN E NaN NaN NaN \n", + "2 NaN NaN NaN N NaN NaN NaN \n", + "3 NaN NaN NaN N NaN NaN NaN \n", + "4 NaN NaN NaN N NaN NaN NaN \n", + "\n", + "[5 rows x 26 columns]" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "\n", + "full_pumpkins = pd.read_csv('../data/US-pumpkins.csv')\n", + "\n", + "full_pumpkins.head()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**അസൂയാപത്രം**: \nഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ വ്യാഖ്യാനക്കേടുകൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല.\n\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.1" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "orig_nbformat": 2, + "coopTranslator": { + "original_hash": "dee08c2b49057b0de8b6752c4dbca368", + "translation_date": "2025-12-19T16:18:30+00:00", + "source_file": "2-Regression/4-Logistic/notebook.ipynb", + "language_code": "ml" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/translations/ml/2-Regression/4-Logistic/solution/Julia/README.md b/translations/ml/2-Regression/4-Logistic/solution/Julia/README.md new file mode 100644 index 000000000..af0595115 --- /dev/null +++ b/translations/ml/2-Regression/4-Logistic/solution/Julia/README.md @@ -0,0 +1,17 @@ + +ഇത് ഒരു താൽക്കാലിക പ്ലേസ്ഹോൾഡർ ആണ് + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/2-Regression/4-Logistic/solution/R/lesson_4-R.ipynb b/translations/ml/2-Regression/4-Logistic/solution/R/lesson_4-R.ipynb new file mode 100644 index 000000000..6c1e32052 --- /dev/null +++ b/translations/ml/2-Regression/4-Logistic/solution/R/lesson_4-R.ipynb @@ -0,0 +1,678 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## ലോജിസ്റ്റിക് റെഗ്രഷൻ മോഡൽ നിർമ്മിക്കുക - പാഠം 4\n", + "\n", + "![Logistic vs. linear regression infographic](../../../../../../translated_images/linear-vs-logistic.ba180bf95e7ee66721ba10ebf2dac2666acbd64a88b003c83928712433a13c7d.ml.png)\n", + "\n", + "#### **[പ്രീ-ലെക്ചർ ക്വിസ്](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/15/)**\n", + "\n", + "#### പരിചയം\n", + "\n", + "റെഗ്രഷൻ എന്ന അടിസ്ഥാന *ക്ലാസിക്* എംഎൽ സാങ്കേതികവിദ്യകളിൽ ഒന്ന് ആയ ലോജിസ്റ്റിക് റെഗ്രഷനെക്കുറിച്ച് ഈ അവസാന പാഠത്തിൽ നാം നോക്കാം. ബൈനറി വിഭാഗങ്ങൾ പ്രവചിക്കാൻ ഈ സാങ്കേതികവിദ്യ ഉപയോഗിക്കും. ഈ കാൻഡി ചോക്ലേറ്റ് ആണോ അല്ലയോ? ഈ രോഗം സംക്രമണശീലമാണോ അല്ലയോ? ഈ ഉപഭോക്താവ് ഈ ഉൽപ്പന്നം തിരഞ്ഞെടുക്കുമോ അല്ലയോ?\n", + "\n", + "ഈ പാഠത്തിൽ നിങ്ങൾ പഠിക്കാനിരിക്കുന്നതെന്തെന്നാൽ:\n", + "\n", + "- ലോജിസ്റ്റിക് റെഗ്രഷനുള്ള സാങ്കേതികവിദ്യകൾ\n", + "\n", + "✅ ഈ തരത്തിലുള്ള റെഗ്രഷനുമായി പ്രവർത്തിക്കുന്നതിൽ നിങ്ങളുടെ മനസ്സിലാക്കൽ കൂടുതൽ ആഴപ്പെടുത്തുക ഈ [Learn module](https://learn.microsoft.com/training/modules/introduction-classification-models/?WT.mc_id=academic-77952-leestott) വഴി\n", + "\n", + "## മുൻപരിചയം\n", + "\n", + "പംപ്കിൻ ഡാറ്റ ഉപയോഗിച്ച് പ്രവർത്തിച്ചതിനാൽ, അതിൽ ഒരു ബൈനറി വിഭാഗം ഉണ്ടെന്ന് നമുക്ക് അറിയാം: `Color`.\n", + "\n", + "ചില വേരിയബിളുകൾ നൽകിയാൽ, *ഒരു പംപ്കിൻ ഏത് നിറത്തിൽ ഉണ്ടാകാൻ സാധ്യതയുള്ളതാണെന്ന്* (ഓറഞ്ച് 🎃 അല്ലെങ്കിൽ വെളുപ്പ് 👻) പ്രവചിക്കാൻ ഒരു ലോജിസ്റ്റിക് റെഗ്രഷൻ മോഡൽ നിർമ്മിക്കാം.\n", + "\n", + "> റെഗ്രഷൻ പാഠം ഗ്രൂപ്പിൽ ബൈനറി ക്ലാസിഫിക്കേഷൻ എന്തുകൊണ്ട് ചർച്ച ചെയ്യുന്നു? ഭാഷാശൈലിയുടെ സൗകര്യത്തിനായി മാത്രമാണ്, കാരണം ലോജിസ്റ്റിക് റെഗ്രഷൻ [വാസ്തവത്തിൽ ഒരു ക്ലാസിഫിക്കേഷൻ രീതി ആണ്](https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression), എന്നാൽ ലീനിയർ അടിസ്ഥാനമാക്കിയുള്ളത്. അടുത്ത പാഠ ഗ്രൂപ്പിൽ ഡാറ്റ ക്ലാസിഫൈ ചെയ്യാനുള്ള മറ്റ് മാർഗങ്ങൾ പഠിക്കാം.\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", + "- `janitor`: [janitor പാക്കേജ്](https://github.com/sfirke/janitor) മാലിന്യമായ ഡാറ്റ പരിശോധിക്കാനും ശുദ്ധമാക്കാനും ലളിതമായ ഉപകരണങ്ങൾ നൽകുന്നു.\n", + "\n", + "- `ggbeeswarm`: [ggbeeswarm പാക്കേജ്](https://github.com/eclarke/ggbeeswarm) ggplot2 ഉപയോഗിച്ച് ബീസ്വാർം-സ്റ്റൈൽ പ്ലോട്ടുകൾ സൃഷ്ടിക്കാൻ മാർഗങ്ങൾ നൽകുന്നു.\n", + "\n", + "ഇവ ഇൻസ്റ്റാൾ ചെയ്യാൻ:\n", + "\n", + "`install.packages(c(\"tidyverse\", \"tidymodels\", \"janitor\", \"ggbeeswarm\"))`\n", + "\n", + "അല്ലെങ്കിൽ, താഴെ കൊടുത്തിരിക്കുന്ന സ്ക്രിപ്റ്റ് ഈ മോഡ്യൂൾ പൂർത്തിയാക്കാൻ ആവശ്യമായ പാക്കേജുകൾ നിങ്ങൾക്കുണ്ടോ എന്ന് പരിശോധിച്ച്, ഇല്ലെങ്കിൽ ഇൻസ്റ്റാൾ ചെയ്യും.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "suppressWarnings(if (!require(\"pacman\"))install.packages(\"pacman\"))\n", + "\n", + "pacman::p_load(tidyverse, tidymodels, janitor, ggbeeswarm)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **ചോദ്യം നിർവചിക്കുക**\n", + "\n", + "നമ്മുടെ ആവശ്യങ്ങൾക്കായി, ഇത് ഒരു ബൈനറി ആയി പ്രകടിപ്പിക്കും: 'വെളുത്ത' അല്ലെങ്കിൽ 'വെളുത്ത അല്ല'. നമ്മുടെ ഡാറ്റാസെറ്റിൽ 'സ്ട്രൈപ്പഡ്' എന്ന ഒരു വിഭാഗവും ഉണ്ട്, പക്ഷേ അതിന്റെ ഉദാഹരണങ്ങൾ കുറവാണ്, അതിനാൽ നാം അത് ഉപയോഗിക്കില്ല. ഡാറ്റാസെറ്റിൽ നിന്നുള്ള നൾ മൂല്യങ്ങൾ നീക്കം ചെയ്താൽ അത് അപ്രാപ്തമാകും.\n", + "\n", + "> 🎃 രസകരമായ ഒരു വസ്തുത, നാം ചിലപ്പോൾ വെളുത്ത പംപ്കിനുകളെ 'ഭൂതം' പംപ്കിനുകൾ എന്ന് വിളിക്കുന്നു. അവ കട്ടിയുള്ളവയല്ല, അതിനാൽ ഓറഞ്ച് പംപ്കിനുകളെപ്പോലെ ജനപ്രിയമല്ല, പക്ഷേ അവ കൂൾ കാണപ്പെടുന്നു! അതിനാൽ നാം നമ്മുടെ ചോദ്യം ഇങ്ങനെ പുനരാഖ്യാനം ചെയ്യാം: 'ഭൂതം' അല്ലെങ്കിൽ 'ഭൂതം അല്ല'. 👻\n", + "\n", + "## **ലോജിസ്റ്റിക് റെഗ്രഷൻ കുറിച്ച്**\n", + "\n", + "ലീനിയർ റെഗ്രഷനിൽ നിന്നുള്ള വ്യത്യാസങ്ങൾ ലോജിസ്റ്റിക് റെഗ്രഷനിൽ ചില പ്രധാനപ്പെട്ട രീതികളിൽ കാണാം.\n", + "\n", + "#### **ബൈനറി ക്ലാസിഫിക്കേഷൻ**\n", + "\n", + "ലോജിസ്റ്റിക് റെഗ്രഷൻ ലീനിയർ റെഗ്രഷനിൽ ഉള്ളതുപോലെ സവിശേഷതകൾ നൽകുന്നില്ല. മുൻപുള്ളത് ഒരു `ബൈനറി വിഭാഗം` (\"ഓറഞ്ച് അല്ലെങ്കിൽ ഓറഞ്ച് അല്ല\") സംബന്ധിച്ച പ്രവചനമാണ് നൽകുന്നത്, പിന്നീടുള്ളത് തുടർച്ചയായ മൂല്യങ്ങൾ പ്രവചിക്കാൻ കഴിയും, ഉദാഹരണത്തിന് ഒരു പംപ്കിന്റെ ഉത്ഭവവും വിളവെടുപ്പ് സമയവും നൽകിയാൽ, *അതിന്റ വില എത്ര ഉയരും* എന്നത്.\n", + "\n", + "![Infographic by Dasani Madipalli](../../../../../../translated_images/pumpkin-classifier.562771f104ad5436b87d1c67bca02a42a17841133556559325c0a0e348e5b774.ml.png)\n", + "\n", + "### മറ്റ് ക്ലാസിഫിക്കേഷനുകൾ\n", + "\n", + "മൾട്ടിനോമിയൽ, ഓർഡിനൽ എന്നിവ ഉൾപ്പെടെ മറ്റ് തരത്തിലുള്ള ലോജിസ്റ്റിക് റെഗ്രഷനുകളും ഉണ്ട്:\n", + "\n", + "- **മൾട്ടിനോമിയൽ**, ഇതിൽ ഒന്നിലധികം വിഭാഗങ്ങൾ ഉണ്ടാകാം - \"ഓറഞ്ച്, വെളുത്ത, സ്ട്രൈപ്പഡ്\".\n", + "\n", + "- **ഓർഡിനൽ**, ഇത് ക്രമീകരിച്ച വിഭാഗങ്ങൾ ഉൾക്കൊള്ളുന്നു, ഉദാഹരണത്തിന് നമുക്ക് ഫലം ലജിക്കൽ ആയി ക്രമീകരിക്കേണ്ടതുണ്ടെങ്കിൽ, നമ്മുടെ പംപ്കിനുകൾ ചെറിയ, ചെറിയ, മധ്യ, വലിയ, എക്സ് എൽ, ഡബിൾ എക്സ് എൽ എന്നിങ്ങനെ ക്രമീകരിച്ചിരിക്കുന്നതുപോലെ.\n", + "\n", + "![Multinomial vs ordinal regression](../../../../../../translated_images/multinomial-vs-ordinal.36701b4850e37d86c9dd49f7bef93a2f94dbdb8fe03443eb68f0542f97f28f29.ml.png)\n", + "\n", + "#### **വേരിയബിളുകൾ തമ്മിൽ ബന്ധപ്പെടേണ്ടതില്ല**\n", + "\n", + "ലീനിയർ റെഗ്രഷൻ കൂടുതൽ ബന്ധമുള്ള വേരിയബിളുകളുമായി നല്ല ഫലം നൽകുന്നുവെന്ന് ഓർക്കുക? ലോജിസ്റ്റിക് റെഗ്രഷൻ അതിന്റെ വിരുദ്ധമാണ് - വേരിയബിളുകൾ തമ്മിൽ പൊരുത്തപ്പെടേണ്ടതില്ല. ഈ ഡാറ്റയ്ക്ക് ഇത് അനുയോജ്യമാണ്, കാരണം ഇതിൽ ബന്ധങ്ങൾ കുറവാണ്.\n", + "\n", + "#### **നിങ്ങൾക്ക് വളരെ ശുദ്ധമായ ഡാറ്റ ആവശ്യമുണ്ട്**\n", + "\n", + "ലോജിസ്റ്റിക് റെഗ്രഷൻ കൂടുതൽ ഡാറ്റ ഉപയോഗിച്ചാൽ കൂടുതൽ കൃത്യമായ ഫലങ്ങൾ നൽകും; നമ്മുടെ ചെറിയ ഡാറ്റാസെറ്റ് ഈ ജോലി ചെയ്യാൻ അനുയോജ്യമല്ല, അതിനാൽ ഇത് മനസ്സിലാക്കുക.\n", + "\n", + "✅ ലോജിസ്റ്റിക് റെഗ്രഷനുമായി നല്ല അനുയോജ്യമായ ഡാറ്റയുടെ തരം എന്തെല്ലാമാകാമെന്ന് ചിന്തിക്കുക\n", + "\n", + "## അഭ്യാസം - ഡാറ്റ ശുദ്ധമാക്കുക\n", + "\n", + "ആദ്യം, ഡാറ്റ കുറച്ച് ശുദ്ധമാക്കുക, നൾ മൂല്യങ്ങൾ ഒഴിവാക്കി ചില കോളങ്ങൾ മാത്രം തിരഞ്ഞെടുക്കുക:\n", + "\n", + "1. താഴെ കൊടുത്തിരിക്കുന്ന കോഡ് ചേർക്കുക:\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "# Load the core tidyverse packages\n", + "library(tidyverse)\n", + "\n", + "# Import the data and clean column names\n", + "pumpkins <- read_csv(file = \"https://raw.githubusercontent.com/microsoft/ML-For-Beginners/main/2-Regression/data/US-pumpkins.csv\") %>% \n", + " clean_names()\n", + "\n", + "# Select desired columns\n", + "pumpkins_select <- pumpkins %>% \n", + " select(c(city_name, package, variety, origin, item_size, color)) \n", + "\n", + "# Drop rows containing missing values and encode color as factor (category)\n", + "pumpkins_select <- pumpkins_select %>% \n", + " drop_na() %>% \n", + " mutate(color = factor(color))\n", + "\n", + "# View the first few rows\n", + "pumpkins_select %>% \n", + " slice_head(n = 5)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "നിങ്ങളുടെ പുതിയ ഡാറ്റാഫ്രെയിമിൽ ഒരു കാഴ്ച എപ്പോഴും എടുക്കാൻ കഴിയും, താഴെ കാണുന്ന പോലെ [*glimpse()*](https://pillar.r-lib.org/reference/glimpse.html) ഫംഗ്ഷൻ ഉപയോഗിച്ച്:\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "pumpkins_select %>% \n", + " glimpse()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "നാം യഥാർത്ഥത്തിൽ ഒരു ബൈനറി ക്ലാസിഫിക്കേഷൻ പ്രശ്നം ചെയ്യുകയാണെന്ന് നമുക്ക് സ്ഥിരീകരിക്കാം:\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "# Subset distinct observations in outcome column\n", + "pumpkins_select %>% \n", + " distinct(color)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Visualization - categorical plot\n", + "ഇപ്പോൾ നിങ്ങൾ പംപ്കിൻ ഡാറ്റ വീണ്ടും ലോഡ് ചെയ്ത് ചില വേരിയബിളുകൾ ഉൾപ്പെടുന്ന ഒരു ഡാറ്റാസെറ്റ് സംരക്ഷിക്കാൻ ക്ലീൻ ചെയ്തിട്ടുണ്ട്, അതിൽ Color ഉൾപ്പെടുന്നു. നോട്ട്ബുക്കിൽ ggplot ലൈബ്രറി ഉപയോഗിച്ച് ഡാറ്റാഫ്രെയിം ദൃശ്യവൽക്കരിക്കാം.\n", + "\n", + "ggplot ലൈബ്രറി നിങ്ങളുടെ ഡാറ്റ ദൃശ്യവൽക്കരിക്കാൻ ചില നല്ല മാർഗങ്ങൾ നൽകുന്നു. ഉദാഹരണത്തിന്, ഓരോ Variety, Color എന്നിവയുടെ ഡാറ്റയുടെ വിതരണങ്ങൾ categorical plot-ൽ താരതമ്യം ചെയ്യാം.\n", + "\n", + "1. geombar ഫംഗ്ഷൻ ഉപയോഗിച്ച്, നമ്മുടെ പംപ്കിൻ ഡാറ്റ ഉപയോഗിച്ച്, ഓരോ പംപ്കിൻ വിഭാഗത്തിനും (ഓറഞ്ച് അല്ലെങ്കിൽ വൈറ്റ്) കളർ മാപ്പിംഗ് വ്യക്തമാക്കിയാണ് ഇത്തരമൊരു പ്ലോട്ട് സൃഷ്ടിക്കുക:\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "python" + } + }, + "outputs": [], + "source": [ + "# Specify colors for each value of the hue variable\n", + "palette <- c(ORANGE = \"orange\", WHITE = \"wheat\")\n", + "\n", + "# Create the bar plot\n", + "ggplot(pumpkins_select, aes(y = variety, fill = color)) +\n", + " geom_bar(position = \"dodge\") +\n", + " scale_fill_manual(values = palette) +\n", + " labs(y = \"Variety\", fill = \"Color\") +\n", + " theme_minimal()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ഡാറ്റ നിരീക്ഷിച്ചാൽ, കളർ ഡാറ്റ വർണ്ണവിവിധത്വവുമായി എങ്ങനെ ബന്ധപ്പെട്ടിരിക്കുന്നു എന്ന് കാണാം.\n", + "\n", + "✅ ഈ വർഗ്ഗീയ പ്ലോട്ട് നൽകിയതിനെ അടിസ്ഥാനമാക്കി, നിങ്ങൾക്ക് എന്തെല്ലാം രസകരമായ അന്വേഷണങ്ങൾ കണക്കാക്കാനാകും?\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ഡാറ്റ പ്രീ-പ്രോസസ്സിംഗ്: ഫീച്ചർ എൻകോഡിംഗ്\n", + "\n", + "നമ്മുടെ പംപ്കിൻസ് ഡാറ്റാസെറ്റിൽ എല്ലാ കോളങ്ങളുടെയും സ്ട്രിംഗ് മൂല്യങ്ങൾ അടങ്ങിയിരിക്കുന്നു. വർഗ്ഗീകരിച്ച ഡാറ്റയുമായി പ്രവർത്തിക്കുന്നത് മനുഷ്യർക്കു സുലഭമാണ്, പക്ഷേ യന്ത്രങ്ങൾക്ക് അല്ല. മെഷീൻ ലേണിംഗ് ആൽഗോരിതങ്ങൾ സംഖ്യകളുമായി നല്ല രീതിയിൽ പ്രവർത്തിക്കുന്നു. അതുകൊണ്ടുതന്നെ എൻകോഡിംഗ് ഡാറ്റ പ്രീ-പ്രോസസ്സിംഗ് ഘട്ടത്തിൽ വളരെ പ്രധാനപ്പെട്ട ഒരു ഘട്ടമാണ്, കാരണം ഇത് വർഗ്ഗീകരിച്ച ഡാറ്റയെ സംഖ്യാത്മക ഡാറ്റയാക്കി മാറ്റാൻ സഹായിക്കുന്നു, വിവരങ്ങൾ നഷ്ടപ്പെടാതെ. നല്ല എൻകോഡിംഗ് നല്ല മോഡൽ നിർമ്മിക്കാൻ സഹായിക്കുന്നു.\n", + "\n", + "ഫീച്ചർ എൻകോഡിംഗിനായി രണ്ട് പ്രധാന തരം എൻകോഡറുകൾ ഉണ്ട്:\n", + "\n", + "1. ഓർഡിനൽ എൻകോഡർ: ഇത് ഓർഡിനൽ വേരിയബിളുകൾക്ക് അനുയോജ്യമാണ്, അവ വർഗ്ഗീകരിച്ച വേരിയബിളുകളാണ്, അവയുടെ ഡാറ്റ ഒരു ലജിക്കൽ ഓർഡറിംഗ് പിന്തുടരുന്നു, ഉദാഹരണത്തിന് നമ്മുടെ ഡാറ്റാസെറ്റിലെ `item_size` കോളം. ഓരോ വർഗ്ഗവും ഒരു സംഖ്യയാൽ പ്രതിനിധീകരിക്കുന്ന ഒരു മാപ്പിംഗ് സൃഷ്ടിക്കുന്നു, അത് കോളത്തിലെ വർഗ്ഗത്തിന്റെ ക്രമമാണ്.\n", + "\n", + "2. വർഗ്ഗീകരിച്ച എൻകോഡർ: ഇത് നോമിനൽ വേരിയബിളുകൾക്ക് അനുയോജ്യമാണ്, അവ വർഗ്ഗീകരിച്ച വേരിയബിളുകളാണ്, അവയുടെ ഡാറ്റ ഒരു ലജിക്കൽ ഓർഡറിംഗ് പിന്തുടരുന്നില്ല, ഉദാഹരണത്തിന് നമ്മുടെ ഡാറ്റാസെറ്റിലെ `item_size` ഒഴികെയുള്ള എല്ലാ ഫീച്ചറുകളും. ഇത് ഒരു വൺ-ഹോട്ട് എൻകോഡിംഗ് ആണ്, അതായത് ഓരോ വർഗ്ഗവും ഒരു ബൈനറി കോളമായി പ്രതിനിധീകരിക്കുന്നു: പംപ്കിൻ ആ വർഗ്ഗത്തിൽപ്പെട്ടാൽ എൻകോഡുചെയ്ത വേരിയബിൾ 1 ആകും, അല്ലെങ്കിൽ 0.\n", + "\n", + "ടിഡിമോഡൽസ് മറ്റൊരു നല്ല പാക്കേജ് നൽകുന്നു: [recipes](https://recipes.tidymodels.org/) - ഡാറ്റ പ്രീപ്രോസസ്സിംഗിനുള്ള ഒരു പാക്കേജ്. എല്ലാ പ്രഡിക്ടർ കോളങ്ങളും സംഖ്യകളായി എൻകോഡ് ചെയ്യപ്പെടണമെന്ന് നിർദ്ദേശിക്കുന്ന ഒരു `recipe` നാം നിർവചിക്കും, അതിനെ `prep` ചെയ്ത് ആവശ്യമായ അളവുകളും സ്ഥിതിവിവരങ്ങളും കണക്കാക്കും, ഒടുവിൽ `bake` ഉപയോഗിച്ച് പുതിയ ഡാറ്റയിൽ കണക്കുകൾ പ്രയോഗിക്കും.\n", + "\n", + "> സാധാരണയായി, recipes മോഡലിംഗിനുള്ള പ്രീപ്രോസസ്സറായി ഉപയോഗിക്കുന്നു, അതിൽ ഡാറ്റ സെറ്റിൽ ഏത് ഘട്ടങ്ങൾ പ്രയോഗിക്കണമെന്ന് നിർവചിക്കുന്നു, മോഡലിംഗിന് തയ്യാറാക്കാൻ. ആ സാഹചര്യത്തിൽ `workflow()` ഉപയോഗിക്കുന്നത് **മികച്ചതാണ്**, പകരം `prep` ഉം `bake` ഉം ഉപയോഗിച്ച് മാനുവലായി ഒരു recipe കണക്കാക്കുന്നതിന്. നാം ഇതെല്ലാം ഉടൻ കാണും.\n", + ">\n", + "> എന്നാൽ ഇപ്പോൾ, നാം recipes + prep + bake ഉപയോഗിച്ച് ഡാറ്റാ വിശകലനത്തിന് തയ്യാറാക്കാൻ ഏത് ഘട്ടങ്ങൾ പ്രയോഗിക്കണമെന്ന് നിർദ്ദേശിക്കുകയും, ആ ഘട്ടങ്ങൾ പ്രയോഗിച്ച പ്രീപ്രോസസ്സുചെയ്ത ഡാറ്റ എടുക്കുകയും ചെയ്യുന്നു.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "# Preprocess and extract data to allow some data analysis\n", + "baked_pumpkins <- recipe(color ~ ., data = pumpkins_select) %>%\n", + " # Define ordering for item_size column\n", + " step_mutate(item_size = ordered(item_size, levels = c('sml', 'med', 'med-lge', 'lge', 'xlge', 'jbo', 'exjbo'))) %>%\n", + " # Convert factors to numbers using the order defined above (Ordinal encoding)\n", + " step_integer(item_size, zero_based = F) %>%\n", + " # Encode all other predictors using one hot encoding\n", + " step_dummy(all_nominal(), -all_outcomes(), one_hot = TRUE) %>%\n", + " prep(data = pumpkin_select) %>%\n", + " bake(new_data = NULL)\n", + "\n", + "# Display the first few rows of preprocessed data\n", + "baked_pumpkins %>% \n", + " slice_head(n = 5)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "✅ Item Size കോളത്തിനായി ഓർഡിനൽ എൻകോഡർ ഉപയോഗിക്കുന്നതിന്റെ ഗുണങ്ങൾ എന്തെല്ലാം?\n", + "\n", + "### വ്യത്യസ്ത വേരിയബിളുകൾ തമ്മിലുള്ള ബന്ധങ്ങൾ വിശകലനം ചെയ്യുക\n", + "\n", + "ഇപ്പോൾ നാം നമ്മുടെ ഡാറ്റ പ്രീ-പ്രോസസ് ചെയ്തതിനുശേഷം, ഫീച്ചറുകളും ലേബലും തമ്മിലുള്ള ബന്ധങ്ങൾ വിശകലനം ചെയ്ത്, ഫീച്ചറുകൾ നൽകിയാൽ മോഡൽ ലേബൽ എത്രത്തോളം നന്നായി പ്രവചിക്കാനാകും എന്ന് മനസിലാക്കാം. ഈ തരത്തിലുള്ള വിശകലനം നടത്താനുള്ള ഏറ്റവും നല്ല മാർഗം ഡാറ്റ പ്ലോട്ട് ചെയ്യുകയാണ്. \n", + "Item Size, Variety, Color എന്നിവ തമ്മിലുള്ള ബന്ധങ്ങൾ കാറ്റഗോറിയൽ പ്ലോട്ടിൽ കാണിക്കാൻ നാം വീണ്ടും ggplot-ന്റെ geom_boxplot_ ഫംഗ്ഷൻ ഉപയോഗിക്കും. ഡാറ്റയെ കൂടുതൽ നല്ല രീതിയിൽ പ്ലോട്ട് ചെയ്യാൻ, എൻകോഡുചെയ്ത Item Size കോളവും എൻകോഡുചെയ്യാത്ത Variety കോളവും ഉപയോഗിക്കും.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "# Define the color palette\n", + "palette <- c(ORANGE = \"orange\", WHITE = \"wheat\")\n", + "\n", + "# We need the encoded Item Size column to use it as the x-axis values in the plot\n", + "pumpkins_select_plot<-pumpkins_select\n", + "pumpkins_select_plot$item_size <- baked_pumpkins$item_size\n", + "\n", + "# Create the grouped box plot\n", + "ggplot(pumpkins_select_plot, aes(x = `item_size`, y = color, fill = color)) +\n", + " geom_boxplot() +\n", + " facet_grid(variety ~ ., scales = \"free_x\") +\n", + " scale_fill_manual(values = palette) +\n", + " labs(x = \"Item Size\", y = \"\") +\n", + " theme_minimal() +\n", + " theme(strip.text = element_text(size = 12)) +\n", + " theme(axis.text.x = element_text(size = 10)) +\n", + " theme(axis.title.x = element_text(size = 12)) +\n", + " theme(axis.title.y = element_blank()) +\n", + " theme(legend.position = \"bottom\") +\n", + " guides(fill = guide_legend(title = \"Color\")) +\n", + " theme(panel.spacing = unit(0.5, \"lines\"))+\n", + " theme(strip.text.y = element_text(size = 4, hjust = 0)) \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### സ്വാർം പ്ലോട്ട് ഉപയോഗിക്കുക\n", + "\n", + "Color ഒരു ബൈനറി വിഭാഗമാണെന്നതിനാൽ (White അല്ലെങ്കിൽ Not), visualization-ന് 'a [specialized approach](https://github.com/rstudio/cheatsheets/blob/main/data-visualization.pdf)' ആവശ്യമുണ്ട്.\n", + "\n", + "item_size-നോട് ബന്ധപ്പെട്ട് color-ന്റെ വിതരണത്തെ കാണിക്കാൻ `swarm plot` പരീക്ഷിക്കുക.\n", + "\n", + "നാം [ggbeeswarm package](https://github.com/eclarke/ggbeeswarm) ഉപയോഗിക്കും, ഇത് ggplot2 ഉപയോഗിച്ച് beeswarm-ശൈലിയിൽ പ്ലോട്ടുകൾ സൃഷ്ടിക്കാൻ മാർഗങ്ങൾ നൽകുന്നു. Beeswarm പ്ലോട്ടുകൾ സാധാരണയായി ഒതുക്കിയിരിക്കും പോയിന്റുകൾ പരസ്പരം അടുത്ത് വീഴാതെ പക്കൽ വീഴാൻ ഉപയോഗിക്കുന്ന ഒരു രീതിയാണ്.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "# Create beeswarm plots of color and item_size\n", + "baked_pumpkins %>% \n", + " mutate(color = factor(color)) %>% \n", + " ggplot(mapping = aes(x = color, y = item_size, color = color)) +\n", + " geom_quasirandom() +\n", + " scale_color_brewer(palette = \"Dark2\", direction = -1) +\n", + " theme(legend.position = \"none\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ഇപ്പോൾ നിറത്തിന്റെ ബൈനറി വിഭാഗങ്ങളും വലിപ്പങ്ങളുടെ വലിയ ഗ്രൂപ്പും തമ്മിലുള്ള ബന്ധത്തെക്കുറിച്ച് ഒരു ആശയം ലഭിച്ചതിനുശേഷം, ഒരു നൽകിയ പംപ്കിന്റെ സാധ്യതയുള്ള നിറം നിർണയിക്കാൻ ലോജിസ്റ്റിക് റെഗ്രഷൻ പരിശോധിക്കാം.\n", + "\n", + "## നിങ്ങളുടെ മോഡൽ നിർമ്മിക്കുക\n", + "\n", + "നിങ്ങൾ നിങ്ങളുടെ വർഗ്ഗീകരണ മോഡലിൽ ഉപയോഗിക്കാൻ ആഗ്രഹിക്കുന്ന ചാരങ്ങൾ തിരഞ്ഞെടുക്കുകയും ഡാറ്റ പരിശീലനവും പരിശോധനാ സെറ്റുകളായി വിഭജിക്കുകയും ചെയ്യുക. Tidymodels-ൽ ഉള്ള ഒരു പാക്കേജ് ആയ [rsample](https://rsample.tidymodels.org/) കാര്യക്ഷമമായ ഡാറ്റ വിഭജനം, റീസാമ്പ്ലിംഗ് എന്നിവയ്ക്ക് അടിസ്ഥാന സൗകര്യം നൽകുന്നു:\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "# Split data into 80% for training and 20% for testing\n", + "set.seed(2056)\n", + "pumpkins_split <- pumpkins_select %>% \n", + " initial_split(prop = 0.8)\n", + "\n", + "# Extract the data in each split\n", + "pumpkins_train <- training(pumpkins_split)\n", + "pumpkins_test <- testing(pumpkins_split)\n", + "\n", + "# Print out the first 5 rows of the training set\n", + "pumpkins_train %>% \n", + " slice_head(n = 5)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "🙌 നാം ഇപ്പോൾ ട്രെയിനിംഗ് ഫീച്ചറുകൾ ട്രെയിനിംഗ് ലേബലിനോട് (നിറം) ഫിറ്റ് ചെയ്ത് ഒരു മോഡൽ പരിശീലിപ്പിക്കാൻ തയ്യാറാണ്.\n", + "\n", + "മോഡലിംഗിന് തയ്യാറാക്കുന്നതിനായി നമ്മുടെ ഡാറ്റയിൽ നടത്തേണ്ട പ്രീപ്രോസസ്സിംഗ് ഘട്ടങ്ങൾ വ്യക്തമാക്കുന്ന ഒരു റെസിപ്പി സൃഷ്ടിക്കുന്നതിലൂടെ നാം ആരംഭിക്കും, ഉദാഹരണത്തിന്: വർഗ്ഗീയ ചാരങ്ങളായ വേരിയബിളുകൾ ഒരു ഇന്റിജർ സെറ്റായി എൻകോഡ് ചെയ്യുക. `baked_pumpkins` പോലെ, നാം ഒരു `pumpkins_recipe` സൃഷ്ടിക്കും, പക്ഷേ അത് `prep` ചെയ്യുകയോ `bake` ചെയ്യുകയോ ചെയ്യില്ല, കാരണം അത് ഒരു വർക്ക്‌ഫ്ലോയിൽ പാക്കുചെയ്യപ്പെടും, അത് നിങ്ങൾ അടുത്ത കുറച്ച് ഘട്ടങ്ങളിൽ കാണും.\n", + "\n", + "Tidymodels-ൽ ലൊജിസ്റ്റിക് റെഗ്രഷൻ മോഡൽ വ്യക്തമാക്കാനുള്ള നിരവധി മാർഗ്ഗങ്ങളുണ്ട്. `?logistic_reg()` കാണുക. ഇപ്പോൾ, നാം ഡിഫോൾട്ട് `stats::glm()` എഞ്ചിൻ വഴി ഒരു ലൊജിസ്റ്റിക് റെഗ്രഷൻ മോഡൽ വ്യക്തമാക്കും.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "# Create a recipe that specifies preprocessing steps for modelling\n", + "pumpkins_recipe <- recipe(color ~ ., data = pumpkins_train) %>% \n", + " step_mutate(item_size = ordered(item_size, levels = c('sml', 'med', 'med-lge', 'lge', 'xlge', 'jbo', 'exjbo'))) %>%\n", + " step_integer(item_size, zero_based = F) %>% \n", + " step_dummy(all_nominal(), -all_outcomes(), one_hot = TRUE)\n", + "\n", + "# Create a logistic model specification\n", + "log_reg <- logistic_reg() %>% \n", + " set_engine(\"glm\") %>% \n", + " set_mode(\"classification\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ഇപ്പോൾ ഞങ്ങൾക്ക് ഒരു റെസിപ്പിയും ഒരു മോഡൽ സ്പെസിഫിക്കേഷനും ഉണ്ടാകുമ്പോൾ, അവയെ ഒന്നിച്ച് ബണ്ടിൽ ചെയ്യാനുള്ള ഒരു മാർഗം കണ്ടെത്തേണ്ടതുണ്ട്, ഇത് ആദ്യം ഡാറ്റ പ്രീപ്രോസസ് ചെയ്യും (പ്രീപ്+ബേക്ക് പിന്നിൽ), പ്രീപ്രോസസ് ചെയ്ത ഡാറ്റയിൽ മോഡൽ ഫിറ്റ് ചെയ്യും, കൂടാതെ സാധ്യതയുള്ള പോസ്റ്റ്-പ്രോസസ്സിംഗ് പ്രവർത്തനങ്ങൾക്കും അനുവദിക്കും.\n", + "\n", + "Tidymodels-ൽ, ഈ സൗകര്യപ്രദമായ ഒബ്ജക്റ്റ് ഒരു [`workflow`](https://workflows.tidymodels.org/) എന്ന് വിളിക്കുന്നു, ഇത് നിങ്ങളുടെ മോഡലിംഗ് ഘടകങ്ങൾ സൗകര്യപ്രദമായി കൈവശം വയ്ക്കുന്നു.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "# Bundle modelling components in a workflow\n", + "log_reg_wf <- workflow() %>% \n", + " add_recipe(pumpkins_recipe) %>% \n", + " add_model(log_reg)\n", + "\n", + "# Print out the workflow\n", + "log_reg_wf\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ഒരു വർക്ക്‌ഫ്ലോ *നിർവചിച്ചശേഷം*, ഒരു മോഡൽ [`fit()`](https://tidymodels.github.io/parsnip/reference/fit.html) ഫംഗ്ഷൻ ഉപയോഗിച്ച് `പരിശീലിപ്പിക്കപ്പെടാം`. പരിശീലനത്തിന് മുമ്പ് വർക്ക്‌ഫ്ലോ ഒരു റെസിപ്പി അളക്കുകയും ഡാറ്റ പ്രീപ്രോസസ് ചെയ്യുകയും ചെയ്യും, അതിനാൽ prep, bake എന്നിവ ഉപയോഗിച്ച് അത് മാനുവലായി ചെയ്യേണ്ടതില്ല.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "# Train the model\n", + "wf_fit <- log_reg_wf %>% \n", + " fit(data = pumpkins_train)\n", + "\n", + "# Print the trained workflow\n", + "wf_fit\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "മോഡൽ പ്രിന്റ് ഔട്ട് പരിശീലനത്തിനിടെ പഠിച്ച കോഫിഷ്യന്റുകളാണ് കാണിക്കുന്നത്.\n", + "\n", + "ഇപ്പോൾ പരിശീലന ഡാറ്റ ഉപയോഗിച്ച് മോഡൽ പരിശീലിപ്പിച്ചതിനുശേഷം, [parsnip::predict()](https://parsnip.tidymodels.org/reference/predict.model_fit.html) ഉപയോഗിച്ച് ടെസ്റ്റ് ഡാറ്റയിൽ പ്രവചനങ്ങൾ നടത്താം. ടെസ്റ്റ് സെറ്റിനുള്ള ലേബലുകളും ഓരോ ലേബലിനും ഉള്ള സാധ്യതകളും പ്രവചിക്കാൻ മോഡൽ ഉപയോഗിച്ച് തുടങ്ങാം. സാധ്യത 0.5-ൽ കൂടുതലായാൽ predict ക്ലാസ് `WHITE` ആകും, അല്ലെങ്കിൽ `ORANGE`.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "# Make predictions for color and corresponding probabilities\n", + "results <- pumpkins_test %>% select(color) %>% \n", + " bind_cols(wf_fit %>% \n", + " predict(new_data = pumpkins_test)) %>%\n", + " bind_cols(wf_fit %>%\n", + " predict(new_data = pumpkins_test, type = \"prob\"))\n", + "\n", + "# Compare predictions\n", + "results %>% \n", + " slice_head(n = 10)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Translation for chunk 1 of 'lesson_4-R.ipynb' skipped due to timeout.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "# Confusion matrix for prediction results\n", + "conf_mat(data = results, truth = color, estimate = .pred_class)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "നമുക്ക് കൺഫ്യൂഷൻ മാട്രിക്സ് വ്യാഖ്യാനിക്കാം. നമ്മുടെ മോഡലിന് പംപ്കിനുകളെ രണ്ട് ബൈനറി വിഭാഗങ്ങളായ `white` (വെള്ള) എന്ന വിഭാഗവും `not-white` (വെള്ളയല്ലാത്ത) എന്ന വിഭാഗവും ആയി വർഗ്ഗീകരിക്കാൻ ആവശ്യപ്പെടുന്നു.\n", + "\n", + "- നിങ്ങളുടെ മോഡൽ ഒരു പംപ്കിൻ വെള്ളയായി പ്രവചിച്ചാൽ, അത് യഥാർത്ഥത്തിൽ 'white' വിഭാഗത്തിൽപ്പെട്ടതാണെങ്കിൽ, അത് `true positive` (സത്യം പോസിറ്റീവ്) എന്ന് വിളിക്കുന്നു, മുകളിൽ ഇടത്തുള്ള സംഖ്യ കാണിക്കുന്നു.\n", + "\n", + "- നിങ്ങളുടെ മോഡൽ ഒരു പംപ്കിൻ വെള്ളയല്ലാത്തതായി പ്രവചിച്ചാൽ, അത് യഥാർത്ഥത്തിൽ 'white' വിഭാഗത്തിൽപ്പെട്ടതാണെങ്കിൽ, അത് `false negative` (തെറ്റായ നെഗറ്റീവ്) എന്ന് വിളിക്കുന്നു, താഴെ ഇടത്തുള്ള സംഖ്യ കാണിക്കുന്നു.\n", + "\n", + "- നിങ്ങളുടെ മോഡൽ ഒരു പംപ്കിൻ വെള്ളയായി പ്രവചിച്ചാൽ, അത് യഥാർത്ഥത്തിൽ 'not-white' വിഭാഗത്തിൽപ്പെട്ടതാണെങ്കിൽ, അത് `false positive` (തെറ്റായ പോസിറ്റീവ്) എന്ന് വിളിക്കുന്നു, മുകളിൽ വലത്തുള്ള സംഖ്യ കാണിക്കുന്നു.\n", + "\n", + "- നിങ്ങളുടെ മോഡൽ ഒരു പംപ്കിൻ വെള്ളയല്ലാത്തതായി പ്രവചിച്ചാൽ, അത് യഥാർത്ഥത്തിൽ 'not-white' വിഭാഗത്തിൽപ്പെട്ടതാണെങ്കിൽ, അത് `true negative` (സത്യം നെഗറ്റീവ്) എന്ന് വിളിക്കുന്നു, താഴെ വലത്തുള്ള സംഖ്യ കാണിക്കുന്നു.\n", + "\n", + "| Truth |\n", + "|:-----:|\n", + "\n", + "\n", + "| | | |\n", + "|---------------|--------|-------|\n", + "| **Predicted** | WHITE | ORANGE |\n", + "| WHITE | TP | FP |\n", + "| ORANGE | FN | TN |\n", + "\n", + "നിങ്ങൾക്ക് തോന്നിയതുപോലെ, സത്യം പോസിറ്റീവുകളും സത്യം നെഗറ്റീവുകളും കൂടുതലായിരിക്കണം, തെറ്റായ പോസിറ്റീവുകളും തെറ്റായ നെഗറ്റീവുകളും കുറവായിരിക്കണം, ഇത് മോഡൽ മികച്ച പ്രകടനം നടത്തുന്നു എന്ന് സൂചിപ്പിക്കുന്നു.\n", + "\n", + "കൺഫ്യൂഷൻ മാട്രിക്സ് സഹായകരമാണ്, കാരണം ഇത് മറ്റുള്ള മെട്രിക്കുകൾക്ക് വഴിതെളിക്കുന്നു, അവ മോഡലിന്റെ പ്രകടനം മെച്ചമായി വിലയിരുത്താൻ സഹായിക്കും. അവയിൽ ചിലത് നോക്കാം:\n", + "\n", + "🎓 Precision: `TP/(TP + FP)` പ്രവചിച്ച പോസിറ്റീവുകളിൽ യഥാർത്ഥ പോസിറ്റീവുകളുടെ അനുപാതം. [positive predictive value](https://en.wikipedia.org/wiki/Positive_predictive_value \"Positive predictive value\") എന്നും വിളിക്കുന്നു.\n", + "\n", + "🎓 Recall: `TP/(TP + FN)` യഥാർത്ഥ പോസിറ്റീവ് സാമ്പിളുകളിൽ നിന്നുള്ള പോസിറ്റീവ് ഫലങ്ങളുടെ അനുപാതം. `sensitivity` എന്നും അറിയപ്പെടുന്നു.\n", + "\n", + "🎓 Specificity: `TN/(TN + FP)` യഥാർത്ഥ നെഗറ്റീവ് സാമ്പിളുകളിൽ നിന്നുള്ള നെഗറ്റീവ് ഫലങ്ങളുടെ അനുപാതം.\n", + "\n", + "🎓 Accuracy: `TP + TN/(TP + TN + FP + FN)` ഒരു സാമ്പിളിനായി ശരിയായി പ്രവചിച്ച ലേബലുകളുടെ ശതമാനം.\n", + "\n", + "🎓 F Measure: Precision ഉം Recall ഉം തമ്മിലുള്ള ഭാരിത ശരാശരി, ഏറ്റവും നല്ലത് 1, ഏറ്റവും മോശം 0.\n", + "\n", + "ഇപ്പോൾ ഈ മെട്രിക്കുകൾ കണക്കാക്കാം!\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "# Combine metric functions and calculate them all at once\n", + "eval_metrics <- metric_set(ppv, recall, spec, f_meas, accuracy)\n", + "eval_metrics(data = results, truth = color, estimate = .pred_class)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## ഈ മോഡലിന്റെ ROC വളവ് ദൃശ്യവത്കരിക്കുക\n", + "\n", + "നമുക്ക് ഒരു കൂടി ദൃശ്യവത്കരണം ചെയ്യാം, അതായത്所谓的 [`ROC curve`](https://en.wikipedia.org/wiki/Receiver_operating_characteristic) കാണാൻ:\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "# Make a roc_curve\n", + "results %>% \n", + " roc_curve(color, .pred_ORANGE) %>% \n", + " autoplot()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ROC വക്രങ്ങൾ സാധാരണയായി ക്ലാസിഫയറിന്റെ ഔട്ട്പുട്ട് സത്യം എതിരായ പോസിറ്റീവുകളുടെ അടിസ്ഥാനത്തിൽ കാണാൻ ഉപയോഗിക്കുന്നു. ROC വക്രങ്ങൾ സാധാരണയായി Y അക്ഷത്തിൽ `True Positive Rate`/സെൻസിറ്റിവിറ്റി, X അക്ഷത്തിൽ `False Positive Rate`/1-സ്പെസിഫിസിറ്റി കാണിക്കുന്നു. അതിനാൽ, വക്രത്തിന്റെ കൂറ്റൻതയും മധ്യരേഖയും വക്രത്തിനിടയിലെ ഇടവും പ്രധാനമാണ്: നിങ്ങൾക്ക് വക്രം വേഗത്തിൽ മുകളിൽ കയറി രേഖയെ മറികടക്കുന്നത് വേണം. നമ്മുടെ കേസിൽ, തുടക്കത്തിൽ തെറ്റായ പോസിറ്റീവുകൾ ഉണ്ടാകുന്നു, പിന്നീട് രേഖ ശരിയായി മുകളിൽ കയറി മറികടക്കുന്നു.\n", + "\n", + "അവസാനമായി, യഥാർത്ഥ Area Under the Curve കണക്കാക്കാൻ `yardstick::roc_auc()` ഉപയോഗിക്കാം. AUC-യുടെ ഒരു വ്യാഖ്യാനം മോഡൽ ഒരു യാദൃച്ഛിക പോസിറ്റീവ് ഉദാഹരണത്തെ യാദൃച്ഛിക നെഗറ്റീവ് ഉദാഹരണത്തേക്കാൾ ഉയർന്ന റാങ്ക് ചെയ്യാനുള്ള സാധ്യതയായി കാണാം.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "# Calculate area under curve\n", + "results %>% \n", + " roc_auc(color, .pred_ORANGE)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ഫലം ഏകദേശം `0.975` ആണ്. AUC 0 മുതൽ 1 വരെ വ്യത്യാസപ്പെടുന്നതുകൊണ്ട്, നിങ്ങൾക്ക് വലിയ സ്കോർ വേണം, കാരണം 100% ശരിയായ പ്രവചനങ്ങൾ ചെയ്യുന്ന മോഡലിന് AUC 1 ആയിരിക്കും; ഈ സാഹചര്യത്തിൽ, മോഡൽ *ചെറുതല്ലാത്തത്* ആണ്.\n", + "\n", + "ഭാവിയിലെ ക്ലാസിഫിക്കേഷനുകളിലെ പാഠങ്ങളിൽ, ഈ മോഡലിന്റെ സ്കോറുകൾ മെച്ചപ്പെടുത്താൻ (ഈ കേസിൽ അസമതുല്യമായ ഡാറ്റ കൈകാര്യം ചെയ്യുന്നതുപോലുള്ള) നിങ്ങൾ പഠിക്കും.\n", + "\n", + "## 🚀ചലഞ്ച്\n", + "\n", + "ലോജിസ്റ്റിക് റെഗ്രഷൻ സംബന്ധിച്ച് തുറക്കാനുള്ള കാര്യങ്ങൾ വളരെ കൂടുതലുണ്ട്! പക്ഷേ പഠിക്കാൻ ഏറ്റവും നല്ല മാർഗം പരീക്ഷണമാണ്. ഈ തരം വിശകലനത്തിന് അനുയോജ്യമായ ഒരു ഡാറ്റാസെറ്റ് കണ്ടെത്തി അതുമായി ഒരു മോഡൽ നിർമ്മിക്കുക. നിങ്ങൾ എന്ത് പഠിക്കുന്നു? ടിപ്പ്: രസകരമായ ഡാറ്റാസെറ്റുകൾക്കായി [Kaggle](https://www.kaggle.com/search?q=logistic+regression+datasets) പരീക്ഷിക്കുക.\n", + "\n", + "## അവലോകനം & സ്വയം പഠനം\n", + "\n", + "ലോജിസ്റ്റിക് റെഗ്രഷന്റെ ചില പ്രായോഗിക ഉപയോഗങ്ങളെക്കുറിച്ച് [സ്റ്റാൻഫോർഡിൽ നിന്നുള്ള ഈ പേപ്പറിന്റെ](https://web.stanford.edu/~jurafsky/slp3/5.pdf) ആദ്യ കുറച്ച് പേജുകൾ വായിക്കുക. ഇതുവരെ പഠിച്ചിട്ടുള്ള റെഗ്രഷൻ ടാസ്കുകളിൽ ഏതൊക്കെ ടാസ്കുകൾ ഏത് തരത്തിലുള്ള റെഗ്രഷനിനാണ് കൂടുതൽ അനുയോജ്യം എന്ന് ചിന്തിക്കുക. ഏതാണ് ഏറ്റവും നല്ലത്?\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**അസൂയാ**: \nഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് കരുതേണ്ടതാണ്. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല.\n\n" + ] + } + ], + "metadata": { + "anaconda-cloud": "", + "kernelspec": { + "display_name": "R", + "langauge": "R", + "name": "ir" + }, + "language_info": { + "codemirror_mode": "r", + "file_extension": ".r", + "mimetype": "text/x-r-source", + "name": "R", + "pygments_lexer": "r", + "version": "3.4.1" + }, + "coopTranslator": { + "original_hash": "feaf125f481a89c468fa115bf2aed580", + "translation_date": "2025-12-19T16:46:02+00:00", + "source_file": "2-Regression/4-Logistic/solution/R/lesson_4-R.ipynb", + "language_code": "ml" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} \ No newline at end of file diff --git a/translations/ml/2-Regression/4-Logistic/solution/notebook.ipynb b/translations/ml/2-Regression/4-Logistic/solution/notebook.ipynb new file mode 100644 index 000000000..636db557d --- /dev/null +++ b/translations/ml/2-Regression/4-Logistic/solution/notebook.ipynb @@ -0,0 +1,1261 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Logistic Regression - പാഠം 4\n", + "\n", + "ആവശ്യമായ ലൈബ്രററികളും ഡാറ്റാസെറ്റും ലോഡ് ചെയ്യുക. ഡാറ്റയുടെ ഒരു ഉപസമൂഹം അടങ്ങിയ ഒരു ഡാറ്റാഫ്രെയിമിലേക്ക് ഡാറ്റ മാറ്റുക:\n" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
City NameTypePackageVarietySub VarietyGradeDateLow PriceHigh PriceMostly Low...Unit of SaleQualityConditionAppearanceStorageCropRepackTrans ModeUnnamed: 24Unnamed: 25
0BALTIMORENaN24 inch binsNaNNaNNaN4/29/17270.0280.0270.0...NaNNaNNaNNaNNaNNaNENaNNaNNaN
1BALTIMORENaN24 inch binsNaNNaNNaN5/6/17270.0280.0270.0...NaNNaNNaNNaNNaNNaNENaNNaNNaN
2BALTIMORENaN24 inch binsHOWDEN TYPENaNNaN9/24/16160.0160.0160.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
3BALTIMORENaN24 inch binsHOWDEN TYPENaNNaN9/24/16160.0160.0160.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
4BALTIMORENaN24 inch binsHOWDEN TYPENaNNaN11/5/1690.0100.090.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
\n", + "

5 rows × 26 columns

\n", + "
" + ], + "text/plain": [ + " City Name Type Package Variety Sub Variety Grade Date \n", + "0 BALTIMORE NaN 24 inch bins NaN NaN NaN 4/29/17 \\\n", + "1 BALTIMORE NaN 24 inch bins NaN NaN NaN 5/6/17 \n", + "2 BALTIMORE NaN 24 inch bins HOWDEN TYPE NaN NaN 9/24/16 \n", + "3 BALTIMORE NaN 24 inch bins HOWDEN TYPE NaN NaN 9/24/16 \n", + "4 BALTIMORE NaN 24 inch bins HOWDEN TYPE NaN NaN 11/5/16 \n", + "\n", + " Low Price High Price Mostly Low ... Unit of Sale Quality Condition \n", + "0 270.0 280.0 270.0 ... NaN NaN NaN \\\n", + "1 270.0 280.0 270.0 ... NaN NaN NaN \n", + "2 160.0 160.0 160.0 ... NaN NaN NaN \n", + "3 160.0 160.0 160.0 ... NaN NaN NaN \n", + "4 90.0 100.0 90.0 ... NaN NaN NaN \n", + "\n", + " Appearance Storage Crop Repack Trans Mode Unnamed: 24 Unnamed: 25 \n", + "0 NaN NaN NaN E NaN NaN NaN \n", + "1 NaN NaN NaN E NaN NaN NaN \n", + "2 NaN NaN NaN N NaN NaN NaN \n", + "3 NaN NaN NaN N NaN NaN NaN \n", + "4 NaN NaN NaN N NaN NaN NaN \n", + "\n", + "[5 rows x 26 columns]" + ] + }, + "execution_count": 63, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "\n", + "full_pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n", + "\n", + "full_pumpkins.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
City NamePackageVarietyOriginItem SizeColor
2BALTIMORE24 inch binsHOWDEN TYPEDELAWAREmedORANGE
3BALTIMORE24 inch binsHOWDEN TYPEVIRGINIAmedORANGE
4BALTIMORE24 inch binsHOWDEN TYPEMARYLANDlgeORANGE
5BALTIMORE24 inch binsHOWDEN TYPEMARYLANDlgeORANGE
6BALTIMORE36 inch binsHOWDEN TYPEMARYLANDmedORANGE
\n", + "
" + ], + "text/plain": [ + " City Name Package Variety Origin Item Size Color\n", + "2 BALTIMORE 24 inch bins HOWDEN TYPE DELAWARE med ORANGE\n", + "3 BALTIMORE 24 inch bins HOWDEN TYPE VIRGINIA med ORANGE\n", + "4 BALTIMORE 24 inch bins HOWDEN TYPE MARYLAND lge ORANGE\n", + "5 BALTIMORE 24 inch bins HOWDEN TYPE MARYLAND lge ORANGE\n", + "6 BALTIMORE 36 inch bins HOWDEN TYPE MARYLAND med ORANGE" + ] + }, + "execution_count": 64, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Select the columns we want to use\n", + "columns_to_select = ['City Name','Package','Variety', 'Origin','Item Size', 'Color']\n", + "pumpkins = full_pumpkins.loc[:, columns_to_select]\n", + "\n", + "# Drop rows with missing values\n", + "pumpkins.dropna(inplace=True)\n", + "\n", + "pumpkins.head()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# നമുക്ക് നമ്മുടെ ഡാറ്റ ഒരു നോട്ടം നോക്കാം!\n", + "\n", + "Seaborn ഉപയോഗിച്ച് അത് ദൃശ്യവത്കരിച്ച്\n" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 65, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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S0tLab1CCxcuxAcffIBXXnkFbm5uGDZsGF555RW89dZbBtd1cnLCjBkzMGjQIFy6dAleXl4AYHDuomRnZyM7O1t6nJ6eXqJxRERU/THQEMzMzHD79u2nuuaQIUOwefNmDB06FL1798bp06dx5syZYseYmZkBAHJycsq0Znh4OD755BO9dssOi2BlaQ7bBv5lmpeIiKoe76F5jomiiN27d+PXX39F586di+1br149affFwsICPj4+5V5/+fLlOH36NMaOHYvly5fDwcGhyL4pKSn44osvULduXWl3BgCmTJkiq8vCwgIHDhwwOEdoaCjS0tKk4/r16+W+BiIiqh64Q/Mc2rFjBywsLJCbm4uCggK8+eabmDVrVrFjDhw4ILs3pUaNGuWuw9HREe+99x62bNmCnj17GuxTr149iKKI//77D82aNcPGjRthYmIinZ80aRKCg4NlY+rWrWtwLrVaDbVaXe66iYio+mGgeQ5ptVpERkbCxMQEderUgUr15B8Dd3f3Et1DU1oqlarY9Q8cOAArKys4OjoavNnX3t4eHh4eFV4XEREpCwPNc8jc3FwxIaCyghQRET1bGGioRG7duoWsrCxZm52dXYW89FQeGRkZep+HU7NmTb23mBMR0bONNwVTiXh5ecHJyUl2/PHHH1VdFmbMmKFX1+TJk6u6LCIiesoEURTFqi6CqCqkp6fD2toaV05u4du2iYgUjjs0REREpHgMNERERKR4DDRERESkeAw0REREpHgMNERERKR4DDRERESkeAw0REREpHgMNERERKR4DDRERESkeAw0REREpHgMNERERKR4/LZteu7Z1tfy27mJiBSOOzRERESkeAw0REREpHgMNERERKR4DDRERESkeAw0REREpHgMNERERKR4DDRERESkeAw0REREpHgMNERERKR4/KRgeu5dXdUElmYlz/Zuw65UYjVERFQW3KEhIiIixWOgISIiIsVjoCEiIiLFY6AhIiIixWOgISIiIsVjoCEiIiLFY6AhIiIixWOgISIiIsVjoCEiIiLFY6AhIiIixWOgISIiIsVjoCEiIiLFY6AhIiIixWOgISIiIsVjoCml4OBgCIIgHXZ2dggMDMSpU6dk/QRBwJYtW2RtcXFxeO211+Dg4ABTU1M0aNAAAwYMwP79+4td083NDYIgYO3atXrnfHx8IAgCVq5cqXcu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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import seaborn as sns\n", + "# Specify colors for each values of the hue variable\n", + "palette = {\n", + " 'ORANGE': 'orange',\n", + " 'WHITE': 'wheat',\n", + "}\n", + "# Plot a bar plot to visualize how many pumpkins of each variety are orange or white\n", + "sns.catplot(\n", + " data=pumpkins, y=\"Variety\", hue=\"Color\", kind=\"count\",\n", + " palette=palette, \n", + ")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# ഡാറ്റ പ്രീ-പ്രോസസ്സിംഗ്\n", + "\n", + "ഡാറ്റയെ മെച്ചമായി പ്ലോട്ട് ചെയ്യാനും മോഡൽ ട്രെയിൻ ചെയ്യാനും ഫീച്ചറുകളും ലേബലുകളും എൻകോഡ് ചെയ്യാം\n" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['med', 'lge', 'sml', 'xlge', 'med-lge', 'jbo', 'exjbo'],\n", + " dtype=object)" + ] + }, + "execution_count": 66, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Let's look at the different values of the 'Item Size' column\n", + "pumpkins['Item Size'].unique()" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.preprocessing import OrdinalEncoder\n", + "# Encode the 'Item Size' column using ordinal encoding\n", + "item_size_categories = [['sml', 'med', 'med-lge', 'lge', 'xlge', 'jbo', 'exjbo']]\n", + "ordinal_features = ['Item Size']\n", + "ordinal_encoder = OrdinalEncoder(categories=item_size_categories)" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.preprocessing import OneHotEncoder\n", + "# Encode all the other features using one-hot encoding\n", + "categorical_features = ['City Name', 'Package', 'Variety', 'Origin']\n", + "categorical_encoder = OneHotEncoder(sparse_output=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ord__Item Sizecat__City Name_ATLANTAcat__City Name_BALTIMOREcat__City Name_BOSTONcat__City Name_CHICAGOcat__City Name_COLUMBIAcat__City Name_DALLAScat__City Name_DETROITcat__City Name_LOS ANGELEScat__City Name_MIAMI...cat__Origin_MICHIGANcat__Origin_NEW JERSEYcat__Origin_NEW YORKcat__Origin_NORTH CAROLINAcat__Origin_OHIOcat__Origin_PENNSYLVANIAcat__Origin_TENNESSEEcat__Origin_TEXAScat__Origin_VERMONTcat__Origin_VIRGINIA
21.00.01.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.00.00.0
31.00.01.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.00.01.0
43.00.01.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.00.00.0
53.00.01.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.00.00.0
61.00.01.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.00.00.0
\n", + "

5 rows × 48 columns

\n", + "
" + ], + "text/plain": [ + " ord__Item Size cat__City Name_ATLANTA cat__City Name_BALTIMORE \n", + "2 1.0 0.0 1.0 \\\n", + "3 1.0 0.0 1.0 \n", + "4 3.0 0.0 1.0 \n", + "5 3.0 0.0 1.0 \n", + "6 1.0 0.0 1.0 \n", + "\n", + " cat__City Name_BOSTON cat__City Name_CHICAGO cat__City Name_COLUMBIA \n", + "2 0.0 0.0 0.0 \\\n", + "3 0.0 0.0 0.0 \n", + "4 0.0 0.0 0.0 \n", + "5 0.0 0.0 0.0 \n", + "6 0.0 0.0 0.0 \n", + "\n", + " cat__City Name_DALLAS cat__City Name_DETROIT cat__City Name_LOS ANGELES \n", + "2 0.0 0.0 0.0 \\\n", + "3 0.0 0.0 0.0 \n", + "4 0.0 0.0 0.0 \n", + "5 0.0 0.0 0.0 \n", + "6 0.0 0.0 0.0 \n", + "\n", + " cat__City Name_MIAMI ... cat__Origin_MICHIGAN cat__Origin_NEW JERSEY \n", + "2 0.0 ... 0.0 0.0 \\\n", + "3 0.0 ... 0.0 0.0 \n", + "4 0.0 ... 0.0 0.0 \n", + "5 0.0 ... 0.0 0.0 \n", + "6 0.0 ... 0.0 0.0 \n", + "\n", + " cat__Origin_NEW YORK cat__Origin_NORTH CAROLINA cat__Origin_OHIO \n", + "2 0.0 0.0 0.0 \\\n", + "3 0.0 0.0 0.0 \n", + "4 0.0 0.0 0.0 \n", + "5 0.0 0.0 0.0 \n", + "6 0.0 0.0 0.0 \n", + "\n", + " cat__Origin_PENNSYLVANIA cat__Origin_TENNESSEE cat__Origin_TEXAS \n", + "2 0.0 0.0 0.0 \\\n", + "3 0.0 0.0 0.0 \n", + "4 0.0 0.0 0.0 \n", + "5 0.0 0.0 0.0 \n", + "6 0.0 0.0 0.0 \n", + "\n", + " cat__Origin_VERMONT cat__Origin_VIRGINIA \n", + "2 0.0 0.0 \n", + "3 0.0 1.0 \n", + "4 0.0 0.0 \n", + "5 0.0 0.0 \n", + "6 0.0 0.0 \n", + "\n", + "[5 rows x 48 columns]" + ] + }, + "execution_count": 69, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.compose import ColumnTransformer\n", + "ct = ColumnTransformer(transformers=[\n", + " ('ord', ordinal_encoder, ordinal_features),\n", + " ('cat', categorical_encoder, categorical_features)\n", + " ])\n", + "# Get the encoded features as a pandas DataFrame\n", + "ct.set_output(transform='pandas')\n", + "encoded_features = ct.fit_transform(pumpkins)\n", + "encoded_features.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ord__Item Sizecat__City Name_ATLANTAcat__City Name_BALTIMOREcat__City Name_BOSTONcat__City Name_CHICAGOcat__City Name_COLUMBIAcat__City Name_DALLAScat__City Name_DETROITcat__City Name_LOS ANGELEScat__City Name_MIAMI...cat__Origin_NEW JERSEYcat__Origin_NEW YORKcat__Origin_NORTH CAROLINAcat__Origin_OHIOcat__Origin_PENNSYLVANIAcat__Origin_TENNESSEEcat__Origin_TEXAScat__Origin_VERMONTcat__Origin_VIRGINIAColor
21.00.01.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.00.00
31.00.01.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.01.00
43.00.01.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.00.00
53.00.01.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.00.00
61.00.01.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.00.00
\n", + "

5 rows × 49 columns

\n", + "
" + ], + "text/plain": [ + " ord__Item Size cat__City Name_ATLANTA cat__City Name_BALTIMORE \n", + "2 1.0 0.0 1.0 \\\n", + "3 1.0 0.0 1.0 \n", + "4 3.0 0.0 1.0 \n", + "5 3.0 0.0 1.0 \n", + "6 1.0 0.0 1.0 \n", + "\n", + " cat__City Name_BOSTON cat__City Name_CHICAGO cat__City Name_COLUMBIA \n", + "2 0.0 0.0 0.0 \\\n", + "3 0.0 0.0 0.0 \n", + "4 0.0 0.0 0.0 \n", + "5 0.0 0.0 0.0 \n", + "6 0.0 0.0 0.0 \n", + "\n", + " cat__City Name_DALLAS cat__City Name_DETROIT cat__City Name_LOS ANGELES \n", + "2 0.0 0.0 0.0 \\\n", + "3 0.0 0.0 0.0 \n", + "4 0.0 0.0 0.0 \n", + "5 0.0 0.0 0.0 \n", + "6 0.0 0.0 0.0 \n", + "\n", + " cat__City Name_MIAMI ... cat__Origin_NEW JERSEY cat__Origin_NEW YORK \n", + "2 0.0 ... 0.0 0.0 \\\n", + "3 0.0 ... 0.0 0.0 \n", + "4 0.0 ... 0.0 0.0 \n", + "5 0.0 ... 0.0 0.0 \n", + "6 0.0 ... 0.0 0.0 \n", + "\n", + " cat__Origin_NORTH CAROLINA cat__Origin_OHIO cat__Origin_PENNSYLVANIA \n", + "2 0.0 0.0 0.0 \\\n", + "3 0.0 0.0 0.0 \n", + "4 0.0 0.0 0.0 \n", + "5 0.0 0.0 0.0 \n", + "6 0.0 0.0 0.0 \n", + "\n", + " cat__Origin_TENNESSEE cat__Origin_TEXAS cat__Origin_VERMONT \n", + "2 0.0 0.0 0.0 \\\n", + "3 0.0 0.0 0.0 \n", + "4 0.0 0.0 0.0 \n", + "5 0.0 0.0 0.0 \n", + "6 0.0 0.0 0.0 \n", + "\n", + " cat__Origin_VIRGINIA Color \n", + "2 0.0 0 \n", + "3 1.0 0 \n", + "4 0.0 0 \n", + "5 0.0 0 \n", + "6 0.0 0 \n", + "\n", + "[5 rows x 49 columns]" + ] + }, + "execution_count": 70, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.preprocessing import LabelEncoder\n", + "# Encode the 'Color' column using label encoding\n", + "label_encoder = LabelEncoder()\n", + "encoded_label = label_encoder.fit_transform(pumpkins['Color'])\n", + "encoded_pumpkins = encoded_features.assign(Color=encoded_label)\n", + "encoded_pumpkins.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['ORANGE', 'WHITE']" + ] + }, + "execution_count": 71, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Let's look at the mapping between the encoded values and the original values\n", + "list(label_encoder.inverse_transform([0, 1]))" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# ഫീച്ചറുകളും ലേബലും തമ്മിലുള്ള ബന്ധങ്ങൾ വിശകലനം ചെയ്യൽ\n" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 81, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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drtdw4cPN7s0t/DII4+oZ8+eeuaZZzR06FBt27ZNixcv1uLFi8vdp4eHh373u99p0KBBGj58uPLz87V06VI9+OCDrndioFxeeeUVo1mzZoanp6fRtWtXY+vWrWaX5BYSEhIMSSW2UaNGmV3ar15p112SsWTJErNLcwtjxowxQkJCDE9PT6NRo0bGbbfdZnzxxRdml+XWIiMjjUmTJpldhlsYNmyYERgYaHh6ehpNmjQxhg0bZhw6dMjsstzKZ599ZrRv397w8vIyIiIijMWLF1e4z8zMTGPYsGFGw4YNjaCgIOPhhx828vLyXD6fdWIBAABgOUwnAAAAQJX74YcfXDrO1bm2jMQCAACgytntdscTuUqLn5f3FxcXu9QfI7EAAACoFuvWrVPDhg0lScePH9fQoUP11VdfSZLOnDmjvn37utwXIRYAAADVol27do6nnvr4+Mhmszme2pWZmVmmvlgnFgAAAJZDiAUAAECVq+zbsAixAAAAqHI2m+26+0o75moIsQDgBo4cOSKbzaaUlBSzSwHgppYtW6a6des63rdo0UI5OTmO9w0aNNCWLVtc7o8QCwDlMHr0aN11112O91FRUZo8ebJp9aSlpelPf/qTgoKC5O3traZNm2rw4ME6cOCAJCk4OFjp6ek8IhWAaYYOHSovL6+rttvtdnXt2tXl/lidAAAs7uLFi+rfv79at26tFStWKDAwUMePH9eqVat09uxZSZd+OAQEBJhbKABUIkZiAaCCRo8eraSkJL300kuy2Wyy2Ww6cuSIJGnPnj0aNGiQfHx81LhxY40cOVKnT592nBsVFaUJEyZo8uTJqlevnho3bqzXX39d586dU0xMjHx9fRUWFqZVq1Zd9fP37t2rw4cPa+HCherevbtCQkLUq1cvzZ49W927d5dUcjrB6NGjHbVeuSUmJkqSCgoKNHXqVDVp0kS1a9dWt27dHG0A8EtAiAWACnrppZfUo0cPjR07Vunp6UpPT1dwcLDOnj2rvn37qnPnzkpOTtbq1at18uRJDR061On8t956Sw0bNtS2bds0YcIEjRs3TkOGDFHPnj21c+dO3X777Ro5cqT++9//lvr5jRo1Uo0aNfThhx+qqKjI5Zov15qenq5JkybJ399fERERkqTx48dry5YtWr58ub799lsNGTJEAwcO1MGDByt2sQCgkvDYWQAoh9GjR+vs2bP6+OOPJV0aUe3UqZPmzZvnOGb27NnatGmT1qxZ49h3/PhxBQcHKzU1VeHh4YqKilJRUZE2bdokSSoqKpKfn5/uvvtuvf3225KkjIwMBQYGasuWLY6R1Z9bsGCBHnvsMdntdnXp0kV9+vTRiBEj1KJFC0mXRmKbN2+uXbt2qVOnTk7nrlixQiNGjNC6devUq1cvHT16VC1atNDRo0cVFBTkOK5fv37q2rWrnnnmmYpePgCoMEZiAaCKfPPNN0pISJCPj49juzzSefjwYcdxl59WI12au9qgQQPdcMMNjn2Xn25zrafZxMbGKiMjQ0uXLlWPHj30wQcfqF27dlq7du01a9y1a5dGjhyp+fPnq1evXpKk3bt3q6ioSOHh4U61JyUlOdUNAGbixi4AqCJ5eXmKjo7Ws88+W6ItMDDQ8bpmzZpObTabzWnf5XUTi4uLr/l5vr6+io6OVnR0tGbPnq0BAwZo9uzZ6t+/f6nHZ2Rk6M4779QDDzyg+++/36luu92uHTt2yG63O53j4+NzzRoAoLoQYgGgEnh6epaYj3rjjTfqo48+UmhoqDw8qvfbrc1mU0REhL766qtS2/Pz8zV48GBFREToxRdfdGrr3LmzioqKlJmZqVtvvbU6ygWAMmM6AQBUgtDQUH399dc6cuSITp8+reLiYsXGxurMmTMaPny4tm/frsOHD2vNmjWKiYlx+QYsV6SkpGjw4MH68MMPtW/fPh06dEjx8fF64403NHjw4FLPeeihh3Ts2DG9/PLLOnXqlDIyMpSRkaELFy4oPDxcI0aM0H333acVK1YoLS1N27ZtU1xcnP79739XWt0AUBGMxAJAJZg6dapGjRqltm3b6vz580pLS1NoaKg2b96sxx9/XLfffrsKCgoUEhKigQMHqkaNyhtDaNq0qUJDQzVr1izHUlqX3z/yyCOlnpOUlKT09HS1bdvWaX9CQoKioqK0ZMkSzZ49W3/5y1/0448/qmHDhurevbt+97vfVVrdAFARrE4AAAAAy2E6AQAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBxCLAAAACyHEAsAAADLIcQCAADAcgixAAAAsBwPswsAAADAr19MTIxLxy1ZssSl42yGYRgVKQgAAAC4nrvvvtvx+ty5c9qwYYOio6Md+woKCrRq1SoVFxe71B8hFgAAANUqLS1NHTp0UG5urmPfqVOnFBAQoKKiIpf6YE4sAAAAqlXNmjV18eJFp335+fny8HB9pishtpwMw1BOTo4YyAYAACiboKAgGYahdevWOfb95z//UbNmzVzugxu7yik3N1d+fn46efKk6tSpY3Y5bsUwDBUUFEiSvLy8ZLPZTK7IfXH9AQDlUaNGDY0YMULR0dEaMGCAzp8/r3Xr1mnmzJku98Gc2HLKycmRn5+fBgwYoJo1a5pdDmCKDz74QN7e3maXAQCwoPPnz2vWrFlav369PD09deedd+rRRx9VjRquTRRgJBYAAADVrlatWpozZ065zyfEVtCM/t+pvo/ZVbiXgkKbnlzdVpL09MB98vLgjwnV6UJRDT2xqo3ZZQAALCYpKcml4yIjI106jhBbQTVrFMvLgzmBZvHyMAix1c619fuAXxvm4wMV07dvXxmGcc3/dgzDcHmdWEJsBV0o4psYALiDgoICDRkyRBLzwYHy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I0NLly7VfffdV+rcUx8fH02aNElTp07Vrl27VFRUpLffflsvvPCCbr/9dqdj77rrLi1btkwPP/xwiX66du2qu+++W9OmTXPa37lzZ0VEROj555/X0KFDrzovtry8vLyu+R/NxIkT+VN2FbPb7ZowYYLmzZtXoo3rD6DKXfGjzdvbW97e3ubV4uZ40IG11atXTzabTd9884327Nmjd955RyNHjpS3t7diYmI0ffp0l/opc9KbP3++CgoKNGDAAG3cuFHHjh3T6tWr1b9/fzVp0kRPP/30Vc996KGH9N133+mjjz7S559/rqysLN1///1q376903bPPfdcdUqBJD399NPasGGDUlNTHftsNpuWLFmi1NRU9erVS59++qkOHjyoffv2adGiRTp16lSJkHP27FllZGQ4befOnSvrJVHDhg3Vt2/fMp+HsrvtttvUsGFDp31cfwAArKl9+/Z69tlnlZaWpiFDhrg8ZVQqR4ht1aqVkpOT1aJFCw0dOlQtW7bUgw8+qD59+mjLli2qX7/+Vc+tX7++7rvvPs2cOVPx8fHq169fqVMG7rnnHiUnJ+vbb78ttZ/w8HCNGTOmxJ2h3bt3144dO9S6dWvFxsaqbdu26tmzp5YtW6a5c+c6Le0lXVr2KzAw0Gm72o1D18KC+9Xr59eb6w8AgDV98803evTRRxUSEqKPP/64TD/Ty7xOrCSFhITozTffvOYxiYmJpe4v7WEHP9e1a1enm8dKu5Hstdde02uvvVZif3h4+HVru1qf5dGjR49S161F1fH399ctt9yiL7/8UrfccgvXH27lymlNV87RBH7tvLy89MEHHzhew7p++uknGYahG264QUePHtWQIUP04Ycfqnv37mXqp1whFv/zyCOPmF2CW3r88cdLPPQAcAdXzgVkWiDcyeXH2MO6nnvuOX300UdKTk5Wjx49NGbMGA0bNky/+c1vytUfIRYALOpCUQ1JxWaX4TYuFlXuDcOAu3nxxRc1cuRIvf322woPD69wf4RYALCoJ1aV/uAZAPglOn78uOMm+6ysLB08eFA2m01hYWGqV69emfvj10oAAABUObvdrrS0NP32t79Vw4YN1b17d3Xr1k0NGzbUb3/7W/3www9l6s9m8ADicsnJyZGfn5+ys7NVp04ds8sB4CYMw3B6BDaqz5XXvk6dOpW+Hjnwa3fy5EndeOON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dWulpKQoOztbH374oUaNGqWkpCSCbDU4duyYJk2apLVr18rb29vsctzOoEGDHK87dOigbt26KSQkRO+//z7TaapBcXGxunTpomeeeUaS1LlzZ+3Zs0eLFi3SqFGjXO4nJibmuscYhqE333zTpf4YiS2jhg0bym636+TJk077T548qYCAAJOqAqrP+PHj9fnnnyshIaFMf/ZBxXl6eiosLEw33XST4uLi1LFjR7300ktml+UWduzYoczMTN14443y8PCQh4eHkpKS9PLLL8vDw0NFRUVml+hW6tatq/DwcB06dMjsUtxCYGBgiV+W27RpU+YpHdnZ2Y7txIkT+te//uW0LzMzU2+//bbL/TESW0aenp666aabtH79escNRcXFxVq/fr3Gjx9vbnFAFTIMQxMmTNDKlSuVmJio5s2bm12S2ysuLlZBQYHZZbiF2267Tbt373baFxMTo4iICD3++OOy2+0mVeae8vLydPjwYY0cOdLsUtxCr169Siyp+N133ykkJKRM/axYscLxOi0tTR06dHDad+rUqTINCBJiy2HKlCkaNWqUunTpoq5du2revHk6d+6cS8PkqJi8vDyn37zT0tKUkpKi+vXrq1mzZiZW9usXGxurd999V5988ol8fX0dc8D9/PxUq1Ytk6v79Zs+fboGDRqkZs2aKTc3V++++64SExO1Zs0as0tzC76+viXmf9euXVsNGjRgXng1mDp1qqKjoxUSEqITJ05oxowZstvtGj58uNmluYVHHnlEPXv21DPPPKOhQ4dq27ZtWrx4sRYvXlzuPmvWrKmLFy867cvPzy/b0mkGyuWVV14xmjVrZnh6ehpdu3Y1tm7danZJbiEhIcGQVGIbNWqU2aX96pV23SUZS5YsMbs0tzBmzBgjJCTE8PT0NBo1amTcdtttxhdffGF2WW4tMjLSmDRpktlluIVhw4YZgYGBhqenp9GkSRNj2LBhxqFDh8wuy6189tlnRvv27Q0vLy8jIiLCWLx4cYX6KyoqMjw9PY21a9c69i1atMgICwtzuQ/WiQUAAEC1GzNmjJYtW6YBAwbo/PnzWrdunWbOnKm//vWvLp1PiAUAAEC1O3/+vGbNmqX169fL09NTd955px599FHVqOHaugOEWAAAAFgON3YBAACgyiUlJbl0XGRkpEvHMRILAACAKme322UYhmw2m2Nfae+Li4td6o+HHQAAAKBapKamKisrS1lZWdq1a5d8fHx05swZZWVl6bvvvnMKtNfDdAIAAABUizp16qhOnTqSJB8fHxmGIT8/P0mX1oktywQBRmIBAABgOYRYAAAAVLnKvg2LEAsAbuDIkSOy2WxKSUkxuxQAburn811r1qyp0NDQax5zLYRYACiH0aNH66677nK8j4qK0uTJk02rJy0tTX/6058UFBQkb29vNW3aVIMHD9aBAwckScHBwUpPT1f79u1NqxGAe9uyZYsaNGjgeB8cHKzdu3c73vv7+ys9Pd3l/rixCwAs7uLFi+rfv79at26tFStWKDAwUMePH9eqVat09uxZSZeWtgkICDC3UABurWvXrtc9xt/f3+X+GIkFgAoaPXq0kpKS9NJLL8lms8lms+nIkSOSpD179mjQoEHy8fFR48aNNXLkSJ0+fdpxblRUlCZMmKDJkyerXr16aty4sV5//XWdO3dOMTEx8vX1VVhYmFatWnXVz9+7d68OHz6shQsXqnv37goJCVGvXr00e/Zsde/eXVLJ6QSjR4921HrllpiYKEkqKCjQ1KlT1aRJE9WuXVvdunVztAHALwEhFgAq6KWXXlKPHj00duxYpaenKz09XcHBwTp79qz69u2rzp07Kzk5WatXr9bJkyc1dOhQp/PfeustNWzYUNu2bdOECRM0btw4DRkyRD179tTOnTt1++23a+TIkfrvf/9b6uc3atRINWrU0IcffqiioiKXa75ca3p6uiZNmiR/f39FRERIksaPH68tW7Zo+fLl+vbbbzVkyBANHDhQBw8erNjFAoBKwhO7AKAcRo8erbNnz+rjjz+WdGlEtVOnTpo3b57jmNmzZ2vTpk1as2aNY9/x48cVHBys1NRUhYeHKyoqSkVFRdq0aZMkqaioSH5+frr77rv19ttvS5IyMjIUGBioLVu2OEZWf27BggV67LHHZLfb1aVLF/Xp00cjRoxQixYtJF0aiW3evLl27dqlTp06OZ27YsUKjRgxQuvWrVOvXr109OhRtWjRQkePHlVQUJDjuH79+qlr16565plnKnr5AKDCGIkFgCryzTffKCEhQT4+Po7t8kjn4cOHHcd16NDB8dput6tBgwa64YYbHPsaN24sScrMzLzqZ8XGxiojI0NLly5Vjx499MEHH6hdu3Zau3btNWvctWuXRo4cqfnz56tX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69y5c2aX5haaNm2qOXPmaMeOHUpOTlbfvn01ePBg7d271+zS3M727dv12muvqUOHDmaX4lbatWun9PR0x/bll1+aXZLbyMrKUq9evVSzZk2tWrVK+/bt0wsvvKB69epV2mf8/ClgLj0VzECZde3a1YiNjXW8LyoqMoKCgoy4uDgTq3I/koyVK1eaXYbbyszMNCQZSUlJZpfiturVq2f885//NLsMt5Kbm2u0atXKWLt2rREZGWlMmjTJ7JLcwowZM4yOHTuaXYbbevzxx41bbrml0vpr06aNcfr0acf7rKwspwx19uxZY9CgQdfth5HYMrpw4YJ27Nihfv36OfbVqFFD/fr105YtW0ysDKhe2dnZkqT69eubXIn7KSoq0vLly3Xu3Dn16NHD7HLcSmxsrO644w6nnwGoHgcPHlRQUJBatGihESNG6OjRo2aX5DY+/fRTdenSRUOGDJG/v786d+6s119/vdz97du3Tw0aNHC8r1u3rqZNm+Z47+fnp//85z/X7YcQW0anT59WUVGR4466yxo3bqyMjAyTqgKqV3FxsSZPnqxevXqpffv2ZpfjNnbv3i0fHx95eXnp4Ycf1sqVK9W2bVuzy3Iby5cv186dOxUXF2d2KW6nW7duevPNN7V69Wq9+uqrSktL06233uq4mx1V6/vvv9err76qVq1aac2aNRo3bpwmTpyot956y9S6eNgBgDKLjY3Vnj17mJNWzVq3bq2UlBRlZ2frww8/1KhRo5SUlESQrQbHjh3TpEmTtHbtWnl7e5tdjtsZNGiQ43WHDh3UrVs3hYSE6P3339f9999vYmXuobi4WF26dNEzzzwjSercubP27NmjRYsWadSoUabVxUhsGTVs2FB2u10nT5502n/y5EkFBASYVBVQfcaPH6/PP/9cCQkJatq0qdnluBVPT0+FhYXppptuUlxcnDp27KiXXnrJ7LLcwo4dO5SZmakbb7xRHh4e8vDwUFJSkl5++WV5eHhcdz1LVK66desqPDxchw4dMrsUtxAYGFjil+U2bdqYPqWDEFtGnp6euummm7R+/XrHvuLiYq1fv565afhVMwxD48eP18qVK7VhwwY1b97c7JLcXnFxsQoKCswuwy3cdttt2r17t1JSUhxbly5dNGLECKWkpMhut5tdolvJy8vT4cOHFRgYaHYpbqFXr14lllT87rvvFBIS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0blz5zRy5Eh5enpaXffwww8rMTFRTz31VJntTJ8+XW3btrXqNTWZTFq0aJF69+6t8PBwTZ48Wa1bt9aVK1e0fv16nTp1Smaz2aqd8+fPKzs72+qYh4eH6tSpU97HAgAAABts2bJFnTt3LnX82qQBx48fV1xcnNasWXPDdso9JrZVq1ZKT09XQECAHn30UbVs2VJPPvmkoqKitGnTJsscsWWpX7++HnvsMU2dOlWJiYnq1atXqQArXQ2x6enp+uGHH8psJygoSCNGjNClS5esjnfr1k3btm1TcHCw4uPj1aZNG3Xv3l1LlizRW2+9VWp+2ri4OPn4+Fhts2fPLu8jAQAAgI3KCrDXfPjhh2rfvn2pjseymAwWgK6QvLw8eXp6auubfmpwO0vPwnkUFpk08V9tJUmvP7Bbbi78FgLncOmKSc/+++qv/U8//bTUVJMAKu7UqVMaNWqUvvnmG73xxht64oknbnpPuYcTwNqVkhoqLLr5dcBvRWGRqczPwG/dlZL//8fLW5l3HHB2v159taioSO+++67atWunnTt3ys/Pz6Z2CLG36OU1QapZs6a9ywDs4sVVbexdAgDAwXz55ZdW+0VFRTp37pwGDRpkc4CVCLEAAACoRt9//32pY1999ZWeeOIJff7550pMTFSLFi1u2g5jYivo2pjYkydPMmcsnIphGCosLJR0df5k/lkVzohf+0DlO3v2rEaNGqVVq1bptdde0x//+McbXk+IraBrITY3N5cQCwAAUEk++eQTxcfH69y5cze8rkLLzgIA4GwMw9ClS5d06dIlm5dfB1B+/fv3v+E0XNcQYgEAsEFhYaEGDx6swYMHW4bUAKh8Fy9e1Nq1a296HSEWAAAb/HKBnV8vtgOg+hFiAQAA4HCYYgsAABuUlJSU+RlA+ZjN5koZV06IBQDABvn5+Vaf69evb8dqAMe1cuXKG57Pzc1VbGzsTdup8uEECxYskIeHh4qK/n9t1oKCAtWsWVORkZFW16akpMhkMunw4cPy9/fXrFmzSrU3depUdezYscx9f39/mUym627Dhw+XpOueX7p0aSX/9AAAAPilBx988IZbnz59bGqnyntio6KiVFBQoPT0dHXr1k2StGHDBnl7e2vLli26dOmSatWqJUlKTk5W8+bN1bJlywp919atW1VcXCxJ+u677/Twww9r//79lnlca9eu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xAIAAKDKff7555bPx44dU2RkpK5cuaKgoCDNnDmz3O0xJhYAAADV5vjx44qMjFSTJk20du1azZ8/X3/961/L3Q49sQAAAKgWJ06cUFRUlHx9fZWUlKQ6deroyy+/1P3336/69evr8ccft7ktQiwAAACqXFZWliIjI9W4cWOtWrVKderUkSRFRkZqyZIlGjJkiOrWratHHnnEpvZMhmEYVVkwAAAAEBISIi8vL61evVru7u6lzn/44YcaNWqULl68aFN79MQCAACgynl5eWnVqlVlBlhJeuyxx3TmzBmb26MnFgAAAFWuoKDgugG2IgixAAAAqHK2LHZgGIY++OADm9ojxAIAAKDKDRo06LrniouL9c033+jixYsqKSmxqT3GxAIAAKDK/XKxg1/68ssv9cILL6hWrVqaMmWKze2x2AEAAACq3YYNG9S9e3dFR0frgQce0I8//qjnnnvO5vsJsQAAAKg2u3btUv/+/XXvvfeqbdu2OnTokF577TV5enqWqx1CLAAAAKrcTz/9pNjYWHXs2FEuLi7auXOn3nvvPfn6+laoPV7sAgAAQJWrVauWatSooaefflphYWHXvW7AgAE2tUeIBQAAQJVzcXHRzWKnYRg2z05AiAUAAIDDYUwsAAAAHA7zxAIAAKDa7NmzR/v371deXl6Z52NjY21qh+EEAAAAqHJ5eXl69NFHtWbNGrm4uKhOnTqlrjEMQ+fOnbOpPXpiAQAAUOWmTJminJwcbdu2TR07drzl9uiJBQAAQJULCgrSggUL1LNnz0ppjxe7AAAAUOVOnDihgICASmuPEAsAAIAq17RpU+3bt6/S2mNMLAAAAKrcoEGDNGHCBLm6uurOO++Up6fnLbXHmFgAAABUuf/+97964okntHTp0huu3MWKXQAAAPifk5WVpQMHDig3N7fM8w8++KBN7RBiK8gwDOXn58vDw0Mmk8ne5QAAADgVxsRWUH5+vjw9PZWbm6vbb7/d3uUAAAA4hLS0NH3yySc6cOCATCaTAgMDFRMToy5dupSrHWYnAADABoZh6NKlS7p06dINx/MBuL5JkyYpLCxMixYtUlZWlk6cOKEPPvhA3bp104svvliutgixAADYoLCwUIMHD9bgwYNVWFho73IAh7N8+XK9+eabmjVrls6ePavt27dr+/btOnv2rN555x399a9/1YoVK2xujxAL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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "palette = {\n", + " 'ORANGE': 'orange',\n", + " 'WHITE': 'wheat',\n", + "}\n", + "# We need the encoded Item Size column to use it as the x-axis values in the plot\n", + "pumpkins['Item Size'] = encoded_pumpkins['ord__Item Size']\n", + "\n", + "g = sns.catplot(\n", + " data=pumpkins,\n", + " x=\"Item Size\", y=\"Color\", row='Variety',\n", + " kind=\"box\", orient=\"h\",\n", + " sharex=False, margin_titles=True,\n", + " height=1.8, aspect=4, palette=palette,\n", + ")\n", + "# Defining axis labels \n", + "g.set(xlabel=\"Item Size\", ylabel=\"\").set(xlim=(0,6))\n", + "g.set_titles(row_template=\"{row_name}\")\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ഇപ്പോൾ നമുക്ക് ഒരു പ്രത്യേക ബന്ധത്തെക്കുറിച്ച് ശ്രദ്ധിക്കാം: ഇനം വലിപ്പവും നിറവും!\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import warnings\n", + "warnings.filterwarnings(action='ignore', category=UserWarning, module='seaborn')" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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CqaZPpI33vSZxDsgvoKetmSb8564Msty4KSbTd+ceqvpq4mOtO+mlXfot8hxzVc4Bds/wvWak12GJ38sntwKPMEaV8zy5OArPgXL8eMrnu7uY5aDr3h6T+wUrH53nj3BGjy5lXjyx+JkuxMk2z/C1MUXxFs4BdcwZvvwl8zEth18JTP73VW18BZMwgkcTn+WTKLJtAN5sBA4EP/3ZTHY+yo0vw/BE6Fotvv97Tuhfo1Z4lm+xD3Yh9th99PmmX/F2e5lubEYND5vJoYWznIvywWz1HXvBjOAlJ4RX2IMZqnr7lVmOXP5Oe5ludEw1D9rlimXLHQvywXY/0bP8uQTzMqbRB11ZvmtN2jKTVhmSKTTtCXcZu7uJC7LBWh8CVo3mzsMBVPdsZYtsOcls/y1bLF7sO9uNuUCVJzjHuxjUVOfjjoonu9elgtw4O348uSSfglGZyPU/dEkPxXnuO/eRLrMSqTuJlOfrH7fGvesjy9PLux3l6p1mzlvgRKz9DthySTdrWZuSDRsznfiYB+LmWXN7bVQNM+9pByg6f348uSShe7zHdpnzrcTMG1JfDQW7Ya6Z8zy5LIz3IkLHNu+mzjhXJNoP1UinfuJdbdh+/Oxfe7rbrS7jWjnfiwngJ1V5FpdE4t2E2k3q4Kc7GKshD5mljbvJRbpxA4UYvdLXKJdzURDTVje7KQlxrFIiEjHHrAcnKySnkdGveVGibQ3QjSMk1WE5RngEap8rI6bVT+tra1s3rwZgOnTp/ODH/yA008/ncLCQkaNGnXI7Yc8UREREZFj7rhZ9fPaa69x+unxX0p1/fXXA3DllVdy//33D1OtREREJFMMa6KyaNEiMuTJk4iIiGSg42oyrYiIiHy6KFERERGRjKVERURERDKWEhURERHJWEpUREREJGMpUREREZGMpURFREREMpYSFREREclYSlREREQkYylRERERkYylREVEREQylhIVERERyVhKVERERCRjKVERERGRjKVERURERDKWEhURERHJWEpUREREJGMpUREREZGMpURFREREMpYSFREREclYSlREREQkYylRERERkYylREVEREQylhIVERERyVhKVERERCRjKVERERGRjKVERURERDKWEhURERHJWEpUREREJGMpUREREZGMpURFREREMpYSFREREclYSlREREQkYylRERERkYylREVE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txPt3Ifl+HvakniMwj3HKNZzjNKd7wLXknLTlpae5cnpzndj2rZEO/YQi3RjZ410LSkHjmnfTVwVd6wn0fY6rlb9PPzww1x55ZX8/Oc/Z/bs2dx111088sgj/OUvf0mau9LfkCcqIiIicswdN6t+AC6++GL27NnDv/zLv1BfX8+0adNYtWrVIZMUERER+eQb9jsqR0N3VERERI4/gxm/j6tVPyIiIvLpokRFREREMpYSFREREclYSlREREQkYylRERERkYylREVEREQylhIVERERyVhKVERERCRjKVERERGRjDXsv0L/aPT+Ut3m5uZhromIiIgcrt5x+3B+Of5xnai0tLQAUF1dfYh3ioiISKZpaWkhPz9/wPcc13/rJxqNsnv3bvLy8lx/Kls+mZqbm6murqa2tlZ/20nkE0af70+XWCxGS0sLFRUV2PbAs1CO6zsqtm1TVVU13NWQj1kwGNSFTOQTSp/vT49D3Unppcm0IiIikrGUqIiIiEjGUqIixw2/38/NN9+M3+8f7qqIyDGmz7ekc1xPphUREZFPNt1RERERkYylREVEREQylhIVERERyVhKVERERCRjKVGR48aKFSuoqakhEAgwZ84cXn311eGukogcpRdeeIFzzz2XiooKLMviiSeeGO4qSYZRoiLHhYcffpjrr7+em2++mTfeeINTTjmFJUuW0NjYONxVE5Gj0NbWximnnMKKFSuGuyqSobQ8WY4Lc+bMYdasWdx9992A+TtP1dXVLFu2jBtvvHGYaycix4JlWTz++ON84QtfGO6qSAbRHRXJeF1dXbz++ussXry47zXbtlm8eDHr168fxpqJiMhQU6IiGW/v3r1EIhFKS0tdr5eWllJfXz9MtRIRkY+DEhURERHJWEpUJOMVFRXhOA4NDQ2u1xsaGigrKxumWomIyMdBiYpkPJ/Px8yZM1m9enXfa9FolNWrVzNv3rxhrJmIiAw1z3BXQORwXH/99Vx55ZWceuqpzJ49m7vuuou2tjauvvrq4a6aiByF1tZWNm/e3PfvrVu38tZbb1FYWMioUaOGsWaSKbQ8WY4bd999N8uXL6e+vp5p06bx4x//mDlz5gx3tUTkKKxbt47TTz896fUrr7yS+++//+OvkGQcJSoiIiKSsTRHRURERDKWEhURERHJWEpUREREJGMpUREREZGMpURFREREMpYSFREREclYSlREREQkYylRERERkYylREVEMtott9zCtGnThrsaIjJMlKiIyJCqr69n2bJljB07Fr/fT3V1Neeee67rj0yKiKSjP0ooIkNm27ZtnHbaaYwYMYLly5dz8skn093dzTPPPMN1113HX/7yl4+lHt3d3Xi93o9lXyJybOmOiogMmWuvvRbLsnj11Ve58MILmThxIlOmTOH6669nw4YNAOzYsYPzzz+f3NxcgsEgF110EQ0NDWnLjEaj3HrrrVRVVeH3+5k2bRqrVq3qi2/btg3Lsnj44YdZuHAhgUCABx54YMjbKiJDQ4mKiAyJ/fv3s2rVKq677jpycnKS4iNGjCAajXL++eezf/9+nn/+eZ599lk++ugjLr744rTl/uhHP+L73/8+d955J2+//TZLlizhvPPO48MPP3S978Ybb+Tb3/42mzZtYsmSJce8fSLy8dCjHxEZEps3byYWizFp0qS071m9ejXvvPMOW7dupbq6GoBf//rXTJkyhY0bNzJr1qykbe68806++93vcskllwBwxx13sHbtWu666y5WrFjR976///u/54ILLjjGrRKRj5vuqIjIkIjFYod8z6ZNm6iuru5LUgBOPPFERowYwaZNm5Le39zczO7duznttNNcr5922mlJ7z/11FOPsOYikkmUqIjIkJgwYQKWZX1sE2b7S/W4SUSOP0pURGRIFBYWsmTJElasWEFbW1tS/ODBg0yePJna2lpqa2v7Xn///fc5ePAgJ554YtI2wWCQiooKXn75ZdfrL7/8csr3i8jxT3NURGTIrFixgtNOO43Zs2dz6623MnXqVMLhMM8++yz33HMP77//PieffDKXX345d911F+FwmGuvvZaFCxemfXRzww03cPPNNzNu3DimTZvGfffdx1tvvaWVPSKfUEpURGTIjB07ljfeeIN///d/5zvf+Q51dXUUFxczc+ZM7rnnHizL4sknn2TZsmV89rOfxbZtzj77bH7yk5+kLfNb3/oWTU1NfOc736GxsZETTzyRlStXMmHChI+xZSLycbFihzPjTURERGQYaI6KiIiIZCwlKiIiIpKxlKiIiIhIxlKiIiIiIhlLiYqIiIhkLCUqIiIikrGUqIiIiEjGUqIiIiIiGUuJioiIiGQsJSoiIiKSsZSoiIiISMb6/wHCnL2DXQSZ/gAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Suppressing warning message claiming that a portion of points cannot be placed into the plot due to the high number of data points\n", + "import warnings\n", + "warnings.filterwarnings(action='ignore', category=UserWarning, module='seaborn')\n", + "\n", + "palette = {\n", + " 0: 'orange',\n", + " 1: 'wheat'\n", + "}\n", + "sns.swarmplot(x=\"Color\", y=\"ord__Item Size\", hue=\"Color\", data=encoded_pumpkins, palette=palette)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**ശ്രദ്ധിക്കുക**: മുന്നറിയിപ്പുകൾ അവഗണിക്കുന്നത് മികച്ച പ്രാക്ടീസ് അല്ല, സാധ്യമായിടത്തോളം ഒഴിവാക്കണം. മുന്നറിയിപ്പുകൾ പലപ്പോഴും നമ്മുടെ കോഡ് മെച്ചപ്പെടുത്താനും പ്രശ്നം പരിഹരിക്കാനും സഹായിക്കുന്ന ഉപകാരപ്രദമായ സന്ദേശങ്ങൾ അടങ്ങിയിരിക്കുന്നു. \n", + "നാം ഈ പ്രത്യേക മുന്നറിയിപ്പ് അവഗണിക്കുന്നത് പ്ലോട്ടിന്റെ വായനാസൗകര്യം ഉറപ്പാക്കുന്നതിനാണ്. പെയ്ലറ്റ് നിറവുമായി സുസ്ഥിരത പാലിച്ചുകൊണ്ട് കുറച്ചുകുറഞ്ഞ മാർക്കർ വലുപ്പത്തിൽ എല്ലാ ഡാറ്റാ പോയിന്റുകളും പ്ലോട്ട് ചെയ്യുന്നത് अस्पഷ്ടമായ ദൃശ്യവത്കരണം സൃഷ്ടിക്കുന്നു.\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# നിങ്ങളുടെ മോഡൽ നിർമ്മിക്കുക\n" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.model_selection import train_test_split\n", + "# X is the encoded features\n", + "X = encoded_pumpkins[encoded_pumpkins.columns.difference(['Color'])]\n", + "# y is the encoded label\n", + "y = encoded_pumpkins['Color']\n", + "\n", + "# Split the data into training and test sets\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " precision recall f1-score support\n", + "\n", + " 0 0.94 0.98 0.96 166\n", + " 1 0.85 0.67 0.75 33\n", + "\n", + " accuracy 0.92 199\n", + " macro avg 0.89 0.82 0.85 199\n", + "weighted avg 0.92 0.92 0.92 199\n", + "\n", + "Predicted labels: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0\n", + " 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", + " 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0\n", + " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0\n", + " 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1\n", + " 0 0 0 1 0 0 0 0 0 0 0 0 1 1]\n", + "F1-score: 0.7457627118644068\n" + ] + } + ], + "source": [ + "from sklearn.metrics import f1_score, classification_report \n", + "from sklearn.linear_model import LogisticRegression\n", + "\n", + "# Train a logistic regression model on the pumpkin dataset\n", + "model = LogisticRegression()\n", + "model.fit(X_train, y_train)\n", + "predictions = model.predict(X_test)\n", + "\n", + "# Evaluate the model and print the results\n", + "print(classification_report(y_test, predictions))\n", + "print('Predicted labels: ', predictions)\n", + "print('F1-score: ', f1_score(y_test, predictions))" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[162, 4],\n", + " [ 11, 22]])" + ] + }, + "execution_count": 76, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.metrics import confusion_matrix\n", + "confusion_matrix(y_test, predictions)" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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EBoaii1btkAul78xCtOzZ0+cOHECYWFhb2z//PlzZGVlafSaRKaAV/IkMgHZV/I8ffq0+hBJtm3btqFHjx5Yvnw5hgwZAuDVYQYfHx/89ttvaNmyJbp37w5ra2scPXoUGzduRPXq1REREZHjSp4qlQpffPEFNmzYgPr166uv5BkXF4edO3fi1KlTOH78OJo0aZJnzidPnqBdu3Y4d+4cvLy80KZNG9ja2uKff/7Bli1bEBsbi/T0dACvzjqpWbMm6tSpg/79++Px48dYsWIFSpYsicTERPUpuHfu3EGFChUwf/78HAXldZs2bcLnn38Oe3t7uLm5qU+ZzZaSkoIWLVrg/Pnz+OKLL9CgQQMkJyfjwoUL2LZtG+7cuZPjkAoRgVfyJDIFeV1oSwghlEqlqFSpkqhUqVKOi2QplUrxyy+/iGbNmgkHBwehUCjExx9/LGbMmCFevnyZ52tt27ZNtGvXThQrVkxYWFiI0qVLCx8fHxEVFZWvrCkpKWLBggXik08+EXZ2dkIul4vKlSuLkSNHihs3buRYd+PGjaJixYpCLpeLunXrirCwsLdeaCsviYmJwtraWgAQGzduzHWdpKQkMWnSJPHRRx8JuVwunJycRNOmTcWCBQtERkZGvt4bkSnhCAYRERFpHedgEBERkdaxYBAREZHWsWAQERGR1rFgEBERkdaxYBAREZHWsWAQERGR1pncvUhUKhUePXoEe3t7yGQyqeMQEREZDCEEkpKSUKZMGZiZvX2MwuQKxqNHj+Ds7Cx1DCIiIoN1//59lCtX7q3rmFzByL699P3799W3hyYiIqJ3S0xMhLOzs/p36duYXMHIPizi4ODAgkFERFQA+ZliwEmeREREpHUsGERERKR1LBhERESkdSwYREREpHUsGERERKR1LBhERESkdSwYREREpHUsGERERKR1LBhERESkdSwYREREpHUsGERERKR1LBhERESkdSwYREREpHUsGERERKR1khaMw4cPw8vLC2XKlIFMJsPOnTvfuU1UVBTq168PKysrfPTRRwgODtZ5TiIiItKMpAUjOTkZderUQVBQUL7Wv337Njp27IhWrVohJiYGX331FQYMGICwsDAdJyUiIiJNWEj54u3bt0f79u3zvf6KFStQoUIFLFy4EABQvXp1HD16FIsXL4aHh4euYhoVIQSi7z3Dk6R0qaMQEVEh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isTERGRlZSEtLQ0pKSmwsbF543kCAgIwYMAAbNiwQT3MX6lSJQCvDp+cP38emzZtUq8vhIBKpcLt27dRvXr1XLO9ePECdnZ2UKlUSEtLQ/PmzbF69WokJibi0aNHaNasWY71mzVrhnPnzgF4dXijbdu2qFq1Kjw9PdGpUye0a9fuvfZV3759MXDgQCxbtgxWVlbYtGkTevXqBTMzM/X7PHbsWI4RC6VS+db9BgBVq1bFrl27kJaWho0bNyImJgYjR47MsU5QUBDWrl2Le/fuITU1FRkZGahbt+5b8547dw43btyAvb19juVpaWm4efNmAfYAkf5hwSDSU7a2tvjoo49yLLtz5w46deqEoUOH4ttvv0WxYsVw9OhR9O/fHxkZGbn+opw+fTr69OmDPXv2YN++fQgMDMSWLVvQtWtXvHz5EoMHD8aoUaPe2K58+fJ5ZrO3t0d0dDTMzMxQunRpWFtbAwASExPf+b7q16+P27dvY9++fQgPD0fPnj3h7u6Obdu2vXPbvHh5eUEIgT179uCTTz7BkSNHsHjxYvXXX758iRkzZqBbt25vbKtQKPJ8Xrlcrv5/MG/ePHTs2BEzZszArFmzAABbtmzBuHHjsHDhQjRp0gT29vaYP38+/vrrr7fmffnyJRo0aJCj2GXTl4m8RO+LBYPIgJw5cwYqlQoLFy5U/3Wefbz/bapUqYIqVapgzJgx6N27N3755Rd07doV9evXx+XLl98oMu9iZmaW6zYODg4oU6YMjh07BldXV/XyY8eOoVGjRjnW8/HxgY+PDz777DN4enri6dOnKFasWI7ny57voFQq35pHoVCgW7du2LRpE27cuIGqVauifv366q/Xr18f165d0/h9/teUKVPQunVrDB06VP0+mzZtimHDhqnX+e8IhFwufyN//fr1ERISghIlSsDBweG9MhHpK07yJDIgH330ETIzM7F06VLcunULGzZswIoVK/JcPzU1FSNGjEBUVBTu3r2LY8eO4fTp0+pDHxMmTMDx48cxYsQIxMTE4J9//sHvv/+u8STP13399df47rvvEBISgmvXrmHixImIiYnB6NGjAQCLFi3Cr7/+iqtXr+L69evYunUrSpUqlevFwUqUKAFra2vs378f8fHxePHiRZ6v27dvX+zZswdr165VT+7MNm3aNKxfvx4zZszApUuXcOXKFWzZsgVTpkzR6L01adIEtWvXxpw5cwAAlStXxt9//42wsDBcv34dU6dOxenTp3Ns4+LigvPnz+PatWtISEhAZmYm+vbtCycnJ3Tp0gVHjhzB7du3ERUVhVGjRuHBgwcaZSLSW1JPAiGiN+U2MTDbokWLROnSpYW1tbXw8PAQ69evFwDEs2fPhBA5J2Gmp6eLXr16CWdnZyGXy0WZMmXEiBEjckzgPHXqlGjbtq2ws7MTtra2onbt2m9M0nzdfyd5/pdSqRTTp08XZcuWFZaWlqJOnTpi37596q+vXLlS1K1bV9ja2goHBwfRpk0bER0drf46XpvkKYQQq1atEs7OzsLMzEy4urrmuX+USqUoXbq0ACBu3rz5Rq79+/eLpk2bCmtra+Hg4CAaNWokVq5cmef7CAwMFHXq1Hlj+a+//iqsrKzEvXv3RFpamvjiiy+Eo6OjKFKkiBg6dKiYOHFiju0eP36s3r8ARGRkpBBCiNjYWOHr6yucnJyElZWVqFixohg4cKB48eJFnpmIDIlMCCGkrThERERkbHiIhIiIiLSOBYOIiIi0jgWDiIiItI4Fg4iIiLSOBYOIiIi0jgWDiIiItI4Fg4iIiLSOBYOIiIi0jgWDiIiItI4Fg4iIiLSOBYOIiIi07v8A1k+hWenkwRsAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from sklearn.metrics import roc_curve, roc_auc_score\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "\n", + "y_scores = model.predict_proba(X_test)\n", + "# calculate ROC curve\n", + "fpr, tpr, thresholds = roc_curve(y_test, y_scores[:,1])\n", + "\n", + "# plot ROC curve\n", + "fig = plt.figure(figsize=(6, 6))\n", + "# Plot the diagonal 50% line\n", + "plt.plot([0, 1], [0, 1], 'k--')\n", + "# Plot the FPR and TPR achieved by our model\n", + "plt.plot(fpr, tpr)\n", + "plt.xlabel('False Positive Rate')\n", + "plt.ylabel('True Positive Rate')\n", + "plt.title('ROC Curve')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.9749908725812341\n" + ] + } + ], + "source": [ + "# Calculate AUC score\n", + "auc = roc_auc_score(y_test,y_scores[:,1])\n", + "print(auc)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**അസൂയാ**: \nഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല.\n\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.16" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "orig_nbformat": 2, + "vscode": { + "interpreter": { + "hash": "949777d72b0d2535278d3dc13498b2535136f6dfe0678499012e853ee9abcab1" + } + }, + "coopTranslator": { + "original_hash": "ef50cc584e0b79412610cc7da15e1f86", + "translation_date": "2025-12-19T16:37:10+00:00", + "source_file": "2-Regression/4-Logistic/solution/notebook.ipynb", + "language_code": "ml" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/translations/ml/2-Regression/README.md b/translations/ml/2-Regression/README.md new file mode 100644 index 000000000..ede636387 --- /dev/null +++ b/translations/ml/2-Regression/README.md @@ -0,0 +1,56 @@ + +# മെഷീൻ ലേണിംഗിനുള്ള റെഗ്രഷൻ മോഡലുകൾ +## പ്രാദേശിക വിഷയം: നോർത്ത് അമേരിക്കയിലെ പംപ്കിൻ വിലകൾക്കുള്ള റെഗ്രഷൻ മോഡലുകൾ 🎃 + +നോർത്ത് അമേരിക്കയിൽ, ഹാലോവീൻക്കായി പംപ്കിനുകൾ ഭയങ്കരമായ മുഖങ്ങളായി മുറിക്കുന്നു. ഈ ആകർഷകമായ പച്ചക്കറികളെ കുറിച്ച് കൂടുതൽ കണ്ടെത്താം! + +![jack-o-lanterns](../../../translated_images/jack-o-lanterns.181c661a9212457d7756f37219f660f1358af27554d856e5a991f16b4e15337c.ml.jpg) +> ഫോട്ടോ ബെത്ത് ട്യൂട്ഷ്മാൻ അൺസ്പ്ലാഷിൽ + +## നിങ്ങൾ പഠിക്കാനിരിക്കുന്നതെന്ത് + +[![Regression പരിചയം](https://img.youtube.com/vi/5QnJtDad4iQ/0.jpg)](https://youtu.be/5QnJtDad4iQ "Regression Introduction video - Click to Watch!") +> 🎥 ഈ പാഠത്തിന് ഒരു വേഗത്തിലുള്ള പരിചയ വീഡിയോക്കായി മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക + +ഈ വിഭാഗത്തിലെ പാഠങ്ങൾ മെഷീൻ ലേണിംഗിന്റെ സാന്ദർഭ്യത്തിൽ റെഗ്രഷൻ തരംകുറിപ്പുകൾ ഉൾക്കൊള്ളുന്നു. റെഗ്രഷൻ മോഡലുകൾ വ്യത്യസ്ത വേരിയബിളുകൾ തമ്മിലുള്ള _ബന്ധം_ കണ്ടെത്താൻ സഹായിക്കുന്നു. ഈ മോഡൽ തരം നീളം, താപനില, പ്രായം പോലുള്ള മൂല്യങ്ങൾ പ്രവചിക്കാൻ കഴിയും, അതിലൂടെ ഡാറ്റാ പോയിന്റുകൾ വിശകലനം ചെയ്ത് വേരിയബിളുകൾ തമ്മിലുള്ള ബന്ധങ്ങൾ കണ്ടെത്തുന്നു. + +ഈ പാഠമാലയിൽ, ലീനിയർ റെഗ്രഷനും ലോജിസ്റ്റിക് റെഗ്രഷനും തമ്മിലുള്ള വ്യത്യാസങ്ങൾ നിങ്ങൾ കണ്ടെത്തും, കൂടാതെ ഒരുപാട് ഒരുപാട് തിരഞ്ഞെടുക്കേണ്ട സമയവും അറിയും. + +[![മെഷീൻ ലേണിംഗിനുള്ള റെഗ്രഷൻ മോഡലുകളുടെ പരിചയം - തുടക്കക്കാർക്ക്](https://img.youtube.com/vi/XA3OaoW86R8/0.jpg)](https://youtu.be/XA3OaoW86R8 "ML for beginners - Introduction to Regression models for Machine Learning") + +> 🎥 റെഗ്രഷൻ മോഡലുകൾ പരിചയപ്പെടുത്തുന്ന ഒരു ചെറിയ വീഡിയോക്കായി മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക. + +ഈ പാഠസമൂഹത്തിൽ, നിങ്ങൾ മെഷീൻ ലേണിംഗ് പ്രവർത്തനങ്ങൾ ആരംഭിക്കാൻ സജ്ജമാകും, ഇതിൽ ഡാറ്റാ സയന്റിസ്റ്റുകൾക്കുള്ള സാധാരണ പരിസ്ഥിതി ആയ നോട്ട്‌ബുക്കുകൾ കൈകാര്യം ചെയ്യാൻ വിസ്വൽ സ്റ്റുഡിയോ കോഡ് ക്രമീകരിക്കുന്നതും ഉൾപ്പെടുന്നു. നിങ്ങൾ മെഷീൻ ലേണിംഗിനുള്ള ലൈബ്രറി ആയ Scikit-learn കണ്ടെത്തും, ഈ അധ്യായത്തിൽ റെഗ്രഷൻ മോഡലുകൾക്ക് കേന്ദ്രീകരിച്ച് നിങ്ങളുടെ ആദ്യ മോഡലുകൾ നിർമ്മിക്കും. + +> റെഗ്രഷൻ മോഡലുകളുമായി പ്രവർത്തിക്കുന്നത് പഠിക്കാൻ സഹായിക്കുന്ന കുറച്ച് ലൊ-കോഡ് ഉപകരണങ്ങൾ ഉണ്ട്. ഈ പ്രവർത്തനത്തിന് [Azure ML പരീക്ഷിക്കുക](https://docs.microsoft.com/learn/modules/create-regression-model-azure-machine-learning-designer/?WT.mc_id=academic-77952-leestott) + +### പാഠങ്ങൾ + +1. [വ്യാപാര ഉപകരണങ്ങൾ](1-Tools/README.md) +2. [ഡാറ്റാ മാനേജ്മെന്റ്](2-Data/README.md) +3. [ലീനിയർ, പോളിനോമിയൽ റെഗ്രഷൻ](3-Linear/README.md) +4. [ലോജിസ്റ്റിക് റെഗ്രഷൻ](4-Logistic/README.md) + +--- +### ക്രെഡിറ്റുകൾ + +"ML with regression" ♥️ കൊണ്ട് എഴുതിയത് [ജെൻ ലൂപ്പർ](https://twitter.com/jenlooper) + +♥️ ക്വിസ് സംഭാവകർ: [മുഹമ്മദ് സകിബ് ഖാൻ ഇനാൻ](https://twitter.com/Sakibinan) & [ഓർനെല്ല അൾടുന്യൻ](https://twitter.com/ornelladotcom) + +പംപ്കിൻ ഡാറ്റാസെറ്റ് [കാഗിൾ上的 ഈ പ്രോജക്ട്](https://www.kaggle.com/usda/a-year-of-pumpkin-prices) നിർദ്ദേശിച്ചതാണ്, അതിന്റെ ഡാറ്റ [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) എന്ന യുഎസ് ഡിപ്പാർട്ട്മെന്റ് ഓഫ് അഗ്രിക്കൾച്ചർ വിതരണം ചെയ്യുന്ന റിപ്പോർട്ടുകളിൽ നിന്നാണ്. വിതരണത്തെ സാധാരണമാക്കാൻ വർണ്ണം അടിസ്ഥാനമാക്കി ചില പോയിന്റുകൾ ചേർത്തിട്ടുണ്ട്. ഈ ഡാറ്റ പബ്ലിക് ഡൊമെയ്‌നിലാണ്. + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/3-Web-App/1-Web-App/README.md b/translations/ml/3-Web-App/1-Web-App/README.md new file mode 100644 index 000000000..fed25d0dc --- /dev/null +++ b/translations/ml/3-Web-App/1-Web-App/README.md @@ -0,0 +1,361 @@ + +# ML മോഡൽ ഉപയോഗിച്ച് ഒരു വെബ് ആപ്പ് നിർമ്മിക്കുക + +ഈ പാഠത്തിൽ, നിങ്ങൾ ഒരു ഡാറ്റാ സെറ്റിൽ ML മോഡൽ പരിശീലിപ്പിക്കും, അത് ഈ ലോകത്തിന് പുറത്തുള്ളതാണ്: _കഴിഞ്ഞ നൂറ്റാണ്ടിലെ UFO ദൃശ്യങ്ങൾ_, NUFORC-യുടെ ഡാറ്റാബേസിൽ നിന്നുള്ളത്. + +നിങ്ങൾ പഠിക്കാനിരിക്കുന്നവ: + +- പരിശീലിപ്പിച്ച മോഡൽ 'pickle' ചെയ്യുന്നത് എങ്ങനെ +- ആ മോഡൽ Flask ആപ്പിൽ എങ്ങനെ ഉപയോഗിക്കാം + +ഡാറ്റ ശുദ്ധീകരണത്തിനും മോഡൽ പരിശീലനത്തിനും നോട്ട്ബുക്കുകൾ ഉപയോഗിക്കുന്നതിനെ തുടരും, പക്ഷേ നിങ്ങൾക്ക് ഒരു മോഡൽ 'വൈൽഡിൽ' ഉപയോഗിക്കുന്നതിനെക്കുറിച്ച് അന്വേഷിച്ച് ഒരു പടി മുന്നോട്ട് പോകാം: വെബ് ആപ്പിൽ. + +ഇത് ചെയ്യാൻ, Flask ഉപയോഗിച്ച് ഒരു വെബ് ആപ്പ് നിർമ്മിക്കേണ്ടതാണ്. + +## [പ്രീ-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +## ആപ്പ് നിർമ്മിക്കൽ + +മെഷീൻ ലേണിംഗ് മോഡലുകൾ ഉപയോഗിക്കുന്ന വെബ് ആപ്പുകൾ നിർമ്മിക്കാൻ പല വഴികളുണ്ട്. നിങ്ങളുടെ വെബ് ആർക്കിടെക്ചർ മോഡൽ പരിശീലന രീതിയെ ബാധിക്കാം. ഡാറ്റ സയൻസ് ഗ്രൂപ്പ് ഒരു മോഡൽ പരിശീലിപ്പിച്ച് ആ മോഡൽ ആപ്പിൽ ഉപയോഗിക്കാൻ നിങ്ങൾക്ക് നൽകുന്ന ഒരു ബിസിനസ്സിൽ നിങ്ങൾ ജോലി ചെയ്യുന്നു എന്ന് കരുതുക. + +### പരിഗണനകൾ + +നിങ്ങൾ ചോദിക്കേണ്ട നിരവധി ചോദ്യങ്ങളുണ്ട്: + +- **ഇത് വെബ് ആപ്പാണോ മൊബൈൽ ആപ്പാണോ?** നിങ്ങൾ മൊബൈൽ ആപ്പ് നിർമ്മിക്കുന്നുവെങ്കിൽ അല്ലെങ്കിൽ മോഡൽ IoT സാഹചര്യത്തിൽ ഉപയോഗിക്കേണ്ടതുണ്ടെങ്കിൽ, [TensorFlow Lite](https://www.tensorflow.org/lite/) ഉപയോഗിച്ച് ആൻഡ്രോയിഡ് അല്ലെങ്കിൽ iOS ആപ്പിൽ മോഡൽ ഉപയോഗിക്കാം. +- **മോഡൽ എവിടെ നിലനിൽക്കും?** ക്ലൗഡിലോ ലോക്കലിലോ? +- **ഓഫ്ലൈൻ പിന്തുണ.** ആപ്പ് ഓഫ്ലൈനിലും പ്രവർത്തിക്കേണ്ടതുണ്ടോ? +- **മോഡൽ പരിശീലിപ്പിക്കാൻ ഉപയോഗിച്ച സാങ്കേതികവിദ്യ എന്ത്?** തിരഞ്ഞെടുക്കപ്പെട്ട സാങ്കേതികവിദ്യ ഉപയോഗിക്കുന്ന ടൂളുകൾ വ്യത്യസ്തമായിരിക്കും. + - **TensorFlow ഉപയോഗിക്കുന്നത്.** ഉദാഹരണത്തിന് TensorFlow ഉപയോഗിച്ച് മോഡൽ പരിശീലിപ്പിക്കുന്നുവെങ്കിൽ, ആ ഇക്കോസിസ്റ്റം [TensorFlow.js](https://www.tensorflow.org/js/) ഉപയോഗിച്ച് വെബ് ആപ്പിൽ ഉപയോഗിക്കാൻ മോഡൽ മാറ്റാൻ കഴിയും. + - **PyTorch ഉപയോഗിക്കുന്നത്.** [PyTorch](https://pytorch.org/) പോലുള്ള ലൈബ്രറി ഉപയോഗിച്ച് മോഡൽ നിർമ്മിക്കുന്നുവെങ്കിൽ, അത് [ONNX](https://onnx.ai/) (Open Neural Network Exchange) ഫോർമാറ്റിൽ എക്സ്പോർട്ട് ചെയ്ത് ജാവാസ്ക്രിപ്റ്റ് വെബ് ആപ്പുകളിൽ ഉപയോഗിക്കാൻ [Onnx Runtime](https://www.onnxruntime.ai/) ഉപയോഗിക്കാം. ഈ ഓപ്ഷൻ Scikit-learn-ൽ പരിശീലിപ്പിച്ച മോഡലിനായി ഭാവിയിലെ പാഠത്തിൽ പരിശോധിക്കും. + - **Lobe.ai അല്ലെങ്കിൽ Azure Custom Vision ഉപയോഗിക്കുന്നത്.** [Lobe.ai](https://lobe.ai/) അല്ലെങ്കിൽ [Azure Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77952-leestott) പോലുള്ള ML SaaS (Software as a Service) സിസ്റ്റം ഉപയോഗിച്ച് മോഡൽ പരിശീലിപ്പിക്കുന്നുവെങ്കിൽ, ഈ സോഫ്റ്റ്‌വെയർ പല പ്ലാറ്റ്ഫോമുകൾക്കായി മോഡൽ എക്സ്പോർട്ട് ചെയ്യാനുള്ള മാർഗങ്ങൾ നൽകുന്നു, കൂടാതെ ക്ലൗഡിൽ ഓൺലൈൻ ആപ്ലിക്കേഷനിലൂടെ ചോദിക്കാവുന്ന ഒരു കസ്റ്റം API നിർമ്മിക്കാനും കഴിയും. + +നിങ്ങൾക്ക് ഒരു മുഴുവൻ Flask വെബ് ആപ്പ് നിർമ്മിച്ച് ബ്രൗസറിൽ തന്നെ മോഡൽ പരിശീലിപ്പിക്കാൻ അവസരമുണ്ട്. ഇത് TensorFlow.js ഉപയോഗിച്ച് ജാവാസ്ക്രിപ്റ്റ് സാഹചര്യത്തിലും ചെയ്യാം. + +നമ്മുടെ ആവശ്യങ്ങൾക്ക്, Python അടിസ്ഥാനമാക്കിയുള്ള നോട്ട്ബുക്കുകൾ ഉപയോഗിച്ചുകൊണ്ടുള്ളതിനാൽ, ഒരു പരിശീലിപ്പിച്ച മോഡൽ Python-ൽ നിർമ്മിച്ച വെബ് ആപ്പിൽ വായിക്കാൻ കഴിയുന്ന ഫോർമാറ്റിലേക്ക് എങ്ങനെ എക്സ്പോർട്ട് ചെയ്യാമെന്ന് പരിശോധിക്കാം. + +## ടൂൾ + +ഈ ടാസ്കിനായി നിങ്ങൾക്ക് രണ്ട് ടൂളുകൾ വേണം: Flask, Pickle, രണ്ടും Python-ൽ പ്രവർത്തിക്കുന്നു. + +✅ [Flask](https://palletsprojects.com/p/flask/) എന്താണ്? അതിന്റെ സ്രഷ്ടാക്കൾ 'മൈക്രോ-ഫ്രെയിംവർക്ക്' എന്ന് നിർവചിച്ചിരിക്കുന്ന Flask, Python ഉപയോഗിച്ച് വെബ് ഫ്രെയിംവർക്ക് അടിസ്ഥാന സവിശേഷതകളും വെബ് പേജുകൾ നിർമ്മിക്കാൻ ടെംപ്ലേറ്റിംഗ് എഞ്ചിൻ നൽകുന്നു. Flask ഉപയോഗിച്ച് നിർമ്മാണം അഭ്യസിക്കാൻ [ഈ Learn മോഡ്യൂൾ](https://docs.microsoft.com/learn/modules/python-flask-build-ai-web-app?WT.mc_id=academic-77952-leestott) കാണുക. + +✅ [Pickle](https://docs.python.org/3/library/pickle.html) എന്താണ്? Pickle 🥒 Python ഒബ്ജക്റ്റ് ഘടന സീരിയലൈസ് ചെയ്യാനും ഡീ-സീരിയലൈസ് ചെയ്യാനും ഉപയോഗിക്കുന്ന Python മോഡ്യൂളാണ്. മോഡൽ 'pickle' ചെയ്യുമ്പോൾ, അതിന്റെ ഘടന വെബിൽ ഉപയോഗിക്കാൻ സീരിയലൈസ് അല്ലെങ്കിൽ ഫ്ലാറ്റൻ ചെയ്യുന്നു. ശ്രദ്ധിക്കുക: pickle സ്വാഭാവികമായി സുരക്ഷിതമല്ല, അതിനാൽ ഒരു ഫയൽ 'un-pickle' ചെയ്യാൻ ആവശ്യപ്പെട്ടാൽ ജാഗ്രത പാലിക്കുക. ഒരു pickle ചെയ്ത ഫയലിന് `.pkl` എന്ന സഫിക്സ് ഉണ്ട്. + +## അഭ്യാസം - നിങ്ങളുടെ ഡാറ്റ ശുദ്ധീകരിക്കുക + +ഈ പാഠത്തിൽ നിങ്ങൾ 80,000 UFO ദൃശ്യങ്ങളുടെ ഡാറ്റ ഉപയോഗിക്കും, [NUFORC](https://nuforc.org) (The National UFO Reporting Center) ശേഖരിച്ചിരിക്കുന്നു. ഈ ഡാറ്റയിൽ UFO ദൃശ്യങ്ങളുടെ ചില രസകരമായ വിവരണങ്ങളുണ്ട്, ഉദാഹരണത്തിന്: + +- **വലിയ ഉദാഹരണ വിവരണം.** "ഒരു മനുഷ്യൻ രാത്രി ഒരു പുല്ല് നിറഞ്ഞ മൈതാനത്തിൽ പ്രകാശിക്കുന്ന ഒരു ലൈറ്റ് ബീമിൽ നിന്ന് പുറത്തുവരുന്നു, അവൻ ടെക്സാസ് ഇൻസ്ട്രുമെന്റ്സ് പാർക്കിംഗ് ലോട്ടിലേക്ക് ഓടുന്നു". +- **ചെറിയ ഉദാഹരണ വിവരണം.** "ലൈറ്റുകൾ ഞങ്ങളെ പിന്തുടർന്നു". + +[ufos.csv](../../../../3-Web-App/1-Web-App/data/ufos.csv) സ്പ്രെഡ്‌ഷീറ്റിൽ `city`, `state`, `country` എന്നിവയുടെ കോളങ്ങൾ ഉൾപ്പെടുന്നു, ദൃശ്യമായ വസ്തുവിന്റെ `shape` കൂടാതെ അതിന്റെ `latitude`യും `longitude`യും. + +ഈ പാഠത്തിൽ ഉൾപ്പെടുത്തിയിരിക്കുന്ന ശൂന്യമായ [നോട്ട്ബുക്ക്](notebook.ipynb) ൽ: + +1. മുൻപത്തെ പാഠങ്ങളിൽ ചെയ്തതുപോലെ `pandas`, `matplotlib`, `numpy` ഇറക്കുമതി ചെയ്ത് ufos സ്പ്രെഡ്‌ഷീറ്റ് ഇറക്കുമതി ചെയ്യുക. ഒരു സാമ്പിൾ ഡാറ്റാ സെറ്റ് കാണാം: + + ```python + import pandas as pd + import numpy as np + + ufos = pd.read_csv('./data/ufos.csv') + ufos.head() + ``` + +1. ufos ഡാറ്റ ഒരു ചെറിയ ഡാറ്റാഫ്രെയിമിലേക്ക് പുതിയ തലക്കെട്ടുകളോടെ മാറ്റുക. `Country` ഫീൽഡിലെ വ്യത്യസ്ത മൂല്യങ്ങൾ പരിശോധിക്കുക. + + ```python + ufos = pd.DataFrame({'Seconds': ufos['duration (seconds)'], 'Country': ufos['country'],'Latitude': ufos['latitude'],'Longitude': ufos['longitude']}) + + ufos.Country.unique() + ``` + +1. ഇപ്പോൾ, നാം കൈകാര്യം ചെയ്യേണ്ട ഡാറ്റയുടെ അളവ് കുറയ്ക്കാൻ, ഏതെങ്കിലും നൾ മൂല്യങ്ങൾ ഒഴിവാക്കി 1-60 സെക്കൻഡ് ഇടയിലുള്ള ദൃശ്യങ്ങൾ മാത്രം ഇറക്കുമതി ചെയ്യുക: + + ```python + ufos.dropna(inplace=True) + + ufos = ufos[(ufos['Seconds'] >= 1) & (ufos['Seconds'] <= 60)] + + ufos.info() + ``` + +1. രാജ്യങ്ങളുടെ ടെക്സ്റ്റ് മൂല്യങ്ങൾ സംഖ്യയാക്കി മാറ്റാൻ Scikit-learn-ന്റെ `LabelEncoder` ലൈബ്രറി ഇറക്കുമതി ചെയ്യുക: + + ✅ LabelEncoder ഡാറ്റ അക്ഷരമാലാനുസരിച്ച് എൻകോഡ് ചെയ്യുന്നു + + ```python + from sklearn.preprocessing import LabelEncoder + + ufos['Country'] = LabelEncoder().fit_transform(ufos['Country']) + + ufos.head() + ``` + + നിങ്ങളുടെ ഡാറ്റ ഇങ്ങനെ കാണണം: + + ```output + Seconds Country Latitude Longitude + 2 20.0 3 53.200000 -2.916667 + 3 20.0 4 28.978333 -96.645833 + 14 30.0 4 35.823889 -80.253611 + 23 60.0 4 45.582778 -122.352222 + 24 3.0 3 51.783333 -0.783333 + ``` + +## അഭ്യാസം - നിങ്ങളുടെ മോഡൽ നിർമ്മിക്കുക + +ഇപ്പോൾ, ഡാറ്റ പരിശീലനവും പരിശോധനയും ഗ്രൂപ്പുകളായി വിഭജിച്ച് മോഡൽ പരിശീലിപ്പിക്കാൻ തയ്യാറാകാം. + +1. നിങ്ങൾ പരിശീലിപ്പിക്കാൻ ആഗ്രഹിക്കുന്ന മൂന്ന് ഫീച്ചറുകൾ X വെക്ടറായി തിരഞ്ഞെടുക്കുക, y വെക്ടർ `Country` ആയിരിക്കും. നിങ്ങൾക്ക് `Seconds`, `Latitude`, `Longitude` നൽകുമ്പോൾ ഒരു രാജ്യ ഐഡി ലഭിക്കണം. + + ```python + from sklearn.model_selection import train_test_split + + Selected_features = ['Seconds','Latitude','Longitude'] + + X = ufos[Selected_features] + y = ufos['Country'] + + X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) + ``` + +1. ലോജിസ്റ്റിക് റെഗ്രഷൻ ഉപയോഗിച്ച് മോഡൽ പരിശീലിപ്പിക്കുക: + + ```python + from sklearn.metrics import accuracy_score, classification_report + from sklearn.linear_model import LogisticRegression + model = LogisticRegression() + model.fit(X_train, y_train) + predictions = model.predict(X_test) + + print(classification_report(y_test, predictions)) + print('Predicted labels: ', predictions) + print('Accuracy: ', accuracy_score(y_test, predictions)) + ``` + +ശ്രദ്ധേയമായും, കൃത്യത **(ഏകദേശം 95%)** മോശമല്ല, കാരണം `Country`യും `Latitude/Longitude`യും തമ്മിൽ ബന്ധമുണ്ട്. + +നിങ്ങൾ സൃഷ്ടിച്ച മോഡൽ അത്ര വിപ്ലവകരമല്ല, കാരണം `Latitude`യും `Longitude`യും ഉപയോഗിച്ച് ഒരു `Country` നിശ്ചയിക്കാനാകും, പക്ഷേ ഇത് ശുദ്ധീകരിച്ച, എക്സ്പോർട്ട് ചെയ്ത, പിന്നീട് വെബ് ആപ്പിൽ ഉപയോഗിക്കുന്ന മോഡൽ പരിശീലിപ്പിക്കാൻ നല്ല അഭ്യാസമാണ്. + +## അഭ്യാസം - മോഡൽ 'pickle' ചെയ്യുക + +ഇപ്പോൾ, നിങ്ങളുടെ മോഡൽ _pickle_ ചെയ്യാനുള്ള സമയം! ഇത് കുറച്ച് കോഡ് വരികളിൽ ചെയ്യാം. _pickle_ ചെയ്ത ശേഷം, നിങ്ങളുടെ pickle ചെയ്ത മോഡൽ ലോഡ് ചെയ്ത് സെക്കൻഡ്, latitude, longitude മൂല്യങ്ങൾ അടങ്ങിയ ഒരു സാമ്പിൾ ഡാറ്റാ അറേയിൽ പരീക്ഷിക്കുക, + +```python +import pickle +model_filename = 'ufo-model.pkl' +pickle.dump(model, open(model_filename,'wb')) + +model = pickle.load(open('ufo-model.pkl','rb')) +print(model.predict([[50,44,-12]])) +``` + +മോഡൽ **'3'** എന്ന ഫലം നൽകുന്നു, ഇത് യുകെയുടെ രാജ്യ കോഡാണ്. അത്ഭുതം! 👽 + +## അഭ്യാസം - Flask ആപ്പ് നിർമ്മിക്കുക + +ഇപ്പോൾ, നിങ്ങളുടെ മോഡൽ വിളിച്ച് സമാന ഫലങ്ങൾ തിരികെ നൽകുന്ന ഒരു Flask ആപ്പ് നിർമ്മിക്കാം, പക്ഷേ കൂടുതൽ ദൃശ്യപരമായി. + +1. _notebook.ipynb_ ഫയലിന് സമീപം **web-app** എന്ന ഫോൾഡർ സൃഷ്ടിക്കുക, അവിടെ നിങ്ങളുടെ _ufo-model.pkl_ ഫയൽ നിലനിൽക്കും. + +1. ആ ഫോൾഡറിൽ മൂന്ന് ഫോൾഡറുകൾ കൂടി സൃഷ്ടിക്കുക: **static**, അതിനുള്ളിൽ **css** ഫോൾഡർ, കൂടാതെ **templates**. ഇപ്പോൾ നിങ്ങൾക്കുണ്ടാകേണ്ട ഫയലുകളും ഡയറക്ടറികളും: + + ```output + web-app/ + static/ + css/ + templates/ + notebook.ipynb + ufo-model.pkl + ``` + + ✅ പൂർത്തിയായ ആപ്പിന്റെ ദൃശ്യത്തിനായി സൊല്യൂഷൻ ഫോൾഡർ കാണുക + +1. _web-app_ ഫോൾഡറിൽ ആദ്യമായി സൃഷ്ടിക്കേണ്ട ഫയൽ **requirements.txt** ആണ്. ജാവാസ്ക്രിപ്റ്റ് ആപ്പിലെ _package.json_ പോലെയാണ് ഇത്, ആപ്പിന് ആവശ്യമായ ഡിപ്പൻഡൻസികൾ പട്ടികപ്പെടുത്തുന്നു. **requirements.txt** ൽ ഈ വരികൾ ചേർക്കുക: + + ```text + scikit-learn + pandas + numpy + flask + ``` + +1. ഇപ്പോൾ, _web-app_ ലേക്ക് നാവിഗേറ്റ് ചെയ്ത് ഈ ഫയൽ പ്രവർത്തിപ്പിക്കുക: + + ```bash + cd web-app + ``` + +1. നിങ്ങളുടെ ടെർമിനലിൽ `pip install` ടൈപ്പ് ചെയ്ത് _requirements.txt_ ലിസ്റ്റ് ചെയ്ത ലൈബ്രറികൾ ഇൻസ്റ്റാൾ ചെയ്യുക: + + ```bash + pip install -r requirements.txt + ``` + +1. ഇപ്പോൾ, ആപ്പ് പൂർത്തിയാക്കാൻ മൂന്ന് ഫയലുകൾ കൂടി സൃഷ്ടിക്കാൻ തയ്യാറാകൂ: + + 1. റൂട്ടിൽ **app.py** സൃഷ്ടിക്കുക. + 2. _templates_ ഡയറക്ടറിയിൽ **index.html** സൃഷ്ടിക്കുക. + 3. _static/css_ ഡയറക്ടറിയിൽ **styles.css** സൃഷ്ടിക്കുക. + +1. _styles.css_ ഫയൽ കുറച്ച് സ്റ്റൈലുകളോടെ നിർമ്മിക്കുക: + + ```css + body { + width: 100%; + height: 100%; + font-family: 'Helvetica'; + background: black; + color: #fff; + text-align: center; + letter-spacing: 1.4px; + font-size: 30px; + } + + input { + min-width: 150px; + } + + .grid { + width: 300px; + border: 1px solid #2d2d2d; + display: grid; + justify-content: center; + margin: 20px auto; + } + + .box { + color: #fff; + background: #2d2d2d; + padding: 12px; + display: inline-block; + } + ``` + +1. തുടർന്ന്, _index.html_ ഫയൽ നിർമ്മിക്കുക: + + ```html + + + + + 🛸 UFO Appearance Prediction! 👽 + + + + +
+ +
+ +

According to the number of seconds, latitude and longitude, which country is likely to have reported seeing a UFO?

+ +
+ + + + +
+ +

{{ prediction_text }}

+ +
+ +
+ + + + ``` + + ഈ ഫയലിലെ ടെംപ്ലേറ്റിംഗ് നോക്കുക. ആപ്പ് നൽകുന്ന വേരിയബിളുകൾ ചുറ്റിപ്പറ്റിയുള്ള 'മസ്റ്റാഷ്' സിന്റാക്സ് `{{}}` ശ്രദ്ധിക്കുക, ഉദാഹരണത്തിന് പ്രവചന ടെക്സ്റ്റ്. `/predict` റൂട്ടിലേക്ക് ഒരു ഫോർം പോസ്റ്റ് ചെയ്യുന്നതും കാണാം. + + അവസാനം, മോഡൽ ഉപയോഗിച്ച് പ്രവചനങ്ങൾ പ്രദർശിപ്പിക്കുന്ന പൈത്തൺ ഫയൽ നിർമ്മിക്കാൻ തയ്യാറാകൂ: + +1. `app.py` ൽ ചേർക്കുക: + + ```python + import numpy as np + from flask import Flask, request, render_template + import pickle + + app = Flask(__name__) + + model = pickle.load(open("./ufo-model.pkl", "rb")) + + + @app.route("/") + def home(): + return render_template("index.html") + + + @app.route("/predict", methods=["POST"]) + def predict(): + + int_features = [int(x) for x in request.form.values()] + final_features = [np.array(int_features)] + prediction = model.predict(final_features) + + output = prediction[0] + + countries = ["Australia", "Canada", "Germany", "UK", "US"] + + return render_template( + "index.html", prediction_text="Likely country: {}".format(countries[output]) + ) + + + if __name__ == "__main__": + app.run(debug=True) + ``` + + > 💡 ടിപ്പ്: Flask ഉപയോഗിച്ച് വെബ് ആപ്പ് ഓടിക്കുമ്പോൾ [`debug=True`](https://www.askpython.com/python-modules/flask/flask-debug-mode) ചേർക്കുമ്പോൾ, ആപ്പിൽ ചെയ്ത മാറ്റങ്ങൾ ഉടൻ പ്രതിഫലിക്കും, സെർവർ റീസ്റ്റാർട്ട് ചെയ്യേണ്ടതില്ല. ശ്രദ്ധിക്കുക! പ്രൊഡക്ഷൻ ആപ്പിൽ ഇത് ഉപയോഗിക്കരുത്. + +`python app.py` അല്ലെങ്കിൽ `python3 app.py` ഓടിച്ചാൽ നിങ്ങളുടെ വെബ് സെർവർ ലോക്കലായി ആരംഭിക്കും, നിങ്ങൾക്ക് ഒരു ചെറിയ ഫോർം പൂരിപ്പിച്ച് UFO ദൃശ്യങ്ങൾ എവിടെ കണ്ടുവെന്ന് അറിയാം! + +അതിനുമുമ്പ്, `app.py` ഭാഗങ്ങൾ നോക്കാം: + +1. ആദ്യം, ഡിപ്പൻഡൻസികൾ ലോഡ് ചെയ്ത് ആപ്പ് ആരംഭിക്കുന്നു. +1. തുടർന്ന്, മോഡൽ ഇറക്കുമതി ചെയ്യുന്നു. +1. പിന്നീട്, ഹോം റൂട്ടിൽ index.html റെൻഡർ ചെയ്യുന്നു. + +`/predict` റൂട്ടിൽ, ഫോർം പോസ്റ്റ് ചെയ്തപ്പോൾ പല കാര്യങ്ങളും നടക്കുന്നു: + +1. ഫോർം വേരിയബിളുകൾ ശേഖരിച്ച് numpy അറേ ആയി മാറ്റുന്നു. മോഡലിലേക്ക് അയച്ച് പ്രവചന ഫലം ലഭിക്കുന്നു. +2. പ്രവചിച്ച രാജ്യ കോഡിൽ നിന്നുള്ള രാജ്യങ്ങൾ വായിക്കാൻ കഴിയുന്ന ടെക്സ്റ്റായി മാറ്റി index.html-ലേക്ക് അയക്കുന്നു, ടെംപ്ലേറ്റിൽ പ്രദർശിപ്പിക്കാൻ. + +Flask-ഉം pickle ചെയ്ത മോഡലും ഉപയോഗിച്ച് മോഡൽ ഇങ്ങനെ ഉപയോഗിക്കുന്നത് സാദാരണമാണ്. ഏറ്റവും ബുദ്ധിമുട്ടുള്ളത് മോഡലിന് അയയ്ക്കേണ്ട ഡാറ്റയുടെ രൂപം മനസ്സിലാക്കലാണ്. മോഡൽ എങ്ങനെ പരിശീലിപ്പിച്ചതിനനുസരിച്ച് ഇത് വ്യത്യാസപ്പെടും. ഈ മോഡലിന് പ്രവചനത്തിന് മൂന്ന് ഡാറ്റ പോയിന്റുകൾ നൽകണം. + +പ്രൊഫഷണൽ സാഹചര്യത്തിൽ, മോഡൽ പരിശീലിപ്പിക്കുന്നവരും വെബ് അല്ലെങ്കിൽ മൊബൈൽ ആപ്പ് ഉപയോഗിക്കുന്നവരും നല്ല ആശയവിനിമയം വേണം. നമ്മുടെ കേസിൽ, അത് നിങ്ങൾ മാത്രം! + +--- + +## 🚀 ചലഞ്ച് + +നോട്ട്ബുക്കിൽ പ്രവർത്തിക്കാതെ, മോഡൽ Flask ആപ്പിൽ തന്നെ പരിശീലിപ്പിക്കാൻ ശ്രമിക്കൂ! നിങ്ങളുടെ Python കോഡ് നോട്ട്ബുക്കിൽ നിന്ന് മാറ്റി, ഡാറ്റ ശുദ്ധീകരിച്ചതിന് ശേഷം, `train` എന്ന റൂട്ടിൽ ആപ്പിനുള്ളിൽ മോഡൽ പരിശീലിപ്പിക്കുക. ഈ രീതിയുടെ ഗുണങ്ങളും ദോഷങ്ങളും എന്തെല്ലാമാണ്? + +## [പോസ്റ്റ്-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) + +## അവലോകനം & സ്വയം പഠനം + +ML മോഡലുകൾ ഉപയോഗിക്കുന്ന വെബ് ആപ്പുകൾ നിർമ്മിക്കാൻ പല വഴികളുണ്ട്. ജാവാസ്ക്രിപ്റ്റ് അല്ലെങ്കിൽ Python ഉപയോഗിച്ച് ML ലെവറേജ് ചെയ്യാൻ നിങ്ങൾക്ക് കഴിയുന്ന വഴികളുടെ പട്ടിക തയ്യാറാക്കുക. ആർക്കിടെക്ചർ പരിഗണിക്കുക: മോഡൽ ആപ്പിൽ തന്നെ നിലനിൽക്കണോ, ക്ലൗഡിൽ ആയിരിക്കണോ? പിന്നീട് എങ്ങനെ ആക്‌സസ് ചെയ്യും? പ്രയോഗിച്ച ML വെബ് പരിഹാരത്തിനുള്ള ഒരു ആർക്കിടെക്ചറൽ മോഡൽ വരച്ചുകാണിക്കുക. + +## അസൈൻമെന്റ് + +[മറ്റൊരു മോഡൽ പരീക്ഷിക്കുക](assignment.md) + +--- + + +**അസൂയാപത്രം**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ അധികാരപരമായ ഉറവിടമായി കണക്കാക്കപ്പെടണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/3-Web-App/1-Web-App/assignment.md b/translations/ml/3-Web-App/1-Web-App/assignment.md new file mode 100644 index 000000000..294dd4d7d --- /dev/null +++ b/translations/ml/3-Web-App/1-Web-App/assignment.md @@ -0,0 +1,27 @@ + +# വ്യത്യസ്തമായ ഒരു മോഡൽ പരീക്ഷിക്കുക + +## നിർദ്ദേശങ്ങൾ + +നിങ്ങൾ ഒരു പരിശീലിത Regression മോഡൽ ഉപയോഗിച്ച് ഒരു വെബ് ആപ്പ് നിർമ്മിച്ചിട്ടുണ്ടെങ്കിൽ, മുൻപ് Regression പാഠത്തിൽ നിന്നുള്ള ഒരു മോഡൽ ഉപയോഗിച്ച് ഈ വെബ് ആപ്പ് വീണ്ടും നിർമ്മിക്കുക. പംപ്കിൻ ഡാറ്റയെ പ്രതിഫലിപ്പിക്കാൻ നിങ്ങൾക്ക് സ്റ്റൈൽ നിലനിർത്താമോ അല്ലെങ്കിൽ വ്യത്യസ്തമായി രൂപകൽപ്പന ചെയ്യാമോ. നിങ്ങളുടെ മോഡലിന്റെ പരിശീലന രീതിയെ പ്രതിഫലിപ്പിക്കാൻ ഇൻപുട്ടുകൾ മാറ്റാൻ ശ്രദ്ധിക്കുക. + +## റൂബ്രിക് + +| മാനദണ്ഡങ്ങൾ | ഉദാഹരണപരമായത് | മതിയായത് | മെച്ചപ്പെടുത്തേണ്ടത് | +| -------------------------- | --------------------------------------------------------- | --------------------------------------------------------- | -------------------------------------- | +| | വെബ് ആപ്പ് പ്രതീക്ഷിച്ചതുപോലെ പ്രവർത്തിക്കുകയും ക്ലൗഡിൽ വിന്യസിക്കപ്പെടുകയും ചെയ്യുന്നു | വെബ് ആപ്പിൽ പിഴവുകൾ ഉണ്ടോ അല്ലെങ്കിൽ അപ്രതീക്ഷിത ഫലങ്ങൾ കാണിക്കുന്നു | വെബ് ആപ്പ് ശരിയായി പ്രവർത്തിക്കുന്നില്ല | + +--- + + +**അസൂയാ**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ അധികാരപരമായ ഉറവിടമായി കണക്കാക്കണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file diff --git a/translations/ml/3-Web-App/1-Web-App/notebook.ipynb b/translations/ml/3-Web-App/1-Web-App/notebook.ipynb new file mode 100644 index 000000000..e69de29bb diff --git a/translations/ml/3-Web-App/1-Web-App/solution/notebook.ipynb b/translations/ml/3-Web-App/1-Web-App/solution/notebook.ipynb new file mode 100644 index 000000000..56fa3d86a --- /dev/null +++ b/translations/ml/3-Web-App/1-Web-App/solution/notebook.ipynb @@ -0,0 +1,269 @@ +{ + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.0" + }, + "orig_nbformat": 2, + "kernelspec": { + "name": "python37364bit8d3b438fb5fc4430a93ac2cb74d693a7", + "display_name": "Python 3.7.0 64-bit ('3.7')" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "coopTranslator": { + "original_hash": "5fa2e8f4584c78250ca9729b46562ceb", + "translation_date": "2025-12-19T16:48:19+00:00", + "source_file": "3-Web-App/1-Web-App/solution/notebook.ipynb", + "language_code": "ml" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "## യു.എഫ്.ഒ. ദൃശ്യാനുഭവങ്ങളെക്കുറിച്ച് പഠിക്കാൻ റെഗ്രഷൻ മോഡൽ ഉപയോഗിച്ച് വെബ് ആപ്പ് നിർമ്മിക്കുക\n" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " datetime city state country shape \\\n", + "0 10/10/1949 20:30 san marcos tx us cylinder \n", + "1 10/10/1949 21:00 lackland afb tx NaN light \n", + "2 10/10/1955 17:00 chester (uk/england) NaN gb circle \n", + "3 10/10/1956 21:00 edna tx us circle \n", + "4 10/10/1960 20:00 kaneohe hi us light \n", + "\n", + " duration (seconds) duration (hours/min) \\\n", + "0 2700.0 45 minutes \n", + "1 7200.0 1-2 hrs \n", + "2 20.0 20 seconds \n", + "3 20.0 1/2 hour \n", + "4 900.0 15 minutes \n", + "\n", + " comments date posted latitude \\\n", + "0 This event took place in early fall around 194... 4/27/2004 29.883056 \n", + "1 1949 Lackland AFB, TX. Lights racing acros... 12/16/2005 29.384210 \n", + "2 Green/Orange circular disc over Chester, En... 1/21/2008 53.200000 \n", + "3 My older brother and twin sister were leaving ... 1/17/2004 28.978333 \n", + "4 AS a Marine 1st Lt. flying an FJ4B fighter/att... 1/22/2004 21.418056 \n", + "\n", + " longitude \n", + "0 -97.941111 \n", + "1 -98.581082 \n", + "2 -2.916667 \n", + "3 -96.645833 \n", + "4 -157.803611 " + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
datetimecitystatecountryshapeduration (seconds)duration (hours/min)commentsdate postedlatitudelongitude
010/10/1949 20:30san marcostxuscylinder2700.045 minutesThis event took place in early fall around 194...4/27/200429.883056-97.941111
110/10/1949 21:00lackland afbtxNaNlight7200.01-2 hrs1949 Lackland AFB&#44 TX. Lights racing acros...12/16/200529.384210-98.581082
210/10/1955 17:00chester (uk/england)NaNgbcircle20.020 secondsGreen/Orange circular disc over Chester&#44 En...1/21/200853.200000-2.916667
310/10/1956 21:00ednatxuscircle20.01/2 hourMy older brother and twin sister were leaving ...1/17/200428.978333-96.645833
410/10/1960 20:00kaneohehiuslight900.015 minutesAS a Marine 1st Lt. flying an FJ4B fighter/att...1/22/200421.418056-157.803611
\n
" + }, + "metadata": {}, + "execution_count": 23 + } + ], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "\n", + "ufos = pd.read_csv('../data/ufos.csv')\n", + "ufos.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array(['us', nan, 'gb', 'ca', 'au', 'de'], dtype=object)" + ] + }, + "metadata": {}, + "execution_count": 24 + } + ], + "source": [ + "\n", + "ufos = pd.DataFrame({'Seconds': ufos['duration (seconds)'], 'Country': ufos['country'],'Latitude': ufos['latitude'],'Longitude': ufos['longitude']})\n", + "\n", + "ufos.Country.unique()\n", + "\n", + "# 0 au, 1 ca, 2 de, 3 gb, 4 us" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\nInt64Index: 25863 entries, 2 to 80330\nData columns (total 4 columns):\n # Column Non-Null Count Dtype \n--- ------ -------------- ----- \n 0 Seconds 25863 non-null float64\n 1 Country 25863 non-null object \n 2 Latitude 25863 non-null float64\n 3 Longitude 25863 non-null float64\ndtypes: float64(3), object(1)\nmemory usage: 1010.3+ KB\n" + ] + } + ], + "source": [ + "ufos.dropna(inplace=True)\n", + "\n", + "ufos = ufos[(ufos['Seconds'] >= 1) & (ufos['Seconds'] <= 60)]\n", + "\n", + "ufos.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " Seconds Country Latitude Longitude\n", + "2 20.0 3 53.200000 -2.916667\n", + "3 20.0 4 28.978333 -96.645833\n", + "14 30.0 4 35.823889 -80.253611\n", + "23 60.0 4 45.582778 -122.352222\n", + "24 3.0 3 51.783333 -0.783333" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
SecondsCountryLatitudeLongitude
220.0353.200000-2.916667
320.0428.978333-96.645833
1430.0435.823889-80.253611
2360.0445.582778-122.352222
243.0351.783333-0.783333
\n
" + }, + "metadata": {}, + "execution_count": 26 + } + ], + "source": [ + "from sklearn.preprocessing import LabelEncoder\n", + "\n", + "ufos['Country'] = LabelEncoder().fit_transform(ufos['Country'])\n", + "\n", + "ufos.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.model_selection import train_test_split\n", + "\n", + "Selected_features = ['Seconds','Latitude','Longitude']\n", + "\n", + "X = ufos[Selected_features]\n", + "y = ufos['Country']\n", + "\n", + "\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/sklearn/linear_model/logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", + " FutureWarning)\n", + "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/sklearn/linear_model/logistic.py:469: FutureWarning: Default multi_class will be changed to 'auto' in 0.22. Specify the multi_class option to silence this warning.\n", + " \"this warning.\", FutureWarning)\n", + " precision recall f1-score support\n", + "\n", + " 0 1.00 1.00 1.00 41\n", + " 1 1.00 0.02 0.05 250\n", + " 2 0.00 0.00 0.00 8\n", + " 3 0.94 1.00 0.97 131\n", + " 4 0.95 1.00 0.97 4743\n", + "\n", + " accuracy 0.95 5173\n", + " macro avg 0.78 0.60 0.60 5173\n", + "weighted avg 0.95 0.95 0.93 5173\n", + "\n", + "Predicted labels: [4 4 4 ... 3 4 4]\n", + "Accuracy: 0.9512855209742895\n", + "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples.\n", + " 'precision', 'predicted', average, warn_for)\n" + ] + } + ], + "source": [ + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import accuracy_score, classification_report \n", + "from sklearn.linear_model import LogisticRegression\n", + "model = LogisticRegression()\n", + "model.fit(X_train, y_train)\n", + "predictions = model.predict(X_test)\n", + "\n", + "print(classification_report(y_test, predictions))\n", + "print('Predicted labels: ', predictions)\n", + "print('Accuracy: ', accuracy_score(y_test, predictions))\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "[3]\n" + ] + } + ], + "source": [ + "import pickle\n", + "model_filename = 'ufo-model.pkl'\n", + "pickle.dump(model, open(model_filename,'wb'))\n", + "\n", + "model = pickle.load(open('ufo-model.pkl','rb'))\n", + "print(model.predict([[50,44,-12]]))\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**അസൂയാപത്രം**: \nഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ അധികാരപരമായ ഉറവിടമായി കണക്കാക്കപ്പെടണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല.\n\n" + ] + } + ] +} \ No newline at end of file diff --git a/translations/ml/3-Web-App/README.md b/translations/ml/3-Web-App/README.md new file mode 100644 index 000000000..b34fc25b8 --- /dev/null +++ b/translations/ml/3-Web-App/README.md @@ -0,0 +1,37 @@ + +# നിങ്ങളുടെ ML മോഡൽ ഉപയോഗിക്കാൻ ഒരു വെബ് ആപ്പ് നിർമ്മിക്കുക + +പാഠ്യപദ്ധതിയുടെ ഈ ഭാഗത്തിൽ, നിങ്ങൾക്ക് പ്രയോഗാത്മകമായ ഒരു ML വിഷയം പരിചയപ്പെടുത്തും: നിങ്ങളുടെ Scikit-learn മോഡൽ ഫയലായി സേവ് ചെയ്യുന്നത്, അത് വെബ് ആപ്ലിക്കേഷനിൽ പ്രവചനങ്ങൾ നടത്താൻ ഉപയോഗിക്കാവുന്നതാണ്. മോഡൽ സേവ് ചെയ്ത ശേഷം, Flask-ൽ നിർമ്മിച്ച ഒരു വെബ് ആപ്പിൽ അത് എങ്ങനെ ഉപയോഗിക്കാമെന്ന് നിങ്ങൾ പഠിക്കും. ആദ്യം, UFO കാണപ്പെട്ടതുമായി ബന്ധപ്പെട്ട ചില ഡാറ്റ ഉപയോഗിച്ച് ഒരു മോഡൽ നിങ്ങൾ സൃഷ്ടിക്കും! പിന്നീട്, ഒരു വെബ് ആപ്പ് നിർമ്മിക്കും, അതിലൂടെ നിങ്ങൾ സെക്കൻഡുകളുടെ എണ്ണം, അക്ഷാംശവും രേഖാംശവും നൽകുമ്പോൾ ഏത് രാജ്യമാണ് UFO കണ്ടതായി റിപ്പോർട്ട് ചെയ്തതെന്ന് പ്രവചിക്കാനാകും. + +![UFO Parking](../../../translated_images/ufo.9e787f5161da9d4d1dafc537e1da09be8210f2ee996cb638aa5cee1d92867a04.ml.jpg) + +ഫോട്ടോ Michael Herren എന്നവരിൽ നിന്നാണ് Unsplash + +## പാഠങ്ങൾ + +1. [Build a Web App](1-Web-App/README.md) + +## ക്രെഡിറ്റുകൾ + +"Build a Web App" ♥️ ഉപയോഗിച്ച് എഴുതിയത് [Jen Looper](https://twitter.com/jenlooper) ആണ്. + +♥️ ക്വിസുകൾ എഴുതിയത് Rohan Raj ആണ്. + +ഡാറ്റാസെറ്റ് [Kaggle](https://www.kaggle.com/NUFORC/ufo-sightings) നിന്നാണ് ലഭിച്ചത്. + +വെബ് ആപ്പ് ആർക്കിടെക്ചർ ഭാഗികമായി [ഈ ലേഖനം](https://towardsdatascience.com/how-to-easily-deploy-machine-learning-models-using-flask-b95af8fe34d4) ഉം [ഈ റിപോ](https://github.com/abhinavsagar/machine-learning-deployment) ഉം Abhinav Sagar നിർദ്ദേശിച്ചവയാണ്. + +--- + + +**അസൂയാപത്രം**: +ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, യന്ത്രം ചെയ്ത വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ അധികാരപരമായ ഉറവിടമായി കണക്കാക്കണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. + \ No newline at end of file