diff --git a/translations/te/6-NLP/4-Hotel-Reviews-1/solution/R/README.md b/translations/te/6-NLP/4-Hotel-Reviews-1/solution/R/README.md
new file mode 100644
index 000000000..80ff50588
--- /dev/null
+++ b/translations/te/6-NLP/4-Hotel-Reviews-1/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/te/6-NLP/4-Hotel-Reviews-1/solution/notebook.ipynb b/translations/te/6-NLP/4-Hotel-Reviews-1/solution/notebook.ipynb
new file mode 100644
index 000000000..363db829c
--- /dev/null
+++ b/translations/te/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:23+00:00",
+ "source_file": "6-NLP/4-Hotel-Reviews-1/solution/notebook.ipynb",
+ "language_code": "te"
+ }
+ },
+ "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/te/6-NLP/5-Hotel-Reviews-2/README.md b/translations/te/6-NLP/5-Hotel-Reviews-2/README.md
new file mode 100644
index 000000000..ddbf86ccc
--- /dev/null
+++ b/translations/te/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` విలువలను క్రింది విలువలతో మార్చండి (ఒక చిరునామాలో నగరం మరియు దేశం రెండూ ఉంటే, దాన్ని కేవలం నగరం మరియు దేశంగా మార్చండి).
+
+ డేటాసెట్లో ఉన్న నగరాలు మరియు దేశాలు ఇవే:
+
+ Amsterdam, Netherlands
+
+ Barcelona, Spain
+
+ London, United Kingdom
+
+ Milan, Italy
+
+ Paris, France
+
+ Vienna, Austria
+
+ ```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` మనకు ఉపయోగం లేదు, కాబట్టి వాటిని లెక్కించే ముందు తొలగించడం మంచిది, కానీ ఇది చాలా వేగంగా జరిగే ఆపరేషన్ కాబట్టి వాటిని ఉంచి పక్కన పెట్టవచ్చు.
+
+### ఉండే కాలం ట్యాగ్స్ తొలగించడం
+
+ఈ ట్యాగ్స్ తొలగించడం మొదటి దశ, ఇది మొత్తం ట్యాగ్స్ సంఖ్యను కొంచెం తగ్గిస్తుంది. గమనించండి, మీరు వాటిని డేటాసెట్ నుండి తొలగించరు, కేవలం సమీక్షల డేటాసెట్లో లెక్కించడానికి/ఉంచడానికి పరిగణన నుండి తీసివేస్తారు.
+
+| 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 |
+| ... | ... |
+
+గదులు, సూట్లు, స్టూడియోలు, అపార్ట్మెంట్లు విభిన్న రకాలు ఉన్నాయి. అవి సారాంశంగా ఒకే అర్థం కలిగి ఉంటాయి మరియు మీకు సంబంధం లేదు, కాబట్టి వాటిని పరిగణన నుండి తీసివేయండి.
+
+| 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 జోడించండి. ఫలితం, ఉదా: వ్యాపార ప్రయాణం vs విశ్రాంతి కోసం ఈ హోటల్ ఎన్ని సమీక్షకులు ఎంచుకున్నారు అనే లెక్క, ఇది హోటల్ సిఫార్సు చేయడంలో ఉపయోగకరమైన సమాచారం.
+
+```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")
+
+# స్టాప్ వర్డ్స్ తొలగించండి - చాలా టెక్స్ట్ కోసం ఇది నెమ్మదిగా ఉండవచ్చు!
+# ర్యాన్ హాన్ (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 అని భావిస్తే, కానీ సమీక్షకుడు హోటల్కు అత్యల్ప స్కోర్ ఇచ్చినట్లయితే, సమీక్ష పాఠ్యం స్కోర్కు సరిపోలకపోవచ్చు లేదా భావ విశ్లేషకుడు భావాన్ని సరిగ్గా గుర్తించలేకపోయినట్టవుతుంది. కొన్ని భావ స్కోర్లు పూర్తిగా తప్పు ఉండవచ్చు, మరియు తరచుగా అది వివరణాత్మకం, ఉదా: సమీక్ష చాలా వ్యంగ్యంగా ఉండవచ్చు "Of course I LOVED sleeping in a room with no heating" మరియు భావ విశ్లేషకుడు దాన్ని పాజిటివ్ భావంగా భావిస్తాడు, కానీ మానవుడు చదివితే అది వ్యంగ్యం అని తెలుసుకుంటాడు.
+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). VADER: సోషల్ మీడియా టెక్స్ట్ సెంటిమెంట్ విశ్లేషణ కోసం ఒక సరళమైన నియమాధారిత మోడల్. ఎనిమిదవ అంతర్జాతీయ వెబ్లాగ్స్ మరియు సోషల్ మీడియా కాన్ఫరెన్స్ (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/te/6-NLP/5-Hotel-Reviews-2/assignment.md b/translations/te/6-NLP/5-Hotel-Reviews-2/assignment.md
new file mode 100644
index 000000000..4de7ac35b
--- /dev/null
+++ b/translations/te/6-NLP/5-Hotel-Reviews-2/assignment.md
@@ -0,0 +1,27 @@
+
+# వేరే డేటాసెట్ ప్రయత్నించండి
+
+## సూచనలు
+
+ఇప్పుడు మీరు టెక్స్ట్కు భావోద్వేగాన్ని కేటాయించడానికి NLTK ఉపయోగించడం గురించి నేర్చుకున్నందున, వేరే డేటాసెట్ను ప్రయత్నించండి. మీరు దాని చుట్టూ కొంత డేటా ప్రాసెసింగ్ చేయాల్సి ఉండవచ్చు, కాబట్టి ఒక నోట్బుక్ సృష్టించి మీ ఆలోచనా ప్రక్రియను డాక్యుమెంట్ చేయండి. మీరు ఏమి కనుగొంటారు?
+
+## రూబ్రిక్
+
+| ప్రమాణాలు | అద్భుతమైన | సరిపడిన | మెరుగుదల అవసరం |
+| -------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | ---------------------- |
+| | భావోద్వేగం ఎలా కేటాయించబడిందో వివరించే బాగా డాక్యుమెంట్ చేసిన సెల్స్తో పూర్తి నోట్బుక్ మరియు డేటాసెట్ అందించబడింది | నోట్బుక్లో మంచి వివరణలు లేవు | నోట్బుక్ లోపభూయిష్టం |
+
+---
+
+
+**అస్పష్టత**:
+ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.
+
\ No newline at end of file
diff --git a/translations/te/6-NLP/5-Hotel-Reviews-2/notebook.ipynb b/translations/te/6-NLP/5-Hotel-Reviews-2/notebook.ipynb
new file mode 100644
index 000000000..e69de29bb
diff --git a/translations/te/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb b/translations/te/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb
new file mode 100644
index 000000000..96e55f663
--- /dev/null
+++ b/translations/te/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:35+00:00",
+ "source_file": "6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb",
+ "language_code": "te"
+ }
+ },
+ "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/te/6-NLP/5-Hotel-Reviews-2/solution/2-notebook.ipynb b/translations/te/6-NLP/5-Hotel-Reviews-2/solution/2-notebook.ipynb
new file mode 100644
index 000000000..b7e37cdaa
--- /dev/null
+++ b/translations/te/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:46+00:00",
+ "source_file": "6-NLP/5-Hotel-Reviews-2/solution/2-notebook.ipynb",
+ "language_code": "te"
+ }
+ },
+ "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ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.\n\n"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/translations/te/6-NLP/5-Hotel-Reviews-2/solution/3-notebook.ipynb b/translations/te/6-NLP/5-Hotel-Reviews-2/solution/3-notebook.ipynb
new file mode 100644
index 000000000..1223efc80
--- /dev/null
+++ b/translations/te/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:49:57+00:00",
+ "source_file": "6-NLP/5-Hotel-Reviews-2/solution/3-notebook.ipynb",
+ "language_code": "te"
+ }
+ },
+ "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/te/6-NLP/5-Hotel-Reviews-2/solution/Julia/README.md b/translations/te/6-NLP/5-Hotel-Reviews-2/solution/Julia/README.md
new file mode 100644
index 000000000..3c5f80234
--- /dev/null
+++ b/translations/te/6-NLP/5-Hotel-Reviews-2/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/te/6-NLP/5-Hotel-Reviews-2/solution/R/README.md b/translations/te/6-NLP/5-Hotel-Reviews-2/solution/R/README.md
new file mode 100644
index 000000000..e8528a2c5
--- /dev/null
+++ b/translations/te/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/te/6-NLP/README.md b/translations/te/6-NLP/README.md
new file mode 100644
index 000000000..e020ac179
--- /dev/null
+++ b/translations/te/6-NLP/README.md
@@ -0,0 +1,40 @@
+
+# సహజ భాషా ప్రాసెసింగ్తో ప్రారంభించడం
+
+సహజ భాషా ప్రాసెసింగ్ (NLP) అనేది కంప్యూటర్ ప్రోగ్రామ్కు మానవ భాషను మాట్లాడినట్లు మరియు రాసినట్లు అర్థం చేసుకునే సామర్థ్యం -- దీనిని సహజ భాషగా పిలుస్తారు. ఇది కృత్రిమ మేధస్సు (AI) యొక్క ఒక భాగం. NLP 50 సంవత్సరాలకుపైగా ఉంది మరియు భాషాశాస్త్ర రంగంలో మూలాలు కలిగి ఉంది. మొత్తం రంగం యంత్రాలు మానవ భాషను అర్థం చేసుకోవడంలో మరియు ప్రాసెస్ చేయడంలో సహాయపడటానికి దృష్టి సారించింది. దీన్ని స్పెల్ చెక్ లేదా యంత్ర అనువాదం వంటి పనులను నిర్వహించడానికి ఉపయోగించవచ్చు. ఇది వైద్య పరిశోధన, సెర్చ్ ఇంజిన్లు మరియు వ్యాపార మేధస్సు వంటి అనేక రంగాలలో వాస్తవ ప్రపంచ అనువర్తనాలను కలిగి ఉంది.
+
+## ప్రాంతీయ విషయం: యూరోపియన్ భాషలు మరియు సాహిత్యం మరియు యూరోపియన్ రొమాంటిక్ హోటల్స్ ❤️
+
+ఈ పాఠ్యాంశంలో, మీరు యంత్ర అభ్యాసం యొక్క అత్యంత విస్తృత ఉపయోగాలలో ఒకటైన సహజ భాషా ప్రాసెసింగ్ (NLP) పరిచయం పొందుతారు. కంప్యూటేషనల్ లింగ్విస్టిక్స్ నుండి ఉద్భవించిన ఈ కృత్రిమ మేధస్సు విభాగం మానవులు మరియు యంత్రాల మధ్య వాయిస్ లేదా పాఠ్య కమ్యూనికేషన్ ద్వారా సేతువుగా ఉంటుంది.
+
+ఈ పాఠాలలో మనం NLP యొక్క ప్రాథమికాలను చిన్న సంభాషణ బాట్లను నిర్మించడం ద్వారా నేర్చుకుంటాము, యంత్ర అభ్యాసం ఈ సంభాషణలను మరింత 'స్మార్ట్' గా చేయడంలో ఎలా సహాయపడుతుందో తెలుసుకుంటాము. మీరు జేన్ ఆస్టెన్ యొక్క క్లాసిక్ నవల **ప్రైడ్ అండ్ ప్రెజుడిస్**, 1813లో ప్రచురించబడిన ఎలిజబెత్ బెన్నెట్ మరియు మిస్టర్ డార్సీతో చర్చిస్తూ కాలంలో వెనక్కి ప్రయాణిస్తారు. ఆ తర్వాత, మీరు యూరోపియన్ హోటల్ సమీక్షల ద్వారా భావ విశ్లేషణ గురించి మరింత తెలుసుకుంటారు.
+
+
+> ఫోటో ఎలైన్ హౌలిన్ ద్వారా అన్స్ప్లాష్లో
+
+## పాఠాలు
+
+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)
+
+---
+
+
+**అస్పష్టత**:
+ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం చేయించుకోవడం మంచిది. ఈ అనువాదం వలన కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదారుల బాధ్యత మేము తీసుకోము.
+
\ No newline at end of file
diff --git a/translations/te/6-NLP/data/README.md b/translations/te/6-NLP/data/README.md
new file mode 100644
index 000000000..3595932a8
--- /dev/null
+++ b/translations/te/6-NLP/data/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/te/7-TimeSeries/1-Introduction/README.md b/translations/te/7-TimeSeries/1-Introduction/README.md
new file mode 100644
index 000000000..f8f78ee08
--- /dev/null
+++ b/translations/te/7-TimeSeries/1-Introduction/README.md
@@ -0,0 +1,201 @@
+
+# టైమ్ సిరీస్ ఫోర్కాస్టింగ్ పరిచయం
+
+
+
+> స్కెచ్ నోట్ [Tomomi Imura](https://www.twitter.com/girlie_mac) ద్వారా
+
+ఈ పాఠంలో మరియు తదుపరి పాఠంలో, మీరు టైమ్ సిరీస్ ఫోర్కాస్టింగ్ గురించి కొంత తెలుసుకుంటారు, ఇది ఒక ఆసక్తికరమైన మరియు విలువైన భాగం, ఇది ఇతర విషయాల కంటే కొంత తక్కువగా తెలిసినది. టైమ్ సిరీస్ ఫోర్కాస్టింగ్ అనేది ఒక రకమైన 'క్రిస్టల్ బాల్': ధర వంటి ఒక వేరియబుల్ గత ప్రదర్శన ఆధారంగా, మీరు దాని భవిష్యత్తు సామర్థ్య విలువను అంచనా వేయవచ్చు.
+
+[](https://youtu.be/cBojo1hsHiI "టైమ్ సిరీస్ ఫోర్కాస్టింగ్ పరిచయం")
+
+> 🎥 టైమ్ సిరీస్ ఫోర్కాస్టింగ్ గురించి వీడియో కోసం పై చిత్రాన్ని క్లిక్ చేయండి
+
+## [పాఠం ముందు క్విజ్](https://ff-quizzes.netlify.app/en/ml/)
+
+ఇది వ్యాపారానికి ప్రత్యక్ష ప్రయోజనాన్ని కలిగించే ఉపయోగకరమైన మరియు ఆసక్తికరమైన రంగం, ధర నిర్ణయం, నిల్వ, మరియు సరఫరా గొలుసు సమస్యలకు ప్రత్యక్ష అన్వయంతో. భవిష్యత్తు ప్రదర్శనను మెరుగ్గా అంచనా వేయడానికి లోతైన అభ్యాస సాంకేతికతలు ఉపయోగించబడుతున్నప్పటికీ, టైమ్ సిరీస్ ఫోర్కాస్టింగ్ క్లాసిక్ ML సాంకేతికతల ద్వారా చాలా సమాచారం పొందిన రంగంగా కొనసాగుతుంది.
+
+> Penn State యొక్క ఉపయోగకరమైన టైమ్ సిరీస్ పాఠ్యక్రమం [ఇక్కడ](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) ఉంది, ఇది మౌనా లోఆ ఆబ్జర్వేటరీలో నెలవారీ C02 సాంద్రతను నమోదు చేస్తుంది:
+
+| 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) వివిధ రకాల ప్లాట్లు డేటాలో సీజనాలిటీని ఎలా చూపిస్తాయో.
+
+🎓 **అత్యంత భిన్నమైన విలువలు (Outliers)**
+
+అత్యంత భిన్నమైన విలువలు సాధారణ డేటా వ్యత్యాసం నుండి చాలా దూరంగా ఉంటాయి.
+
+🎓 **దీర్ఘకాలిక చక్రం**
+
+సీజనాలిటీకి సంబంధం లేకుండా, డేటా దీర్ఘకాలిక చక్రాన్ని చూపవచ్చు, ఉదాహరణకు ఆర్థిక మాంద్యం ఇది ఒక సంవత్సరం కంటే ఎక్కువకాలం ఉండవచ్చు.
+
+🎓 **స్థిరమైన వ్యత్యాసం**
+
+సమయంతో, కొన్ని డేటా స్థిరమైన మార్పులను చూపుతాయి, ఉదాహరణకు రోజూ మరియు రాత్రి విద్యుత్ వినియోగం.
+
+🎓 **అचानक మార్పులు**
+
+డేటా ఒక అకస్మాత్తు మార్పును చూపవచ్చు, దీనికి మరింత విశ్లేషణ అవసరం. ఉదాహరణకు COVID కారణంగా వ్యాపారాల అకస్మాత్తు మూసివేత డేటాలో మార్పులు కలిగించింది.
+
+✅ ఇది ఒక [నమూనా టైమ్ సిరీస్ ప్లాట్](https://www.kaggle.com/kashnitsky/topic-9-part-1-time-series-analysis-in-python), ఇది కొన్ని సంవత్సరాల పాటు రోజువారీ గేమ్ కరెన్సీ ఖర్చును చూపిస్తుంది. మీరు పై పేర్కొన్న లక్షణాలలో ఏవైనా ఈ డేటాలో గుర్తించగలరా?
+
+
+
+## వ్యాయామం - విద్యుత్ వినియోగ డేటాతో ప్రారంభం
+
+గత వినియోగం ఆధారంగా భవిష్యత్తు విద్యుత్ వినియోగాన్ని అంచనా వేయడానికి టైమ్ సిరీస్ నమూనాను సృష్టించడం ప్రారంభిద్దాం.
+
+> ఈ ఉదాహరణలో డేటా GEFCom2014 ఫోర్కాస్టింగ్ పోటీ నుండి తీసుకోబడింది. ఇది 2012 నుండి 2014 వరకు 3 సంవత్సరాల గంటల వారీ విద్యుత్ లోడ్ మరియు ఉష్ణోగ్రత విలువలను కలిగి ఉంది.
+>
+> Tao Hong, Pierre Pinson, Shu Fan, Hamidreza Zareipour, Alberto Troccoli మరియు Rob J. Hyndman, "Probabilistic energy forecasting: Global Energy Forecasting Competition 2014 and beyond", International Journal of Forecasting, vol.32, no.3, pp 896-913, July-September, 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()
+ ```
+
+ 
+
+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()
+ ```
+
+ 
+
+ ఒక అందమైన ప్లాట్! ఈ ప్లాట్లను పరిశీలించి పై పేర్కొన్న లక్షణాలలో ఏవైనా మీరు గుర్తించగలరా? డేటాను దృశ్యీకరించడం ద్వారా మనం ఏమి అర్థం చేసుకోవచ్చు?
+
+తదుపరి పాఠంలో, మీరు ARIMA నమూనాను సృష్టించి కొన్ని ఫోర్కాస్ట్లు తయారు చేస్తారు.
+
+---
+
+## 🚀సవాలు
+
+టైమ్ సిరీస్ ఫోర్కాస్టింగ్ నుండి లాభపడే అన్ని పరిశ్రమలు మరియు పరిశోధనా రంగాల జాబితాను తయారు చేయండి. ఈ సాంకేతికతలను కళల్లో, ఆర్థిక శాస్త్రంలో, పర్యావరణ శాస్త్రంలో, రిటైల్, పరిశ్రమ, ఆర్థిక రంగాలలో ఎలా ఉపయోగించవచ్చో మీరు ఆలోచించగలరా? మరెక్కడ?
+
+## [పాఠం తర్వాత క్విజ్](https://ff-quizzes.netlify.app/en/ml/)
+
+## సమీక్ష & స్వీయ అధ్యయనం
+
+ఇక్కడ మనం చర్చించకపోయినా, న్యూరల్ నెట్వర్క్స్ కొన్నిసార్లు టైమ్ సిరీస్ ఫోర్కాస్టింగ్ యొక్క క్లాసిక్ పద్ధతులను మెరుగుపరచడానికి ఉపయోగిస్తారు. వాటి గురించి [ఈ వ్యాసంలో](https://medium.com/microsoftazure/neural-networks-for-forecasting-financial-and-economic-time-series-6aca370ff412) మరింత చదవండి
+
+## అసైన్మెంట్
+
+[మరిన్ని టైమ్ సిరీస్లను దృశ్యీకరించండి](assignment.md)
+
+---
+
+
+**అస్పష్టత**:
+ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము.
+
\ No newline at end of file
diff --git a/translations/te/7-TimeSeries/1-Introduction/assignment.md b/translations/te/7-TimeSeries/1-Introduction/assignment.md
new file mode 100644
index 000000000..ee086d672
--- /dev/null
+++ b/translations/te/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/te/7-TimeSeries/1-Introduction/solution/Julia/README.md b/translations/te/7-TimeSeries/1-Introduction/solution/Julia/README.md
new file mode 100644
index 000000000..1cccb7d9e
--- /dev/null
+++ b/translations/te/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/te/7-TimeSeries/1-Introduction/solution/R/README.md b/translations/te/7-TimeSeries/1-Introduction/solution/R/README.md
new file mode 100644
index 000000000..54c4fc906
--- /dev/null
+++ b/translations/te/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/te/7-TimeSeries/1-Introduction/solution/notebook.ipynb b/translations/te/7-TimeSeries/1-Introduction/solution/notebook.ipynb
new file mode 100644
index 000000000..e5752b2e5
--- /dev/null
+++ b/translations/te/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": "
",
+ "image/svg+xml": "\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:36:52+00:00",
+ "source_file": "7-TimeSeries/1-Introduction/solution/notebook.ipynb",
+ "language_code": "te"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
\ No newline at end of file
diff --git a/translations/te/7-TimeSeries/1-Introduction/working/notebook.ipynb b/translations/te/7-TimeSeries/1-Introduction/working/notebook.ipynb
new file mode 100644
index 000000000..9f60bbf72
--- /dev/null
+++ b/translations/te/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:22+00:00",
+ "source_file": "7-TimeSeries/1-Introduction/working/notebook.ipynb",
+ "language_code": "te"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
\ No newline at end of file
diff --git a/translations/te/7-TimeSeries/2-ARIMA/README.md b/translations/te/7-TimeSeries/2-ARIMA/README.md
new file mode 100644
index 000000000..2b6b35007
--- /dev/null
+++ b/translations/te/7-TimeSeries/2-ARIMA/README.md
@@ -0,0 +1,409 @@
+
+# ARIMA తో టైమ్ సిరీస్ ఫోర్కాస్టింగ్
+
+మునుపటి పాఠంలో, మీరు టైమ్ సిరీస్ ఫోర్కాస్టింగ్ గురించి కొంత తెలుసుకున్నారు మరియు ఒక డేటాసెట్ను లోడ్ చేసుకున్నారు, ఇది ఒక కాల వ్యవధిలో విద్యుత్ లోడ్ మార్పులను చూపిస్తుంది.
+
+[](https://youtu.be/IUSk-YDau10 "Introduction to 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 తో పని చేయడానికి, మీరు తెలుసుకోవలసిన కొన్ని కాన్సెప్ట్లు ఉన్నాయి:
+
+- 🎓 **స్టేషనరీటీ**. గణాంక పరంగా, స్టేషనరీటీ అనగా డేటా పంపిణీ కాలంతో మారదు. నాన్-స్టేషనరీ డేటా అంటే ట్రెండ్ల కారణంగా మార్పులు చూపుతుంది, వాటిని విశ్లేషించడానికి మార్చాలి. ఉదాహరణకు, సీజనాలిటీ డేటాలో మార్పులు తీసుకురావచ్చు, దీన్ని 'సీజనల్-డిఫరెన్సింగ్' ప్రక్రియ ద్వారా తొలగించవచ్చు.
+
+- 🎓 **[డిఫరెన్సింగ్](https://wikipedia.org/wiki/Autoregressive_integrated_moving_average#Differencing)**. గణాంక పరంగా, డిఫరెన్సింగ్ అనగా నాన్-స్టేషనరీ డేటాను స్టేషనరీగా మార్చే ప్రక్రియ, దీని ద్వారా ట్రెండ్ తొలగించబడుతుంది. "డిఫరెన్సింగ్ టైమ్ సిరీస్ స్థాయిలో మార్పులను తొలగించి, ట్రెండ్ మరియు సీజనాలిటీని తొలగించి, టైమ్ సిరీస్ సగటును స్థిరపరుస్తుంది." [షిక్సియాంగ్ మరియు ఇతరుల పేపర్](https://arxiv.org/abs/1904.07632)
+
+## టైమ్ సిరీస్ సందర్భంలో ARIMA
+
+ARIMA భాగాలను విప్పి చూద్దాం, ఇది టైమ్ సిరీస్ మోడలింగ్ మరియు ఫోర్కాస్టింగ్ లో ఎలా సహాయపడుతుందో అర్థం చేసుకుందాం.
+
+- **AR - ఆటోరెగ్రెసివ్ కోసం**. ఆటోరెగ్రెసివ్ మోడల్స్, పేరుకి అనుగుణంగా, గత విలువలను విశ్లేషించి అంచనాలు వేస్తాయి. ఈ గత విలువలను 'లాగ్స్' అంటారు. ఉదాహరణకు, నెలవారీ పెన్సిల్ అమ్మకాలు డేటా. ప్రతి నెల అమ్మకాలు 'ఎవల్వింగ్ వేరియబుల్' గా పరిగణించబడతాయి. ఈ మోడల్ "ఎవల్వింగ్ వేరియబుల్ తన స్వంత లాగ్డ్ (మునుపటి) విలువలపై రిగ్రెషన్ చేయబడుతుంది." [వికీపీడియా](https://wikipedia.org/wiki/Autoregressive_integrated_moving_average)
+
+- **I - ఇంటిగ్రేటెడ్ కోసం**. ARMA మోడల్స్ తో పోల్చితే, ARIMA లో 'I' దాని *[ఇంటిగ్రేటెడ్](https://wikipedia.org/wiki/Order_of_integration)* అంశాన్ని సూచిస్తుంది. డిఫరెన్సింగ్ దశలు వర్తింపజేసి నాన్-స్టేషనరీతను తొలగిస్తారు.
+
+- **MA - మూవింగ్ అవరేజ్ కోసం**. ఈ మోడల్ యొక్క [మూవింగ్-అవరేజ్](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` Python లైబ్రరీని లోడ్ చేయడానికి నోట్బుక్ నడపండి; 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. సెప్టెంబర్ 1 నుండి అక్టోబర్ 31, 2014 వరకు రెండు నెలల కాలాన్ని ట్రైనింగ్ సెట్కు కేటాయించండి. టెస్ట్ సెట్లో నవంబర్ 1 నుండి డిసెంబర్ 31, 2014 వరకు రెండు నెలల కాలం ఉంటుంది:
+
+ ```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()
+ ```
+
+ 
+
+ కాబట్టి, ట్రైనింగ్ కోసం తక్కువ సమయ విండో ఉపయోగించడం సరిపోతుంది.
+
+ > గమనిక: 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()
+ ```
+
+ 
+
+ > ఒరిజినల్ డేటా
+
+ 
+
+ > స్కేల్ చేసిన డేటా
+
+1. ఇప్పుడు మీరు స్కేల్ చేసిన డేటాను కేలిబ్రేట్ చేసుకున్నందున, టెస్ట్ డేటాను కూడా స్కేల్ చేయండి:
+
+ ```python
+ test['load'] = scaler.transform(test)
+ test.head()
+ ```
+
+### ARIMA అమలు చేయండి
+
+ఇప్పుడు ARIMA అమలు చేయాల్సి ఉంది! మీరు ముందుగా ఇన్స్టాల్ చేసిన `statsmodels` లైబ్రరీని ఉపయోగిస్తారు.
+
+ఇప్పుడు మీరు కొన్ని దశలను అనుసరించాలి
+
+ 1. `SARIMAX()` ను పిలిచి మోడల్ పరామితులు p, d, q మరియు P, D, Q ను అందించి మోడల్ నిర్వచించండి.
+ 2. ట్రైనింగ్ డేటాకు మోడల్ను `fit()` ఫంక్షన్ పిలిచి సిద్ధం చేయండి.
+ 3. `forecast()` ఫంక్షన్ పిలిచి, ముందస్తు కాలం (horizon) ను పేర్కొని అంచనాలు చేయండి.
+
+> 🎓 ఈ అన్ని పరామితులు ఏమికో? 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` వాలిడేషన్ చేయవచ్చు. ప్రాక్టికల్గా, టైమ్ సిరీస్ మోడల్స్ ప్రతి కొత్త డేటా అందుకున్నప్పుడు మళ్లీ ట్రైన్ చేయబడతాయి. ఇది ప్రతి టైమ్ స్టెప్లో ఉత్తమ ఫోర్కాస్ట్ చేయడానికి సహాయపడుతుంది.
+
+టైమ్ సిరీస్ ప్రారంభంలో ఈ పద్ధతిని ఉపయోగించి, ట్రైన్ డేటా సెట్లో మోడల్ను ట్రైన్ చేయండి. తరువాత తదుపరి టైమ్ స్టెప్పై అంచనాలు చేయండి. అంచనా తెలిసిన విలువతో పోల్చబడుతుంది. ట్రైన్ సెట్లో ఆ విలువను చేర్చడం ద్వారా విస్తరించబడుతుంది మరియు ప్రక్రియ పునరావృతమవుతుంది.
+
+> గమనిక: ట్రైనింగ్ సమయాన్ని సమర్థవంతంగా ఉంచడానికి, ట్రైన్ సెట్లో కొత్త ఆబ్జర్వేషన్ చేర్చినప్పుడు, మొదటి ఆబ్జర్వేషన్ తొలగించాలి.
+
+ఈ ప్రక్రియ మోడల్ ప్రాక్టికల్లో ఎలా పనిచేస్తుందో మరింత బలమైన అంచనాను ఇస్తుంది. అయితే, ఇది చాలా మోడల్స్ సృష్టించాల్సిన కంప్యూటేషన్ ఖర్చుతో వస్తుంది. డేటా చిన్నదైతే లేదా మోడల్ సింపుల్ అయితే ఇది అనుకూలం, కానీ పెద్ద స్థాయిలో సమస్య కావచ్చు.
+
+వాక్-ఫార్వర్డ్ వాలిడేషన్ టైమ్ సిరీస్ మోడల్ అంచనా వేయడంలో గోల్డ్ స్టాండర్డ్ మరియు మీ ప్రాజెక్టులకు సిఫార్సు చేయబడుతుంది.
+
+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](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()
+ ```
+
+ 
+
+🏆 చాలా మంచి ప్లాట్, మంచి ఖచ్చితత్వం ఉన్న మోడల్ను చూపిస్తోంది. బాగుంది!
+
+---
+
+## 🚀సవాలు
+
+టైమ్ సిరీస్ మోడల్ యొక్క ఖచ్చితత్వాన్ని పరీక్షించే మార్గాలను లోతుగా పరిశీలించండి. ఈ పాఠంలో మేము 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/te/7-TimeSeries/2-ARIMA/assignment.md b/translations/te/7-TimeSeries/2-ARIMA/assignment.md
new file mode 100644
index 000000000..2c535acdb
--- /dev/null
+++ b/translations/te/7-TimeSeries/2-ARIMA/assignment.md
@@ -0,0 +1,26 @@
+
+# కొత్త 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/te/7-TimeSeries/2-ARIMA/solution/Julia/README.md b/translations/te/7-TimeSeries/2-ARIMA/solution/Julia/README.md
new file mode 100644
index 000000000..841812971
--- /dev/null
+++ b/translations/te/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/te/7-TimeSeries/2-ARIMA/solution/R/README.md b/translations/te/7-TimeSeries/2-ARIMA/solution/R/README.md
new file mode 100644
index 000000000..ad5147a42
--- /dev/null
+++ b/translations/te/7-TimeSeries/2-ARIMA/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/te/7-TimeSeries/2-ARIMA/solution/notebook.ipynb b/translations/te/7-TimeSeries/2-ARIMA/solution/notebook.ipynb
new file mode 100644
index 000000000..aa4ce000d
--- /dev/null
+++ b/translations/te/7-TimeSeries/2-ARIMA/solution/notebook.ipynb
@@ -0,0 +1,1101 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# ARIMA తో టైమ్ సిరీస్ ఫోర్కాస్టింగ్\n",
+ "\n",
+ "ఈ నోట్బుక్లో, మేము ఎలా చేయాలో చూపిస్తాము:\n",
+ "- ARIMA టైమ్ సిరీస్ ఫోర్కాస్టింగ్ మోడల్ శిక్షణ కోసం టైమ్ సిరీస్ డేటాను సిద్ధం చేయడం\n",
+ "- టైమ్ సిరీస్లో తదుపరి HORIZON దశలను ముందుగా (సమయం *t+1* నుండి *t+HORIZON* వరకు) ఫోర్కాస్ట్ చేయడానికి ఒక సాదారణ ARIMA మోడల్ను అమలు చేయడం\n",
+ "- మోడల్ను మూల్యాంకనం చేయడం\n",
+ "\n",
+ "ఈ ఉదాహరణలో డేటా GEFCom2014 ఫోర్కాస్టింగ్ పోటీ1 నుండి తీసుకోబడింది. ఇది 2012 నుండి 2014 వరకు 3 సంవత్సరాల గంటల వారీ విద్యుత్ లోడ్ మరియు ఉష్ణోగ్రత విలువలను కలిగి ఉంది. పని భవిష్యత్తు విద్యుత్ లోడ్ విలువలను ఫోర్కాస్ట్ చేయడం. ఈ ఉదాహరణలో, మేము చారిత్రక లోడ్ డేటాను మాత్రమే ఉపయోగించి ఒక టైమ్ దశ ముందుకు ఫోర్కాస్ట్ చేయడం ఎలా చేయాలో చూపిస్తాము.\n",
+ "\n",
+ "1టావో హాంగ్, పియర్ పిన్సన్, షు ఫాన్, హమీద్రెజా జరీపూర్, అల్బెర్టో ట్రోచోలీ మరియు రాబ్ జె. హైండ్మన్, \"ప్రొబబిలిస్టిక్ ఎనర్జీ ఫోర్కాస్టింగ్: గ్లోబల్ ఎనర్జీ ఫోర్కాస్టింగ్ పోటీ 2014 మరియు దాని తర్వాత\", ఇంటర్నేషనల్ జర్నల్ ఆఫ్ ఫోర్కాస్టింగ్, వాల్యూమ్ 32, నం.3, పేజీలు 896-913, జూలై-సెప్టెంబర్, 2016.\n"
+ ],
+ "metadata": {}
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## Install Dependencies\n",
+ "Get started by installing some of the required dependencies. These libraries with their corresponding versions are known to work for the solution:\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": [
+ "
"
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ }
+ }
+ ],
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "source": [],
+ "outputs": [],
+ "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": "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:38:14+00:00",
+ "source_file": "7-TimeSeries/2-ARIMA/solution/notebook.ipynb",
+ "language_code": "te"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
\ No newline at end of file
diff --git a/translations/te/7-TimeSeries/2-ARIMA/working/notebook.ipynb b/translations/te/7-TimeSeries/2-ARIMA/working/notebook.ipynb
new file mode 100644
index 000000000..174d738b9
--- /dev/null
+++ b/translations/te/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:28+00:00",
+ "source_file": "7-TimeSeries/2-ARIMA/working/notebook.ipynb",
+ "language_code": "te"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2,
+ "cells": [
+ {
+ "source": [
+ "# ARIMA తో టైమ్ సిరీస్ ఫోర్కాస్టింగ్\n",
+ "\n",
+ "ఈ నోట్బుక్లో, మేము ఎలా చేయాలో చూపిస్తాము:\n",
+ "- ARIMA టైమ్ సిరీస్ ఫోర్కాస్టింగ్ మోడల్ శిక్షణ కోసం టైమ్ సిరీస్ డేటాను సిద్ధం చేయడం\n",
+ "- టైమ్ సిరీస్లో తదుపరి HORIZON దశలను ముందుగా (సమయం *t+1* నుండి *t+HORIZON* వరకు) ఫోర్కాస్ట్ చేయడానికి ఒక సాదారణ ARIMA మోడల్ను అమలు చేయడం\n",
+ "- మోడల్ను మూల్యాంకనం చేయడం\n",
+ "\n",
+ "ఈ ఉదాహరణలో డేటా GEFCom2014 ఫోర్కాస్టింగ్ పోటీ1 నుండి తీసుకోబడింది. ఇది 2012 నుండి 2014 వరకు 3 సంవత్సరాల గంటల వారీ విద్యుత్ లోడ్ మరియు ఉష్ణోగ్రత విలువలను కలిగి ఉంది. పని భవిష్యత్తు విద్యుత్ లోడ్ విలువలను ఫోర్కాస్ట్ చేయడం. ఈ ఉదాహరణలో, మేము చారిత్రక లోడ్ డేటాను మాత్రమే ఉపయోగించి ఒక టైమ్ స్టెప్ ముందుకు ఎలా ఫోర్కాస్ట్ చేయాలో చూపిస్తాము.\n",
+ "\n",
+ "1Tao Hong, Pierre Pinson, Shu Fan, Hamidreza Zareipour, Alberto Troccoli and Rob J. Hyndman, \"Probabilistic energy forecasting: Global Energy Forecasting Competition 2014 and beyond\", International Journal of Forecasting, vol.32, no.3, pp 896-913, July-September, 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ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.\n\n"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/translations/te/7-TimeSeries/3-SVR/README.md b/translations/te/7-TimeSeries/3-SVR/README.md
new file mode 100644
index 000000000..bfb0b7614
--- /dev/null
+++ b/translations/te/7-TimeSeries/3-SVR/README.md
@@ -0,0 +1,402 @@
+
+# టైమ్ సిరీస్ ఫోర్కాస్టింగ్ విత్ సపోర్ట్ వెక్టర్ రిగ్రెసర్
+
+మునుపటి పాఠంలో, మీరు టైమ్ సిరీస్ అంచనాలు చేయడానికి ARIMA మోడల్ను ఎలా ఉపయోగించాలో నేర్చుకున్నారు. ఇప్పుడు మీరు సపోర్ట్ వెక్టర్ రిగ్రెసర్ మోడల్ను చూడబోతున్నారు, ఇది నిరంతర డేటాను అంచనా వేయడానికి ఉపయోగించే రిగ్రెసర్ మోడల్.
+
+## [ప్రీ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ml/)
+
+## పరిచయం
+
+ఈ పాఠంలో, మీరు రిగ్రెషన్ కోసం [**SVM**: **S**పోర్ట్ **V**ెక్టర్ **M**షీన్](https://en.wikipedia.org/wiki/Support-vector_machine) తో మోడల్స్ను నిర్మించే ఒక ప్రత్యేక విధానాన్ని కనుగొంటారు, లేదా **SVR: సపోర్ట్ వెక్టర్ రిగ్రెసర్**.
+
+### టైమ్ సిరీస్ సందర్భంలో SVR [^1]
+
+టైమ్ సిరీస్ అంచనాలో SVR ప్రాముఖ్యతను అర్థం చేసుకోవడానికి ముందు, మీరు తెలుసుకోవలసిన కొన్ని ముఖ్యమైన భావనలు ఇవి:
+
+- **రిగా్రెషన్:** నిర్దేశిత ఇన్పుట్ల నుండి నిరంతర విలువలను అంచనా వేయడానికి సూపర్వైజ్డ్ లెర్నింగ్ సాంకేతికత. ఆలోచన ఏమిటంటే ఫీచర్ స్పేస్లో గరిష్ట సంఖ్యలో డేటా పాయింట్లను కలిగిన వక్రరేఖ (లేదా రేఖ) ను సరిపోల్చడం. మరింత సమాచారం కోసం [ఇక్కడ క్లిక్ చేయండి](https://en.wikipedia.org/wiki/Regression_analysis).
+- **సపోర్ట్ వెక్టర్ మెషీన్ (SVM):** వర్గీకరణ, రిగ్రెషన్ మరియు అవుట్లయర్స్ గుర్తింపు కోసం ఉపయోగించే ఒక రకమైన సూపర్వైజ్డ్ మెషీన్ లెర్నింగ్ మోడల్. ఈ మోడల్ ఫీచర్ స్పేస్లో ఒక హైపర్ప్లేన్, వర్గీకరణ సందర్భంలో ఇది సరిహద్దుగా పనిచేస్తుంది, రిగ్రెషన్ సందర్భంలో ఇది ఉత్తమ సరిపోలే రేఖగా పనిచేస్తుంది. SVMలో, సాధారణంగా కర్నెల్ ఫంక్షన్ ఉపయోగించి డేటాసెట్ను ఎక్కువ కొలతల స్థలానికి మార్చుతారు, తద్వారా అవి సులభంగా వేరుచేయగలవు. SVMs గురించి మరింత సమాచారం కోసం [ఇక్కడ క్లిక్ చేయండి](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()
+ ```
+
+ 
+
+ ఇప్పుడు, మన SVR మోడల్ను నిర్మిద్దాం.
+
+### శిక్షణ మరియు పరీక్ష డేటాసెట్లను సృష్టించండి
+
+ఇప్పుడు మీ డేటా లోడ్ అయింది, కాబట్టి మీరు దాన్ని శిక్షణ మరియు పరీక్ష సెట్లుగా విడగొట్టవచ్చు. ఆపై మీరు SVR కోసం అవసరమైన టైమ్-స్టెప్ ఆధారిత డేటాసెట్ సృష్టించడానికి డేటాను పునఃరూపకల్పన చేస్తారు. మీరు మీ మోడల్ను శిక్షణ సెట్లో శిక్షణ ఇస్తారు. మోడల్ శిక్షణ పూర్తయిన తర్వాత, మీరు దాని ఖచ్చితత్వాన్ని శిక్షణ సెట్లో, పరీక్ష సెట్లో మరియు మొత్తం డేటాసెట్పై అంచనా వేస్తారు. మోడల్ భవిష్యత్తు కాలం నుండి సమాచారం పొందకుండా ఉండేందుకు పరీక్ష సెట్లో శిక్షణ సెట్లో కంటే తర్వాతి కాలం ఉండాలి [^2] (ఇది *ఓవర్ఫిట్టింగ్* అని పిలవబడే పరిస్థితి).
+
+1. సెప్టెంబర్ 1 నుండి అక్టోబర్ 31, 2014 వరకు రెండు నెలల కాలాన్ని శిక్షణ సెట్కు కేటాయించండి. పరీక్ష సెట్లో నవంబర్ 1 నుండి డిసెంబర్ 31, 2014 వరకు రెండు నెలల కాలం ఉంటుంది: [^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()
+ ```
+
+ 
+
+
+
+### శిక్షణ కోసం డేటాను సిద్ధం చేయండి
+
+ఇప్పుడు, మీరు డేటాను ఫిల్టరింగ్ మరియు స్కేలింగ్ చేయడం ద్వారా శిక్షణ కోసం సిద్ధం చేయాలి. మీరు అవసరమైన కాలాలు మరియు కాలమ్స్ మాత్రమే ఉండేలా డేటాసెట్ను ఫిల్టర్ చేయండి, మరియు డేటా 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 టెన్సర్గా మార్చడం:
+
+```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 కర్నెల్](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()
+```
+
+
+
+శిక్షణ డేటా కోసం 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()
+```
+
+
+
+పరీక్ష డేటా కోసం 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()
+```
+
+
+
+```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) ఉన్న డాక్యుమెంటేషన్ను చూడవచ్చు.
+- మోడల్ కోసం వేరే కర్నెల్ ఫంక్షన్లను ఉపయోగించి వాటి పనితీరును విశ్లేషించండి. సహాయక డాక్యుమెంటేషన్ [ఇక్కడ](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) SVMs గురించి సాధారణంగా, [SVRs](https://scikit-learn.org/stable/modules/svm.html#regression) మరియు వేరే అమలు వివరాలు, వాడే వేర్వేరు [కర్నెల్ ఫంక్షన్లు](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/te/7-TimeSeries/3-SVR/assignment.md b/translations/te/7-TimeSeries/3-SVR/assignment.md
new file mode 100644
index 000000000..33b60101a
--- /dev/null
+++ b/translations/te/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) ఆధారంగా ఉంది.
+
+---
+
+
+**అస్పష్టత**:
+ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము.
+
\ No newline at end of file
diff --git a/translations/te/7-TimeSeries/3-SVR/solution/notebook.ipynb b/translations/te/7-TimeSeries/3-SVR/solution/notebook.ipynb
new file mode 100644
index 000000000..e94c1824c
--- /dev/null
+++ b/translations/te/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",
+ "- SVM రిగ్రెసర్ మోడల్ శిక్షణ కోసం 2D టైమ్ సిరీస్ డేటాను సిద్ధం చేయాలి\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": [
+ "
"
+ ],
+ "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:33:32+00:00",
+ "source_file": "7-TimeSeries/3-SVR/working/notebook.ipynb",
+ "language_code": "te"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 1
+}
\ No newline at end of file
diff --git a/translations/te/7-TimeSeries/README.md b/translations/te/7-TimeSeries/README.md
new file mode 100644
index 000000000..1bf591259
--- /dev/null
+++ b/translations/te/7-TimeSeries/README.md
@@ -0,0 +1,39 @@
+
+# టైమ్ సిరీస్ ఫోర్కాస్టింగ్ పరిచయం
+
+టైమ్ సిరీస్ ఫోర్కాస్టింగ్ అంటే ఏమిటి? ఇది గత ధోరణులను విశ్లేషించి భవిష్యత్తు సంఘటనలను అంచనా వేయడం.
+
+## ప్రాంతీయ విషయం: ప్రపంచవ్యాప్తంగా విద్యుత్ వినియోగం ✨
+
+ఈ రెండు పాఠాలలో, మీరు టైమ్ సిరీస్ ఫోర్కాస్టింగ్కు పరిచయం అవుతారు, ఇది యంత్ర అభ్యాసంలో కొంతమేరకు తక్కువగా తెలిసిన ప్రాంతం అయినప్పటికీ, పరిశ్రమ మరియు వ్యాపార అనువర్తనాల కోసం చాలా విలువైనది, ఇతర రంగాలతో పాటు. న్యూరల్ నెట్వర్క్లను ఈ మోడల్స్ యొక్క ఉపయోగకరతను పెంచడానికి ఉపయోగించవచ్చు, కానీ మేము వాటిని క్లాసికల్ యంత్ర అభ్యాసం సందర్భంలో అధ్యయనం చేస్తాము, ఎందుకంటే మోడల్స్ గత ఆధారంగా భవిష్యత్తు పనితీరును అంచనా వేయడంలో సహాయపడతాయి.
+
+మా ప్రాంతీయ దృష్టి ప్రపంచంలో విద్యుత్ వినియోగం మీద ఉంది, ఇది గత లోడ్ నమూనాల ఆధారంగా భవిష్యత్తు విద్యుత్ వినియోగాన్ని అంచనా వేయడాన్ని నేర్చుకోవడానికి ఆసక్తికరమైన డేటాసెట్. ఈ రకమైన ఫోర్కాస్టింగ్ వ్యాపార వాతావరణంలో ఎంతగానో సహాయకరమవుతుందో మీరు చూడవచ్చు.
+
+
+
+ఫోటో [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. [టైమ్ సిరీస్ ఫోర్కాస్టింగ్ కోసం సపోర్ట్ వెక్టర్ రిగ్రెసర్ నిర్మాణం](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/te/8-Reinforcement/1-QLearning/README.md b/translations/te/8-Reinforcement/1-QLearning/README.md
new file mode 100644
index 000000000..41bbd13d4
--- /dev/null
+++ b/translations/te/8-Reinforcement/1-QLearning/README.md
@@ -0,0 +1,336 @@
+
+# రీన్ఫోర్స్మెంట్ లెర్నింగ్ మరియు క్యూ-లెర్నింగ్ పరిచయం
+
+
+> స్కెచ్నోట్ [టోమోమీ ఇమురా](https://www.twitter.com/girlie_mac) ద్వారా
+
+రీన్ఫోర్స్మెంట్ లెర్నింగ్ మూడు ముఖ్యమైన భావనలను కలిగి ఉంటుంది: ఏజెంట్, కొన్ని స్టేట్స్, మరియు ప్రతి స్టేట్కు చర్యల సమూహం. ఒక నిర్దిష్ట స్టేట్లో చర్యను అమలు చేయడం ద్వారా, ఏజెంట్కు రివార్డు ఇవ్వబడుతుంది. మళ్లీ కంప్యూటర్ గేమ్ సూపర్ మారియోని ఊహించండి. మీరు మారియో, మీరు ఒక గేమ్ లెవెల్లో ఉన్నారు, ఒక క్లిఫ్ ఎడ్జ్ పక్కన నిలబడి ఉన్నారు. మీ పై ఒక నాణెం ఉంది. మీరు మారియోగా, ఒక గేమ్ లెవెల్లో, ఒక నిర్దిష్ట స్థితిలో ఉన్నారు ... అది మీ స్టేట్. కుడి వైపు ఒక అడుగు కదలడం (చర్య) మీను ఎడ్జ్ మీదకు తీసుకెళ్తుంది, మరియు అది తక్కువ సంఖ్యా స్కోర్ ఇస్తుంది. అయితే, జంప్ బటన్ నొక్కడం ద్వారా మీరు ఒక పాయింట్ పొందగలరు మరియు మీరు బతుకుతారు. అది ఒక సానుకూల ఫలితం మరియు అది మీకు సానుకూల సంఖ్యా స్కోర్ ఇవ్వాలి.
+
+రీన్ఫోర్స్మెంట్ లెర్నింగ్ మరియు సిమ్యులేటర్ (గేమ్) ఉపయోగించి, మీరు గేమ్ ఆడటం నేర్చుకోవచ్చు, బతుకుతూ ఎక్కువ పాయింట్లు సాధించడానికి రివార్డును గరిష్టం చేయడానికి.
+
+[](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/Peter_and_the_Wolf)** ప్రపంచాన్ని అన్వేషిస్తాము, ఇది రష్యన్ కంపోజర్ [సెర్గే ప్రోకోఫీవ్](https://en.wikipedia.org/wiki/Sergei_Prokofiev) యొక్క సంగీత కథనంతో ప్రేరణ పొందింది. మనం **రీన్ఫోర్స్మెంట్ లెర్నింగ్** ఉపయోగించి, పీటర్ తన పరిసరాలను అన్వేషించి, రుచికరమైన ఆపిల్స్ సేకరించి, వోల్ఫ్ను కలవకుండా ఉండేందుకు సహాయపడతాము.
+
+**రీన్ఫోర్స్మెంట్ లెర్నింగ్** (RL) అనేది ఒక లెర్నింగ్ సాంకేతికత, ఇది మనకు ఒక **ఏజెంట్** యొక్క ఆప్టిమల్ ప్రవర్తనను కొన్ని **పరిసరాల్లో** అనేక ప్రయోగాలు నిర్వహించడం ద్వారా నేర్చుకోవడానికి అనుమతిస్తుంది. ఈ పరిసరంలో ఏజెంట్కు ఒక **లక్ష్యం** ఉండాలి, ఇది **రివార్డ్ ఫంక్షన్** ద్వారా నిర్వచించబడుతుంది.
+
+## పరిసరం
+
+సరళత కోసం, మనం పీటర్ ప్రపంచాన్ని `width` x `height` పరిమాణం గల చతురస్ర బోర్డు అని పరిగణిద్దాం, ఇలా:
+
+
+
+ఈ బోర్డు లో ప్రతి సెల్:
+
+* **భూమి**, పీటర్ మరియు ఇతర జీవులు నడవగలిగే స్థలం.
+* **నీరు**, ఇది మీరు స్పష్టంగా నడవలేరు.
+* **చెట్టు** లేదా **గడ్డి**, మీరు విశ్రాంతి తీసుకునే స్థలం.
+* **ఆపిల్**, ఇది పీటర్ తనకు ఆహారం కోసం కనుగొనడం ఇష్టపడే వస్తువు.
+* **వోల్ఫ్**, ఇది ప్రమాదకరం మరియు దూరంగా ఉండాలి.
+
+ఈ పరిసరంతో పని చేయడానికి ప్రత్యేకమైన పాథాన్ మాడ్యూల్ [`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 అడుగులు మాత్రమే.
+
+ మీరు రాండమ్ వాక్ సమయంలో పీటర్ కదలిక ఎలా ఉందో కూడా చూడవచ్చు:
+
+ 
+
+## రివార్డ్ ఫంక్షన్
+
+మన పాలసీని మరింత తెలివైనదిగా చేయడానికి, ఏ కదలికలు "మంచివి" అన్నది అర్థం చేసుకోవాలి. దీని కోసం, మన లక్ష్యాన్ని నిర్వచించాలి.
+
+లక్ష్యం **రివార్డ్ ఫంక్షన్** రూపంలో నిర్వచించవచ్చు, ఇది ప్రతి స్టేట్కు కొంత స్కోర్ విలువను ఇస్తుంది. సంఖ్య ఎక్కువైతే, రివార్డ్ ఫంక్షన్ మెరుగైనది. (కోడ్ బ్లాక్ 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
+```
+
+రివార్డ్ ఫంక్షన్ల గురించి ఆసక్తికరమైన విషయం ఏమిటంటే, చాలా సందర్భాల్లో, *మనం గేమ్ చివరలోనే పెద్ద రివార్డ్ పొందుతాము*. అంటే మన అల్గోరిథం "మంచి" అడుగులను గుర్తుంచుకోవాలి, అవి చివరలో సానుకూల రివార్డ్కు దారితీస్తాయి, మరియు వాటి ప్రాధాన్యతను పెంచాలి. అలాగే, చెడు ఫలితాలకు దారితీసే అన్ని కదలికలను నిరుత్సాహపరచాలి.
+
+## క్యూ-లెర్నింగ్
+
+ఇక్కడ మనం చర్చించబోయే అల్గోరిథం **క్యూ-లెర్నింగ్** అని పిలవబడుతుంది. ఈ అల్గోరిథంలో, పాలసీ ఒక ఫంక్షన్ (లేదా డేటా స్ట్రక్చర్) ద్వారా నిర్వచించబడుతుంది, దీనిని **Q-టేబుల్** అంటారు. ఇది ప్రతి స్టేట్లోని చర్యల "మంచితనాన్ని" నమోదు చేస్తుంది.
+
+దీన్ని Q-టేబుల్ అంటారు ఎందుకంటే దీన్ని సాధారణంగా ఒక పట్టిక లేదా బహుమాణిక శ్రేణిగా ప్రాతినిధ్యం వహించడం సౌకర్యవంతం. మన బోర్డు `width` x `height` పరిమాణం కలిగి ఉండగా, మనం Q-టేబుల్ను numpy శ్రేణిగా `width` x `height` x `len(actions)` ఆకారంలో ప్రాతినిధ్యం వహించవచ్చు: (కోడ్ బ్లాక్ 6)
+
+```python
+Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions)
+```
+
+గమనించండి, మనం Q-టేబుల్ యొక్క అన్ని విలువలను సమాన విలువతో ప్రారంభిస్తాము, మన సందర్భంలో - 0.25. ఇది "రాండమ్ వాక్" పాలసీకి సరిపోతుంది, ఎందుకంటే ప్రతి స్టేట్లో అన్ని కదలికలు సమానంగా మంచివి. మనం Q-టేబుల్ను `plot` ఫంక్షన్కు పంపించి బోర్డుపై పట్టికను విజువలైజ్ చేయవచ్చు: `m.plot(Q)`.
+
+
+
+ప్రతి సెల్ మధ్యలో ఒక "అర్రో" ఉంటుంది, ఇది ప్రాధాన్యత ఉన్న కదలిక దిశను సూచిస్తుంది. అన్ని దిశలు సమానంగా ఉన్నప్పుడు, ఒక బిందువు ప్రదర్శించబడుతుంది.
+
+ఇప్పుడు మనం సిమ్యులేషన్ నడిపించి, మన పరిసరాన్ని అన్వేషించి, Q-టేబుల్ విలువల మంచి పంపిణీని నేర్చుకోవాలి, ఇది మనకు ఆపిల్ దారిని త్వరగా కనుగొనడానికి సహాయపడుతుంది.
+
+## క్యూ-లెర్నింగ్ సారాంశం: బెల్మన్ సమీకరణం
+
+మనము కదలడం ప్రారంభించిన వెంటనే, ప్రతి చర్యకు తక్షణ రివార్డు ఉంటుంది, అంటే మనం సిద్దాంతంగా అత్యధిక తక్షణ రివార్డు ఆధారంగా తదుపరి చర్యను ఎంచుకోవచ్చు. అయితే, చాలా స్టేట్స్లో, ఆ కదలిక మన లక్ష్యం అయిన ఆపిల్ చేరుకోవడాన్ని సాధించదు, కాబట్టి ఏ దిశ మంచిదో తక్షణమే నిర్ణయించలేము.
+
+> గమనించండి, తక్షణ ఫలితం కాదు, కానీ చివరి ఫలితం ముఖ్యం, అది మనం సిమ్యులేషన్ చివర పొందుతాము.
+
+ఈ ఆలస్యం ఉన్న రివార్డును పరిగణలోకి తీసుకోవడానికి, మనం **[డైనమిక్ ప్రోగ్రామింగ్](https://en.wikipedia.org/wiki/Dynamic_programming)** సూత్రాలను ఉపయోగించాలి, ఇవి మన సమస్యను పునరావృతంగా ఆలోచించడానికి అనుమతిస్తాయి.
+
+మనము ఇప్పుడు స్టేట్ *s* లో ఉన్నాము, మరియు తదుపరి స్టేట్ *s'* కి కదలాలనుకుంటున్నాము. అలా చేస్తే, మనం తక్షణ రివార్డు *r(s,a)* పొందుతాము, ఇది రివార్డ్ ఫంక్షన్ ద్వారా నిర్వచించబడుతుంది, అదనంగా కొంత భవిష్యత్ రివార్డు కూడా ఉంటుంది. మన Q-టేబుల్ ప్రతి చర్య యొక్క "ఆకర్షణ"ను సరిగ్గా ప్రతిబింబిస్తుందని అనుకుంటే, స్టేట్ *s'* లో మనం చర్య *a'* ఎంచుకుంటాము, ఇది గరిష్ట విలువ *Q(s',a')* కలిగి ఉంటుంది. కాబట్టి, స్టేట్ *s* లో మనకు లభించే ఉత్తమ భవిష్యత్ రివార్డు `max`a'*Q(s',a')* (ఇక్కడ గరిష్టం అన్ని సాధ్యమైన చర్యలపై లెక్కించబడుతుంది).
+
+ఇది స్టేట్ *s* లో చర్య *a* కోసం Q-టేబుల్ విలువను లెక్కించే **బెల్మన్ సూత్రం**:
+
+
+
+ఇక్కడ γ అనేది **డిస్కౌంట్ ఫ్యాక్టర్**, ఇది మీరు ప్రస్తుత రివార్డును భవిష్యత్ రివార్డుపై ఎంత ప్రాధాన్యం ఇవ్వాలో నిర్ణయిస్తుంది.
+
+## లెర్నింగ్ అల్గోరిథం
+
+పై సమీకరణ ఆధారంగా, మనం ఇప్పుడు మన లెర్నింగ్ అల్గోరిథం కోసం సPseudo-కోడ్ రాయవచ్చు:
+
+* Q-టేబుల్ Qని అన్ని స్టేట్స్ మరియు చర్యల కోసం సమాన సంఖ్యలతో ప్రారంభించండి
+* లెర్నింగ్ రేట్ α ← 1 గా సెట్ చేయండి
+* అనేక సార్లు సిమ్యులేషన్ను పునరావృతం చేయండి
+ 1. యాదృచ్ఛిక స్థానం నుండి ప్రారంభించండి
+ 1. పునరావృతం చేయండి
+ 1. స్టేట్ *s* లో చర్య *a* ఎంచుకోండి
+ 2. చర్యను అమలు చేసి కొత్త స్టేట్ *s'* కి కదలండి
+ 3. గేమ్ ముగింపు పరిస్థితి లేదా మొత్తం రివార్డు చాలా తక్కువ అయితే సిమ్యులేషన్ నుండి బయటకు రండి
+ 4. కొత్త స్టేట్లో రివార్డు *r* లెక్కించండి
+ 5. బెల్మన్ సమీకరణ ప్రకారం Q-ఫంక్షన్ను నవీకరించండి: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))*
+ 6. *s* ← *s'*
+ 7. మొత్తం రివార్డు నవీకరించి α తగ్గించండి.
+
+## ఎక్స్ప్లోయిట్ vs ఎక్స్ప్లోర్
+
+పై అల్గోరిథంలో, మనం 2.1 దశలో చర్య ఎంచుకోవడం ఎలా చేయాలో స్పష్టంగా చెప్పలేదు. యాదృచ్ఛికంగా చర్య ఎంచుకుంటే, మనం యాదృచ్ఛికంగా పరిసరాన్ని **అన్వేషిస్తాము**, మరియు మనం తరచుగా చనిపోవచ్చు అలాగే సాధారణంగా వెళ్లని ప్రాంతాలను అన్వేషించవచ్చు. మరో దృష్టికోణం, మనం ఇప్పటికే తెలిసిన Q-టేబుల్ విలువలను **ఉపయోగించి**, స్టేట్ *s* లో అత్యుత్తమ చర్యను ఎంచుకోవచ్చు. ఇది, అయితే, ఇతర స్టేట్స్ను అన్వేషించకుండా చేస్తుంది, మరియు మనం ఆప్టిమల్ పరిష్కారాన్ని కనుగొనకపోవచ్చు.
+
+కాబట్టి, ఉత్తమ దృష్టికోణం అన్వేషణ మరియు వినియోగం మధ్య సమతుల్యత సాధించడం. ఇది Q-టేబుల్ విలువలకు అనుగుణంగా స్టేట్ *s* లో చర్యను ఎంచుకోవడం ద్వారా చేయవచ్చు. ప్రారంభంలో, Q-టేబుల్ విలువలు సమానంగా ఉన్నప్పుడు, ఇది యాదృచ్ఛిక ఎంపికకు సరిపోతుంది, కానీ మనం పరిసరాన్ని మరింత నేర్చుకున్నప్పుడు, మనం ఆప్టిమల్ మార్గాన్ని అనుసరించడానికి ఎక్కువ అవకాశం ఉంటుంది, మరియు ఏజెంట్ కొన్నిసార్లు అన్వేషించని మార్గాన్ని ఎంచుకునే అవకాశం ఉంటుంది.
+
+## పాథాన్ అమలు
+
+ఇప్పుడు మనం లెర్నింగ్ అల్గోరిథం అమలు చేయడానికి సిద్ధంగా ఉన్నాము. దానికి ముందు, మనకు Q-టేబుల్లోని ఏదైనా సంఖ్యలను సంబంధిత చర్యల కోసం ప్రాబబిలిటీల వెక్టర్గా మార్చే ఫంక్షన్ అవసరం.
+
+1. `probs()` అనే ఫంక్షన్ సృష్టించండి:
+
+ ```python
+ def probs(v,eps=1e-4):
+ v = v-v.min()+eps
+ v = v/v.sum()
+ return v
+ ```
+
+ ప్రారంభ సందర్భంలో వెక్టర్ యొక్క అన్ని భాగాలు సమానంగా ఉన్నప్పుడు 0తో భాగించకుండా ఉండేందుకు మేము కొంత `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
+```
+
+ఈ అల్గోరిథం అమలు చేసిన తర్వాత, Q-టేబుల్ విలువలు నవీకరించబడతాయి, ఇవి ప్రతి దశలో వివిధ చర్యల ఆకర్షణను నిర్వచిస్తాయి. మనం Q-టేబుల్ను విజువలైజ్ చేయడానికి ప్రతి సెల్లో ఒక వెక్టర్ డ్రా చేయవచ్చు, ఇది కదలిక యొక్క ఇష్టమైన దిశను సూచిస్తుంది. సరళత కోసం, మనం అర్రో హెడ్ స్థానంలో చిన్న వృత్తాన్ని డ్రా చేస్తాము.
+
+
+
+## పాలసీ తనిఖీ
+
+Q-టేబుల్ ప్రతి స్టేట్లోని చర్యల "ఆకర్షణ"ను సూచిస్తుండగా, మనం దీన్ని మన ప్రపంచంలో సమర్థవంతమైన నావిగేషన్ నిర్వచించడానికి సులభంగా ఉపయోగించవచ్చు. సులభమైన సందర్భంలో, మనం గరిష్ట Q-టేబుల్ విలువ కలిగిన చర్యను ఎంచుకోవచ్చు: (కోడ్ బ్లాక్ 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)
+
+---
+
+
+**అస్పష్టత**:
+ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.
+
\ No newline at end of file
diff --git a/translations/te/8-Reinforcement/1-QLearning/assignment.md b/translations/te/8-Reinforcement/1-QLearning/assignment.md
new file mode 100644
index 000000000..b6604eb00
--- /dev/null
+++ b/translations/te/8-Reinforcement/1-QLearning/assignment.md
@@ -0,0 +1,41 @@
+
+# మరింత వాస్తవిక ప్రపంచం
+
+మన పరిస్థితిలో, పీటర్ దాదాపు అలసిపోకుండా లేదా ఆకలితో బాధపడకుండా చుట్టూ తిరగగలిగాడు. మరింత వాస్తవిక ప్రపంచంలో, మనం సమయానికి కూర్చొని విశ్రాంతి తీసుకోవాలి, అలాగే తినుకోవాలి కూడా. మన ప్రపంచాన్ని మరింత వాస్తవికంగా మార్చుకుందాం, క్రింది నియమాలను అమలు చేయడం ద్వారా:
+
+1. ఒక చోట నుండి మరొక చోటకు కదలడం ద్వారా, పీటర్ **శక్తి** కోల్పోతాడు మరియు కొంత **దుర్బలత** పొందుతాడు.
+2. పీటర్ ఆపిల్స్ తినడం ద్వారా మరింత శక్తిని పొందవచ్చు.
+3. పీటర్ చెట్టు కింద లేదా గడ్డి మీద విశ్రాంతి తీసుకోవడం ద్వారా దుర్బలతను తొలగించుకోవచ్చు (అంటే చెట్టు లేదా గడ్డి ఉన్న బోర్డు స్థలంలో నడవడం - ఆకుపచ్చ మైదానం)
+4. పీటర్ నక్కను కనుగొని చంపాలి
+5. నక్కను చంపడానికి, పీటర్ కు నిర్దిష్ట స్థాయిల శక్తి మరియు దుర్బలత అవసరం, లేకపోతే అతను యుద్ధంలో ఓడిపోతాడు.
+## సూచనలు
+
+మీ పరిష్కారానికి ప్రారంభ బిందువుగా అసలు [notebook.ipynb](notebook.ipynb) నోట్బుక్ ఉపయోగించండి.
+
+పైన ఉన్న రివార్డ్ ఫంక్షన్ ను ఆట నియమాల ప్రకారం మార్చండి, గేమ్ గెలవడానికి ఉత్తమ వ్యూహాన్ని నేర్చుకోవడానికి రీన్ఫోర్స్మెంట్ లెర్నింగ్ అల్గోరిథమ్ ను నడపండి, మరియు గెలిచిన మరియు ఓడిపోయిన ఆటల సంఖ్య పరంగా రాండమ్ వాక్ తో మీ అల్గోరిథమ్ ఫలితాలను పోల్చండి.
+
+> **గమనిక**: మీ కొత్త ప్రపంచంలో, స్థితి మరింత సంక్లిష్టంగా ఉంటుంది, మరియు మానవ స్థానానికి అదనంగా దుర్బలత మరియు శక్తి స్థాయిలు కూడా ఉంటాయి. మీరు స్థితిని (Board,energy,fatigue) అనే టుపుల్ గా ప్రదర్శించవచ్చు, లేదా స్థితి కోసం ఒక క్లాస్ నిర్వచించవచ్చు (మీరు దీన్ని `Board` నుండి ఉత్పన్నం చేసుకోవచ్చు), లేదా అసలు `Board` క్లాస్ ను [rlboard.py](../../../../8-Reinforcement/1-QLearning/rlboard.py) లో మార్చవచ్చు.
+
+మీ పరిష్కారంలో, దయచేసి రాండమ్ వాక్ వ్యూహానికి సంబంధించిన కోడ్ ను ఉంచండి, మరియు చివరలో మీ అల్గోరిథమ్ ఫలితాలను రాండమ్ వాక్ తో పోల్చండి.
+
+> **గమనిక**: ఇది పనిచేయడానికి మీరు హైపర్పారామీటర్లను సర్దుబాటు చేయవలసి ఉండవచ్చు, ముఖ్యంగా ఎపోక్స్ సంఖ్య. ఎందుకంటే ఆటలో విజయం (నక్కతో పోరాటం) అరుదైన సంఘటన, మీరు చాలా ఎక్కువ శిక్షణ సమయం ఆశించవచ్చు.
+## రూబ్రిక్
+
+| ప్రమాణాలు | అద్భుతం | సరిపోతుంది | మెరుగుదల అవసరం |
+| -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
+| | కొత్త ప్రపంచ నియమాల నిర్వచనం, Q-లెర్నింగ్ అల్గోరిథమ్ మరియు కొన్ని వచన వివరణలతో కూడిన నోట్బుక్ అందించబడింది. Q-లెర్నింగ్ రాండమ్ వాక్ తో పోల్చితే ఫలితాలను గణనీయంగా మెరుగుపరుస్తుంది. | నోట్బుక్ అందించబడింది, Q-లెర్నింగ్ అమలు చేయబడింది మరియు రాండమ్ వాక్ తో పోల్చితే ఫలితాలు మెరుగుపడినవి, కానీ గణనీయంగా కాదు; లేదా నోట్బుక్ బాగా డాక్యుమెంట్ చేయబడలేదు మరియు కోడ్ బాగా నిర్మించబడలేదు | ప్రపంచ నియమాలను పునః నిర్వచించడానికి కొంత ప్రయత్నం జరిగింది, కానీ Q-లెర్నింగ్ అల్గోరిథమ్ పనిచేయడం లేదు, లేదా రివార్డ్ ఫంక్షన్ పూర్తిగా నిర్వచించబడలేదు |
+
+---
+
+
+**అస్పష్టత**:
+ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారులు కోసం మేము బాధ్యత వహించము.
+
\ No newline at end of file
diff --git a/translations/te/8-Reinforcement/1-QLearning/notebook.ipynb b/translations/te/8-Reinforcement/1-QLearning/notebook.ipynb
new file mode 100644
index 000000000..32972af23
--- /dev/null
+++ b/translations/te/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:25:08+00:00",
+ "source_file": "8-Reinforcement/1-QLearning/notebook.ipynb",
+ "language_code": "te"
+ }
+ },
+ "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",
+ "మన లెర్నింగ్ అల్గోరిథం కోసం ఒక సPseudo-కోడ్ రాయండి:\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",
+ "## అన్వేషణ vs. వినియోగం\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": [
+ "మొదటి సందర్భంలో, వెక్టర్ యొక్క అన్ని భాగాలు ఒకే విధంగా ఉన్నప్పుడు 0 తో భాగించకుండా ఉండేందుకు మేము అసలు వెక్టర్కు చిన్న మొత్తంలో `eps` ను జోడిస్తాము.\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",
+ "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",
+ "> **Task 1:** `walk` ఫంక్షన్ను మార్చి మార్గం గరిష్ట పొడవును ఒక నిర్దిష్ట దశల సంఖ్య (ఉదాహరణకు, 100)తో పరిమితం చేయండి, మరియు పై కోడ్ ఈ విలువను సమయానుసారం తిరిగి ఇవ్వడం చూడండి.\n",
+ "\n",
+ "> **Task 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",
+ "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/te/8-Reinforcement/1-QLearning/solution/Julia/README.md b/translations/te/8-Reinforcement/1-QLearning/solution/Julia/README.md
new file mode 100644
index 000000000..11056cc15
--- /dev/null
+++ b/translations/te/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/te/8-Reinforcement/1-QLearning/solution/R/README.md b/translations/te/8-Reinforcement/1-QLearning/solution/R/README.md
new file mode 100644
index 000000000..5610f3a39
--- /dev/null
+++ b/translations/te/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/te/8-Reinforcement/1-QLearning/solution/assignment-solution.ipynb b/translations/te/8-Reinforcement/1-QLearning/solution/assignment-solution.ipynb
new file mode 100644
index 000000000..279880e2d
--- /dev/null
+++ b/translations/te/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:28:48+00:00",
+ "source_file": "8-Reinforcement/1-QLearning/solution/assignment-solution.ipynb",
+ "language_code": "te"
+ }
+ },
+ "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",
+ "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",
+ "image/png": "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\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",
+ "image/png": "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\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/te/8-Reinforcement/1-QLearning/solution/notebook.ipynb b/translations/te/8-Reinforcement/1-QLearning/solution/notebook.ipynb
new file mode 100644
index 000000000..94b586731
--- /dev/null
+++ b/translations/te/8-Reinforcement/1-QLearning/solution/notebook.ipynb
@@ -0,0 +1,580 @@
+{
+ "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:30:44+00:00",
+ "source_file": "8-Reinforcement/1-QLearning/solution/notebook.ipynb",
+ "language_code": "te"
+ }
+ },
+ "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",
+ "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",
+ "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",
+ "మన లెర్నింగ్ అల్గోరిథం కోసం ఒక సPseudo-కోడ్ రాయండి:\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",
+ "## అన్వేషణ vs. వినియోగం\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": [
+ "మొదటి సందర్భంలో, వెక్టర్ యొక్క అన్ని భాగాలు సమానంగా ఉన్నప్పుడు 0 తో భాగించకుండా ఉండేందుకు మేము అసలు వెక్టర్కు చిన్న మొత్తంలో `eps` ను జోడిస్తాము.\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",
+ "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+/TJs2bZg9e3a4ZVRbqropYr0rok2bNgwaNIi33nqLjh070r17d7766isOHDhgdLQ6QwjBsGHDaNSoEW+88YbRcY7J4XAwfvx41qxZw9q1a2OyeNcmVbhrQAhBWloajz/+ONu2baNr165HtQqllAQCgZOaOXnkrcuEENjtdm644Qa2b9/O6NGjDV1XItYJIUhOTmbEiBFs2rSJzz77LGbf+scqs9lM+/btyc/P/81F9lhhs9l4/PHH+fDDD/n888+NjmMoVbhrSAiByWTCYrEcs0Xctm1bevTocdxjXHHFFcfsAz3yuGoiwsmbOXMmjz/+uNEx6pwBAwbQt29fHn/88d+sZBlLHnvsMbZu3cq4cePYvHmz0XEMoQp3FAkhaN269QlvSzZo0KDfdK8oihEuuOACRo8ezU033RSTI02g8lrSLbfcwrhx43jxxRcpKCgwOlKtU4U7yk6mtaxa1EosOeOMM7jpppv429/+ZnSUaiUkJNC1a1fmzp3LXXfdxc6dO42OVKtU4VYU5ShCCJo2bUpcXBy7d+82Os5xWSwW5s2bx6uvvsrGjRuNjlNrVOFWFOU3WrVqxXXXXceLL74YE2t3H09ycjITJkxg8eLF7Nixw+g4tUINVVAU5Zg6dOjA1KlTSUpKMjrKCTVt2pTJkycTHx9vdJRaoQq3oijVysjIMDrCSUtJSTE6Qq05YVeJEKKFEGKFEOInIcRWIcSdoe3pQogvhBA7Q5/TQtuFEOJFIcQuIcRmIcTZ0X4SiqIoDcnJ9HEHgXuklKcDfYHbhBCnA/cDy6WU7YHloccAlwLtQx83Ay9FPLWiKEoDdsLCLaXMl1J+H/q6AvgZaAYMB14P7fY6cHno6+HAG7LSt0CqEKJJxJMriqI0UL9rVIkQohXQHfgOyJZSVq01WgBkh75uBuw/4q/lhrb977FuFkJsEEJsCAQ8vzN23XEyix7put7g115QFOXknXThFkIkAu8Dd0kpj7oLrqysOr+r8kgp50kpe0ope1qt9fdKcFxc3FGzIs1mM/Hx8UdNuMnIyFA3R1UU5aSdVLUQQlipLNoLpZT/Dm0+WNUFEvp8KLQ9D2hxxF9vHtrWIFksFrKzs0lOTiYxMZG//vWvbNq0ibPOOguHw0FGRgYZGRlq5qSi1FFSStxuN36/H7/fj9vtjvo76BMOBxSVFWUB8LOU8tkjvvUh8BdgZujzB0dsnyCEWAT0AcqO6FJpcIQQPPjgg0yZMiX82GQysWHDhvA+sdja3rhxIzk5Oezfv581a9bQp08ftUKhohyDruu0atWK1NRUhBA89NBD5Ofnh9fpj4aT+UnsD1wPbBFCVK0S/jcqC/a7QogbgV+AkaHvfQJcBuwC3MCYiCauY6pbhySa/6iRcO2119KtWzf279/Pddddx/fff09aWprRsRQl5ixatIh7772X9PR0hBAUFRWxaNEirr322qid84SFW0q5GqjuffygY+wvgdt+f5TYvzhXFy4gRiLjs88+y7Rp08jIyODrr7/m0ksv5W9/+xtz5syJQMLYfx0jme/aa68lMzMz4s851l9DaDgZTzvtNL799ltGjhyJEIKnnnqKvn37RvX5i1h4cVNS0mS3btcZHaNaZrOfJk2cpKenGx2lWuXl5VgsFhwOR0SOlZCQgKZpBAIBEhISKC4urvHzP3ToEBkZGTH9biM39wAWS1OjYxyHRsB0AGuW1egg1dLdOonBRJKTk42OUq3i4mISExOx2WwRO17Vz0ckflYA/vnPf1JSUnLMRnNMFO6kpGzpdB40Oka1UlJ28fTTKxg7dqzRUaq1ZMkSsrOz6dOnDz6fD6vV+t/F8E06Bb5fKAkeROoSCzZA4Am4cZiTaZt8BkI3Y7NZ0TQNIQTBYDDcHx8MBrHZbOHPVccPBoOYzeaj9q3qGgoGg1itlcWlqqvoscce47bbbovZLhcpJSNH3sF7780yOkq17PZiuky9mI1/i92V8BqvaczcwrkMHz7c6CjV+sc//sGgQYNo166d0VGqlZ2dzcGDB49ZuNXVpnpG0zSKioqIS7KxrmQpWXGnETR52e38kXz/L1R4nVR4y2ga3xaP30OWtTk7435mb9EuJvSZgt8XQAiB0+kM30LN6XSSmZmJ01n5rqOsrIz09PRwy7y0tBSr1YrNZsNms2GxWHA6nTFboBUlGtatW4cQgl69ekX9XKpwG8TlcjF58uSI9RtX2VX6I++XPIcoExT4fsEq4wgGJQmkkWlvRipplLpdePQA6fbmoFv5z+5/E29JYvqX93J1lxtp6mhBUlISUkqCwSAZGRm4XC7sdjuFhYUkJiZSXl5OfHw8Pp+P1NRUpJRomobb7QYq7w9YVFREamqqGo2iNAg5OTmqcNd3uq7z888/R/y4jRynsWj5D6THpdO1UVfaZHViz4F9vL76bdp1SKFRQiI7N+djbhak/+nnYQ7GEW9JpbiiELsjiVfWvcQfOl/OGWlnYbFYsVqtHD58mKysLFwuF+kZGRQXFZGSkkJZWRkJCQmUl5djtVbum5CQgMlkwuVykZaWFpNDHRWlrlOFu56Jx8G8P7zCvZ9P5uOf/sNnOcuw6zay0xrjP2zHV5FJ+6zTOFC6F61U55tN39C8Szq7Cg7QLsNPqbsMr0+j7fmdSLVUzvBMTEzE7/fjq8hnx7YPqSivID2rKZltBqFpGnFxceF+bL/fD1SOTfd6vb+ZJaooSs2p5lA9YzKZ6JDejgcvnILJIthdtJsSTwmJcQm4/W7cARctslrQObMbyZ52tEo+nYodEuHXMePj10MH+GzLch5f+hhQecFO13WQGnk/fcZXi+5i4ycPsvHzZxCh69q6rh+13orJZDqpNVoURTk1qnDXM1arlYA/QL/m/Xh/1PtkJmZgMpsp9ZZhtVnwaX5+yt3K4YrDbP91G6s2fMNpji4My76eH5dvp1enFjgqzPzrP/8iEAwAUFFeyqFf1rPy41mUuu30unIBg29YSECrHFXi9/vDI1iqLlLquh7x1ramaVRUVDBp0iR27twZ7k9XlIZGFe56pqysjKysLIQUdG58OmvuWE1qQir5FQUUlB/kQFk++0ty+WbHN6zatorMtEZoUuPgoUKGnX0VCT+3J8VuISslnt37dyCl5OvFf2f+zBuIS23PoOv+jy69hxIkAYfDgdfrJT09HYfDER6NUlpais1mo7CwEE3TIvbctm7dSufOncMTgmJ5uJmiRJMq3PVM1cVCIQRer5dsR2NeueYVxp8/Hr8eYF/RPrblb8Ov+2nfrAOZ6ZkcKj1EibOYvMMHcHvdJBW3Ij5Z8OgHd/Hvj+az4+fNpDY+nT/e+AJdel+G1+vF4XDg9/uxWq3hBXYA4uPjcTgcaJpGUlJSxC5OaprG0qVLeemllygvL2fWrFmcc845rFy5MiLHV5S6RF2crGeqLggGAoHwJJyOjTrQYeBEejfrxUHXQZ547wnyCg+w5+Bu0uMysGGjqLAQnzuA1+lh3OXjuP2cCZQ5cnntuSdJO6Rxz/SXSWvUArfbTXx8PF6vF7vdHp6UU9XPXVXAqwq63W6PyPMSQtC6dWv27dvH2rVrad++PQcOHKBZs98s9a4o9Z4q3PWMrutYLBb8fv9RFwmlhH5t+hEXH8eQ04dgtVlxVjixmQV5e3bQKCUDnwRHeiPibHGkpaZRXl7C9tabGHjDH2jVvhtCCDRNw2Qy4Sw8TMBiJqDpZDRthslkChdvILxvpC5QmkwmunXrxrBhwygsLOTTTz9lyJAhtG3bNiLHV5S6RBXueiYuLi48rtrn8wH/XYnQbrfj9/tJikuicMNa4gIeKg4dJOnAL5SXlpB6ZneSu/XFuW8Xez0e9hccYsuqNfQ9+1wCeb9yYOc24uLjKU9M45dVy/k150cSGzXB0aYDiRmZNDvjDLLbdwxPg09JSYnoOO7OnTuzc+dOXnjhBZ566ineeuutiB1bUeoSVbjrGZfLRUZGBk6nk7i4OHRdx+fzIYTA4/EQ56lg78K5JKRl4I93kNKoMcnnnI8UAgF4cn9BlhVj14Mk7N3BOT43cvlSDuTtQ5gslAT8xGc1o8OgIbQddAlS09m+ZiUFOT/y6w8bqfB4ufxvD5GWmUlZ2Fk8WgAAIABJREFUWVlU7u5z55138uqrr0b0mEr9smbNGqxWK7179zY6SlSowl3PJCcnV65VEheH2+3GZDJhtVqRUpJgNbPp9rGktGlP2nkXYzJbQGr4836tXLhXSsxmCyntOqFLSUKLtrT709Vomo7PXY4lPhFN6gQCQTxlxegSNF3SvMtZNJGSsqIiPnzhWRaMv4UJr/2T1NTUqK0EWNWqr1rISlGg8iL2gAED6NevH4FAgEmTJvHVV1/Vuxm89evZKJSXl4fXf3Y4HJXjugMBvCVFfHfT5TiaNqPJpSPQK8rQy4qRFWUIrxPhcYLXhXSVoxUfJlh8GN1VQbCsCK2iBOH34y8tJlBSQrCinKDLRdDtIuB24XdW4HNWds8Mv+senAX5zP7raPbv3h3R4YBH+vTTTxk2bFhUjq3UXTt37iQrK4trrrmGBx98kKysLHbt2mV0rIhThbueiYuL+3/2zjs+qir9/+9zpyaTmRRClw6KgFJl7QUUddfG7irY145tXQUEf2tdtwgK2MWGuigKVlx1LevqV3HXgqAUhSU0qSGkTDJzp9xyfn/MzDVR0AAJMwnn/XrNa+6ce+fcZ24yn3nuc55zHqLRKEIIDMPAsixcLhcV/5hHSZdedD5xNMb2LRDXEXEdLa4j4jFEIo4WjyFiUUQstY9YBKlHsPQ6zJiOqUcwYxHsWFq0IxHMSIRENEIyGiERjWLE4hw+9hzK165m+Qf/brbp7pkfJIWiPhdffDGHHXYYTz/9NOvWrePUU0/lrbfeyrZZTY4S7lZGfn4+NTU1AMRisVSWRyJG3f+WUNR3AOb2rRDXU8KdiKIldFxJHVdCR0vGEAkdkdAhFkXGdWQ8itR1ZCyKFdMx9ShmNIoRrcOIRkjqEcxolGQkSjJaR0KvQwO6HzSQz+bPJ1xRkd0Lotgn+OKLLxgzZgznnnsu99xzDwcffDCff/45kydP5ve//322zWtylHC3MsLhMO3bt0dKSUFBAW63my0fvgOJJLZlYMWiyFhKmFMedxRXQsediKLFo4hEWqzjMaSuY0d17FgUK1aHrafE24h9HyYxohESeoREtI5kNEI8EiUWqaVD797UVVURqa5uls8ZCoW46qqrmDFjRrP0r8htTNOkurqaK6+8koEDB/L4449z9913c+mll7Jo0SKEEASDQWeN7NaGGpxsZRQWFlJeXk4wGCQajeJyucj3eajzurCTcWwTpKaBBlIToAk0l4YQIG0QtgRbIm2JbVnYdmoA0rJtLBtMS2JISdKWmJbEtG0MGwzbxki/Tto2pi2wTQOaaaEpTdMIhULU1tY2S/+K3GT58uVs3LiRLVu28Pzzz3PHHXc4a9pnBLpLly5ceumlDdpaG0q4WxmxWIxgMAjgzFqMx+PYiXjKc9bApbmwNbBdAlvTsDWBhsCWacG2bSxbYlvSEW3TlimBtlLbppUS7KRlp8VaYlhg2DIt4jaWikErmojKykruvfde3G43mqax33778c477+z0+NYq2BmUcGeJ6667jmnTpjV5vy6Xy6lOkxmYdLs81K36lrxgISIvD9OlIVwpr1toAoQLAdikRNe0wbItDEumHrbEkDaGCUnLwpQpwU5asG39WvLbdcDQXBgWKU/chqRpNfvg4ZAhQ1iwYAGLFi1iyJAhzXouxd6l/rLAN9xwA5s2beKqq67igAMOoFOn3Cvm/N1337F06VJuvPHGvXI+JdxZYvHixQwaNKjJ+83kTQshnLW0faVtweOl9tuliF59kD4fUtOQLoEUkmS0DuHLB48HyzQxkiaJuE7NiuUkTZO4KUnYkrhpEbdsEhYE+wzA8nrx5OcTj+qYQmBYkoSVCpls/m494YoKRDNWdC8pKUFKSVVVVbOdQ7F77InHW15eztatW7nwwgsBeOCBBxg0aJBzJ5mL6LpOOBymY8eOe+V8SrhbGZllXevq6ggEApimCQcPp81hIyj/50tYsShF3Xth5edjaQKXkFjlmxBuH3i9JOvCJLZvI2ml4tgJy8a0JElTYlgWpikxLJtNS74gYYK7tD0Jw4RAAXj9JKWgZnsV61et4tiLL6NkL/0jK3KLXV2jxrIs5s6di23bfPXVV0SjURYvXtzqQx67ixLuVkZ+fj7hcBiXy0U8HgdSXngskcS0JQk9Sl35ZvLbtiNWU4VL2qn0wGQCm9RApC3Tgm2DYUmS6UFH05aYtsSS3w9YRjdvImFJYpaNr01bookkleUV2Db0POhg8goKmvXznnrqqcydO5fDDz+c/Pz8Zj2XonmYM2cOH330EYMGpRYyu+qqq+jZs2e2zcpplHC3MpLJJAUFBcRiMbxeL5ZlYVkWeZ07Y7o8YBqIujqk14usrMAlbYTQUjPeAUumBiaNTKzaliTTGSOGDYa005klpGLhUmKRGsRMxOPEIjFsIfAVhIgnEti23azTjYcNG8bkyZNJJpNKuFsQyWSSTZs2ceaZZ3LBBRdw7bXX0q9fP+VhNxIl3K2QzG1q/dvVnuddxYa3/4G+aR2WHsdyhxGGhUtKhABE6ngLmU4BpEG2SOo5lS1i2GCZ33vhScvGRhCvjRJLJDBNm6GjT+Loc8/J0hVQ5DoTJkxg48aNfPrpp2ia1urWEmlulHC3MrxeL7FYDE3TUvFtvi/eqxW1xfxuLVJaWBEdzbJxCYlAQmYwE7CldIQ743kn0qKdtFMDlYZtY8iUoFs2mIBFKoTS94ijcaGR78/bK1/I3/zmN8ybN4/LL7+82c+laBruv//+bJvQolE/c62MeDxOKBQCUuuWuN3uVF62ZdH9gitJWIK4aROLJ4kZNjEz/TAs4qadyhwx0s+WJGFJ4pZN0rRJpJ9NU5JMx79NO5UymDRM4vE4Lr8PzefhpMuvoLa2ttkWmarPuHHjnEkYCsW+gPK4WxnBYJDt27fj9/uJRCIIIfB4PLhcLnr84gg+yy8gWRdGE+DWBJotEEJmVnXFkimP2yblcVs2mOmZkqm8bkjakLQtEhYYVjqkYkmk28PhZ45l5eKv6DZgAIFAALdb/YspFE3Nz3rcQoguQogPhBDfCCGWCyGuS7ffLoTYJIT4Kv34Zb333CSEKBNCrBRCnNicH0DRkEgkQmFhIVJK/H4/Ho8Hy7KwbRvdMBhx31NOPrZu2eimTcyw0Y30tmURM616HrhN3LBImlZq0k06RTBpZqa3WyRsMC2bvocfyZcffMA1jz6G1+slEok4pcyam2HDhrFo0aK9ci6FIts0JlRiAuOllP2AQ4GrhRD90vtmSCkHpR9vAaT3jQX6AycBDwshmm8WhqIBXq+XeDzu1HzMZHUIIfB6vfjatafDESPSgpwKk+imRcw0iaWFOhMeiZvfT7pJPdJhEyvlYSes1LGGbeELFRKLJ/nFL39Jh27dsCwLj8ezV7IEhBDcfPPN3HPPPc1+LoUiF/hZ4ZZSbpFSLkpv1wHfAj9VWvt04AUpZUJKuRYoA1pn/aAcxO/3U1dXhxCCZDKJbdu4XK7UYlP5+biLSug0/HASpiRmfO9Zx0yZejZsJ/adsKy0WJN+fC/WCVumQyU2tnDTf8TxxJJJDj/tDIKhEJZlEQgE9mp6l8pMUGSLvZ3GuEv/6UKI7sBg4LN00zVCiCVCiFlCiOJ0W2dgQ723beSnhV7RhNTW1tK2bVts204JtduNYRgYhkF1dTWB/Hz6j72Q/Y4bRcxOedhRwyKatNANKxU2SYdKomkBjxsWcdMkYVgkMgOXZsrztlweDjjyGKq2VzLk+BPoPGAANTU1eDwetm/fvlcGJwG6du3Kk08+uVfOpVD8kF2dKbqnNFq4hRAFwMvAH6SUtcAjQC9gELAF2KUVk4QQlwshFgohFhpGbFfeqvgJQqEQVVVVaJqGrusYhoHH48Hj8VBUVISu67g8Hrqe8EtMT14qrm1KYpZEN1Nx75gp04/vs07ipiRuSWKZGLctwe+nXa/eSLcLvTZM5759CRUWUlRUhGEYlJSUNFvNyR+iaZqzGqJC0dpp1JC/EMJDSrSfk1K+AiClLK+3/3HgjfTLTUCXem/fL93WACnlY8BjAMFge5lI7I75ih+i6zqhdKgiU+U9k8+dTCbx+/1YlsXw0WcSq6rkjdtvpuFd3vf53Knp7zhT3E2ZngZv20jhoiBUDF4fW9au4/K776b/UUcRi8UQQuB2u6mrqyMUCu018VYo9hUak1UigCeBb6WU0+u11189aDSwLL39OjBWCOETQvQA+gCfN53JLRvDMIhEIliWRTQaJZlMNmn/eXl51NbWIqUkHo9jmqYzMy0QCBCPx5FSUltbyzEXX8Gom2/HdHlS3nQ6nztm2iSFi1i9trhlk5QacdMiYUoSCPRYnK3rvuP82+6gzy9+kVqJ0OfD7/djmuZej3ErFPsKjfG4jwDOB5YKIb5Kt/0/4GwhxCBSS1ysA64AkFIuF0LMA74hlZFytZRy7wQ6WwBPP/0006dPZ8OGDRx55JGcdtpp3HnnnU3Wv8vlwu1243a7nbhbZrv+Prfbjdfn47Bzf0fvoYfy3iMPUrs9VR9SAoedcy4fP/csUoJtS9x5+XQ56CC+/e9/sSVIBCUdO3Du//t/lHTpgtvjcfrNnNPtdivhVrR6lixZwrJlyygvL2fBggUMGTKk2dfN+VnhllIuAHb07dtp6WQp5V+Av+yBXa2SiooKtmzZwnPPPccll1zCSy+9xOzZs1mzZk2TrYamaRqlpaU73V9YWAhAIBAAoF27drRr147+Rx/9o2NHXXTpbtvh8Xh2+70KRUvi6quvpnfv3mzYsIErr7ySF198kb59+zbrOVX+1F7E7/eTl5dHTU0N999/P7quY9t2Ti8Qr1Aods5TTz3F7373OyZMmMCwYcN49tlnufvuu5t94lmOzEeW+Hy5W8XE660lHo83SaUVn8/HmDFjmD9/PqNGjeKCCy7A5XLtcd+6rhOJRHK6GoxhGNTU1Oz11Kldw8rp/0WfrwaX4cJXlbsZNN6IF13Xc/p/MR6PU1tbu8c2Hn/88YwbN44TTjiB2267jalTp3LOOedQU1Ozxzb+1PdE5MKXqKSkRE6YMCHbZuyUaDRKRUUF3bt3z7YpO2XLli34fD5KSkqybcpOWblyJT179szpMMrXX3/NwIEDs23GTjEMgwUL1lBdfUC2Tdkpfn8Vgwcn9loZr91h7dq1tGvXzgkZ5iL33HMPVVVVOx4kyhTlzOajXbt2MpdZtWqVfOyxx7Jtxk/y6quvyv/85z/ZNuMnufPOO2VVVVW2zdgptm3La665Jttm/CSVlZVy6NC/yNSSYLn56NBhgXzttdeyfal+kpkzZ8pVq1Zl24yfJK2LO9TMVhnjvuOOO9iwYcPPH6hQKBQtkFYp3GvWrHHqLSoUCkVro1UKt0KhUOxtVqxYwYoVK/bKuXIkq0ShUChaJrZtc+mll9K2bVsgNV/jiSeeaNbVKpVwKxQKxR4QiUT45ptveOWVVwD49a9/TSQScUoINgcqVKJQKBR7wK233srUqVN55513ePfdd5k6dSq33nprs55TedwKhUKxB0ybNo2ePXsyePBghBAsWrSINWvWNOs5lcetyDkyuarjxo1zthWKXEXTNGbNmkXv3r3p1asXs2bNavZqTEq4FTnH9OnT6du3L5deein7778/M2fOzLZJCsVOEUIwcuRI+vXrR//+/Rk5cmSzr4qphFuRU2zbto1oNMrcuXPZvn07zz77LFVVVTm97oVCsbdRwq3IKUzTREqJx+Nh/fr1zJ49u0EVH4VCoYRbkWN06tQJn8/Hb3/7Ww499FAef/xxCgoKfnKNcYViX0MJtyLnmDhxIl9//TVTp06lrq4O27Z5/fXXm32N4+Zg8+bN1NXVZdsMRStDCbci53C5XHi9Xp577jm8Xi/jx4+nrKyMOXPmZNu0XeaRRx5h4cKF2TZD0cpQwq1oEdxwww0kk0meeOKJbJuiUGQdJdyKFoGmaZx33nmYpsmLL76IZan604p9FyXcu8gnn3yS0xNCkskkX375ZbbNaBa8Xi9XXHEFq1ev5vXXX8/pv4PixxiGwdtvv+08DMPItkktFjXlfReYM2cOq1ev5q233mLUqFEcc8wx2TbpR8yYMYNEIsErr7zC5ZdfTrdu3bJtUpMihGDy5Mk8+OCDPPXUU1x88cXZNknRSCzLauBULFiwYIc/vmeffTYDBgzYm6a1OJRw7wIDBw7k1FNP5aGHHuKTTz7hqKOOyrZJDpkvwMiRI+nevTu///3v+e677+jSpctu97l48WKaqhboWWed1ST9ZBg3bhyzZ8/m6aef5sILL2z2mWqKPcfv9/PHP/4RSP2//uc//9lhfv7DDz/Mt99+26Ctc+fO/P3vf//RsUKInf7tpZREo1Fuvvlmpk+f/pPH7imZ79/e+j9slcLdvn17ysvL6d27d5NeyP79+zNq1ChWr15NLBbjxRdfbLK+95SCggKmTp1Kr169GDFiBJs3b+aLL76goKBgt/scMmQIr7/+epPY5/F4uOeee5qkLwC3283555/PQw89xGuvvcZpp52Gy+Vqsv6bipKSEqqqqrBtu9nXr2hJCCE44ogjdrhv+PDhPxL0DRs2MHTo0B8dO3ny5B22h0Ihbr75Zr766ivuueceevbsyRNPPMHxxx/fNB/gB6xatYr//ve/PPzww83S/w9plcI9depUBg8ezJdfftmkwv3hhx8yd+5c/vznP1NaWspNN93UZH3vKa+99hqQuv38xz/+wbhx45g8eTJHHnlkli1rPtxuN9dddx1TpkzhpZdeYsyYMdk26Udcf/31jBw5kuOPP57CwsJsm9MiyMvL+1Fbv379WLx48Y/aZ8yYwZtvvvmj9s6dO7N8+XLOPPNMYrEY9913H0uXLuWoo47C5/M1uc22bWNZFh6Pp8n73hGtUribC9M0uf322xkwYACHHHJIts3ZIVVVVdx3332cfvrp9O7dO9vm7BVuvPFGHn/8cR5//HEuu+yybJuj2Itcf/31O2xfsWIFH374IYZhYBgGbre7VWUiKeHeBY4//nh69OhBz549czameu6557J582a6du2abVP2GkIIfve73zF79mzmzJnD2LFjVVhiH6dv377069eP+fPnc8wxx3DOOefwxBNPNIu3nQ3Uf/cu0qtXr5wVbUiFD/Yl0c7g9Xq56KKL2LRpU85Mj6+pqeHTTz8lHA6zcOFCysrKsm3SPsVjjz3Ge++9x/PPP8/q1aubLb6dDZRwK1oNmqYxceJE1qxZw7PPPpttc/j888+ZMGEC27Zt4+9//zu33XZbtk3ap3C5XIRCIR588EHcbndOO1y7ihJuRavjuuuuw7KsrE6Pj0QivPbaazz55JP06dOHu+66i6FDh/LOO+9kzSZF6+FnhVsI4RdCfC6E+FoIsVwIcUe6vYcQ4jMhRJkQYq4Qwptu96Vfl6X3d2/ej6BQNMTlcnHeeedhGAYvvfRSVgal8vPzGTVqFHPnzmXOnDls3ryZZcuW5VTuv6Ll0hiPOwGMkFIOBAYBJwkhDgWmADOklL2BauCS9PGXANXp9hnp4xSKvYrH42HcuHGUlZUxf/78vT49XtM0unXrxsKFC3n11Vf529/+Rv/+/cnPz9+rdihaJz8r3DJFJP3Sk35IYATwUrr9GeCM9Pbp6dek948UrSm4pGgxZKbH19bWZuX8gwcP5vXXX6e4uJjnnnuO8ePHZ8UOReujUTFuIYRLCPEVsA14D1gN1EgpM9ObNgKd09udgQ0A6f1hoE1TGq1Q7Aq/+93vsjowNWbMmFaThqbIDRol3FJKS0o5CNgPGA703dMTCyEuF0IsFEIsjMVie9qdQqFQ7DPsUlaJlLIG+AA4DCgSQmQm8OwHbEpvbwK6AKT3FwKVO+jrMSnlMCnlsB1NcVUoFArFjmlMVklbIURRejsPOAH4lpSA/zZ92IXA/PT26+nXpPf/W6qFkxUKhaLJaMyU947AM0IIFymhnyelfEMI8Q3wghDiz8Bi4Mn08U8Cs4UQZUAVMLYZ7FYoFIqcoWfPnvztb3/ba+f7WeGWUi4BBu+gfQ2pePcP2+PAmU1inUKhULQAvF4v7du332vnUzMnFQqFooXR6oT77bff5uSTT2b16tX86le/4plnnvn5NykUCkULolUJt2EYrFmzhrPOOotu3bpx3XXXsWrVKuLxeLZNUygUiiYjJ9bjtm2bTz75ZI/72bRpE//5z3+48sorCQaDFBQUEIvFePLJJxk0aNBu97t161a2bNnSJDY2F+vWraO6ujonljPdGVVVVXzxxRcEAoFsm7JTdF3P6b9zJBLB76+iQ4fctbG4eCXr1tXl9HXcsmULS5Ysoby8PNum7JSf+i7nhHBLKams/FGq9y7j9/s566yzqKysZPLkyVRVVTmV2Pek/3A4TCwWaxIbm4toNMpTT2nU1eWujV27JvnFL6pz+g6outrk/PNz9xq63TodT/qCvBtfybYpO8W7NkQ0elZOf1/i8Tg319xM3J27/4sJmdjpvpwQbpfLxWmnnZZtM3ZKWVkZlmXltI22bbNtW3u2bj0s26bslDZtljBq1CiKi4uzbcoOkVIye/Z7rF2bu39nn6+KUId7WHva2mybslM6fNKB/tv75/T3ZcuWLWw+ejPh3uFsm7JTClw7L/TdqmLcCoVCsS+ghFuhUChaGEq4FQqFooWhhFuhUChaGEq4FQqFooWhhFuhUChaGEq4FQqFooWhhFuhUChaGEq4FQqFooWhhFuhUChaGEq4s4SUkkQiwWOPPcZHH31EIrHzdQkUCoWiPkq4s0QkEqFTp05YlsXLL7/MgAEDsm2SQqFoIeTEIlP7Ii+++CK33347Q4YM4eSTTyYUCvHmm2/yq1/9KtumKRSKHCcnPe7Fixfz0ksvZduMZqVt27ZUVFTw3nvvsWLFCrZv306bNm2ybZZCoWgB5JxwDx8+nAceeIBVq1bRo0cPIpFItk1qFo477jgeffRRqqurefbZZ/n000859NBDs22WQqFoAeSUcC9atIiDDjqIKVOmMHDgQILBIB9//HG2zWoWAoEA8+bNY/78+Vx//fUsWrQo2yYpFK2eWCzG4sWLs23GHpNTMe7169fTo0cP6urq+Prrr4lEIpxzzjmMGzfOOaZLly5cddVVWbSyaUgmk/zrX/9i1qxZDB06NNvmtDo2btzIV199xSmnnJJtUxQ5wqxZsygrK8Pv97NmzRoYmW2Ldp+cEu7Ro0czYcIEwuEwBxxwAOFwmOeff578/HznmI0bN3Lsscc2eN8VV1zBmDFjGrQJIRBC7A2zd4tkMsmCBQu48847s21Kq+Oiiy4ikUgwcOBA7r77bl5++WVKS0uzbZZiD5BSIqXcoz7mzZvHDTfcwKBBg3jooYeayLLskFPCDbBkyRI+/fRTVq5cyfr16wkEAg0EeEclxB555JEfea333XcfHTp0cF673W569uzZvMbvAhs2bKBz587ZNqPF8N133zW6VuXChQt5+umn6dixI+vWrWPt2rW0adMmp3/IWyNSSsrKyvZYcCFVsPu6667boz5Wr17N5s2bOemkk+jVq9ce25RNck64A4EAI0eOZOTIHd/HuFwuCgoa1mKbOHEiEydObNB24403Nqjg7PP5OOKIIxocc8ABB2RtQPDcc8/lyy+/zMq5WyKzZs1i7drG1VncsmUL9913HyeeeCJnnXUWL7zwAsOGDWtmCxU/xLIspkyZgmEYe9xXhw4d9jg2fdJJJzF27FiOPfZY7r33XhUqyUWmTp3a4HU0GuWFF15o0Pb+++/z+OOPN2gbP348/fr1a3b7FLvG7bff3uhjBw8eTM+ePWnXrh0XX3wxCxYsUN52FnC73TzxxBPZNsPh+uuvZ82aNTz88MNNcheQTVqtcP+QQCDAJZdc0qCturq6gVcO8Ne//pVly5Zx0kkn8de//rVZbJk0aRL33nuvEpNm4pVXXuHbb7/lww8/5J///Cft2rXLtkmKHODEE0/EMAy2bdvGG2+8kW1z9oh9Rrh3RHFxMcXFxQ3ann76aaSUzSqqmzdvpnPnzkq4m4kePXrQvXt3TjrpJDQtpzJeFVnG4/G0irGlfVq4d0Rzf9G/+uorunfv/qMfDEXTkutZRQrFnvCzKiWE8AshPhdCfC2EWC6EuCPd/rQQYq0Q4qv0Y1C6XQgh7hdClAkhlgghhjT3h2hJfP755+y///5qertCodhtGuNxJ4ARUsqIEMIDLBBC/DO9b6KU8oeLipwM9Ek/fgE8kn5WAOeff362TVAoFC2cnxVumRp+zSwY4kk/fmpI9nTg7+n3fSqEKBJCdJRSbtlja1sBeXl52TZBoVC0cBoV0BVCuIQQXwHbgPeklJ+ld/0lHQ6ZIYTwpds6AxvqvX1juk2hUCgUTUCjhFtKaUkpBwH7AcOFEAOAm4C+wCFACTBpV04shLhcCLFQCLEwFovtotkKhUKx77JLKRRSyhrgA+AkKeUWmSIBPAUMTx+2CehS7237pdt+2NdjUsphUsphKnygUCgUjacxWSVthRBF6e084ARghRCiY7pNAGcAy9JveR24IJ1dcigQVvFthUKhaDoak1XSEXhGCOEiJfTzpJRvCCH+LYRoCwjgKyCz9upbwC+BMkAHLmp6sxUKhWLfpTFZJUuAwTtoH7GT4yVw9Z6bplAoFIodoeYDKxQKRQtDCbdCoVC0MJRwKxQKRQtDCbdCoVC0MJRwKxQKRQsjJ5Z1NU2TRx99NNtm7JRwOMzGjRtz2sY1a9bQtWs+paVLsm3KTgmF1jF79mx8Pt/PH5wlTLOKAQNy9+/scsUpXFvIgEcHZNuUnZK/JZ//xv/L1q1bs23KTlm2bBm9wr1IFiazbcpO+c78bqf7ckK4XS7XTmtM5gIbN25E07ScttHtdnPooSUcdNBB2TZlpzz55DruvPMoDCOYbVN2ygknLOKNcU+HAAAgAElEQVTVV3P371xbW8vLL2/jopE7nh4hkUjsVDEQhNMGoAmX09acLFmyhJqaGo4++ugm6c+yLFwu14+294RwOMy04dPYb7/99riv5uIw7bCd7ssJ4RZC0Lt372yb8ZOsWrUqp21ctmwZ7du3z2kbA4EAdXXdSSRytYiERNO8TXoNt2zZQkFBAcFg0/xYVVVVEQgE6NGjB5WVlanGPIPaaA2FhUV8ve0DPtHfoC5ejW0KAloJ0UQUPRHlkp534Pfk0bFgP4oDbQiHw3g8HiKRCKWlpWzfvp1QKISu65SWlhKNRnG5XBiG4QhmNBp19hUWFlJRUUFpaSnwfRGS8vJyXC5Xk1zHzZs3M2nSJO6//35qa2uZO3cuw4YNY9SoUXtUKKOwsJD99tuPLl26EIlEyMvLIxqN4vF4cLvdxGIxgsGgsy+RSCCEwOPxoOs6oVCIuro68vLyMAwDn8/n1LH0er1EIhEKCgqIRqPk5+djmia2bePz+airqyMYDKLrOn6/H9u2MU0Tt9uN3+93PtdPFXXJCeFWKForDz/8MCNGjOC4445r0n5jZoSlsQ+JmGE21i6nMr4Vf1UQYbtpp/Wgc95BfLP9C9yuIAOCg9AKXHxd9V/eKJvLid3OZGS3U2jv74yUEr/fTyKRcEQkI062bTtilBGRzLFCCHRdx+v1Os9er7dJPyPAF198wcEHH8yWLVuYMmUKF154Ie+++y4nnHBCk1Q4ikQiFBYWEolEKC4uxjRNDMOgpKSE6upqiouLHRGWUpJIJCgtLaW6upqSkhJ0XSc/P59YLIYQAtu2nT4rKyspLCwkHA7jdrvRNI2qqiqKioqorKwkFApRW1uLEAKfz0csFsPn8zXqcynhVihaIJrQuP/zhzCsBPuF9qNncU98rgBP/3s2oaCX/bt1pHJ9lMrEcgYOqKHE2w7DsumY14vlW5eA6aatrz0n7n8agCM6mW1N07BtG03TME2zwbkzZeEyYq5pWrOViTv99NM55phjeO+991i1ahUff/wxb731VpOVGMzLyyMSieB2u6mtrcXlcqFpGuFwmGuvvZZhw4ZxxRVXoOu685lramrw+/3U1tbidruJx+O43Skp1TTN+XErLCwkmUwSCASwbZtnnnmG999/n0cffZTCwkIMw3D2SSkbLdqghFuhaJH4XPn8+ZCHOWPu6WzzWpS5q8gX+ZSIbuTHfejrCti+KcaKrdvw5S/FX1lCdcl2Au4S3JqXcG2ceDLJofsdjVt6CAQCRKNRhBCpW3+PJBmP4nG7QPixpcTlcpFIJAgEApimicfjIRqNEgwGm7W+57x581ixYgUPPPAA06dPp2PHjk3WdzQapbi4mNraWgoKCrAsC8MwCIVCvPXWW8yfPx/LsrjgggsoKioikUgQCoUcjzsSieD1eonH4wCOx11UVERNTQ2FhYVs2rSJ999/n0mTJpFIJHjqqaeoqakhFAoRiaRq1GTEPi8vT3ncCkVrJR6P07Ntd+adNY+zXxzDl+u+xGO6aeMtQSbBTtr87ey7+HTpf+ka6so7y9+hc5di1n1XgS9YwJaKSuJJk7+991duO+UOotEooVCIRCKBR8Z59pah2GYchOTXExeTV9QB27YpKioiGo3idrsJh8Pk5+dTXV1Nfn4++fn5zfJZ27dvTzgcJhAI0LVr1ybt2+PxYJomLpcLy7JSg7r1Ck3HYjEmTZrELbfcwrvvvsvgwYOdeLRpmmiahpTSuevIhD2klHi9XpYsWcJJJ51EOBwGUkkELpfLCSt5PB7g+7sc5XErFK2Y/Px8Kioq6BzoxCO/nsm1865lW/U2erfpg0u6sJMWL34yl4ArQCyu43V7KP/cTd9uw9i8bTW1bbZRanTh+XfmMqr7SfzyF7+koqICvxe+fOc+whGDdl2H0WfQ8QhPPolEApfLRVVVlTM4WVJSQkVFBW3atGlWj7s5cbvdGIaBpmkYhuF8jlmzZjleNEAymeScc87h/PPPZ/To0XTv3p0pU6YgpcSyLEeAPR4Pl112GeXl5cyZM4cXXnjBEW1IZcU89thjXHbZZdi2jdvtdsYRdiVbRgm3QtEC0XWdgoICAIb5h/H8+XM4/fEzWLFtJUF3kDyRR0IkqEhsZ2vFFqq2V/GrQ06h1NsJGxcHFwzj3a//SYnPjU/zUFdXR3hbGf94/V62rV9Iu85DOOqsaRS1644mBC6XC9u2adOmjeNxV1ZWEgwGm93jbk5isRglJSXU1tYSCoUwTZNkMsmcOXNIJhvmeG/evJkpU6bw5ptvEggEWLhwIZZlNThG0zTefPNNpJQsXrz4R+eTUvLYY48xduxYioqKiEQiCCHw+/0kk0nH4/851MxJhaIFkvHOpJRoQqN3SR/eH/c+vTvsT228lpVb/8fC9YtYsmEJwYIQh/Q/hJgR47vy9Qi3Ru2mJMf2OpmCfDe3PHsNazeX8V3ZMlYs/ZKjTruJ31wzmzYdeiJI3cZnBCWTFiiEwO12Y9s2LpfrR95iS/HAMz88Pp+PqqoqdF0HwDAM55jp06c3mMOxbNkyPvvssx+JNqRi3IsWLWog2u3bt+eZZ55xXrvdbtq2bYthGBQWFhIIBIDUXZQKlSgUrRhN04jH44i0N2wYBh0KO/D2FW/w5tI3eWPpW/x3+X/YWlmOnoxSabtIuJLYSRtM+HblN4w65ESOLv0t7Q4TXDv9bA6ocDFo2Ej2H3oy+QWFjkhnsh6EECSTSTweD5Zl4fV6nUHKHwpO5vY/18mkAdbW1lJSUuJ43JnQB6RE/NVXX6W4uHiHYv1zjBw5ssEPgWmabN++naKiIsLhsONxq3RAhaKVE4/HndBELBYjEAhQU1NDMBhkRO+R/OaQ3/L2orfZWreVZDxJ0F9ATI+RiCVBCszjTLq278KI4SMoKS4htLWEDf/5mhN+fTWl7TpRWVlJIBDAMAzcbrcj0pn8ZL/fT01NjTNxJxgMNksed3OTSQf0eFLhoswAYX2BzsvLY3cLml988cVMnTqVd99912lzuVyEQqEG6YCQmrijPG6FohWTn59PbW0tkPrCZ2bjZWK20WiUEwefSLimhnyvl1hNJd898yDxsm/xd+xM3+vvJOnx4AK2b93C1sWb8QXa0aVrb2qrqigOBkkaBmX/eIUvX5yN8Pjpe9pZ9Dp2BMVt2mBZFqWlpUQiEdq0aePkMbc0EokEBQUF6LpOXl6eM4vR7/c7xySTSXw+n5N5siucfvrpAA0GOqWURKNRAoGA0+71eht45T9Hy7zaCsU+TjQadWbzxWIxCgoKnLzhzHP54s8QG9ey7s15ePICHHzHDNA8CJeGtX0r394yGUto2HEb+9ultDt4COteepoNH32AXldLQZceHHDG2Zz6p2nYpsE3/36PZy86G29hMSN+fwMFHTrRrU8fwuEweXl5zmBpS6J+/F5K6YR4XnvtNTp06EBdXR3r169n0aJFP5qI1BjKysoYOnQoZWVlzvlGjx7tjAnUTz3clXGBFi3cf//73zn//PNbzECIQtFU+Hy+BjHuZDKJ3+/HMAz8fj/bP3qH9dNuocvYS+l/418RAqIrvyXzVZFCMOCW6UgB8a1bKP50AclkEpfQGHbNjeD2kIjpJGM6euU2bCnpNvQQug4dTriqipdv/SOhLl258J57yQuFWqzH7fF4SCQSaJrmTOUXQjTwkB944AEeeOCB3ep//PjxbN68mWnTpgGpsYk//OEP+Hw+bNvG6/U6Pxa7cg1bZFbJ/PnzGT16NKZp8utf/5rXXnst2ya1OnRd57bbbsu2GYqdkMnmqD8BxLZthBBUfPg2q+69ne7nXEGo5/4kNq0jsXE9Ih5FxKMQj0IsSmz1CvRV32LW1dBu+GF0OvIYCrv2IFaxleimDcQrt2NGo5gxHUPXSdRFiNeGcblcHHP+BdRu2MATV13ppLG1RDJplZl4c0ZIp02btttx7R+SEW1I/d1uueUWwuHUdYxEIsRiMWcdlMZexxb3M2kYBv/73/8488wzOf744/H7/axcuRLDMBqMBCv2DMMwWLBgQbbNUOyETFaHEMKZyafrOqKynPLXnqXrGefiKynFDleioSFEekYgIAAbCXZqG1uS1CNYUmLaYNkSW0psmdo2M8+2xMLGsMDry+PIc85j/n0zePDii5gw5/nsXpDdJDN93e/3U11djZSShx56iHvuuadBaKS4uBiXy9UgLbK6unqHfRYWFuLxeJwfUtu2nWOllDzxxBO4XC5uu+02J1PFsqxdSgdscR73mjVrqKmpYcSIEdx8883O8oqZGJJCsS+QiWlnVp4Lh8MUFRaydeliQqUdCBS1wY7UQFxHJCJoCR1XIoqW0FOPjPcdi0I8ArEoth5F6hEsPYKpRzCjdSSjEYxIHclIHcloHYm61HM8UottGpxwyaVUb9xI3bZt2b4ku0VdXR1FRUUkk0mCwSCPPvoof/rTnxpMvunXrx+LFi1i48aNrF69mm3btrFw4UIOOeSQH/V34IEH8u9//5uNGzeydOlSNm7cyOeff87AgQOdYyzL4uGHH2bq1Kls3ryZaDQKpLz/xnrcLU64DzjgAEpKSrj66quZNGkSp556Kp988kmLnLWlUOwumQWJfD4flmWl0trCNdT839toeX6MumqI68iYDvGUUGsJHXciiiuhI+I6JHTnGEuPImM6diyKHdOxdR1T1zH1CIYeJZl5jkZJRiMkoxES0QhGPIknUMCHL7RMjzsvLw9d13G73ZSXl3Prrbc22N+/f39mzpxJSUmJEwuvra2lbdu2TJs2jT59+jjH+nw+JkyYQJ8+fUgkEgSDQQzDoH379jz55JMMHz68Qd/Tpk0jGo06FaFafTrg2LFjOfTQQ7npppuc2/k//vGPQGrAsqmWfMx1bNsmkUhwww03MGrUqGybo9iLZEIjkPrCJ5NJfJogvuYb2ow8BTsWxdI0XJpIuWcauDQXmga2BGFLsCXSlkjbRloS2wbLtrFtMG2JYUsMaWNYqRCKadupNltiWultCR26d8Noonjw3sYwDPLz84nH44wbN87JLsmwZcsWbrzxRizLom/fvjz44IP4/X50XWfw4MGMGjWKVatWATBq1CiOO+44ksmk84Nw++23s3jxYmzbZv369Q3OLYTg6quv5pVXXsHr9e5SqmGLFO7OnTvTuXNnhgwZQl5eHgBDhgxh7dq1TJw4kcsuu4yePXu2yAkBu8J1113HggULmDlzJhMnTmTKlCnZNkmxl6ifvuaktGkCaVvYcR1TA01zYWsCqQnQBNIlICNMNkhbYts2tpV6Nm0wLRtTgmHamDIV105adkrILRvTtknaAsOSGLaNYdnEo5FsX47dJlPAwO128+STT/J///d/nHPOOc7+qqoqPv30U3r16sVdd92Fy+VC13V8Ph+JRKJBJkgwGKRt27ZOlk8gEODWW2/l5JNPZtGiRT869/3338/ZZ5/doIBFY2mRwp0hI9qZ7X79+nH66adz9913M2TIELp3786vfvWrJj3n888/73g62Wbp0qWMHj2a8vJybrjhhmybo9iLJJNJxzGxLAu/3088XIMV1YmXbyYvVIiludBcAqGBcAkQGjYaNhJTSiw7JcimlfGqJaa0SVpgZDxqKzUYGYvFSBgG+PJI2jIt3GDYFgldpzlzSqSUfPDBB01Ww/KHfWfCEy6Xi48++uhHxxx44IHMnTuXgoIC3G437733Htu2baOoqIiBAwdy4YUXYpomv/jFL/jss89Yt24deXl5nHHGGfj9fubPn88pp5zC119/3aDfL774gjPPPNPx8HclM6dFC/eOOProozn66KN5+eWXWbVqFS+//DK/+c1vmqx/TdNyKhSTsSczbbapyMvL49RTT+XVV19l9OjRTdr3vsTo0aOZPXs2hx56aANHY0/x+/1s27YNIQSBQCBVBzFYgC2hdsVyXH36IvL8oGlpTzudSWKYCJ8fS9op4TVNops3EI9GiVs2SUuSMCUJ2yJhgqdNewiGiOsxEskkwrRIpo8zbEnStFi/bBm9Dxn+80bvJlJKZs6cucPV9pqCTKWfSCTCzJkzOe2001i5ciUrV650zj9t2jTuvvtuhBBUVlZyww03cPjhh/PSSy8xevRoZ3nWK664gpdeeonp06cDqXVJbrnllgai3LlzZ0aOHMmzzz7LpEmTyM/Pb/SqgBlanXBn+M1vfoOu6zzwwAMMGTKEN954g06dOu1xv2PGjGkC65qGxYsX8/LLL3P88cdz4403NmmoxOv1cvDBB/Phhx8q4d4DhgwZwsSJE524Z1ORKdabmSwSDAapi9TRb9JfWH7HH7CWRik9YADS58XSBJYAkdCxa6pxte+EbVrUlS3HMiXxRIKEYZCwbBImxEyLhGkTt2yMrZsxcCEDhbgKi5B6HNPlxrAgadmULV2C5s2n35FHNdln25tkCvv6/X78fj+ff/45paWlnHfeec4xK1asYOXKlXz00UeMGTOGSy65hJKSEifdz7Isp3iCZVkUFBRw6qmnMmvWLGbMmMG6desaOFZFRUXMmDGDa6+9lh49ejhVh3ZlAk6rFW5IrecwceJEJkyYwAUXXMCVV15Jjx496Ny5c7ZNaxLuvfdeEokE48eP5/rrr8+2OYq9jGVZzt1fymt0IYLFGKaNFo1S9c1XFPbui2aZuGwLYSQwKjbBlo2pXG0bDNsmaac86KSZ8qIt0rnbEpKJJHHDIh6uI7FhA3HLxvT4CHToxOZ166mr0+k+fH8GNEMYY2+QKeybSCQoKSmhuLiYDRs2EI/HG9zJSilZu3Ytd911F8uXL+f111/nqaeeQkpJXl6ekz44YMAAJkyYwOTJk5k7d+6Pwh+aphGLxdiyZQsHHnigM8nH4/EQj8edDJOfo9HCLYRwAQuBTVLKU4QQPYAXgDbAl8D5UsqkEMIH/B0YClQCY6SU6xp7nqYm84/9yCOP8Ne//pW8vDyuuOIKOnTokC2TmgxN08jLy+Phhx9Ws0f3MTJTtTPinVleNQLYfj/JRBwMk2hNNURrEZE6NE2gIZBILGljy5RwmzbpmPX3sWszE/+2U/Fw25ZYUmLZYBkGkeoa4noMl8+PlC1n/e0fUlBQ4FRjr6mpwev1snr1ag4//HBOPPFEamtrnQHMmTNnIqXkH//4B4cddhiTJk1yqt0HAgGklIwfP57Zs2c3EO1rrrnG8cgzi4OVlZXRqVMnQqEQlmXt8h3Zrnjc1wHfAqH06ynADCnlC0KImcAlwCPp52opZW8hxNj0cVmPL4RCIe666y6++eabJr1lba1ccsklLF++nMrKSr788ktncEaRGyQSCWcFO13Xyc/PTy2zeuBBFB85ivJ3XsPGRFZW4hY2mmkjNIFIC7ct6wmxlKnYtiUbCLhZb/DSlKkBS0tKTEOSqA5jS3D5/Zx640RnjZSWRibklEwmKSwsRErJUUcdxYgRI4jH405lGk3T6NOnj5MEcO+993L99dc76YTJZNKZJTl9+nRHtG+77TauvPJK/H6/M8vV7/cTj8edVR0Bp1p8YzPhGjXKJoTYD/gV8ET6tQBGAC+lD3kGOCO9fXr6Nen9I0UO/Rz369ePwsLCbJuR01RXV7N69WpuvPFGTj/9dPx+P1u3bs22WYp6BAIBIpFIg7WkCwsLSQgXoW69MW1IGDYxPUYslkS3bGKmjW6mnmOmTdxMiXXMkKmBSdsmmU7/M6QkYUtMS2JKQTLtcRu2jRYoSIUSvHkYpslhJ5zYYifA5efnN7iGmZBHbW0teXl51NbWOtXtDzzwQOd9pmk6tSTj8Tgej6dBEeAMffr0obi4GI/Hg6ZphEIhYrEYhYWFzvooGUdyV9KXG+tx3wvcCATTr9sANVLKzGT+jUAmcNwZ2AAgpTSFEOH08dsbbZUiqzzzzDNcfvnl9O7dm2QyyRlnnMF999232yukKZoeXdcJBoMNtsPhMMFgEK17H7S2nYhv3Yghk7gQuDTSKwOmfDUpG3rdmck1TraIZWFYKfFO2pl8bolpQby6BlvAwSOPw1/ShoqKCoqKihx7WhKZdV4yedSZ0Krb7XaKAEspcblcDQYPhRBO3nVmDZP6jwyZavCZNsMwnDzvTIgrE0fflcywn/W4hRCnANuklF82utdGIIS4XAixUAixsKlW4VI0DX/4wx/405/+xMcff0xxcTHnnXcef/rTn7JtlqIembhrLBZzBrwyt/XdjjgWf+euxCybeDo7JOVh28RNk7hpEjMtYqb1/X5HpNMDlZZM5XNnxDyd523YqRBKafcerFm2nFOuuoZQKNRiJ7tlUgEz4lw/pzuzAmNm9cUePXo0KIzwr3/9C8AJkWTi35WVlUCqZNmAAQOcfZmsE03TsCyrwfug6fO4jwBOE0L8EvCTinHfBxQJIdxpr3s/YFP6+E1AF2CjEMINFJIapGyAlPIx4DGA9u3bt8w1IVsxc+fOZdmyZXz66afMmzevRXpTrZnMFz/z5c9kQGQEZ9jEP/GP804lFovgEiI1MClTXrcEbMDOrAKIxDRTmSQpcbYxLUjaKTE3bDudfZIScF8wRLveB9C2d29KOnZ0yn21RDJFgkOhEOFwGK/Xi8fjcSoJVVVVEQwG0XWdoqIijjrqKObPn080GuWaa66hS5cujrADbNy40VkJcOjQoXTs2NFZJz2zpkx1dbVTWT5TuiyZTDZtOqCU8ibgJgAhxLHABCnluUKIF4HfksosuRCYn37L6+nX/03v/7dsqYv17sMMHDjQ8RbUcrl7RnP8+1uW5XzRM7f0uq7j9XqJxWIU9exFftcebFv+FZrQcDlLutpINKRIe4DpwUnLluklXDPrkQjH0zZsm7iVCpkkbYtgqAjN66XHwIEEi4qora1F07QW6XVnVgeMx+MUFRVh2zaWZVFSUuKUZYvFYgSDQaSUDWZNV1RUUFFRsdO+M3dBmbW3NU2jurqaQCBAVVWVE0PPhF0yxYIbw55MAZwE3CCEKCMVw34y3f4k0CbdfgMweQ/OocgiLpdLiXYT0BzeaCAQoK6ujkgkgtvtdvKRdV2nTZs26LrOyQ89RcKwSZgWMcNKh0dk6jlpEzNS4ZNEJoxiSWIWxE1B3LRJWjYJK9VuWDZJ06K4c1f6HHEU/vwAo8aOpa6ujtLS0hY7OBkMBqmursbr9VJdXe3kVWcKIG/fvh2Xy0VtbS26rnPIIYfQpUuXn+23Q4cOHHfccc4Pgs/nQ9M0px5oaWmpk8kSCAQAduka7pJwSyk/lFKekt5eI6UcLqXsLaU8U0qZSLfH0697p/ev2ZVzKBSKnycWi5Gfn09eXp6zCH9mBmA4HMbv9yPdXgaef2lKqK2UcOvG97HtVHaJlYp/W7KeiKemtSdMm4QT75aEOnSm57DhbF63juMvuohwXYS8vDxqamoalPpqSei67lRcD4VCTkpjUVGREx6xLItAIIDf7+eII47gmWeeoaioaKd9er1ennjiCY499lh8Ph91dXUYhoGU0slWqa6uTuXdpyvgALt0DXNn0Q2FQtFofD4fhmE4WQqxWMyZwVdQUJAqDFBcQulhR6O17UjMlOimjW6lUgK/TwuU329bNnHDSnnZZipFMGFZJG2JN1RIu959qNxWjl4XoeegQQSDQRKJBIFAoMXemfn9fqLRKG63m2g06qQDZn4E6+rqcLlcxONxpyblgQceyOLFi3n66acJhUIEg0FCoRChUIgZM2awcuVKDjvsMILBIMlkkvz8fNxut7OuTGaJAtM0yc/Pb7Aed2Np1VPeFYrWSv2p2JmMiPprZ2QGLXsMP4xhF1zKv2fcjaFHnffL9EQcKVODlBaZeDep5VydCTg2/pJSCtp3RI/F8Pn8THnvXceG+oOiLZH65cUy1C9PVn9fZvlcTdNo164dJ598Mt999x2maTozIwFnvCGzvrZt2072SP2/EaTGJ+pnnTQWJdwKRQvEsiwnVS0jnKZpomkahmE4z16vl6MuGYclJW/8+Q5kA4FKZZhYklROd2Zau/x+XW5TCjRLEq6upnvHjlx6991o6ZXwEomEk5MshGiRld7ri25mdiOkPPHMcrnQ0BvO7Ks/caZ+Sl+m/m0mU8QwDOe9yWTS2Zf5m9X/oWgsKlSiULRAMjnb8XjcWdw/05apWp651dc0jeHnXMBv77mf/QYfkopnpx+dhw3H374DcctOPyR9jj6WhE1qCrwNcT3GkBOO56K//Y384mJ8Ph+2bVNQUEAikaCgoKBFZpQAjrBmJsNkxLO+6Gamqmc88MxKfpmwSiY3WwiBpml4PB6nmLNt27jdbme/x+PBNM0G+zI/eLty19LyfiIVihZCLBajoqKCeDzOxo0bMQyD0tLSJuu/pKQESN3C5+XlIYRw2oqLixFC0KlTJ2f/iAt+x1FnjsGq5wG6PB5s28K2vvfE3V4vRr1iuQBevx+v3+94h6FQCCEEbdq0abE53JD6AfT5fA2uIXwfLsnsq0+mGvuO9mX4qbj17sS0f4gSboWimfj4448ZP34827ZtY/z48bRp04bnnnuuyfqvX9AjIyA/9+xq5EJh/nSK2g/ZWb8tlcwkpsx2/fYftjVm395ChUoUimZA13Xef/99Zs2axYABA3j88cfp37+/U9xaodgTRC5MaiwuLpbnn39+ts3YKYlEwplFlauEw2HcbreTzJ+LlJeXU15eipS5m4FQVLSJbt32vNCGZVmsX7+enj17snr1arp3705tbS22be/R/5FlWVRWVtKuXbs9trG5iEajWJZFKBT6+YMbyf/+9z/233//JuuvsrKSgoKCRs9UzAazZ8+murp6h259Tgi3EKICiJK7KwiWomzbHZRtu4eybfdobbZ1k1K23dGOnBBuACHEQinlsGzbsSOUbbuHsm33ULbtHvuSbSrGrVAoFC0MJdwKhULRwsgl4X4s2wb8BMq23UPZtnso23aPfca2nIlxKxQKheV94zkAAATgSURBVKJx5JLHrVAoFIpGkHXhFkKcJIRYKYQoE0JkveiCEGKdEGKpEOIrIcTCdFuJEOI9IcSq9HPxXrJllhBimxBiWb22HdoiUtyfvo5LhBBDsmTf7UKITenr91W65F1m301p+1YKIU5sRru6CCE+EEJ8I4RYLoS4Lt2e9Wv3E7Zl/bqlz+UXQnwuhPg6bd8d6fYeQojP0nbMFUJ40+2+9Ouy9P7uWbDtaSHE2nrXblC6PRvfCZcQYrEQ4o306+a5bj+sTrw3H4ALWA30BLzA10C/LNu0Dij9QdtUYHJ6ezIwZS/ZcjQwBFj2c7YAvwT+CQjgUOCzLNl3O6nydj88tl/67+sDeqT/7q5msqsjMCS9HQT+lz5/1q/dT9iW9euWPp8ACtLbHuCz9DWZB4xNt88ErkxvXwXMTG+PBeZmwbangd/u4PhsfCduAOYAb6RfN8t1y7bHPRwok6lqOklS9StPz7JNO+J04Jn09jPAGf+/vbMJsaoM4/jvWdgHJYkRMngXqQgtQlQUikRkRGk0kmAWQaCLoE0uWgkiuHNpH4toUSloodCY6NKPEVqFYY02MlaCQg2jA4qjbaSPf4v3OTOHy9xLszjnPQeeH1zu+bhwfvzvPc+97/Pee08dB5X0HXD/f7rsAo4p8T3pYs4DGfx6sQs4KemxpFvATdLzX4XXlKQfffkRMAEspwHZ9XHrRW25uZMk/emri/wmYBAY8e3d2RWZjgBbzar5E48+br2o9Zwwsw6wE/jC142KcstduJcDv5fW/6D/i7gOBJwzsytm9p5vWyZpypfvAMvyqPV1aVKWe31oeqTUVsri50PQdaRPZ43KrssNGpKbD/fHgGngPOlT/gNJf8/jMOvn+2dI16CtxU1Skd0hz+4jMyt+x153dh8D+4Dirxafp6LcchfuJrJJ0npgCHjfzDaXdyqNbRrxVZwmuZT4DFgFrAWmgMO5RMzsWeAU8IGkh+V9ubObx60xuUn6R9JaoEP6dP9SLpduut3M7GVgP8lxI7CUdCHzWjGzN4BpSVfqOF7uwj0JlC+Z3PFt2ZA06ffTwGnSC/duMcTy++l8hj1dGpGlpLt+cv0LfM7csL5WPzNbRCqMX0v61jc3Irv53JqSWxlJD4BLwKukNkPxN9Blh1k/3/8ccK9Gt9e9/SSlC5YfJU92rwFvmtltUst3EPiEinLLXbh/AFb7zOsTpCb92VwyZvaMmS0uloHtwLg77fGH7QHO5DGEPi5ngd0+k/4KMFNqC9RGVw/xLVJ+hd/bPpu+AlgNXK7IwYAvgQlJH5Z2Zc+ul1sTcnOPF8xsiS8/DWwj9eEvAcP+sO7sikyHgVEfzdTldqP0ZmykHnI5u1qeV0n7JXUkvUiqY6OS3qGq3KqYWV3IjTTz+yupj3Ygs8tK0gz+VeB64UPqPV0EfgMuAEtr8jlBGjb/ReqPvdvLhTRz/qnn+DOwIZPfcT/+NX9xDpQef8D9fgGGKvTaRGqDXAPG/LajCdn1ccuemx9rDfCTe4wDB0vnxmXS5Og3wJO+/Slfv+n7V2ZwG/XsxoGvmPvmSe3nhB93C3PfKqkkt/jlZBAEQcvI3SoJgiAIFkgU7iAIgpYRhTsIgqBlROEOgiBoGVG4gyAIWkYU7iAIgpYRhTsIgqBlROEOgiBoGf8BWrDWh9zMdxMAAAAASUVORK5CYII=\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",
+ "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",
+ "పైన ఉన్న రివార్డ్ ఫంక్షన్ ను ఆట నియమాల ప్రకారం మార్చండి, గేమ్ గెలవడానికి ఉత్తమ వ్యూహాన్ని నేర్చుకోవడానికి రీన్ఫోర్స్మెంట్ లెర్నింగ్ అల్గోరిథమ్ ను నడపండి, మరియు గేమ్ గెలిచిన మరియు ఓడిపోయిన సంఖ్యల పరంగా రాండమ్ వాక్ ఫలితాలను మీ అల్గోరిథమ్ తో పోల్చండి.\n",
+ "\n",
+ "\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/te/8-Reinforcement/2-Gym/README.md b/translations/te/8-Reinforcement/2-Gym/README.md
new file mode 100644
index 000000000..301e7d458
--- /dev/null
+++ b/translations/te/8-Reinforcement/2-Gym/README.md
@@ -0,0 +1,356 @@
+
+# కార్ట్పోల్ స్కేటింగ్
+
+మునుపటి పాఠంలో మేము పరిష్కరించిన సమస్య ఒక ఆటపాట సమస్యగా అనిపించవచ్చు, నిజ జీవిత పరిస్థితులకు అన్వయించదగినది కాదు అనిపించవచ్చు. ఇది నిజం కాదు, ఎందుకంటే అనేక నిజ ప్రపంచ సమస్యలు కూడా ఈ పరిస్థితిని పంచుకుంటాయి - చెస్ లేదా గో ఆడటం సహా. అవి సమానమైనవి, ఎందుకంటే మాకు కూడా ఒక బోర్డు మరియు ఇచ్చిన నియమాలు మరియు ఒక **విభిన్న స్థితి** ఉంటుంది.
+
+## [పూర్వ-పాఠం క్విజ్](https://ff-quizzes.netlify.app/en/ml/)
+
+## పరిచయం
+
+ఈ పాఠంలో మేము Q-లెర్నింగ్ యొక్క అదే సూత్రాలను **సతత స్థితి** ఉన్న సమస్యకు వర్తింపజేస్తాము, అంటే ఒకటి లేదా ఎక్కువ వాస్తవ సంఖ్యల ద్వారా ఇచ్చిన స్థితి. మేము క్రింది సమస్యను పరిష్కరిస్తాము:
+
+> **సమస్య**: పీటర్ నక్క నుండి తప్పించుకోవాలంటే, అతను వేగంగా కదలగలగాలి. పీటర్ ఎలా స్కేట్ చేయాలో, ముఖ్యంగా, సమతుల్యతను ఎలా ఉంచాలో Q-లెర్నింగ్ ఉపయోగించి నేర్చుకోవడం ఎలా అనేది మేము చూడబోతున్నాము.
+
+
+
+> పీటర్ మరియు అతని స్నేహితులు నక్క నుండి తప్పించుకోవడానికి సృజనాత్మకత చూపుతున్నారు! చిత్రం [Jen Looper](https://twitter.com/jenlooper) ద్వారా
+
+మేము సమతుల్యతను సాధించడానికి సులభీకరించిన వెర్షన్ అయిన **కార్ట్పోల్** సమస్యను ఉపయోగిస్తాము. కార్ట్పోల్ ప్రపంచంలో, మాకు ఎడమ లేదా కుడి వైపు కదలగల ఒక ఆడంబరమైన స్లైడర్ ఉంటుంది, మరియు లక్ష్యం స్లైడర్ పై ఒక నిలువెత్తు కాండాన్ని సమతుల్యం చేయడం.
+
+
+
+## ముందస్తు అవగాహన
+
+ఈ పాఠంలో, మేము **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()
+ ```
+
+ మీరు ఈ చిత్రానికి సమానమైన దృశ్యాన్ని చూడవచ్చు:
+
+ 
+
+1. సిమ్యులేషన్ సమయంలో, చర్య తీసుకోవడానికి ఎలా నిర్ణయించాలో తెలుసుకోవడానికి పరిశీలనలు పొందాలి. వాస్తవానికి, `step` ఫంక్షన్ ప్రస్తుత పరిశీలనలు, రివార్డ్ ఫంక్షన్, మరియు సిమ్యులేషన్ కొనసాగించవలసినదో లేదో సూచించే `done` ఫ్లాగ్ను తిరిగి ఇస్తుంది: (కోడ్ బ్లాక్ 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 వరకు ఉన్న సాదా సంఖ్యల జంటగా ఉండేది, కాబట్టి 8x8x2 ఆకారంలో numpy టెన్సర్ ద్వారా Q-టేబుల్ను సులభంగా ప్రాతినిధ్యం వహించగలిగాము. బిన్ల విభజనను ఉపయోగిస్తే, మా స్థితి వెక్టర్ పరిమాణం కూడా తెలుసు, కాబట్టి అదే విధానాన్ని ఉపయోగించి 20x20x10x10x2 ఆకారంలో స్థితిని ప్రాతినిధ్యం చేయవచ్చు (ఇక్కడ 2 చర్య స్థలం పరిమాణం, మొదటి కొలతలు పరిశీలన స్థలం యొక్క ప్రతి పారామీటర్ కోసం ఎంచుకున్న బిన్ల సంఖ్యలకు సరిపోతాయి).
+
+కానీ, కొన్నిసార్లు పరిశీలన స్థలం యొక్క ఖచ్చిత కొలతలు తెలియవు. `discretize` ఫంక్షన్ సందర్భంలో, మా స్థితి నిర్దిష్ట పరిమితులలోనే ఉంటుందని ఎప్పుడూ నమ్మకంగా చెప్పలేము, ఎందుకంటే కొన్ని అసలు విలువలకు ఎటువంటి పరిమితులు లేవు. అందువల్ల, మేము కొంత భిన్నమైన విధానాన్ని ఉపయోగించి Q-టేబుల్ను డిక్షనరీగా ప్రాతినిధ్యం చేస్తాము.
+
+1. *(state,action)* జంటను డిక్షనరీ కీగా ఉపయోగించి, విలువ 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)
+```
+
+
+
+ఈ గ్రాఫ్ నుండి ఏమీ చెప్పలేము, ఎందుకంటే యాదృచ్ఛిక శిక్షణ ప్రక్రియ స్వభావం వల్ల శిక్షణ సెషన్ల పొడవు చాలా మారుతుంది. ఈ గ్రాఫ్కు అర్థం చేసుకోవడానికి, మేము అనేక ప్రయోగాలపై, ఉదా: 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))
+```
+
+
+
+## హైపర్పారామీటర్ల మార్పులు
+
+లెర్నింగ్ను స్థిరంగా చేయడానికి, శిక్షణ సమయంలో కొన్ని హైపర్పారామీటర్లను సర్దుబాటు చేయడం మంచిది. ముఖ్యంగా:
+
+- **లెర్నింగ్ రేట్** `alpha` కోసం, మేము 1కి సమీపమైన విలువలతో ప్రారంభించి, తరువాత ఆ పరిమాణాన్ని తగ్గిస్తూ ఉండవచ్చు. కాలంతో, మేము Q-టేబుల్లో మంచి ప్రాబబిలిటీ విలువలు పొందుతాము, కాబట్టి వాటిని కొద్దిగా సవరించాలి, పూర్తిగా కొత్త విలువలతో మార్చకూడదు.
+
+- **epsilon పెంచండి**. మేము `epsilon` ను మెల్లగా పెంచాలని కోరుకోవచ్చు, తద్వారా తక్కువ అన్వేషణ మరియు ఎక్కువ ఉపయోగం జరుగుతుంది. సాధారణంగా తక్కువ `epsilon` విలువతో ప్రారంభించి దాన్ని సుమారు 1 వరకు పెంచడం మంచిది.
+
+> **పని 1**: హైపర్పారామీటర్ విలువలతో ఆడండి మరియు మీరు ఎక్కువ సమ్మిళిత రివార్డ్ సాధించగలరా చూడండి. మీరు 195 కంటే ఎక్కువ పొందుతున్నారా?
+> **Task 2**: సమస్యను అధికారికంగా పరిష్కరించడానికి, మీరు 100連続 రన్స్లో సగటు 195 రివార్డు పొందాలి. శిక్షణ సమయంలో దాన్ని కొలవండి మరియు మీరు అధికారికంగా సమస్యను పరిష్కరించారని నిర్ధారించుకోండి!
+
+## ఫలితాన్ని చర్యలో చూడటం
+
+శిక్షణ పొందిన మోడల్ ఎలా ప్రవర్తిస్తుందో నిజంగా చూడటం ఆసక్తికరం. సిమ్యులేషన్ను నడిపించి, శిక్షణ సమయంలో ఉపయోగించిన అదే చర్య ఎంపిక వ్యూహాన్ని అనుసరించండి, Q-టేబుల్లోని probability distribution ప్రకారం నమూనా తీసుకోండి: (కోడ్ బ్లాక్ 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()
+```
+
+మీకు ఇలాంటిది కనిపించాలి:
+
+
+
+---
+
+## 🚀సవాలు
+
+> **Task 3**: ఇక్కడ, మేము Q-టేబుల్ యొక్క తుది కాపీని ఉపయోగిస్తున్నాము, అది ఉత్తమమైనది కాకపోవచ్చు. మేము ఉత్తమ ప్రదర్శన Q-టేబుల్ను `Qbest` వేరియబుల్లో నిల్వ చేశామని గుర్తుంచుకోండి! `Qbest` ను `Q` పై కాపీ చేసి అదే ఉదాహరణను ప్రయత్నించి తేడా గమనించండి.
+
+> **Task 4**: ఇక్కడ మేము ప్రతి దశలో ఉత్తమ చర్యను ఎంచుకోలేదు, కానీ సంబంధిత probability distribution ప్రకారం నమూనా తీసుకున్నాము. ఎప్పుడూ అత్యధిక Q-టేబుల్ విలువ కలిగిన ఉత్తమ చర్యను ఎంచుకోవడం మరింత అర్థవంతమా? ఇది `np.argmax` ఫంక్షన్ ఉపయోగించి అత్యధిక Q-టేబుల్ విలువకు సంబంధించిన చర్య సంఖ్యను కనుగొనడం ద్వారా చేయవచ్చు. ఈ వ్యూహాన్ని అమలు చేసి బ్యాలెన్సింగ్ మెరుగవుతుందో చూడండి.
+
+## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ml/)
+
+## అసైన్మెంట్
+[Train a Mountain Car](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/te/8-Reinforcement/2-Gym/assignment.md b/translations/te/8-Reinforcement/2-Gym/assignment.md
new file mode 100644
index 000000000..81c197190
--- /dev/null
+++ b/translations/te/8-Reinforcement/2-Gym/assignment.md
@@ -0,0 +1,61 @@
+
+# ట్రైన్ మౌంటైన్ కార్
+
+[OpenAI జిమ్](http://gym.openai.com) అన్ని వాతావరణాలు ఒకే API అందించే విధంగా రూపొందించబడింది - అంటే ఒకే విధమైన `reset`, `step` మరియు `render` పద్ధతులు, మరియు **action space** మరియు **observation space** యొక్క ఒకే అభివృద్ధులు. అందువల్ల, తక్కువ కోడ్ మార్పులతో వేర్వేరు వాతావరణాలకు ఒకే రీఇన్ఫోర్స్మెంట్ లెర్నింగ్ అల్గోరిథమ్స్ అనుకూలపరచడం సాధ్యమవుతుంది.
+
+## ఒక మౌంటైన్ కార్ వాతావరణం
+
+[మౌంటైన్ కార్ వాతావరణం](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-లెర్నింగ్ అల్గోరిథమ్ కార్ట్పోల్ ఉదాహరణ నుండి తక్కువ కోడ్ మార్పులతో విజయవంతంగా అనుకూలపరచబడింది, 200 దశలలో జెండాను పట్టుకోవడం సమస్యను పరిష్కరించగలదు. | ఇంటర్నెట్ నుండి కొత్త Q-లెర్నింగ్ అల్గోరిథమ్ తీసుకున్నది, కానీ బాగా డాక్యుమెంటెడ్; లేదా ఉన్న అల్గోరిథమ్ తీసుకున్నది, కానీ కావలసిన ఫలితాలు అందలేదు | విద్యార్థి ఏ అల్గోరిథమ్ను విజయవంతంగా అనుకూలపరచలేకపోయాడు, కానీ పరిష్కారానికి గణనీయమైన దశలను తీసుకున్నాడు (స్థితి డిస్క్రిటైజేషన్, Q-టేబుల్ డేటా నిర్మాణం మొదలైనవి అమలు చేశాడు) |
+
+---
+
+
+**అస్పష్టత**:
+ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము.
+
\ No newline at end of file
diff --git a/translations/te/8-Reinforcement/2-Gym/notebook.ipynb b/translations/te/8-Reinforcement/2-Gym/notebook.ipynb
new file mode 100644
index 000000000..5002d7a18
--- /dev/null
+++ b/translations/te/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:23:13+00:00",
+ "source_file": "8-Reinforcement/2-Gym/notebook.ipynb",
+ "language_code": "te"
+ }
+ },
+ "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": [
+ "## క్యూ-టేబుల్ నిర్మాణం\n"
+ ],
+ "cell_type": "markdown",
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#code block 9"
+ ]
+ },
+ {
+ "source": [
+ "## క్యూలెర్నింగ్ ప్రారంభిద్దాం!\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",
+ "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",
+ "image/png": "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\n"
+ },
+ "metadata": {
+ "needs_background": "light"
+ }
+ }
+ ],
+ "source": [
+ "#code block 12"
+ ]
+ },
+ {
+ "source": [
+ "## వేరియింగ్ హైపర్పారామీటర్లు మరియు ఫలితాన్ని చర్యలో చూడటం\n",
+ "\n",
+ "ఇప్పుడు శిక్షణ పొందిన మోడల్ ఎలా ప్రవర్తిస్తుందో నిజంగా చూడటం ఆసక్తికరం. సిమ్యులేషన్ను నడపుదాం, మరియు శిక్షణ సమయంలో అనుసరించిన అదే చర్య ఎంపిక వ్యూహాన్ని అనుసరిస్తాము: Q-టేబుల్లోని probability distribution ప్రకారం నమూనా తీసుకోవడం:\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ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము.\n\n"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/translations/te/8-Reinforcement/2-Gym/solution/Julia/README.md b/translations/te/8-Reinforcement/2-Gym/solution/Julia/README.md
new file mode 100644
index 000000000..a7d8c3ef2
--- /dev/null
+++ b/translations/te/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/te/8-Reinforcement/2-Gym/solution/R/README.md b/translations/te/8-Reinforcement/2-Gym/solution/R/README.md
new file mode 100644
index 000000000..a688f7dda
--- /dev/null
+++ b/translations/te/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/te/8-Reinforcement/2-Gym/solution/notebook.ipynb b/translations/te/8-Reinforcement/2-Gym/solution/notebook.ipynb
new file mode 100644
index 000000000..2e196f298
--- /dev/null
+++ b/translations/te/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:27:22+00:00",
+ "source_file": "8-Reinforcement/2-Gym/solution/notebook.ipynb",
+ "language_code": "te"
+ }
+ },
+ "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": [
+ "## క్యూలెర్నింగ్ ప్రారంభిద్దాం!\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",
+ "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",
+ "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-టేబుల్లోని probability distribution ప్రకారం నమూనా తీసుకోవడం:\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ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం చేయించుకోవడం మంచిది. ఈ అనువాదం వలన కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదారుల బాధ్యత మేము తీసుకోము.\n\n"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/translations/te/8-Reinforcement/README.md b/translations/te/8-Reinforcement/README.md
new file mode 100644
index 000000000..bbf691683
--- /dev/null
+++ b/translations/te/8-Reinforcement/README.md
@@ -0,0 +1,69 @@
+
+# రీన్ఫోర్స్మెంట్ లెర్నింగ్ పరిచయం
+
+రీన్ఫోర్స్మెంట్ లెర్నింగ్, RL, పర్యవేక్షిత లెర్నింగ్ మరియు పర్యవేక్షణ లేని లెర్నింగ్ తరువాత ఒక ప్రాథమిక మెషీన్ లెర్నింగ్ పద్ధతిగా భావించబడుతుంది. RL అన్నది నిర్ణయాల గురించి: సరైన నిర్ణయాలను తీసుకోవడం లేదా కనీసం వాటి నుండి నేర్చుకోవడం.
+
+మీకు స్టాక్ మార్కెట్ వంటి అనుకరణాత్మక వాతావరణం ఉందని ఊహించుకోండి. మీరు ఒక నిర్దిష్ట నియంత్రణను విధిస్తే ఏమవుతుంది? అది సానుకూల లేదా ప్రతికూల ప్రభావం కలిగిస్తుందా? ఏదైనా ప్రతికూలం జరిగితే, మీరు ఆ _ప్రతికూల రీన్ఫోర్స్మెంట్_ తీసుకుని, దానినుండి నేర్చుకుని, మార్గాన్ని మార్చుకోవాలి. అది సానుకూల ఫలితం అయితే, మీరు ఆ _సానుకూల రీన్ఫోర్స్మెంట్_ పై ఆధారపడి నిర్మించుకోవాలి.
+
+
+
+> పీటర్ మరియు అతని స్నేహితులు ఆకలితో ఉన్న నక్క నుండి తప్పించుకోవాలి! చిత్రం [Jen Looper](https://twitter.com/jenlooper) ద్వారా
+
+## ప్రాంతీయ విషయం: పీటర్ మరియు నక్క (రష్యా)
+
+[పీటర్ మరియు నక్క](https://en.wikipedia.org/wiki/Peter_and_the_Wolf) అనేది రష్యన్ సంగీతకారుడు [సెర్గే ప్రోకోఫీవ్](https://en.wikipedia.org/wiki/Sergei_Prokofiev) రాసిన సంగీత కథ. ఇది యువ పయనికుడు పీటర్ గురించి, అతను ధైర్యంగా తన ఇంటి నుండి అడవి క్లియర్ చేయడానికి వెళ్లి నక్కను వెంబడిస్తాడు. ఈ విభాగంలో, మేము పీటర్కు సహాయపడే మెషీన్ లెర్నింగ్ అల్గోరిథమ్స్ను శిక్షణ ఇస్తాము:
+
+- **చుట్టుపక్కల ప్రాంతాన్ని అన్వేషించండి** మరియు ఉత్తమ నావిగేషన్ మ్యాప్ను నిర్మించండి
+- **స్కేట్బోర్డ్ను ఉపయోగించడం మరియు దానిపై సమతుల్యం సాధించడం నేర్చుకోండి**, తద్వారా వేగంగా చలించగలుగుతాడు.
+
+[](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)**, ఇక్కడ మనకు చాలా unlabeled డేటా ఉంటుంది, దానిని మోడల్ను ప్రీ-ట్రెయిన్ చేయడానికి ఉపయోగించవచ్చు.
+- **[రీన్ఫోర్స్మెంట్ లెర్నింగ్](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)
+
+## క్రెడిట్స్
+
+"Introduction to Reinforcement Learning" ను ♥️ తో [Dmitry Soshnikov](http://soshnikov.com) రాశారు
+
+---
+
+
+**అస్పష్టత**:
+ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.
+
\ No newline at end of file
diff --git a/translations/te/9-Real-World/1-Applications/README.md b/translations/te/9-Real-World/1-Applications/README.md
new file mode 100644
index 000000000..1a0718609
--- /dev/null
+++ b/translations/te/9-Real-World/1-Applications/README.md
@@ -0,0 +1,162 @@
+
+# పోస్ట్స్క్రిప్ట్: వాస్తవ ప్రపంచంలో మెషీన్ లెర్నింగ్
+
+
+
+> స్కెచ్నోట్ [టోమోమీ ఇమురా](https://www.twitter.com/girlie_mac) ద్వారా
+
+ఈ పాఠ్యक्रमంలో, మీరు శిక్షణ కోసం డేటాను సిద్ధం చేయడం మరియు మెషీన్ లెర్నింగ్ మోడల్స్ సృష్టించడానికి అనేక మార్గాలను నేర్చుకున్నారు. మీరు క్లాసిక్ రిగ్రెషన్, క్లస్టరింగ్, వర్గీకరణ, సహజ భాషా ప్రాసెసింగ్, మరియు టైమ్ సిరీస్ మోడల్స్ సిరీస్ను నిర్మించారు. అభినందనలు! ఇప్పుడు, మీరు ఆలోచిస్తున్నారా ఇది అంతా ఏం కోసం... ఈ మోడల్స్కు వాస్తవ ప్రపంచంలో ఏవైనా అనువర్తనాలు ఏమిటి?
+
+ఇండస్ట్రీలో ఎక్కువ ఆసక్తి సాధించినది AI, ఇది సాధారణంగా డీప్ లెర్నింగ్ను ఉపయోగిస్తుంది, అయినప్పటికీ క్లాసికల్ మెషీన్ లెర్నింగ్ మోడల్స్కు ఇంకా విలువైన అనువర్తనాలు ఉన్నాయి. మీరు ఈ అనువర్తనాలలో కొన్ని ఈ రోజు కూడా ఉపయోగించవచ్చు! ఈ పాఠంలో, మీరు ఎనిమిది విభిన్న పరిశ్రమలు మరియు విషయం-విషయ డొమైన్లు ఈ రకమైన మోడల్స్ను ఎలా ఉపయోగించి తమ అనువర్తనాలను మరింత పనితీరు, నమ్మకదారితనం, తెలివితేట, మరియు వినియోగదారులకు విలువైనదిగా మార్చుతున్నారో అన్వేషిస్తారు.
+
+## [పూర్వ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ml/)
+
+## 💰 ఫైనాన్స్
+
+ఫైనాన్స్ రంగం మెషీన్ లెర్నింగ్కు అనేక అవకాశాలను అందిస్తుంది. ఈ ప్రాంతంలోని అనేక సమస్యలు ML ఉపయోగించి మోడల్ చేయబడతాయి మరియు పరిష్కరించబడతాయి.
+
+### క్రెడిట్ కార్డ్ మోసపూరిత గుర్తింపు
+
+ముందుగా కోర్సులో [k-మీన్స్ క్లస్టరింగ్](../../5-Clustering/2-K-Means/README.md) గురించి నేర్చుకున్నాము, కానీ ఇది క్రెడిట్ కార్డ్ మోసపూరిత సమస్యలను ఎలా పరిష్కరిస్తుంది?
+
+క్రెడిట్ కార్డ్ మోసపూరిత గుర్తింపు సాంకేతికతలో **అసాధారణ గుర్తింపు** అనే పద్ధతిలో k-మీన్స్ క్లస్టరింగ్ ఉపయోగపడుతుంది. అసాధారణాలు లేదా డేటా సెట్పై పరిశీలనలలో వ్యత్యాసాలు క్రెడిట్ కార్డ్ సాధారణంగా ఉపయోగించబడుతున్నదా లేదా ఏదైనా అసాధారణం జరుగుతున్నదా అని చెప్పగలవు. క్రింద లింక్ చేసిన పత్రంలో చూపినట్లుగా, మీరు క్రెడిట్ కార్డ్ డేటాను k-మీన్స్ క్లస్టరింగ్ అల్గోరిథం ఉపయోగించి వర్గీకరించవచ్చు మరియు ప్రతి లావాదేవీని అది ఎంత అసాధారణంగా కనిపిస్తుందో ఆధారంగా ఒక క్లస్టర్కు కేటాయించవచ్చు. ఆపై, మోసపూరిత మరియు చట్టబద్ధ లావాదేవీల కోసం అత్యంత ప్రమాదకరమైన క్లస్టర్లను మూల్యాంకనం చేయవచ్చు.
+[సూచన](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/)
+
+## 🎓 విద్య
+
+విద్య రంగం కూడా మెషీన్ లెర్నింగ్ను వర్తింపజేయడానికి చాలా ఆసక్తికరమైన ప్రాంతం. పరీక్షలలో లేదా వ్యాసాలలో మోసం గుర్తించడం లేదా సవరణ ప్రక్రియలో అనుకోకుండా లేదా ఉద్దేశపూర్వకంగా ఉన్న పక్షపాతాన్ని నిర్వహించడం వంటి సమస్యలు ఉన్నాయి.
+
+### విద్యార్థి ప్రవర్తన అంచనా
+
+[Coursera](https://coursera.com), ఒక ఆన్లైన్ ఓపెన్ కోర్సు ప్రొవైడర్, అనేక ఇంజనీరింగ్ నిర్ణయాలను చర్చించే గొప్ప టెక్ బ్లాగ్ కలిగి ఉంది. ఈ కేసు స్టడీలో, వారు తక్కువ NPS (నెట్ ప్రమోటర్ స్కోర్) రేటింగ్ మరియు కోర్సు నిలుపుదల లేదా డ్రాప్-ఆఫ్ మధ్య ఏదైనా సంబంధం ఉందా అని అన్వేషించడానికి రిగ్రెషన్ లైన్ను ప్లాట్ చేశారు.
+[సూచన](https://medium.com/coursera-engineering/controlled-regression-quantifying-the-impact-of-course-quality-on-learner-retention-31f956bd592a)
+
+### పక్షపాతం తగ్గించడం
+
+[Grammarly](https://grammarly.com), ఒక రైటింగ్ అసిస్టెంట్, దాని ఉత్పత్తులలో సున్నితమైన [సహజ భాషా ప్రాసెసింగ్ సిస్టమ్స్](../../6-NLP/README.md) ఉపయోగిస్తుంది. వారు తమ టెక్ బ్లాగ్లో మెషీన్ లెర్నింగ్లో లింగ పక్షపాతాన్ని ఎలా ఎదుర్కొన్నారో గురించి ఆసక్తికరమైన కేసు స్టడీ ప్రచురించారు, ఇది మీరు మా [ప్రారంభ న్యాయసమ్మతత పాఠంలో](../../1-Introduction/3-fairness/README.md) నేర్చుకున్నారు.
+[సూచన](https://www.grammarly.com/blog/engineering/mitigating-gender-bias-in-autocorrect/)
+
+## 👜 రిటైల్
+
+రిటైల్ రంగం ఖచ్చితంగా మెషీన్ లెర్నింగ్ ఉపయోగం ద్వారా లాభపడుతుంది, కస్టమర్ ప్రయాణాన్ని మెరుగుపరచడం నుండి సరుకుల నిల్వను ఆప్టిమైజ్ చేయడం వరకు.
+
+### కస్టమర్ ప్రయాణాన్ని వ్యక్తిగతీకరించడం
+
+Wayfair, ఫర్నిచర్ వంటి హోమ్ గూడ్స్ అమ్మే కంపెనీ, కస్టమర్లకు వారి రుచి మరియు అవసరాలకు సరిపోయే సరుకులను కనుగొనడంలో సహాయం చేయడం అత్యంత ముఖ్యమైనది. ఈ వ్యాసంలో, కంపెనీ ఇంజనీర్లు ML మరియు NLP ఎలా ఉపయోగిస్తారో వివరిస్తారు "కస్టమర్లకు సరైన ఫలితాలను చూపించడానికి". ముఖ్యంగా, వారి Query Intent Engine ఎంటిటీ ఎక్స్ట్రాక్షన్, క్లాసిఫైయర్ శిక్షణ, ఆస్తి మరియు అభిప్రాయ ఎక్స్ట్రాక్షన్, మరియు కస్టమర్ సమీక్షలపై భావోద్వేగ ట్యాగింగ్ ఉపయోగించి నిర్మించబడింది. ఇది ఆన్లైన్ రిటైల్లో NLP ఎలా పనిచేస్తుందో క్లాసిక్ ఉదాహరణ.
+[సూచన](https://www.aboutwayfair.com/tech-innovation/how-we-use-machine-learning-and-natural-language-processing-to-empower-search)
+
+### నిల్వ నిర్వహణ
+
+[StitchFix](https://stitchfix.com) వంటి ఆవిష్కరణాత్మక, చురుకైన కంపెనీలు, కస్టమర్ సిఫార్సులు మరియు నిల్వ నిర్వహణ కోసం ML పై బలంగా ఆధారపడతాయి. వారి స్టైలింగ్ టీమ్స్ వారి మెర్చండైజింగ్ టీమ్స్తో కలిసి పనిచేస్తాయి: "మా ఒక డేటా సైంటిస్ట్ జెనెటిక్ అల్గోరిథం తో ఆడుతూ దాన్ని దుస్తులపై వర్తింపజేసి, ఇప్పటి వరకు లేని విజయవంతమైన దుస్తులను అంచనా వేసాడు. మేము దాన్ని మెర్చండైజ్ టీమ్కు తీసుకువచ్చాము, ఇప్పుడు వారు దాన్ని ఒక సాధనంగా ఉపయోగించవచ్చు."
+[సూచన](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)
+
+### ఆసుపత్రి తిరిగి చేర్చడం నిర్వహణ
+
+ఆసుపత్రి సంరక్షణ ఖరీదైనది, ముఖ్యంగా రోగులను తిరిగి చేర్చాల్సినప్పుడు. ఈ పత్రం ఒక కంపెనీ ML ఉపయోగించి తిరిగి చేర్చే అవకాశాన్ని [క్లస్టరింగ్](../../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) ఇక్కడ నిర్మించవచ్చు), అయినప్పటికీ క్లాసిక్ ML ఈ పనిలో ఇంకా ప్రాధాన్యం కలిగి ఉంది.
+
+పశుపాలన జంతువుల కదలికలను ట్రాక్ చేయడానికి సెన్సార్లు మరియు IoT ఈ రకమైన దృశ్య ప్రాసెసింగ్ ఉపయోగిస్తాయి, కానీ ప్రాథమిక ML సాంకేతికతలు డేటాను ప్రీప్రాసెస్ చేయడానికి ఉపయోగకరంగా ఉంటాయి. ఉదాహరణకు, ఈ పత్రంలో, గొర్రెలు భంగిమలను పర్యవేక్షించి వివిధ క్లాసిఫైయర్ అల్గోరిథమ్స్ ఉపయోగించి విశ్లేషించారు. మీరు పేజీ 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)
+
+## 💼 బీమా
+
+బీమా రంగం కూడా ఆర్థిక మరియు యాక్చ్యూరియల్ మోడల్స్ నిర్మించడానికి మరియు ఆప్టిమైజ్ చేయడానికి ML ఉపయోగిస్తుంది.
+
+### అస్థిరత నిర్వహణ
+
+MetLife, ఒక జీవిత బీమా ప్రొవైడర్, వారి ఆర్థిక మోడల్స్లో అస్థిరతను ఎలా విశ్లేషించి తగ్గిస్తారో స్పష్టంగా చెప్తుంది. ఈ వ్యాసంలో మీరు బైనరీ మరియు ఆర్డినల్ వర్గీకరణ విజువలైజేషన్లు గమనిస్తారు. మీరు ఫోర్కాస్టింగ్ విజువలైజేషన్లను కూడా కనుగొంటారు.
+[సూచన](https://investments.metlife.com/content/dam/metlifecom/us/investments/insights/research-topics/macro-strategy/pdf/MetLifeInvestmentManagement_MachineLearnedRanking_070920.pdf)
+
+## 🎨 కళలు, సంస్కృతి, మరియు సాహిత్యం
+
+కళలలో, ఉదాహరణకు జర్నలిజంలో, అనేక ఆసక్తికర సమస్యలు ఉన్నాయి. ఫేక్ న్యూస్ గుర్తించడం ఒక పెద్ద సమస్య, ఇది ప్రజల అభిప్రాయాన్ని ప్రభావితం చేయడమే కాకుండా ప్రజాస్వామ్యాలను కూడా కూల్చివేయగలదు. మ్యూజియంలు కూడా ఆర్టిఫాక్ట్స్ మధ్య లింకులను కనుగొనడం నుండి వనరుల ప్రణాళిక వరకు ML ఉపయోగించి లాభపడతాయి.
+
+### ఫేక్ న్యూస్ గుర్తింపు
+
+ఈ రోజుల్లో మీడియా లో ఫేక్ న్యూస్ గుర్తించడం ఒక పిల్లి మరియు ఎలుక ఆటలా మారింది. ఈ వ్యాసంలో, పరిశోధకులు మేము అధ్యయనం చేసిన అనేక ML సాంకేతికతలను కలిపిన ఒక సిస్టమ్ను పరీక్షించి ఉత్తమ మోడల్ను అమలు చేయవచ్చని సూచిస్తున్నారు: "ఈ సిస్టమ్ సహజ భాషా ప్రాసెసింగ్ ఆధారంగా డేటా నుండి లక్షణాలను తీసుకుంటుంది మరియు ఆ లక్షణాలను నైవ్ బేస్, సపోర్ట్ వెక్టర్ మెషీన్ (SVM), రాండమ్ ఫారెస్ట్ (RF), స్టోకాస్టిక్ గ్రాడియెంట్ డిసెంట్ (SGD), మరియు లాజిస్టిక్ రిగ్రెషన్ (LR) వంటి మెషీన్ లెర్నింగ్ క్లాసిఫైయర్ల శిక్షణకు ఉపయోగిస్తారు."
+[సూచన](https://www.irjet.net/archives/V7/i6/IRJET-V7I6688.pdf)
+
+ఈ వ్యాసం వివిధ ML డొమైన్లను కలిపి ఫేక్ న్యూస్ వ్యాప్తిని ఆపడానికి మరియు నిజమైన నష్టం కలిగించకుండా సహాయపడే ఆసక్తికర ఫలితాలను ఎలా ఉత్పత్తి చేయగలదో చూపిస్తుంది; ఈ సందర్భంలో, COVID చికిత్సల గురించి ప్రచారాలు మోబు హింసకు దారితీసినప్పుడు ఇది ప్రేరణ అయింది.
+
+### మ్యూజియం ML
+
+మ్యూజియంలు AI విప్లవం అంచున ఉన్నాయి, ఇందులో సేకరణలను కేటలాగ్ చేయడం మరియు డిజిటైజ్ చేయడం మరియు ఆర్టిఫాక్ట్స్ మధ్య లింకులను కనుగొనడం సాంకేతికత అభివృద్ధితో సులభమవుతోంది. [In Codice Ratio](https://www.sciencedirect.com/science/article/abs/pii/S0306457321001035#:~:text=1.,studies%20over%20large%20historical%20sources.) వంటి ప్రాజెక్టులు వేటికన్ ఆర్కైవ్స్ వంటి అందుబాటులో లేని సేకరణల రహస్యాలను తెరవడంలో సహాయపడుతున్నాయి. కానీ, మ్యూజియంల వ్యాపార భాగం కూడా ML మోడల్స్ నుండి లాభపడుతుంది.
+
+ఉదాహరణకు, ఆర్ట్ ఇన్స్టిట్యూట్ ఆఫ్ చికాగో ప్రేక్షకులు ఏమి ఆసక్తి చూపిస్తారో మరియు వారు ఎప్పుడు ప్రదర్శనలకు హాజరవుతారో అంచనా వేయడానికి మోడల్స్ నిర్మించింది. లక్ష్యం ప్రతి సారి వినియోగదారు మ్యూజియం సందర్శించినప్పుడు వ్యక్తిగతీకరించిన మరియు ఆప్టిమైజ్ చేసిన సందర్శక అనుభవాలను సృష్టించడం. "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/)
+
+## 🚀 సవాలు
+
+ఈ పాఠ్యక్రమంలో మీరు నేర్చుకున్న కొన్ని సాంకేతికతలతో లాభపడే మరొక రంగాన్ని గుర్తించండి, మరియు అది ML ను ఎలా ఉపయోగిస్తుందో కనుగొనండి.
+## [లెక్చర్ తర్వాత క్విజ్](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/te/9-Real-World/1-Applications/assignment.md b/translations/te/9-Real-World/1-Applications/assignment.md
new file mode 100644
index 000000000..24da204f0
--- /dev/null
+++ b/translations/te/9-Real-World/1-Applications/assignment.md
@@ -0,0 +1,29 @@
+
+# ఒక ML స్కావెంజర్ హంట్
+
+## సూచనలు
+
+ఈ పాఠంలో, మీరు క్లాసికల్ ML ఉపయోగించి పరిష్కరించబడిన అనేక వాస్తవ జీవిత వినియోగాల గురించి నేర్చుకున్నారు. డీప్ లెర్నింగ్, AIలో కొత్త సాంకేతికతలు మరియు సాధనాల ఉపయోగం, మరియు న్యూరల్ నెట్వర్క్లను ఉపయోగించడం ఈ రంగాలలో సహాయపడే సాధనాల ఉత్పత్తిని వేగవంతం చేయడంలో సహాయపడినప్పటికీ, ఈ పాఠ్యక్రమంలో ఉన్న సాంకేతికతలను ఉపయోగించే క్లాసిక్ ML ఇంకా గొప్ప విలువను కలిగి ఉంది.
+
+ఈ అసైన్మెంట్లో, మీరు ఒక హాకథాన్లో పాల్గొంటున్నారని ఊహించుకోండి. ఈ పాఠ్యక్రమంలో నేర్చుకున్నదాన్ని ఉపయోగించి క్లాసిక్ ML ద్వారా ఈ పాఠంలో చర్చించిన రంగాలలో ఒక సమస్యను పరిష్కరించడానికి ఒక పరిష్కారాన్ని ప్రతిపాదించండి. మీరు మీ ఆలోచనను ఎలా అమలు చేస్తారో చర్చించే ఒక ప్రెజెంటేషన్ సృష్టించండి. మీరు నమూనా డేటాను సేకరించి మీ భావనకు మద్దతుగా ఒక ML మోడల్ను నిర్మిస్తే అదనపు పాయింట్లు పొందవచ్చు!
+
+## రూబ్రిక్
+
+| ప్రమాణాలు | అద్భుతమైనది | సరిపడినది | మెరుగుదల అవసరం |
+| -------- | ------------------------------------------------------------------- | ------------------------------------------------- | ---------------------- |
+| | ఒక పవర్పాయింట్ ప్రెజెంటేషన్ అందించబడింది - మోడల్ నిర్మాణానికి బోనస్ | ఒక సృజనాత్మకత లేని, ప్రాథమిక ప్రెజెంటేషన్ అందించబడింది | పని అసంపూర్ణంగా ఉంది |
+
+---
+
+
+**అస్పష్టత**:
+ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము.
+
\ No newline at end of file
diff --git a/translations/te/9-Real-World/2-Debugging-ML-Models/README.md b/translations/te/9-Real-World/2-Debugging-ML-Models/README.md
new file mode 100644
index 000000000..13f133876
--- /dev/null
+++ b/translations/te/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)
+
+> 
+
+## లోపాల విశ్లేషణ
+
+ఖచ్చితత్వాన్ని కొలవడానికి ఉపయోగించే సాంప్రదాయ మోడల్ పనితీరు మెట్రిక్స్ ఎక్కువగా సరైన మరియు తప్పు అంచనాల ఆధారంగా లెక్కింపులు. ఉదాహరణకు, ఒక మోడల్ 89% సార్లు ఖచ్చితంగా ఉందని, లోపం నష్టం 0.001 అని నిర్ణయించడం మంచి పనితీరు అని పరిగణించవచ్చు. లోపాలు సాధారణంగా మీ ప్రాథమిక డేటాసెట్లో సమానంగా పంపిణీ కావు. మీరు 89% మోడల్ ఖచ్చితత్వ స్కోరు పొందవచ్చు కానీ మోడల్ 42% సార్లు విఫలమవుతున్న డేటా ప్రాంతాలు వేరుగా ఉండవచ్చు. ఈ విఫలత నమూనాలు కొన్ని డేటా గుంపులతో న్యాయం లేదా నమ్మకదగినత సమస్యలకు దారితీస్తాయి. మోడల్ బాగా పనిచేస్తున్న లేదా చేయని ప్రాంతాలను అర్థం చేసుకోవడం అవసరం. మోడల్లో ఎక్కువ లోపాలు ఉన్న డేటా ప్రాంతాలు ముఖ్యమైన డేటా జనాభా కావచ్చు.
+
+
+
+RAI డాష్బోర్డ్లో లోపాల విశ్లేషణ భాగం వివిధ కోహార్ట్లలో మోడల్ విఫలత ఎలా పంపిణీ అయిందో చెట్టు విజువలైజేషన్ ద్వారా చూపిస్తుంది. ఇది మీ డేటాసెట్లో ఎక్కువ లోపాలున్న లక్షణాలు లేదా ప్రాంతాలను గుర్తించడంలో ఉపయోగపడుతుంది. మోడల్ లోపాల ఎక్కువగా ఎక్కడ నుండి వస్తున్నాయో చూసి, మీరు మూల కారణాన్ని పరిశీలించవచ్చు. మీరు విశ్లేషణ కోసం డేటా కోహార్ట్లను కూడా సృష్టించవచ్చు. ఈ డేటా కోహార్ట్లు డీబగ్గింగ్ ప్రక్రియలో సహాయపడతాయి, ఎందుకు ఒక కోహార్ట్లో మోడల్ పనితీరు మంచిది కానీ మరొకదిలో లోపభూయిష్టమో తెలుసుకోవడానికి.
+
+
+
+చెట్టు మ్యాప్పై విజువల్ సూచికలు సమస్య ప్రాంతాలను త్వరగా గుర్తించడంలో సహాయపడతాయి. ఉదాహరణకు, చెట్టు నోడ్ యొక్క ఎరుపు రంగు గాఢత ఎక్కువైతే, లోపాల రేటు ఎక్కువగా ఉంటుంది.
+
+హీట్ మ్యాప్ మరో విజువలైజేషన్ ఫంక్షనాలిటీ, ఇది ఒకటి లేదా రెండు లక్షణాలను ఉపయోగించి లోపాల రేటును పరిశీలించడానికి ఉపయోగపడుతుంది, మొత్తం డేటాసెట్ లేదా కోహార్ట్లలో మోడల్ లోపాలకు కారణం కనుగొనడానికి.
+
+
+
+లోపాల విశ్లేషణను ఉపయోగించండి, మీరు:
+
+* మోడల్ విఫలతలు డేటాసెట్ మరియు అనేక ఇన్పుట్ మరియు లక్షణ పరిమాణాలలో ఎలా పంపిణీ అయ్యాయో లోతుగా అర్థం చేసుకోవాలి.
+* సమగ్ర పనితీరు మెట్రిక్స్ను విభజించి తప్పు ఉన్న కోహార్ట్లను ఆటోమేటిక్గా కనుగొని లక్ష్యిత పరిష్కార చర్యలకు దారితీయాలి.
+
+## మోడల్ అవలోకనం
+
+మెషీన్ లెర్నింగ్ మోడల్ పనితీరును అంచనా వేయడం అంటే దాని ప్రవర్తనను సమగ్రంగా అర్థం చేసుకోవడం. ఇది లోపాల రేటు, ఖచ్చితత్వం, రీకాల్, ప్రెసిషన్ లేదా MAE (Mean Absolute Error) వంటి metrics ను సమీక్షించడం ద్వారా సాధించవచ్చు, పనితీరు మెట్రిక్స్లో వ్యత్యాసాలను కనుగొనడానికి. ఒక పనితీరు మెట్రిక్ బాగుండవచ్చు, కానీ మరొక మెట్రిక్ లో లోపాలు కనిపించవచ్చు. అంతేకాక, మొత్తం డేటాసెట్ లేదా కోహార్ట్లలో metrics ను తులనాత్మకంగా పరిశీలించడం మోడల్ ఎక్కడ బాగా పనిచేస్తుందో లేదా చేయదో తెలియజేస్తుంది. ఇది ప్రత్యేకంగా సున్నితమైన లక్షణాలు (ఉదా: రోగి జాతి, లింగం, వయస్సు) ఉన్న కోహార్ట్లలో మోడల్ పనితీరును చూడటానికి ముఖ్యమైనది, ఇది మోడల్ లోపాలను వెలుగులోకి తీసుకురావచ్చు. ఉదాహరణకు, సున్నిత లక్షణాలు ఉన్న కోహార్ట్లో మోడల్ ఎక్కువ లోపాలు చూపిస్తే, అది మోడల్ లోపాలను సూచిస్తుంది.
+
+RAI డాష్బోర్డ్లో మోడల్ అవలోకనం భాగం కేవలం కోహార్ట్లో డేటా ప్రాతినిధ్యం పనితీరు మెట్రిక్స్ను విశ్లేషించడంలో మాత్రమే కాకుండా, వాడుకదారులకు వివిధ కోహార్ట్లలో మోడల్ ప్రవర్తనను తులనాత్మకంగా చూడటానికి అవకాశం ఇస్తుంది.
+
+
+
+ఈ భాగం లక్షణాల ఆధారిత విశ్లేషణ ఫంక్షనాలిటీ వాడుకదారులకు ఒక నిర్దిష్ట లక్షణంలో డేటా ఉపగుంపులను కుదించడానికి సహాయపడుతుంది, తద్వారా సూక్ష్మ స్థాయిలో అసాధారణతలను గుర్తించవచ్చు. ఉదాహరణకు, డాష్బోర్డ్లో ఒక వాడుకదారు ఎంచుకున్న లక్షణం కోసం ఆటోమేటిక్గా కోహార్ట్లను సృష్టించే ఇంటెలిజెన్స్ ఉంది (ఉదా: *"time_in_hospital < 3"* లేదా *"time_in_hospital >= 7"*). ఇది పెద్ద డేటా గుంపులోని ఒక లక్షణాన్ని వేరుచేసి, అది మోడల్ లోపాలపై కీలక ప్రభావం చూపుతున్నదా అని చూడటానికి సహాయపడుతుంది.
+
+
+
+మోడల్ అవలోకనం భాగం రెండు తరహా వ్యత్యాస మెట్రిక్స్ను మద్దతు ఇస్తుంది:
+
+**మోడల్ పనితీరు వ్యత్యాసం**: ఈ మెట్రిక్స్ ఎంపిక చేసిన పనితీరు మెట్రిక్ విలువలలో డేటా ఉపగుంపుల మధ్య వ్యత్యాసాన్ని లెక్కిస్తాయి. కొన్ని ఉదాహరణలు:
+
+* ఖచ్చితత్వం రేటులో వ్యత్యాసం
+* లోపాల రేటులో వ్యత్యాసం
+* ప్రెసిషన్లో వ్యత్యాసం
+* రీకాల్లో వ్యత్యాసం
+* సగటు సార్వత్రిక లోపం (MAE)లో వ్యత్యాసం
+
+**ఎంపిక రేటులో వ్యత్యాసం**: ఈ మెట్రిక్ ఉపగుంపుల మధ్య ఎంపిక రేటులో (అనుకూల అంచనా) వ్యత్యాసాన్ని కలిగి ఉంటుంది. ఉదాహరణకు, రుణ ఆమోద రేట్లలో వ్యత్యాసం. ఎంపిక రేటు అంటే ప్రతి తరగతిలో 1గా (బైనరీ వర్గీకరణలో) వర్గీకరించిన డేటా పాయింట్ల శాతం లేదా అంచనా విలువల పంపిణీ (రెగ్రెషన్లో).
+
+## డేటా విశ్లేషణ
+
+> "మీరు డేటాను చాలాసేపు పీడిస్తే, అది ఏదైనా ఒప్పుకుంటుంది" - రోనాల్డ్ కోస్
+
+ఈ వాక్యం తీవ్రంగా అనిపించవచ్చు, కానీ డేటాను ఏదైనా తర్కాన్ని మద్దతు ఇవ్వడానికి మానవీయంగా మార్చవచ్చు. అలాంటి మార్పులు కొన్నిసార్లు అనుకోకుండా జరుగుతాయి. మనుషులుగా, మనందరికీ పక్షపాతం ఉంటుంది, మరియు మీరు డేటాలో పక్షపాతం ప్రవేశపెడుతున్నప్పుడు అది తెలుసుకోవడం కష్టం. AI మరియు మెషీన్ లెర్నింగ్లో న్యాయాన్ని హామీ చేయడం ఒక క్లిష్టమైన సవాలు.
+
+సాంప్రదాయ మోడల్ పనితీరు మెట్రిక్స్లకు డేటా ఒక పెద్ద అంధ ప్రాంతం. మీరు అధిక ఖచ్చితత్వ స్కోర్లు పొందవచ్చు, కానీ ఇది మీ డేటాసెట్లో ఉండే డేటా పక్షపాతాన్ని ప్రతిబింబించకపోవచ్చు. ఉదాహరణకు, ఒక సంస్థలో ఉద్యోగుల డేటాసెట్లో 27% మహిళలు ఎగ్జిక్యూటివ్ స్థాయిలో ఉన్నారు మరియు 73% పురుషులు అదే స్థాయిలో ఉన్నారు అంటే, ఈ డేటాతో శిక్షణ పొందిన ఉద్యోగ ప్రకటన AI మోడల్ పెద్దగా పురుషుల ప్రేక్షకులను లక్ష్యంగా చేసుకోవచ్చు. ఈ అసమతుల్యత మోడల్ అంచనాను ఒక లింగాన్ని ప్రాధాన్యం ఇవ్వడానికి వక్రీకరిస్తుంది. ఇది AI మోడల్లో లింగ పక్షపాతం ఉన్న న్యాయ సమస్యను వెల్లడిస్తుంది.
+
+RAI డాష్బోర్డ్లో డేటా విశ్లేషణ భాగం డేటాసెట్లో అధిక మరియు తక్కువ ప్రాతినిధ్యం ఉన్న ప్రాంతాలను గుర్తించడంలో సహాయపడుతుంది. ఇది వాడుకదారులకు డేటా అసమతుల్యతల వల్ల లేదా నిర్దిష్ట డేటా గుంపు ప్రాతినిధ్యం లేకపోవడం వల్ల ఏర్పడిన లోపాలు మరియు న్యాయ సమస్యల మూల కారణాన్ని నిర్ధారించడంలో సహాయపడుతుంది. ఇది వాడుకదారులకు అంచనా మరియు వాస్తవ ఫలితాల, లోపాల గుంపులు, మరియు నిర్దిష్ట లక్షణాల ఆధారంగా డేటాసెట్లను విజువలైజ్ చేయడానికి అవకాశం ఇస్తుంది. కొన్నిసార్లు తక్కువ ప్రాతినిధ్యం ఉన్న డేటా గుంపును కనుగొనడం మోడల్ బాగా నేర్చుకోలేదని కూడా వెల్లడించవచ్చు, అందువల్ల ఎక్కువ లోపాలు ఉంటాయి. డేటా పక్షపాతం ఉన్న మోడల్ కేవలం న్యాయ సమస్య మాత్రమే కాకుండా, మోడల్ సమగ్రత లేదా నమ్మకదగినత లేని దాన్ని సూచిస్తుంది.
+
+
+
+డేటా విశ్లేషణను ఉపయోగించండి, మీరు:
+
+* వివిధ ఫిల్టర్లను ఎంచుకుని మీ డేటాను విభిన్న పరిమాణాలుగా (కోహార్ట్లుగా) విభజించి డేటా గణాంకాలను అన్వేషించండి.
+* వివిధ కోహార్ట్లు మరియు లక్షణ గుంపులలో మీ డేటాసెట్ పంపిణీని అర్థం చేసుకోండి.
+* న్యాయం, లోపాల విశ్లేషణ, మరియు కారణాత్మకత (ఇతర డాష్బోర్డ్ భాగాల నుండి పొందిన) సంబంధిత మీ కనుగొనుటలు మీ డేటాసెట్ పంపిణీ ఫలితమా అని నిర్ణయించండి.
+* ప్రాతినిధ్యం సమస్యలు, లేబుల్ శబ్దం, లక్షణ శబ్దం, లేబుల్ పక్షపాతం మరియు ఇలాంటి అంశాల వల్ల వచ్చే లోపాలను తగ్గించడానికి ఏ ప్రాంతాల్లో మరిన్ని డేటా సేకరించాలో నిర్ణయించండి.
+
+## మోడల్ వివరణాత్మకత
+
+మెషీన్ లెర్నింగ్ మోడల్స్ బ్లాక్ బాక్స్లుగా ఉంటాయి. మోడల్ అంచనాను ప్రభావితం చేసే ముఖ్యమైన డేటా లక్షణాలను అర్థం చేసుకోవడం సవాలుగా ఉంటుంది. ఒక మోడల్ ఎందుకు ఒక నిర్దిష్ట అంచనాను చేస్తుందో పారదర్శకత ఇవ్వడం ముఖ్యం. ఉదాహరణకు, ఒక AI వ్యవస్థ ఒక మధుమేహ రోగి 30 రోజుల్లో ఆసుపత్రికి తిరిగి చేరే ప్రమాదంలో ఉన్నాడని అంచనా వేస్తే, అది తన అంచనాకు కారణమైన మద్దతు డేటాను అందించగలగాలి. మద్దతు డేటా సూచికలు క్లినిషియన్లు లేదా ఆసుపత్రులకు బాగా సమాచారం ఉన్న నిర్ణయాలు తీసుకోవడంలో పారదర్శకతను తీసుకువస్తాయి. అదనంగా, ఒక వ్యక్తిగత రోగి కోసం మోడల్ ఎందుకు అంచనా వేసిందో వివరించడం ఆరోగ్య నియంత్రణలతో బాధ్యతను కలిగిస్తుంది. మీరు ప్రజల జీవితాలను ప్రభావితం చేసే విధంగా మెషీన్ లెర్నింగ్ మోడల్స్ ఉపయోగిస్తున్నప్పుడు, మోడల్ ప్రవర్తనను ప్రభావితం చేసే అంశాలను అర్థం చేసుకోవడం మరియు వివరించడం చాలా ముఖ్యం. మోడల్ వివరణాత్మకత మరియు వివరణాత్మకత ఈ పరిస్థితుల్లో ప్రశ్నలకు సమాధానాలు ఇస్తుంది:
+
+* మోడల్ డీబగ్గింగ్: నా మోడల్ ఈ తప్పు ఎందుకు చేసింది? నేను నా మోడల్ను ఎలా మెరుగుపరుచుకోవచ్చు?
+* మానవ-AI సహకారం: నేను మోడల్ నిర్ణయాలను ఎలా అర్థం చేసుకుని నమ్మగలను?
+* నియంత్రణ అనుగుణత: నా మోడల్ చట్టపరమైన అవసరాలను తీరుస్తుందా?
+
+RAI డాష్బోర్డ్లో లక్షణ ప్రాముఖ్యత భాగం మోడల్ డీబగ్గింగ్ మరియు మోడల్ అంచనాలు ఎలా జరుగుతున్నాయో సమగ్రంగా అర్థం చేసుకోవడంలో సహాయపడుతుంది. ఇది మెషీన్ లెర్నింగ్ నిపుణులు మరియు నిర్ణయ తీసుకునే వారు మోడల్ ప్రవర్తనను ప్రభావితం చేసే లక్షణాలను వివరించడానికి మరియు నియంత్రణ అనుగుణత కోసం సాక్ష్యాలు చూపడానికి ఉపయోగపడే టూల్. తరువాత, వాడుకదారులు గ్లోబల్ మరియు లోకల్ వివరణలను అన్వేషించి ఏ లక్షణాలు మోడల్ అంచనాలను ప్రభావితం చేస్తున్నాయో ధృవీకరించవచ్చు. గ్లోబల్ వివరణలు మోడల్ మొత్తం అంచనాపై ప్రభావం చూపిన టాప్ లక్షణాలను చూపిస్తాయి. లోకల్ వివరణలు వ్యక్తిగత కేసు కోసం మోడల్ అంచనాకు కారణమైన లక్షణాలను చూపిస్తాయి. లోకల్ వివరణలను అంచనా వేయడం ఒక నిర్దిష్ట కేసును డీబగ్ చేయడంలో లేదా ఆడిట్ చేయడంలో సహాయపడుతుంది, ఎందుకు మోడల్ ఖచ్చితమైన లేదా తప్పు అంచనాను ఇచ్చిందో అర్థం చేసుకోవడానికి.
+
+
+
+* గ్లోబల్ వివరణలు: ఉదాహరణకు, మధుమేహ ఆసుపత్రి తిరిగి చేరే మోడల్ మొత్తం ప్రవర్తనను ఏ లక్షణాలు ప్రభావితం చేస్తున్నాయి?
+* లోకల్ వివరణలు: ఉదాహరణకు, 60 సంవత్సరాల పైబడిన మధుమేహ రోగి గత ఆసుపత్రి చేర్పులతో 30 రోజుల్లో తిరిగి చేరే లేదా చేరని అంచనాకు కారణమైనది ఏమిటి?
+
+వివిధ కోహార్ట్లలో మోడల్ పనితీరును పరిశీలించే డీబగ్గింగ్ ప్రక్రియలో, లక్షణ ప్రాముఖ్యత కోహార్ట్లలో లక్షణం ఎంత ప్రభావం చూపుతుందో చూపిస్తుంది. ఇది మోడల్ లోపభూయిష్ట అంచనాలను ప్రభావితం చేస్తున్న లక్షణం ప్రభావం స్థాయిలను పోల్చేటప్పుడు అసాధారణతలను వెలుగులోకి తీసుకువస్తుంది. లక్షణ ప్రాముఖ్యత భాగం ఒక లక్షణంలోని విలువలు మోడల్ ఫలితాన్ని సానుకూలంగా లేదా ప్రతికూలంగా ప్రభావితం చేశాయో చూపిస్తుంది. ఉదాహరణకు, ఒక మోడల్ తప్పు అంచనాను ఇచ్చినప్పుడు, ఈ భాగం మీరు లోతుగా వెళ్ళి ఏ లక్షణాలు లేదా లక్షణ విలువలు అంచనాను ప్రభావితం చేశాయో గుర్తించడానికి అవకాశం ఇస్తుంది. ఈ స్థాయి వివరాలు కేవలం డీబగ్గింగ్లో కాకుండా ఆడిట్ పరిస్థితుల్లో పారదర్శకత మరియు బాధ్యతను అందిస్తాయి. చివరగా, ఈ భాగం న్యాయ సమస్యలను గుర్తించడంలో సహాయపడుతుంది. ఉదాహరణకు, జాతి లేదా లింగం వంటి సున్నిత లక్షణం మోడల్ అంచనాను ఎక్కువగా ప్రభావితం చేస్తే, ఇది మోడల్లో జాతి లేదా లింగ పక్షపాతం సూచన కావచ్చు.
+
+
+
+వివరణాత్మకతను ఉపయోగించండి, మీరు:
+
+* మీ AI వ్యవస్థ అంచనాలు ఎంత నమ్మదగినవో నిర్ణయించండి, అంచనాలకు అత్యంత ముఖ్యమైన లక్షణాలు ఏమిటో అర్థం చేసుకోవడం ద్వారా.
+* మీ మోడల్ను ముందుగా అర్థం చేసుకుని, అది ఆరోగ్యకరమైన లక్షణాలను ఉపయోగిస్తున్నదా లేదా తప్పు సంబంధాలను మాత్రమే ఉపయోగిస్తున్నదా అని గుర్తించి డీబగ్గింగ్ చేయండి.
+* మోడల్ సున్నిత లక్షణాలపై ఆధారపడి అంచనాలు చేస్తున్నదా లేదా వాటితో గాఢంగా సంబంధం ఉన్న లక్షణాలపై ఆధారపడి ఉందా అని అర్థం చేసుకుని, న్యాయ సమస్యల మూలాలను కనుగొనండి.
+* లోకల్ వివరణలను సృష్టించి, వాటి ఫలితాలను చూపించి మీ మోడల్ నిర్ణయాలలో వాడుకదారుల నమ్మకాన్ని పెంచండి.
+* AI వ్యవస్థ యొక్క నియంత్రణ ఆడిట్ పూర్తి చేసి, మోడల్స్ను ధృవీకరించి, మోడల్ నిర్ణయాల మానవులపై ప్రభావాన్ని పర్యవేక్షించండి.
+
+## ముగింపు
+
+అన్ని RAI డాష్బోర్డ్ భాగాలు సమాజానికి తక్కువ హానికరమైన మరియు ఎక్కువ నమ్మదగిన మెషీన్ లెర్నింగ్ మోడల్స్ నిర్మించడంలో సహాయపడే ప్రాక్టికల్ టూల్స్. ఇది మానవ హక్కులకు ముప్పు నివారణను మెరుగుపరుస్తుంది; కొన్ని గుంపులను జీవన అవకాశాల నుండి వివక్షించడం లేదా వేరుచేయడం; మరియు శారీరక లేదా మానసిక గాయాల ప్రమాదాన్ని తగ్గిస్తుంది. ఇది లోకల్ వివరణలను సృష్టించి, వాటి ఫలితాలను చూపించి మీ మోడల్ నిర్ణయాలలో నమ్మకాన్ని పెంచడంలో సహాయపడుతుంది. కొన్ని సంభావ్య హానులు ఇలా వర్గీకరించవచ్చు:
+
+- **విభజన**, ఉదాహరణకు ఒక లింగం లేదా జాతి మరొకదానిపై ప్రాధాన్యం పొందినప్పుడు.
+- **సేవా నాణ్యత**. మీరు ఒక నిర్దిష్ట పరిస్థితికి డేటాను శిక్షణ ఇచ్చినా, వాస్తవం చాలా క్లిష్టమైనప్పుడు, అది తక్కువ పనితీరు సేవకు దారితీస్తుంది.
+- **స్టీరియోటైపింగ్**. ఒక గుంపును ముందుగా కేటాయించిన లక్షణాలతో అనుసంధానం చేయడం.
+- **అవమానించడం**. ఏదైనా లేదా ఎవరికైనా అన్యాయంగా విమర్శించడం మరియు లేబుల్ చేయడం.
+- **అధిక లేదా తక్కువ ప్రాతినిధ్యం**. ఒక నిర్దిష్ట వృత్తిలో ఒక నిర్దిష్ట సమూహం కనిపించకపోవడం అనే ఆలోచన, మరియు దాన్ని ప్రోత్సహించే ఏ సేవ లేదా ఫంక్షన్ హానికరంగా ఉంటుంది.
+
+### Azure RAI డాష్బోర్డు
+
+[Azure 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) ను పరిశీలించి వివిధ భాగాలను ఎలా ఉపయోగించాలో తెలుసుకోండి.
+
+- Azure మెషీన్ లెర్నింగ్లో మరింత బాధ్యతాయుత AI సన్నివేశాలను డీబగ్గింగ్ చేయడానికి కొన్ని RAI డాష్బోర్డు [నమూనా నోట్బుక్స్](https://github.com/Azure/RAI-vNext-Preview/tree/main/examples/notebooks) ను చూడండి.
+
+---
+## 🚀 సవాలు
+
+గణాంక లేదా డేటా పక్షపాతాలను మొదట్లోనే ప్రవేశపెట్టకుండా ఉండేందుకు, మనం:
+
+- వ్యవస్థలపై పని చేసే వ్యక్తులలో వైవిధ్యమైన నేపథ్యాలు మరియు దృష్టికోణాలు ఉండాలి
+- మన సమాజ వైవిధ్యాన్ని ప్రతిబింబించే డేటాసెట్లలో పెట్టుబడి పెట్టాలి
+- పక్షపాతం సంభవించినప్పుడు దాన్ని గుర్తించి సరిచేయడానికి మెరుగైన పద్ధతులను అభివృద్ధి చేయాలి
+
+మోడల్ నిర్మాణం మరియు ఉపయోగంలో అన్యాయం స్పష్టంగా కనిపించే వాస్తవ జీవిత సన్నివేశాల గురించి ఆలోచించండి. మేము మరేమి పరిగణించాలి?
+
+## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ml/)
+## సమీక్ష & స్వీయ అధ్యయనం
+
+ఈ పాఠంలో, మీరు మెషీన్ లెర్నింగ్లో బాధ్యతాయుత AIని అనుసరించడానికి కొన్ని ప్రాక్టికల్ టూల్స్ నేర్చుకున్నారు.
+
+ఈ వర్క్షాప్ను చూడండి మరియు విషయాలను మరింత లోతుగా తెలుసుకోండి:
+
+- బాధ్యతాయుత AI డాష్బోర్డు: ప్రాక్టీస్లో RAIని ఆపరేషనలైజ్ చేయడానికి ఒకే చోటు - బేస్మిరా నుషి మరియు మెహ్ర్నూష్ సమేకి
+
+[](https://www.youtube.com/watch?v=f1oaDNl3djg "బాధ్యతాయుత AI డాష్బోర్డు: ప్రాక్టీస్లో RAIని ఆపరేషనలైజ్ చేయడానికి ఒకే చోటు")
+
+> 🎥 వీడియో కోసం పై చిత్రాన్ని క్లిక్ చేయండి: బాధ్యతాయుత AI డాష్బోర్డు: ప్రాక్టీస్లో RAIని ఆపరేషనలైజ్ చేయడానికి ఒకే చోటు - బేస్మిరా నుషి మరియు మెహ్ర్నూష్ సమేకి
+
+బాధ్యతాయుత AI మరియు మరింత నమ్మకమైన మోడల్స్ను ఎలా నిర్మించాలో తెలుసుకోవడానికి క్రింది వనరులను సూచించండి:
+
+- Microsoft యొక్క RAI డాష్బోర్డు టూల్స్ ML మోడల్స్ డీబగ్గింగ్ కోసం: [బాధ్యతాయుత AI టూల్స్ వనరులు](https://aka.ms/rai-dashboard)
+
+- బాధ్యతాయుత AI టూల్కిట్ను అన్వేషించండి: [Github](https://github.com/microsoft/responsible-ai-toolbox)
+
+- Microsoft యొక్క RAI వనరుల కేంద్రం: [బాధ్యతాయుత AI వనరులు – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
+
+- Microsoft యొక్క FATE పరిశోధనా గ్రూప్: [FATE: న్యాయం, బాధ్యత, పారదర్శకత, మరియు 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/te/9-Real-World/2-Debugging-ML-Models/assignment.md b/translations/te/9-Real-World/2-Debugging-ML-Models/assignment.md
new file mode 100644
index 000000000..8b9ddc388
--- /dev/null
+++ b/translations/te/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/te/9-Real-World/README.md b/translations/te/9-Real-World/README.md
new file mode 100644
index 000000000..98c5a4d91
--- /dev/null
+++ b/translations/te/9-Real-World/README.md
@@ -0,0 +1,34 @@
+
+# పోస్ట్స్క్రిప్ట్: క్లాసిక్ మెషీన్ లెర్నింగ్ యొక్క వాస్తవ ప్రపంచ అనువర్తనాలు
+
+ఈ పాఠ్యాంశంలో, మీరు క్లాసికల్ ML యొక్క కొన్ని వాస్తవ ప్రపంచ అనువర్తనాలను పరిచయం చేయబడతారు. మేము న్యూరల్ నెట్వర్క్స్, డీప్ లెర్నింగ్ మరియు AI ను సాధ్యమైనంత వరకు తప్పించి, ఈ వ్యూహాలను ఉపయోగించిన అనువర్తనాల గురించి వైట్పేపర్లు మరియు వ్యాసాలను వెతికాము. వ్యాపార వ్యవస్థలు, పర్యావరణ అనువర్తనాలు, ఆర్థిక, కళలు మరియు సంస్కృతి మరియు మరిన్ని విషయాలలో ML ఎలా ఉపయోగించబడుతున్నదో తెలుసుకోండి.
+
+
+
+> ఫోటో Alexis Fauvet ద్వారా Unsplash
+
+## పాఠం
+
+1. [ML కోసం వాస్తవ ప్రపంచ అనువర్తనాలు](1-Applications/README.md)
+2. [జవాబుదారీ AI డాష్బోర్డ్ భాగాలను ఉపయోగించి మెషీన్ లెర్నింగ్లో మోడల్ డీబగ్గింగ్](2-Debugging-ML-Models/README.md)
+
+## క్రెడిట్స్
+
+"వాస్తవ ప్రపంచ అనువర్తనాలు" అనేది [Jen Looper](https://twitter.com/jenlooper) మరియు [Ornella Altunyan](https://twitter.com/ornelladotcom) సహా ఒక బృందం ద్వారా రాయబడింది.
+
+"జవాబుదారీ AI డాష్బోర్డ్ భాగాలను ఉపయోగించి మెషీన్ లెర్నింగ్లో మోడల్ డీబగ్గింగ్" అనేది [Ruth Yakubu](https://twitter.com/ruthieyakubu) ద్వారా రాయబడింది.
+
+---
+
+
+**అస్పష్టత**:
+ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము.
+
\ No newline at end of file
diff --git a/translations/te/AGENTS.md b/translations/te/AGENTS.md
new file mode 100644
index 000000000..e3a55df7c
--- /dev/null
+++ b/translations/te/AGENTS.md
@@ -0,0 +1,347 @@
+
+# AGENTS.md
+
+## Project Overview
+
+ఇది **Machine Learning for Beginners**, పాఠ్యాంశాల 26తో కూడిన 12 వారాల సమగ్ర పాఠ్యక్రమం, ఇది Python (ప్రధానంగా Scikit-learn తో) మరియు R ఉపయోగించి క్లాసిక్ మెషీన్ లెర్నింగ్ కాన్సెప్ట్లను కవర్ చేస్తుంది. ఈ రిపోజిటరీ స్వీయ-గతిలో నేర్చుకునే వనరుగా రూపొందించబడింది, ఇందులో ప్రాక్టికల్ ప్రాజెక్టులు, క్విజ్లు మరియు అసైన్మెంట్లు ఉన్నాయి. ప్రతి పాఠం ప్రపంచవ్యాప్తంగా వివిధ సంస్కృతులు మరియు ప్రాంతాల నుండి వాస్తవ డేటా ద్వారా ML కాన్సెప్ట్లను అన్వేషిస్తుంది.
+
+ప్రధాన భాగాలు:
+- **విద్యా విషయాలు**: ML పరిచయం, రిగ్రెషన్, క్లాసిఫికేషన్, క్లస్టరింగ్, NLP, టైమ్ సిరీస్, మరియు రీఇన్ఫోర్స్మెంట్ లెర్నింగ్ను కవర్ చేసే 26 పాఠాలు
+- **క్విజ్ అప్లికేషన్**: Vue.js ఆధారిత క్విజ్ యాప్, పాఠం ముందు మరియు తర్వాత అంచనాలతో
+- **బహుభాషా మద్దతు**: GitHub Actions ద్వారా 40+ భాషలకు ఆటోమేటెడ్ అనువాదాలు
+- **రెండు భాషల మద్దతు**: పాఠాలు Python (Jupyter నోట్బుక్స్) మరియు R (R Markdown ఫైళ్లలో) అందుబాటులో ఉన్నాయి
+- **ప్రాజెక్ట్ ఆధారిత నేర్చుకోవడం**: ప్రతి అంశం ప్రాక్టికల్ ప్రాజెక్టులు మరియు అసైన్మెంట్లను కలిగి ఉంటుంది
+
+## 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` - Python Jupyter నోట్బుక్
+- `solution/` - సొల్యూషన్ కోడ్ (Python మరియు R వెర్షన్లు)
+- `assignment.md` - ప్రాక్టీస్ వ్యాయామాలు
+- `images/` - విజువల్ వనరులు
+
+## Setup Commands
+
+### For Python Lessons
+
+అధిక భాగం పాఠాలు Jupyter నోట్బుక్స్ ఉపయోగిస్తాయి. అవసరమైన డిపెండెన్సీలను ఇన్స్టాల్ చేయండి:
+
+```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. Jupyter నోట్బుక్ తెరవండి:
+ ```bash
+ jupyter notebook notebook.ipynb
+ ```
+3. పాఠ్యాంశం మరియు వ్యాయామాలపై పని చేయండి
+4. అవసరమైతే `solution/` ఫోల్డర్లో సొల్యూషన్లను తనిఖీ చేయండి
+
+### Python Development
+
+- పాఠాలు ప్రామాణిక Python డేటా సైన్స్ లైబ్రరీలను ఉపయోగిస్తాయి
+- ఇంటరాక్టివ్ నేర్చుకోవడానికి Jupyter నోట్బుక్స్
+- ప్రతి పాఠం `solution/` ఫోల్డర్లో సొల్యూషన్ కోడ్ అందుబాటులో ఉంటుంది
+
+### R Development
+
+- R పాఠాలు `.rmd` ఫార్మాట్ (R Markdown)లో ఉంటాయి
+- సొల్యూషన్లు `solution/R/` ఉపడైరెక్టరీలలో ఉంటాయి
+- R నోట్బుక్స్ నడపడానికి RStudio లేదా R కర్నెల్తో Jupyter ఉపయోగించండి
+
+### 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 స్టైల్ మార్గదర్శకాలను అనుసరించండి
+- స్పష్టమైన, వివరణాత్మక వేరియబుల్ పేర్లను ఉపయోగించండి
+- క్లిష్టమైన ఆపరేషన్లకు వ్యాఖ్యలు చేర్చండి
+- Jupyter నోట్బుక్స్లో కాన్సెప్ట్లను వివరించే మార్క్డౌన్ సెల్స్ ఉండాలి
+
+### JavaScript/Vue.js (Quiz App)
+- Vue.js స్టైల్ గైడ్ను అనుసరిస్తుంది
+- `quiz-app/package.json`లో ESLint కాన్ఫిగరేషన్
+- సమస్యలను తనిఖీ చేయడానికి మరియు ఆటో-ఫిక్స్ చేయడానికి `npm run lint` నడపండి
+
+### Documentation
+- మార్క్డౌన్ ఫైళ్లు స్పష్టంగా మరియు బాగా నిర్మించబడాలి
+- కోడ్ ఉదాహరణలను fenced కోడ్ బ్లాక్స్లో చేర్చండి
+- అంతర్గత సూచనలకు సంబంధిత లింకులను ఉపయోగించండి
+- ఉన్న ఫార్మాటింగ్ సంప్రదాయాలను అనుసరించండి
+
+## 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
+
+- **శీర్షిక ఫార్మాట్**: `[Section] మార్పుల సంక్షిప్త వివరణ`
+ - ఉదా: `[Regression] పాఠం 5లో టైపో సరిచేయండి`
+ - ఉదా: `[Quiz-App] డిపెండెన్సీలను నవీకరించండి`
+- **సమర్పించే ముందు**:
+ - అన్ని నోట్బుక్ సెల్స్ ఎర్రర్ల లేకుండా నడవాలి
+ - quiz-app మార్చినట్లయితే `npm run lint` నడపండి
+ - మార్క్డౌన్ ఫార్మాటింగ్ తనిఖీ చేయండి
+ - కొత్త కోడ్ ఉదాహరణలను పరీక్షించండి
+- **PRలో ఉండవలసినవి**:
+ - మార్పుల వివరణ
+ - మార్పుల కారణం
+ - UI మార్పులుంటే స్క్రీన్షాట్లు
+- **Code of Conduct**: [Microsoft Open Source Code of Conduct](CODE_OF_CONDUCT.md) అనుసరించండి
+- **CLA**: Contributor License Agreement సంతకం చేయాలి
+
+## Lesson Structure
+
+ప్రతి పాఠం ఒక సుస్పష్టమైన నమూనాను అనుసరిస్తుంది:
+
+1. **పాఠం ముందు క్విజ్** - ప్రాథమిక జ్ఞానాన్ని పరీక్షించండి
+2. **పాఠ్యాంశం** - వ్రాత సూచనలు మరియు వివరణలు
+3. **కోడ్ డెమోస్** - నోట్బుక్స్లో ప్రాక్టికల్ ఉదాహరణలు
+4. **జ్ఞాన తనిఖీలు** - అర్థం చేసుకున్నదాన్ని నిర్ధారించండి
+5. **చాలెంజ్** - స్వతంత్రంగా కాన్సెప్ట్లను వర్తించండి
+6. **అసైన్మెంట్** - విస్తృత ప్రాక్టీస్
+7. **పాఠం తర్వాత క్విజ్** - నేర్చుకున్న ఫలితాలను అంచనా వేయండి
+
+## Common Commands Reference
+
+```bash
+# Python/Jupyter
+jupyter notebook # Jupyter సర్వర్ ప్రారంభించండి
+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 వర్క్ఫ్లో
+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**: ML పాఠాల కోసం ప్రాథమిక భాష (Scikit-learn, Pandas, NumPy, Matplotlib)
+- **R**: tidyverse, tidymodels, caret ఉపయోగించి ప్రత్యామ్నాయ అమలు
+- **Jupyter**: Python పాఠాల కోసం ఇంటరాక్టివ్ నోట్బుక్స్
+- **R Markdown**: R పాఠాల డాక్యుమెంట్లు
+- **Vue.js 3**: క్విజ్ అప్లికేషన్ ఫ్రేమ్వర్క్
+- **Flask**: ML మోడల్ డిప్లాయ్మెంట్ కోసం వెబ్ అప్లికేషన్ ఫ్రేమ్వర్క్
+- **Docsify**: డాక్యుమెంటేషన్ సైట్ జనరేటర్
+- **GitHub Actions**: CI/CD మరియు ఆటోమేటెడ్ అనువాదాలు
+
+## 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 ప్యాకేజీ ఇన్స్టాల్ ఉందని నిర్ధారించండి
+- **కర్నెల్ సమస్యలు**: Jupyter కోసం IRkernel ఇన్స్టాల్ చేయవలసి ఉండవచ్చు
+
+## Project-Specific Notes
+
+- ఇది ప్రధానంగా **నెర్చుకునే పాఠ్యక్రమం**, ప్రొడక్షన్ కోడ్ కాదు
+- ప్రాధాన్యం **ML కాన్సెప్ట్లను అర్థం చేసుకోవడంలో** ఉంది, ప్రాక్టికల్ ద్వారా
+- కోడ్ ఉదాహరణలు **స్పష్టతపై ఎక్కువ దృష్టి** పెట్టాయి, ఆప్టిమైజేషన్ కంటే
+- ఎక్కువ భాగం పాఠాలు **స్వతంత్రంగా పూర్తి చేయగలవు**
+- **సొల్యూషన్లు అందుబాటులో ఉన్నాయి**, కానీ నేర్చుకునేవారు ముందుగా వ్యాయామాలు ప్రయత్నించాలి
+- రిపోజిటరీ Docsify ఉపయోగించి వెబ్ డాక్యుమెంటేషన్ అందిస్తుంది, బిల్డ్ స్టెప్ అవసరం లేదు
+- **స్కెచ్నోట్లు** కాన్సెప్ట్ల విజువల్ సారాంశాలను అందిస్తాయి
+- **బహుభాషా మద్దతు** కంటెంట్ను ప్రపంచవ్యాప్తంగా అందుబాటులో ఉంచుతుంది
+
+---
+
+
+**అస్పష్టత**:
+ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలో ఉన్నది అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము.
+
\ No newline at end of file
diff --git a/translations/te/CODE_OF_CONDUCT.md b/translations/te/CODE_OF_CONDUCT.md
new file mode 100644
index 000000000..eebb528a3
--- /dev/null
+++ b/translations/te/CODE_OF_CONDUCT.md
@@ -0,0 +1,25 @@
+
+# Microsoft ఓపెన్ సోర్స్ కోడ్ ఆఫ్ కండక్ట్
+
+ఈ ప్రాజెక్ట్ [Microsoft ఓపెన్ సోర్స్ కోడ్ ఆఫ్ కండక్ట్](https://opensource.microsoft.com/codeofconduct/)ని ఆమోదించింది.
+
+వనరులు:
+
+- [Microsoft ఓపెన్ సోర్స్ కోడ్ ఆఫ్ కండక్ట్](https://opensource.microsoft.com/codeofconduct/)
+- [Microsoft కోడ్ ఆఫ్ కండక్ట్ FAQ](https://opensource.microsoft.com/codeofconduct/faq/)
+- ప్రశ్నలు లేదా ఆందోళనల కోసం [opencode@microsoft.com](mailto:opencode@microsoft.com) ను సంప్రదించండి
+
+---
+
+
+**అస్పష్టత**:
+ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.
+
\ No newline at end of file
diff --git a/translations/te/CONTRIBUTING.md b/translations/te/CONTRIBUTING.md
new file mode 100644
index 000000000..6e140f539
--- /dev/null
+++ b/translations/te/CONTRIBUTING.md
@@ -0,0 +1,29 @@
+
+# Contributing
+
+ఈ ప్రాజెక్ట్ సహకారాలు మరియు సూచనలను స్వాగతిస్తుంది. ఎక్కువ భాగం సహకారాలకు మీరు
+కాంట్రిబ్యూటర్ లైసెన్స్ అగ్రిమెంట్ (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) ను సంప్రదించండి.
+
+---
+
+
+**అస్పష్టత**:
+ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము.
+
\ No newline at end of file
diff --git a/translations/te/PyTorch_Fundamentals.ipynb b/translations/te/PyTorch_Fundamentals.ipynb
new file mode 100644
index 000000000..116ebbedc
--- /dev/null
+++ b/translations/te/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:16:47+00:00",
+ "source_file": "PyTorch_Fundamentals.ipynb",
+ "language_code": "te"
+ }
+ },
+ "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ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.\n\n"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/translations/te/README.md b/translations/te/README.md
new file mode 100644
index 000000000..ad5b32693
--- /dev/null
+++ b/translations/te/README.md
@@ -0,0 +1,223 @@
+
+[](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE)
+[](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/)
+[](https://GitHub.com/microsoft/ML-For-Beginners/issues/)
+[](https://GitHub.com/microsoft/ML-For-Beginners/pulls/)
+[](http://makeapullrequest.com)
+
+[](https://GitHub.com/microsoft/ML-For-Beginners/watchers/)
+[](https://GitHub.com/microsoft/ML-For-Beginners/network/)
+[](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](../kn/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](./README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md)
+
+
+#### మా కమ్యూనిటీకి చేరండి
+
+[](https://discord.gg/nTYy5BXMWG)
+
+మేము డిస్కార్డ్ లో AI తో నేర్చుకునే సిరీస్ నిర్వహిస్తున్నాము, మరింత తెలుసుకోండి మరియు 18 - 30 సెప్టెంబర్, 2025 న [Learn with AI Series](https://aka.ms/learnwithai/discord) లో చేరండి. మీరు GitHub Copilot ను డేటా సైన్స్ కోసం ఉపయోగించే చిట్కాలు మరియు సలహాలు పొందుతారు.
+
+
+
+# ప్రారంభికుల కోసం మెషీన్ లెర్నింగ్ - ఒక పాఠ్యక్రమం
+
+> 🌍 ప్రపంచ సంస్కృతుల ద్వారా మెషీన్ లెర్నింగ్ ను అన్వేషిస్తూ ప్రపంచం చుట్టూ ప్రయాణించండి 🌍
+
+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` ఫోల్డర్లో అందుబాటులో ఉంటుంది.
+- పోస్ట్-లెక్చర్ క్విజ్ తీసుకోండి.
+- ఛాలెంజ్ పూర్తి చేయండి.
+- అసైన్మెంట్ పూర్తి చేయండి.
+- ఒక పాఠం సమూహం పూర్తి చేసిన తర్వాత, [Discussion Board](https://github.com/microsoft/ML-For-Beginners/discussions) ను సందర్శించి, సరైన PAT రుబ్రిక్ను పూరించి "learn out loud" చేయండి. 'PAT' అనేది ప్రోగ్రెస్ అసెస్మెంట్ టూల్, ఇది మీరు మీ నేర్చుకునే ప్రక్రియను మెరుగుపరచడానికి పూరించే రుబ్రిక్. మీరు ఇతర PAT లకు కూడా స్పందించవచ్చు, తద్వారా మనం కలిసి నేర్చుకోవచ్చు.
+
+> మరింత అధ్యయనానికి, ఈ [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) మాడ్యూల్స్ మరియు లెర్నింగ్ పాథ్స్ అనుసరించమని మేము సిఫార్సు చేస్తున్నాము.
+
+**ఉపాధ్యాయులు**, ఈ పాఠ్యక్రమాన్ని ఎలా ఉపయోగించాలో మేము కొన్ని [సూచనలు](for-teachers.md) చేర్చాము.
+
+---
+
+## వీడియో వాక్త్రూ
+
+కొన్ని పాఠాలు చిన్న వీడియోలుగా అందుబాటులో ఉన్నాయి. మీరు ఈ వీడియోలను పాఠాలలో inline గా లేదా [Microsoft Developer YouTube ఛానెల్ లో ML for Beginners ప్లేలిస్ట్](https://aka.ms/ml-beginners-videos) లో చూడవచ్చు, క్రింది చిత్రంపై క్లిక్ చేయండి.
+
+[](https://aka.ms/ml-beginners-videos)
+
+---
+
+## టీమ్ను కలవండి
+
+[](https://youtu.be/Tj1XWrDSYJU)
+
+**Gif ద్వారా** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal)
+
+> 🎥 ప్రాజెక్ట్ మరియు దాన్ని సృష్టించిన వ్యక్తుల గురించి వీడియో కోసం పై చిత్రంపై క్లిక్ చేయండి!
+
+---
+
+## పాఠ్య విధానం
+
+ఈ పాఠ్యక్రమాన్ని రూపొందించేటప్పుడు మేము రెండు పాఠ్య సిద్ధాంతాలను ఎంచుకున్నాము: ఇది చేతితో చేయగలిగే **ప్రాజెక్ట్-ఆధారిత**గా ఉండాలి మరియు ఇందులో **తరచూ క్విజ్లు** ఉండాలి. అదనంగా, ఈ పాఠ్యక్రమానికి ఒక సాధారణ **థీమ్** ఉంది, ఇది దానిని సమగ్రత ఇస్తుంది.
+
+కంటెంట్ ప్రాజెక్టులకు అనుగుణంగా ఉండటం ద్వారా, విద్యార్థులకు ఇది మరింత ఆసక్తికరంగా మారుతుంది మరియు భావనల నిలుపుదల పెరుగుతుంది. తరగతి ముందు తక్కువ-ప్రమాద క్విజ్ విద్యార్థి ఒక విషయం నేర్చుకోవాలనే ఉద్దేశ్యాన్ని ఏర్పరుస్తుంది, తరగతి తర్వాత రెండవ క్విజ్ మరింత నిలుపుదలని నిర్ధారిస్తుంది. ఈ పాఠ్యక్రమం సౌకర్యవంతంగా మరియు సరదాగా ఉండేలా రూపొందించబడింది మరియు మొత్తం లేదా భాగంగా తీసుకోవచ్చు. ప్రాజెక్టులు చిన్నదిగా ప్రారంభమై 12 వారాల చక్రం చివరికి క్రమంగా క్లిష్టత పెరుగుతాయి. ఈ పాఠ్యక్రమంలో ML యొక్క వాస్తవ ప్రపంచ అనువర్తనాలపై ఒక పోస్ట్స్క్రిప్ట్ కూడా ఉంది, ఇది అదనపు క్రెడిట్ లేదా చర్చకు ఆధారంగా ఉపయోగించవచ్చు.
+
+> మా [Code of Conduct](CODE_OF_CONDUCT.md), [Contributing](CONTRIBUTING.md), [Translation](TRANSLATIONS.md), మరియు [Troubleshooting](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 folder](../../quiz-app) లో ఉన్నాయి, మొత్తం 52 క్విజ్లు, ప్రతి ఒక్కటి మూడు ప్రశ్నలతో. అవి పాఠాలలో లింక్ చేయబడ్డాయి కానీ క్విజ్ యాప్ స్థానికంగా నడపవచ్చు; స్థానికంగా హోస్ట్ చేయడానికి లేదా Azure కు డిప్లాయ్ చేయడానికి `quiz-app` ఫోల్డర్ లో సూచనలు అనుసరించండి.
+
+| పాఠం సంఖ్య | విషయం | పాఠం సమూహం | నేర్చుకునే లక్ష్యాలు | లింక్ చేసిన పాఠం | రచయిత |
+| :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: |
+| 01 | మెషీన్ లెర్నింగ్ పరిచయం | [Introduction](1-Introduction/README.md) | మెషీన్ లెర్నింగ్ వెనుక ఉన్న ప్రాథమిక సూత్రాలను నేర్చుకోండి | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad |
+| 02 | మెషీన్ లెర్నింగ్ చరిత్ర | [Introduction](1-Introduction/README.md) | ఈ రంగం వెనుక ఉన్న చరిత్రను తెలుసుకోండి | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen and Amy |
+| 03 | న్యాయసమ్మతత మరియు మెషీన్ లెర్నింగ్ | [Introduction](1-Introduction/README.md) | మెషీన్ లెర్నింగ్ మోడల్స్ నిర్మించేటప్పుడు మరియు వర్తింపజేసేటప్పుడు విద్యార్థులు పరిగణించవలసిన ముఖ్యమైన తాత్విక సమస్యలు ఏమిటి? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi |
+| 04 | మెషీన్ లెర్నింగ్ సాంకేతికతలు | [Introduction](1-Introduction/README.md) | మెషీన్ లెర్నింగ్ పరిశోధకులు మెషీన్ లెర్నింగ్ మోడల్స్ నిర్మించడానికి ఏ సాంకేతికతలను ఉపయోగిస్తారు? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen |
+| 05 | రిగ్రెషన్ పరిచయం | [Regression](2-Regression/README.md) | రిగ్రెషన్ మోడల్స్ కోసం Python మరియు Scikit-learn తో ప్రారంభించండి | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau |
+| 06 | ఉత్తర అమెరికన్ పంప్కిన్ ధరలు 🎃 | [Regression](2-Regression/README.md) | మెషీన్ లెర్నింగ్ కోసం డేటాను విజువలైజ్ చేసి శుభ్రపరచండి | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau |
+| 07 | ఉత్తర అమెరికన్ పంప్కిన్ ధరలు 🎃 | [Regression](2-Regression/README.md) | లీనియర్ మరియు పాలినోమియల్ రిగ్రెషన్ మోడల్స్ నిర్మించండి | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen and Dmitry • Eric Wanjau |
+| 08 | ఉత్తర అమెరికన్ పంప్కిన్ ధరలు 🎃 | [Regression](2-Regression/README.md) | లాజిస్టిక్ రిగ్రెషన్ మోడల్ నిర్మించండి | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau |
+| 09 | ఒక వెబ్ యాప్ 🔌 | [Web App](3-Web-App/README.md) | మీ శిక్షణ పొందిన మోడల్ ఉపయోగించడానికి ఒక వెబ్ యాప్ నిర్మించండి | [Python](3-Web-App/1-Web-App/README.md) | Jen |
+| 10 | వర్గీకరణ పరిచయం | [Classification](4-Classification/README.md) | మీ డేటాను శుభ్రపరచండి, సిద్ధం చేయండి, మరియు విజువలైజ్ చేయండి; వర్గీకరణకు పరిచయం | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen and Cassie • Eric Wanjau |
+| 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) | Jen and Cassie • Eric Wanjau |
+| 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) | Jen and Cassie • Eric Wanjau |
+| 13 | రుచికరమైన ఆసియా మరియు భారతీయ వంటకాలు 🍜 | [Classification](4-Classification/README.md) | మీ మోడల్ ఉపయోగించి ఒక సిఫార్సు వెబ్ యాప్ నిర్మించండి | [Python](4-Classification/4-Applied/README.md) | Jen |
+| 14 | క్లస్టరింగ్ పరిచయం | [Clustering](5-Clustering/README.md) | మీ డేటాను శుభ్రపరచండి, సిద్ధం చేయండి, మరియు విజువలైజ్ చేయండి; క్లస్టరింగ్ పరిచయం | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau |
+| 15 | నైజీరియన్ సంగీత రుచులను అన్వేషణ 🎧 | [Clustering](5-Clustering/README.md) | K-Means క్లస్టరింగ్ పద్ధతిని అన్వేషించండి | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau |
+| 16 | సహజ భాషా ప్రాసెసింగ్ పరిచయం ☕️ | [Natural language processing](6-NLP/README.md) | ఒక సులభమైన బాట్ నిర్మించడం ద్వారా NLP యొక్క ప్రాథమికాలు నేర్చుకోండి | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
+| 17 | సాధారణ NLP పనులు ☕️ | [Natural language processing](6-NLP/README.md) | భాషా నిర్మాణాలతో వ్యవహరించేటప్పుడు అవసరమైన సాధారణ పనులను అర్థం చేసుకోవడం ద్వారా మీ NLP జ్ఞానాన్ని లోతుగా చేయండి | [Python](6-NLP/2-Tasks/README.md) | Stephen |
+| 18 | అనువాదం మరియు భావ విశ్లేషణ ♥️ | [Natural language processing](6-NLP/README.md) | జేన్ ఆస్టెన్ తో అనువాదం మరియు భావ విశ్లేషణ | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen |
+| 19 | యూరోప్ యొక్క రొమాంటిక్ హోటల్స్ ♥️ | [Natural language processing](6-NLP/README.md) | హోటల్ సమీక్షలతో భావ విశ్లేషణ 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen |
+| 20 | యూరోప్ యొక్క రొమాంటిక్ హోటల్స్ ♥️ | [Natural language processing](6-NLP/README.md) | హోటల్ సమీక్షలతో భావ విశ్లేషణ 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen |
+| 21 | టైమ్ సిరీస్ ఫోర్కాస్టింగ్ పరిచయం | [Time series](7-TimeSeries/README.md) | టైమ్ సిరీస్ ఫోర్కాస్టింగ్ పరిచయం | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca |
+| 22 | ⚡️ ప్రపంచ విద్యుత్ వినియోగం ⚡️ - ARIMA తో టైమ్ సిరీస్ ఫోర్కాస్టింగ్ | [Time series](7-TimeSeries/README.md) | ARIMA తో టైమ్ సిరీస్ ఫోర్కాస్టింగ్ | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca |
+| 23 | ⚡️ ప్రపంచ విద్యుత్ వినియోగం ⚡️ - SVR తో టైమ్ సిరీస్ ఫోర్కాస్టింగ్ | [Time series](7-TimeSeries/README.md) | సపోర్ట్ వెక్టర్ రిగ్రెషర్ తో టైమ్ సిరీస్ ఫోర్కాస్టింగ్ | [Python](7-TimeSeries/3-SVR/README.md) | Anirban |
+| 24 | రీఇన్ఫోర్స్మెంట్ లెర్నింగ్ పరిచయం | [Reinforcement learning](8-Reinforcement/README.md) | Q-లెర్నింగ్ తో రీఇన్ఫోర్స్మెంట్ లెర్నింగ్ పరిచయం | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry |
+| 25 | పీటర్ను నక్క నుండి తప్పించండి! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | రీఇన్ఫోర్స్మెంట్ లెర్నింగ్ జిమ్ | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry |
+| Postscript | వాస్తవ ప్రపంచ ML పరిస్థితులు మరియు అనువర్తనాలు | [ML in the Wild](9-Real-World/README.md) | క్లాసికల్ ML యొక్క ఆసక్తికరమైన మరియు వెల్లడించే వాస్తవ ప్రపంచ అనువర్తనాలు | [Lesson](9-Real-World/1-Applications/README.md) | Team |
+| Postscript | RAI డాష్బోర్డ్ ఉపయోగించి ML లో మోడల్ డీబగ్గింగ్ | [ML in the Wild](9-Real-World/README.md) | రిస్పాన్సిబుల్ AI డాష్బోర్డ్ భాగాలతో మెషీన్ లెర్నింగ్లో మోడల్ డీబగ్గింగ్ | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
+
+> [ఈ కోర్సు కోసం మా 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) కనుగొనండి.
+
+
+## 🎒 ఇతర కోర్సులు
+
+మా బృందం ఇతర కోర్సులను ఉత్పత్తి చేస్తుంది! చూడండి:
+
+
+### LangChain
+[](https://aka.ms/langchain4j-for-beginners)
+[](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin)
+
+---
+
+### Azure / Edge / MCP / Agents
+[](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
+[](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
+[](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
+[](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
+
+---
+
+### Generative AI Series
+[](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
+[-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)
+[-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst)
+[-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst)
+
+---
+
+### కోర్ లెర్నింగ్
+[](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
+[](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
+[](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
+[](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung)
+[](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
+[](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
+[](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst)
+
+---
+
+### కోపైలట్ సిరీస్
+[](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
+[](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)
+[](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst)
+
+
+## సహాయం పొందడం
+
+మీరు అడ్డుకుపోతే లేదా AI యాప్స్ నిర్మించడంపై ఏవైనా ప్రశ్నలు ఉంటే. MCP గురించి చర్చల్లో సహచర అభ్యాసకులు మరియు అనుభవజ్ఞులైన డెవలపర్లతో చేరండి. ఇది ప్రశ్నలు స్వాగతించబడే మరియు జ్ఞానం స్వేచ్ఛగా పంచుకునే మద్దతు సమాజం.
+
+[](https://discord.gg/nTYy5BXMWG)
+
+మీకు ఉత్పత్తి అభిప్రాయం లేదా నిర్మాణ సమయంలో లోపాలు ఉంటే సందర్శించండి:
+
+[](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/te/SECURITY.md b/translations/te/SECURITY.md
new file mode 100644
index 000000000..6afe4ae75
--- /dev/null
+++ b/translations/te/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/) ఉన్నాయి.
+
+మీరు Microsoft-స్వంతమైన ఏదైనా రిపాజిటరీలో [Microsoft భద్రతా లోపం నిర్వచనం](https://docs.microsoft.com/previous-versions/tn-archive/cc751383(v=technet.10)?WT.mc_id=academic-77952-leestott) కు సరిపోయే భద్రతా లోపాన్ని కనుగొన్నారని భావిస్తే, దయచేసి క్రింద వివరించిన విధంగా మాకు నివేదించండి.
+
+## భద్రతా సమస్యలను నివేదించడం
+
+**దయచేసి భద్రతా లోపాలను పబ్లిక్ GitHub ఇష్యూల ద్వారా నివేదించవద్దు.**
+
+దీనికి బదులుగా, దయచేసి Microsoft Security Response Center (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) పేజీని మా సక్రియ కార్యక్రమాల గురించి మరింత వివరాలకు సందర్శించండి.
+
+## ప్రాధాన్యత ఉన్న భాషలు
+
+మేము అన్ని కమ్యూనికేషన్లు ఆంగ్లంలో ఉండాలని ఇష్టపడతాము.
+
+## విధానం
+
+Microsoft [సమన్వయ భద్రతా లోపం వెల్లడింపు](https://www.microsoft.com/en-us/msrc/cvd) సూత్రాన్ని అనుసరిస్తుంది.
+
+---
+
+
+**అస్పష్టత**:
+ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.
+
\ No newline at end of file
diff --git a/translations/te/SUPPORT.md b/translations/te/SUPPORT.md
new file mode 100644
index 000000000..28b0455b5
--- /dev/null
+++ b/translations/te/SUPPORT.md
@@ -0,0 +1,31 @@
+
+# మద్దతు
+## సమస్యలను ఎలా నమోదు చేయాలి మరియు సహాయం పొందాలి
+
+సమస్యను నమోదు చేయడానికి ముందు, దయచేసి ఇన్స్టాలేషన్, సెటప్ మరియు పాఠాలు నడపడంలో సాధారణ సమస్యలకు పరిష్కారాల కోసం మా [Troubleshooting Guide](TROUBLESHOOTING.md) ను తనిఖీ చేయండి.
+
+ఈ ప్రాజెక్ట్ బగ్స్ మరియు ఫీచర్ అభ్యర్థనలను ట్రాక్ చేయడానికి GitHub Issues ను ఉపయోగిస్తుంది. దయచేసి కొత్త సమస్యలను నమోదు చేయడానికి ముందు ఇప్పటికే ఉన్న సమస్యలను శోధించండి, డూప్లికేట్లను నివారించడానికి. కొత్త సమస్యల కోసం, మీ బగ్ లేదా ఫీచర్ అభ్యర్థనను కొత్త Issue గా నమోదు చేయండి.
+
+ఈ ప్రాజెక్ట్ ఉపయోగించడంపై సహాయం మరియు ప్రశ్నల కోసం, మీరు కూడా:
+- [Troubleshooting Guide](TROUBLESHOOTING.md) ను తనిఖీ చేయండి
+- మా [Discord Discussions #ml-for-beginners channel](https://aka.ms/foundry/discord) ను సందర్శించండి
+- సమస్యను నమోదు చేయండి
+
+## Microsoft మద్దతు విధానం
+
+ఈ రిపోజిటరీకి మద్దతు పై పేర్కొన్న వనరులకు మాత్రమే పరిమితం.
+
+---
+
+
+**అస్పష్టత**:
+ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము.
+
\ No newline at end of file
diff --git a/translations/te/TROUBLESHOOTING.md b/translations/te/TROUBLESHOOTING.md
new file mode 100644
index 000000000..20116f2bf
--- /dev/null
+++ b/translations/te/TROUBLESHOOTING.md
@@ -0,0 +1,612 @@
+
+# సమస్య పరిష్కరణ గైడ్
+
+ఈ గైడ్ మిషీన్ లెర్నింగ్ ఫర్ బిగినర్స్ పాఠ్యాంశంతో పని చేస్తున్నప్పుడు సాధారణ సమస్యలను పరిష్కరించడంలో మీకు సహాయం చేస్తుంది. మీరు ఇక్కడ పరిష్కారం కనుగొనకపోతే, దయచేసి మా [Discord చర్చలు](https://aka.ms/foundry/discord)ను చూడండి లేదా [ఇష్యూ ఓపెన్ చేయండి](https://github.com/microsoft/ML-For-Beginners/issues).
+
+## విషయ సూచిక
+
+- [ఇన్స్టాలేషన్ సమస్యలు](../..)
+- [జుపైటర్ నోట్బుక్ సమస్యలు](../..)
+- [పైథాన్ ప్యాకేజ్ సమస్యలు](../..)
+- [ఆర్ ఎన్విరాన్మెంట్ సమస్యలు](../..)
+- [క్విజ్ అప్లికేషన్ సమస్యలు](../..)
+- [డేటా మరియు ఫైల్ పాత్ సమస్యలు](../..)
+- [సాధారణ లోప సందేశాలు](../..)
+- [పనితీరు సమస్యలు](../..)
+- [ఎన్విరాన్మెంట్ మరియు కాన్ఫిగరేషన్](../..)
+
+---
+
+## ఇన్స్టాలేషన్ సమస్యలు
+
+### పైథాన్ ఇన్స్టాలేషన్
+
+**సమస్య**: `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` ఉపయోగించవలసి ఉండవచ్చు
+
+**సమస్య**: బహుళ Python వెర్షన్లు కలగలిపి సమస్యలు సృష్టించడం
+
+**పరిష్కారం**:
+```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 ను కాపీ చేసి బ్రౌజర్లో మాన్యువల్గా పేస్ట్ చేయండి
+# ఈ URL కోసం చూడండి: http://localhost:8888/?token=...
+```
+
+### ఆర్ ఇన్స్టాలేషన్
+
+**సమస్య**: ఆర్ ప్యాకేజీలు ఇన్స్టాల్ కావడం లేదు
+
+**పరిష్కారం**:
+```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. సమస్య ఉన్న కోడ్ గుర్తించడానికి సెల్స్ను ఒక్కొక్కటిగా నడపండి
+
+**సమస్య**: తప్పు Python కర్నెల్ ఎంచుకున్నది
+
+**పరిష్కారం**:
+1. ప్రస్తుత కర్నెల్ను తనిఖీ చేయండి: `Kernel → Change Kernel`
+2. సరైన Python వెర్షన్ ఎంచుకోండి
+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
+# బైనరీ వెర్షన్ ఇన్స్టాల్ చేయండి (విండోస్/మ్యాక్ఓఎస్)
+install.packages("package-name", type = "binary")
+
+# ప్యాకేజీలు అవసరం అయితే R ను తాజా వెర్షన్కు అప్డేట్ చేయండి
+# R వెర్షన్ను తనిఖీ చేయండి
+R.version.string
+
+# సిస్టమ్ ఆధారాలు ఇన్స్టాల్ చేయండి (లినక్స్)
+# ఉబుంటు/డెబియన్ కోసం, టెర్మినల్లో:
+# 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"))
+```
+
+### ఆర్మార్క్డౌన్ సమస్యలు
+
+**సమస్య**: ఆర్మార్క్డౌన్ రేండర్ కావడం లేదు
+
+**పరిష్కారం**:
+```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
+# Node.js వెర్షన్ను తనిఖీ చేయండి (14+ ఉండాలి)
+node --version
+
+# అవసరమైతే Node.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
+
+# pyplot ను దిగుమతి చేసుకోండి
+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
+
+# మాక్OS/లినక్స్
+python3 -m venv venv
+source venv/bin/activate
+
+# యాక్టివేట్ అయిందో లేదో తనిఖీ చేయండి (ప్రాంప్ట్లో వీవిఎన్ పేరు చూపించాలి)
+which python # వీవిఎన్ పైథాన్ను సూచించాలి
+```
+
+**సమస్య**: ప్యాకేజీలు ఇన్స్టాల్ అయినా నోట్బుక్లో కనబడడం లేదు
+
+**పరిష్కారం**:
+```bash
+# నోట్బుక్ సరైన కర్నెల్ ఉపయోగిస్తున్నదని నిర్ధారించుకోండి
+# మీ వర్చువల్ ఎన్విరాన్మెంట్లో ipykernel ను ఇన్స్టాల్ చేయండి
+pip install ipykernel
+python -m ipykernel install --user --name=ml-env --display-name="Python (ml-env)"
+
+# జూపిటర్లో: కర్నెల్ → కర్నెల్ మార్చండి → Python (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 కోడ్లో Python ఎక్స్టెన్షన్ ఇన్స్టాల్ చేయండి
+2. VS కోడ్లో Jupyter ఎక్స్టెన్షన్ ఇన్స్టాల్ చేయండి
+3. సరైన Python ఇంటర్ప్రెటర్ ఎంచుకోండి: `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. **కొత్త ఇష్యూ ఓపెన్ చేయండి**: ఇందులో చేర్చండి:
+ - మీ ఆపరేటింగ్ సిస్టమ్ మరియు వెర్షన్
+ - Python/R వెర్షన్
+ - లోప సందేశం (పూర్తి ట్రేస్బ్యాక్)
+ - సమస్యను పునరుత్పత్తి చేసే దశలు
+ - మీరు ఇప్పటికే ప్రయత్నించినవి
+
+మేము మీకు సహాయం చేయడానికి ఇక్కడ ఉన్నాము! 🚀
+
+---
+
+
+**అస్పష్టత**:
+ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.
+
\ No newline at end of file
diff --git a/translations/te/docs/_sidebar.md b/translations/te/docs/_sidebar.md
new file mode 100644
index 000000000..635ac4d05
--- /dev/null
+++ b/translations/te/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/te/for-teachers.md b/translations/te/for-teachers.md
new file mode 100644
index 000000000..194f3ae96
--- /dev/null
+++ b/translations/te/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) ఇవ్వండి.
+
+---
+
+
+**అస్పష్టత**:
+ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వలన కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదారుల బాధ్యత మేము తీసుకోము.
+
\ No newline at end of file
diff --git a/translations/te/quiz-app/README.md b/translations/te/quiz-app/README.md
new file mode 100644
index 000000000..985676e4e
--- /dev/null
+++ b/translations/te/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
+
+## Azureకి డిప్లాయ్ చేయడం
+
+మీరు ప్రారంభించడానికి సహాయపడే దశల వారీ గైడ్ ఇక్కడ ఉంది:
+
+1. GitHub రిపాజిటరీని ఫోర్క్ చేయండి
+మీ స్టాటిక్ వెబ్ యాప్ కోడ్ మీ GitHub రిపాజిటరీలో ఉందని నిర్ధారించుకోండి. ఈ రిపాజిటరీని ఫోర్క్ చేయండి.
+
+2. Azure స్టాటిక్ వెబ్ యాప్ సృష్టించండి
+- [Azure ఖాతా](http://azure.microsoft.com) సృష్టించండి
+- [Azure పోర్టల్](https://portal.azure.com) కు వెళ్లండి
+- "Create a resource" పై క్లిక్ చేసి "Static Web App" కోసం శోధించండి.
+- "Create" పై క్లిక్ చేయండి.
+
+3. స్టాటిక్ వెబ్ యాప్ను కాన్ఫిగర్ చేయండి
+- ప్రాథమికాలు: సబ్స్క్రిప్షన్: మీ Azure సబ్స్క్రిప్షన్ను ఎంచుకోండి.
+- రిసోర్స్ గ్రూప్: కొత్త రిసోర్స్ గ్రూప్ సృష్టించండి లేదా ఉన్నదాన్ని ఉపయోగించండి.
+- పేరు: మీ స్టాటిక్ వెబ్ యాప్కు పేరు ఇవ్వండి.
+- ప్రాంతం: మీ వినియోగదారులకు సమీప ప్రాంతాన్ని ఎంచుకోండి.
+
+- #### డిప్లాయ్మెంట్ వివరాలు:
+- మూలం: "GitHub" ఎంచుకోండి.
+- GitHub ఖాతా: Azureకి మీ GitHub ఖాతాకు యాక్సెస్ అనుమతించండి.
+- సంస్థ: మీ GitHub సంస్థను ఎంచుకోండి.
+- రిపాజిటరీ: మీ స్టాటిక్ వెబ్ యాప్ ఉన్న రిపాజిటరీని ఎంచుకోండి.
+- బ్రాంచ్: మీరు డిప్లాయ్ చేయదలచుకున్న బ్రాంచ్ను ఎంచుకోండి.
+
+- #### బిల్డ్ వివరాలు:
+- బిల్డ్ ప్రీసెట్లు: మీ యాప్ నిర్మించబడిన ఫ్రేమ్వర్క్ను ఎంచుకోండి (ఉదా: React, Angular, Vue, మొదలైనవి).
+- యాప్ లొకేషన్: మీ యాప్ కోడ్ ఉన్న ఫోల్డర్ను పేర్కొనండి (ఉదా: / రూట్లో ఉంటే).
+- API లొకేషన్: మీకు API ఉంటే, దాని స్థానం (ఐచ్ఛికం) పేర్కొనండి.
+- అవుట్పుట్ లొకేషన్: బిల్డ్ అవుట్పుట్ ఉత్పత్తి అయ్యే ఫోల్డర్ను పేర్కొనండి (ఉదా: build లేదా dist).
+
+4. సమీక్షించి సృష్టించండి
+మీ సెట్టింగ్స్ను సమీక్షించి "Create" పై క్లిక్ చేయండి. Azure అవసరమైన వనరులను సెట్ చేసి మీ రిపాజిటరీలో GitHub Actions వర్క్ఫ్లోని సృష్టిస్తుంది.
+
+5. GitHub Actions వర్క్ఫ్లో
+Azure మీ రిపాజిటరీలో (.github/workflows/azure-static-web-apps-.yml) GitHub Actions వర్క్ఫ్లో ఫైల్ను ఆటోమేటిక్గా సృష్టిస్తుంది. ఈ వర్క్ఫ్లో బిల్డ్ మరియు డిప్లాయ్మెంట్ ప్రక్రియను నిర్వహిస్తుంది.
+
+6. డిప్లాయ్మెంట్ను మానిటర్ చేయండి
+మీ GitHub రిపాజిటరీలో "Actions" ట్యాబ్కు వెళ్లండి.
+ఒక వర్క్ఫ్లో నడుస్తున్నట్లు మీరు చూడగలరు. ఈ వర్క్ఫ్లో మీ స్టాటిక్ వెబ్ యాప్ను Azureకి బిల్డ్ చేసి డిప్లాయ్ చేస్తుంది.
+వర్క్ఫ్లో పూర్తయిన తర్వాత, మీ యాప్ అందించిన Azure 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 డాక్యుమెంటేషన్](https://learn.microsoft.com/azure/static-web-apps/getting-started)
+- [GitHub Actions డాక్యుమెంటేషన్](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/te/sketchnotes/LICENSE.md b/translations/te/sketchnotes/LICENSE.md
new file mode 100644
index 000000000..e32298b41
--- /dev/null
+++ b/translations/te/sketchnotes/LICENSE.md
@@ -0,0 +1,335 @@
+
+అట్రిబ్యూషన్-షేర్ అలైక్ 4.0 ఇంటర్నేషనల్
+
+=======================================================================
+
+క్రియేటివ్ కామన్స్ కార్పొరేషన్ ("క్రియేటివ్ కామన్స్") ఒక చట్ట సంస్థ కాదు మరియు
+చట్ట సేవలు లేదా చట్ట సలహాలు అందించదు. క్రియేటివ్ కామన్స్ పబ్లిక్ లైసెన్సుల పంపిణీ
+ఒక న్యాయవాది-క్లయింట్ లేదా ఇతర సంబంధాన్ని సృష్టించదు. క్రియేటివ్ కామన్స్ తన లైసెన్సులు మరియు సంబంధిత
+సమాచారాన్ని "అనుసంధానంగా" అందిస్తుంది. క్రియేటివ్ కామన్స్ తన లైసెన్సుల గురించి, వాటి
+నియమాలు మరియు షరతుల క్రింద లైసెన్స్ పొందిన ఏదైనా పదార్థం లేదా సంబంధిత సమాచారంపై
+ఏ వారంటీలు ఇవ్వదు. క్రియేటివ్ కామన్స్ వాటి ఉపయోగం వల్ల కలిగే నష్టాలకు
+పూర్తి పరిమితి వరకు బాధ్యతను తిరస్కరిస్తుంది.
+
+క్రియేటివ్ కామన్స్ పబ్లిక్ లైసెన్సులు ఉపయోగించడం
+
+క్రియేటివ్ కామన్స్ పబ్లిక్ లైసెన్సులు సృష్టికర్తలు మరియు ఇతర హక్కుదారులు
+మూల రచనల మరియు కాపీరైట్ మరియు క్రింది పబ్లిక్ లైసెన్స్లో పేర్కొన్న కొన్ని ఇతర హక్కులకు
+అధీనమైన ఇతర పదార్థాలను పంచుకునేందుకు ఉపయోగించగల ఒక ప్రమాణిత నిబంధనలు మరియు
+షరతుల సెట్ను అందిస్తాయి. క్రింది పరిగణనలు సమాచార ప్రయోజనాలకే, అవి
+సంపూర్ణంగా లేవు మరియు మా లైసెన్సుల భాగం కావు.
+
+ లైసెన్సుదారులకు పరిగణనలు: మా పబ్లిక్ లైసెన్సులు
+ కాపీరైట్ మరియు కొన్ని ఇతర హక్కుల ద్వారా పరిమితం చేయబడిన
+ పదార్థాన్ని ప్రజలకు ఉపయోగించడానికి అనుమతి ఇవ్వడానికి
+ అధికారం ఉన్నవారికి ఉపయోగించడానికి ఉద్దేశించబడ్డాయి.
+ మా లైసెన్సులు తిరస్కరించలేనివి. లైసెన్సుదారులు
+ తమకు కావలసిన లైసెన్సును వర్తింపజేసే ముందు దాని నిబంధనలు
+ మరియు షరతులను చదవాలి మరియు అర్థం చేసుకోవాలి.
+ లైసెన్సుదారులు ప్రజలు పదార్థాన్ని ఆశించినట్లుగా పునఃఉపయోగించగలిగేలా
+ అవసరమైన అన్ని హక్కులను పొందాలి. లైసెన్సు వర్తించని
+ పదార్థాన్ని స్పష్టంగా గుర్తించాలి. ఇందులో ఇతర CC-లైసెన్స్ పొందిన
+ పదార్థం లేదా కాపీరైట్కు మినహాయింపు లేదా పరిమితి క్రింద ఉపయోగించిన
+ పదార్థం కూడా ఉంటుంది. మరిన్ని పరిగణనలు:
+ wiki.creativecommons.org/Considerations_for_licensors
+
+ ప్రజలకు పరిగణనలు: మా పబ్లిక్ లైసెన్సులలో ఒకదాన్ని ఉపయోగించడం ద్వారా,
+ లైసెన్సుదారు ప్రజలకు నిర్దిష్ట నిబంధనలు మరియు షరతుల క్రింద
+ లైసెన్స్ పొందిన పదార్థాన్ని ఉపయోగించడానికి అనుమతి ఇస్తారు.
+ లైసెన్సుదారు అనుమతి అవసరం లేకపోతే—for example, ఏదైనా వర్తించే
+ మినహాయింపు లేదా పరిమితి కారణంగా—ఆ ఉపయోగం లైసెన్సు ద్వారా నియంత్రించబడదు.
+ మా లైసెన్సులు కాపీరైట్ మరియు కొన్ని ఇతర హక్కుల క్రింద మాత్రమే అనుమతులు ఇస్తాయి,
+ లైసెన్సుదారు అనుమతించగలిగే హక్కులు. పదార్థం ఉపయోగం ఇంకా ఇతర కారణాల వల్ల
+ పరిమితం కావచ్చు, ఉదాహరణకు ఇతరులకు ఆ పదార్థంపై కాపీరైట్ లేదా ఇతర హక్కులు
+ ఉన్నందున. లైసెన్సుదారు ప్రత్యేక అభ్యర్థనలు చేయవచ్చు, ఉదాహరణకు అన్ని మార్పులను
+ గుర్తించమని లేదా వివరించమని అడగవచ్చు. మా లైసెన్సులు అవసరం చేయకపోయినా,
+ మీరు ఆ అభ్యర్థనలను తగినంతగా గౌరవించమని ప్రోత్సహించబడతారు. మరిన్ని పరిగణనలు:
+ wiki.creativecommons.org/Considerations_for_licensees
+
+=======================================================================
+
+క్రియేటివ్ కామన్స్ అట్రిబ్యూషన్-షేర్ అలైక్ 4.0 ఇంటర్నేషనల్ పబ్లిక్ లైసెన్స్
+
+లైసెన్స్ పొందిన హక్కులను (క్రింద నిర్వచించబడిన) ఉపయోగించడం ద్వారా, మీరు ఈ క్రియేటివ్ కామన్స్
+అట్రిబ్యూషన్-షేర్ అలైక్ 4.0 ఇంటర్నేషనల్ పబ్లిక్ లైసెన్స్ ("పబ్లిక్ లైసెన్స్") యొక్క
+నిబంధనలు మరియు షరతులకు బద్ధబాధ్యతగా అంగీకరిస్తారు. ఈ పబ్లిక్ లైసెన్స్ ఒక ఒప్పందంగా
+వివచించబడితే, మీరు ఈ నిబంధనలు అంగీకరించడం కోసం లైసెన్స్ పొందిన హక్కులను పొందుతారు,
+మరియు లైసెన్సుదారు ఈ నిబంధనల క్రింద లైసెన్స్ పొందిన పదార్థాన్ని అందించడం ద్వారా లాభాలు పొందుతారు.
+
+
+విభాగం 1 -- నిర్వచనాలు.
+
+ a. అనుకూలీకరించిన పదార్థం అంటే కాపీరైట్ మరియు సమాన హక్కులకు లోబడి,
+ లైసెన్స్ పొందిన పదార్థం నుండి ఉత్పన్నమై లేదా ఆధారంగా ఉండి,
+ లైసెన్స్ పొందిన పదార్థం అనువదించబడిన, మార్చబడిన,
+ అమర్చబడిన, మార్చబడిన లేదా ఇతర విధంగా కాపీరైట్ మరియు సమాన హక్కుల
+ క్రింద అనుమతి అవసరమయ్యే విధంగా మార్పులు చేయబడిన పదార్థం.
+ ఈ పబ్లిక్ లైసెన్స్ ప్రయోజనాల కోసం, లైసెన్స్ పొందిన పదార్థం
+ సంగీత కృతి, ప్రదర్శన లేదా శబ్ద రికార్డింగ్ అయితే,
+ అనుకూలీకరించిన పదార్థం ఎప్పుడూ లైసెన్స్ పొందిన పదార్థం
+ ఒక కదిలే చిత్రంతో సమయ సంబంధంలో సింక్ చేయబడినప్పుడు ఉత్పత్తి అవుతుంది.
+
+ b. అనుకూలీకర్త యొక్క లైసెన్స్ అంటే మీరు ఈ పబ్లిక్ లైసెన్స్ నిబంధనలు మరియు షరతుల ప్రకారం
+ అనుకూలీకరించిన పదార్థంలో మీ కాపీరైట్ మరియు సమాన హక్కులకు వర్తింపజేసే లైసెన్స్.
+
+ c. BY-SA అనుకూల లైసెన్స్ అంటే creativecommons.org/compatiblelicenses వద్ద జాబితా చేయబడిన,
+ క్రియేటివ్ కామన్స్ ఈ పబ్లిక్ లైసెన్స్కు సమానమైనదిగా ఆమోదించిన లైసెన్స్.
+
+ d. కాపీరైట్ మరియు సమాన హక్కులు అంటే కాపీరైట్ మరియు/లేదా కాపీరైట్కు సమీపంగా ఉన్న హక్కులు,
+ పరిమితి లేకుండా, ప్రదర్శన, ప్రసారం, శబ్ద రికార్డింగ్, మరియు Sui Generis డేటాబేస్ హక్కులు,
+ హక్కులను ఎలా లేబుల్ చేయబడిందో లేదా వర్గీకరించబడిందో సంబంధం లేకుండా.
+ ఈ పబ్లిక్ లైసెన్స్ ప్రయోజనాల కోసం, విభాగం 2(b)(1)-(2)లో పేర్కొన్న హక్కులు
+ కాపీరైట్ మరియు సమాన హక్కులు కాదు.
+
+ e. సమర్థవంతమైన సాంకేతిక చర్యలు అంటే సరైన అధికారం లేకుండా
+ తిరస్కరించలేని చర్యలు, 1996 డిసెంబర్ 20న ఆమోదించబడిన WIPO కాపీరైట్
+ ఒప్పందం ఆర్టికల్ 11 క్రింద లేదా సమాన అంతర్జాతీయ ఒప్పందాల క్రింద
+ నిబంధనలు నెరవేర్చే చట్టాల ప్రకారం.
+
+ f. మినహాయింపులు మరియు పరిమితులు అంటే న్యాయసమ్మత ఉపయోగం, న్యాయసమ్మత వ్యవహారం,
+ మరియు/లేదా కాపీరైట్ మరియు సమాన హక్కులకు సంబంధించిన మీ లైసెన్స్ పొందిన పదార్థం
+ ఉపయోగానికి వర్తించే ఏ ఇతర మినహాయింపు లేదా పరిమితి.
+
+ g. లైసెన్స్ అంశాలు అంటే క్రియేటివ్ కామన్స్ పబ్లిక్ లైసెన్స్ పేరులో పేర్కొన్న లైసెన్స్ లక్షణాలు.
+ ఈ పబ్లిక్ లైసెన్స్ యొక్క లైసెన్స్ అంశాలు అట్రిబ్యూషన్ మరియు షేర్ అలైక్.
+
+ h. లైసెన్స్ పొందిన పదార్థం అంటే కళాత్మక లేదా సాహిత్య కృతి, డేటాబేస్,
+ లేదా లైసెన్సుదారు ఈ పబ్లిక్ లైసెన్స్ వర్తింపజేసిన ఇతర పదార్థం.
+
+ i. లైసెన్స్ పొందిన హక్కులు అంటే ఈ పబ్లిక్ లైసెన్స్ నిబంధనలు మరియు షరతుల క్రింద
+ మీకు ఇచ్చిన హక్కులు, ఇవి మీ లైసెన్స్ పొందిన పదార్థం ఉపయోగానికి వర్తించే
+ అన్ని కాపీరైట్ మరియు సమాన హక్కులకు పరిమితం మరియు లైసెన్సుదారుకు లైసెన్స్ ఇవ్వడానికి
+ అధికారం ఉన్నవి.
+
+ j. లైసెన్సుదారు అంటే ఈ పబ్లిక్ లైసెన్స్ క్రింద హక్కులు ఇస్తున్న వ్యక్తి(లు) లేదా సంస్థ(లు).
+
+ k. పంచుకోవడం అంటే లైసెన్స్ పొందిన హక్కుల క్రింద అనుమతి అవసరమయ్యే ఏ విధానమో
+ లేదా ప్రక్రియతో ప్రజలకు పదార్థాన్ని అందించడం, ఉదాహరణకు పునఃఉత్పత్తి,
+ ప్రజా ప్రదర్శన, ప్రజా ప్రదర్శన, పంపిణీ, వ్యాప్తి, కమ్యూనికేషన్, లేదా దిగుమతి,
+ మరియు ప్రజలకు పదార్థాన్ని అందించడం, అందులో ప్రజలు తమకు ఇష్టమైన స్థలం మరియు
+ సమయానికి పదార్థాన్ని యాక్సెస్ చేసుకునే విధానాలు కూడా ఉన్నాయి.
+
+ l. Sui Generis డేటాబేస్ హక్కులు అంటే 1996 మార్చి 11న యూరోపియన్ పార్లమెంట్ మరియు
+ కౌన్సిల్ యొక్క డైరెక్టివ్ 96/9/EC ప్రకారం డేటాబేసుల చట్టపరమైన రక్షణపై
+ హక్కులు, మార్పులు లేదా వారసత్వం పొందినవి, అలాగే ప్రపంచంలో ఎక్కడైనా
+ సమానమైన హక్కులు.
+
+ m. మీరు అంటే ఈ పబ్లిక్ లైసెన్స్ క్రింద లైసెన్స్ పొందిన హక్కులను ఉపయోగిస్తున్న వ్యక్తి లేదా సంస్థ.
+ మీకు అనుగుణంగా అర్థం ఉంటుంది.
+
+
+విభాగం 2 -- పరిధి.
+
+ a. లైసెన్స్ మంజూరు.
+
+ 1. ఈ పబ్లిక్ లైసెన్స్ నిబంధనలు మరియు షరతులకు అనుగుణంగా,
+ లైసెన్సుదారు మీకు ప్రపంచవ్యాప్తంగా, రాయితీ రహిత,
+ ఉపలైసెన్స్ ఇవ్వలేని, ప్రత్యేక హక్కులు లేని, తిరస్కరించలేని
+ లైసెన్స్ ఇస్తారు, లైసెన్స్ పొందిన పదార్థంలో లైసెన్స్ పొందిన హక్కులను
+ ఉపయోగించడానికి:
+
+ a. లైసెన్స్ పొందిన పదార్థాన్ని, మొత్తం లేదా భాగంగా,
+ పునఃఉత్పత్తి చేయడం మరియు పంచుకోవడం; మరియు
+
+ b. అనుకూలీకరించిన పదార్థాన్ని ఉత్పత్తి చేయడం, పునఃఉత్పత్తి చేయడం,
+ మరియు పంచుకోవడం.
+
+ 2. మినహాయింపులు మరియు పరిమితులు. మీ ఉపయోగానికి మినహాయింపులు మరియు పరిమితులు వర్తిస్తే,
+ ఈ పబ్లిక్ లైసెన్స్ వర్తించదు, మరియు మీరు దాని నిబంధనలు మరియు షరతులను
+ పాటించాల్సిన అవసరం లేదు.
+
+ 3. కాలం. ఈ పబ్లిక్ లైసెన్స్ యొక్క కాలం విభాగం 6(a)లో పేర్కొనబడింది.
+
+ 4. మీడియా మరియు ఫార్మాట్లు; సాంకేతిక మార్పులు అనుమతించబడతాయి. లైసెన్సుదారు
+ మీరు లైసెన్స్ పొందిన హక్కులను అన్ని మీడియా మరియు ఫార్మాట్లలో ఉపయోగించడానికి
+ అనుమతిస్తారు, ఇప్పటి వరకు తెలిసిన లేదా భవిష్యత్తులో సృష్టించబడే,
+ మరియు అలా చేయడానికి అవసరమైన సాంకేతిక మార్పులు చేయడానికి అనుమతిస్తారు.
+ లైసెన్సుదారు మీరు లైసెన్స్ పొందిన హక్కులను ఉపయోగించడానికి అవసరమైన
+ సాంకేతిక మార్పులు చేయడాన్ని నిషేధించడానికి లేదా హక్కు లేదా అధికారం
+ వాదించకూడదని ఒప్పుకుంటారు. ఈ పబ్లిక్ లైసెన్స్ ప్రయోజనాల కోసం,
+ ఈ విభాగం 2(a)(4)లో అనుమతించిన మార్పులు చేయడం అనుకూలీకరించిన పదార్థం
+ ఉత్పత్తి చేయదు.
+
+ 5. దిగువన ఉన్న గ్రహీతలు.
+
+ a. లైసెన్సుదారుని నుండి ఆఫర్ -- లైసెన్స్ పొందిన పదార్థం. లైసెన్స్ పొందిన
+ పదార్థం ప్రతి గ్రహీతకు ఆటోమేటిక్గా లైసెన్సుదారుని నుండి ఈ పబ్లిక్
+ లైసెన్స్ నిబంధనలు మరియు షరతుల క్రింద లైసెన్స్ పొందిన హక్కులను
+ ఉపయోగించడానికి ఆఫర్ అందుతుంది.
+
+ b. లైసెన్సుదారుని నుండి అదనపు ఆఫర్ -- అనుకూలీకరించిన పదార్థం.
+ మీరు అందించిన అనుకూలీకరించిన పదార్థం ప్రతి గ్రహీతకు
+ మీరు వర్తింపజేసే అనుకూలీకర్త యొక్క లైసెన్స్ నిబంధనల క్రింద
+ లైసెన్స్ పొందిన హక్కులను ఉపయోగించడానికి లైసెన్సుదారుని నుండి
+ ఆటోమేటిక్ ఆఫర్ అందుతుంది.
+
+ c. దిగువన ఉన్న పరిమితులు లేవు. మీరు లైసెన్స్ పొందిన పదార్థంపై
+ ఎలాంటి అదనపు లేదా వేరే నిబంధనలు లేదా షరతులు ఆఫర్ చేయకూడదు
+ లేదా అమలు చేయకూడదు, లేదా ఎలాంటి సమర్థవంతమైన సాంకేతిక చర్యలు
+ వర్తింపజేయకూడదు, ఇవి లైసెన్స్ పొందిన పదార్థం గ్రహీతల హక్కుల
+ వినియోగాన్ని పరిమితం చేస్తే.
+
+ 6. ఎటువంటి మద్దతు లేదు. ఈ పబ్లిక్ లైసెన్స్లో ఏదీ మీరు లైసెన్స్ పొందిన
+ పదార్థం ఉపయోగం లైసెన్సుదారు లేదా ఇతరులు అట్రిబ్యూషన్ పొందడానికి
+ నియమించబడిన వారు ద్వారా మద్దతు పొందినట్లు లేదా అధికారిక స్థితి పొందినట్లు
+ సూచించడానికి అనుమతి ఇవ్వదు లేదా అర్థం చేసుకోబడదు.
+
+ b. ఇతర హక్కులు.
+
+ 1. నైతిక హక్కులు, ఉదాహరణకు సమగ్రత హక్కు, ఈ పబ్లిక్ లైసెన్స్ క్రింద లైసెన్స్
+ చేయబడవు, అలాగే ప్రజాప్రతిష్ట, గోప్యత మరియు/లేదా ఇతర సమాన వ్యక్తిత్వ హక్కులు;
+ అయితే, సాధ్యమైనంతవరకు, లైసెన్సుదారు ఈ హక్కులను వదిలివేస్తారు లేదా
+ మీరు లైసెన్స్ పొందిన హక్కులను ఉపయోగించడానికి అవసరమైన పరిమితి వరకు
+ ఈ హక్కులను వాదించకూడదని ఒప్పుకుంటారు, కానీ ఇతర విధంగా కాదు.
+
+ 2. పేటెంట్ మరియు ట్రేడ్మార్క్ హక్కులు ఈ పబ్లిక్ లైసెన్స్ క్రింద లైసెన్స్ చేయబడవు.
+
+ 3. సాధ్యమైనంతవరకు, లైసెన్సుదారు మీరు లైసెన్స్ పొందిన హక్కులను ఉపయోగించడానికి
+ రాయితీలు సేకరించే హక్కును వదిలివేస్తారు, ప్రత్యక్షంగా లేదా ఏదైనా
+ స్వచ్ఛంద లేదా వదిలివేయదగిన చట్టబద్ధ లేదా బలవంతపు లైసెన్సింగ్ పథకం
+ ద్వారా సేకరించే హక్కు. ఇతర అన్ని సందర్భాలలో లైసెన్సుదారు
+ అటువంటి రాయితీలను సేకరించే హక్కును స్పష్టంగా రిజర్వ్ చేస్తారు.
+
+
+విభాగం 3 -- లైసెన్స్ షరతులు.
+
+మీరు లైసెన్స్ పొందిన హక్కులను ఉపయోగించడం కింద పేర్కొన్న షరతులకు స్పష్టంగా
+బద్ధబాధ్యతగా ఉంటుంది.
+
+ a. అట్రిబ్యూషన్.
+
+ 1. మీరు లైసెన్స్ పొందిన పదార్థాన్ని పంచుకుంటే (మార్పు రూపంలో కూడా),
+ మీరు:
+
+ a. లైసెన్సుదారు లైసెన్స్ పొందిన పదార్థంతో అందించిన
+ క్రింది విషయాలను నిలుపుకోవాలి:
+
+ i. లైసెన్స్ పొందిన పదార్థం సృష్టికర్త(లు) మరియు అట్రిబ్యూషన్ పొందడానికి
+ నియమించబడిన ఇతరుల గుర్తింపు, లైసెన్సుదారు కోరిన ఏదైనా
+ తగిన విధానంలో (పseudonym ద్వారా కూడా);
+
+ ii. కాపీరైట్ నోటీసు;
+
+ iii. ఈ పబ్లిక్ లైసెన్స్కు సూచించే నోటీసు;
+
+ iv. వారంటీల నిరాకరణకు సూచించే నోటీసు;
+
+ v. లైసెన్స్ పొందిన పదార్థానికి URI లేదా హైపర్లింక్, సాధ్యమైనంతవరకు;
+
+ b. మీరు లైసెన్స్ పొందిన పదార్థాన్ని మార్చినట్లయితే సూచించాలి మరియు
+ గత మార్పుల సూచనను నిలుపుకోవాలి; మరియు
+
+ c. లైసెన్స్ పొందిన పదార్థం ఈ పబ్లిక్ లైసెన్స్ క్రింద లైసెన్స్ పొందినదని
+ సూచించాలి, మరియు ఈ పబ్లిక్ లైసెన్స్ యొక్క పాఠ్యం లేదా URI లేదా
+ హైపర్లింక్ను చేర్చాలి.
+
+ 2. మీరు సెక్షన్ 3(a)(1)లోని షరతులను మీరు లైసెన్స్ పొందిన పదార్థాన్ని
+ పంచే మీడియం, మార్గం మరియు సందర్భం ఆధారంగా ఏదైనా తగిన విధానంలో
+ తీర్చవచ్చు. ఉదాహరణకు, అవసరమైన సమాచారాన్ని కలిగిన వనరుకు URI లేదా
+ హైపర్లింక్ ఇవ్వడం తగినది కావచ్చు.
+
+ 3. లైసెన్సుదారు కోరినట్లయితే, మీరు సెక్షన్ 3(a)(1)(A)లో అవసరమైన
+ సమాచారాన్ని సాధ్యమైనంతవరకు తొలగించాలి.
+
+ b. షేర్ అలైక్.
+
+ సెక్షన్ 3(a)లోని షరతులకు అదనంగా, మీరు ఉత్పత్తి చేసిన అనుకూలీకరించిన
+ పదార్థాన్ని పంచుకుంటే, క్రింది షరతులు కూడా వర్తిస్తాయి.
+
+ 1. మీరు వర్తింపజేసే అనుకూలీకర్త యొక్క లైసెన్స్ క్రియేటివ్ కామన్స్
+ లైసెన్స్ అయి ఉండాలి, అదే లైసెన్స్ అంశాలతో, ఈ సంచిక లేదా తరువాతి,
+ లేదా BY-SA అనుకూల లైసెన్స్.
+
+ 2. మీరు వర్తింపజేసే అనుకూలీకర్త యొక్క లైసెన్స్ యొక్క పాఠ్యం లేదా URI
+ లేదా హైపర్లింక్ను చేర్చాలి. మీరు అనుకూలీకరించిన పదార్థాన్ని పంచే
+ మీడియం, మార్గం మరియు సందర్భం ఆధారంగా ఈ షరతును తీర్చవచ్చు.
+
+ 3. మీరు అనుకూలీకర్త యొక్క లైసెన్స్ క్రింద ఇచ్చిన హక్కుల వినియోగాన్ని
+ పరిమితం చేసే ఏ అదనపు లేదా వేరే నిబంధనలు లేదా షరతులు ఆఫర్ చేయకూడదు
+ లేదా అమలు చేయకూడదు, లేదా ఎలాంటి సమర్థవంతమైన సాంకేతిక చర్యలు
+ అనుకూలీకరించిన పదార్థంపై వర్తింపజేయకూడదు.
+
+
+విభాగం 4 -- Sui Generis డేటాబేస్ హక్కులు.
+
+లైసెన్స్ పొందిన హక్కులు Sui Generis డేటాబేస్ హక్కులను కలిగి ఉంటే,
+మీ లైసెన్స్ పొందిన పదార్థం ఉపయోగానికి వర్తించే:
+
+ 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 వద్ద ప్రచురించిన క్రియేటివ్ కామన్స్ విధానాల ప్రకారం అనుమతించబడిన విధంగా కాకుండా, క్రియేటివ్ కామన్స్ "Creative Commons" ట్రేడ్మార్క్ లేదా ఇతర ట్రేడ్మార్క్ లేదా లోగోలను ముందస్తు రాత అనుమతి లేకుండా ఉపయోగించడానికి అనుమతించదు, పరిమితి లేకుండా, దాని పబ్లిక్ లైసెన్స్లలో అనధికార మార్పులు లేదా ఇతర ఏర్పాట్లు, అర్థాలు లేదా ఒప్పందాల కోసం. సందేహ నివారణ కోసం, ఈ పేరాగ్రాఫ్ పబ్లిక్ లైసెన్స్ల భాగం కాదు.
+
+క్రియేటివ్ కామన్స్ ను creativecommons.org వద్ద సంప్రదించవచ్చు.
+
+---
+
+
+**అస్పష్టత**:
+ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము.
+
\ No newline at end of file
diff --git a/translations/te/sketchnotes/README.md b/translations/te/sketchnotes/README.md
new file mode 100644
index 000000000..7101dc724
--- /dev/null
+++ b/translations/te/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))
+
+[](https://creativecommons.org/licenses/by-sa/4.0/)
+
+---
+
+
+**అస్పష్టత**:
+ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.
+
\ No newline at end of file